Commit 3980f854 authored by duanruiming's avatar duanruiming

Merge remote-tracking branch 'origin/master'

parents f0cde6e2 e0038e65
package net.wanji.opt.controllerv2.report;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.controllerv2.report.design.CrossOptimizeAnalysisResult;
import net.wanji.opt.controllerv2.report.design.GreenWaveOptimizeAnalysisResult;
import net.wanji.opt.controllerv2.report.design.ImportCrossReportAnalysis;
import net.wanji.opt.controllerv2.report.design.ImportGreenReportAnalysis;
import net.wanji.opt.controllerv2.report.vo.GreenWaveOptimizeAnalysisResultResponseDTO;
import net.wanji.opt.controllerv2.report.vo.ImportGreenReportAnalysisResponseVO;
import net.wanji.opt.servicev2.report.AnalysisGreenWaveOptimizeWeekService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* <p>
* 干线概况 接口API
* </p>
* @version 1.0
* @author
* @Date 2025-03-18
*/
@RestController
@Slf4j
@RequestMapping("/cross-optimize")
@Api(value="CrossOptimizeAnalysisController", description="路口分析报告", tags = "路口分析报告-周报")
public class CrossOptimizeAnalysisController {
@ApiOperation(httpMethod="GET",value="4.1-路口优化-总体分析", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossIds", value = "干线ID,多个id用','分隔【为空时查询所有干线】", required = false, dataType = "String",defaultValue = "13NEJ0B5R80,13N650B5P30"),
@ApiImplicitParam(name = "year", value = "年份", required = true, dataType = "String",defaultValue = "2025"),
@ApiImplicitParam(name = "week", value = "一年的第几周", required = true, dataType = "String",defaultValue = "14"),
})
@GetMapping(value = "/getTotalityData")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossOptimizeAnalysisResult.class),
})
public JsonViewObject getTotalityData(Integer year,Integer week,@RequestParam(required = false) String crossIds) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
@ApiOperation(httpMethod="GET",value="4.2-重点路口优化分析", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossIds", value = "干线ID,多个id用','分隔【为空时查询所有干线】", required = false, dataType = "String",defaultValue = "13NEJ0B5R80,13N650B5P30"),
@ApiImplicitParam(name = "year", value = "年份", required = true, dataType = "String",defaultValue = "2025"),
@ApiImplicitParam(name = "week", value = "一年的第几周", required = true, dataType = "String",defaultValue = "14"),
})
@GetMapping(value = "/getProblemDetail")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = ImportCrossReportAnalysis.class),
})
public JsonViewObject getProblemDetail(Integer year,Integer week,@RequestParam(required = false) String crossIds) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
}
package net.wanji.opt.controllerv2.report;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.controllerv2.report.design.CrossImportProblemAnalysisResult;
import net.wanji.opt.controllerv2.report.design.CrossProblemTotalityAnalysisResult;
import net.wanji.opt.controllerv2.report.design.CrossRunStateAnalysisResult;
import net.wanji.opt.controllerv2.report.design.CrossRunStatePeakAnalysisResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 路口运行状态 接口API
* </p>
* @version 1.0
* @author
* @Date 2025-03-18
*/
@RestController
@Slf4j
@RequestMapping("/cross-problem")
@Api(value="CrossProblemController", description="", tags = "路口分析报告-周报")
public class CrossProblemController {
@ApiOperation(httpMethod="GET",value="3.1-区域路口问题总体分析", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossIds", value = "路口ID,多个id用','分隔【为空时查询所有】", required = true, dataType = "String",defaultValue = "13NEJ0B5R80,13N650B5P30"),
@ApiImplicitParam(name = "year", value = "年份", required = true, dataType = "String",defaultValue = "2025"),
@ApiImplicitParam(name = "week", value = "一年的第几周", required = true, dataType = "String",defaultValue = "14"),
})
@GetMapping(value = "/getTotalitySituation")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossProblemTotalityAnalysisResult.class),
})
public JsonViewObject getTotalitySituation(String crossIds,Integer year,Integer week) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
@ApiOperation(httpMethod="GET",value="3.2-区域路口重点问题分析", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossIds", value = "路口ID,多个id用','分隔【为空时查询所有】", required = true, dataType = "String",defaultValue = "13NEJ0B5R80,13N650B5P30"),
@ApiImplicitParam(name = "year", value = "年份", required = true, dataType = "String",defaultValue = "2025"),
@ApiImplicitParam(name = "week", value = "一年的第几周", required = true, dataType = "String",defaultValue = "14"),
})
@GetMapping(value = "/getSeriousProblem")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossImportProblemAnalysisResult.class),
})
public JsonViewObject getPeakData(String crossIds,Integer year,Integer week) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
}
package net.wanji.opt.controllerv2.report.design;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import java.util.ArrayList;
import java.util.List;
@Data
public class CrossImportProblemAnalysisResult extends ParentResult {
private CrossImportProblemResultResponse content;
public CrossImportProblemResultResponse getContent() {
return content;
}
public CrossImportProblemAnalysisResult setContent(CrossImportProblemResultResponse content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class CrossImportProblemResultResponse {
@ApiModelProperty(value = "溢出最严重路口", example = "旅游路-洪山路交叉口、旅游路-霞景路交叉口",position = 0)
private String overFlowCrossName;
@ApiModelProperty(value = "本周溢出时长", example = "3.5小时",position = 1)
private String overFlowDuration;
@ApiModelProperty(value = "拥堵最严重路口", example = "旅游路-洪山路交叉口、旅游路-霞景路交叉口",position = 2)
private String congestCrossName;
@ApiModelProperty(value = "本周溢出时长", example = "3.5小时",position = 3)
private String congestDuration;
//================================================================================================//
@ApiModelProperty(value = "溢出路口排名,top10",position = 4)
private List<CrossImportProblemData> overFlowList=new ArrayList<>();
@ApiModelProperty(value = "拥堵路口排名,top10",position = 5)
private List<CrossImportProblemData> congestList=new ArrayList<>();
}
@Data
class CrossImportProblemData {
@ApiModelProperty(value = "数据类型:1溢出 2拥堵",example = "1",position = 0)
private String dataType ;
@ApiModelProperty(value = "路口名称",example = "旅游路-洪山路交叉口",position = 1)
private String crossName ;
@ApiModelProperty(value = "持续时长",example = "90",position = 2)
private Integer duration ;
@ApiModelProperty(value = "本周路口最严重时段",example = "7:00~7:30",position = 3)
private String seriousTimeSpan ;
@ApiModelProperty(value = "本周路口最严重时段持续时长",example = "溢出时长30分钟",position = 4)
private String seriousTimeSpanDuration ;
@ApiModelProperty(value = "工作日平均每天溢出次数",example = "3次",position = 5)
private String workDayAvgOverCount ;
@ApiModelProperty(value = "工作日平均每天溢出时长",example = "溢出时长30分钟",position = 6)
private String workDayAvgOverDuration ;
@ApiModelProperty(value = "路口每天时段详情",position = 7)
private List<CrossImportProblemDetail> list=new ArrayList<>();
}
@Data
class CrossImportProblemDetail{
@ApiModelProperty(value = "周几",example = "周一",position = 0)
private String weekName ;
@ApiModelProperty(value = "时段",example = "7:00~7:30",position = 1)
private String timeSpan ;
@ApiModelProperty(value = "时长",example = "30分钟",position = 2)
private String duration ;
}
package net.wanji.opt.controllerv2.report.design;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import java.util.ArrayList;
import java.util.List;
@Data
public class CrossOptimizeAnalysisResult extends ParentResult {
private CrossOptimizeResultResponse content;
public CrossOptimizeResultResponse getContent() {
return content;
}
public CrossOptimizeAnalysisResult setContent(CrossOptimizeResultResponse content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class CrossOptimizeResultResponse {
@ApiModelProperty(value = "路口名称", example = "经十路(舜耕路-山大路)",position = 0)
private String crossName;
@ApiModelProperty(value = "本周优化次数", example = "300次",position = 1)
private String weekOptimizeCount;
@ApiModelProperty(value = "本周优化时长", example = "98小时",position = 2)
private String weekOptimizeDuration;
@ApiModelProperty(value = "本周溢出次数", example = "98小时",position = 3)
private String weekOptimizeOverflowCount;
@ApiModelProperty(value = "本周拥堵次数", example = "98小时",position = 4)
private String weekOptimizeCongestCount;
@ApiModelProperty(value = "本周空放优化次数", example = "98小时",position = 5)
private String weekOptimizeEmptyCount;
@ApiModelProperty(value = "本周失衡优化次数", example = "98小时",position = 6)
private String weekOptimizeUnbalanceCount;
@ApiModelProperty(value = "本周通行能力同比情况", example = "提升10%",position = 7)
private String weekCapacitySituation;
@ApiModelProperty(value = "本周通停车次数同比情况", example = "减少10%",position = 8)
private String weekStopTimesSituation;
@ApiModelProperty(value = "本周通延误时间同比情况", example = "增加10%",position = 9)
private String weekDelayTimeSituation;
@ApiModelProperty(value = "本周通最大排队同比情况", example = "降低10%",position = 10)
private String weekMaxQueueLengthSituation;
@ApiModelProperty(value = "本周总体情况", example = "明显提升",position = 11)
private String weekTotalitySituation;
//================================================================================================//
@ApiModelProperty(value = "时段列表",example = "[\"本周\",\"上周\"]")
private List<String> timeList = new ArrayList<>();
private List<CrossOptimizeAnalysisData> dataList=new ArrayList<>();
}
@Data
class CrossOptimizeAnalysisData {
@ApiModelProperty(value = "通行能力",example = "8900")
private Integer capacity ;
@ApiModelProperty(value = "停车次数",example = "5")
private Double stopTimes ;
@ApiModelProperty(value = "延误时间,单位秒",example = "40")
private Double delayTime ;
@ApiModelProperty(value = "最大排队长度",example = "6.9")
private Double maxQueueLength ;
}
package net.wanji.opt.controllerv2.report.design;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import java.util.ArrayList;
import java.util.List;
@Data
public class CrossProblemTotalityAnalysisResult extends ParentResult {
private CrossProblemTotalityResultResponse content;
public CrossProblemTotalityResultResponse getContent() {
return content;
}
public CrossProblemTotalityAnalysisResult setContent(CrossProblemTotalityResultResponse content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class CrossProblemTotalityResultResponse {
@ApiModelProperty(value = "路口名称", example = "经十路(舜耕路-山大路)",position = 0)
private String crossName;
@ApiModelProperty(value = "本周溢出总次数", example = "20次",position = 1)
private String weekOverFlowCount;
@ApiModelProperty(value = "本周溢出总次数与上周比较情况", example = "增加【减少】10%",position = 2)
private String weekOverFlowCountCompare;
@ApiModelProperty(value = "本周溢出时长", example = "3.5小时",position = 3)
private String weekOverFlowDuration;
@ApiModelProperty(value = "本周溢出时长与上周比较情况", example = "增加【减少】13%",position = 4)
private String weekOverFlowDurationCompare;
@ApiModelProperty(value = "本周拥堵总次数", example = "20次",position = 5)
private String weekCongestCount;
@ApiModelProperty(value = "本周拥堵总次数与上周比较情况", example = "增加【减少】10%",position = 6)
private String weekCongestCountCompare;
@ApiModelProperty(value = "本周拥堵时长", example = "3.5小时",position = 7)
private String weekCongestDuration;
@ApiModelProperty(value = "本周拥堵时长与上周比较情况", example = "增加【减少】13%",position = 8)
private String weekCongestDurationCompare;
//================================================================================================//
private List<CrossProblemTotalityData> dataList=new ArrayList<>();
}
@Data
class CrossProblemTotalityData {
@ApiModelProperty(value = "数据类型:1次数 2时长",example = "1",position = 0)
private String dataType ;
@ApiModelProperty(value = "本周溢出数值【次数或时长】",example = "8900",position = 0)
private String thisWeekOverFlowNumber ;
@ApiModelProperty(value = "上周溢出数值【次数或时长】",example = "8900",position = 1)
private String lastWeekOverFlowNumber ;
@ApiModelProperty(value = "本周拥堵数值【次数或时长】",example = "8900",position = 2)
private String thisWeekCongestNumber ;
@ApiModelProperty(value = "上周拥堵数值【次数或时长】",example = "8900",position = 3)
private String lastWeekCongestNumber ;
@ApiModelProperty(value = "本周失衡数值【次数或时长】",example = "8900",position = 4)
private String thisWeekUnbalanceNumber ;
@ApiModelProperty(value = "上周失衡数值【次数或时长】",example = "8900",position = 5)
private String lastWeekUnbalanceNumber ;
@ApiModelProperty(value = "本周空放数值【次数或时长】",example = "8900",position = 6)
private String thisWeekEmptyPassNumber ;
@ApiModelProperty(value = "上周空放数值【次数或时长】",example = "8900",position = 7)
private String lastWeekEmptyPassNumber ;
}
package net.wanji.opt.controllerv2.report.design;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import java.util.ArrayList;
import java.util.List;
@Data
public class ImportCrossReportAnalysis extends ParentResult {
private List<ImportCrossAnalysisResponse> content;
public List<ImportCrossAnalysisResponse> getContent() {
return content;
}
public ImportCrossReportAnalysis setContent(List<ImportCrossAnalysisResponse> content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class ImportCrossAnalysisResponse {
@ApiModelProperty(value = "路口名称", example = "经十路(舜耕路-山大路)",position = 0)
private String crossName;
@ApiModelProperty(value = "本周优化集中时段分布情况", example = "7:00~8:00,12:00~13:30,17:30~18:40",position = 1)
private String optimizeSpan;
@ApiModelProperty(value = "本周溢出优化次数", example = "10次",position = 2)
private String overFlowOptimizeCount;
@ApiModelProperty(value = "本周溢出主要发生方向", example = "北出口、南出口",position = 3)
private String overFlowDirs;
@ApiModelProperty(value = "本周拥堵优化次数", example = "10次",position = 4)
private String congestOptimizeCount;
@ApiModelProperty(value = "本周拥堵主要发生方向", example = "北出口、南出口",position = 5)
private String congestDirs;
@ApiModelProperty(value = "本周空放优化次数", example = "10次",position = 6)
private String emptyPassOptimizeCount;
@ApiModelProperty(value = "本周空放主要发生方向", example = "北出口、南出口",position = 7)
private String emptyPassDirs;
@ApiModelProperty(value = "本周失衡优化次数", example = "10次",position = 8)
private String unbalanceOptimizeCount;
@ApiModelProperty(value = "本周失衡主要发生方向", example = "北出口、南出口",position = 9)
private String unbalanceDirs;
//================================================================================================//
@ApiModelProperty(value = "本周平均通行能力", example = "7800辆/小时",position = 10)
private String avgCapacity;
@ApiModelProperty(value = "平均通行能力与上周相比情况", example = "提升",position = 11)
private String avgCapacityCompareSituation;
//================================================================================================//
@ApiModelProperty(value = "本周延误时间", example = "22",position = 12)
private String delayTime;
@ApiModelProperty(value = "延误时间与上周相比情况", example = "增加【减少】10%",position = 13)
private String delayTimeCompare;
//================================================================================================//
@ApiModelProperty(value = "本周停车次数", example = "22",position = 14)
private String avgStopTimes;
@ApiModelProperty(value = "平均拥堵指数与上周相比情况", example = "增加【减少】10%",position = 15)
private String avgCongestIndexCompare;
//================================================================================================//
@ApiModelProperty(value = "本周最大排队长度", example = "203",position = 16)
private String maxQueueLength;
@ApiModelProperty(value = "本周最大排队长度与上周相比情况", example = "提升【降低】10%",position = 17)
private String maxQueueLengthCompare;
//================================================================================================//
@ApiModelProperty(value = "本周总体效果情况", example = "明显提升",position = 18)
private String weekTotalitySituation;
private List<ImportCrossReportAnalysisData> dataList = new ArrayList<>();
}
@Data
class ImportCrossReportAnalysisData {
@ApiModelProperty(value = "星期", example = "星期一", position = 0)
private String weekName;
@ApiModelProperty(value = "策略优化时段", example = "7:35~8:40", position = 1)
private String optimizeTimeSpan;
@ApiModelProperty(value = "本周优化次数与问题次数比", example = "20/100", position = 2)
private String thisWeekCountRadio;
@ApiModelProperty(value = "上周优化次数与问题次数比", example = "20/100", position = 3)
private String lastWeekCountRadio;
@ApiModelProperty(value = "本周通行能力", example = "3466", position = 4)
private Integer thisWeekCapacity;
@ApiModelProperty(value = "上周通行能力", example = "5600", position = 5)
private Integer lastWeekCapacity;
@ApiModelProperty(value = "本周停车次数", example = "20", position = 6)
private Double thisWeekStopTimes;
@ApiModelProperty(value = "上周停车次数", example = "30", position = 7)
private Double lastWeekStopTimes;
@ApiModelProperty(value = "本周延误时间", example = "30.5", position = 8)
private Double thisWeekDelayTime;
@ApiModelProperty(value = "上周延误时间", example = "30.2", position = 9)
private Double lastWeekDelayTime;
@ApiModelProperty(value = "本周最大排队长度", example = "6.5", position = 10)
private Double thisWeekMaxQueueLength;
@ApiModelProperty(value = "上周最大排队长度", example = "-1.5%", position = 11)
private Double lastWeekMaxQueueLength;
}
......@@ -48,47 +48,6 @@ public class StrategyPriorityController {
@ApiOperation(value = "策略优先级日计划详情表详情", response = StrategyPriorityDailyInfo.class)
@GetMapping(value = "/info/{id}")
public Object info(@PathVariable Long id) {
Object data = strategyPriorityService.info(id);
return ResultGenerator.genSuccessResult(data);
}
@ApiOperation(value = "策略优先级日计划详情表新增")
@PostMapping(value = "/add")
public Object add(@Valid @RequestBody StrategyPriorityDailyInfo param) {
strategyPriorityService.add(param);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "策略优先级日计划详情表修改")
@PostMapping(value = "/modify")
public Object modify(@Valid @RequestBody StrategyPriorityDailyInfo param) {
strategyPriorityService.modify(param);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "策略优先级日计划详情表删除(单个条目)")
@GetMapping(value = "/remove/{id}")
public Object remove(@PathVariable Long id) {
strategyPriorityService.remove(id);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "策略优先级日计划详情表删除(多个条目)")
@PostMapping(value = "/removes")
public Object removes(@Valid @RequestBody List<Long> ids) {
strategyPriorityService.removes(ids);
return ResultGenerator.genSuccessResult();
}
//策略管理-路口列表
@ApiOperation(value = "策略管理-路口列表", notes = "查询全部记录", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,hidden = false)
@ApiImplicitParams({
......@@ -125,10 +84,10 @@ public class StrategyPriorityController {
@ApiOperation(value = "策略管理-场景", notes = "查询全部记录", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,hidden = false)
@GetMapping("/sceneList")
public JsonViewObject getSceneList(){
public JsonViewObject getSceneList(Integer type){
JsonViewObject jsonView = JsonViewObject.newInstance();
try {
List<StrategyFactoryEntity> retLineData=strategyPriorityService.getSceneList();
List<StrategyFactoryEntity> retLineData=strategyPriorityService.getSceneList(type);
jsonView.success(retLineData);
}catch (Exception e){
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
......@@ -253,4 +212,22 @@ public class StrategyPriorityController {
}
return jsonView;
}
/*
策略管理-干线列表
*/
@ApiOperation(value = "策略管理-干线列表", notes = "查询全部记录", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,hidden = false)
@GetMapping("/getStrategyGreenWave")
public JsonViewObject getStrategyGreenWave(){
JsonViewObject jsonView = JsonViewObject.newInstance();
try {
List<StrategyPriorityDailyInfo> retLineData=strategyPriorityService.getStrategyGreenWave();
jsonView.success(retLineData);
}catch (Exception e){
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getStrategyGreenWave error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
}
\ No newline at end of file
......@@ -55,7 +55,7 @@ public interface StrategyPriorityMapper extends BaseMapper<StrategyPriorityDaily
List<StrategyFactoryEntity> getStrategyList();
List<StrategyFactoryEntity> getSceneList();
List<StrategyFactoryEntity> getSceneList(Integer type);
List<StrategyFactoryEntity> getCompanyList();
......@@ -90,5 +90,7 @@ public interface StrategyPriorityMapper extends BaseMapper<StrategyPriorityDaily
void saveParamConfig(@Param("savePlanList") List<StrategyParameterConfig> savePlanList);
List<StrategyParameterConfig> getParamConfigData(String crossId);
List<StrategyPriorityDailyInfo> getStrategyGreenWave();
}
......@@ -51,5 +51,9 @@ public class StrategyPriorityConfig implements Serializable {
*/
private Integer greenId;
/**
* 区分1:路口,2干线
*/
private Integer type;
}
package net.wanji.opt.entity.strategy;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.util.List;
import io.swagger.models.auth.In;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.baomidou.mybatisplus.annotation.TableName;
import net.wanji.opt.entity.comprehensivequery.CrossEntity;
@Data
@EqualsAndHashCode(callSuper=false)
......@@ -47,9 +48,20 @@ public class StrategyPriorityDailyInfo implements Serializable {
/**
* 干线名称 (路由列表返回用)
*/
@TableField(exist = false)
private String waveName;
/**
* 路口名称 (路由列表返回用)
*/
@TableField(exist = false)
private String crossName;
/**
* 干线ID 干线列表用
*/
@TableField(exist = false)
private Integer greenId;
}
......@@ -38,4 +38,6 @@ public class StrategyPriorityGroup {
private List<StrategyPriorityParamter> parameterConfigList;
// 调度配置表的配置信息
private StrategySchedulingParam schedulingParamters;
//1:路口,2干线
private Integer type;
}
......@@ -23,46 +23,11 @@ import java.util.Map;
*/
public interface StrategyPriorityService extends IService<StrategyPriorityDailyInfo> {
/**
* 策略优先级日计划详情表详情
* @param id
* @return
*/
StrategyPriorityDailyInfo info(Long id);
/**
* 策略优先级日计划详情表新增
* @param param 根据需要进行传值
* @return
*/
void add(StrategyPriorityDailyInfo param);
/**
* 策略优先级日计划详情表修改
* @param param 根据需要进行传值
* @return
*/
void modify(StrategyPriorityDailyInfo param);
/**
* 策略优先级日计划详情表删除(单个条目)
* @param id
* @return
*/
void remove(Long id);
/**
* 删除(多个条目)
* @param ids
* @return
*/
void removes(List<Long> ids);
List<StrategyPriorityDailyInfo>pageStrategyCrossList();
List<StrategyFactoryEntity> getStrategyList();
List<StrategyFactoryEntity> getSceneList();
List<StrategyFactoryEntity> getSceneList(Integer type);
List<StrategyFactoryEntity> getCompanyList();
......@@ -79,4 +44,6 @@ public interface StrategyPriorityService extends IService<StrategyPriorityDailyI
void saveParamterConfig(StrategyPriorityGroup strategyPriorityGroup) throws JsonProcessingException;
List<StrategyParameterConfig> getParamConfigData(String crossId);
List<StrategyPriorityDailyInfo> getStrategyGreenWave();
}
package net.wanji.opt.servicev2.strategy.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.CollectionUtils;
......@@ -7,6 +8,9 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import net.wanji.opt.dao.mapper.strategy.StrategyPriorityMapper;
import net.wanji.opt.entity.comprehensivequery.CrossEntity;
import net.wanji.opt.entity.comprehensivequery.GreenAndCrossEntity;
import net.wanji.opt.entity.comprehensivequery.GreenTreeEntity;
import net.wanji.opt.entity.strategy.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.wanji.opt.entity.strategy.dto.StrategyPriorityGroup;
......@@ -17,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
......@@ -33,62 +38,6 @@ import java.util.*;
@Resource
private StrategyPriorityMapper strategyPriorityMapper;
/**
* 策略优先级日计划详情表详情
* @param id
* @return
*/
@Override
public StrategyPriorityDailyInfo info(Long id) {
return getById(id);
}
/**
* 策略优先级日计划详情表新增
* @param param 根据需要进行传值
* @return
*/
@Override
public void add(StrategyPriorityDailyInfo param) {
save(param);
}
/**
* 策略优先级日计划详情表修改
* @param param 根据需要进行传值
* @return
*/
@Override
public void modify(StrategyPriorityDailyInfo param) {
updateById(param);
}
/**
* 策略优先级日计划详情表删除(单个条目)
* @param id
* @return
*/
@Override
public void remove(Long id) {
removeById(id);
}
/**
* 策略优先级日计划详情表删除(多个条目)
* @param ids
* @return
*/
@Override
public void removes(List<Long> ids) {
removeByIds(ids);
}
/**
* 策略路口列表
* @param
......@@ -117,8 +66,9 @@ import java.util.*;
* @return
*/
@Override
public List<StrategyFactoryEntity> getSceneList() {
List<StrategyFactoryEntity> strategyList= strategyPriorityMapper.getSceneList();
public List<StrategyFactoryEntity> getSceneList(Integer type) {
List<StrategyFactoryEntity> strategyList= strategyPriorityMapper.getSceneList(type);
return strategyList;
}
/**
......@@ -140,6 +90,8 @@ import java.util.*;
for (StrategyPriorityGroup group : dataList) {
String label = group.getLabel();
Integer labelCode = group.getLabelCode();
//1;路口2干线
Integer type = group.getType();
//路口id
List<String> crossList = group.getCrossIds();
//选中多个路口存多条数据
......@@ -162,7 +114,8 @@ import java.util.*;
strategyPriorityConfig.setStrategyNo(item.getStrategyNo());
//优先级
strategyPriorityConfig.setPriority(item.getPriority());
//type
strategyPriorityConfig.setType(type);
saveList.add(strategyPriorityConfig);
}
}
......@@ -183,7 +136,7 @@ import java.util.*;
//先获取策略编号
List<String> strategyNo = strategyPriorityMapper.getstrategyNo(crossId);
if (CollectionUtils.isEmpty(strategyNo)){
strategyNo.add("0");
return Collections.emptyList();
}
List<StrategyFactoryEntity> priorityList = strategyPriorityMapper.getPriorityConfigData(strategyNo,crossId);
return priorityList;
......@@ -301,4 +254,62 @@ import java.util.*;
}
}
/*
* 策略干线列表
* */
@Override
public List<StrategyPriorityDailyInfo> getStrategyGreenWave() {
try {
List<StrategyPriorityDailyInfo> queryResult= strategyPriorityMapper.getStrategyGreenWave();
Map<Integer, List<StrategyPriorityDailyInfo>> groupedData = queryResult.stream()
.collect(Collectors.groupingBy(StrategyPriorityDailyInfo::getGreenId));
// 格式化输出
List<StrategyPriorityDailyInfo> result = groupedData.entrySet().stream()
.map(entry -> {
//干线ID
int trunkId = entry.getKey();
List<StrategyPriorityDailyInfo> infos = entry.getValue();
// 创建新的对象
StrategyPriorityDailyInfo strategyPriorityDailyInfo=new StrategyPriorityDailyInfo();
// 提取干线名称(假设同一干线的名称相同)
String trunkName = infos.get(0).getWaveName();
// 按路口 ID 分组并合并日计划详情
Map<String, Set<String>> crossGroupedDetails = infos.stream()
.filter(info -> info.getDailyPlanDetails() != null)
.collect(Collectors.groupingBy(
StrategyPriorityDailyInfo::getCrossId,
Collectors.mapping(StrategyPriorityDailyInfo::getDailyPlanDetails, Collectors.toSet()))); // 去重
// 合并每个路口的日计划详情
String dailyPlanDetails = crossGroupedDetails.values().stream()
.map(set -> String.join(", ", set))
.collect(Collectors.joining(", "));
// 提取路口 ID 和路口名称
String roadIds = infos.stream()
.map(StrategyPriorityDailyInfo::getCrossId)
.collect(Collectors.joining(", "));
String roadNames = infos.stream()
.map(StrategyPriorityDailyInfo::getCrossName)
.collect(Collectors.joining(", "));
strategyPriorityDailyInfo.setGreenId(trunkId);
strategyPriorityDailyInfo.setWaveName(trunkName);
strategyPriorityDailyInfo.setCrossId(roadIds);
strategyPriorityDailyInfo.setCrossName(roadNames);
strategyPriorityDailyInfo.setDailyPlanDetails(dailyPlanDetails);
return strategyPriorityDailyInfo;
})
.collect(Collectors.toList());
// 输出结果
return result;
}catch (Exception e) {
log.error("{} getStrategyGreenWave", this.getClass().getSimpleName(), e);
throw e;
}
}
}
......@@ -138,6 +138,9 @@
FROM
t_strategy_factory_info
WHERE status='1'
<if test="type != null and type == 1">
AND type = 1
</if>
</select>
<select id="getCompanyList" resultType="net.wanji.opt.synthesis.pojo.StrategyFactoryEntity">
SELECT
......@@ -150,10 +153,10 @@
<insert id="savePriorityInsert" parameterType="java.util.List">
INSERT INTO
t_strategy_priority_config (cross_id,group_id,group_name,priority,strategy_no)
t_strategy_priority_config (cross_id,group_id,group_name,priority,strategy_no,type)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.crossId},#{item.groupId},#{item.groupName},#{item.priority},#{item.strategyNo})
(#{item.crossId},#{item.groupId},#{item.groupName},#{item.priority},#{item.strategyNo},#{item.type})
</foreach>
</insert>
......@@ -275,4 +278,14 @@
AND cross_id =#{crossId}
</if>
</select>
<select id="getStrategyGreenWave" parameterType="map" resultType="net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo">
SELECT t1.green_id as greenId, t4.name as waveName, t1.cross_id as crossId,
t3.name as crossName,t1.sort,
t2.daily_plan_details as dailyPlanDetails
FROM t_greenwave_cross t1
LEFT JOIN t_strategy_priority_daily_info t2 on t1.cross_id = t2.cross_id and t2.type=2
LEFT JOIN t_base_cross_info t3 on t1.cross_id = t3.id
LEFT JOIN t_greenwave_info t4 on t1.green_id = t4.id
</select>
</mapper>
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