Commit 952d7121 authored by hanbing's avatar hanbing

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

parent df137b3f
...@@ -701,10 +701,13 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -701,10 +701,13 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
Integer specialServiceId = specialServicePO.getId(); Integer specialServiceId = specialServicePO.getId();
List<SpecialServiceCrossPO> specialServiceCrossList = List<SpecialServiceCrossPO> specialServiceCrossList =
specialServiceCrossMapper.selectBySpecialServiceId(specialServiceId); specialServiceCrossMapper.selectBySpecialServiceId(specialServiceId);
int crossNums = specialServiceCrossList.size();
Map<String, List<SpecialServiceCrossPO>> map = specialServiceCrossList.stream() Map<String, List<SpecialServiceCrossPO>> map = specialServiceCrossList.stream()
.collect(Collectors.groupingBy(SpecialServiceCrossPO::getGroupName)); .collect(Collectors.groupingBy(SpecialServiceCrossPO::getGroupName));
for (String groupName : map.keySet()) { for (String groupName : map.keySet()) {
GroupListVO.GroupListElement groupListElement = new GroupListVO.GroupListElement(); GroupListVO.GroupListElement groupListElement = new GroupListVO.GroupListElement();
groupListElement.setGroupName(groupName); groupListElement.setGroupName(groupName);
...@@ -713,7 +716,7 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -713,7 +716,7 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
Collections.sort(groupCrossList, Comparator.comparing(SpecialServiceCrossPO::getSort)); Collections.sort(groupCrossList, Comparator.comparing(SpecialServiceCrossPO::getSort));
StringBuilder wktBuilder = new StringBuilder(); StringBuilder wktBuilder = new StringBuilder();
List<SpecialServiceDetailVO.CrossListElement> crossList = new ArrayList<>(); List<SpecialServiceDetailVO.CrossListElement> crossList = new ArrayList<>();
buildWktAndCrosslist(wktBuilder, crossList, groupCrossList, groupName); buildWktAndCrosslist(wktBuilder, crossList, groupCrossList, groupName, specialServiceCrossList);
groupListElement.setWkt(wktBuilder.toString()); groupListElement.setWkt(wktBuilder.toString());
groupListElement.setCrossList(crossList); groupListElement.setCrossList(crossList);
...@@ -726,7 +729,10 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -726,7 +729,10 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
} }
private void buildWktAndCrosslist(StringBuilder wktBuilder, List<CrossListElement> crossList, 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++) { for (int i = 0; i < groupCrossList.size(); i++) {
SpecialServiceCrossPO currentCrossElement = groupCrossList.get(i); SpecialServiceCrossPO currentCrossElement = groupCrossList.get(i);
// 构造wkt // 构造wkt
...@@ -745,8 +751,53 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -745,8 +751,53 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
crossListElement.setCrossName(currentCross.getName()); crossListElement.setCrossName(currentCross.getName());
crossListElement.setCrossId(currentCrossId); 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.setStatus(currentCrossElement.getStatus());
crossListElement.setSort(currentCrossElement.getSort()); crossListElement.setSort(currentCrossElement.getSort());
crossList.add(crossListElement); 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