Commit 373f2a42 authored by duanruiming's avatar duanruiming

优化信号控制参数校验

parent dd0eec6a
package net.wanji.web.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.feign.pojo.vo.*;
import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.common.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
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.servlet.http.HttpServletRequest;
import java.util.Objects;
......@@ -29,7 +31,7 @@ public class SignalServiceController {
@ApiOperation(value = "信号机方案下发-基础方案下发", notes = "信号机方案下发-基础方案下发")
@PostMapping("/schemeSend")
public JsonViewObject schemeSend(@RequestBody SchemeSendVO schemeSendVO) {
public JsonViewObject schemeSend(@RequestBody @Validated SchemeSendVO schemeSendVO) {
JsonViewObject jsonViewObject = utcFeignClients.schemeSend(schemeSendVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-基础方案下发UTC服务调用异常");
......@@ -39,7 +41,7 @@ public class SignalServiceController {
@ApiOperation(value = "计划下发-计划信息、时段信息", notes = "计划下发-计划信息、时段信息")
@PostMapping("/planSend")
public JsonViewObject planSend(@RequestBody PlanSendVO planSendVO) throws Exception {
public JsonViewObject planSend(@RequestBody @Validated PlanSendVO planSendVO) throws Exception {
JsonViewObject jsonViewObject = utcFeignClients.planSend(planSendVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("计划下发-计划信息、时段信息UTC服务调用异常");
......@@ -49,7 +51,7 @@ public class SignalServiceController {
@ApiOperation(value = "时间表下发-时间表信息", notes = "时间表下发-时间表信息")
@PostMapping("/scheduleSend")
public JsonViewObject scheduleSend(@RequestBody ScheduleSendVO scheduleSendVO) throws Exception {
public JsonViewObject scheduleSend(@RequestBody @Validated ScheduleSendVO scheduleSendVO) throws Exception {
JsonViewObject jsonViewObject = utcFeignClients.scheduleSend(scheduleSendVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("时间表下发-时间表信息UTC服务调用异常");
......@@ -59,7 +61,7 @@ public class SignalServiceController {
@ApiOperation(value = "相位配时下发-(下发相位参数)", notes = "相位配时下发-(下发相位参数)")
@PostMapping("/phaseTimingSend")
public JsonViewObject phaseTimingSend(@RequestBody PhaseTimingSendVO phaseTimingSendVO) throws Exception {
public JsonViewObject phaseTimingSend(@RequestBody @Validated PhaseTimingSendVO phaseTimingSendVO) throws Exception {
JsonViewObject jsonViewObject = utcFeignClients.phaseTimingSend(phaseTimingSendVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("相位配时下发-(下发相位参数)UTC服务调用异常");
......@@ -89,15 +91,9 @@ public class SignalServiceController {
@ApiOperation(value = "步进控制-步进控制/恢复", notes = "步进控制-步进控制/恢复")
@ApiImplicitParams({
@ApiImplicitParam(name = "command", value = "1 开始步进 0 取消步进", paramType = "query", required = true, dataType = "int"),
@ApiImplicitParam(name = "stepNum", value = "0 顺序步进 n 跳过n个相位", paramType = "query", required = true, dataType = "int"),
})
@PostMapping("/stepControl")
public JsonViewObject stepControl(@RequestParam String code,
@RequestParam Integer command,
@RequestParam int stepNum) throws Exception {
JsonViewObject jsonViewObject = utcFeignClients.stepControl(code, command, stepNum);
public JsonViewObject stepControl(@RequestBody @Validated StepControlVO stepControlVO) throws Exception {
JsonViewObject jsonViewObject = utcFeignClients.stepControl(stepControlVO.getCode(), stepControlVO.getCommand(), stepControlVO.getStepNum());
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("步进控制-步进控制/恢复UTC服务调用异常");
}
......@@ -106,8 +102,12 @@ public class SignalServiceController {
@ApiOperation(value = "恢复时间表-恢复路口时间表执行", notes = "恢复时间表-恢复路口时间表执行")
@PostMapping("/recoverSchedule")
public JsonViewObject recoverSchedule(@RequestParam String code) throws Exception {
JsonViewObject jsonViewObject = utcFeignClients.recoverSchedule(code);
public JsonViewObject recoverSchedule(@RequestBody String code) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
if (StringUtils.isNotEmpty(code)) {
return jsonViewObject.fail("路口编号不能为空");
}
jsonViewObject = utcFeignClients.recoverSchedule(code);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("恢复时间表-恢复路口时间表执行UTC服务调用异常");
}
......@@ -115,7 +115,7 @@ public class SignalServiceController {
}
@ApiOperation(value = "锁定控制-相位锁定/解锁", notes = "锁定控制-相位锁定/解锁")
@PostMapping("/lockControl")
@PostMapping(value = "/lockControl")
public JsonViewObject lockControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
JsonViewObject jsonViewObject = utcFeignClients.lockControl(commandVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
......
package net.wanji.web.handler;
import lombok.extern.slf4j.Slf4j;
import net.wanji.feign.feignEnum.ResultEnum;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.web.exception.CrossException;
import org.springframework.validation.FieldError;
......@@ -11,6 +10,8 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
import static net.wanji.feign.feignEnum.ResultEnum.INTERNAL_SERVER_ERROR;
/**
* @author wuxiaokai
* @date 2022/11/21 9:06:40
......@@ -33,9 +34,16 @@ public class GlobalExceptionHandler {
*/
@ExceptionHandler(value = NullPointerException.class)
public JsonViewObject exceptionHandler(HttpServletRequest req, NullPointerException e) {
String errorMessage = e.getCause().getMessage();
log.error("发生空指针异常!原因是:{}", errorMessage);
return JsonViewObject.newInstance().fail("发生空指针异常!原因是:" + errorMessage);
Throwable cause = e.getCause();
String errorMessage;
if (cause != null) {
errorMessage = cause.getMessage();
} else {
StackTraceElement element = e.getStackTrace()[0];
errorMessage = element.getClassName() + " " + element.getLineNumber();
}
log.error("发生空指针异常!位置在:{}", errorMessage);
return JsonViewObject.newInstance().fail("发生空指针异常!位置在:" + errorMessage);
}
/**
......@@ -44,7 +52,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public JsonViewObject exceptionHandler(HttpServletRequest req, MethodArgumentNotValidException e) {
FieldError fieldError = e.getBindingResult().getFieldError();
String errorMessage = ResultEnum.INTERNAL_SERVER_ERROR.getResultMsg();
String errorMessage = INTERNAL_SERVER_ERROR.getResultMsg();
if (fieldError != null) {
errorMessage = fieldError.getDefaultMessage();
}
......
......@@ -6,6 +6,7 @@ import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
......@@ -19,7 +20,7 @@ import javax.validation.constraints.NotNull;
public class ControlCommandVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotNull(message = "路口编号不可为空")
@NotBlank(message = "路口编号不能为空")
private String crossCode;
/**
......
......@@ -6,16 +6,20 @@ import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@ApiModel(value = "下发相位参数输入参数", description = "下发相位参数输入参数")
@ApiModel(value = "PhaseTimingSendVO", description = "下发相位参数输入参数")
public class PhaseTimingSendVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotBlank(message = "路口编号不能为空")
private String crossCode;
@ApiModelProperty(value = "需要下发的相位列表", notes = "需要下发的相位列表")
@NotEmpty(message = "相位列表不能为空")
private List<Phase> phaseList;
/**
......
......@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
......@@ -15,12 +17,14 @@ import java.util.List;
*/
@Setter
@Getter
@ApiModel(value = "信号机计划下发输入参数", description = "信号机计划下发输入参数")
@ApiModel(value = "PhaseTimingSendVO", description = "信号机计划下发输入参数")
public class PlanSendVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotBlank(message = "路口编号不能为空")
private String crossCode;
@ApiModelProperty(value = "计划列表", notes = "计划列表")
@NotEmpty(message = "计划列表不能为空")
private List<Plan> planList;
@Setter
......
......@@ -6,15 +6,19 @@ import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@ApiModel(value = "信号机时间表下发输入参数", description = "信号机时间表下发输入参数")
@ApiModel(value = "PhaseTimingSendVO", description = "信号机时间表下发输入参数")
public class ScheduleSendVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotBlank(message = "路口编号不能为空")
private String crossCode;
@ApiModelProperty(value = "时间表", notes = "时间表")
@NotEmpty(message = "时间表不能为空")
private List<Schedule> schedules;
@Setter
......
......@@ -6,15 +6,19 @@ import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@ApiModel(value = "信号机方案下发输入参数", description = "信号机方案下发输入参数")
@ApiModel(value = "PhaseTimingSendVO", description = "信号机方案下发输入参数")
public class SchemeSendVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotBlank(message = "路口编号不能为空")
private String crossCode;
@ApiModelProperty(value = "方案列表", notes = "方案列表")
@NotEmpty(message = "方案列表不能为空")
private List<Pattern> patternList;
/**
......
package net.wanji.feign.pojo.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author duanruiming
* @date 2023/01/17 15:39
*/
@Data
@ApiModel(value = "StepControlVO", description = "步进控制-步进控制/恢复输入参数")
public class StepControlVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotBlank(message = "路口编号不能为空")
private String code;
@ApiModelProperty(value = "1 开始步进 0 取消步进", notes = "1 开始步进 0 取消步进")
private int stepNum;
@ApiModelProperty(value = "0 顺序步进 n 跳过n个相位", notes = "0 顺序步进 n 跳过n个相位")
private Integer command;
}
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