调度命令-代签

This commit is contained in:
xzb 2022-09-13 18:11:22 +08:00
parent bf821d9ff8
commit 5d83ababdc
8 changed files with 87 additions and 10 deletions

View File

@ -1265,9 +1265,13 @@ public class Operation {
*/ */
CTC_READ_DIS_COMMAND(new Label[]{Label.OTHER}), CTC_READ_DIS_COMMAND(new Label[]{Label.OTHER}),
/** /**
* 签收调度命令 * 正常签收调度命令
*/ */
CTC_SIGN_DIS_COMMAND(new Label[]{Label.OTHER}), CTC_SIGN_DIS_COMMAND(new Label[]{Label.OTHER}),
/**
* 发令单位代签调度命令
*/
CTC_SIGN_PROXY_DIS_COMMAND(new Label[]{Label.OTHER}),
/** /**
* 拒签调度命令 * 拒签调度命令
*/ */

View File

@ -7,10 +7,7 @@ import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.service.DisCmdFindService;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.service.DisCmdReceiptService; import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.service.DisCmdReceiptService;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.service.DisCmdService; import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.service.DisCmdService;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.service.DisCmdSignService; import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.service.DisCmdSignService;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.vo.DisCmdHolderEnum; import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.vo.*;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.vo.DisCmdSrcVo;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.vo.FindAllDisCmdForHolderRspVo;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.vo.ReceiptVo;
import club.joylink.rtss.simulation.cbtc.Simulation; import club.joylink.rtss.simulation.cbtc.Simulation;
import club.joylink.rtss.simulation.cbtc.member.SimulationMember; import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -54,7 +51,7 @@ public class RailCtcDisCmdOperateHandler {
disCmdService.send(simulation, disCmdCode); disCmdService.send(simulation, disCmdCode);
} }
/** /**
* 处理前端发送来的签收指令 * 处理前端发送来的正常签收指令
* @param disCmdCode 调度命令号 * @param disCmdCode 调度命令号
* @param rcId 对于该调度命令的受令单位id * @param rcId 对于该调度命令的受令单位id
* @param signer 实际签收人(仿真成员) * @param signer 实际签收人(仿真成员)
@ -63,6 +60,15 @@ public class RailCtcDisCmdOperateHandler {
public void sign(Simulation simulation, String disCmdCode, String rcId, SimulationMember signer) { public void sign(Simulation simulation, String disCmdCode, String rcId, SimulationMember signer) {
disCmdSignService.sign(simulation, disCmdCode, rcId, signer); disCmdSignService.sign(simulation, disCmdCode, rcId, signer);
} }
/**
* 处理前端发送来的代签签收指令
* @param proxySignReqVo 代签信息
* @param signer 实际签收人(仿真成员)
*/
@OperateHandlerMapping(type = Operation.Type.CTC_SIGN_PROXY_DIS_COMMAND)
public void signProxy(Simulation simulation, DisCmdProxySignReqVo proxySignReqVo, SimulationMember signer){
disCmdSignService.signProxy(simulation,proxySignReqVo,signer);
}
/** /**
* 处理前端发送来的拒签指令 * 处理前端发送来的拒签指令
* @param disCmdCode 调度命令号 * @param disCmdCode 调度命令号

View File

@ -114,7 +114,7 @@ public class DisCmdApiController {
@Data @Data
public static class FindReqVo{ public static class FindReqVo{
/** /**
* 持有者类型 * 持有者类型[Dispatcher(调度台) Station(车站) Train(无线机车) Tsr(列控服务器)]
* @see DisCmdHolderEnum * @see DisCmdHolderEnum
*/ */
private String holderType; private String holderType;

View File

