【计划阶段消息结构变更】
This commit is contained in:
parent
1909f79101
commit
2c267ebd0c
@ -547,8 +547,10 @@ public class CtcRunPlanParam implements Cloneable {
|
|||||||
* @return 是否存在
|
* @return 是否存在
|
||||||
*/
|
*/
|
||||||
public boolean arriveIsExist() {
|
public boolean arriveIsExist() {
|
||||||
return this.arriveTime != null || !StringUtils.isEmpty(this.arriveTripNumber) || !StringUtils.isEmpty(this.arriveSectionCode)
|
return this.arrivePlanTime != null || !StringUtils.isEmpty(this.arriveTripNumber)
|
||||||
|| !StringUtils.isEmpty(this.arriveDirectionCode) || !StringUtils.isEmpty(this.arriveStationCode);
|
|| !StringUtils.isEmpty(this.arriveSectionCode)
|
||||||
|
|| !StringUtils.isEmpty(this.arriveDirectionCode)
|
||||||
|
|| !StringUtils.isEmpty(this.arriveStationCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -557,8 +559,10 @@ public class CtcRunPlanParam implements Cloneable {
|
|||||||
* @return 是否存在
|
* @return 是否存在
|
||||||
*/
|
*/
|
||||||
public boolean departIsExist() {
|
public boolean departIsExist() {
|
||||||
return this.departTime != null || !StringUtils.isEmpty(this.departTripNumber) || !StringUtils.isEmpty(this.departSectionCode)
|
return this.departPlanTime != null || !StringUtils.isEmpty(this.departTripNumber)
|
||||||
|| !StringUtils.isEmpty(this.departDirectionCode) || !StringUtils.isEmpty(this.departStationCode);
|
|| !StringUtils.isEmpty(this.departSectionCode)
|
||||||
|
|| !StringUtils.isEmpty(this.departDirectionCode)
|
||||||
|
|| !StringUtils.isEmpty(this.departStationCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -193,22 +193,47 @@ public class CtcStationRunPlanLogService {
|
|||||||
int curVersion = runPlanRepository.getVersion().get(); // 当前生效区版本
|
int curVersion = runPlanRepository.getVersion().get(); // 当前生效区版本
|
||||||
Integer oldVersion = effectRepository.getStageRunPlanVersionMap().get(stationCode); // 旧版本
|
Integer oldVersion = effectRepository.getStageRunPlanVersionMap().get(stationCode); // 旧版本
|
||||||
if (oldVersion == null || curVersion != oldVersion) {
|
if (oldVersion == null || curVersion != oldVersion) {
|
||||||
|
List<CtcStationRunPlanLog> runPlanLogList = new ArrayList<>();
|
||||||
runPlanRepository.getCtcRunPlanVOList().forEach(ctcRunPlanVO -> {
|
runPlanRepository.getCtcRunPlanVOList().forEach(ctcRunPlanVO -> {
|
||||||
CtcStationRunPlanLog runPlanLog = simulation.getCtcRepository()
|
CtcStationRunPlanLog runPlanLog = simulation.getCtcRepository()
|
||||||
.getRunPlanByRunPlanCodeAndStationCode(stationCode, ctcRunPlanVO.getRunPlanCode());
|
.getRunPlanByRunPlanCodeAndStationCode(stationCode, ctcRunPlanVO.getRunPlanCode());
|
||||||
|
boolean change = false;
|
||||||
if (runPlanLog != null) {
|
if (runPlanLog != null) {
|
||||||
runPlanLog.setBaseAttribute(ctcRunPlanVO.getRunPlan());
|
runPlanLog.setBaseAttribute(ctcRunPlanVO.getRunPlan());
|
||||||
// 到达
|
// 到达
|
||||||
modifyRunPlanItemInfo(simulation, runPlanLog.getArriveRunPlan(), ctcRunPlanVO.getRunPlan(), true);
|
if (ctcRunPlanVO.getRunPlan().arriveIsExist()) { // 不存在到达信息则直接浮空
|
||||||
// 出发
|
change = modifyRunPlanItemInfo(simulation, runPlanLog.getArriveRunPlan(), ctcRunPlanVO.getRunPlan(), true);
|
||||||
modifyRunPlanItemInfo(simulation, runPlanLog.getDepartRunPlan(), ctcRunPlanVO.getRunPlan(), false);
|
|
||||||
} else {
|
} else {
|
||||||
|
runPlanLog.setArriveRunPlan(null);
|
||||||
|
}
|
||||||
|
// 出发
|
||||||
|
if (ctcRunPlanVO.getRunPlan().departIsExist()) {
|
||||||
|
change = change || modifyRunPlanItemInfo(simulation, runPlanLog.getDepartRunPlan(), ctcRunPlanVO.getRunPlan(), false);
|
||||||
|
} else {
|
||||||
|
runPlanLog.setDepartRunPlan(null);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
change = true;
|
||||||
runPlanLog = createRunPlanLog(simulation, stationCode, ctcRunPlanVO.getRunPlan());
|
runPlanLog = createRunPlanLog(simulation, stationCode, ctcRunPlanVO.getRunPlan());
|
||||||
simulation.getCtcRepository().addRunPlanToSimulationMap(runPlanLog);
|
simulation.getCtcRepository().addRunPlanToSimulationMap(runPlanLog);
|
||||||
}
|
}
|
||||||
|
if (change) {
|
||||||
|
runPlanLogList.add(runPlanLog);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
effectRepository.getStationStageRunPlanMap().remove(stationCode); // 发布成功后,移除阶段计划中车站的数据
|
effectRepository.getStationStageRunPlanMap().remove(stationCode); // 发布成功后,移除阶段计划中车站的数据
|
||||||
effectRepository.getStageRunPlanVersionMap().put(stationCode, curVersion); // 刷新版本
|
effectRepository.getStageRunPlanVersionMap().put(stationCode, curVersion); // 刷新版本
|
||||||
|
// 编辑过轨道的行车记录
|
||||||
|
runPlanLogList.stream()
|
||||||
|
.filter(r -> r.getArriveRunPlan() != null || r.getDepartRunPlan() != null)
|
||||||
|
.forEach(r -> {
|
||||||
|
if (r.getArriveRunPlan() != null && r.getArriveRunPlan().getTrackSection() != null) {
|
||||||
|
ctcService.runPlanItemUpdate(simulation, r.getStation(), r.getArriveRunPlan(), false);
|
||||||
|
}
|
||||||
|
if (r.getDepartRunPlan() != null && r.getDepartRunPlan().getTrackSection() != null) {
|
||||||
|
ctcService.runPlanItemUpdate(simulation, r.getStation(), r.getDepartRunPlan(), true);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,8 +314,7 @@ public class CTCLogicLoop {
|
|||||||
* @param simulation 仿真
|
* @param simulation 仿真
|
||||||
*/
|
*/
|
||||||
public void sendZoneRunPlanSend(Simulation simulation) {
|
public void sendZoneRunPlanSend(Simulation simulation) {
|
||||||
List<CtcEffectRepository.CtcStageRunPlanRepository> allList
|
List<Map<String, Object>> allList = simulation.getCtcRepository().getCtcEffectRepository().getChangeStageRunPlan();
|
||||||
= simulation.getCtcRepository().getCtcEffectRepository().getChangeStageRunPlan();
|
|
||||||
if (!CollectionUtils.isEmpty(allList)) {
|
if (!CollectionUtils.isEmpty(allList)) {
|
||||||
sendCtcMessage(simulation.getId(), allList, WebSocketMessageType.SIMULATION_RAILWAY_RUN_PLAN_SEND, simulation.getSimulationUserIds());
|
sendCtcMessage(simulation.getId(), allList, WebSocketMessageType.SIMULATION_RAILWAY_RUN_PLAN_SEND, simulation.getSimulationUserIds());
|
||||||
}
|
}
|
||||||
|
@ -108,11 +108,17 @@ public class CtcEffectRepository {
|
|||||||
*
|
*
|
||||||
* @return 变化的车站
|
* @return 变化的车站
|
||||||
*/
|
*/
|
||||||
public List<CtcStageRunPlanRepository> getChangeStageRunPlan() {
|
public List<Map<String, Object>> getChangeStageRunPlan() {
|
||||||
if (this.stationStageRunPlanMap.isEmpty()) {
|
if (this.stationStageRunPlanMap.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return this.stationStageRunPlanMap.values().stream().collect(Collectors.toList());
|
return this.stationStageRunPlanMap.values().stream().map(r -> {
|
||||||
|
Map<String, Object> dataMap = new HashMap<>();
|
||||||
|
dataMap.put("stationCode", r.stationCode);
|
||||||
|
dataMap.put("updateTime", r.getUpdateTime());
|
||||||
|
dataMap.put("dataList", r.getCtcRunPlanVOList().stream().map(CtcRunPlanVO::generateStatus).collect(Collectors.toList()));
|
||||||
|
return dataMap;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,6 +4,8 @@ import club.joylink.rtss.simulation.cbtc.ATS.operation.vo.CtcRunPlanParam;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.time.LocalTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 阶段对比
|
* 阶段对比
|
||||||
*/
|
*/
|
||||||
@ -30,9 +32,6 @@ public class CtcRunPlanVO {
|
|||||||
*/
|
*/
|
||||||
private CtcRunPlanParam changeRunPlan;
|
private CtcRunPlanParam changeRunPlan;
|
||||||
|
|
||||||
/**
|
|
||||||
* 状态:-1:删除,0:修改,1:添加
|
|
||||||
*/
|
|
||||||
private int status;
|
private int status;
|
||||||
|
|
||||||
public CtcRunPlanVO(CtcRunPlanParam runPlanParam) {
|
public CtcRunPlanVO(CtcRunPlanParam runPlanParam) {
|
||||||
@ -60,4 +59,112 @@ public class CtcRunPlanVO {
|
|||||||
runPlanVO.setChangeRunPlan(changeRunPlan);
|
runPlanVO.setChangeRunPlan(changeRunPlan);
|
||||||
return changeRunPlan != null ? runPlanVO : null;
|
return changeRunPlan != null ? runPlanVO : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CtcRunPlanStatusVO generateStatus() {
|
||||||
|
return new CtcRunPlanStatusVO(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
@Getter
|
||||||
|
public static class CtcRunPlanStatusVO {
|
||||||
|
/**
|
||||||
|
* 车站编码
|
||||||
|
*/
|
||||||
|
private String stationCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运行编码
|
||||||
|
*/
|
||||||
|
private String runPlanCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 铁路局,调度台
|
||||||
|
*/
|
||||||
|
private String railway;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 到达车次
|
||||||
|
*/
|
||||||
|
private String arriveTripNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一版本的到达车次
|
||||||
|
*/
|
||||||
|
private String oldArriveTripNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出发车次
|
||||||
|
*/
|
||||||
|
private String departTripNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一版本的出发车次
|
||||||
|
*/
|
||||||
|
private String oldDepartTripNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 到达股道
|
||||||
|
*/
|
||||||
|
private String arriveSectionCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一版本到达股道
|
||||||
|
*/
|
||||||
|
private String oldArriveSectionCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发车计划时间
|
||||||
|
*/
|
||||||
|
private LocalTime arrivePlanTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一版本发车计划时间
|
||||||
|
*/
|
||||||
|
private LocalTime oldArrivePlanTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出发股道
|
||||||
|
*/
|
||||||
|
private String departSectionCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一版本出发股道
|
||||||
|
*/
|
||||||
|
private String oldDepartSectionCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发车计划时间
|
||||||
|
*/
|
||||||
|
private LocalTime departPlanTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一版本发车计划时间
|
||||||
|
*/
|
||||||
|
private LocalTime oldDepartPlanTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态:-1:删除,0:修改,1:添加
|
||||||
|
*/
|
||||||
|
private int status;
|
||||||
|
|
||||||
|
public CtcRunPlanStatusVO(CtcRunPlanVO runPlanVO) {
|
||||||
|
this.stationCode = runPlanVO.getStationCode();
|
||||||
|
this.runPlanCode = runPlanVO.getRunPlanCode();
|
||||||
|
this.status = runPlanVO.getStatus();
|
||||||
|
this.arriveTripNumber = runPlanVO.getRunPlan().getArriveTripNumber();
|
||||||
|
this.departTripNumber = runPlanVO.getRunPlan().getDepartTripNumber();
|
||||||
|
this.arriveSectionCode = runPlanVO.getRunPlan().getArriveSectionCode();
|
||||||
|
this.arrivePlanTime = runPlanVO.getRunPlan().getArrivePlanTime();
|
||||||
|
this.departSectionCode = runPlanVO.getRunPlan().getDepartSectionCode();
|
||||||
|
this.departPlanTime = runPlanVO.getRunPlan().getDepartPlanTime();
|
||||||
|
if (runPlanVO.getChangeRunPlan() != null) {
|
||||||
|
this.oldArriveTripNumber = runPlanVO.getChangeRunPlan().getArriveTripNumber();
|
||||||
|
this.oldDepartTripNumber = runPlanVO.getChangeRunPlan().getDepartTripNumber();
|
||||||
|
this.oldArriveSectionCode = runPlanVO.getChangeRunPlan().getArriveSectionCode();
|
||||||
|
this.oldArrivePlanTime = runPlanVO.getChangeRunPlan().getArrivePlanTime();
|
||||||
|
this.oldDepartSectionCode = runPlanVO.getChangeRunPlan().getDepartSectionCode();
|
||||||
|
this.oldDepartPlanTime = runPlanVO.getChangeRunPlan().getDepartPlanTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user