修改进路序列id生成方式;增加调度命令操作(未完)
This commit is contained in:
parent
493309b909
commit
e3f3d8c097
@ -1003,6 +1003,9 @@ public class Operation {
|
|||||||
* 事故按钮
|
* 事故按钮
|
||||||
*/
|
*/
|
||||||
ASSIST_PRESS_ACCIDENT,
|
ASSIST_PRESS_ACCIDENT,
|
||||||
|
|
||||||
|
//---------------------------- 调度命令 -------------------------
|
||||||
|
CTC_SEND_DISPATCH_COMMAND
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2,6 +2,7 @@ package club.joylink.rtss.simulation.cbtc.CTC;
|
|||||||
|
|
||||||
import club.joylink.rtss.simulation.cbtc.ATS.operation.vo.CtcRunPlanParam;
|
import club.joylink.rtss.simulation.cbtc.ATS.operation.vo.CtcRunPlanParam;
|
||||||
import club.joylink.rtss.simulation.cbtc.CTC.data.*;
|
import club.joylink.rtss.simulation.cbtc.CTC.data.*;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.vo.*;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.SimulationDataRepository;
|
import club.joylink.rtss.simulation.cbtc.data.SimulationDataRepository;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.*;
|
import club.joylink.rtss.simulation.cbtc.data.map.*;
|
||||||
|
@ -4,15 +4,24 @@ import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
|||||||
import club.joylink.rtss.simulation.cbtc.CI.CiApiService;
|
import club.joylink.rtss.simulation.cbtc.CI.CiApiService;
|
||||||
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcRepository;
|
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcRepository;
|
||||||
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcStationRunPlanLog;
|
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcStationRunPlanLog;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.RailDispatchCommand;
|
||||||
import club.joylink.rtss.simulation.cbtc.CTC.data.RouteSequence;
|
import club.joylink.rtss.simulation.cbtc.CTC.data.RouteSequence;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.vo.RailDispatchCommandVO;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.SimulationDataRepository;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Route;
|
import club.joylink.rtss.simulation.cbtc.data.map.Route;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Station;
|
import club.joylink.rtss.simulation.cbtc.data.map.Station;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
|
||||||
|
import io.netty.util.internal.StringUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class CTCService {
|
public class CTCService {
|
||||||
@ -132,4 +141,28 @@ public class CTCService {
|
|||||||
CtcRepository ctcRepository = simulation.getCtcRepository();
|
CtcRepository ctcRepository = simulation.getCtcRepository();
|
||||||
return ctcRepository.getRunPlanByRunPlanCode(stationCode, runPlanCode);
|
return ctcRepository.getRunPlanByRunPlanCode(stationCode, runPlanCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送调度命令
|
||||||
|
*/
|
||||||
|
public void sendDispatchCommand(Simulation simulation, RailDispatchCommandVO vo) {
|
||||||
|
CtcRepository ctcRepository = simulation.getCtcRepository();
|
||||||
|
int id = ctcRepository.getDispatchCommandIdGenerator().getAndIncrement();
|
||||||
|
vo.setId(String.valueOf(id));
|
||||||
|
RailDispatchCommand command = new RailDispatchCommand(vo);
|
||||||
|
if (StringUtils.hasText(vo.getSenderId())) {
|
||||||
|
SimulationMember sender = simulation.getSimulationMemberById(vo.getSenderId());
|
||||||
|
command.setSender(sender);
|
||||||
|
}
|
||||||
|
if (StringUtils.hasText(vo.getReviewerId())) {
|
||||||
|
SimulationMember reviewer = simulation.getSimulationMemberById(vo.getReviewerId());
|
||||||
|
command.setReviewer(reviewer);
|
||||||
|
}
|
||||||
|
if (!CollectionUtils.isEmpty(vo.getReceiverIds())) {
|
||||||
|
Set<SimulationMember> receivers = vo.getReceiverIds().stream()
|
||||||
|
.map(simulation::getSimulationMemberById).collect(Collectors.toSet());
|
||||||
|
command.setReceivers(receivers);
|
||||||
|
}
|
||||||
|
ctcRepository.addDispatchCommand(command);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.CTC.data;
|
package club.joylink.rtss.simulation.cbtc.CTC.data;
|
||||||
|
|
||||||
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.vo.CtcManageRepositoryVO;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.vo.CtcStationRunPlanLogVO;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.vo.RouteSequenceVO;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.vo.TrackViewVO;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,6 +47,11 @@ public class CtcRepository {
|
|||||||
*/
|
*/
|
||||||
private final CtcManageRepositoryVO ctcManageRepositoryVO = new CtcManageRepositoryVO();
|
private final CtcManageRepositoryVO ctcManageRepositoryVO = new CtcManageRepositoryVO();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进路序列id生成器
|
||||||
|
*/
|
||||||
|
private AtomicInteger routeSequenceIdGenerator = new AtomicInteger(0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车站-进路序列。每个车站都应该有
|
* 车站-进路序列。每个车站都应该有
|
||||||
* k - stationCode
|
* k - stationCode
|
||||||
@ -91,7 +98,15 @@ public class CtcRepository {
|
|||||||
|
|
||||||
/******************************************* 以上为车站终端数据:车站为单位 *******************************************/
|
/******************************************* 以上为车站终端数据:车站为单位 *******************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调度命令id生成器
|
||||||
|
*/
|
||||||
|
private AtomicInteger dispatchCommandIdGenerator = new AtomicInteger(0);
|
||||||
|
|
||||||
|
private final Set<RailDispatchCommand> dispatchCommandSet = new HashSet<>();
|
||||||
|
|
||||||
public void reset() {
|
public void reset() {
|
||||||
|
routeSequenceIdGenerator = new AtomicInteger(0);
|
||||||
routeSequenceMap.clear();
|
routeSequenceMap.clear();
|
||||||
routeSequenceVOMap.clear();
|
routeSequenceVOMap.clear();
|
||||||
trackViewMap.clear();
|
trackViewMap.clear();
|
||||||
@ -106,6 +121,8 @@ public class CtcRepository {
|
|||||||
}));
|
}));
|
||||||
// 运行计划状态清除
|
// 运行计划状态清除
|
||||||
this.runPlanStatusVOMap.clear();
|
this.runPlanStatusVOMap.clear();
|
||||||
|
dispatchCommandIdGenerator = new AtomicInteger(0);
|
||||||
|
dispatchCommandSet.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -196,4 +213,8 @@ public class CtcRepository {
|
|||||||
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertNotNull(routeSequence);
|
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertNotNull(routeSequence);
|
||||||
return routeSequence.getLine(tripNumber, routeCode);
|
return routeSequence.getLine(tripNumber, routeCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addDispatchCommand(RailDispatchCommand command) {
|
||||||
|
dispatchCommandSet.add(command);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,95 @@
|
|||||||
|
package club.joylink.rtss.simulation.cbtc.CTC.data;
|
||||||
|
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.vo.RailDispatchCommandVO;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 大铁调度命令
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class RailDispatchCommand {
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 命令标题
|
||||||
|
*/
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 命令号
|
||||||
|
*/
|
||||||
|
private String number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发令时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime sendTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发令人
|
||||||
|
*/
|
||||||
|
private SimulationMember sender;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发令单位
|
||||||
|
*/
|
||||||
|
private String companyOfSender;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 授权时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime authorizationTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 授权状态
|
||||||
|
*/
|
||||||
|
private String authorizationStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定稿时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime finalizationTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审核人
|
||||||
|
*/
|
||||||
|
private SimulationMember reviewer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拟令人
|
||||||
|
*/
|
||||||
|
private String author;
|
||||||
|
|
||||||
|
private Type type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 受令人
|
||||||
|
*/
|
||||||
|
private Set<SimulationMember> receivers;
|
||||||
|
|
||||||
|
public RailDispatchCommand(RailDispatchCommandVO vo) {
|
||||||
|
this.id = vo.getId();
|
||||||
|
this.title = vo.getTitle();
|
||||||
|
this.number = vo.getNumber();
|
||||||
|
this.sendTime = vo.getSendTime();
|
||||||
|
this.companyOfSender = vo.getCompanyOfSender();
|
||||||
|
this.authorizationTime = vo.getAuthorizationTime();
|
||||||
|
this.authorizationStatus = vo.getAuthorizationStatus();
|
||||||
|
this.finalizationTime = vo.getFinalizationTime();
|
||||||
|
this.author = vo.getAuthor();
|
||||||
|
this.type = vo.getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Type {
|
||||||
|
/** 正常调度命令 */
|
||||||
|
NORMAL
|
||||||
|
}
|
||||||
|
}
|
@ -22,8 +22,6 @@ import java.util.stream.Collectors;
|
|||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class RouteSequence {
|
public class RouteSequence {
|
||||||
public static AtomicInteger idGenerator = new AtomicInteger(0);
|
|
||||||
|
|
||||||
private boolean readOnly;
|
private boolean readOnly;
|
||||||
|
|
||||||
private Station station;
|
private Station station;
|
||||||
@ -43,10 +41,6 @@ public class RouteSequence {
|
|||||||
*/
|
*/
|
||||||
private final List<Line> lines;
|
private final List<Line> lines;
|
||||||
|
|
||||||
public static void reset() {
|
|
||||||
idGenerator = new AtomicInteger(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RouteSequence(Station station, List<Line> lines) {
|
public RouteSequence(Station station, List<Line> lines) {
|
||||||
this.station = station;
|
this.station = station;
|
||||||
lines.sort((o1, o2) -> {
|
lines.sort((o1, o2) -> {
|
||||||
@ -68,7 +62,7 @@ public class RouteSequence {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Line buildLine(CtcStationRunPlanLog.RunPlanItem item, boolean departure) {
|
public static Line buildLine(CtcStationRunPlanLog.RunPlanItem item, boolean departure, AtomicInteger idGenerator) {
|
||||||
Section trackSection = item.getTrackSection();
|
Section trackSection = item.getTrackSection();
|
||||||
boolean right = item.isRight();
|
boolean right = item.isRight();
|
||||||
Signal startSignal = null;
|
Signal startSignal = null;
|
||||||
@ -206,7 +200,7 @@ public class RouteSequence {
|
|||||||
@Setter
|
@Setter
|
||||||
private boolean triggered;
|
private boolean triggered;
|
||||||
|
|
||||||
public Line(String id, CtcStationRunPlanLog.RunPlanItem item, boolean departure, LocalTime startTime, LocalTime planTime, Route route) {
|
Line(String id, CtcStationRunPlanLog.RunPlanItem item, boolean departure, LocalTime startTime, LocalTime planTime, Route route) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.item = item;
|
this.item = item;
|
||||||
this.departure = departure;
|
this.departure = departure;
|
||||||
|
@ -299,7 +299,7 @@ public class TrackView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Process {
|
public enum Process {
|
||||||
RECEIVING_BLOCK, //办理接车闭塞
|
RECEIVING_BLOCK, //办理接车闭塞
|
||||||
RECEIVING, //准备接车
|
RECEIVING, //准备接车
|
||||||
RECEIVING_ROUTE, //办理接车进路
|
RECEIVING_ROUTE, //办理接车进路
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.CTC.data;
|
package club.joylink.rtss.simulation.cbtc.CTC.data.vo;
|
||||||
|
|
||||||
import club.joylink.rtss.simulation.cbtc.ATS.operation.vo.CtcRunPlanParam;
|
import club.joylink.rtss.simulation.cbtc.ATS.operation.vo.CtcRunPlanParam;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcManageRepository;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
@ -1,5 +1,6 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.CTC.data;
|
package club.joylink.rtss.simulation.cbtc.CTC.data.vo;
|
||||||
|
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcStationRunPlanLog;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
@ -1,5 +1,6 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.CTC.data;
|
package club.joylink.rtss.simulation.cbtc.CTC.data.vo;
|
||||||
|
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcZone;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Station;
|
import club.joylink.rtss.simulation.cbtc.data.map.Station;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
@ -0,0 +1,88 @@
|
|||||||
|
package club.joylink.rtss.simulation.cbtc.CTC.data.vo;
|
||||||
|
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.RailDispatchCommand;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 大铁调度命令
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class RailDispatchCommandVO {
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 命令标题
|
||||||
|
*/
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 命令号
|
||||||
|
*/
|
||||||
|
private String number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发令时间
|
||||||
|
*/
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime sendTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发令人(仿真成员)id
|
||||||
|
*/
|
||||||
|
private String senderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发令单位
|
||||||
|
*/
|
||||||
|
private String companyOfSender;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 授权时间
|
||||||
|
*/
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime authorizationTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 授权状态
|
||||||
|
*/
|
||||||
|
private String authorizationStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定稿时间
|
||||||
|
*/
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime finalizationTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审核人
|
||||||
|
*/
|
||||||
|
private String reviewerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拟令人
|
||||||
|
*/
|
||||||
|
private String author;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 受令人(仿真成员)id
|
||||||
|
*/
|
||||||
|
private Set<String> receiverIds;
|
||||||
|
|
||||||
|
private RailDispatchCommand.Type type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* webSocket消息类型
|
||||||
|
*/
|
||||||
|
enum WsMessageType {
|
||||||
|
ADD,
|
||||||
|
UPDATE,
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,9 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.CTC.data;
|
package club.joylink.rtss.simulation.cbtc.CTC.data.vo;
|
||||||
|
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.RouteSequence;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
|
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
@ -1,4 +1,6 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.CTC.data;
|
package club.joylink.rtss.simulation.cbtc.CTC.data.vo;
|
||||||
|
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.TrackSection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 股道与区段关联信息
|
* 股道与区段关联信息
|
@ -1,5 +1,6 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.CTC.data;
|
package club.joylink.rtss.simulation.cbtc.CTC.data.vo;
|
||||||
|
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.TrackView;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
@ -4,6 +4,7 @@ import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation;
|
|||||||
import club.joylink.rtss.simulation.cbtc.ATS.operation.annotation.OperateHandler;
|
import club.joylink.rtss.simulation.cbtc.ATS.operation.annotation.OperateHandler;
|
||||||
import club.joylink.rtss.simulation.cbtc.ATS.operation.annotation.OperateHandlerMapping;
|
import club.joylink.rtss.simulation.cbtc.ATS.operation.annotation.OperateHandlerMapping;
|
||||||
import club.joylink.rtss.simulation.cbtc.CTC.CTCService;
|
import club.joylink.rtss.simulation.cbtc.CTC.CTCService;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.CTC.data.vo.RailDispatchCommandVO;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
@ -91,12 +92,18 @@ public class RailCtcOperateHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* CTC办理进路
|
* CTC办理进路
|
||||||
|
*
|
||||||
* @param tripNumber 办理列车进路时可以输入车次号
|
* @param tripNumber 办理列车进路时可以输入车次号
|
||||||
* @param force 是否强制办理
|
* @param force 是否强制办理
|
||||||
* @param duration 办理调车进路时可以输入时间
|
* @param duration 办理调车进路时可以输入时间
|
||||||
*/
|
*/
|
||||||
@OperateHandlerMapping(type = Operation.Type.CTC_SET_ROUTE)
|
@OperateHandlerMapping(type = Operation.Type.CTC_SET_ROUTE)
|
||||||
public void setRoute(Simulation simulation, String routeCode, String tripNumber, Boolean force, Integer duration) {
|
public void setRoute(Simulation simulation, String routeCode, String tripNumber, Boolean force, Integer duration) {
|
||||||
ctcService.setRoute(simulation, routeCode, tripNumber, force, duration);
|
ctcService.setRoute(simulation, routeCode, tripNumber, force, duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateHandlerMapping(type = Operation.Type.CTC_SEND_DISPATCH_COMMAND)
|
||||||
|
public void sendDispatchCommand(Simulation simulation, RailDispatchCommandVO command) {
|
||||||
|
ctcService.sendDispatchCommand(simulation, command);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import org.springframework.util.CollectionUtils;
|
|||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -112,6 +113,7 @@ public class SimulationBuilder {
|
|||||||
public static void generateRouteSequence(Simulation simulation) {
|
public static void generateRouteSequence(Simulation simulation) {
|
||||||
SimulationDataRepository repository = simulation.getRepository();
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
CtcRepository ctcRepository = simulation.getCtcRepository();
|
CtcRepository ctcRepository = simulation.getCtcRepository();
|
||||||
|
AtomicInteger idGenerator = ctcRepository.getRouteSequenceIdGenerator();
|
||||||
Map<String, List<RouteSequence.Line>> stationLineMap = new HashMap<>();
|
Map<String, List<RouteSequence.Line>> stationLineMap = new HashMap<>();
|
||||||
for (Station station : repository.getStationList()) {
|
for (Station station : repository.getStationList()) {
|
||||||
stationLineMap.put(station.getCode(), new ArrayList<>());
|
stationLineMap.put(station.getCode(), new ArrayList<>());
|
||||||
@ -120,12 +122,12 @@ public class SimulationBuilder {
|
|||||||
List<RouteSequence.Line> lines = stationLineMap.get(plan.getStation().getCode());
|
List<RouteSequence.Line> lines = stationLineMap.get(plan.getStation().getCode());
|
||||||
CtcStationRunPlanLog.RunPlanItem arriveRunPlan = plan.getArriveRunPlan();
|
CtcStationRunPlanLog.RunPlanItem arriveRunPlan = plan.getArriveRunPlan();
|
||||||
if (arriveRunPlan != null) {
|
if (arriveRunPlan != null) {
|
||||||
RouteSequence.Line line = RouteSequence.buildLine(arriveRunPlan, false);
|
RouteSequence.Line line = RouteSequence.buildLine(arriveRunPlan, false, idGenerator);
|
||||||
lines.add(line);
|
lines.add(line);
|
||||||
}
|
}
|
||||||
CtcStationRunPlanLog.RunPlanItem departRunPlan = plan.getDepartRunPlan();
|
CtcStationRunPlanLog.RunPlanItem departRunPlan = plan.getDepartRunPlan();
|
||||||
if (departRunPlan != null) {
|
if (departRunPlan != null) {
|
||||||
RouteSequence.Line line = RouteSequence.buildLine(departRunPlan, true);
|
RouteSequence.Line line = RouteSequence.buildLine(departRunPlan, true, idGenerator);
|
||||||
lines.add(line);
|
lines.add(line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -407,6 +407,9 @@ public enum WebSocketMessageType {
|
|||||||
* 仿真CTC管理端生效区移除操作
|
* 仿真CTC管理端生效区移除操作
|
||||||
*/
|
*/
|
||||||
SIMULATION_CTC_MANAGER_RUN_PLAN_EFFECT_REMOVE,
|
SIMULATION_CTC_MANAGER_RUN_PLAN_EFFECT_REMOVE,
|
||||||
|
|
||||||
|
/** 调度命令 */
|
||||||
|
SIMULATION_RAIL_CTC_DISPATCH_COMMAND,
|
||||||
/** ------------ CTC消息信息 ----------- */
|
/** ------------ CTC消息信息 ----------- */
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package club.joylink.rtss.vo.client.factory;
|
|||||||
|
|
||||||
import club.joylink.rtss.constants.BusinessConsts.WebSocketSubscribeTopic;
|
import club.joylink.rtss.constants.BusinessConsts.WebSocketSubscribeTopic;
|
||||||
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcStationRunPlanLog;
|
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcStationRunPlanLog;
|
||||||
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcStationRunPlanLogVO;
|
import club.joylink.rtss.simulation.cbtc.CTC.data.vo.CtcStationRunPlanLogVO;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
import club.joylink.rtss.simulation.cbtc.communication.vo.TrainPosition;
|
import club.joylink.rtss.simulation.cbtc.communication.vo.TrainPosition;
|
||||||
import club.joylink.rtss.simulation.cbtc.conversation.Conversation;
|
import club.joylink.rtss.simulation.cbtc.conversation.Conversation;
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
package club.joylink.rtss.websocket;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WebSocket消息的二级分类消息模板
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public class WebSocketMessage {
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
private Object object;
|
||||||
|
|
||||||
|
public WebSocketMessage(String type, Object object) {
|
||||||
|
this.type = type;
|
||||||
|
this.object = object;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user