Commit cab74a3f authored by duanruiming's avatar duanruiming

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

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