@ -76,6 +76,12 @@ public class DisCmdRcvCompany {
* @see SimulationMember#getUserId() * @see SimulationMember#getUserId()
*/ */
private String signBy; private String signBy;
/**
* 被代签收人姓名即实际期望的签收者
* <p>
* 当受令单位由于某种原因无法正常签收时发令方通过电话与受令单位的这个被代签收人即接电话者确认后代签
*/
private String nameOfExpectedSigner;
/** /**
* 最终受令端对于调度命令的拒签时间 * 最终受令端对于调度命令的拒签时间
*/ */

View File

@ -68,8 +68,7 @@ public class DisCmdReceiptService {
if(null!=rc.getSignTime()){ if(null!=rc.getSignTime()){
ReceiptVo rtv = new ReceiptVo(); ReceiptVo rtv = new ReceiptVo();
rtv.setDisCmdCode(cmd.getCode()); rtv.setDisCmdCode(cmd.getCode());
rtv.setState(ReceiptVo.Status.Signed.name()); rtv.setTime(rc.getSignTime());
rtv.setTime(rc.getReceiveTime());
rtv.setSignedBy(rc.getSignBy());//todo:暂时 rtv.setSignedBy(rc.getSignBy());//todo:暂时
switch (rc.getType()){ switch (rc.getType()){
case Train:{ case Train:{
@ -84,6 +83,12 @@ public class DisCmdReceiptService {
}break; }break;
case Tsr:rtv.setTsr(rc.getTsrCode());//todo:暂时 case Tsr:rtv.setTsr(rc.getTsrCode());//todo:暂时
} }
if(null!=rc.getNameOfExpectedSigner()&&rc.getNameOfExpectedSigner().length()>0){//代签
rtv.setState(ReceiptVo.Status.ProxySigned.name());
rtv.setNameOfExpectedSigner(rc.getNameOfExpectedSigner());
}else{
rtv.setState(ReceiptVo.Status.Signed.name());
}
rsp.add(rtv); rsp.add(rtv);
} }
if(null!=rc.getReadTime()){ if(null!=rc.getReadTime()){

View File

@ -3,6 +3,7 @@ package club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.service;
import club.joylink.rtss.exception.BusinessExceptionAssertEnum; import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.DisCmd; import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.DisCmd;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.DisCmdRcvCompany; import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.DisCmdRcvCompany;
import club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.vo.DisCmdProxySignReqVo;
import club.joylink.rtss.simulation.cbtc.Simulation; import club.joylink.rtss.simulation.cbtc.Simulation;
import club.joylink.rtss.simulation.cbtc.member.SimulationMember; import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -17,7 +18,7 @@ public class DisCmdSignService {
@Autowired @Autowired
private DisCmdService disCmdService; private DisCmdService disCmdService;
/** /**
* 处理前端发送来的签收指令 * 处理前端发送来的正常签收指令
* @param disCmdCode 调度命令号 * @param disCmdCode 调度命令号
* @param rcId 对于该调度命令的受令单位id * @param rcId 对于该调度命令的受令单位id
* @param signer 实际签收人(仿真成员) * @param signer 实际签收人(仿真成员)
@ -36,6 +37,33 @@ public class DisCmdSignService {
rc.setSignBy(signer.getUserId()); rc.setSignBy(signer.getUserId());
} }
} }
/**
* 处理前端发送来的代签签收指令
* @param proxySignReqVo 代签信息
* @param signer 实际签收人(仿真成员)
*/
public void signProxy(Simulation simulation, DisCmdProxySignReqVo proxySignReqVo, SimulationMember signer){
final String disCmdCode = proxySignReqVo.getDisCmdCode();
final String rcId = proxySignReqVo.getRcId();
final String nameOfExpectedSigner = proxySignReqVo.getNameOfExpectedSigner();
//
DisCmd cmd = simulation.getCtcRepository().getDisCmdMap().get(disCmdCode);
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertTrue(null != cmd, String.format("仿真(%s),调度命令(%s)不存在", simulation.getId(), disCmdCode));
List<DisCmdRcvCompany> rcs = cmd.getRcvCompanies().values().stream().filter(rc -> { return rcId.equals(rc.getId()); }).collect(Collectors.toList());
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertTrue(null != rcs && !rcs.isEmpty(), String.format("仿真(%s),调度命令(%s)的受令单位(%s)不存在", simulation.getId(), disCmdCode, rcId));
DisCmdRcvCompany rc = rcs.get(0);
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertTrue(DisCmdRcvCompany.Status.Received.equals(rc.getState()),String.format("仿真(%s),调度命令(%s)的受令单位(%s)非接收状态,不能签收", simulation.getId(), disCmdCode, rcId));
//
rc.setState(DisCmdRcvCompany.Status.Signed);
rc.setSignTime(disCmdService.getNow(simulation));
rc.setNameOfExpectedSigner(nameOfExpectedSigner);
if(null!=signer){
rc.setSignBy(signer.getUserId());
}
}
/**
* 处理前端发送来的 签收指令
*/
/** /**
* 处理前端发送来的拒签指令 * 处理前端发送来的拒签指令
* @param disCmdCode 调度命令号 * @param disCmdCode 调度命令号

View File

@ -0,0 +1,22 @@
package club.joylink.rtss.simulation.cbtc.CTC.rail.cmd.vo;
import lombok.Data;
/**
* 调度命令代签请求
*/
@Data
public class DisCmdProxySignReqVo {
/**
* 调度命令唯一id
*/
private String disCmdCode;
/**
* 受令单位记录唯一id
*/
private String rcId;
/**
* 被代签收人姓名即实际期望的签收者
*/
private String nameOfExpectedSigner;
}

View File

@ -34,6 +34,12 @@ public class ReceiptVo {
* 签收人 * 签收人
*/ */
private String signedBy; private String signedBy;
/**
* 被代签收人姓名即实际期望的签收者
* <p>
* 当受令单位由于某种原因无法正常签收时发令方通过电话与受令单位的这个被代签收人即接电话者确认后代签
*/
private String nameOfExpectedSigner;
/** /**
* 车站受令者 * 车站受令者
*/ */