Commit c7ca62a5 authored by hanbing's avatar hanbing

方案管理-方案下发-中心控制

parent 657b691f
...@@ -4,7 +4,7 @@ import io.swagger.annotations.Api; ...@@ -4,7 +4,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import net.wanji.feign.pojo.result.JsonViewObject; import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.web.dto.CrossIdDTO; import net.wanji.web.dto.CrossIdDTO;
import net.wanji.web.dto.LockPhaseDTO; import net.wanji.web.dto.CrossIdAndPhaseIdDTO;
import net.wanji.web.dto.ScheduleIdDTO; import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO; import net.wanji.web.dto.SchemeIdDTO;
import net.wanji.web.service.impl.SchemeSendServiceImpl; import net.wanji.web.service.impl.SchemeSendServiceImpl;
...@@ -51,8 +51,30 @@ public class PlanSendController { ...@@ -51,8 +51,30 @@ public class PlanSendController {
@ApiOperation(value = "模式切换-中心控制-相位锁定", notes = "模式切换-中心控制-相位锁定") @ApiOperation(value = "模式切换-中心控制-相位锁定", notes = "模式切换-中心控制-相位锁定")
@PostMapping("/lockPhase") @PostMapping("/lockPhase")
public JsonViewObject lockPhase(@RequestBody LockPhaseDTO lockPhaseDTO) { public JsonViewObject lockPhase(@RequestBody CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.lockPhase(lockPhaseDTO); JsonViewObject jsonViewObject = schemeSendService.lockPhase(crossIdAndPhaseIdDTO);
return jsonViewObject; return jsonViewObject;
} }
@ApiOperation(value = "模式切换-中心控制-全红控制", notes = "模式切换-中心控制-全红控制")
@PostMapping("/allRedControl")
public JsonViewObject allRedControl(@RequestBody CrossIdDTO crossIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.allRedControl(crossIdDTO);
return jsonViewObject;
}
@ApiOperation(value = "模式切换-中心控制-黄闪控制", notes = "模式切换-中心控制-黄闪控制")
@PostMapping("/yellowLightControl")
public JsonViewObject yellowLightControl(@RequestBody CrossIdDTO crossIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.yellowLightControl(crossIdDTO);
return jsonViewObject;
}
@ApiOperation(value = "模式切换-中心控制-恢复", notes = "模式切换-中心控制-恢复")
@PostMapping("/restore")
public JsonViewObject restore(@RequestBody CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.restore(crossIdAndPhaseIdDTO);
return jsonViewObject;
}
} }
...@@ -10,7 +10,7 @@ import lombok.Data; ...@@ -10,7 +10,7 @@ import lombok.Data;
* @date 2022/12/20 10:17 * @date 2022/12/20 10:17
*/ */
@Data @Data
public class LockPhaseDTO { public class CrossIdAndPhaseIdDTO {
@ApiModelProperty(value = "路口ID,如:c7e7b1f352dd4acab4a60088eb391cca", required = true) @ApiModelProperty(value = "路口ID,如:c7e7b1f352dd4acab4a60088eb391cca", required = true)
private String crossId; private String crossId;
@ApiModelProperty(value = "相位ID", required = true) @ApiModelProperty(value = "相位ID", required = true)
......
...@@ -2,7 +2,7 @@ package net.wanji.web.service; ...@@ -2,7 +2,7 @@ package net.wanji.web.service;
import net.wanji.feign.pojo.result.JsonViewObject; import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.web.dto.CrossIdDTO; import net.wanji.web.dto.CrossIdDTO;
import net.wanji.web.dto.LockPhaseDTO; import net.wanji.web.dto.CrossIdAndPhaseIdDTO;
import net.wanji.web.dto.ScheduleIdDTO; import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO; import net.wanji.web.dto.SchemeIdDTO;
...@@ -17,5 +17,11 @@ public interface SchemeSendService { ...@@ -17,5 +17,11 @@ public interface SchemeSendService {
JsonViewObject nextStep(CrossIdDTO crossIdDTO); JsonViewObject nextStep(CrossIdDTO crossIdDTO);
JsonViewObject lockPhase(LockPhaseDTO lockPhaseDTO); JsonViewObject lockPhase(CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO);
JsonViewObject allRedControl(CrossIdDTO crossIdDTO);
JsonViewObject yellowLightControl(CrossIdDTO crossIdDTO);
JsonViewObject restore(CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO);
} }
package net.wanji.web.service.impl; package net.wanji.web.service.impl;
import net.wanji.feign.pojo.result.JsonViewObject; import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.feign.pojo.vo.ControlCommandVO;
import net.wanji.feign.pojo.vo.LockControlVO; import net.wanji.feign.pojo.vo.LockControlVO;
import net.wanji.feign.pojo.vo.ScheduleSendVO; import net.wanji.feign.pojo.vo.ScheduleSendVO;
import net.wanji.feign.pojo.vo.SchemeSendVO; import net.wanji.feign.pojo.vo.SchemeSendVO;
import net.wanji.feign.service.UtcFeignClients; import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.dto.CrossIdAndPhaseIdDTO;
import net.wanji.web.dto.CrossIdDTO; import net.wanji.web.dto.CrossIdDTO;
import net.wanji.web.dto.LockPhaseDTO;
import net.wanji.web.dto.ScheduleIdDTO; import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO; import net.wanji.web.dto.SchemeIdDTO;
import net.wanji.web.mapper.scheme.CrossPhaseMapper; import net.wanji.web.mapper.scheme.CrossPhaseMapper;
...@@ -18,6 +19,7 @@ import net.wanji.web.po.scheme.CrossPlanPO; ...@@ -18,6 +19,7 @@ import net.wanji.web.po.scheme.CrossPlanPO;
import net.wanji.web.po.scheme.CrossSchedulesPlanPO; import net.wanji.web.po.scheme.CrossSchedulesPlanPO;
import net.wanji.web.po.scheme.CrossSchemePO; import net.wanji.web.po.scheme.CrossSchemePO;
import net.wanji.web.service.SchemeSendService; import net.wanji.web.service.SchemeSendService;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -96,13 +98,13 @@ public class SchemeSendServiceImpl implements SchemeSendService { ...@@ -96,13 +98,13 @@ public class SchemeSendServiceImpl implements SchemeSendService {
} }
@Override @Override
public JsonViewObject lockPhase(LockPhaseDTO lockPhaseDTO) { public JsonViewObject lockPhase(CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO) {
LockControlVO lockControlVO = new LockControlVO(); LockControlVO lockControlVO = new LockControlVO();
lockControlVO.setCrossCode(lockPhaseDTO.getCrossId()); lockControlVO.setCrossCode(crossIdAndPhaseIdDTO.getCrossId());
lockControlVO.setCommand(1); // 控制标识:1是;0否 lockControlVO.setCommand(1); // 控制标识:1是;0否
lockControlVO.setDuration(0); // 长期 lockControlVO.setDuration(0); // 长期
Integer phaseId = lockPhaseDTO.getPhaseId(); Integer phaseId = crossIdAndPhaseIdDTO.getPhaseId();
CrossPhasePO crossPhasePO = crossPhaseMapper.selectById(phaseId); CrossPhasePO crossPhasePO = crossPhaseMapper.selectById(phaseId);
String phaseNo = crossPhasePO.getPhaseNo(); String phaseNo = crossPhasePO.getPhaseNo();
...@@ -117,6 +119,87 @@ public class SchemeSendServiceImpl implements SchemeSendService { ...@@ -117,6 +119,87 @@ public class SchemeSendServiceImpl implements SchemeSendService {
return jsonViewObject.success(); return jsonViewObject.success();
} }
@Override
public JsonViewObject allRedControl(CrossIdDTO crossIdDTO) {
ControlCommandVO commandVO = getControlCommandVO(crossIdDTO);
commandVO.setControlType(1); //1全红 2黄闪 3关灯
JsonViewObject jsonViewObject = utcFeignClients.allRedControl(commandVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-全红控制UTC服务调用异常");
}
return jsonViewObject.success();
}
@Override
public JsonViewObject yellowLightControl(CrossIdDTO crossIdDTO) {
ControlCommandVO commandVO = getControlCommandVO(crossIdDTO);
commandVO.setControlType(2); //1全红 2黄闪 3关灯
JsonViewObject jsonViewObject = utcFeignClients.yellowLightControl(commandVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-黄闪控制UTC服务调用异常");
}
return jsonViewObject.success();
}
@Override
public JsonViewObject restore(CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO) {
String crossId = crossIdAndPhaseIdDTO.getCrossId();
Integer phaseId = crossIdAndPhaseIdDTO.getPhaseId();
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
// 取消步进
// command 1开始步进,stepNum 0顺序步进
jsonViewObject = utcFeignClients.stepControl(crossId, 0, 0);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-步进控制UTC服务调用异常");
}
// 取消相位锁定
LockControlVO lockControlVO = new LockControlVO();
lockControlVO.setCrossCode(crossIdAndPhaseIdDTO.getCrossId());
lockControlVO.setCommand(0); // 控制标识:1是;0否
lockControlVO.setDuration(0); // 长期
CrossPhasePO crossPhasePO = crossPhaseMapper.selectById(phaseId);
String phaseNo = crossPhasePO.getPhaseNo();
List<Integer> phaseList = new ArrayList<>();
phaseList.add(Integer.parseInt(phaseNo));
lockControlVO.setPhaseList(phaseList);
jsonViewObject = utcFeignClients.lockControl(lockControlVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-锁定控制UTC服务调用异常");
}
// 取消全红控制
CrossIdDTO crossIdDTO = new CrossIdDTO();
crossIdDTO.setCrossId(crossId);
ControlCommandVO commandVO = getControlCommandVO(crossIdDTO);
commandVO.setCommand(0); //控制标识:1是;0否
commandVO.setControlType(1); //1全红 2黄闪 3关灯
jsonViewObject = utcFeignClients.allRedControl(commandVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-全红控制UTC服务调用异常");
}
// 取消黄闪控制
commandVO.setControlType(2); //1全红 2黄闪 3关灯
jsonViewObject = utcFeignClients.yellowLightControl(commandVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-黄闪控制UTC服务调用异常");
}
return jsonViewObject.success();
}
@NotNull
private static ControlCommandVO getControlCommandVO(CrossIdDTO crossIdDTO) {
ControlCommandVO commandVO = new ControlCommandVO();
commandVO.setCrossCode(crossIdDTO.getCrossId());
commandVO.setCommand(1); //控制标识:1是;0否
commandVO.setDuration(0); //长期
return commandVO;
}
private List<SchemeSendVO.Pattern> buildPatternList(String crossId, Integer schemeId) { private List<SchemeSendVO.Pattern> buildPatternList(String crossId, Integer schemeId) {
List<SchemeSendVO.Pattern> patternList = new ArrayList<>(); List<SchemeSendVO.Pattern> patternList = new ArrayList<>();
CrossSchemePO crossSchemePO = crossSchemeMapper.selectById(schemeId); CrossSchemePO crossSchemePO = crossSchemeMapper.selectById(schemeId);
......
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