Commit 8650e8f3 authored by hanbing's avatar hanbing

[update] 快速特勤,添加特勤路线只有2个路口时bug修复

parent ec3bfc58
...@@ -137,16 +137,23 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -137,16 +137,23 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
SpecialServiceCrossPO specialServiceCrossPO = new SpecialServiceCrossPO(); SpecialServiceCrossPO specialServiceCrossPO = new SpecialServiceCrossPO();
specialServiceCrossPO.setSpecialServiceId(specialServiceIdGenerated); specialServiceCrossPO.setSpecialServiceId(specialServiceIdGenerated);
specialServiceCrossPO.setCrossId(startCrossId); specialServiceCrossPO.setCrossId(startCrossId);
// 获取上一个路段
RouteElementVO preRoute = route.get(i - 1); RidInfoEntity preRid = null;
String preStartName = preRoute.getStartName(); if (route.size() == 1) { // 如果只有两个路口
BaseCrossInfoPO preStartCross = baseCrossInfoMapper.selectByName(preStartName); preRid = ridInfoEntity;
String preStartCrossId = preStartCross.getId(); } else {
// 获取上一个路段
String preEndName = preRoute.getEndName(); RouteElementVO preRoute = route.get(i - 1);
BaseCrossInfoPO preEndCross = baseCrossInfoMapper.selectByName(preEndName); String preStartName = preRoute.getStartName();
String preEndCrossId = preEndCross.getId(); BaseCrossInfoPO preStartCross = baseCrossInfoMapper.selectByName(preStartName);
RidInfoEntity preRid = ridInfoMapper.selectByStartEnd(preStartCrossId, preEndCrossId); String preStartCrossId = preStartCross.getId();
String preEndName = preRoute.getEndName();
BaseCrossInfoPO preEndCross = baseCrossInfoMapper.selectByName(preEndName);
String preEndCrossId = preEndCross.getId();
preRid = ridInfoMapper.selectByStartEnd(preStartCrossId, preEndCrossId);
}
// 当前路口驶入方向 // 当前路口驶入方向
Integer inDir = preRid.getInDir(); Integer inDir = preRid.getInDir();
// 当前路口使出方向 // 当前路口使出方向
...@@ -231,16 +238,23 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -231,16 +238,23 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
SpecialServiceCrossPO specialServiceCrossPO = new SpecialServiceCrossPO(); SpecialServiceCrossPO specialServiceCrossPO = new SpecialServiceCrossPO();
specialServiceCrossPO.setSpecialServiceId(specialServiceId); specialServiceCrossPO.setSpecialServiceId(specialServiceId);
specialServiceCrossPO.setCrossId(startCrossId); specialServiceCrossPO.setCrossId(startCrossId);
// 获取上一个路段
RouteElementVO preRoute = route.get(i - 1); RidInfoEntity preRid = null;
String preStartName = preRoute.getStartName(); if (route.size() == 1) { // 如果只有两个路口
BaseCrossInfoPO preStartCross = baseCrossInfoMapper.selectByName(preStartName); preRid = ridInfoEntity;
String preStartCrossId = preStartCross.getId(); } else {
// 获取上一个路段
String preEndName = preRoute.getEndName(); RouteElementVO preRoute = route.get(i - 1);
BaseCrossInfoPO preEndCross = baseCrossInfoMapper.selectByName(preEndName); String preStartName = preRoute.getStartName();
String preEndCrossId = preEndCross.getId(); BaseCrossInfoPO preStartCross = baseCrossInfoMapper.selectByName(preStartName);
RidInfoEntity preRid = ridInfoMapper.selectByStartEnd(preStartCrossId, preEndCrossId); String preStartCrossId = preStartCross.getId();
String preEndName = preRoute.getEndName();
BaseCrossInfoPO preEndCross = baseCrossInfoMapper.selectByName(preEndName);
String preEndCrossId = preEndCross.getId();
preRid = ridInfoMapper.selectByStartEnd(preStartCrossId, preEndCrossId);
}
// 当前路口驶入方向 // 当前路口驶入方向
Integer inDir = preRid.getInDir(); Integer inDir = preRid.getInDir();
// 当前路口使出方向 // 当前路口使出方向
...@@ -408,7 +422,7 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -408,7 +422,7 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
} }
List<BaseCrossInfoPO> routeList2 = new ArrayList<>(); List<BaseCrossInfoPO> routeList2 = new ArrayList<>();
routeList2.add(startCross); routeList2.add(startCross);
getSecondRouteList(secondStartCross, endCross, routeList2); getSecondRouteList(startCross, secondStartCross, endCross, routeList2);
List<RouteElementVO> route2 = buildRoute(routeList2); List<RouteElementVO> route2 = buildRoute(routeList2);
res.add(route1); res.add(route1);
...@@ -418,8 +432,8 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -418,8 +432,8 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
return null; return null;
} }
private void getSecondRouteList(BaseCrossInfoPO secondStartCross, BaseCrossInfoPO endCross, private void getSecondRouteList(BaseCrossInfoPO startCross, BaseCrossInfoPO secondStartCross,
List<BaseCrossInfoPO> routeList2) { BaseCrossInfoPO endCross, List<BaseCrossInfoPO> routeList2) {
String endCrossLonLatStr = getCrossLonLatStr(endCross); String endCrossLonLatStr = getCrossLonLatStr(endCross);
// 获取上游路口到终点距离最近的 // 获取上游路口到终点距离最近的
BaseCrossInfoPO nextStartCross = secondStartCross; BaseCrossInfoPO nextStartCross = secondStartCross;
...@@ -429,6 +443,9 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -429,6 +443,9 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
List<RidInfoEntity> ridUpCrossList = ridInfoMapper.selectUpCross(nextStartCross.getId()); List<RidInfoEntity> ridUpCrossList = ridInfoMapper.selectUpCross(nextStartCross.getId());
for (RidInfoEntity ridUpCross : ridUpCrossList) { for (RidInfoEntity ridUpCross : ridUpCrossList) {
String upCrossId = ridUpCross.getStartCrossId(); String upCrossId = ridUpCross.getStartCrossId();
if (StrUtil.equals(upCrossId, startCross.getId())){
continue;
}
BaseCrossInfoPO upCross = baseCrossInfoMapper.selectById(upCrossId); BaseCrossInfoPO upCross = baseCrossInfoMapper.selectById(upCrossId);
String upCrossLonLatStr = getCrossLonLatStr(upCross); String upCrossLonLatStr = getCrossLonLatStr(upCross);
double distance = gtsService.distance(endCrossLonLatStr, upCrossLonLatStr); double distance = gtsService.distance(endCrossLonLatStr, upCrossLonLatStr);
......
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