Commit c9d68dbc authored by duanruiming's avatar duanruiming

[update] 辖区分组优化

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