Commit e872a3e0 authored by zhoushiguang's avatar zhoushiguang

数据计算单独提出模块,避免对接口服务影响

parent 2da4d045
package net.wanji.opt.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdAndSchemeIdBO;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.opt.dto.CrossIdAndDirDTO;
import net.wanji.opt.dto.CrossIdAndSchemeIdDTO;
import net.wanji.opt.dto.SaveLaneInfoDTO;
import net.wanji.opt.dto.SendManualDTO;
import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO;
import net.wanji.opt.service.DiagnoService;
import net.wanji.opt.vo.CrossIdAndLocationVO;
import net.wanji.opt.vo.OptEffectVO;
import net.wanji.opt.vo.SchemeOptVO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.ws.rs.core.MediaType;
import java.util.Date;
import java.util.List;
/**
* 诊断优化
*
* @author Kent HAN
*/
@Api(value = "DiagnoController", description = "诊断优化")
@RequestMapping("/diagno")
@RestController
public class DiagnoController {
private final DiagnoService diagnoService;
public DiagnoController(DiagnoService diagnoService) {
this.diagnoService = diagnoService;
}
@ApiOperation(value = "查询路口当前场景、优化策略、优化方法", notes = "查询路口当前场景、优化策略、优化方法",
response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/queryCrossScene",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AddOrUpdateSceneDTO.class),
})
public JsonViewObject queryCrossScene(@RequestBody CrossIdBO crossIdBO) {
AddOrUpdateSceneDTO addOrUpdateSceneDTO = diagnoService.queryCrossScene(crossIdBO);
return JsonViewObject.newInstance().success(addOrUpdateSceneDTO);
}
@ApiOperation(value = "查询当前路口相邻路口", notes = "查询当前路口相邻路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/queryNeighborCross",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossIdAndLocationVO.class),
})
public JsonViewObject queryNeighborCross(@RequestBody CrossIdBO crossIdBO) {
List<CrossIdAndLocationVO> crossIdAndLocationVOList = diagnoService.queryNeighborCross(crossIdBO);
return JsonViewObject.newInstance().success(crossIdAndLocationVOList);
}
@ApiOperation(value = "查询方案优化", notes = "查询方案优化", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/querySchemeOpt",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeOptVO.class),
})
public JsonViewObject querySchemeOpt(@RequestBody @Valid CrossIdAndSchemeIdBO bo) {
SchemeOptVO schemeOptVO = diagnoService.querySchemeOpt(bo);
return JsonViewObject.newInstance().success(schemeOptVO);
}
@ApiOperation(value = "根据强制方案返回调整时间", notes = "根据强制方案返回调整时间", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/queryOptTime",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeOptVO.PhaseOptTime.class),
})
public JsonViewObject queryOptTime(@RequestBody CrossIdAndSchemeIdDTO crossIdAndSchemeIdDTO) {
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = diagnoService.queryOptTime(crossIdAndSchemeIdDTO);
return JsonViewObject.newInstance().success(phaseOptTimeList);
}
@ApiOperation(value = "方案优化对比", notes = "方案优化对比", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/schemeComparison",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeOptVO.PhaseOptTime.class),
})
public JsonViewObject schemeComparison(@RequestBody CrossIdAndSchemeIdDTO crossIdAndSchemeIdDTO) {
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = diagnoService.schemeComparison(crossIdAndSchemeIdDTO);
return JsonViewObject.newInstance().success(phaseOptTimeList);
}
@ApiOperation(value = "下发手动干预", notes = "下发手动干预", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/sendManual",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject sendManual(@RequestBody SendManualDTO sendManualDTO) throws Exception {
diagnoService.sendManual(sendManualDTO);
return JsonViewObject.newInstance().success();
}
@ApiOperation(value = "恢复下发", notes = "恢复下发", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/restoreSend",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject restoreSend(@RequestBody CrossIdBO crossIdBO) throws Exception {
diagnoService.restoreSend(crossIdBO);
return JsonViewObject.newInstance().success();
}
@AspectLog(description = "优化效果", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "优化效果", notes = "优化效果", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/optEffect",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = OptEffectVO.class),
})
public JsonViewObject optEffect(@RequestBody CrossIdAndDirDTO crossIdAndDirDTO) {
OptEffectVO optEffectVO = diagnoService.optEffect(crossIdAndDirDTO);
return JsonViewObject.newInstance().success(optEffectVO);
}
@AspectLog(description = "路口信息", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "路口信息", notes = "路口信息", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/listLaneInfo",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SaveLaneInfoDTO.class),
})
public JsonViewObject listLaneInfo(@RequestBody @Valid CrossIdBO crossIdBO) {
SaveLaneInfoDTO saveLaneInfoDTO = diagnoService.listLaneInfo(crossIdBO);
return JsonViewObject.newInstance().success(saveLaneInfoDTO);
}
}
\ No newline at end of file
package net.wanji.opt.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.dto.CrossIdAndMinutesDTO;
import net.wanji.opt.service.EvaluateService;
import net.wanji.opt.vo.EvaluateCrossDetailVO;
import net.wanji.opt.vo.EvaluateMetricsVO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.ws.rs.core.MediaType;
/**
* 信号评价
*
* @author Kent HAN
*/
@Api(value = "EvaluateController", description = "信号评价(旧)")
@RequestMapping("/evaluate")
@RestController
public class EvaluateController {
private final EvaluateService evaluateService;
public EvaluateController(EvaluateService evaluateService) {
this.evaluateService = evaluateService;
}
@ApiOperation(value = "路口详情(旧)", notes = "路口详情(旧)", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/evaluateCrossDetail",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = EvaluateCrossDetailVO.class),
})
public JsonViewObject evaluateCrossDetail(@RequestBody CrossIdAndMinutesDTO crossIdAndMinutesDTO) {
EvaluateCrossDetailVO evaluateCrossDetailVO = evaluateService.evaluateCrossDetail(crossIdAndMinutesDTO);
return JsonViewObject.newInstance().success(evaluateCrossDetailVO);
}
@ApiOperation(value = "评价指标(旧)", notes = "评价指标(旧)", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/evaluateMetrics",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = EvaluateMetricsVO.class),
})
public JsonViewObject evaluateMetrics(@RequestBody CrossIdAndMinutesDTO crossIdAndMinutesDTO) {
EvaluateMetricsVO evaluateMetricsVO = evaluateService.evaluateMetrics(crossIdAndMinutesDTO);
return JsonViewObject.newInstance().success(evaluateMetricsVO);
}
}
\ No newline at end of file
package net.wanji.opt.controller;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.exception.DubboProviderException;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.dto.EventInfoTrafficStatusDTO;
import net.wanji.databus.vo.EventInfoTrafficStatusVO;
import net.wanji.opt.entity.EventAlarmInfo;
import net.wanji.opt.po.base.EventStatisticPo;
import net.wanji.opt.service.EventService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
@RestController
@Slf4j
@RequestMapping("/event")
@Api(value="EventController", description="事件相关", tags = "事件相关")
public class EventController {
@Resource
EventService eventService;
@GetMapping("/count")
@ApiOperation(httpMethod="GET",value="事件总次数统计", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String",defaultValue = "13N8J0B5P10"),
@ApiImplicitParam(name = "eventType", value = "事件类型 701:空放 702:失衡 703:溢出", required = true, dataType = "String",defaultValue = "701"),
@ApiImplicitParam(name = "startTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = true, dataType = "String",defaultValue = "2025-01-05 00:00:00"),
@ApiImplicitParam(name = "endTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = true, dataType = "String",defaultValue = "2025-01-05 23:59:59"),
})
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = EventStatisticPo.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject evaluateCrossDetail(String crossId,String eventType,String startTime,String endTime) {
EventStatisticPo result = null;
try {
result = eventService.findCrossEventCount(crossId,eventType,startTime,endTime );
return JsonViewObject.newInstance().success(result);
} catch (DubboProviderException e) {
e.printStackTrace();
return JsonViewObject.newInstance().fail(e);
}
}
@GetMapping("/distribute")
@ApiOperation(httpMethod="GET",value="空放、失衡、溢出事件分布情况", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String",defaultValue = "13N8J0B5P10"),
// @ApiImplicitParam(name = "eventType", value = "事件类型 701:空放 702:失衡 703:溢出", required = false, dataType = "String",defaultValue = "701"),
@ApiImplicitParam(name = "startTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = true, dataType = "String",defaultValue = "2025-01-05 00:00:00"),
@ApiImplicitParam(name = "endTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = true, dataType = "String",defaultValue = "2025-01-05 23:59:59"),
})
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = EventStatisticPo.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject distribute(String crossId,String startTime,String endTime) {
try {
List<Map<String,Object>> result = eventService.findEventDistribute(crossId,startTime,endTime );
return JsonViewObject.newInstance().success(result);
} catch (DubboProviderException e) {
e.printStackTrace();
return JsonViewObject.newInstance().fail(e);
}
}
@PostMapping("/trafficStatus")
@ApiOperation(value="路口监测、干线监测-交通状态", notes="")
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = EventStatisticPo.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject trafficStatus(@RequestBody @Valid EventInfoTrafficStatusDTO eventInfoTrafficStatusDTO) {
try {
EventInfoTrafficStatusVO result = eventService.trafficStatus(eventInfoTrafficStatusDTO );
return JsonViewObject.newInstance().success(result);
} catch (DubboProviderException e) {
e.printStackTrace();
return JsonViewObject.newInstance().fail(e);
}
}
@GetMapping("/getAlarmInfo")
@ApiOperation(hidden = false, value = "实时/历史事件报警获取", notes = "", produces = "application/json")
@ApiImplicitParams({
@ApiImplicitParam(name = "realtimeType", value = "查询类型:1为实时 2为历史", required = false, dataType = "String"),
@ApiImplicitParam(name = "eventType", value = "事件类型,701:空放 702:失衡 703:溢出 705:干线缓行 706:干线拥堵 707:路口拥堵", required = false, dataType = "String"),
@ApiImplicitParam(name = "name", value = "按名称模糊查询", required = false, dataType = "String"),
}
)
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = EventAlarmInfo.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject list(@RequestParam(defaultValue = "") String realtimeType, @RequestParam(defaultValue = "") String eventType , @RequestParam(defaultValue = "") String name) {
try {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
List<EventAlarmInfo> eventAlarmInfo = eventService.findEventAlarmInfo(realtimeType,eventType,name);
return jsonViewObject.success(eventAlarmInfo);
} catch (Exception e) {
log.error("", e);
return JsonViewObject.newInstance().fail("请求失败");
}
}
@GetMapping("/getCrossCurrentStatus")
@ApiOperation(hidden = false, value = "路口实时状态接口", notes = "", produces = "application/json")
@ApiImplicitParams({
}
)
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = EventAlarmInfo.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject getCrossNowStatus() {
try {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
List<EventAlarmInfo> eventAlarmInfo = eventService.findNotFinishAlarmInfo();
return jsonViewObject.success(eventAlarmInfo);
} catch (Exception e) {
log.error("", e);
return JsonViewObject.newInstance().fail("请求失败");
}
}
}
\ No newline at end of file
package net.wanji.opt.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.GreenwaveStartEndDateBO;
import net.wanji.opt.bo.*;
import net.wanji.opt.service.impl.MainlineEvaluateServiceImpl;
import net.wanji.opt.vo.*;
import org.springframework.web.bind.annotation.*;
import javax.ws.rs.core.MediaType;
import java.util.List;
@Api(value = "MainlineEvaluateController", description = "干线评价")
@RequestMapping("/mainlineEvaluate")
@RestController
public class MainlineEvaluateController {
private final MainlineEvaluateServiceImpl mainlineEvaluateService;
public MainlineEvaluateController(MainlineEvaluateServiceImpl mainlineEvaluateService) {
this.mainlineEvaluateService = mainlineEvaluateService;
}
@ApiOperation(value = "底部曲线图范围下拉列表", notes = "底部曲线图范围下拉列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/bottomMenu",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject bottomMenu(@RequestBody BottomMenuBO bo) {
List<String> res = mainlineEvaluateService.bottomMenu(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "底部曲线图", notes = "底部曲线图", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/bottomCurve",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = MainlineEvaluateBottomCurveVO.class),
})
public JsonViewObject bottomCurve(@RequestBody BottomCurveBO bo) throws Exception {
synchronized (this) {
try {
List<MainlineEvaluateBottomCurveVO> res = mainlineEvaluateService.bottomCurve(bo);
return JsonViewObject.newInstance().success(res);
} catch (Exception e) {
return JsonViewObject.newInstance().fail(e.getMessage());
}
}
}
@AspectLog(description = "干线列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "干线列表", notes = "干线列表")
@GetMapping("/mainlineList")
public JsonViewObject mainlineList() {
List<MainlineListVO> res = mainlineEvaluateService.mainlineList();
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "干线方案分析", notes = "干线方案分析", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/mainlineSchemeAnalysis",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = MainlineSchemeAnalysisVO.class),
})
public JsonViewObject mainlineSchemeAnalysis(@RequestBody MainlineSchemeAnalysisBO bo) throws Exception {
MainlineSchemeAnalysisVO res = mainlineEvaluateService.mainlineSchemeAnalysis(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "干线方案评价", notes = "干线方案评价", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/mainlineSchemeEvaluate",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = MainlineSchemeEvaluateVO.class),
})
public JsonViewObject mainlineSchemeEvaluate(@RequestBody MainlineSchemeEvaluateBO bo) {
MainlineSchemeEvaluateVO res = mainlineEvaluateService.mainlineSchemeEvaluate(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "干线路口评价", notes = "干线路口评价", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/mainlineCrossEvaluate",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = MainlineCrossEvaluateVO.class),
})
public JsonViewObject mainlineCrossEvaluate(@RequestBody MainlineCrossEvaluateBO bo) {
List<MainlineCrossEvaluateVO> res = mainlineEvaluateService.mainlineCrossEvaluate(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "干线运行分析", notes = "干线运行分析", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/mainlineRunningAnalyse",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = MainlineRunningAnalyseVO.class),
})
public JsonViewObject mainlineRunningAnalyse(@RequestBody GreenwaveStartEndDateBO bo) {
List<MainlineRunningAnalyseVO> res = mainlineEvaluateService.mainlineRunningAnalyse(bo);
return JsonViewObject.newInstance().success(res);
}
}
\ No newline at end of file
package net.wanji.opt.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.exception.DubboProviderException;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdAndStartEndDateBO;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.databus.bo.HeatMapBO;
import net.wanji.databus.vo.RunningEvaluateCrossListVO;
import net.wanji.opt.bo.CrossNameBO;
import net.wanji.opt.bo.MetricsDetailBO;
import net.wanji.opt.service.impl.RunningEvaluateServiceImpl;
import net.wanji.opt.vo.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.ws.rs.core.MediaType;
import java.util.List;
/**
* 运行评价
*
* @author Kent HAN
*/
@Api(value = "RunningEvaluateController", description = "运行评价")
@RequestMapping("/runningEvaluate")
@RestController
public class RunningEvaluateController {
private final RunningEvaluateServiceImpl runningEvaluateService;
public RunningEvaluateController(RunningEvaluateServiceImpl runningEvaluateService) {
this.runningEvaluateService = runningEvaluateService;
}
@ApiOperation(value = "路口列表", notes = "路口列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossList",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateCrossListVO.class),
})
public JsonViewObject crossList(@RequestBody CrossNameBO crossNameBO) {
List<RunningEvaluateCrossListVO> res = runningEvaluateService.crossList(crossNameBO);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "信号评价-路口评价", notes = "路口评价", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossEvaluate",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateCrossEvaluateVO.class),
})
public JsonViewObject crossEvaluate(@RequestBody CrossIdAndStartEndDateBO bo) {
RunningEvaluateCrossEvaluateVO res = null;
try {
res = runningEvaluateService.crossEvaluate(bo);
} catch (DubboProviderException e) {
e.printStackTrace();
}
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "拥堵情况", notes = "拥堵情况", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/congestionStatus",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateStatusVO.class),
})
public JsonViewObject congestionStatus(@RequestBody CrossIdAndStartEndDateBO bo) {
RunningEvaluateStatusVO res = runningEvaluateService.congestionStatus(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "失衡情况", notes = "失衡情况", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/unbalanceStatus",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateStatusVO.class),
})
public JsonViewObject unbalanceStatus(@RequestBody CrossIdAndStartEndDateBO bo) {
RunningEvaluateStatusVO res = runningEvaluateService.unbalanceStatus(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "溢出情况", notes = "溢出情况", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/spilloverStatus",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateStatusVO.class),
})
public JsonViewObject spilloverStatus(@RequestBody CrossIdAndStartEndDateBO bo) {
RunningEvaluateStatusVO res = runningEvaluateService.spilloverStatus(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "方案问题", notes = "方案问题", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/schemeProblems",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateSchemeProblemsVO.class),
})
public JsonViewObject schemeProblems(@RequestBody CrossIdAndStartEndDateBO bo) {
List<RunningEvaluateSchemeProblemsVO> res = runningEvaluateService.schemeProblems(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "详细指标查询-范围下拉列表", notes = "详细指标查询-范围下拉列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/scopeTree",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateScopeTreeVO.class),
})
public JsonViewObject scopeTree(@RequestBody CrossIdBO bo) {
RunningEvaluateScopeTreeVO res = runningEvaluateService.scopeTree(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "详细指标查询", notes = "详细指标查询", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/metricsDetail",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateMetricsDetailVO.class),
})
public JsonViewObject schemeProblems(@RequestBody MetricsDetailBO bo) {
RunningEvaluateMetricsDetailVO res = runningEvaluateService.metricsDetail(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "运行评价热力图", notes = "运行评价热力图", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/heatMap",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateHeatMapVO.class),
})
public JsonViewObject heatMap(@RequestBody HeatMapBO bo) {
List<RunningEvaluateHeatMapVO> res = runningEvaluateService.heatMap(bo);
return JsonViewObject.newInstance().success(res);
}
}
\ No newline at end of file
package net.wanji.opt.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdAndStartEndDateBO;
import net.wanji.databus.bo.HeatMapBO;
import net.wanji.opt.bo.AbnormalDetailBO;
import net.wanji.opt.bo.MetricsTurnAndLaneBO;
import net.wanji.opt.bo.SceneMetricsDetailBO;
import net.wanji.opt.service.impl.SceneEvaluateServiceImpl;
import net.wanji.opt.vo.*;
import net.wanji.opt.vo.SceneMetricsDetailVO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.ws.rs.core.MediaType;
import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.util.List;
/**
* 场景评价
*
* @author Kent HAN
*/
@Api(value = "SceneEvaluateController", description = "场景评价")
@RequestMapping("/sceneEvaluate")
@RestController
public class SceneEvaluateController {
private final SceneEvaluateServiceImpl sceneEvaluateService;
public SceneEvaluateController(SceneEvaluateServiceImpl sceneEvaluateService) {
this.sceneEvaluateService = sceneEvaluateService;
}
@ApiOperation(value = "异常事件时空分布", notes = "异常事件时空分布", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/abnormalDistribute",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SceneEvaluateAbnormalDistributeVO.class),
})
public JsonViewObject abnormalDistribute(@RequestBody CrossIdAndStartEndDateBO bo) {
SceneEvaluateAbnormalDistributeVO res = sceneEvaluateService.abnormalDistribute(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "异常事件详情", notes = "异常事件详情", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/abnormalDetail",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SceneEvaluateAbnormalDetailVO.class),
})
public JsonViewObject abnormalDetail(@RequestBody AbnormalDetailBO abnormalDetailBO) throws ParseException {
SceneEvaluateAbnormalDetailVO res = sceneEvaluateService.abnormalDetail(abnormalDetailBO);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "曲线图", notes = "曲线图", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/metricsDetail",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SceneMetricsDetailVO.class),
})
public JsonViewObject schemeProblems(@RequestBody SceneMetricsDetailBO bo)
throws InvocationTargetException, NoSuchMethodException, IllegalAccessException {
List<SceneMetricsDetailVO> res = sceneEvaluateService.metricsDetail(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "转向级指标", notes = "转向级指标", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/metricsTurn",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SceneEvaluateMetricsTurnVO.class),
})
public JsonViewObject metricsTurn(@RequestBody MetricsTurnAndLaneBO bo) throws ParseException {
SceneEvaluateMetricsTurnVO res = sceneEvaluateService.metricsTurn(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "车道级指标", notes = "车道级指标", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/metricsLane",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SceneEvaluateMetricsLaneVO.class),
})
public JsonViewObject metricsLane(@RequestBody MetricsTurnAndLaneBO bo) throws ParseException {
SceneEvaluateMetricsLaneVO res = sceneEvaluateService.metricsLane(bo);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "场景评价热力图", notes = "场景评价热力图", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/heatMap",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SceneEvaluateHeatMapVO.class),
})
public JsonViewObject heatMap(@RequestBody HeatMapBO bo) {
List<SceneEvaluateHeatMapVO> res = sceneEvaluateService.heatMap(bo);
return JsonViewObject.newInstance().success(res);
}
}
\ No newline at end of file
package net.wanji.opt.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.opt.bo.CrossSchemeListBO;
import net.wanji.opt.bo.CurveChartBO;
import net.wanji.opt.bo.ProblemSchemeBO;
import net.wanji.opt.bo.SchemeDetailOverallBO;
import net.wanji.opt.service.impl.SchemeEvaluateServiceImpl;
import net.wanji.opt.vo.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.ws.rs.core.MediaType;
import java.text.ParseException;
import java.util.List;
/**
* 方案评价
*
* @author Kent HAN
*/
@Api(value = "SchemeEvaluateController", description = "方案评价")
@RequestMapping("/schemeEvaluate")
@RestController
public class SchemeEvaluateController {
private final SchemeEvaluateServiceImpl schemeEvaluateService;
public SchemeEvaluateController(SchemeEvaluateServiceImpl schemeEvaluateService) {
this.schemeEvaluateService = schemeEvaluateService;
}
@ApiOperation(value = "问题方案列表", notes = "问题方案列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/problemSchemeList",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeEvaluateProblemSchemeVO.class),
})
public JsonViewObject problemSchemeList(@RequestBody ProblemSchemeBO problemSchemeBO) {
SchemeEvaluateProblemSchemeVO res = schemeEvaluateService.problemSchemeList(problemSchemeBO);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "策略-评价指标下拉菜单", notes = "策略-评价指标下拉菜单", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/strategyMetricMenu",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeEvaluateStrategyMetricMenuVO.class),
})
public JsonViewObject strategyMetricMenu(@RequestBody CrossIdBO crossIdBO) {
List<SchemeEvaluateStrategyMetricMenuVO> res = schemeEvaluateService.strategyMetricMenu(crossIdBO);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "路口方案列表", notes = "路口方案列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossSchemeList",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeEvaluateCrossSchemeListVO.class),
})
public JsonViewObject crossSchemeList(@RequestBody CrossSchemeListBO crossSchemeListBO) {
List<SchemeEvaluateCrossSchemeListVO> res = schemeEvaluateService.crossSchemeList(crossSchemeListBO);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "方案详情-总体评价", notes = "方案详情-总体评价", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/schemeDetailOverall",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeEvaluateSchemeDetailOverallVO.class),
})
public JsonViewObject schemeDetailOverall(@RequestBody SchemeDetailOverallBO schemeDetailOverallBO)
throws Exception {
SchemeEvaluateSchemeDetailOverallVO res = schemeEvaluateService.schemeDetailOverall(schemeDetailOverallBO);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "方案详情-详细问题", notes = "方案详情-详细问题", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/detailedProblem",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeEvaluateSchemeDetailedProblemVO.class),
})
public JsonViewObject detailedProblem(@RequestBody SchemeDetailOverallBO schemeDetailOverallBO)
throws ParseException {
SchemeEvaluateSchemeDetailedProblemVO res = schemeEvaluateService.detailedProblem(schemeDetailOverallBO);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "方案详情-曲线图", notes = "方案详情-曲线图", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/curveChart",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeEvaluateCurveChartVO.class),
})
public JsonViewObject curveChart(@RequestBody CurveChartBO curveChartBO)
throws ParseException, NoSuchFieldException, IllegalAccessException {
List<SchemeEvaluateCurveChartVO> res = schemeEvaluateService.curveChart(curveChartBO);
return JsonViewObject.newInstance().success(res);
}
}
\ No newline at end of file
package net.wanji.opt.controller.induce;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.framework.rest.ValidationGroups;
import net.wanji.opt.entity.InduceFontHist;
import net.wanji.opt.service.induce.InduceFontHistService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.ws.rs.core.MediaType;
import java.util.List;
/**
* @author duanruiming
* @date 2025/01/21 14:37
*/
@Api(value = "InduceFontHistController", description = "诱导屏-文字下发历史信息")
@RestController
@RequestMapping("/induceFontHist")
@Slf4j
public class InduceFontHistController {
@Resource
private InduceFontHistService induceFontHistService;
@ApiOperation(value = "获取所有诱导文字下发记录", notes = "获取所有诱导文字下发记录",
response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@GetMapping(value = "/byAll", produces = MediaType.APPLICATION_JSON)
public JsonViewObject getAll(@RequestParam(defaultValue = "") String equipCode) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
List<InduceFontHist> list = induceFontHistService.getAll(equipCode);
jsonViewObject.success(list);
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
@ApiOperation(value = "诱导屏文字编辑新增修改", notes = "诱导屏文字编辑新增修改",
response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@PostMapping(value = "/editor", produces = MediaType.APPLICATION_JSON,
consumes = MediaType.APPLICATION_JSON)
public JsonViewObject editor(@ApiParam(value = "查询条件", required = true)
@RequestBody @Validated({ValidationGroups.Query.class})
InduceFontHist induceFontHist) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
induceFontHistService.editor(induceFontHist);
jsonViewObject.success("编辑成功");
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("POST_FAILED_MSG"));
log.error("{} editor error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
@ApiOperation(value = "通过编号获取诱导屏最新文字", notes = "通过编号获取诱导屏最新文字",
response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@GetMapping(value = "/byLastOne", produces = MediaType.APPLICATION_JSON)
public JsonViewObject getLastOne(@RequestParam("equipCode") String equipCode) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
InduceFontHist induceFontHist = induceFontHistService.getLastOne(equipCode);
jsonViewObject.success(induceFontHist);
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} byLastOne error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
@ApiOperation(value = "通过字体id删除诱导屏字体信息", notes = "通过字体id删除诱导屏字体信息",
response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@GetMapping(value = "/deleteOneById", produces = MediaType.APPLICATION_JSON)
public JsonViewObject deleteOneById(@RequestParam("id") Integer id) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
induceFontHistService.deleteOneById(id);
jsonViewObject.success("删除成功");
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} byLastOne error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
}
package net.wanji.opt.controller.induce;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.framework.rest.Page;
import net.wanji.common.framework.rest.ValidationGroups;
import net.wanji.common.utils.tool.DateUtil;
import net.wanji.common.utils.tool.StringUtils;
import net.wanji.opt.dto.induce.InduceDTO;
import net.wanji.opt.entity.InduceHist;
import net.wanji.opt.service.induce.InduceHistService;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.util.*;
/**
* <p>
* 诱导屏-下发历史信息
* </p>
*
* @author guoliang.dong
* @since 2024-11-22
*/
@Api(value = "InduceHistController", description = "诱导屏-下发历史信息")
@RestController
@RequestMapping("/induceHist")
@Slf4j
public class InduceHistController {
@Resource
private InduceHistService induceHistService;
/**
* 获取所有诱导下发记录
*
* @return JsonViewObject
*/
@ApiOperation(value = "获取所有诱导下发记录", notes = "获取所有诱导下发记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@GetMapping(value = "/byAll", produces = MediaType.APPLICATION_JSON)
JsonViewObject getAll(){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try{
List<InduceHist> list=this.induceHistService.list();
jsonView.success(list);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
/**
* 根据条件查询记录
*
* @param induceHist 查询条件
* @return JsonViewObject
*/
@ApiOperation(value = "根据条件查询记录", notes = "根据条件查询记录", response = JsonViewObject.class, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/byCondition", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
JsonViewObject getByWhere(@ApiParam(value = "查询条件", required = true) @RequestBody @Validated({ValidationGroups.Query.class}) InduceHist induceHist){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
String jsonStr = JSON.toJSONString(induceHist);
try {
//参数校验过程中修改,兼容实现,restful入参不用map,便于进行参数逐个校验
// Map params = JSONObject.parseObject(JSONObject.toJSONString(InduceHist), Map.class);
Map<String, Object> params = new HashMap<>();
JSONObject.parseObject(JSONObject.toJSONString(induceHist), Map.class).forEach((k,v) -> params.put(StringUtils.camelToCapital(k.toString()).toLowerCase(), v));
List<InduceHist> list = this.induceHistService.listByMap(params);
List<InduceHist> result = new ArrayList<>();
if (!CollectionUtils.isEmpty(list)) {
for (InduceHist hist : list) {
Date createTime = hist.getCreateTime();
Date date = DateUtil.addDay(DateUtil.StringToDate(new Date()), -30);
if (createTime.before(date)) {
continue;
}
result.add(hist);
}
}
jsonView.success(result);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getByWhere error,jsonStr:{}", this.getClass().getSimpleName(), jsonStr, e);
}
return jsonView;
}
/**
* 根据id查询记录
*
* @param id
* @return JsonViewObject
*/
@ApiOperation(value = "根据id查询记录", notes = "根据id查询记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON)
JsonViewObject getById(@ApiParam(value = "记录的id", required = true, example = "1") @PathVariable("id") @NotBlank(message = "查询id不能为空") String id){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try {
InduceHist InduceHist = this.induceHistService.getById(id);
jsonView.success(InduceHist);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("AbstractRestServerImpl getById error, id:{}", id, e);
}
return jsonView;
}
/**
* 根据id删除
*
* @param ids
* @return JsonViewObject
*/
@ApiOperation(value = "根据多个id删除记录", notes = "根据多个id删除记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@ApiImplicitParams(value = {
@ApiImplicitParam(paramType = "query", name = "ids", dataType = "String", required = true, value = "多个记录id,用逗号分隔", example = "1,2")
})
@GetMapping(value = "/deleting", produces = MediaType.APPLICATION_JSON)
JsonViewObject deleteByIds(@QueryParam("ids") @NotBlank(message = "删除ids不能为空") String ids){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
String[] idArray = ids.split(",");
try {
if (idArray.length > 0) {
for (String id : idArray) {
jsonView = this.induceHistService.removeByIds(Arrays.asList(ids.split(",")))?jsonView.success():jsonView.fail();;
}
}
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("DELETE_FAILED_MSG"));
log.error("AbstractRestServerImpl deleteByIds error, id:{}", ids, e);
}
return jsonView;
}
/**
* 新建记录
*
* @param induceHist
* @return JsonViewObject
*/
@ApiOperation(value = "新建记录", notes = "新建记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/creating", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
JsonViewObject save(@ApiParam(value = "记录的JSON格式字符串", required = true) @RequestBody @Validated({ValidationGroups.Create.class}) InduceHist induceHist){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try {
if (induceHist != null) {
jsonView = this.induceHistService.saveOrUpdate(induceHist)?jsonView.success():jsonView.fail();
}
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("SAVE_FAILED_MSG"));
log.error("AbstractRestServerImpl save error, jsonStr:{}", JSON.toJSONString(induceHist), e);
}
return jsonView;
}
/**
* 修改记录
*
* @param induceHist
* @return
*/
@ApiOperation(value = "修改记录", notes = "修改记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/updating", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
JsonViewObject update(@ApiParam(value = "记录的JSON格式字符串", required = true) @RequestBody @Validated({ValidationGroups.Update.class}) InduceHist induceHist){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try {
if (induceHist != null) {
jsonView = this.induceHistService.saveOrUpdate(induceHist)?jsonView.success():jsonView.fail();
}
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("UPDATE_FAILED_MSG"));
log.error("AbstractRestServerImpl update error, jsonStr:{}", JSON.toJSONString(induceHist), e);
}
return jsonView;
}
}
package net.wanji.opt.controller.induce;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.collect.Maps;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.framework.rest.Page;
import net.wanji.common.framework.rest.ValidationGroups;
import net.wanji.common.utils.tool.StringUtils;
import net.wanji.opt.entity.InduceTemplate;
import net.wanji.opt.service.induce.InduceTemplateService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.util.*;
/**
* <p>
* 诱导屏-发布模板
* </p>
*
* @author guoliang.dong
* @since 2024-11-22
*/
@Api(value = "InduceTemplateController", description = "诱导屏-发布模板")
@RestController
@RequestMapping("/induceTemplate")
@Slf4j
public class InduceTemplateController {
@Resource
private InduceTemplateService induceTemplateService;
/**
* 获取所有记录
*
* @return JsonViewObject
*/
@ApiOperation(value = "获取所有记录", notes = "获取所有记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@GetMapping(value = "/byAll", produces = MediaType.APPLICATION_JSON)
JsonViewObject getAll(){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try {
List<InduceTemplate> list = this.induceTemplateService.list();
jsonView.success(list);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
/**
* 根据条件查询记录
*
* @param induceTemplate 查询条件
* @return JsonViewObject
*/
@ApiOperation(value = "根据条件查询记录", notes = "根据条件查询记录", response = JsonViewObject.class, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/byCondition", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
JsonViewObject getByWhere(@ApiParam(value = "查询条件", required = true) @RequestBody @Validated({ValidationGroups.Query.class}) InduceTemplate induceTemplate){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
String jsonStr = JSON.toJSONString(induceTemplate);
try {
//参数校验过程中修改,兼容实现,restful入参不用map,便于进行参数逐个校验
// Map params = JSONObject.parseObject(JSONObject.toJSONString(InduceTemplate), Map.class);
Map<String, Object> params = new HashMap<>();
JSONObject.parseObject(JSONObject.toJSONString(induceTemplate), Map.class).forEach((k,v) -> params.put(StringUtils.camelToCapital(k.toString()).toLowerCase(), v));
List list = this.induceTemplateService.listByMap(params);
jsonView.success(list);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getByWhere error,jsonStr:{}", this.getClass().getSimpleName(), jsonStr, e);
}
return jsonView;
}
/**
* 根据id查询记录
*
* @param id
* @return JsonViewObject
*/
@ApiOperation(value = "根据id查询记录", notes = "根据id查询记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON)
JsonViewObject getById(@ApiParam(value = "记录的id", required = true, example = "1") @PathVariable("id") @NotBlank(message = "查询id不能为空") String id){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try {
InduceTemplate InduceTemplate = this.induceTemplateService.getById(id);
jsonView.success(InduceTemplate);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("AbstractRestServerImpl getById error, id:{}", id, e);
}
return jsonView;
}
/**
* 根据id删除
*
* @param ids
* @return JsonViewObject
*/
@ApiOperation(value = "根据多个id删除记录", notes = "根据多个id删除记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@ApiImplicitParams(value = {
@ApiImplicitParam(paramType = "query", name = "ids", dataType = "String", required = true, value = "多个记录id,用逗号分隔", example = "1,2")
})
@GetMapping(value = "/deleting", produces = MediaType.APPLICATION_JSON)
JsonViewObject deleteByIds(@QueryParam("ids") @NotBlank(message = "删除ids不能为空") String ids){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
String[] idArray = ids.split(",");
try {
if (idArray.length > 0) {
for (String id : idArray) {
jsonView = this.induceTemplateService.removeByIds(Arrays.asList(ids.split(",")))?jsonView.success():jsonView.fail();
}
}
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("DELETE_FAILED_MSG"));
log.error("AbstractRestServerImpl deleteByIds error, id:{}", ids, e);
}
return jsonView;
}
/**
* 新建记录
*
* @param induceTemplate
* @return JsonViewObject
*/
@ApiOperation(value = "新建记录", notes = "新建记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/creating", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
JsonViewObject save(@ApiParam(value = "记录的JSON格式字符串", required = true) @RequestBody @Validated({ValidationGroups.Create.class}) InduceTemplate induceTemplate){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try {
if (induceTemplate != null) {
jsonView = this.induceTemplateService.saveOrUpdate(induceTemplate)?jsonView.success():jsonView.fail();
}
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("SAVE_FAILED_MSG"));
log.error("AbstractRestServerImpl save error, jsonStr:{}", JSON.toJSONString(induceTemplate), e);
}
return jsonView;
}
/**
* 修改记录
*
* @param induceTemplate
* @return
*/
@ApiOperation(value = "修改记录", notes = "修改记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/updating", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
JsonViewObject update(@ApiParam(value = "记录的JSON格式字符串", required = true) @RequestBody @Validated({ValidationGroups.Update.class}) InduceTemplate induceTemplate) {
JsonViewObject jsonView = JsonViewObject.newInstance();
long start = System.currentTimeMillis();
try {
if (induceTemplate != null) {
//更新默认模板
if (Objects.nonNull(induceTemplate.getEquipCode())) {
LambdaQueryWrapper<InduceTemplate> induceTemplateQueryWrapper = new LambdaQueryWrapper<>();
induceTemplateQueryWrapper.eq(InduceTemplate::getEquipCode, induceTemplate.getEquipCode());
induceTemplateQueryWrapper.eq(InduceTemplate::getDefaultTemplate, 1);//筛选默认模板进行自动发送,目前屏幕轮播参数无效
List<InduceTemplate> induceTemplateList = this.induceTemplateService.list(induceTemplateQueryWrapper);
induceTemplateList.stream().forEach(o -> {
if (!o.getId().equals(induceTemplate.getId())) {
o.setDefaultTemplate(0);
}
});
try {
this.induceTemplateService.saveOrUpdateBatch(induceTemplateList);
} catch (Exception ex) {
log.error("default template batch update error, jsonStr:{}", JSON.toJSONString(induceTemplate), ex);
}
}
induceTemplate.setDefaultTemplate(1);//设为默认模板
jsonView = this.induceTemplateService.saveOrUpdate(induceTemplate) ? jsonView.success() : jsonView.fail();
}
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("UPDATE_FAILED_MSG"));
log.error("AbstractRestServerImpl update error, jsonStr:{}", JSON.toJSONString(induceTemplate), e);
}
return jsonView;
}
}
package net.wanji.opt.controller.signalcontrol;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.databus.dto.CrossIdDateTimeDTO;
import net.wanji.databus.vo.ControlCommandVO;
import net.wanji.databus.vo.LightsStatusVO2;
import net.wanji.databus.vo.SchemeOptSendVO;
import net.wanji.opt.service.signalcontrol.FeignProxyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.ws.rs.core.MediaType;
/**
* @author duanruiming
* @date 2023/03/01 20:44
*/
@Api(value = "SignalCommandOptController", description = "信号机控制", tags = "信号机控制")
@RequestMapping("/signalControl")
@RestController
public class SignalCommandOptController {
@Autowired
private FeignProxyService feignProxyService;
@AspectLog(description = "诊断优化手动优化方案下发", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "手动优化方案下发", notes = "优化方案下发", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/schemeOptSend",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class)})
public JsonViewObject schemeOptSend(@RequestBody @Validated SchemeOptSendVO schemeOptSendVO) throws Exception {
JsonViewObject jsonViewObject = feignProxyService.schemeOptSend(schemeOptSendVO);
return jsonViewObject;
}
@AspectLog(description = "诊断优化手动优化方案恢复", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "手动优化方案恢复", notes = "优化方案恢复", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/schemeOptRestore",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class)})
public JsonViewObject schemeOptRestore(@RequestBody @NotBlank String crossId) throws Exception {
JsonViewObject jsonViewObject = feignProxyService.schemeOptRestore(crossId);
return jsonViewObject;
}
@AspectLog(description = "全红控制", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "全红控制", notes = "全红控制", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/allRedControl",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class)})
public JsonViewObject allRedControl(@RequestBody ControlCommandVO vo) throws Exception {
//JsonViewObject jsonViewObject = feignProxyService.allRedControl(vo);
JsonViewObject jsonViewObject = JsonViewObject.newInstance().success();
return jsonViewObject;
}
@AspectLog(description = "黄闪控制", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "黄闪控制", notes = "黄闪控制", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/yellowLightControl",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class)})
public JsonViewObject yellowLightControl(@RequestBody ControlCommandVO vo) throws Exception {
//JsonViewObject jsonViewObject = feignProxyService.yellowLightControl(vo);
JsonViewObject jsonViewObject = JsonViewObject.newInstance().success();
return jsonViewObject;
}
@AspectLog(description = "步进控制", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "步进控制", notes = "步进控制", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/stepControl",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class)})
public JsonViewObject stepControl(String crossId, Integer command, Integer stepNum) throws Exception {
//JsonViewObject jsonViewObject = feignProxyService.stepControl(crossId, command, stepNum);
JsonViewObject jsonViewObject = JsonViewObject.newInstance().success();
return jsonViewObject;
}
@AspectLog(description = "相位锁定", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "相位锁定", notes = "相位锁定", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/lockControl",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class)})
public JsonViewObject lockControl(@RequestBody ControlCommandVO vo) throws Exception {
//JsonViewObject jsonViewObject = feignProxyService.lockControl(vo);
JsonViewObject jsonViewObject = JsonViewObject.newInstance().success();
return jsonViewObject;
}
@AspectLog(description = "恢复时间表", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "恢复时间表", notes = "恢复时间表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/recoverSchedule",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class)})
public JsonViewObject recoverSchedule(@RequestBody CrossIdBO crossIdBO) throws Exception {
//JsonViewObject jsonViewObject = feignProxyService.recoverSchedule(crossIdBO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance().success();
return jsonViewObject;
}
@AspectLog(description = "查询某一时间灯态历史数据", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/lightStatusOneHist", produces = MediaType.APPLICATION_JSON)
@ApiOperation(value = "查询某一时间灯态历史数据", notes = "查询某一时间灯态历史数据", response = LightsStatusVO2.class,
produces = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = LightsStatusVO2.class)
})
public JsonViewObject lightStatusOneHist(@RequestBody @Valid CrossIdDateTimeDTO crossIdDateTimeDTO) throws Exception {
return feignProxyService.lightStatusOneHist(crossIdDateTimeDTO);
}
}
package net.wanji.opt.controller.signalopt;
import io.swagger.annotations.*;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.databus.po.CrossDataRealtimePO;
import net.wanji.databus.po.CrossDirDataRealtimePO;
import net.wanji.databus.po.CrossDirStatusDataPO;
import net.wanji.databus.po.TBaseCrossInfo;
import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO;
import net.wanji.opt.entity.GreenwaveHist;
import net.wanji.opt.po.trend.HoloEventInfoPO;
import net.wanji.opt.service.CrossIndexService;
import net.wanji.opt.vo.AIOptResultVO;
import net.wanji.opt.vo.CrossEventListPO;
import net.wanji.opt.vo.CrossOptResult;
import net.wanji.opt.vo.CrossStatusCountVO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author duanruiming
* @date 2024/11/25 19:10
*/
@Api(value = "CrossIndexController", description = "路口指标控制器")
@RequestMapping("/crossIndex")
@RestController
public class CrossIndexController {
@Resource
private CrossIndexService crossIndexService;
@ApiOperation(value = "路口信息查询", notes = "路口信息查询", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/crossInfoList")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = TBaseCrossInfo.class),
})
public JsonViewObject crossInfoList(@RequestParam(defaultValue = "") Integer areaId) {
List<TBaseCrossInfo> baseCrossInfoPOS = crossIndexService.crossInfoList();
return JsonViewObject.newInstance().success(baseCrossInfoPOS);
}
@ApiOperation(value = "路口方向指标", notes = "路口方向指标", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossDirIndex",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AddOrUpdateSceneDTO.class),
})
public JsonViewObject crossDirIndex(@RequestBody CrossIdBO crossIdBO) {
Map<Integer, CrossDirDataRealtimePO> result = crossIndexService.crossDirIndex(crossIdBO);
return JsonViewObject.newInstance().success(result);
}
@ApiOperation(value = "路口指标", notes = "路口指标", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossIndex",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AddOrUpdateSceneDTO.class),
})
public JsonViewObject crossIndex(@RequestBody CrossIdBO crossIdBO) {
CrossDataRealtimePO crossDataRealtimePO = crossIndexService.crossIndex(crossIdBO);
return JsonViewObject.newInstance().success(crossDataRealtimePO);
}
@ApiOperation(value = "方案优化曲线", notes = "优化监测-方案优化曲线", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossOptResultList",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AddOrUpdateSceneDTO.class),
})
public JsonViewObject crossOptResultList(@RequestBody CrossIdBO crossIdBO) {
List<CrossOptResult> results = null;
try {
results = crossIndexService.crossOptResultList(crossIdBO);
} catch (Exception e) {
JsonViewObject.newInstance().fail("方案优化曲线查询异常");
}
return JsonViewObject.newInstance().success(results);
}
@ApiOperation(value = "AI路口", notes = "优化监测-AI路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/crossAIList")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AIOptResultVO.class),
})
public JsonViewObject crossAIList() {
List<AIOptResultVO> results = null;
try {
results = crossIndexService.crossAIList();
} catch (Exception e) {
JsonViewObject.newInstance().fail("优化监测-AI路口查询异常");
}
return JsonViewObject.newInstance().success(results);
}
@ApiOperation(value = "优化监测-问题诊断", notes = "优化监测-问题诊断", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/crossStatusCount")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossStatusCountVO.class),
})
public JsonViewObject crossStatusCount(String crossId) {
List<CrossStatusCountVO> results = new ArrayList<>();
try {
results = crossIndexService.crossStatusCount(crossId);
} catch (Exception e) {
JsonViewObject.newInstance().fail("优化监测-问题诊断");
}
return JsonViewObject.newInstance().success(results);
}
@ApiOperation(value = "交通体检-路口监测-事件方向转向", notes = "交通体检-路口监测-事件方向转向", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/crossEventDirTurn")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = HoloEventInfoPO.class),
})
public JsonViewObject crossEventDirTurn(String crossId) {
HoloEventInfoPO result = new HoloEventInfoPO();
try {
result = crossIndexService.crossEventDirTurn(crossId);
} catch (Exception e) {
JsonViewObject.newInstance().fail("优化监测-问题诊断");
}
return JsonViewObject.newInstance().success(result);
}
@ApiOperation(value = "查询各个方向交通状态变化趋势", notes = "查询各个方向交通状态变化趋势", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossDirStatusData")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AddOrUpdateSceneDTO.class),
})
public JsonViewObject crossDirStatusData(@RequestBody CrossIdBO crossIdBO) {
CrossDirStatusDataPO result = new CrossDirStatusDataPO();
try {
result = crossIndexService.selectByCrossIdAndHour(crossIdBO.getCrossId(),2);
} catch (Exception e) {
JsonViewObject.newInstance().fail("查询各个方向交通状态变化趋势");
}
return JsonViewObject.newInstance().success(result);
}
@GetMapping("/selectCrossEventList")
@ApiOperation(httpMethod="GET",value="路口监测左下角路口事件列表", notes="")
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = GreenwaveHist.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject selectCrossEventList() {
JsonViewObject jsonView = JsonViewObject.newInstance();
try {
List<CrossEventListPO> list = crossIndexService.selectCrossEventList();
jsonView.success(list);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
}
return jsonView;
}
}
package net.wanji.opt.controller.signalopt;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.service.signalopt.GreenBeltInfoService;
import net.wanji.opt.vo.GreenBeltCrossDetailVO;
import net.wanji.opt.vo.GreenBeltFlowStopTimeVO;
import net.wanji.opt.vo.GreenBeltKeyCrossFlowTimeVO;
import net.wanji.opt.vo.GreenBeltSpeedWidthVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.ws.rs.core.MediaType;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* @author duanruiming
* @date 2024/11/28 16:03
*/
@Api(value = "GreenBeltController", description = "绿波干线")
@RequestMapping("/greenBelt")
@RestController
public class GreenBeltController {
@Resource
private GreenBeltInfoService greenBeltInfoService;
@ApiOperation(value = "绿波协调方向路口流量停车次数", notes = "绿波协调方向路口流量停车次数", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/greenBeltCrossDetailHist")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenBeltFlowStopTimeVO.class),
})
public JsonViewObject greenBeltCrossDetailHist(Integer greenId) {
List<GreenBeltFlowStopTimeVO> greenBeltFlowStopTimeVOS = Collections.EMPTY_LIST;
try {
greenBeltFlowStopTimeVOS = greenBeltInfoService.greenBeltCrossDetailHist(greenId);
} catch (Exception e) {
JsonViewObject.newInstance().fail("绿波协调方向路口流量停车次数异常");
}
return JsonViewObject.newInstance().success(greenBeltFlowStopTimeVOS);
}
@ApiOperation(value = "绿波带宽曲线", notes = "优化监测-绿波带宽曲线", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/greenBeltSpeedWidth")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenBeltSpeedWidthVO.class),
})
public JsonViewObject greenBeltSpeedWidth(Integer greenId) {
List<GreenBeltSpeedWidthVO> list = Collections.EMPTY_LIST;
try {
list = greenBeltInfoService.greenBeltSpeedWidth(greenId);
} catch (Exception e) {
JsonViewObject.newInstance().fail("绿波带宽曲线异常");
}
return JsonViewObject.newInstance().success(list);
}
@ApiOperation(value = "绿波关键路口流量绿信比", notes = "优化监测-绿波关键路口流量绿信比", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/greenBeltKeyCrossFlowTime")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenBeltKeyCrossFlowTimeVO.class),
})
public JsonViewObject greenBeltKeyCrossFlowTime(Integer greenId) {
List<GreenBeltKeyCrossFlowTimeVO> list = Collections.EMPTY_LIST;
try {
list = greenBeltInfoService.greenBeltKeyCrossFlowTime(greenId);
} catch (Exception e) {
JsonViewObject.newInstance().fail("绿波带宽曲线异常");
}
return JsonViewObject.newInstance().success(list);
}
@ApiOperation(value = "干线详情", notes = "优化监测-干线详情", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/greenBeltCrossDetailList")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenBeltKeyCrossFlowTimeVO.class),
})
public JsonViewObject greenBeltCrossDetailList(Integer greenId) {
GreenBeltCrossDetailVO greenBeltCrossDetailVO = new GreenBeltCrossDetailVO();
try {
greenBeltCrossDetailVO = greenBeltInfoService.greenBeltCrossDetailList(greenId);
} catch (Exception e) {
JsonViewObject.newInstance().fail("优化监测-干线详情");
}
return JsonViewObject.newInstance().success(greenBeltCrossDetailVO);
}
}
package net.wanji.opt.controller.strategy;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.dto.IntegerIdsDTO;
import net.wanji.opt.dto.strategy.AddOrUpdateIdeaDTO;
import net.wanji.opt.dto.strategy.QueryIdeaDTO;
import net.wanji.opt.po.strategy.IdeaPO;
import net.wanji.opt.service.strategy.IdeaService;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.ws.rs.core.MediaType;
/**
* 策略管理-方法库
*
* @author Kent HAN
* @date 2023/2/27 9:25
*/
@Api(value = "IdeaController", description = "策略管理-方法库")
@RequestMapping("/idea")
@RestController
public class IdeaController {
private final IdeaService ideaService;
public IdeaController(IdeaService ideaService) {
this.ideaService = ideaService;
}
@ApiOperation(value = "新增/修改方法", notes = "新增/修改方法", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/addOrUpdateIdea",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject addOrUpdateIdea(@RequestBody @Valid AddOrUpdateIdeaDTO addOrUpdateIdeaDTO) {
try {
ideaService.addOrUpdateIdea(addOrUpdateIdeaDTO);
} catch (DuplicateKeyException e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
throw new DuplicateKeyException("方法编号或方法名称不可重复");
}
return JsonViewObject.newInstance().success();
}
@ApiOperation(value = "删除方法", notes = "删除方法", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/deleteIdea",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject deleteIdea(@RequestBody IntegerIdsDTO integerIdsDTO) {
ideaService.deleteIdea(integerIdsDTO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success();
}
@ApiOperation(value = "查询方法", notes = "查询方法", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/queryIdea",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = IdeaPO.class),
})
public JsonViewObject queryIdea(@RequestBody QueryIdeaDTO queryIdeaDTO) {
PageInfo<IdeaPO> ideaPOList = ideaService.queryIdea(queryIdeaDTO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(ideaPOList);
}
}
package net.wanji.opt.controller.strategy;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.common.exception.UniqueException;
import net.wanji.opt.dto.IntegerIdsDTO;
import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO;
import net.wanji.opt.dto.strategy.QuerySceneDTO;
import net.wanji.opt.service.strategy.SceneService;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.ws.rs.core.MediaType;
/**
* 策略管理-场景库
*
* @author Kent HAN
* @date 2023/2/27 9:25
*/
@Api(value = "SceneController", description = "策略管理-场景库")
@RequestMapping("/scene")
@RestController
public class SceneController {
private final SceneService sceneService;
public SceneController(SceneService sceneService) {
this.sceneService = sceneService;
}
@ApiOperation(value = "新增/修改场景", notes = "新增/修改场景", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/addOrUpdateScene",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject addOrUpdateScene(@RequestBody @Valid AddOrUpdateSceneDTO addOrUpdateSceneDTO) {
try {
sceneService.addOrUpdateScene(addOrUpdateSceneDTO);
} catch (DuplicateKeyException e) {
throw new DuplicateKeyException("场景编号或场景名称不可重复");
} catch (UniqueException e) {
throw new UniqueException("应用策略或优化方法或优先级不可重复");
}
return JsonViewObject.newInstance().success();
}
@ApiOperation(value = "删除场景", notes = "删除场景", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/deleteScene",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject deleteScene(@RequestBody IntegerIdsDTO integerIdsDTO) {
sceneService.deleteScene(integerIdsDTO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success();
}
@ApiOperation(value = "查询场景", notes = "查询场景", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/queryScene",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AddOrUpdateSceneDTO.class),
})
public JsonViewObject queryScene(@RequestBody QuerySceneDTO querySceneDTO) {
PageInfo<AddOrUpdateSceneDTO> sceneList = sceneService.queryScene(querySceneDTO);
return JsonViewObject.newInstance().success(sceneList);
}
}
package net.wanji.opt.controller.strategy;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.dto.IntegerIdsDTO;
import net.wanji.opt.dto.strategy.AddOrUpdateStrategyDTO;
import net.wanji.opt.dto.strategy.QueryStrategyDTO;
import net.wanji.opt.po.strategy.StrategyPO;
import net.wanji.opt.service.strategy.StrategyService;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.ws.rs.core.MediaType;
/**
* 策略管理-策略库
*
* @author Kent HAN
* @date 2023/2/27 9:25
*/
@Api(value = "StrategyController", description = "策略管理-策略库")
@RequestMapping("/strategy")
@RestController
public class StrategyController {
private final StrategyService strategyService;
public StrategyController(StrategyService strategyService) {
this.strategyService = strategyService;
}
@ApiOperation(value = "新增/修改策略", notes = "新增/修改策略", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/addOrUpdateStrategy",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject addOrUpdateStrategy(@RequestBody @Valid AddOrUpdateStrategyDTO addOrUpdateStrategyDTO) {
try {
strategyService.addOrUpdateStrategy(addOrUpdateStrategyDTO);
} catch (DuplicateKeyException e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
throw new DuplicateKeyException("策略编号或策略名称不可重复");
}
return JsonViewObject.newInstance().success();
}
@ApiOperation(value = "删除策略", notes = "删除策略", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/deleteStrategy",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject deleteStrategy(@RequestBody IntegerIdsDTO integerIdsDTO) {
strategyService.deleteStrategy(integerIdsDTO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success();
}
@ApiOperation(value = "查询策略", notes = "查询策略", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/queryStrategy",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = StrategyPO.class),
})
public JsonViewObject queryStrategy(@RequestBody QueryStrategyDTO queryStrategyDTO) {
PageInfo<StrategyPO> strategyPOList = strategyService.queryStrategy(queryStrategyDTO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(strategyPOList);
}
}
package net.wanji.opt.controllerv2;
import cn.hutool.core.date.DateUtil;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.StringUtils;
import net.wanji.opt.servicev2.CrossService;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity;
import net.wanji.opt.synthesis.pojo.vo.CrossOrGreenWaveTypeEntity;
import net.wanji.opt.vo2.CrossBaseInfoVO;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
import net.wanji.opt.vo2.CrossStatusDistributionVO;
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 javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @author zhengyifan
* @date 2025/3/15
*/
@Api(value = "CrossController", description = "监测详情-路口事件详情")
@RequestMapping(value = "/cross")
@RestController
@Slf4j
public class CrossController {
@Resource
private CrossService crossService;
@GetMapping("/getCrossStatusDistribution")
@ApiOperation(httpMethod="GET",value="路口状态分布", notes="路口状态分布")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossID", value = "路口ID", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "groupType", value = "时间粒度 0--5分钟 1--15分钟 2--30分钟 3--60分钟", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "date", value = "日期 格式:yyyy-MM-dd", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "objectType", value = "范围 1:方向级指标 2:转向级指标 3:车道级指标 4:路口级指标", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "condition", value = "筛选条件", dataType = "String", paramType = "query"),
})
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossStatusDistributionVO.class),
})
public JsonViewObject getCrossStatusDistribution(String crossID, String date, String groupType, Integer objectType, String condition) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
if (StringUtils.isBlank(date)) {
date = DateUtil.now().substring(0, 10);
}
Map<String, Object> result = crossService.getCrossStatusDistribution(crossID, date, groupType, objectType, condition);
List<CrossStatusDisOptTimeEntity> optTimes = crossService.getOptTimeList(crossID);
List<CrossOrGreenWaveTypeEntity> typeList = crossService.getCrossTypeList(crossID, date);
result.put("optTimesList", optTimes);
result.put("typeList", typeList);
return jsonViewObject.success(result);
} catch (Exception e) {
log.error("监测详情-路口事件详情-路口状态分布: ", e);
return jsonViewObject.success();
}
}
@ApiOperation(value = "路口实时告警", notes = "路口实时告警", response = JsonViewObject.class, httpMethod="GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossID", value = "路口ID", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "time", value = "时间 格式:yyyy-MM-dd HH:ii:ss", dataType = "String", paramType = "query"),
})
@GetMapping(value = "/getCrossRealTimeAlarm")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossRealTimeAlarmVO.class),
})
public JsonViewObject getCrossRealTimeAlarm(String crossID, @RequestParam(defaultValue = "") String time) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
List<CrossRealTimeAlarmEntity> result;
try {
result = crossService.getCrossRealTimeAlarm(crossID, time);
} catch (Exception e) {
log.error("监测详情-路口事件详情-路口实时告警: ", e);
return jsonViewObject.fail("路口实时告警查询失败");
}
return jsonViewObject.success(result);
}
@ApiOperation(value = "路口基础信息", notes = "路口基础信息", response = JsonViewObject.class, httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossID", value = "路口ID", required = true, dataType = "String", paramType = "query"),
})
@GetMapping(value = "/getCrossBaseInfo")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossBaseInfoVO.class)
})
public JsonViewObject getCrossBaseInfo(String crossID) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
CrossBaseInfoVO result;
try {
result = crossService.getCrossBaseInfos(crossID);
} catch (Exception e) {
log.error("监测详情-路口事件详情-路口基础信息: ", e);
return jsonViewObject.fail("路口基础信息查询失败");
}
return jsonViewObject.success(result);
}
}
package net.wanji.opt.controllerv2;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.po.base.EventStatisticPo;
import net.wanji.opt.servicev2.TrunkLineService;
import net.wanji.opt.servicev2.TrunkLineStatusDisService;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
import net.wanji.opt.vo2.TrunkLineCrossProblemVO;
import net.wanji.opt.vo2.TrunkLineProblemDescribeVO;
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 javax.annotation.Resource;
import java.util.List;
/**
* @author zhengyifan
* @date 2025/3/14
*/
@Api(value = "TrunkLineController", description = "监测详情-干线")
@RequestMapping("/trunkLine")
@RestController
@Slf4j
public class TrunkLineController {
@Resource
private TrunkLineStatusDisService trunkLineStatusDisService;
@Resource
private TrunkLineService trunkLineService;
@GetMapping("/statusDisInfoList")
@ApiOperation(httpMethod="GET",value="干线数据", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "greenID", value = "干线ID", required = true, dataType = "String",defaultValue = ""),
@ApiImplicitParam(name = "date", value = "日期", required = true, dataType = "String",defaultValue = ""),
@ApiImplicitParam(name = "timeGranule", value = "时间颗粒度 支持参数:5 15 30 60", required = true, dataType = "String",defaultValue = "5"),
})
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = EventStatisticPo.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject statusDisInfoList(String greenID, String date, String timeGranule) {
try {
JsonViewObject object = JsonViewObject.newInstance();
JSONObject list = trunkLineStatusDisService.trunkLineStatusDisInfoList(greenID, date, timeGranule);
return object.success(list);
} catch (Exception e) {
log.error("监测详情-干线事件详情-干线交通状态分布趋势: ", e);
return JsonViewObject.newInstance().fail("请求失败");
}
}
@GetMapping("/problemDescribe")
@ApiOperation(httpMethod="GET",value="干线问题描述", notes="干线问题描述", response = JsonViewObject.class)
@ApiImplicitParams({
@ApiImplicitParam(name = "greenID", value = "干线ID", required = true, dataType = "String",defaultValue = ""),
@ApiImplicitParam(name = "time", value = "日期", required = false, dataType = "String",defaultValue = ""),
})
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = TrunkLineProblemDescribeVO.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject problemDescribe(String greenID , String time ) {
try {
JsonViewObject object = JsonViewObject.newInstance();
List<TrunkLineProblemDescribeEntity> list = trunkLineService.getTrunkLineProblemDescribe(greenID,time);
return object.success(list);
} catch (Exception e) {
log.error("监测详情-干线详情-干线问题描述: ", e);
return JsonViewObject.newInstance().fail("干线问题描述查询失败");
}
}
@ApiOperation(value = "干线实时告警", notes = "干线实时告警", response = JsonViewObject.class, httpMethod="GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "greenID", value = "绿波ID", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "time", value = "时间 格式:yyyy-MM-dd HH:ii:ss",required = true, dataType = "String", paramType = "query"),
})
@GetMapping(value = "/getTrunkLineRealTimeAlarm")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossRealTimeAlarmVO.class),
})
public JsonViewObject getTrunkLineRealTimeAlarm(Integer greenID, String time) {
try {
JsonViewObject object = JsonViewObject.newInstance();
List<CrossRealTimeAlarmEntity> list = trunkLineService.getTrunkLineRealTimeAlarm(greenID,time);
return object.success(list);
} catch (Exception e) {
log.error("获取干线实时告警失败: ", e);
return JsonViewObject.newInstance().fail("获取干线实时告警失败");
}
}
@ApiOperation(value = "干线路口状态", notes = "干线路口状态", response = JsonViewObject.class, httpMethod="GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "greenID", value = "绿波ID", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "time", value = "时间 格式:yyyy-MM-dd HH:ii:ss", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "type", value = "类型,0查询当前时间,1查询历史时间",required = true, dataType = "Integer", paramType = "query"),
})
@GetMapping(value = "/getTrunkLineCrossProblem")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = TrunkLineCrossProblemVO.class),
})
public JsonViewObject getTrunkLineCrossProblem(Integer greenID, String time ,Integer type) {
try {
JsonViewObject object = JsonViewObject.newInstance();
List<TrunkLineCrossProblemEntity> list = trunkLineService.getTrunkLineCrossProblem(greenID,time,type);
return object.success(list);
} catch (Exception e) {
log.error("获取干线路口状态失败: ", e);
return JsonViewObject.newInstance().fail("获取干线路口状态失败");
}
}
}
package net.wanji.opt.controllerv2.comprehensivequery;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.entity.comprehensivequery.CrossLaneDataHistPoExtendName;
import net.wanji.opt.entity.comprehensivequery.GreenTreeEntity;
import net.wanji.opt.servicev2.comprehensivequery.ComprehensiveQueryService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.List;
/**
* @author huangwm
* @date 2025/03/06 18:33
*/
@Api(value = "ComprehensiveQueryController", description = "综合查询", tags = "综合查询")
@RequestMapping("/ComprehensiveQuery")
@RestController
@Slf4j
public class ComprehensiveQueryController {
@Resource
private ComprehensiveQueryService comprehensiveQueryService;
@ApiOperation(value = "获取干线与路口树", notes = "获取干线与路口树", httpMethod="GET", response =JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/getGreenAndCross")
@ApiImplicitParams({
})
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = String.class),
})
public JsonViewObject getGreenAndCross() {
List<GreenTreeEntity> list = new ArrayList<>();
try {
list = comprehensiveQueryService.getGreenAndCross();
} catch (Exception e) {
log.error("综合查询-获取干线与路口树-查询失败:{}", e);
JsonViewObject.newInstance().success(list);
}
return JsonViewObject.newInstance().success(list);
}
@ApiOperation(value = "获取综合查询数据", notes = "获取综合查询数据", httpMethod="GET", response =JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/getComprehensiveQuery")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口id", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "startTime", value = "日期 格式:yyyy-MM-dd h:i:s", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "endTime", value = "日期 格式:yyyy-MM-dd h:i:s", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "objectType", value = "范围 0:路口级指标 1:方向级指标 2:转向级指标", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "groupType", value = "时间粒度 0--5分钟 1--15分钟 2--30分钟 3--60分钟", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "pageNum", value = "分页页码", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "pageSize", value = "分页数据条数", required = true, dataType = "Integer", paramType = "query"),
})
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = String.class),
})
public JsonViewObject getComprehensiveQuery(String crossId , String startTime ,String endTime ,String objectType ,String groupType,Integer pageNum,Integer pageSize) {
try {
JSONObject list = comprehensiveQueryService.getCrossStatusDistribution(crossId, startTime , endTime , objectType , groupType,pageNum,pageSize);
return JsonViewObject.newInstance().success(list);
} catch (Exception e) {
log.error("综合查询-综合查询数据-查询失败:{}", e);
return JsonViewObject.newInstance().success("");
}
}
}
package net.wanji.opt.controllerv2.evaluation;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemOverview;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay;
import net.wanji.opt.servicev2.evaluation.EvaluationInfoService;
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.RestController;
import javax.ws.rs.core.MediaType;
import java.util.List;
import java.util.Map;
@RestController
@Slf4j
@RequestMapping("/evaluation-info")
@Api(value="EvaluationInfoController", description="方案评价信息接口", tags = "方案评价信息")
public class EvaluationInfoController {
@Autowired
EvaluationInfoService evaluationInfoService;
@ApiOperation(value = "方案评价-总结", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String"),
@ApiImplicitParam(name = "startTime", value = "分析时段开始时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "endTime", value = "分析时段截止时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "contrastStartTime", value = "对比时段开始时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "constrastEndTime", value = "对比时段截止时间", required = false, dataType = "string"),
})
@GetMapping(value = "/overview")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemOverview.class),
})
public JsonViewObject problemOverview(String crossId,String startTime, String endTime,String contrastStartTime,String constrastEndTime) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try{
Map<String,Object> resData=evaluationInfoService.getListEvaluationSummarize(crossId,startTime,endTime,contrastStartTime,constrastEndTime);
jsonViewObject.success(resData);
}catch (Exception e){
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
@ApiOperation(value = "方案评价-溢出", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "evenType", value = "事件类型", required = true, dataType = "String"),
@ApiImplicitParam(name = "currentAlgo", value = "事件类型", required = true, dataType = "String"),
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String"),
@ApiImplicitParam(name = "startTime", value = "分析时段开始时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "endTime", value = "分析时段截止时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "contrastStartTime", value = "对比时段开始时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "constrastEndTime", value = "对比时段截止时间", required = false, dataType = "string"),
})
@GetMapping(value = "/overFlow")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemOverview.class),
})
public JsonViewObject summaryEvaluation(String evenType,String currentAlgo,String crossId,String startTime, String endTime,String contrastStartTime,String constrastEndTime) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try{
Map<String,Object> resData=evaluationInfoService.summaryEvaluation( evenType, currentAlgo,crossId,startTime,endTime,contrastStartTime,constrastEndTime);
jsonViewObject.success(resData);
}catch (Exception e){
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
@ApiOperation(value = "方案评价-失衡", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "evenType", value = "事件类型", required = true, dataType = "String"),
@ApiImplicitParam(name = "currentAlgo", value = "事件类型", required = true, dataType = "String"),
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String"),
@ApiImplicitParam(name = "startTime", value = "分析时段开始时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "endTime", value = "分析时段截止时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "contrastStartTime", value = "对比时段开始时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "constrastEndTime", value = "对比时段截止时间", required = false, dataType = "string"),
})
@GetMapping(value = "/unbalance")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemOverview.class),
})
public JsonViewObject unbalanceEvaluation(String evenType,String currentAlgo,String crossId,String startTime, String endTime,String contrastStartTime,String constrastEndTime) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try{
Map<String,Object> resData=evaluationInfoService.unbalanceEvaluation(evenType,currentAlgo,crossId,startTime,endTime,contrastStartTime,constrastEndTime);
jsonViewObject.success(resData);
}catch (Exception e){
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
@ApiOperation(value = "方案评价-空放", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "evenType", value = "事件类型", required = true, dataType = "String"),
@ApiImplicitParam(name = "currentAlgo", value = "事件类型", required = true, dataType = "String"),
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String"),
@ApiImplicitParam(name = "startTime", value = "分析时段开始时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "endTime", value = "分析时段截止时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "contrastStartTime", value = "对比时段开始时间", required = false, dataType = "string"),
@ApiImplicitParam(name = "constrastEndTime", value = "对比时段截止时间", required = false, dataType = "string"),
})
@GetMapping(value = "/idle")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemOverview.class),
})
public JsonViewObject idleEvaluation(String evenType,String currentAlgo,String crossId,String startTime, String endTime,String contrastStartTime,String constrastEndTime) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try{
Map<String,Object> resData=evaluationInfoService.idleEvaluation(evenType,currentAlgo,crossId,startTime,endTime,contrastStartTime,constrastEndTime);
jsonViewObject.success(resData);
}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.evaluation;
import net.wanji.common.framework.Constants;
import net.wanji.common.framework.dubbointerface.BaseDubboInterface;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.framework.rest.AbstractRestServer;
import net.wanji.common.framework.dubbointerface.BaseDubboInterface;
import net.wanji.common.framework.exception.DubboProviderException;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.AbstractRestServer;
import net.wanji.common.framework.rest.impl.AbstractRestServerImpl;
import net.wanji.opt.servicev2.evaluation.EventInfoService;
import net.wanji.opt.entity.evaluation.EventInfo;
import net.wanji.common.framework.rest.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiImplicitParam;
import lombok.extern.slf4j.Slf4j;
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.RestController;
import org.springframework.web.bind.annotation.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 交通事件信息 接口API
* </p>
* @version 1.0
* @author wangtao
* @Date 2025-03-18
*/
@RestController
@Slf4j
@RequestMapping("/event-info")
@Api(value="EventInfoController", description="交通事件信息接口", tags = "交通事件信息")
public class EventInfoController extends AbstractRestServerImpl<EventInfo> implements AbstractRestServer<EventInfo>{
@Autowired
private EventInfoService eventInfoService;
@Override
public EventInfoService getBaseDubboInterface() {
return this.eventInfoService;
}
/**
* 获取所有交通事件信息记录
*
* @return JsonViewObject
*/
@ApiOperation(value = "交通事件信息-获取所有记录", notes = "获取所有交通事件信息记录", response = EventInfo.class, produces = MediaType.APPLICATION_JSON,hidden = true)
@GetMapping(value = "/byAll", produces = MediaType.APPLICATION_JSON)
@Override
public JsonViewObject getAll() {
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try {
List<EventInfo> list = this.getBaseDubboInterface().findAll();
jsonView.success(list);
} catch (DubboProviderException e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
@ApiOperation(value = "交通事件信息-根据开始以及结束时间查询交通事件信息", notes = "获取所有交通事件信息记录", response = EventInfo.class, produces = MediaType.APPLICATION_JSON,hidden = false)
@ApiImplicitParams({
@ApiImplicitParam(name = "startTime", value = "开始时间", required = true, dataType = "String",defaultValue = ""),
@ApiImplicitParam(name = "endTime", value = "结束时间", required = true, dataType = "String",defaultValue = ""),
@ApiImplicitParam(name = "crossId", value = "路口id", required = true, dataType = "String",defaultValue = ""),
})
@GetMapping(value = "getListByStartAndEnd")
public JsonViewObject getListByStartAndEnd(String startTime, String endTime, String crossId){
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
Map<String, Object> map = new HashMap<>();
map.put("startTime",startTime);
map.put("endTime",endTime);
map.put("crossId",crossId);
try {
List<Map<String,Object>> list = this.getBaseDubboInterface().getListByStartAndEnd(map);
jsonView.success(list);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
/**
* 根据id查询交通事件信息记录
*
* @param id
* @return JsonViewObject
*/
@ApiOperation(value = "交通事件信息-根据id查询记录", notes = "根据id查询交通事件信息记录", response = EventInfo.class, produces = MediaType.APPLICATION_JSON,hidden = true)
@GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON)
@Override
public JsonViewObject getById(@PathVariable String id) {
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try {
EventInfo entity = this.getBaseDubboInterface().findById(id);
jsonView.success(entity);
} catch (DubboProviderException e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("AbstractRestServerImpl getById error, id:{}", id, e);
}
return jsonView;
}
@ApiOperation(value = "交通事件信息-根据条件查询记录", notes = "根据条件查询记录", consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/byCondition", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@Override
public JsonViewObject getByWhere(@RequestBody EventInfo entity) {
return super.getByWhere(entity);
}
@ApiOperation(value = "交通事件信息-根据条件分页查询记录", notes = "根据条件分页查询记录", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,hidden = true)
@PostMapping(value = "/byPage", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ResponseBody
public JsonViewObject getPage(@RequestBody Page<EventInfo> page){
return super.getPage(page);
}
/**
* 根据id删除
*
* @param ids
* @return JsonViewObject
*/
@ApiOperation(value = "交通事件信息-根据多个id删除记录", notes = "根据多个id删除记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON ,hidden = true)
@ApiImplicitParams(value = {
@ApiImplicitParam(paramType = "query", name = "ids", dataType = "String", required = true, value = "多个记录id,用逗号分隔", example = "1,2")
})
@GetMapping(value = "/deleting", produces = MediaType.APPLICATION_JSON)
public JsonViewObject deleteByIds(String ids) {
return super.deleteByIds(ids);
}
/**
* 新建记录
*
* @param entity
* @return JsonViewObject
*/
@ApiOperation(value = "交通事件信息-新建记录", notes = "新建记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,hidden = true)
@PostMapping(value = "/creating", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject save( @RequestBody EventInfo entity){
return super.save(entity);
}
/**
* 修改记录
*
* @param entity
* @return
*/
@ApiOperation(value = "交通事件信息-修改记录", notes = "修改记录", response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,hidden = true)
@PostMapping(value = "/updating", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject update(@RequestBody EventInfo entity){
return super.update(entity);
}
}
package net.wanji.opt.controllerv2.hikvideo;
import com.alibaba.fastjson.JSONObject;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import java.util.*;
public class GetCameraPreviewURL {
public static String GetCameraPreviewURL(String cameraIndexCode,String beginTime,String endTime,String recordLocation) {
/**
* STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数.
*/
ArtemisConfig.host = "37.10.253.17:443"; // 平台的ip端口
ArtemisConfig.appKey = "26868396"; // 密钥appkey
ArtemisConfig.appSecret = "HYD9kdmg8pxy96xfZB7T";// 密钥appSecret
/**
* STEP2:设置OpenAPI接口的上下文
*/
final String ARTEMIS_PATH = "/artemis";
/**
* STEP3:设置接口的URI地址
*/
final String previewURLsApi = ARTEMIS_PATH + "/api/video/v1/cameras/playbackURLs";
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", previewURLsApi);//根据现场环境部署确认是http还是https
}
};
/**
* STEP4:设置参数提交方式
*/
String contentType = "application/json";
/**
* STEP5:组装请求参数
*/
JSONObject jsonBody = new JSONObject();
jsonBody.put("cameraIndexCode", cameraIndexCode);
jsonBody.put("beginTime", beginTime);
jsonBody.put("endTime", endTime);
jsonBody.put("recordLocation", recordLocation);
jsonBody.put("protocol", "rtsp");
jsonBody.put("needReturnClipInfo", true);
jsonBody.put("uuid", "");
jsonBody.put("expand", "transCode=0");
String body = jsonBody.toJSONString();
/**
* STEP6:调用接口
*/
String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType , null);// post请求application/json类型参数
return result;
}
public static void main(String[] args) {
String result = GetCameraPreviewURL("3ceaf62b4bfc471da75c9c18efaec009","2025-03-20T00:00:00.000+08:00","2025-03-20T00:00:05.000+08:00","0");
System.out.println("result结果示例: " + result);
}
}
package net.wanji.opt.controllerv2.hikvideo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HikVideoController {
@RequestMapping("/test")
public void getHikVideo(String crossId){
}
}
package net.wanji.opt.controllerv2.judgeanalysis;
import com.alibaba.fastjson.JSONObject;
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.judgeanalysis.design.response.crosssignal.CrossSignalPlanReasonResult;
import net.wanji.opt.servicev2.judgeanalysis.CrossSignalPlanService;
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.RestController;
import javax.ws.rs.core.MediaType;
/**
* <p>
* 路口信号方案
* </p>
*/
@RestController
@Slf4j
@RequestMapping("/cross-signal-plan")
@Api(value="CrossSignalPlanController", description="路口信号方案查询", tags = "路口信号方案查询")
public class CrossSignalPlanController {
@Autowired
private CrossSignalPlanService crossSignalPlanService;
@ApiOperation(value = "路口信号方案查询",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "Integer", defaultValue = "1"),
@ApiImplicitParam(name = "startTime", value = "开始时间,格式:yyyy-MM-dd HH:mm:ss", required = false, dataType = "Integer", defaultValue = "2025-03-17 00:00:00"),
@ApiImplicitParam(name = "endTime", value = "结束时间,格式:yyyy-MM-dd HH:mm:ss", required = false, dataType = "Integer", defaultValue = "2025-03-19 00:00:00"),
})
@GetMapping(value = "/getByDateScope")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossSignalPlanReasonResult.class),
})
public JsonViewObject getByDateScope(String crossId,String startTime,String endTime) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
JSONObject jsonObject = crossSignalPlanService.getByDateScope(crossId,startTime,endTime);
return jsonViewObject.success(jsonObject);
} 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.judgeanalysis.design.response;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ParentResult {
@ApiModelProperty(value = "响应状态")
private String status;
@ApiModelProperty(value = "响应状态描述",dataType = "String")
private String message;
@ApiModelProperty(value = "响应数据体")
private Object content;
@ApiModelProperty(value = "响应状态码")
private Integer code;
@ApiModelProperty(value = "响应时间戳")
private Long timestamp;
}
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