Commit 4d4bb296 authored by 黄伟铭's avatar 黄伟铭

新增添加路口及干线area_id的方法

parent 6849ad46
......@@ -2,6 +2,8 @@ package net.wanji.opt.dao.mapper.judgeanalysis;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay;
import java.util.List;
import net.wanji.opt.entity.judgeanalysis.CrossPoint;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
......@@ -41,6 +43,36 @@ public interface AnalysisProblemCrossDayMapper extends BaseMapper<AnalysisProble
* @param analysisProblemCrossDay
*/
Integer addAnalysisProblemCrossDay(AnalysisProblemCrossDay analysisProblemCrossDay);
/**
* 根据主键id更新表t_base_cross_info信息
* @param areaId,id
*/
Integer updateCrossAreaIdByid(@Param("areaId") String areaId ,@Param("id") String id);
/**
* 根据主键id更新表t_base_cross_info信息
* @param areaId,id
*/
Integer updateGreenAreaIdByid(@Param("areaId") String areaId ,@Param("id") String id);
/**
* 查询表t_base_cross_info信息
* @param
*/
List<CrossPoint> findCrossPoint();
/**
* 查询表t_base_cross_info信息
* @param
*/
List<CrossPoint> findGreenPoint();
/**
* 查询表t_base_area_info信息
* @param
*/
List<CrossPoint> findAreaPoint();
}
package net.wanji.opt.entity.judgeanalysis;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author huangwm
* @date 2025/03/18
*/
@Data
@ApiModel(value = "CrossPoint", description = "")
public class CrossPoint {
@ApiModelProperty(value = "编号")
private String id;
@ApiModelProperty(value = "坐标")
private String point;
}
......@@ -50,4 +50,10 @@ public interface AnalysisProblemCrossDayService extends IService<AnalysisProblem
* @return
*/
void removes(List<Long> ids);
/**
* 更新路口区域id
* @return
*/
void updateCrossAreaIdByCondition();
}
......@@ -50,4 +50,10 @@ public interface AnalysisProblemGreenDayService extends IService<AnalysisProblem
* @return
*/
void removes(List<Long> ids);
/**
* 更新干线区域id
* @return
*/
void updateGreenAreaIdByCondition();
}
......@@ -2,6 +2,7 @@ package net.wanji.opt.servicev2.judgeanalysis.impl;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay;
import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper;
import net.wanji.opt.entity.judgeanalysis.CrossPoint;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -11,6 +12,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.List;
import org.locationtech.jts.geom.Geometry;
/**
* <p>
......@@ -80,4 +82,41 @@ import java.util.List;
removeByIds(ids);
}
}
/**
* 路口区域id数据添加
* @return
*/
@Override
public void updateCrossAreaIdByCondition() {
//判断路口的areaId是否存在
List<CrossPoint> crossPoints = analysisProblemCrossDayMapper.findCrossPoint();
if(crossPoints.size()>0)
{
//获取区域id的坐标范围
List<CrossPoint> areaPont = analysisProblemCrossDayMapper.findAreaPoint();
//循环判断是否存在区域内
for(CrossPoint crossPoint:crossPoints){
int i = 0;
for(CrossPoint areaPoint:areaPont){
String a = crossPoint.getPoint().replaceAll( " ",",");
Geometry geo = net.wanji.common.gts.GeomsConvertUtil.createPoint(a);
Geometry geo1 = net.wanji.common.gts.GeomsConvertUtil.genGeometry(areaPoint.getPoint());
if(geo.within(geo1)){
//如果匹配则更新id
analysisProblemCrossDayMapper.updateCrossAreaIdByid(areaPoint.getId(),crossPoint.getId());
i = 1;
}
}
if(i==0){
//未匹配则把区域id设置为0
analysisProblemCrossDayMapper.updateCrossAreaIdByid("0",crossPoint.getId());
}
}
}
}
}
package net.wanji.opt.servicev2.judgeanalysis.impl;
import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemGreenDay;
import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemGreenDayMapper;
import net.wanji.opt.entity.judgeanalysis.CrossPoint;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemGreenDayService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.locationtech.jts.geom.Geometry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
......@@ -26,6 +29,9 @@ import java.util.List;
@Resource
private AnalysisProblemGreenDayMapper analysisProblemGreenDayMapper;
@Resource
private AnalysisProblemCrossDayMapper analysisProblemCrossDayMapper;
/**
* 绿波问题分析详情
......@@ -80,4 +86,36 @@ import java.util.List;
removeByIds(ids);
}
}
/**
* 路口区域id数据添加
* @return
*/
@Override
public void updateGreenAreaIdByCondition() {
//判断路口的areaId是否存在
List<CrossPoint> greenPoints = analysisProblemCrossDayMapper.findGreenPoint();
if(greenPoints.size()>0)
{
//获取区域id的坐标范围
List<CrossPoint> areaPont = analysisProblemCrossDayMapper.findAreaPoint();
//循环判断是否存在区域内
for(CrossPoint greenPoint:greenPoints){
int i = 0;
for(CrossPoint areaPoint:areaPont){
Geometry geo = net.wanji.common.gts.GeomsConvertUtil.genGeometry(greenPoint.getPoint());
Geometry geo1 = net.wanji.common.gts.GeomsConvertUtil.genGeometry(areaPoint.getPoint());
if(geo.within(geo1)){
//如果匹配则更新id
analysisProblemCrossDayMapper.updateGreenAreaIdByid(areaPoint.getId(),greenPoint.getId());
i = 1;
}
}
if(i==0){
//未匹配则把区域id设置为0
analysisProblemCrossDayMapper.updateGreenAreaIdByid("0",greenPoint.getId());
}
}
}
}
}
......@@ -94,6 +94,12 @@
<result column="insert_time" property="insertTime"/>
</resultMap>
<!-- 通用查询映射结果 -->
<resultMap id="CrossPointMap" type="net.wanji.opt.entity.judgeanalysis.CrossPoint">
<id column="id" property="id"/>
<result column="point" property="point"/>
</resultMap>
<!-- 查询表t_analysis_problem_cross_day所有信息 -->
<select id="findAllAnalysisProblemCrossDay" resultMap="AnalysisProblemCrossDayMap">
SELECT
......@@ -163,4 +169,36 @@
,#{insertTime}
)
</insert>
<!-- 查找未更新区域id的路口数据 -->
<select id="findCrossPoint" resultMap="CrossPointMap">
select a.id,SUBSTR(a.location , 7 , LENGTH(a.location) - 7) as point from t_base_cross_info a where a.area_id is null
</select>
<!-- 查找未更新区域id的干线数据 -->
<select id="findGreenPoint" resultMap="CrossPointMap">
select a.id,a.wkt as point from t_greenwave_info a where a.area_id is null
</select>
<!-- 获取区域坐标的范围 -->
<select id="findAreaPoint" resultMap="CrossPointMap">
select a.id , a.polylines as point from t_base_area_info a where a.type in (2,3) order by a.id desc
</select>
<!-- 根据主键id更新表t_base_cross_info的area_id信息 -->
<update id="updateCrossAreaIdByid" parameterType="String">
UPDATE t_base_cross_info
set area_id = #{areaId}
WHERE
id=#{id}
</update>
<!-- 根据主键id更新表t_base_cross_info的area_id信息 -->
<update id="updateGreenAreaIdByid" parameterType="String">
UPDATE t_greenwave_info
set area_id = #{areaId}
WHERE
id=#{id}
</update>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment