Commit 45bfebfd authored by zhoushiguang's avatar zhoushiguang

研判分析-路口方向问题接口设计

parent 1d82c06a
......@@ -57,13 +57,13 @@ public class AnalysisProblemAreaDayController {
@ApiOperation(value = "区域-路口问题数量分析", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "eventCode", value = "事件代码 701:空放 702:路口失衡,703:路口溢出", required = true, dataType = "String", defaultValue = "")
@ApiImplicitParam(name = "eventType", value = "事件代码 701:空放 702:路口失衡,703:路口溢出", required = true, dataType = "String", defaultValue = "")
})
@GetMapping(value = "/cross-problem-number")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaCrossProblemAnalysisResult.class),
})
public JsonViewObject crossProblemNumber() {
public JsonViewObject crossProblemNumber(String eventType) {
return JsonViewObject.newInstance().success(null);
}
......@@ -71,13 +71,13 @@ public class AnalysisProblemAreaDayController {
@ApiOperation(value = "区域-干线问题数量分析", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "eventCode", value = "事件代码 705:干线缓行 706:干线拥堵", required = true, dataType = "String", defaultValue = "")
@ApiImplicitParam(name = "eventType", value = "事件代码 705:干线缓行 706:干线拥堵", required = true, dataType = "String", defaultValue = "")
})
@GetMapping(value = "/green-problem-number")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaGreenProblemAnalysisResult.class),
})
public JsonViewObject greenProblemNumber() {
public JsonViewObject greenProblemNumber(String eventType) {
return JsonViewObject.newInstance().success(null);
}
......
package net.wanji.opt.controllerv2.judgeanalysis;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService;
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 net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemOverview;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemDirTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemTimeDirReasonResult;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import net.wanji.opt.api.ResultGenerator;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
import javax.ws.rs.core.MediaType;
/**
* <p>
......@@ -25,7 +28,6 @@ import java.util.List;
* @since 2025-03-13
*/
@Api(tags = "研判分析-路口问题分析")
@RestController
@RequestMapping("/analysis-problem-cross-day")
public class AnalysisProblemCrossDayController {
......@@ -36,44 +38,62 @@ public class AnalysisProblemCrossDayController {
@ApiOperation(value = "路口问题分析详情", response = AnalysisProblemCrossDay.class)
@GetMapping(value = "/info/{id}")
public Object info(@PathVariable Long id) {
Object data = analysisProblemCrossDayService.info(id);
return ResultGenerator.genSuccessResult(data);
@ApiOperation(value = "单路口-问题数量总览", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String", defaultValue = "")
})
@GetMapping(value = "/overview")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemOverview.class),
})
public JsonViewObject problemOverview(String crossId) {
return JsonViewObject.newInstance().success(null);
}
@ApiOperation(value = "路口问题分析新增")
@PostMapping(value = "/add")
public Object add(@Valid @RequestBody AnalysisProblemCrossDay param) {
analysisProblemCrossDayService.add(param);
return ResultGenerator.genSuccessResult();
@ApiOperation(value = "单路口-路口报警走势", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String", defaultValue = "")
})
@GetMapping(value = "/trend")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemTrendAnalysisResult.class),
})
public JsonViewObject trend(String crossId) {
return JsonViewObject.newInstance().success(null);
}
@ApiOperation(value = "路口问题分析修改")
@PostMapping(value = "/modify")
public Object modify(@Valid @RequestBody AnalysisProblemCrossDay param) {
analysisProblemCrossDayService.modify(param);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "路口问题分析删除(单个条目)")
@GetMapping(value = "/remove/{id}")
public Object remove(@PathVariable Long id) {
analysisProblemCrossDayService.remove(id);
return ResultGenerator.genSuccessResult();
@ApiOperation(value = "单路口-问题发生时段、方向、原因分析", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String", defaultValue = "")
})
@GetMapping(value = "/detail")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossProblemTimeDirReasonResult.class),
})
public JsonViewObject detail(String crossId) {
return JsonViewObject.newInstance().success(null);
}
@ApiOperation(value = "路口问题分析删除(多个条目)")
@PostMapping(value = "/removes")
public Object removes(@Valid @RequestBody List<Long> ids) {
analysisProblemCrossDayService.removes(ids);
return ResultGenerator.genSuccessResult();
@ApiOperation(value = "单路口-各方向问题情况分布", response = CrossProblemDirTrendAnalysisResult.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String", defaultValue = ""),
@ApiImplicitParam(name = "eventType", value = "事件代码 701:空放 702:路口失衡,703:路口溢出 707:路口拥堵", required = true, dataType = "String", defaultValue = "")
})
@GetMapping(value = "/dir-trend")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemTrendAnalysisResult.class),
})
public JsonViewObject dirTrend(String crossId,String eventType) {
return JsonViewObject.newInstance().success(null);
}
}
\ No newline at end of file
package net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import java.util.ArrayList;
import java.util.List;
@Data
public class CrossProblemDirTrendAnalysisResult extends ParentResult {
private CrossProblemDirTrendAnalysisResultResponse content;
public CrossProblemDirTrendAnalysisResultResponse getContent() {
return content;
}
public CrossProblemDirTrendAnalysisResult setContent(CrossProblemDirTrendAnalysisResultResponse content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class CrossProblemDirTrendAnalysisResultResponse {
@ApiModelProperty(value = "时段列表",example = "[\"20250311\",\"20250312\"]",dataType = "String[]")
private List<String> timeList = new ArrayList<>();
// @ApiModelProperty(value = "各路口时段流量列表",
// example = "[{\"name\":\"路口1\",\"list\":[150,300]}," +
// "{\"name\":\"路口2\",\"list\":[150,300]}]")
private List<CrossProblemDirTrendAnalysisResultTimeFlow> dataList=new ArrayList<>();
}
@Data
class CrossProblemDirTrendAnalysisResultTimeFlow {
@ApiModelProperty(value = "方向代码:1~7顺时针,分别代表北、东北、东、东南、南、西南、西、西北",example = "1")
private Integer dir ;
@ApiModelProperty(value = "方向描述",example = "北")
private String dirName ;
@ApiModelProperty(value = "时段事件数量,时段对应到timeList",example = "[300,400]",dataType = "int[]")
private List<Integer> list ;
}
package net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import java.util.List;
@Data
public class CrossProblemTimeDirReasonResult extends ParentResult {
private CrossProblemTimeDirReasonBody content;
public CrossProblemTimeDirReasonBody getContent() {
return content;
}
public CrossProblemTimeDirReasonResult setContent(CrossProblemTimeDirReasonBody content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class CrossProblemTimeDirReasonBody {
@ApiModelProperty(value = "事件类型码",example = "'701'" )
private String eventType ;
@ApiModelProperty(value = "事件类型名称",example = "路口空放")
private String eventLabel ;
@ApiModelProperty(value = "问题主要发生时段",example = "[\"07:00-08:00\",\"18:00-19:00\"]")
private List<String> timeList ;
@ApiModelProperty(value = "问题主要发生方向"/*,example = "[{'dir':1,'dirName':'北进口'},{'dir':3,'dirName':'东进口'}]"*/)
private List<CrossProblemDir> dirList ;
// TODO 需要有个计算任务,根据小时流量或其他指标计算事件发生的原因
@ApiModelProperty(value = "问题发生原因",example = "[\"区位原因\",\"交通流原因\"]")
private List<String> reasonList ;
}
@Data
class CrossProblemDir {
@ApiModelProperty(value = "方向代码:1~7顺时针,分别代表北、东北、东、东南、南、西南、西、西北",example = "1")
private Integer dir ;
@ApiModelProperty(value = "方向描述",example = "北")
private String dirName ;
}
spring:
profiles:
active: docker
active: test
logging:
level:
org.apache.ibatis: DEBUG
\ No newline at end of file
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