Commit c9d68dbc authored by duanruiming's avatar duanruiming

[update] 辖区分组优化

parent 25e48b25
...@@ -173,8 +173,8 @@ public class SituationDetectionController extends BaseController { ...@@ -173,8 +173,8 @@ public class SituationDetectionController extends BaseController {
@AspectLog(description = "辖区分组", operationType = BaseEnum.OperationTypeEnum.QUERY) @AspectLog(description = "辖区分组", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "辖区分组", notes = "辖区分组") @ApiOperation(value = "辖区分组", notes = "辖区分组")
@GetMapping("/jurisdictionTree") @GetMapping("/jurisdictionTree")
public JsonViewObject jurisdictionTree(Integer areaId) throws Exception { public JsonViewObject jurisdictionTree(Integer areaId, Integer type) throws Exception {
List<JurisdictionAreaTreeVO> result = situationDetectionService.jurisdictionTree(areaId); List<JurisdictionAreaTreeVO> result = situationDetectionService.jurisdictionTree(areaId, type);
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(result); return jsonViewObject.success(result);
} }
......
...@@ -36,7 +36,7 @@ public interface SituationDetectionService { ...@@ -36,7 +36,7 @@ public interface SituationDetectionService {
CrossInfoPO selectCrossInfoById(String signalId); CrossInfoPO selectCrossInfoById(String signalId);
List<JurisdictionAreaTreeVO> jurisdictionTree(Integer areaId) throws Exception; List<JurisdictionAreaTreeVO> jurisdictionTree(Integer areaId, Integer type) throws Exception;
List<AreaListVO> selectAreaList(Integer areaId); List<AreaListVO> selectAreaList(Integer areaId);
......
...@@ -408,25 +408,24 @@ public class SituationDetectionServiceImpl implements SituationDetectionService ...@@ -408,25 +408,24 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
} }
@Override @Override
public List<JurisdictionAreaTreeVO> jurisdictionTree(Integer areaId) throws Exception { public List<JurisdictionAreaTreeVO> jurisdictionTree(Integer areaId, Integer type) throws Exception {
List<JurisdictionAreaTreeVO> 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, type);
if (Objects.nonNull(areaId)) { if (Objects.nonNull(areaId)) {
queryWrapper.eq(TBaseAreaInfo::getCode, areaId); queryWrapper.eq(TBaseAreaInfo::getCode, areaId);
} }
List<TBaseAreaInfo> tBaseAreaInfos = tBaseAreaInfoMapper.selectList(queryWrapper); List<TBaseAreaInfo> tBaseAreaInfos = tBaseAreaInfoMapper.selectList(queryWrapper);
List<Integer> areadCodeList = tBaseAreaInfos.stream().map(TBaseAreaInfo::getCode).collect(Collectors.toList());
LambdaQueryWrapper<TBaseAreaCross> crossQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TBaseAreaCross> crossQuery = new LambdaQueryWrapper<>();
crossQuery.in(TBaseAreaCross::getAreaId, areadCodeList);
List<TBaseAreaCross> tBaseAreaCrosses = tBaseAreaCrossMapper.selectList(crossQuery); List<TBaseAreaCross> tBaseAreaCrosses = tBaseAreaCrossMapper.selectList(crossQuery);
LambdaQueryWrapper<TBaseCrossInfo> crossInfoQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TBaseCrossInfo> crossInfoQuery = new LambdaQueryWrapper<>();
List<TBaseCrossInfo> tBaseCrossInfos = tBaseCrossInfoMapper.selectList(crossInfoQuery); List<TBaseCrossInfo> tBaseCrossInfos = tBaseCrossInfoMapper.selectList(crossInfoQuery);
List<CrossInfoOutVo> crossInfoOutVoList = getCrossInfoOutVoList(new CrossInfoPageVO()); getJurisdictionAreaTreeVO(resultList, tBaseAreaInfos, tBaseAreaCrosses, tBaseCrossInfos);
getJurisdictionAreaTreeVO(resultList, tBaseAreaInfos, tBaseAreaCrosses, tBaseCrossInfos, crossInfoOutVoList);
// 构建树结构 // 构建树结构
Map<String, List<JurisdictionAreaTreeVO>> map = resultList.stream().collect(Collectors.groupingBy(JurisdictionAreaTreeVO::getParentCode)); Map<String, List<JurisdictionAreaTreeVO>> map = resultList.stream().collect(Collectors.groupingBy(JurisdictionAreaTreeVO::getParentCode));
...@@ -453,8 +452,7 @@ public class SituationDetectionServiceImpl implements SituationDetectionService ...@@ -453,8 +452,7 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
* @param tBaseCrossInfos * @param tBaseCrossInfos
*/ */
private static void getJurisdictionAreaTreeVO(List<JurisdictionAreaTreeVO> resultList, List<TBaseAreaInfo> tBaseAreaInfos, private static void getJurisdictionAreaTreeVO(List<JurisdictionAreaTreeVO> resultList, List<TBaseAreaInfo> tBaseAreaInfos,
List<TBaseAreaCross> tBaseAreaCrosses, List<TBaseCrossInfo> tBaseCrossInfos, List<TBaseAreaCross> tBaseAreaCrosses, List<TBaseCrossInfo> tBaseCrossInfos) {
List<CrossInfoOutVo> crossInfoOutVoList) {
// 构建辖区实体 // 构建辖区实体
for (TBaseAreaInfo parent : tBaseAreaInfos) { for (TBaseAreaInfo parent : tBaseAreaInfos) {
JurisdictionAreaTreeVO jurisdictionAreaVO = new JurisdictionAreaTreeVO(); JurisdictionAreaTreeVO jurisdictionAreaVO = new JurisdictionAreaTreeVO();
...@@ -475,18 +473,8 @@ public class SituationDetectionServiceImpl implements SituationDetectionService ...@@ -475,18 +473,8 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
jurisdictionAreaVO.setId(String.valueOf(crossInfo.getId())); jurisdictionAreaVO.setId(String.valueOf(crossInfo.getId()));
jurisdictionAreaVO.setName(crossInfo.getName()); jurisdictionAreaVO.setName(crossInfo.getName());
jurisdictionAreaVO.setType("2"); jurisdictionAreaVO.setType("2");
String name = null; String location = crossInfo.getLocation().replace("POINT(", "").replace(" ", ",").replace(")", "");
String location = null; jurisdictionAreaVO.setName(crossInfo.getName());
for (TBaseCrossInfo tBaseCrossInfo : tBaseCrossInfos) {
if (StringUtils.equals(tBaseCrossInfo.getId(), crossInfo.getId())) {
name = tBaseCrossInfo.getName();
location = tBaseCrossInfo.getLocation();
if (location.contains("POINT")) {
location = location.replace("POINT(", "").replace(" ", ",").replace(")", "");
}
}
}
jurisdictionAreaVO.setName(name);
jurisdictionAreaVO.setPoint(location); jurisdictionAreaVO.setPoint(location);
jurisdictionAreaVO.setLevel(0); jurisdictionAreaVO.setLevel(0);
jurisdictionAreaVO.setParentCode("0"); jurisdictionAreaVO.setParentCode("0");
...@@ -510,6 +498,7 @@ public class SituationDetectionServiceImpl implements SituationDetectionService ...@@ -510,6 +498,7 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
if (location.contains("POINT")) { if (location.contains("POINT")) {
location = location.replace("POINT(", "").replace(" ", ",").replace(")", ""); location = location.replace("POINT(", "").replace(" ", ",").replace(")", "");
} }
break;
} }
} }
signalAreaVO.setName(name); signalAreaVO.setName(name);
......
...@@ -19,11 +19,9 @@ import org.apache.commons.lang3.StringUtils; ...@@ -19,11 +19,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Date; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -52,11 +50,15 @@ public class SignalStatusTask { ...@@ -52,11 +50,15 @@ public class SignalStatusTask {
List<Map<String, Object>> source = (List<Map<String, Object>>) jsonViewObject.getContent(); List<Map<String, Object>> source = (List<Map<String, Object>>) jsonViewObject.getContent();
List<SignalStatusVO> content = BeanMapUtils.mapsToObjects(source, SignalStatusVO.class); List<SignalStatusVO> content = BeanMapUtils.mapsToObjects(source, SignalStatusVO.class);
List<String> crossIdList = content.stream().map(SignalStatusVO::getCrossId).collect(Collectors.toList()); List<String> crossIdList = content.stream().map(SignalStatusVO::getCrossId).collect(Collectors.toList());
List<CrossInfoPO> crossInfoPOList = crossInfoMapper.selectByCrossIds(crossIdList); List<CrossInfoPO> crossInfoPOList = new ArrayList<>();
if (!CollectionUtils.isEmpty(crossIdList)) {
crossInfoPOList = crossInfoMapper.selectByCrossIds(crossIdList);
}
List<CrossInfoPO> finalCrossInfoPOList = crossInfoPOList;
content.forEach(signalStatusVO -> { content.forEach(signalStatusVO -> {
String crossId = signalStatusVO.getCrossId(); String crossId = signalStatusVO.getCrossId();
String name = null; String name = null;
for (CrossInfoPO crossInfoPO : crossInfoPOList) { for (CrossInfoPO crossInfoPO : finalCrossInfoPOList) {
if (StringUtils.equals(crossId, crossInfoPO.getId())) { if (StringUtils.equals(crossId, crossInfoPO.getId())) {
name = crossInfoPO.getName(); name = crossInfoPO.getName();
break; break;
......
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