自动进路和折返 按钮实训生成

This commit is contained in:
DU 2021-01-28 17:57:38 +08:00
parent 05ab248b18
commit 2fdda0a4d1
10 changed files with 156 additions and 124 deletions

View File

@ -11,6 +11,8 @@ import club.joylink.rtss.vo.client.OperateDefinitionVO;
import club.joylink.rtss.vo.client.OperatePlaceholderVO;
import club.joylink.rtss.vo.client.OperateStepVO;
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.MapCycleButtonVO;
import club.joylink.rtss.vo.client.training.TrainingNewVO;
import club.joylink.rtss.vo.client.training.TrainingStepVO;
import org.springframework.util.StringUtils;
@ -34,8 +36,9 @@ public interface GeneratorNew {
* @param operateDefinitionVO
* @return
*/
default TrainingNewVO build(GenerateConfig config, Simulation simulation, MapElement mapDevice,
default TrainingNewVO build(GenerateConfig config, Simulation simulation, MapElement mapDevice, Object mapButton,
OperateDefinitionVO operateDefinitionVO) {
// 现地设置站控
if (BusinessConsts.MapPrd.PrdType.Type01.equals(config.getPrdType())) {
switch (mapDevice.getDeviceType()) {
@ -97,71 +100,29 @@ public interface GeneratorNew {
// 设置定位
if (MapElement.DeviceType.ROUTE.equals(mapDevice.getDeviceType())) {
trainingVO.setLocateDeviceCode(((Route) mapDevice).getStart().getCode());
// stepList.get(0).setDeviceCode(((Route) mapDevice).getStart().getCode());
// //哈尔滨线路特殊操作特别设置
// if (BusinessConsts.MapPrd.PrdType.Type01.equals(config.getPrdType()) && RealLineEnum.HarBin_Line1.getCode().equals(simulation.getBuildParams().getMap().getLineCode())) {
// switch (Operation.Type.valueOf(operateDefinitionVO.getOperateType())) {
// case Signal_Set_Route:
// case Signal_Cancel_Route:
// case Signal_Set_Guide:
// case Signal_Cancel_Guide:
// stepList.get(1).setDeviceCode(((Route) mapDevice).getDestination().getCode());
// break;
// }
// }
// if (BusinessConsts.MapPrd.PrdType.Type01.equals(config.getPrdType()) && RealLineEnum.BeiJing_Line1.getCode().equals(simulation.getBuildParams().getMap().getLineCode())) {
// switch (Operation.Type.valueOf(operateDefinitionVO.getOperateType())) {
// case Signal_Set_Route:
// stepList.get(0).setDeviceCode(null);
// stepList.get(1).setDeviceCode(((Route) mapDevice).getStart().getCode());
// stepList.get(2).setDeviceCode(((Route) mapDevice).getDestination().getCode());
// break;
// case Signal_Cancel_Route:
// stepList.get(0).setDeviceCode(null);
// stepList.get(1).setDeviceCode(((Route) mapDevice).getStart().getCode());
// break;
// }
// }
//
// if (BusinessConsts.MapPrd.PrdType.Type01.equals(config.getPrdType()) && RealLineEnum.Foshan_Tram.getCode().equals(simulation.getBuildParams().getMap().getLineCode())) {
// switch (Operation.Type.valueOf(operateDefinitionVO.getOperateType())) {
// case Signal_Cancel_Route:
// case Signal_Total_Cancel:
// stepList.get(0).setDeviceCode(null);
// stepList.get(1).setDeviceCode(((Route) mapDevice).getStart().getCode());
// break;
// }
// }
//
// if (BusinessConsts.MapPrd.PrdType.Type01.equals(config.getPrdType()) && RealLineEnum.ChengDu_Line3.getCode().equals(simulation.getBuildParams().getMap().getLineCode())) {
// switch (Operation.Type.valueOf(operateDefinitionVO.getOperateType())) {
// case Signal_Set_Route:
// case Signal_Cancel_Route:
// case Signal_Set_Guide:
// stepList.get(0).setDeviceCode(null);
// stepList.get(1).setDeviceCode(((Route) mapDevice).getStart().getCode());
// break;
// }
// }
} else {
trainingVO.setLocateDeviceCode(mapDevice.getCode());
if(Objects.isNull(mapButton)){
trainingVO.setLocateDeviceCode(mapDevice.getCode());
}else{
if(mapButton instanceof MapCycleButtonVO){
trainingVO.setLocateDeviceCode(((MapCycleButtonVO)mapButton).getCode());
}else if(mapButton instanceof MapAutomaticRouteButtonVO){
trainingVO.setLocateDeviceCode(((MapAutomaticRouteButtonVO)mapButton).getCode());
}
}
}
// 替换占位符
if (containPlaceholder(trainingVO.getName())) {
trainingVO.setName(replacePlaceholder(trainingVO.getName(), placeholderVOMap, mapDevice, simulation.getBuildParams().getMap()));
trainingVO.setName(replacePlaceholder(trainingVO.getName(), placeholderVOMap, mapDevice, mapButton,simulation.getBuildParams().getMap()));
}
if (containPlaceholder(trainingVO.getRemarks())) {
trainingVO.setRemarks(replacePlaceholder(trainingVO.getRemarks(), placeholderVOMap, mapDevice, simulation.getBuildParams().getMap()));
trainingVO.setRemarks(replacePlaceholder(trainingVO.getRemarks(), placeholderVOMap, mapDevice,mapButton, simulation.getBuildParams().getMap()));
}
// 添加步骤
List<TrainingStepVO> steps = new ArrayList<>(stepList.size());
stepList.forEach(operateStepVO -> {
TrainingStepVO stepVO = new TrainingStepVO(operateStepVO);
// if(StringUtils.hasText(stepVO.getCode()) && MapElement.DeviceType.ROUTE.equals(mapDevice.getDeviceType())) {
// stepVO.setCode(((Route)mapDevice).getStart().getCode());
// }
if (containPlaceholder(stepVO.getTip())) {
if (StringUtils.hasText(operateStepVO.getCodeType())) {
TrainingConsts.CodeType codeType = TrainingConsts.CodeType.valueOf(operateStepVO.getCodeType());
@ -175,13 +136,13 @@ public interface GeneratorNew {
operSignal = ((Route) mapDevice).getStart();
}
}
stepVO.setTip(replacePlaceholder(stepVO.getTip(), placeholderVOMap, Objects.isNull(operSignal) ? mapDevice : operSignal, simulation.getBuildParams().getMap()));
stepVO.setTip(replacePlaceholder(stepVO.getTip(), placeholderVOMap, Objects.isNull(operSignal) ? mapDevice : operSignal,null, simulation.getBuildParams().getMap()));
} else {
stepVO.setTip(replacePlaceholder(stepVO.getTip(), placeholderVOMap, mapDevice, simulation.getBuildParams().getMap()));
stepVO.setTip(replacePlaceholder(stepVO.getTip(), placeholderVOMap, mapDevice, null,simulation.getBuildParams().getMap()));
}
}
if (containPlaceholder(stepVO.getVal())) {
stepVO.setVal(replacePlaceholder(stepVO.getVal(), placeholderVOMap,mapDevice, simulation.getBuildParams().getMap()));
stepVO.setVal(replacePlaceholder(stepVO.getVal(), placeholderVOMap,mapDevice,null, simulation.getBuildParams().getMap()));
}
steps.add(stepVO);
});
@ -190,13 +151,14 @@ public interface GeneratorNew {
return trainingVO;
}
/**
* 是否包含占位符
*
* @param string
* @return
*/
default boolean containPlaceholder(String string) {
private boolean containPlaceholder(String string) {
if (StringUtils.hasText(string)) {
return Pattern.matches(".*\\{\\d+}.*", string);
}
@ -211,7 +173,7 @@ public interface GeneratorNew {
* @param mapDevice
* @return
*/
default String replacePlaceholder(String str, Map<String, OperatePlaceholderVO> placeholderVOMap, MapElement mapDevice, MapVO map) {
private String replacePlaceholder(String str, Map<String, OperatePlaceholderVO> placeholderVOMap, MapElement mapDevice,Object mapButton, MapVO map) {
Pattern pattern = Pattern.compile(".*?(\\{(\\d+)}).*?");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
@ -219,7 +181,7 @@ public interface GeneratorNew {
OperatePlaceholderVO operatePlaceholderVO = placeholderVOMap.get(group);
switch (operatePlaceholderVO.getType()) {
case PlaceholderType.Type01:
String replace = ReflectionUtils.invokeGetter(mapDevice, operatePlaceholderVO.getValNew()).toString();
String replace = ReflectionUtils.invokeGetter(Objects.isNull(mapButton)?mapDevice:mapButton, operatePlaceholderVO.getValNew()).toString();
str = str.replace(matcher.group(1), replace);
break;
case PlaceholderType.Type02: {

View File

@ -41,7 +41,7 @@ public class ControlGeneratorNew implements GeneratorNew {
// 其他操作不生成
continue;
}
trainingVOList.add(build(config, simulation, station, operateDefinitionVO));
trainingVOList.add(build(config, simulation, station, null,operateDefinitionVO));
// 仿真重置
simulation.reset();
}

View File

@ -91,7 +91,7 @@ public class SectionGeneratorNew implements GeneratorNew {
// 其他操作不生成
continue;
}
trainingVOList.add(this.build(config, simulation, section, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, section,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -105,7 +105,7 @@ public class SectionGeneratorNew implements GeneratorNew {
section.setOverlapLock(true);
section.setRouteLock(true);
// settingDirectly(simulation, route);
TrainingNewVO build = build(config, simulation, section, operateDefinitionVO);
TrainingNewVO build = build(config, simulation, section,null, operateDefinitionVO);
//恢复背景
section.setFaultLock(false);
@ -118,7 +118,7 @@ public class SectionGeneratorNew implements GeneratorNew {
protected TrainingNewVO sectionCutOff(Section section, GenerateConfig config, Simulation simulation,
OperateDefinitionVO operateDefinitionVO) {
// 无背景
return build(config, simulation, section, operateDefinitionVO);
return build(config, simulation, section, null,operateDefinitionVO);
}
protected TrainingNewVO sectionActive(Section section, GenerateConfig config, Simulation simulation,
@ -134,7 +134,7 @@ public class SectionGeneratorNew implements GeneratorNew {
parentSection.setCutOff(true);
parentSection.getLogicList().forEach(ls -> ls.setCutOff(true));
}
TrainingNewVO build = build(config, simulation, section, operateDefinitionVO);
TrainingNewVO build = build(config, simulation, section,null, operateDefinitionVO);
// 区段切除
if(section.isPhysical()){
section.setCutOff(true);
@ -154,13 +154,13 @@ public class SectionGeneratorNew implements GeneratorNew {
OperateDefinitionVO operateDefinitionVO) {
// 设置故障
// TODO
return build(config, simulation, section, operateDefinitionVO);
return build(config, simulation, section,null, operateDefinitionVO);
}
protected TrainingNewVO sectionBlock(Section section, GenerateConfig config, Simulation simulation,
OperateDefinitionVO operateDefinitionVO) {
// 无背景
return build(config, simulation, section, operateDefinitionVO);
return build(config, simulation, section,null, operateDefinitionVO);
}
protected TrainingNewVO sectionUnblock(Section section, GenerateConfig config, Simulation simulation,
@ -176,7 +176,7 @@ public class SectionGeneratorNew implements GeneratorNew {
}
}
// sectionService.blockade(section);
TrainingNewVO build = build(config, simulation, section, operateDefinitionVO);
TrainingNewVO build = build(config, simulation, section,null, operateDefinitionVO);
section.setBlockade(false);
if (Objects.nonNull(section.getParent())) { // 取计轴区段
@ -200,7 +200,7 @@ public class SectionGeneratorNew implements GeneratorNew {
} else {
section.setSpeedUpLimit(-1);
}
TrainingNewVO build = build(config, simulation, section, operateDefinitionVO);
TrainingNewVO build = build(config, simulation, section, null,operateDefinitionVO);
// 区段设置限速
if (section.isSwitchTrack()) {
@ -226,7 +226,7 @@ public class SectionGeneratorNew implements GeneratorNew {
} else {
section.setSpeedUpLimit(LIMITED_SPEED);
}
TrainingNewVO build = build(config, simulation, section, operateDefinitionVO);
TrainingNewVO build = build(config, simulation, section, null,operateDefinitionVO);
if (section.isSwitchTrack()) {
Switch relSwitch = section.getRelSwitch();
@ -241,7 +241,7 @@ public class SectionGeneratorNew implements GeneratorNew {
protected TrainingNewVO sectionDetail(Section section, GenerateConfig config, Simulation simulation, OperateDefinitionVO operateDefinitionVO) {
//区段详情
return build(config, simulation, section, operateDefinitionVO);
return build(config, simulation, section, null,operateDefinitionVO);
}
}

View File

@ -33,7 +33,15 @@ public class SignalGeneratorNew implements GeneratorNew {
case Signal_Set_Auto_Turn_Back: {
List<Cycle> cycleList = simulation.getRepository().getCycleList();
for (Cycle cycle : cycleList) {
trainingVOList.add(this.build(config, simulation, cycle, operateDefinitionVO));
if(operateDefinitionVO.autoCycleButton()){
simulation.getBuildParams().getMap().getGraphDataNew().getCycleButtonList()
.stream().filter(mapCycleButtonVO -> mapCycleButtonVO.getCycleCode().equals(cycle.getCode()))
.forEach(button -> {
trainingVOList.add(this.build(config, simulation, cycle,button, operateDefinitionVO));
});
}else {
trainingVOList.add(this.build(config, simulation, cycle,null, operateDefinitionVO));
}
// 仿真重置
simulation.reset();
}
@ -44,7 +52,15 @@ public class SignalGeneratorNew implements GeneratorNew {
List<Cycle> cycleList = simulation.getRepository().getCycleList();
for (Cycle cycle : cycleList) {
cycle.setSetUp(true);
trainingVOList.add(this.build(config, simulation, cycle, operateDefinitionVO));
if(operateDefinitionVO.autoCycleButton()){
simulation.getBuildParams().getMap().getGraphDataNew().getCycleButtonList()
.stream().filter(mapCycleButtonVO -> mapCycleButtonVO.getCycleCode().equals(cycle.getCode()))
.forEach(button -> {
trainingVOList.add(this.build(config, simulation, cycle,button, operateDefinitionVO));
});
}else{
trainingVOList.add(this.build(config, simulation, cycle,null, operateDefinitionVO));
}
// 仿真重置
simulation.reset();
}
@ -73,7 +89,7 @@ public class SignalGeneratorNew implements GeneratorNew {
if (route.isGuide()) { // 引导进路跳过
continue;
}
trainingVOList.add(this.build(config, simulation, route, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, route,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -83,7 +99,7 @@ public class SignalGeneratorNew implements GeneratorNew {
case Signal_Set_CI_Auto_Trigger: {
if (!CollectionUtils.isEmpty(routeList)) {
if (routeLikeHa1) {
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal,null, operateDefinitionVO));
simulation.reset();
continue;
} else {
@ -96,7 +112,7 @@ public class SignalGeneratorNew implements GeneratorNew {
if (route.isGuide()) { // 引导进路跳过
continue;
}
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -107,7 +123,7 @@ public class SignalGeneratorNew implements GeneratorNew {
case Signal_Close_Auto_Setting: {
if (!CollectionUtils.isEmpty(routeList)) {
if (routeLikeHa1 || operateDefinitionVO.onlyOperateSignal()) {
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal, null, operateDefinitionVO));
simulation.reset();
continue;
} else {
@ -120,7 +136,7 @@ public class SignalGeneratorNew implements GeneratorNew {
if (route.isGuide()) { // 引导进路跳过
continue;
}
trainingVOList.add(this.build(config, simulation, route, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, route,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -142,7 +158,7 @@ public class SignalGeneratorNew implements GeneratorNew {
continue;
}
deviceStatusModifyTool.openRouteDirect(simulation, route);
trainingVOList.add(this.build(config, simulation, route, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, route, null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -172,7 +188,7 @@ public class SignalGeneratorNew implements GeneratorNew {
continue;
}
this.deviceStatusModifyTool.openRouteDirect(simulation, route);
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -188,7 +204,7 @@ public class SignalGeneratorNew implements GeneratorNew {
}
this.deviceStatusModifyTool.openRouteDirect(simulation, route);
this.deviceStatusModifyTool.closeSignalDirectly(route.getStart());
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -207,7 +223,7 @@ public class SignalGeneratorNew implements GeneratorNew {
for (Route route : routeList) {
route.setAtsControl(false);
}
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal, null, operateDefinitionVO));
// 仿真重置
simulation.reset();
} else {
@ -216,7 +232,7 @@ public class SignalGeneratorNew implements GeneratorNew {
continue;
}
route.setAtsControl(false);
trainingVOList.add(this.build(config, simulation, route, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, route,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -232,7 +248,15 @@ public class SignalGeneratorNew implements GeneratorNew {
.collect(Collectors.toList());
for (Route route : fltRouteList) {
deviceStatusModifyTool.openRouteDirect(simulation, route);
trainingVOList.add(this.build(config, simulation, route.getStart(), operateDefinitionVO));
if (operateDefinitionVO.autoRouteButton()) {
simulation.getBuildParams().getMap().getGraphDataNew().getAutomaticRouteButtonList()
.stream().filter(automaticRouteButtonVO -> automaticRouteButtonVO.getAutomaticRouteCode().equals(route.getCode()))
.forEach(button -> {
trainingVOList.add(this.build(config, simulation, route.getStart(), button, operateDefinitionVO));
});
} else {
trainingVOList.add(this.build(config, simulation, route.getStart(), null, operateDefinitionVO));
}
// 仿真重置
simulation.reset();
}
@ -248,7 +272,15 @@ public class SignalGeneratorNew implements GeneratorNew {
for (Route route : fltRouteList) {
deviceStatusModifyTool.openRouteDirect(simulation, route);
route.setFleetMode(true);
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
if (operateDefinitionVO.autoRouteButton()) {
simulation.getBuildParams().getMap().getGraphDataNew().getAutomaticRouteButtonList()
.stream().filter(automaticRouteButtonVO -> automaticRouteButtonVO.getAutomaticRouteCode().equals(route.getCode()))
.forEach(button -> {
trainingVOList.add(this.build(config, simulation,signal, button, operateDefinitionVO));
});
} else {
trainingVOList.add(this.build(config, simulation, signal,null, operateDefinitionVO));
}
// 仿真重置
simulation.reset();
}
@ -265,13 +297,13 @@ public class SignalGeneratorNew implements GeneratorNew {
for (Route route : arcRouteList) {
route.setCiControl(true);
}
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal, null, operateDefinitionVO));
// 仿真重置
simulation.reset();
} else {
for (Route route : arcRouteList) {
route.setCiControl(true);
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -310,14 +342,14 @@ public class SignalGeneratorNew implements GeneratorNew {
for (Route route : routeList) {
if (!route.isTurnBack()) {
this.deviceStatusModifyTool.openGuideRouteDirect(simulation, route);
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal, null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
}
} else if (Objects.nonNull(signal.getAutoSignal())) { // 信号机是自动信号
this.deviceStatusModifyTool.openGuideSignalDirectly(signal);
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal, null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -336,7 +368,7 @@ public class SignalGeneratorNew implements GeneratorNew {
}
if (!route.isTurnBack()) {
this.deviceStatusModifyTool.openGuideRouteDirect(simulation, route);
trainingVOList.add(this.build(config, simulation, route, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, route,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -355,7 +387,7 @@ public class SignalGeneratorNew implements GeneratorNew {
// 其他操作不生成
continue;
}
trainingVOList.add(this.build(config, simulation, signal, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, signal,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}

View File

@ -92,7 +92,7 @@ public class StandGeneratorNew implements GeneratorNew {
// 其他操作不生成
continue;
}
trainingVOList.add(this.build(config, simulation, stand, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, stand,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}

View File

@ -99,7 +99,7 @@ public class StationGeneratorNew implements GeneratorNew {
// 其他操作不生成
continue;
}
trainingVOList.add(build(config, simulation, station, operateDefinitionVO));
trainingVOList.add(build(config, simulation, station,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}
@ -110,7 +110,7 @@ public class StationGeneratorNew implements GeneratorNew {
tbStationList.forEach(station -> {
if (Objects.equals(Operation.Type.Station_Set_Turn_Back_Strategy.name(), operateDefinitionVO.getOperateType())) {
station.setControlMode(Station.ControlMode.Center);
trainingVOList.add(build(config, simulation, station, operateDefinitionVO));
trainingVOList.add(build(config, simulation, station,null, operateDefinitionVO));
// 仿真重置
simulation.reset();
}

View File

@ -108,7 +108,7 @@ public class SwitchGeneratorNew implements GeneratorNew {
// 其他操作不生成
continue;
}
trainingVOList.add(this.build(config, simulation, aSwitch, operateDefinitionVO));
trainingVOList.add(this.build(config, simulation, aSwitch, null,operateDefinitionVO));
// 仿真重置
simulation.reset();
}

View File

@ -373,24 +373,26 @@ public class Section extends MayOutOfOrderDevice {
* 区段列车出清
*/
public void clearOccupy() {
this.ctOccupied = false;
if (this.isAxleCounter()) {
// 是计轴区段
if (this.getVirtualAxleCounter().isOccupy()) {
if (!CollectionUtils.isEmpty(this.logicList)) {
this.logicList.forEach(logic -> {
logic.setCtOccupied(false);
});
synchronized (this){
this.ctOccupied = false;
if (this.isAxleCounter()) {
// 是计轴区段
if (this.getVirtualAxleCounter().isOccupy()) {
if (!CollectionUtils.isEmpty(this.logicList)) {
this.logicList.forEach(logic -> {
logic.setCtOccupied(false);
});
}
return;
}
return;
}
}
this.nctOccupied = false;
if (!CollectionUtils.isEmpty(this.logicList)) {
this.logicList.forEach(logic -> {
logic.setCtOccupied(false);
logic.setNctOccupied(false);
});
this.nctOccupied = false;
if (!CollectionUtils.isEmpty(this.logicList)) {
this.logicList.forEach(logic -> {
logic.setCtOccupied(false);
logic.setNctOccupied(false);
});
}
}
}
@ -401,8 +403,8 @@ public class Section extends MayOutOfOrderDevice {
*/
public void axleCounterOccupy(boolean right) {
if (!this.isInvalid()) {
this.trainRight = right;
this.nctOccupied = true;
this.trainRight = right;
this.nctOccupied = true;
// if (!CollectionUtils.isEmpty(logicList)) {
// logicList.forEach(logic -> logic.axleCounterOccupy(right));
// }
@ -413,10 +415,10 @@ public class Section extends MayOutOfOrderDevice {
* 计轴占用出清
*/
public void axleCounterClear() {
this.nctOccupied = false;
if (!CollectionUtils.isEmpty(logicList)) {
logicList.forEach(Section::axleCounterClear);
}
this.nctOccupied = false;
if (!CollectionUtils.isEmpty(logicList)) {
logicList.forEach(Section::axleCounterClear);
}
}
/**
@ -489,16 +491,18 @@ public class Section extends MayOutOfOrderDevice {
* @return
*/
public boolean isNonCbtcOccupy() {
boolean ctOcc = this.ctOccupied;
if (!CollectionUtils.isEmpty(this.logicList)) {
for (Section logic : this.logicList) {
if (logic.isCtOccupied()) {
ctOcc = true;
break;
synchronized (this){
boolean ctOcc = this.ctOccupied;
if (!CollectionUtils.isEmpty(this.logicList)) {
for (Section logic : this.logicList) {
if (logic.isCtOccupied()) {
ctOcc = true;
break;
}
}
}
return !ctOcc && this.nctOccupied;
}
return !ctOcc && this.nctOccupied;
}
public List<Section> getAtpSectionListBy(float offset1, float offset2) {

View File

@ -160,4 +160,20 @@ public class OperateDefinitionVO {
}
return false;
}
public boolean autoRouteButton() {
RouteSettingConfig routeSettingConfig = this.getRouteSettingConfig();
if (Objects.nonNull(routeSettingConfig)) {
return routeSettingConfig.autoRouteButton();
}
return false;
}
public boolean autoCycleButton() {
RouteSettingConfig routeSettingConfig = this.getRouteSettingConfig();
if (Objects.nonNull(routeSettingConfig)) {
return routeSettingConfig.autoCycleButton();
}
return false;
}
}

View File

@ -12,6 +12,12 @@ public class RouteSettingConfig {
private RouteType routeType;
private Boolean onlySignalOP;//成都三现地 自动控人工控只一个始端信号机,实训生成名字走信号机策略
//自动进路按钮 MapAutomaticRouteButtonVO Route MapRouteNewVO
private Boolean autoRouteBT;
//自动折返按钮 MapCycleButtonVO Cycle MapAutoReentryVO
private Boolean autoCycleBT;
//引导总锁
public boolean isAtp() {
return RouteType.ATP.equals(this.routeType);
}
@ -32,4 +38,16 @@ public class RouteSettingConfig {
}
return false;
}
public boolean autoRouteButton(){
if(Objects.nonNull(autoRouteBT)){
return autoRouteBT;
}
return false;
}
public boolean autoCycleButton(){
if(Objects.nonNull(autoCycleBT)){
return autoCycleBT;
}
return false;
}
}