实训补充修改
This commit is contained in:
parent
4aed94d481
commit
1635c356ed
@ -1,22 +1,22 @@
|
|||||||
package club.joylink.rtss.services.training.generatornew;
|
package club.joylink.rtss.services.training.generatornew;
|
||||||
|
|
||||||
|
import club.joylink.rtss.constants.BusinessConsts;
|
||||||
import club.joylink.rtss.services.training.constant.TrainingConsts;
|
import club.joylink.rtss.services.training.constant.TrainingConsts;
|
||||||
import club.joylink.rtss.services.training.data.GenerateConfig;
|
import club.joylink.rtss.services.training.data.GenerateConfig;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.*;
|
import club.joylink.rtss.simulation.cbtc.data.map.*;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.storage.StorageSimulation;
|
import club.joylink.rtss.simulation.cbtc.data.storage.StorageSimulation;
|
||||||
import club.joylink.rtss.constants.BusinessConsts;
|
|
||||||
import club.joylink.rtss.util.ReflectionUtils;
|
import club.joylink.rtss.util.ReflectionUtils;
|
||||||
import club.joylink.rtss.vo.client.map.newmap.MapTurnBackStrategyVO;
|
|
||||||
import club.joylink.rtss.vo.client.training.definition.OperateDefinitionVO;
|
|
||||||
import club.joylink.rtss.vo.client.training.definition.OperatePlaceholderVO;
|
|
||||||
import club.joylink.rtss.vo.client.training.definition.OperateStepVO;
|
|
||||||
import club.joylink.rtss.vo.client.map.MapVO;
|
import club.joylink.rtss.vo.client.map.MapVO;
|
||||||
import club.joylink.rtss.vo.client.map.newmap.MapAutomaticRouteButtonVO;
|
import club.joylink.rtss.vo.client.map.newmap.MapAutomaticRouteButtonVO;
|
||||||
import club.joylink.rtss.vo.client.map.newmap.MapCycleButtonVO;
|
import club.joylink.rtss.vo.client.map.newmap.MapCycleButtonVO;
|
||||||
|
import club.joylink.rtss.vo.client.map.newmap.MapTotalGuideLockButtonVO;
|
||||||
|
import club.joylink.rtss.vo.client.map.newmap.MapTurnBackStrategyVO;
|
||||||
import club.joylink.rtss.vo.client.training.TrainingNewVO;
|
import club.joylink.rtss.vo.client.training.TrainingNewVO;
|
||||||
import club.joylink.rtss.vo.client.training.TrainingStepVO;
|
import club.joylink.rtss.vo.client.training.TrainingStepVO;
|
||||||
import org.springframework.util.CollectionUtils;
|
import club.joylink.rtss.vo.client.training.definition.OperateDefinitionVO;
|
||||||
|
import club.joylink.rtss.vo.client.training.definition.OperatePlaceholderVO;
|
||||||
|
import club.joylink.rtss.vo.client.training.definition.OperateStepVO;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -97,6 +97,9 @@ public interface GeneratorNew {
|
|||||||
} else if (mapButton instanceof MapTurnBackStrategyVO) {
|
} else if (mapButton instanceof MapTurnBackStrategyVO) {
|
||||||
s.setDeviceCode(((MapTurnBackStrategyVO) mapButton).getCode());
|
s.setDeviceCode(((MapTurnBackStrategyVO) mapButton).getCode());
|
||||||
break;
|
break;
|
||||||
|
} else if (mapButton instanceof MapTotalGuideLockButtonVO) {
|
||||||
|
s.setDeviceCode(((MapTotalGuideLockButtonVO) mapButton).getCode());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case NULL:
|
case NULL:
|
||||||
@ -128,6 +131,8 @@ public interface GeneratorNew {
|
|||||||
trainingVO.setLocateDeviceCode(((MapAutomaticRouteButtonVO) mapButton).getCode());
|
trainingVO.setLocateDeviceCode(((MapAutomaticRouteButtonVO) mapButton).getCode());
|
||||||
} else if (mapButton instanceof MapTurnBackStrategyVO) {
|
} else if (mapButton instanceof MapTurnBackStrategyVO) {
|
||||||
trainingVO.setLocateDeviceCode(((MapTurnBackStrategyVO) mapButton).getCode());
|
trainingVO.setLocateDeviceCode(((MapTurnBackStrategyVO) mapButton).getCode());
|
||||||
|
} else if (mapButton instanceof MapTotalGuideLockButtonVO) {
|
||||||
|
trainingVO.setLocateDeviceCode(((MapTotalGuideLockButtonVO) mapButton).getCode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,10 @@ import club.joylink.rtss.services.training.generatornew.GeneratorNew;
|
|||||||
import club.joylink.rtss.services.training.generatornew.annotation.GeneratorSelectorNew;
|
import club.joylink.rtss.services.training.generatornew.annotation.GeneratorSelectorNew;
|
||||||
import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation;
|
import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.build.SimulationBuilder;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Cycle;
|
import club.joylink.rtss.simulation.cbtc.data.map.Cycle;
|
||||||
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.SectionPath;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Signal;
|
import club.joylink.rtss.simulation.cbtc.data.map.Signal;
|
||||||
import club.joylink.rtss.simulation.cbtc.tool.DeviceStatusModifyTool;
|
import club.joylink.rtss.simulation.cbtc.tool.DeviceStatusModifyTool;
|
||||||
import club.joylink.rtss.vo.client.training.definition.OperateDefinitionVO;
|
import club.joylink.rtss.vo.client.training.definition.OperateDefinitionVO;
|
||||||
@ -179,17 +181,16 @@ public class SignalGeneratorNew implements GeneratorNew {
|
|||||||
case Signal_Human_Release_Route: {
|
case Signal_Human_Release_Route: {
|
||||||
// 查询信号机为始端的进路列表,设置背景为进路排列,且进路接近区段占用
|
// 查询信号机为始端的进路列表,设置背景为进路排列,且进路接近区段占用
|
||||||
// todo 接近区段设置列车逻辑较复杂,推迟实现
|
// todo 接近区段设置列车逻辑较复杂,推迟实现
|
||||||
|
for (Route route : signal.getRouteList()) {
|
||||||
|
deviceStatusModifyTool.openRouteDirect(simulation, route);
|
||||||
|
deviceStatusModifyTool.closeSignalDirectly(route.getStart());
|
||||||
|
deviceStatusModifyTool.loadManualTrainOfGroup(simulation, "001", signal.getSection(), signal.isRight());
|
||||||
|
// todo 在接近区段设置一辆列车
|
||||||
|
trainingVOList.add(this.build(config, simulation, signal, null, operateDefinitionVO));
|
||||||
|
// 仿真重置
|
||||||
|
simulation.reset();
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
// List<Route> routeList = signal.getRouteList();
|
|
||||||
// for (Route route : routeList) {
|
|
||||||
// deviceStatusModifyTool.openRouteDirect(simulation, route);
|
|
||||||
// List<Section> approachSectionList = signal.getApproachSectionList();
|
|
||||||
// // todo 在接近区段设置一辆列车
|
|
||||||
// trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
|
|
||||||
// // 仿真重置
|
|
||||||
// simulation = SimulationBuilder.build(simulation.getBuildParams());
|
|
||||||
// }
|
|
||||||
// continue;
|
|
||||||
}
|
}
|
||||||
case Signal_Close_Signal: {
|
case Signal_Close_Signal: {
|
||||||
// 查询进路,设置背景为进路已排列
|
// 查询进路,设置背景为进路已排列
|
||||||
@ -328,26 +329,28 @@ public class SignalGeneratorNew implements GeneratorNew {
|
|||||||
}
|
}
|
||||||
case Signal_Set_Guide: {
|
case Signal_Set_Guide: {
|
||||||
// 若信号机可开引导信号,则生成实训,暂不设置背景(暂时先简单处理,此处业务比较复杂,需明确后再生成各种情况的实训)
|
// 若信号机可开引导信号,则生成实训,暂不设置背景(暂时先简单处理,此处业务比较复杂,需明确后再生成各种情况的实训)
|
||||||
// if (!signal.isCallOn()) { // 不是引导信号机,不生成
|
if (signal.isCallOn()) { // 不是引导信号机,不生成
|
||||||
// continue;
|
//非折返进路办理引导
|
||||||
// } else {
|
List<Route> notTurnBackRouteList = routeList.stream()
|
||||||
// //非折返进路办理引导
|
.filter(route -> !route.isTurnBack())
|
||||||
// List<Route> notTurnBackRouteList = routeList.stream()
|
.collect(Collectors.toList());
|
||||||
// .filter(route -> !route.isTurnBack())
|
if (routeLikeHa1) {
|
||||||
// .collect(Collectors.toList());
|
// 对于ATP进路、地面联锁进路、引导进路类的,取引导进路
|
||||||
// if (routeLikeHa1) {
|
notTurnBackRouteList = notTurnBackRouteList.stream()
|
||||||
// // 对于ATP进路、地面联锁进路、引导进路类的,取引导进路
|
.filter(route -> route.isGuide())
|
||||||
// notTurnBackRouteList = notTurnBackRouteList.stream()
|
.collect(Collectors.toList());
|
||||||
// .filter(route -> route.isGuide())
|
}
|
||||||
// .collect(Collectors.toList());
|
for (Route route : notTurnBackRouteList) {
|
||||||
// }
|
if(simulation.getRepository().getConfig().isGuideNeedRouteSettingFirst()){
|
||||||
// for (Route route : notTurnBackRouteList) {
|
deviceStatusModifyTool.openRouteDirect(simulation, route);
|
||||||
// trainingVOList.add(this.build(config, simulation, route, operateDefinitionVO));
|
deviceStatusModifyTool.closeSignalDirectly(route.getStart());
|
||||||
// // 仿真重置
|
}
|
||||||
// simulation.reset();
|
deviceStatusModifyTool.loadManualTrainOfGroup(simulation, "001",signal.getSection(),signal.isRight());
|
||||||
// }
|
trainingVOList.add(this.build(config, simulation, route,null, operateDefinitionVO));
|
||||||
// continue;
|
// 仿真重置
|
||||||
// }
|
simulation.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
case Signal_Close_Guide: {
|
case Signal_Close_Guide: {
|
||||||
|
@ -6,15 +6,21 @@ import club.joylink.rtss.services.training.generatornew.annotation.GeneratorSele
|
|||||||
import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation;
|
import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
import club.joylink.rtss.simulation.cbtc.constant.TrainType;
|
import club.joylink.rtss.simulation.cbtc.constant.TrainType;
|
||||||
|
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.Section;
|
import club.joylink.rtss.simulation.cbtc.data.map.Section;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Stand;
|
import club.joylink.rtss.simulation.cbtc.data.map.Stand;
|
||||||
import club.joylink.rtss.constants.MapPrdTypeEnum;
|
import club.joylink.rtss.constants.MapPrdTypeEnum;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.support.RoutePath;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.support.SectionPosition;
|
import club.joylink.rtss.simulation.cbtc.data.support.SectionPosition;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.vo.TrainInfo;
|
import club.joylink.rtss.simulation.cbtc.data.vo.TrainInfo;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityDevice;
|
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityDevice;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
|
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.tool.DeviceStatusModifyTool;
|
||||||
import club.joylink.rtss.vo.client.training.definition.OperateDefinitionVO;
|
import club.joylink.rtss.vo.client.training.definition.OperateDefinitionVO;
|
||||||
import club.joylink.rtss.vo.client.training.TrainingNewVO;
|
import club.joylink.rtss.vo.client.training.TrainingNewVO;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@ -22,6 +28,8 @@ import java.util.*;
|
|||||||
public class StandGeneratorNew implements GeneratorNew {
|
public class StandGeneratorNew implements GeneratorNew {
|
||||||
|
|
||||||
protected static final int PARKING_TIME = 20;
|
protected static final int PARKING_TIME = 20;
|
||||||
|
@Autowired
|
||||||
|
private DeviceStatusModifyTool deviceStatusModifyTool;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TrainingNewVO> generate(GenerateConfig config, Simulation simulation, OperateDefinitionVO operateDefinitionVO) {
|
public List<TrainingNewVO> generate(GenerateConfig config, Simulation simulation, OperateDefinitionVO operateDefinitionVO) {
|
||||||
@ -43,9 +51,11 @@ public class StandGeneratorNew implements GeneratorNew {
|
|||||||
stand.setTypeStrategy(Stand.TurnBackType.AUTO);
|
stand.setTypeStrategy(Stand.TurnBackType.AUTO);
|
||||||
break;
|
break;
|
||||||
case Stand_Set_Hold_Train_Auto:
|
case Stand_Set_Hold_Train_Auto:
|
||||||
|
stand.setTrainLimit(-1);
|
||||||
|
break;
|
||||||
case Stand_Cancel_Hold_Train_Auto:
|
case Stand_Cancel_Hold_Train_Auto:
|
||||||
// 功能暂未实现,不生成
|
stand.setTrainLimit(3);
|
||||||
continue;
|
break;
|
||||||
case Stand_Set_Jump_Stop: {
|
case Stand_Set_Jump_Stop: {
|
||||||
// todo 应该设置列车在上一车站,暂时简单处理
|
// todo 应该设置列车在上一车站,暂时简单处理
|
||||||
// 终点车站正常应不能设置跳停,暂时也不处理
|
// 终点车站正常应不能设置跳停,暂时也不处理
|
||||||
@ -70,8 +80,14 @@ public class StandGeneratorNew implements GeneratorNew {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Stand_Early_Depart: {
|
case Stand_Early_Depart: {
|
||||||
// 提前发车需要列车,暂不生成
|
List<Route> routeList = simulation.getRepository().getRouteList();
|
||||||
continue;
|
Route route = routeList.stream().filter(route1 ->
|
||||||
|
(route1.getStart().getSection() == stand.getSection() || route1.containSection(stand.getSection()) && !route1.routeLastSection(stand.getSection())) && Objects.equals(stand.isRight(), route1.getStart().isRight())).findAny().orElse(null);
|
||||||
|
if (Objects.nonNull(route)) {
|
||||||
|
deviceStatusModifyTool.openRouteDirect(simulation, route);
|
||||||
|
}
|
||||||
|
deviceStatusModifyTool.loadManualTrainOfGroup(simulation, "001", stand.getSection(), stand.isRight());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case Stand_Cancel_Jump_Stop:{
|
case Stand_Cancel_Jump_Stop:{
|
||||||
// 设置背景为全部跳停
|
// 设置背景为全部跳停
|
||||||
|
@ -5,11 +5,14 @@ import club.joylink.rtss.services.training.generatornew.GeneratorNew;
|
|||||||
import club.joylink.rtss.services.training.generatornew.annotation.GeneratorSelectorNew;
|
import club.joylink.rtss.services.training.generatornew.annotation.GeneratorSelectorNew;
|
||||||
import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation;
|
import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Route;
|
import club.joylink.rtss.simulation.cbtc.data.map.*;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Station;
|
import club.joylink.rtss.simulation.cbtc.tool.DeviceStatusModifyTool;
|
||||||
import club.joylink.rtss.vo.client.training.definition.OperateDefinitionVO;
|
import club.joylink.rtss.vo.client.training.definition.OperateDefinitionVO;
|
||||||
import club.joylink.rtss.vo.client.training.TrainingNewVO;
|
import club.joylink.rtss.vo.client.training.TrainingNewVO;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.time.LocalTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -17,7 +20,8 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
@GeneratorSelectorNew(operateObject = Operation.Object.Station)
|
@GeneratorSelectorNew(operateObject = Operation.Object.Station)
|
||||||
public class StationGeneratorNew implements GeneratorNew {
|
public class StationGeneratorNew implements GeneratorNew {
|
||||||
|
@Autowired
|
||||||
|
private DeviceStatusModifyTool deviceStatusModifyTool;
|
||||||
@Override
|
@Override
|
||||||
public List<TrainingNewVO> generate(GenerateConfig config, Simulation simulation, OperateDefinitionVO operateDefinitionVO) {
|
public List<TrainingNewVO> generate(GenerateConfig config, Simulation simulation, OperateDefinitionVO operateDefinitionVO) {
|
||||||
List<TrainingNewVO> trainingVOList = new ArrayList<>();
|
List<TrainingNewVO> trainingVOList = new ArrayList<>();
|
||||||
@ -105,14 +109,66 @@ public class StationGeneratorNew implements GeneratorNew {
|
|||||||
});
|
});
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// simulation.getRepository().getSignalList().stream()
|
|
||||||
// .filter(s -> Objects.equals(station.getCode(), s.getDeviceStation().getCode()))
|
|
||||||
// .forEach(signal -> {
|
|
||||||
// if (!signal.isBlockade()) {
|
|
||||||
// signal.setBlockade(false);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
break;
|
break;
|
||||||
|
case Station_Power_On_Unlock:
|
||||||
|
if(!station.isCentralized()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
station.setControlMode(Station.ControlMode.Local);
|
||||||
|
station.setRestartTime(LocalTime.now());
|
||||||
|
List<Section> sections = simulation.getRepository().getSectionList();
|
||||||
|
sections.stream().filter(section -> Objects.equals(section.getDeviceStation(), station)).forEach(section -> section.setFaultLock(true));
|
||||||
|
break;
|
||||||
|
case Station_Set_Master_Guide_Lock:
|
||||||
|
if(!station.isCentralized()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
station.setControlMode(Station.ControlMode.Local);
|
||||||
|
List<Switch> switchList = simulation.getRepository().getSwitchList();
|
||||||
|
List<Switch> collect = switchList.stream().filter(
|
||||||
|
aSwitch -> Objects.equals(aSwitch.getDeviceStation(), station)).collect(Collectors.toList());
|
||||||
|
collect.forEach(aSwitch -> aSwitch.setFault(Switch.SwitchFault.SPLIT));
|
||||||
|
station.setControlMode(Station.ControlMode.Center);
|
||||||
|
if (operateDefinitionVO.guideTotalLockButton()) {
|
||||||
|
simulation.getBuildParams().getMap().getGraphDataNew().getTotalGuideLockButtonVOList()
|
||||||
|
.stream().filter(guideLockButtonVO -> guideLockButtonVO.getStationCode().equals(station.getCode()))
|
||||||
|
.forEach(button -> {
|
||||||
|
trainingVOList.add(this.build(config, simulation, station, button, operateDefinitionVO));
|
||||||
|
simulation.reset();
|
||||||
|
});
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Station_Cancel_Master_Guide_Lock:
|
||||||
|
if(station.isCentralized()) {
|
||||||
|
station.setTotalGuideLock(true);
|
||||||
|
station.setControlMode(Station.ControlMode.Local);
|
||||||
|
List<Switch> switchList1 = simulation.getRepository().getSwitchList();
|
||||||
|
switchList1.stream().filter(aSwitch -> Objects.equals(aSwitch.getDeviceStation(), station)).forEach(aSwitch -> aSwitch.setSingleLock(true));
|
||||||
|
List<Signal> signalList = simulation.getRepository().getSignalList();
|
||||||
|
signalList.stream().filter(signal -> Objects.equals(signal.getDeviceStation(), station)).forEach(signal -> {
|
||||||
|
if (signal.isCallOn()) {
|
||||||
|
List<Route> routeList = signal.getRouteList();
|
||||||
|
if (!CollectionUtils.isEmpty(routeList)) {
|
||||||
|
for (Route route : routeList) {
|
||||||
|
if (!route.isTurnBack()) {
|
||||||
|
this.deviceStatusModifyTool.openGuideRouteDirect(simulation, route);
|
||||||
|
trainingVOList.add(this.build(config, simulation, station, null, operateDefinitionVO));
|
||||||
|
// 仿真重置
|
||||||
|
simulation.reset();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (Objects.nonNull(signal.getAutoSignal())) { // 信号机是自动信号
|
||||||
|
this.deviceStatusModifyTool.openGuideSignalDirectly(signal);
|
||||||
|
trainingVOList.add(this.build(config, simulation, station, null, operateDefinitionVO));
|
||||||
|
// 仿真重置
|
||||||
|
simulation.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
continue;
|
||||||
default:
|
default:
|
||||||
// 其他操作,不生成
|
// 其他操作,不生成
|
||||||
continue;
|
continue;
|
||||||
|
@ -179,9 +179,9 @@ public class Operation {
|
|||||||
Stand_Set_Hold_Train_Batch(),
|
Stand_Set_Hold_Train_Batch(),
|
||||||
/**批量取消扣车*/
|
/**批量取消扣车*/
|
||||||
Stand_Cancel_Hold_Train_Batch(),
|
Stand_Cancel_Hold_Train_Batch(),
|
||||||
/** 区间列车数量限制 */
|
/** 区间列车数量限制(自动扣车) */
|
||||||
Stand_Set_Hold_Train_Auto(),
|
Stand_Set_Hold_Train_Auto(),
|
||||||
/** 取消区间列车数量限制 */
|
/** 取消区间列车数量限制(取消自动扣车) */
|
||||||
Stand_Cancel_Hold_Train_Auto(),
|
Stand_Cancel_Hold_Train_Auto(),
|
||||||
/** 站台总取消 */
|
/** 站台总取消 */
|
||||||
Stand_Total_Cancel,
|
Stand_Total_Cancel,
|
||||||
@ -209,6 +209,8 @@ public class Operation {
|
|||||||
CM_Surrender_Control(),
|
CM_Surrender_Control(),
|
||||||
/** 连锁控 */
|
/** 连锁控 */
|
||||||
CM_Interlock_Control(),
|
CM_Interlock_Control(),
|
||||||
|
/** 回复中控请求(同意/拒绝) */
|
||||||
|
CM_Reply_Interlock_Control(),
|
||||||
|
|
||||||
//--------------------------- 集中车站 ---------------------------
|
//--------------------------- 集中车站 ---------------------------
|
||||||
/** 设置折返策略 */
|
/** 设置折返策略 */
|
||||||
|
@ -137,8 +137,8 @@ public class StandOperateHandler {
|
|||||||
* 区间列车数量限制
|
* 区间列车数量限制
|
||||||
*/
|
*/
|
||||||
@OperateHandlerMapping(type = Operation.Type.Stand_Set_Hold_Train_Auto)
|
@OperateHandlerMapping(type = Operation.Type.Stand_Set_Hold_Train_Auto)
|
||||||
public void setHoldTrainAuto() {
|
public void setHoldTrainAuto(Simulation simulation, String standCode, int limit) {
|
||||||
throw new SimulationException(SimulationExceptionType.Operation_Handle_FAIL, "功能暂未实现");
|
atsStandService.setAutoHoldTrainLimit(simulation, standCode, limit);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,8 +146,8 @@ public class StandOperateHandler {
|
|||||||
* 取消区间列车数量限制
|
* 取消区间列车数量限制
|
||||||
*/
|
*/
|
||||||
@OperateHandlerMapping(type = Operation.Type.Stand_Cancel_Hold_Train_Auto)
|
@OperateHandlerMapping(type = Operation.Type.Stand_Cancel_Hold_Train_Auto)
|
||||||
public void cancelHoldTrainAuto() {
|
public void cancelHoldTrainAuto(Simulation simulation, String standCode) {
|
||||||
throw new SimulationException(SimulationExceptionType.Operation_Handle_FAIL, "功能暂未实现");
|
atsStandService.setAutoHoldTrainLimit(simulation, standCode, -1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,9 +102,9 @@ public class StationOperateHandler {
|
|||||||
* 上电解锁
|
* 上电解锁
|
||||||
*/
|
*/
|
||||||
@OperateHandlerMapping(type = Operation.Type.Station_Power_On_Unlock)
|
@OperateHandlerMapping(type = Operation.Type.Station_Power_On_Unlock)
|
||||||
public void powerOnUnlock() {
|
public void powerOnUnlock(Simulation simulation, String stationCode) {
|
||||||
throw new SimulationException(SimulationExceptionType.Operation_Handle_FAIL, "功能暂未实现");
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
|
ciApiService.powerOnUnlock(simulation, repository.getByCode(stationCode, Station.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -143,6 +143,12 @@ public class StationOperateHandler {
|
|||||||
atsStationService.applyForCenterControl(simulation, fromMember, stationCodes);
|
atsStationService.applyForCenterControl(simulation, fromMember, stationCodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**连锁控*/
|
||||||
|
@OperateHandlerMapping(type = Operation.Type.CM_Interlock_Control)
|
||||||
|
public void applyForInterlockControl(Simulation simulation, SimulationMember fromMember, List<String> stationCodes){
|
||||||
|
atsStationService.applyForInterlockControl(simulation, fromMember, stationCodes);
|
||||||
|
}
|
||||||
|
|
||||||
/**强制站控-l*/
|
/**强制站控-l*/
|
||||||
@OperateHandlerMapping(type = Operation.Type.CM_Force_Station_Control)
|
@OperateHandlerMapping(type = Operation.Type.CM_Force_Station_Control)
|
||||||
public void forceForStationControl(Simulation simulation, SimulationMember fromMember, List<String> stationCodes){
|
public void forceForStationControl(Simulation simulation, SimulationMember fromMember, List<String> stationCodes){
|
||||||
|
@ -277,6 +277,14 @@ public class AtsStandService {
|
|||||||
stand.setRunLevelTimeForever(alwaysValid);
|
stand.setRunLevelTimeForever(alwaysValid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置站间列车数量
|
||||||
|
*/
|
||||||
|
public void setAutoHoldTrainLimit(Simulation simulation, String standCode, int limit) {
|
||||||
|
Stand stand = getStand(simulation, standCode);
|
||||||
|
stand.setTrainLimit(limit);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置人工折返策略
|
* 设置人工折返策略
|
||||||
*/
|
*/
|
||||||
|
@ -61,7 +61,7 @@ public class AtsStationService {
|
|||||||
station.setTotalGuideLock(true);
|
station.setTotalGuideLock(true);
|
||||||
List<Switch> switches = simulation.getRepository().getSwitchListByDeviceStationCode(station.getCode());
|
List<Switch> switches = simulation.getRepository().getSwitchListByDeviceStationCode(station.getCode());
|
||||||
if (!CollectionUtils.isEmpty(switches)) {
|
if (!CollectionUtils.isEmpty(switches)) {
|
||||||
switches.forEach(s -> s.setMasterGuideLock(true));
|
switches.forEach(s -> s.setSingleLock(true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ public class AtsStationService {
|
|||||||
station.setTotalGuideLock(false);
|
station.setTotalGuideLock(false);
|
||||||
List<Switch> switches = simulation.getRepository().getSwitchListByDeviceStationCode(station.getCode());
|
List<Switch> switches = simulation.getRepository().getSwitchListByDeviceStationCode(station.getCode());
|
||||||
if (!CollectionUtils.isEmpty(switches)) {
|
if (!CollectionUtils.isEmpty(switches)) {
|
||||||
switches.forEach(s -> s.setMasterGuideLock(false));
|
switches.forEach(s -> s.setSingleLock(false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,6 +217,20 @@ public class AtsStationService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求连锁控处理
|
||||||
|
*/
|
||||||
|
public void applyForInterlockControl(Simulation simulation, SimulationMember fromMember, List<String> stationCodes) {
|
||||||
|
if (CollectionUtils.isEmpty(stationCodes)) {
|
||||||
|
throw new SimulationException(SimulationExceptionType.Operation_Handle_FAIL, "连锁控的车站不能为空");
|
||||||
|
}
|
||||||
|
stationCodes.forEach(stationCode -> {
|
||||||
|
Station station = getStation(simulation, stationCode);
|
||||||
|
station.setControlMode(Station.ControlMode.Interlock);
|
||||||
|
});
|
||||||
|
atsMessageCollectAndDispatcher.handlerOperateMessage(simulation, new OperationMessage(fromMember.getId(), new HashSet<>(Collections.singleton(fromMember)), Operation.Type.CM_Reply_Interlock_Control, null, true, stationCodes));
|
||||||
|
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 回复站控请求c
|
* 回复站控请求c
|
||||||
*/
|
*/
|
||||||
|
@ -305,6 +305,9 @@ public interface CiApiService {
|
|||||||
*/
|
*/
|
||||||
void restart(Simulation simulation, Station station);
|
void restart(Simulation simulation, Station station);
|
||||||
|
|
||||||
|
/**上电解锁*/
|
||||||
|
void powerOnUnlock(Simulation simulation, Station station);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 站台紧急停车
|
* 站台紧急停车
|
||||||
*/
|
*/
|
||||||
|
@ -18,6 +18,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.time.LocalTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@ -397,7 +398,7 @@ public class CiApiServiceImpl implements CiApiService {
|
|||||||
}
|
}
|
||||||
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(signal.isClose(), String.format("信号机[%s]需处于关闭状态", signal.getCode()));
|
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(signal.isClose(), String.format("信号机[%s]需处于关闭状态", signal.getCode()));
|
||||||
boolean signalApproachOccupied = signal.getApproachPathList()
|
boolean signalApproachOccupied = signal.getApproachPathList()
|
||||||
.stream().anyMatch(sectionPath -> sectionPath.getLogicList().stream().anyMatch(Section::isOccupied));
|
.stream().anyMatch(sectionPath -> sectionPath.getSectionList().stream().anyMatch(Section::isOccupied));
|
||||||
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(signalApproachOccupied,
|
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(signalApproachOccupied,
|
||||||
String.format("对%s开放引导操作失败,接近区段没有列车占用", signal.getName()));
|
String.format("对%s开放引导操作失败,接近区段没有列车占用", signal.getName()));
|
||||||
//办理引导进路或开放引导信号
|
//办理引导进路或开放引导信号
|
||||||
@ -468,8 +469,21 @@ public class CiApiServiceImpl implements CiApiService {
|
|||||||
.filter(signal -> signal.getDeviceStation().equals(deviceStation)).collect(Collectors.toList());
|
.filter(signal -> signal.getDeviceStation().equals(deviceStation)).collect(Collectors.toList());
|
||||||
signals.forEach(Signal::reset);
|
signals.forEach(Signal::reset);
|
||||||
deviceStation.setInterlockMachineStarting(false);
|
deviceStation.setInterlockMachineStarting(false);
|
||||||
|
deviceStation.setRestartTime(LocalTime.now());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void powerOnUnlock(Simulation simulation, Station station){
|
||||||
|
if (!station.isCentralized()) {
|
||||||
|
station = station.getDeviceStation();
|
||||||
|
}
|
||||||
|
Station deviceStation = station;
|
||||||
|
if (Objects.nonNull(deviceStation.getRestartTime()) && deviceStation.getRestartTime().plusMinutes(8).isBefore(LocalTime.now())) {
|
||||||
|
List<Section> sections = simulation.getRepository().getSectionList();
|
||||||
|
sections.stream().filter(section -> Objects.equals(section.getDeviceStation(), deviceStation)).forEach(Section::faultUnlock);
|
||||||
|
}
|
||||||
|
throw BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.exception("无效操作或连锁机重启过8分钟需手动解锁");
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public void standEB(Simulation simulation, Stand stand) {
|
public void standEB(Simulation simulation, Stand stand) {
|
||||||
if (stand.getEsp() == null)
|
if (stand.getEsp() == null)
|
||||||
|
@ -538,7 +538,9 @@ public class Route extends MapNamedElement {
|
|||||||
}
|
}
|
||||||
return sections;
|
return sections;
|
||||||
}
|
}
|
||||||
|
public boolean routeLastSection(Section section) {
|
||||||
|
return Objects.equals(this.sectionList.get(sectionList.size()-1),section);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 进路检查失败原因
|
* 进路检查失败原因
|
||||||
*/
|
*/
|
||||||
|
@ -109,6 +109,11 @@ public class Stand extends MayOutOfOrderDevice {
|
|||||||
*/
|
*/
|
||||||
private boolean runLevelTimeForever;
|
private boolean runLevelTimeForever;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 区间列车数量限制(自动扣车)(不限制-1)
|
||||||
|
*/
|
||||||
|
private int trainLimit;
|
||||||
|
|
||||||
/*停站时间相关*/
|
/*停站时间相关*/
|
||||||
/**
|
/**
|
||||||
* 停车时间(自动为-1)
|
* 停车时间(自动为-1)
|
||||||
|
@ -12,6 +12,7 @@ import lombok.NonNull;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.time.LocalTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -156,6 +157,11 @@ public class Station extends MayOutOfOrderDevice {
|
|||||||
*/
|
*/
|
||||||
private boolean interlockMachineStarting;
|
private boolean interlockMachineStarting;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联锁机重启时间
|
||||||
|
*/
|
||||||
|
private LocalTime restartTime;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reset() {
|
public void reset() {
|
||||||
super.reset();
|
super.reset();
|
||||||
@ -473,6 +479,7 @@ public class Station extends MayOutOfOrderDevice {
|
|||||||
if (!Objects.equals(this, device.getFault()))
|
if (!Objects.equals(this, device.getFault()))
|
||||||
return;
|
return;
|
||||||
station.setInterlockMachineStarting(true);
|
station.setInterlockMachineStarting(true);
|
||||||
|
station.setRestartTime(null);
|
||||||
station.setFault(null);
|
station.setFault(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,9 @@ public class StandStatus extends DeviceStatus {
|
|||||||
@JsonSerialize(using = Boolean2NumSerializer.class)
|
@JsonSerialize(using = Boolean2NumSerializer.class)
|
||||||
private boolean runLevelTimeForever;
|
private boolean runLevelTimeForever;
|
||||||
|
|
||||||
|
/**区间列车数量限制(不限制为-1)*/
|
||||||
|
private int trainLimit;
|
||||||
|
|
||||||
/**停车时间(自动为-1)*/
|
/**停车时间(自动为-1)*/
|
||||||
private int parkingTime;
|
private int parkingTime;
|
||||||
|
|
||||||
@ -97,6 +100,7 @@ public class StandStatus extends DeviceStatus {
|
|||||||
}
|
}
|
||||||
this.runLevelTime = stand.getRunLevelTime();
|
this.runLevelTime = stand.getRunLevelTime();
|
||||||
this.runLevelTimeForever = stand.isRunLevelTimeForever();
|
this.runLevelTimeForever = stand.isRunLevelTimeForever();
|
||||||
|
this.trainLimit = stand.getTrainLimit();
|
||||||
this.parkingTime = stand.getParkingTime();
|
this.parkingTime = stand.getParkingTime();
|
||||||
this.parkingAlwaysValid = stand.isParkingAlwaysValid();
|
this.parkingAlwaysValid = stand.isParkingAlwaysValid();
|
||||||
this.noStatus = stand.isNoStatus();
|
this.noStatus = stand.isNoStatus();
|
||||||
@ -170,6 +174,11 @@ public class StandStatus extends DeviceStatus {
|
|||||||
status.setRunLevelTimeForever(this.runLevelTimeForever);
|
status.setRunLevelTimeForever(this.runLevelTimeForever);
|
||||||
change = true;
|
change = true;
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(this.trainLimit, stand.getTrainLimit())) {
|
||||||
|
this.trainLimit = stand.getTrainLimit();
|
||||||
|
status.setTrainLimit(this.trainLimit);
|
||||||
|
change = true;
|
||||||
|
}
|
||||||
if (!Objects.equals(this.parkingTime, stand.getParkingTime())) {
|
if (!Objects.equals(this.parkingTime, stand.getParkingTime())) {
|
||||||
this.parkingTime = stand.getParkingTime();
|
this.parkingTime = stand.getParkingTime();
|
||||||
status.setParkingTime(this.parkingTime);
|
status.setParkingTime(this.parkingTime);
|
||||||
@ -203,6 +212,7 @@ public class StandStatus extends DeviceStatus {
|
|||||||
StandStatusVO statusVO = new StandStatusVO((Stand) device);
|
StandStatusVO statusVO = new StandStatusVO((Stand) device);
|
||||||
statusVO.setParkingAlwaysValid(parkingAlwaysValid);
|
statusVO.setParkingAlwaysValid(parkingAlwaysValid);
|
||||||
statusVO.setParkingTime(parkingTime);
|
statusVO.setParkingTime(parkingTime);
|
||||||
|
statusVO.setTrainLimit(trainLimit);
|
||||||
statusVO.setRunLevelTimeForever(runLevelTimeForever);
|
statusVO.setRunLevelTimeForever(runLevelTimeForever);
|
||||||
statusVO.setRunLevelTime(runLevelTime);
|
statusVO.setRunLevelTime(runLevelTime);
|
||||||
statusVO.setAssignSkip(assignSkip);
|
statusVO.setAssignSkip(assignSkip);
|
||||||
|
@ -10,6 +10,7 @@ import club.joylink.rtss.util.jsonSerialize.Boolean2NumDeserializer;
|
|||||||
import club.joylink.rtss.util.jsonSerialize.Boolean2NumSerializer;
|
import club.joylink.rtss.util.jsonSerialize.Boolean2NumSerializer;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.time.LocalTime;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,6 +51,9 @@ public class StationStatus extends DeviceStatus {
|
|||||||
*/
|
*/
|
||||||
private Integer validDuration;
|
private Integer validDuration;
|
||||||
|
|
||||||
|
/**连锁机上电重启时间*/
|
||||||
|
private LocalTime restartTime;
|
||||||
|
|
||||||
public StationStatus(Station station) {
|
public StationStatus(Station station) {
|
||||||
super(station.getCode(), station.getDeviceType());
|
super(station.getCode(), station.getDeviceType());
|
||||||
this.controlMode = station.getControlMode();
|
this.controlMode = station.getControlMode();
|
||||||
@ -58,6 +62,7 @@ public class StationStatus extends DeviceStatus {
|
|||||||
this.applicantId = station.getApplicantId();
|
this.applicantId = station.getApplicantId();
|
||||||
this.apply2TheControlMode = station.getApply2TheControlMode();
|
this.apply2TheControlMode = station.getApply2TheControlMode();
|
||||||
this.validDuration = station.getValidDurationInSeconds();
|
this.validDuration = station.getValidDurationInSeconds();
|
||||||
|
this.restartTime = station.getRestartTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -95,6 +100,12 @@ public class StationStatus extends DeviceStatus {
|
|||||||
this.validDuration = station.getValidDurationInSeconds();
|
this.validDuration = station.getValidDurationInSeconds();
|
||||||
}
|
}
|
||||||
status.setValidDuration(validDuration);
|
status.setValidDuration(validDuration);
|
||||||
|
|
||||||
|
if (!Objects.equals(this.restartTime, station.getRestartTime())) {
|
||||||
|
change = true;
|
||||||
|
this.restartTime = station.getRestartTime();
|
||||||
|
status.setRestartTime(restartTime);
|
||||||
|
}
|
||||||
return change;
|
return change;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,6 +118,7 @@ public class StationStatus extends DeviceStatus {
|
|||||||
statusVO.setApplicantId(applicantId);
|
statusVO.setApplicantId(applicantId);
|
||||||
statusVO.setApply2TheControlMode(apply2TheControlMode);
|
statusVO.setApply2TheControlMode(apply2TheControlMode);
|
||||||
statusVO.setValidDuration(validDuration);
|
statusVO.setValidDuration(validDuration);
|
||||||
|
statusVO.setRestartTime(restartTime);
|
||||||
return statusVO;
|
return statusVO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,9 @@ public class StandStatusVO extends DeviceStatusVO {
|
|||||||
@JsonSerialize(using = Boolean2NumSerializer.class)
|
@JsonSerialize(using = Boolean2NumSerializer.class)
|
||||||
private Boolean runLevelTimeForever;
|
private Boolean runLevelTimeForever;
|
||||||
|
|
||||||
|
/**区间列车数量限制(自不限制-1)*/
|
||||||
|
private Integer trainLimit;
|
||||||
|
|
||||||
/**停车时间(自动为-1)*/
|
/**停车时间(自动为-1)*/
|
||||||
private Integer parkingTime;
|
private Integer parkingTime;
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ import lombok.Getter;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车站状态
|
* 车站状态
|
||||||
@ -49,6 +50,8 @@ public class StationStatusVO extends DeviceStatusVO {
|
|||||||
@JsonInclude()
|
@JsonInclude()
|
||||||
private Integer validDuration;
|
private Integer validDuration;
|
||||||
|
|
||||||
|
private LocalTime restartTime;
|
||||||
|
|
||||||
public StationStatusVO(Station station) {
|
public StationStatusVO(Station station) {
|
||||||
super(station.getCode(), station.getDeviceType());
|
super(station.getCode(), station.getDeviceType());
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.tool;
|
package club.joylink.rtss.simulation.cbtc.tool;
|
||||||
|
|
||||||
|
import club.joylink.rtss.simulation.cbtc.ATS.service.AtsTrainLoadService;
|
||||||
import club.joylink.rtss.simulation.cbtc.CI.service.RouteService;
|
import club.joylink.rtss.simulation.cbtc.CI.service.RouteService;
|
||||||
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.*;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.support.SectionPosition;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealitySignal;
|
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealitySignal;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealitySwitch;
|
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealitySwitch;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -25,6 +28,8 @@ public class DeviceStatusModifyTool {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RouteService routeService;
|
private RouteService routeService;
|
||||||
|
@Autowired
|
||||||
|
private AtsTrainLoadService atsTrainLoadService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 直接开放进路
|
* 直接开放进路
|
||||||
@ -238,4 +243,8 @@ public class DeviceStatusModifyTool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void loadManualTrainOfGroup(Simulation simulation, String groupNumber, Section section , boolean right){
|
||||||
|
atsTrainLoadService.loadSpareTrain(simulation, groupNumber, section.getCode(),right);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,8 @@ public class OperateDefinitionConfig {
|
|||||||
//折返策略按钮
|
//折返策略按钮
|
||||||
private Boolean tbStrategyBT;
|
private Boolean tbStrategyBT;
|
||||||
|
|
||||||
|
private Boolean guideTotalLockBT;
|
||||||
|
|
||||||
private List<String> sectionTypes;//区段生成指定类型
|
private List<String> sectionTypes;//区段生成指定类型
|
||||||
|
|
||||||
public boolean isAtp() {
|
public boolean isAtp() {
|
||||||
@ -62,4 +64,10 @@ public class OperateDefinitionConfig {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
public boolean guideTotalLockButton(){
|
||||||
|
if(Objects.nonNull(guideTotalLockBT)){
|
||||||
|
return guideTotalLockBT;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,6 +189,14 @@ public class OperateDefinitionVO {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean guideTotalLockButton() {
|
||||||
|
OperateDefinitionConfig routeSettingConfig = this.getRouteSettingConfig();
|
||||||
|
if (Objects.nonNull(routeSettingConfig)) {
|
||||||
|
return routeSettingConfig.guideTotalLockButton();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public List<String> getSectionTypes() {
|
public List<String> getSectionTypes() {
|
||||||
OperateDefinitionConfig routeSettingConfig = this.getRouteSettingConfig();
|
OperateDefinitionConfig routeSettingConfig = this.getRouteSettingConfig();
|
||||||
if (Objects.nonNull(routeSettingConfig)) {
|
if (Objects.nonNull(routeSettingConfig)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user