Commit 6d8bedef authored by hanbing's avatar hanbing

[add] 绿波评价-干线方案分析,修改干线列表

parent c29ea989
...@@ -12,13 +12,13 @@ import net.wanji.opt.bo.BottomMenuBO; ...@@ -12,13 +12,13 @@ import net.wanji.opt.bo.BottomMenuBO;
import net.wanji.opt.bo.MainlineSchemeAnalysisBO; import net.wanji.opt.bo.MainlineSchemeAnalysisBO;
import net.wanji.opt.service.impl.MainlineEvaluateServiceImpl; import net.wanji.opt.service.impl.MainlineEvaluateServiceImpl;
import net.wanji.opt.vo.MainlineEvaluateBottomCurveVO; import net.wanji.opt.vo.MainlineEvaluateBottomCurveVO;
import net.wanji.opt.vo.MainlineListVO;
import net.wanji.opt.vo.MainlineSchemeAnalysisVO; import net.wanji.opt.vo.MainlineSchemeAnalysisVO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import java.text.ParseException; import java.text.ParseException;
import java.util.List; import java.util.List;
import java.util.Set;
@Api(value = "MainlineEvaluateController", description = "干线评价") @Api(value = "MainlineEvaluateController", description = "干线评价")
@RequestMapping("/mainlineEvaluate") @RequestMapping("/mainlineEvaluate")
...@@ -59,7 +59,7 @@ public class MainlineEvaluateController { ...@@ -59,7 +59,7 @@ public class MainlineEvaluateController {
@ApiOperation(value = "干线列表", notes = "干线列表") @ApiOperation(value = "干线列表", notes = "干线列表")
@GetMapping("/mainlineList") @GetMapping("/mainlineList")
public JsonViewObject mainlineList() { public JsonViewObject mainlineList() {
Set<String> res = mainlineEvaluateService.mainlineList(); List<MainlineListVO> res = mainlineEvaluateService.mainlineList();
return JsonViewObject.newInstance().success(res); return JsonViewObject.newInstance().success(res);
} }
......
...@@ -4,11 +4,11 @@ import net.wanji.opt.bo.BottomCurveBO; ...@@ -4,11 +4,11 @@ import net.wanji.opt.bo.BottomCurveBO;
import net.wanji.opt.bo.BottomMenuBO; import net.wanji.opt.bo.BottomMenuBO;
import net.wanji.opt.bo.MainlineSchemeAnalysisBO; import net.wanji.opt.bo.MainlineSchemeAnalysisBO;
import net.wanji.opt.vo.MainlineEvaluateBottomCurveVO; import net.wanji.opt.vo.MainlineEvaluateBottomCurveVO;
import net.wanji.opt.vo.MainlineListVO;
import net.wanji.opt.vo.MainlineSchemeAnalysisVO; import net.wanji.opt.vo.MainlineSchemeAnalysisVO;
import java.text.ParseException; import java.text.ParseException;
import java.util.List; import java.util.List;
import java.util.Set;
public interface MainlineEvaluateService { public interface MainlineEvaluateService {
...@@ -16,7 +16,7 @@ public interface MainlineEvaluateService { ...@@ -16,7 +16,7 @@ public interface MainlineEvaluateService {
List<MainlineEvaluateBottomCurveVO> bottomCurve(BottomCurveBO bo) throws ParseException; List<MainlineEvaluateBottomCurveVO> bottomCurve(BottomCurveBO bo) throws ParseException;
Set<String> mainlineList(); List<MainlineListVO> mainlineList();
MainlineSchemeAnalysisVO mainlineSchemeAnalysis(MainlineSchemeAnalysisBO bo); MainlineSchemeAnalysisVO mainlineSchemeAnalysis(MainlineSchemeAnalysisBO bo);
} }
...@@ -7,6 +7,7 @@ import net.wanji.common.enums.TurnConvertEnum; ...@@ -7,6 +7,7 @@ import net.wanji.common.enums.TurnConvertEnum;
import net.wanji.databus.dao.entity.*; import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.po.*; import net.wanji.databus.po.*;
import net.wanji.databus.vo.CrossIdAndNameVO;
import net.wanji.opt.bo.BottomCurveBO; import net.wanji.opt.bo.BottomCurveBO;
import net.wanji.opt.bo.BottomMenuBO; import net.wanji.opt.bo.BottomMenuBO;
import net.wanji.opt.bo.MainlineSchemeAnalysisBO; import net.wanji.opt.bo.MainlineSchemeAnalysisBO;
...@@ -17,6 +18,7 @@ import net.wanji.opt.po.strategy.SceneStrategyPO; ...@@ -17,6 +18,7 @@ import net.wanji.opt.po.strategy.SceneStrategyPO;
import net.wanji.opt.po.strategy.StrategyPO; import net.wanji.opt.po.strategy.StrategyPO;
import net.wanji.opt.service.MainlineEvaluateService; import net.wanji.opt.service.MainlineEvaluateService;
import net.wanji.opt.vo.MainlineEvaluateBottomCurveVO; import net.wanji.opt.vo.MainlineEvaluateBottomCurveVO;
import net.wanji.opt.vo.MainlineListVO;
import net.wanji.opt.vo.MainlineSchemeAnalysisVO; import net.wanji.opt.vo.MainlineSchemeAnalysisVO;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -48,6 +50,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService { ...@@ -48,6 +50,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
private final SceneStrategyMapper sceneStrategyMapper; private final SceneStrategyMapper sceneStrategyMapper;
private final StrategyMapper strategyMapper; private final StrategyMapper strategyMapper;
private final BaseCrossSectionMapper baseCrossSectionMapper; private final BaseCrossSectionMapper baseCrossSectionMapper;
private final RidInfoMapper ridInfoMapper;
SimpleDateFormat hourMinuteFormat = new SimpleDateFormat("HH:mm"); SimpleDateFormat hourMinuteFormat = new SimpleDateFormat("HH:mm");
SimpleDateFormat dateHourMinuteFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SimpleDateFormat dateHourMinuteFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
...@@ -57,7 +60,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService { ...@@ -57,7 +60,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
@Qualifier("baseCrossTurnInfoMapper") BaseCrossTurnInfoMapper baseCrossTurnInfoMapper, @Qualifier("baseCrossTurnInfoMapper") BaseCrossTurnInfoMapper baseCrossTurnInfoMapper,
CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper,
@Qualifier("laneInfoMapper") LaneInfoMapper laneInfoMapper, @Qualifier("laneInfoMapper") LaneInfoMapper laneInfoMapper,
CrossDirDataHistMapper crossDirDataHistMapper, CrossDataHistMapper crossDataHistMapper, CrossTurnDataHistMapper crossTurnDataHistMapper, CrossLaneDataHistMapper crossLaneDataHistMapper, @Qualifier("greenwaveInfoMapper") GreenwaveInfoMapper greenwaveInfoMapper, @Qualifier("greenwaveHistMapper") GreenwaveHistMapper greenwaveHistMapper, @Qualifier("greenwaveCrossMapper") GreenwaveCrossMapper greenwaveCrossMapper, @Qualifier("baseCrossInfoMapper") BaseCrossInfoMapper baseCrossInfoMapper, @Qualifier("greenwaveSceneMapper") GreenwaveSceneMapper greenwaveSceneMapper, @Qualifier("sceneStrategyMapper") SceneStrategyMapper sceneStrategyMapper, @Qualifier("strategyMapper") StrategyMapper strategyMapper, @Qualifier("baseCrossSectionMapper") BaseCrossSectionMapper baseCrossSectionMapper) { CrossDirDataHistMapper crossDirDataHistMapper, CrossDataHistMapper crossDataHistMapper, CrossTurnDataHistMapper crossTurnDataHistMapper, CrossLaneDataHistMapper crossLaneDataHistMapper, @Qualifier("greenwaveInfoMapper") GreenwaveInfoMapper greenwaveInfoMapper, @Qualifier("greenwaveHistMapper") GreenwaveHistMapper greenwaveHistMapper, @Qualifier("greenwaveCrossMapper") GreenwaveCrossMapper greenwaveCrossMapper, @Qualifier("baseCrossInfoMapper") BaseCrossInfoMapper baseCrossInfoMapper, @Qualifier("greenwaveSceneMapper") GreenwaveSceneMapper greenwaveSceneMapper, @Qualifier("sceneStrategyMapper") SceneStrategyMapper sceneStrategyMapper, @Qualifier("strategyMapper") StrategyMapper strategyMapper, @Qualifier("baseCrossSectionMapper") BaseCrossSectionMapper baseCrossSectionMapper, @Qualifier("ridInfoMapper") RidInfoMapper ridInfoMapper) {
this.baseCrossDirInfoMapper = baseCrossDirInfoMapper; this.baseCrossDirInfoMapper = baseCrossDirInfoMapper;
this.baseCrossTurnInfoMapper = baseCrossTurnInfoMapper; this.baseCrossTurnInfoMapper = baseCrossTurnInfoMapper;
this.laneInfoMapper = laneInfoMapper; this.laneInfoMapper = laneInfoMapper;
...@@ -73,6 +76,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService { ...@@ -73,6 +76,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
this.sceneStrategyMapper = sceneStrategyMapper; this.sceneStrategyMapper = sceneStrategyMapper;
this.strategyMapper = strategyMapper; this.strategyMapper = strategyMapper;
this.baseCrossSectionMapper = baseCrossSectionMapper; this.baseCrossSectionMapper = baseCrossSectionMapper;
this.ridInfoMapper = ridInfoMapper;
} }
@Override @Override
...@@ -495,17 +499,78 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService { ...@@ -495,17 +499,78 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
} }
@Override @Override
public Set<String> mainlineList() { public List<MainlineListVO> mainlineList() {
List<MainlineListVO> res = new ArrayList<>();
// 按干线名称过滤数据
List<GreenwaveInfoPO> poList = greenwaveInfoMapper.selectAll(); List<GreenwaveInfoPO> poList = greenwaveInfoMapper.selectAll();
Set<String> res = new HashSet<>(); List<GreenwaveInfoPO> filteredList = poList.stream()
for (GreenwaveInfoPO greenwaveInfoPO : poList) { .collect(Collectors.groupingBy(po -> getPrefix(po.getName())))
String name = greenwaveInfoPO.getName(); // 例:旅游路:转山西路至霞景路路段双向绿波1 .values()
String[] split = name.split(":"); .stream()
res.add(split[0]); .filter(list -> list.size() > 1)
.map(list -> list.get(0))
.collect(Collectors.toList());
for (GreenwaveInfoPO greenwaveInfoPO : filteredList) {
MainlineListVO mainlineListVO = new MainlineListVO();
String name = greenwaveInfoPO.getName(); // 例:旅游路-转山西路至霞景路路段:双向绿波1
String prefix = getPrefix(name);
mainlineListVO.setMainlineName(prefix);
Integer greenwaveId = greenwaveInfoPO.getId();
setCrossListAndwkt(mainlineListVO, greenwaveId);
res.add(mainlineListVO);
} }
return res; return res;
} }
private void setCrossListAndwkt(MainlineListVO mainlineListVO, Integer greenwaveId) {
List<GreenwaveCrossPO> greenwaveCrossPOList = greenwaveCrossMapper.selectByGreenwaveId(greenwaveId);
List<CrossIdAndNameVO> crossIdAndNameVOList = new ArrayList<>();
StringBuilder wkt = new StringBuilder();
for (int i = 0; i < greenwaveCrossPOList.size() - 1; i++) {
GreenwaveCrossPO preCross = greenwaveCrossPOList.get(i);
GreenwaveCrossPO nextCross = greenwaveCrossPOList.get(i + 1);
// 构造路口列表
String crossId = preCross.getCrossId();
BaseCrossInfoPO baseCrossInfoPO = baseCrossInfoMapper.selectById(crossId);
CrossIdAndNameVO crossIdAndNameVO = new CrossIdAndNameVO();
crossIdAndNameVO.setCrossId(crossId);
crossIdAndNameVO.setCrossName(baseCrossInfoPO.getName());
crossIdAndNameVOList.add(crossIdAndNameVO);
if (i == greenwaveCrossPOList.size() - 2) {
String crossId1 = nextCross.getCrossId();
BaseCrossInfoPO baseCrossInfoPO1 = baseCrossInfoMapper.selectById(crossId1);
CrossIdAndNameVO crossIdAndNameVO1 = new CrossIdAndNameVO();
crossIdAndNameVO1.setCrossId(crossId1);
crossIdAndNameVO1.setCrossName(baseCrossInfoPO1.getName());
crossIdAndNameVOList.add(crossIdAndNameVO1);
}
// 构造wkt
RidInfoEntity ridInfo = ridInfoMapper.selectByStartEnd(preCross.getCrossId(), nextCross.getCrossId());
if (i == 0) {
wkt.append(ridInfo.getWkt());
} else {
wkt.append(";").append(ridInfo.getWkt());
}
}
mainlineListVO.setCrossList(crossIdAndNameVOList);
mainlineListVO.setWkt(wkt.toString());
}
private String getPrefix(String name) {
int index = name.indexOf(':');
return index != -1 ? name.substring(0, index).trim() : name;
}
@Override @Override
public MainlineSchemeAnalysisVO mainlineSchemeAnalysis(MainlineSchemeAnalysisBO bo) { public MainlineSchemeAnalysisVO mainlineSchemeAnalysis(MainlineSchemeAnalysisBO bo) {
String mainlineName = bo.getName(); String mainlineName = bo.getName();
...@@ -533,9 +598,12 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService { ...@@ -533,9 +598,12 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
res.setSceneData(calcSceneData(filteredList)); res.setSceneData(calcSceneData(filteredList));
res.setCrossData(calcCrossData(filteredList)); res.setCrossData(calcCrossData(filteredList));
res.setEvaluateData(calcEvaluateData(filteredList)); res.setEvaluateData(calcEvaluateData(filteredList));
res.setGreenwaveData(new ArrayList<>()); res.setGreenwaveData(buildGreenwaveData(filteredList));
return res;
}
private List<MainlineSchemeAnalysisVO.GreenwaveData> buildGreenwaveData(List<GreenwaveHistPO> filteredList) {
return null; return null;
} }
......
package net.wanji.opt.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import net.wanji.databus.vo.CrossIdAndNameVO;
import java.util.List;
/**
* @author Kent HAN
* @date 2023/2/9 8:38
*/
@Data
@NoArgsConstructor
@ApiModel(value = "MainlineListVO", description = "干线列表")
public class MainlineListVO {
@ApiModelProperty(value = "干线名称")
private String mainlineName;
@ApiModelProperty(value = "路口列表")
private List<CrossIdAndNameVO> crossList;
@ApiModelProperty(value = "干线坐标")
private String wkt;
}
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