Commit e4f75e3f authored by duanruiming's avatar duanruiming

[add] 态势检测-辖区分组、区域列表

parent c9a388ff
......@@ -3,6 +3,7 @@ package net.wanji.web.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.web.po.AreaTreePO;
import net.wanji.web.service.SituationDetectionService;
import net.wanji.web.vo.situationDetection.*;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -168,4 +169,20 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(list);
}
@ApiOperation(value = "辖区分组", notes = "辖区分组")
@GetMapping("/jurisdictionTree")
public JsonViewObject jurisdictionTree() {
List<AreaTreePO> areaTreePOS = situationDetectionService.jurisdictionTree();
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(areaTreePOS);
}
@ApiOperation(value = "查询区域列表", notes = "辖区分组")
@GetMapping("/selectAreaList")
public JsonViewObject selectAreaList(Integer areaId) {
List<AreaListVO> areaListVOS = situationDetectionService.selectAreaList(areaId);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(areaListVOS);
}
}
......@@ -56,7 +56,8 @@ public class TBaseCrossInfoController {
@ApiOperation(value = "路网管理-路口管理-区域名称下拉框", notes = "路网管理-路口管理-区域名称下拉框")
@GetMapping("/areaTree")
public JsonViewObject areaTree() {
return crossInfoService.areaTree();
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(crossInfoService.areaTree());
}
}
package net.wanji.web.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author duanruiming
* @date 2023/02/06 14:56
*/
@Data
@ApiModel(value = "区域路口实体", description = "区域路口实体")
public class TBaseAreaCross {
@ApiModelProperty(name = "id", notes = "")
private Integer id;
@ApiModelProperty(name = "区域编号", notes = "")
private Integer areaId;
@ApiModelProperty(name = "路口编号", notes = "")
private String crossId;
@ApiModelProperty(name = "创建时间", notes = "")
private Date gmtCreate;
@ApiModelProperty(name = "修改时间", notes = "")
private Date gmtModified;
}
package net.wanji.web.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.web.entity.TBaseAreaCross;
import org.springframework.stereotype.Repository;
/**
* @author duanruiming
* @date 2023/02/06 15:01
*/
@Repository
public interface TBaseAreaCrossMapper extends BaseMapper<TBaseAreaCross> {
}
......@@ -33,4 +33,7 @@ public interface TBaseAreaInfoMapper extends BaseMapper<TBaseAreaInfo> {
int updateByPrimaryKey(TBaseAreaInfo record);
List<AreaTreePO> selectAreaTree();
List<AreaTreePO> selectJurisdictionArea();
}
package net.wanji.web.po;
import lombok.Getter;
import lombok.Setter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
......@@ -13,22 +14,20 @@ import java.util.List;
* @author wj
* @since 2022-11-28
*/
@Getter
@Setter
@Data
@ApiModel(value = "树形区域目录实体", description = "树形区域目录实体")
public class AreaTreePO {
/**
* 行政区划代码
*/
@ApiModelProperty(value = "行政区划代码")
private Integer areaCode;
/**
* 行政区划名称
*/
@ApiModelProperty(value = "行政区划名称")
private String areaName;
@ApiModelProperty(value = "父行政区划代码")
private Integer parentCode;
@ApiModelProperty(value = "子行政区划列表")
private List<AreaTreePO> children;
}
package net.wanji.web.service;
import net.wanji.web.entity.TBaseCrossInfo;
import net.wanji.web.po.AreaTreePO;
import net.wanji.web.vo.situationDetection.*;
import java.text.ParseException;
......@@ -34,4 +35,8 @@ public interface SituationDetectionService {
List<CrossDeviceStatusInfoOutVO> crossDeviceStatusInfo();
TBaseCrossInfo selectCrossInfoById(String signalId);
List<AreaTreePO> jurisdictionTree();
List<AreaListVO> selectAreaList(Integer areaId);
}
......@@ -157,7 +157,7 @@ public class TBaseCrossInfoService {
* 区域名称下拉框
*
*/
public JsonViewObject areaTree() {
public List<AreaTreePO> areaTree() {
List<AreaTreePO> infos = areaInfoMapper.selectAreaTree();
// 构建树
Map<Integer, List<AreaTreePO>> parentCodeMap = infos.stream().collect(Collectors.groupingBy(AreaTreePO::getParentCode));
......@@ -170,6 +170,6 @@ public class TBaseCrossInfoService {
}
}
infos = infos.stream().filter(po -> po.getParentCode() != null).collect(Collectors.toList());
return JsonViewObject.newInstance().success(infos);
return infos;
}
}
......@@ -3,15 +3,19 @@ package net.wanji.web.service.impl;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import net.wanji.web.common.enums.*;
import net.wanji.web.common.util.CrossUtil;
import net.wanji.web.entity.TBaseAreaCross;
import net.wanji.web.entity.TBaseAreaInfo;
import net.wanji.web.entity.TBaseCrossInfo;
import net.wanji.web.mapper.*;
import net.wanji.web.po.*;
import net.wanji.web.service.SituationDetectionService;
import net.wanji.web.service.TBaseCrossInfoService;
import net.wanji.web.vo.situationDetection.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
......@@ -26,29 +30,22 @@ import java.util.stream.Collectors;
* @date 2022/10/26 13:48
*/
@Service
@RequiredArgsConstructor
public class SituationDetectionServiceImpl implements SituationDetectionService {
@Autowired
OptRecordsMapper optRecordsMapper;
@Autowired
CrossAlarmMapper crossAlarmMapper;
@Autowired
EventAlarmMapper eventAlarmMapper;
@Autowired
ControlHistMapper controlHistMapper;
@Autowired
VehicleTraceMapper vehicleTraceMapper;
@Autowired
VideoDeviceInfoMapper videoDeviceInfoMapper;
@Autowired
GreenwaveRealtimeMapper greenwaveRealtimeMapper;
@Autowired
AllDeviceStatusMapper allDeviceStatusMapper;
@Autowired
GreenwaveCrossMapper greenwaveCrossMapper;
@Autowired
TBaseCrossInfoMapper tBaseCrossInfoMapper;
private final OptRecordsMapper optRecordsMapper;
private final CrossAlarmMapper crossAlarmMapper;
private final EventAlarmMapper eventAlarmMapper;
private final ControlHistMapper controlHistMapper;
private final VehicleTraceMapper vehicleTraceMapper;
private final VideoDeviceInfoMapper videoDeviceInfoMapper;
private final GreenwaveRealtimeMapper greenwaveRealtimeMapper;
private final AllDeviceStatusMapper allDeviceStatusMapper;
private final GreenwaveCrossMapper greenwaveCrossMapper;
private final TBaseCrossInfoMapper tBaseCrossInfoMapper;
private final TBaseAreaInfoMapper tBaseAreaInfoMapper;
private final TBaseCrossInfoService tBaseCrossInfoService;
private final TBaseAreaCrossMapper tBaseAreaCrossMapper;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
......@@ -393,6 +390,66 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
public TBaseCrossInfo selectCrossInfoById(String signalId) {
return tBaseCrossInfoMapper.selectById(signalId);
}
@Override
public List<AreaTreePO> jurisdictionTree() {
// 行政列表
List<AreaTreePO> areaTreePOS = tBaseCrossInfoService.areaTree();
List<AreaTreePO> resultList = areaTreePOS.stream().filter(areaTreePO -> areaTreePO.getChildren() != null).collect(Collectors.toList());
// 辖区构建
List<AreaTreePO> jurisdictionAreaList = tBaseAreaInfoMapper.selectJurisdictionArea();
Map<Integer, List<AreaTreePO>> parentCodeListMap = jurisdictionAreaList.stream().collect(Collectors.groupingBy(AreaTreePO::getParentCode));
for (AreaTreePO areaTreePO : resultList) {
List<AreaTreePO> childrenList = areaTreePO.getChildren();
for (AreaTreePO child : childrenList) {
Integer areaCode = child.getAreaCode();
if (!parentCodeListMap.isEmpty() && parentCodeListMap.containsKey(areaCode)) {
child.setChildren(parentCodeListMap.get(areaCode));
}
}
}
return resultList;
}
@Override
public List<AreaListVO> selectAreaList(Integer areaId) {
List<AreaListVO> results = new ArrayList<>();
LambdaQueryWrapper<TBaseAreaCross> queryWrapper = new LambdaQueryWrapper<>();
if (Objects.nonNull(areaId)) {
queryWrapper.eq(TBaseAreaCross::getAreaId, areaId);
}
List<TBaseAreaCross> entityList = tBaseAreaCrossMapper.selectList(queryWrapper);
// key:辖区编号 value:路口列表
Map<Integer, List<TBaseAreaCross>> areaIdMap = entityList.stream().collect(Collectors.groupingBy(TBaseAreaCross::getAreaId));
// 辖区列表
LambdaQueryWrapper<TBaseAreaInfo> tBaseAreaInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
tBaseAreaInfoLambdaQueryWrapper.eq(TBaseAreaInfo::getType, 2);
List<TBaseAreaInfo> jurisdictionAreaList = tBaseAreaInfoMapper.selectList(tBaseAreaInfoLambdaQueryWrapper);
// 构建区域返回列表
for (Map.Entry<Integer, List<TBaseAreaCross>> entry : areaIdMap.entrySet()) {
AreaListVO areaListVO = new AreaListVO();
Set<String> crossIds = new HashSet<>();
Set<String> ployLines = new HashSet<>();
List<TBaseAreaCross> crosseList = entry.getValue();
for (TBaseAreaCross tBaseAreaCross : crosseList) {
for (TBaseAreaInfo tBaseAreaInfo : jurisdictionAreaList) {
if (Objects.equals(tBaseAreaCross.getAreaId(), tBaseAreaInfo.getCode())) {
crossIds.add(tBaseAreaCross.getCrossId());
ployLines.add(tBaseAreaInfo.getPolylines());
}
}
}
areaListVO.setCrossIds(crossIds);
areaListVO.setPloyLines(ployLines);
results.add(areaListVO);
}
return results;
}
}
class CrossAlarmComparator implements Comparator<CrossAlarmOutVO> {
......
package net.wanji.web.vo.situationDetection;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Set;
/**
* @author duanruiming
* @date 2023/02/06 14:43
*/
@Data
@ApiModel(value = "区域列表实体", description = "区域列表实体")
public class AreaListVO {
@ApiModelProperty(value = "区域路口编号列表")
private Set<String> crossIds;
@ApiModelProperty(value = "区域点列表")
private Set<String> ployLines;
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.web.mapper.TBaseAreaCrossMapper">
<resultMap id="BaseResultMap" type="net.wanji.web.entity.TBaseAreaCross">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="area_id" property="areaId" jdbcType="INTEGER"/>
<result column="cross_id" property="crossId" jdbcType="VARCHAR"/>
<result column="gmt_create" property="gmtCreate" jdbcType="TIMESTAMP"/>
<result column="gmt_modified" property="gmtModified" jdbcType="TIMESTAMP"/>
</resultMap>
</mapper>
\ No newline at end of file
......@@ -155,7 +155,15 @@
gmt_modified = #{gmtModified,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
<!-- 查询行政区域 -->
<select id="selectAreaTree" resultType="net.wanji.web.po.AreaTreePO">
select id, code areaCode, name areaName, parent_code parentCode from t_base_area_info
select id, code areaCode, name areaName, parent_code parentCode
from t_base_area_info where type = 1
</select>
<!-- 查询交警辖区 -->
<select id="selectJurisdictionArea" resultType="net.wanji.web.po.AreaTreePO">
select id, code areaCode, name areaName, parent_code parentCode
from t_base_area_info where type = 2
</select>
</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