Commit 952d7121 authored by hanbing's avatar hanbing

[add] 快速特勤,添加分组路线规划

parent df137b3f
......@@ -701,10 +701,13 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
Integer specialServiceId = specialServicePO.getId();
List<SpecialServiceCrossPO> specialServiceCrossList =
specialServiceCrossMapper.selectBySpecialServiceId(specialServiceId);
int crossNums = specialServiceCrossList.size();
Map<String, List<SpecialServiceCrossPO>> map = specialServiceCrossList.stream()
.collect(Collectors.groupingBy(SpecialServiceCrossPO::getGroupName));
for (String groupName : map.keySet()) {
GroupListVO.GroupListElement groupListElement = new GroupListVO.GroupListElement();
groupListElement.setGroupName(groupName);
......@@ -713,7 +716,7 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
Collections.sort(groupCrossList, Comparator.comparing(SpecialServiceCrossPO::getSort));
StringBuilder wktBuilder = new StringBuilder();
List<SpecialServiceDetailVO.CrossListElement> crossList = new ArrayList<>();
buildWktAndCrosslist(wktBuilder, crossList, groupCrossList, groupName);
buildWktAndCrosslist(wktBuilder, crossList, groupCrossList, groupName, specialServiceCrossList);
groupListElement.setWkt(wktBuilder.toString());
groupListElement.setCrossList(crossList);
......@@ -726,7 +729,10 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
}
private void buildWktAndCrosslist(StringBuilder wktBuilder, List<CrossListElement> crossList,
List<SpecialServiceCrossPO> groupCrossList, String groupName) {
List<SpecialServiceCrossPO> groupCrossList, String groupName,
List<SpecialServiceCrossPO> specialServiceCrossList) {
int crossNums = specialServiceCrossList.size();
for (int i = 0; i < groupCrossList.size(); i++) {
SpecialServiceCrossPO currentCrossElement = groupCrossList.get(i);
// 构造wkt
......@@ -745,8 +751,53 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
crossListElement.setCrossName(currentCross.getName());
crossListElement.setCrossId(currentCrossId);
setElementStartEnd(groupCrossList, i, currentCrossId, crossListElement);
Integer sort = currentCrossElement.getSort();
if (sort == 1) {
crossListElement.setRouteStart("");
SpecialServiceCrossPO nextCross = specialServiceCrossList.get(sort);
String nextCrossId = nextCross.getCrossId();
// 构建路名+方向
RidInfoEntity ridInfoEntity = ridInfoMapper.selectByStartEnd(currentCrossId, nextCrossId);
String name = ridInfoEntity.getName(); // 西湖路:湘江中路@书院路路段
String[] split = name.split(":");
String streetName = split[0];
Integer outDir = ridInfoEntity.getOutDir();
String ourDirMsg = CrossDirEnum.getMsgByCode(outDir);
crossListElement.setRouteEnd(streetName + ourDirMsg);
} else if (sort == crossNums) { // 结束路口
SpecialServiceCrossPO preCross = specialServiceCrossList.get(sort - 2);
String preCrossId = preCross.getCrossId();
// 构建路名+方向
RidInfoEntity ridInfoEntity = ridInfoMapper.selectByStartEnd(preCrossId, currentCrossId);
String name = ridInfoEntity.getName(); // 西湖路:湘江中路@书院路路段
String[] split = name.split(":");
String streetName = split[0];
Integer inDir = ridInfoEntity.getInDir();
String inDirMsg = CrossDirEnum.getMsgByCode(inDir);
crossListElement.setRouteStart(streetName + inDirMsg);
crossListElement.setRouteEnd("");
} else { // 中间路口
SpecialServiceCrossPO preCross = specialServiceCrossList.get(sort - 2);
SpecialServiceCrossPO nextCross = specialServiceCrossList.get(sort);
String preCrossId = preCross.getCrossId();
String nextCrossId = nextCross.getCrossId();
// 路线起点
RidInfoEntity ridInfoEntity = ridInfoMapper.selectByStartEnd(preCrossId, currentCrossId);
String name = ridInfoEntity.getName(); // 西湖路:湘江中路@书院路路段
String[] split = name.split(":");
String streetName = split[0];
Integer inDir = ridInfoEntity.getInDir();
String inDirMsg = CrossDirEnum.getMsgByCode(inDir);
crossListElement.setRouteStart(streetName + inDirMsg);
// 路线终点
RidInfoEntity ridInfoEntity2 = ridInfoMapper.selectByStartEnd(currentCrossId, nextCrossId);
String name2 = ridInfoEntity2.getName(); // 西湖路:湘江中路@书院路路段
String[] split2 = name2.split(":");
String streetName2 = split2[0];
Integer outDir = ridInfoEntity2.getOutDir();
String ourDirMsg = CrossDirEnum.getMsgByCode(outDir);
crossListElement.setRouteEnd(streetName2 + ourDirMsg);
}
crossListElement.setStatus(currentCrossElement.getStatus());
crossListElement.setSort(currentCrossElement.getSort());
crossList.add(crossListElement);
......
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