Commit cab74a3f authored by duanruiming's avatar duanruiming

[udpate] 辖区分组优化 信号机和辖区组合

parent 4756e4fc
......@@ -169,7 +169,7 @@ public class SituationDetectionController extends BaseController {
@ApiOperation(value = "辖区分组", notes = "辖区分组")
@GetMapping("/jurisdictionTree")
public JsonViewObject jurisdictionTree(Integer areaId) {
List<JurisdictionAreaVO> result = situationDetectionService.jurisdictionTree(areaId);
List<JurisdictionAreaTreeVO> result = situationDetectionService.jurisdictionTree(areaId);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(result);
}
......
......@@ -35,7 +35,7 @@ public interface SituationDetectionService {
TBaseCrossInfo selectCrossInfoById(String signalId);
List<JurisdictionAreaVO> jurisdictionTree(Integer areaId);
List<JurisdictionAreaTreeVO> jurisdictionTree(Integer areaId);
List<AreaListVO> selectAreaList(Integer areaId);
......
......@@ -403,11 +403,14 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
}
@Override
public List<JurisdictionAreaVO> jurisdictionTree(Integer areaId) {
List<JurisdictionAreaVO> resultList = new ArrayList<>();
public List<JurisdictionAreaTreeVO> jurisdictionTree(Integer areaId) {
List<JurisdictionAreaTreeVO> resultList = new ArrayList<>();
// 辖区构建
LambdaQueryWrapper<TBaseAreaInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TBaseAreaInfo::getType, 2);
if (Objects.nonNull(areaId)) {
queryWrapper.eq(TBaseAreaInfo::getCode, areaId);
}
List<TBaseAreaInfo> tBaseAreaInfos = tBaseAreaInfoMapper.selectList(queryWrapper);
LambdaQueryWrapper<TBaseAreaCross> crossQuery = new LambdaQueryWrapper<>();
......@@ -416,34 +419,53 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
LambdaQueryWrapper<TBaseCrossInfo> crossInfoQuery = new LambdaQueryWrapper<>();
List<TBaseCrossInfo> tBaseCrossInfos = tBaseCrossInfoMapper.selectList(crossInfoQuery);
Map<Integer, List<TBaseAreaCross>> areaIdMap = tBaseAreaCrosses.stream().collect(Collectors.groupingBy(TBaseAreaCross::getAreaId));
for (TBaseAreaInfo tBaseAreaInfo : tBaseAreaInfos) {
JurisdictionAreaVO jurisdictionAreaVO = new JurisdictionAreaVO();
Integer currentAreaId = tBaseAreaInfo.getCode();
jurisdictionAreaVO.setAreaId(currentAreaId);
jurisdictionAreaVO.setAreaName(tBaseAreaInfo.getName());
jurisdictionAreaVO.setPolylines(tBaseAreaInfo.getPolylines());
List<TBaseCrossInfo> crossInfoList = new ArrayList<>();
if (!areaIdMap.isEmpty()) {
List<TBaseAreaCross> areaCrossList = areaIdMap.get(currentAreaId);
if (!CollectionUtils.isEmpty(areaCrossList)) {
List<String> crossList = areaCrossList.stream().map(TBaseAreaCross::getCrossId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(tBaseCrossInfos)) {
for (TBaseCrossInfo tBaseCrossInfo : tBaseCrossInfos) {
if (crossList.contains(tBaseCrossInfo.getId())) {
crossInfoList.add(tBaseCrossInfo);
}
for (TBaseAreaInfo parent : tBaseAreaInfos) {
JurisdictionAreaTreeVO jurisdictionAreaVO = new JurisdictionAreaTreeVO();
jurisdictionAreaVO.setId(String.valueOf(parent.getCode()));
jurisdictionAreaVO.setName(parent.getName());
jurisdictionAreaVO.setType("1");
jurisdictionAreaVO.setPolylines(parent.getPolylines());
jurisdictionAreaVO.setLevel(parent.getParentCode() == 0 ? 1 : null);
jurisdictionAreaVO.setParentCode(String.valueOf(parent.getParentCode()));
jurisdictionAreaVO.setChlidren(null);
resultList.add(jurisdictionAreaVO);
}
for (TBaseAreaInfo parent : tBaseAreaInfos) {
Integer parentCode = parent.getCode();
for (TBaseAreaCross tBaseAreaCross : tBaseAreaCrosses) {
if (Objects.equals(parentCode, tBaseAreaCross.getAreaId())) {
JurisdictionAreaTreeVO signalAreaVO = new JurisdictionAreaTreeVO();
signalAreaVO.setId(tBaseAreaCross.getCrossId());
String name = null;
for (TBaseCrossInfo tBaseCrossInfo : tBaseCrossInfos) {
if (StringUtils.equals(tBaseCrossInfo.getId(), tBaseAreaCross.getCrossId())) {
name = tBaseCrossInfo.getName();
break;
}
}
signalAreaVO.setName(name);
signalAreaVO.setType("2");
signalAreaVO.setPolylines("");
signalAreaVO.setParentCode(String.valueOf(parentCode));
signalAreaVO.setChlidren(null);
resultList.add(signalAreaVO);
}
}
jurisdictionAreaVO.setCrossInfoList(crossInfoList);
resultList.add(jurisdictionAreaVO);
}
return resultList;
Map<String, List<JurisdictionAreaTreeVO>> map = resultList.stream().collect(Collectors.groupingBy(JurisdictionAreaTreeVO::getParentCode));
for (JurisdictionAreaTreeVO jurisdictionAreaTreeVO : resultList) {
for (Map.Entry<String, List<JurisdictionAreaTreeVO>> entry : map.entrySet()) {
if (Objects.equals(jurisdictionAreaTreeVO.getId(), entry.getKey())) {
jurisdictionAreaTreeVO.setChlidren(entry.getValue());
break;
}
}
}
List<JurisdictionAreaTreeVO> collect = resultList.stream().filter(jurisdictionAreaTreeVO -> jurisdictionAreaTreeVO.getChlidren() != null).collect(Collectors.toList());
return collect;
}
@Override
......
......@@ -3,7 +3,6 @@ package net.wanji.web.vo.situationDetection;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.web.entity.TBaseCrossInfo;
import java.util.List;
......@@ -13,13 +12,21 @@ import java.util.List;
*/
@Data
@ApiModel(value = "辖区实体")
public class JurisdictionAreaVO {
@ApiModelProperty(value = "辖区编号")
private Integer areaId;
@ApiModelProperty(value = "辖区名称")
private String areaName;
@ApiModelProperty(value = "区域边界")
public class JurisdictionAreaTreeVO {
@ApiModelProperty(value = "编号")
private String Id;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "类型:1-辖区;2-信号机")
private String type;
@ApiModelProperty(value = "区域边界:辖区:区域边界; 信号机:经纬度")
private String polylines;
@ApiModelProperty(value = "路口信息列表")
private List<TBaseCrossInfo> crossInfoList;
@ApiModelProperty(value = "级别")
private Integer level;
@ApiModelProperty(value = "区域级别")
private String parentCode;
@ApiModelProperty(value = "信号机状态:0离线; 1在线;2故障")
private Integer status;
@ApiModelProperty(value = "子辖区")
private List<JurisdictionAreaTreeVO> chlidren;
}
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