修改:道岔相关移动授权计算
This commit is contained in:
parent
85091f8af6
commit
65066fe38f
@ -122,7 +122,9 @@ public class ZCLogicLoop {
|
|||||||
return List.of(closedSection);
|
return List.of(closedSection);
|
||||||
// 如果车尾正常,从车头开始往前查找
|
// 如果车尾正常,从车头开始往前查找
|
||||||
Section section = headPosition.getSection();
|
Section section = headPosition.getSection();
|
||||||
|
MovementAuthority.End switchEnd = checkSwitch(tailSection, section, right);
|
||||||
|
if (switchEnd != null)
|
||||||
|
return List.of(switchEnd);
|
||||||
// 检查列车当前所在进路是否锁闭
|
// 检查列车当前所在进路是否锁闭
|
||||||
MovementAuthority.End end1 = this.checkRouteLock(simulation, section, tailSection, right, train);
|
MovementAuthority.End end1 = this.checkRouteLock(simulation, section, tailSection, right, train);
|
||||||
if (Objects.nonNull(end1)) {
|
if (Objects.nonNull(end1)) {
|
||||||
@ -169,6 +171,10 @@ public class ZCLogicLoop {
|
|||||||
endList.add(unlockedOverlapEnd);
|
endList.add(unlockedOverlapEnd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 道岔
|
||||||
|
MovementAuthority.End end = checkSwitch(section);
|
||||||
|
if (end != null)
|
||||||
|
endList.add(end);
|
||||||
// 轨道尽头/问题道岔
|
// 轨道尽头/问题道岔
|
||||||
Section temp = section.getNextRunningSectionOf(right);
|
Section temp = section.getNextRunningSectionOf(right);
|
||||||
if (Objects.isNull(temp)) { // 到尽头
|
if (Objects.isNull(temp)) { // 到尽头
|
||||||
@ -190,7 +196,7 @@ public class ZCLogicLoop {
|
|||||||
if (cs != null)
|
if (cs != null)
|
||||||
endList.add(cs);
|
endList.add(cs);
|
||||||
|
|
||||||
if (!CollectionUtils.isEmpty(endList)) {
|
if (!CollectionUtils.isEmpty(endList) && endList.size() == 1 && endList.get(0).getType().equals(MovementAuthority.EndType.CLOSED_SIGNAL)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,6 +218,40 @@ public class ZCLogicLoop {
|
|||||||
return endList;
|
return endList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MovementAuthority.End checkSwitch(Section tailSection, Section headSection, boolean right) {
|
||||||
|
Section section = tailSection;
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
if (section.equals(headSection))
|
||||||
|
break;
|
||||||
|
MovementAuthority.End end = checkSwitch(section);
|
||||||
|
if (end != null)
|
||||||
|
return end;
|
||||||
|
section = section.getNextRunningSectionOf(right);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private MovementAuthority.End checkSwitch(Section section) {
|
||||||
|
Switch relSwitch = section.getRelSwitch();
|
||||||
|
if (relSwitch != null) {
|
||||||
|
Route route = relSwitch.getRoute();
|
||||||
|
if (relSwitch.isLoss()) {
|
||||||
|
return new MovementAuthority.End(section, MovementAuthority.EndType.FAULT_SWITCH);
|
||||||
|
} else if (route != null) {
|
||||||
|
List<RouteFls> flsList = route.getFlsList();
|
||||||
|
if (!CollectionUtils.isEmpty(flsList)) {
|
||||||
|
List<RouteFls> fls = flsList.stream()
|
||||||
|
.filter(routeFls -> routeFls.getBase().getASwitch().equals(relSwitch))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (!routeService.isFlsCheckPass(fls)) {
|
||||||
|
return new MovementAuthority.End(section, MovementAuthority.EndType.FAULT_SWITCH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private MovementAuthority.End checkClosedSection(Section section) {
|
private MovementAuthority.End checkClosedSection(Section section) {
|
||||||
if (section.isClosed()) {
|
if (section.isClosed()) {
|
||||||
return new MovementAuthority.End(section, MovementAuthority.EndType.CLOSED_SECTION);
|
return new MovementAuthority.End(section, MovementAuthority.EndType.CLOSED_SECTION);
|
||||||
@ -427,32 +467,20 @@ public class ZCLogicLoop {
|
|||||||
private MovementAuthority.End checkRouteLock(Simulation simulation, Section section, Section tailSection, boolean right, VirtualRealityTrain train) {
|
private MovementAuthority.End checkRouteLock(Simulation simulation, Section section, Section tailSection, boolean right, VirtualRealityTrain train) {
|
||||||
SimulationDataRepository repository = simulation.getRepository();
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
// 判断前方是否有信号机(如果存在信号机,则不判断进路锁闭,以兼容现在列车加载到转换轨没有进路情况)
|
// 判断前方是否有信号机(如果存在信号机,则不判断进路锁闭,以兼容现在列车加载到转换轨没有进路情况)
|
||||||
if (section.isTransferTrack()) {
|
Signal aheadSignal = section.getSignalOf(right);
|
||||||
|
if (Objects.nonNull(aheadSignal)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// Signal aheadSignal = section.getSignalOf(right);
|
|
||||||
// if (Objects.nonNull(aheadSignal)) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
// 先查询是否是已排列的锁闭进路
|
// 先查询是否是已排列的锁闭进路
|
||||||
List<Route> settingRoutes = repository.getSettingRoutes();
|
List<Route> settingRoutes = repository.getSettingRoutes();
|
||||||
boolean lock = false;
|
boolean lock = false;
|
||||||
if (!CollectionUtils.isEmpty(settingRoutes)) {
|
if (!CollectionUtils.isEmpty(settingRoutes)) {
|
||||||
boolean headRoute = false;
|
|
||||||
boolean tailRoute = false;
|
|
||||||
for (Route route : settingRoutes) {
|
for (Route route : settingRoutes) {
|
||||||
if (route.isRight() == right && (route.isRouteSection(section) || route.isRouteSection(tailSection))) {
|
if (route.isRouteSection(section)
|
||||||
if (route.isRouteSection(section))
|
// && !route.isSetting()
|
||||||
headRoute = true;
|
) {
|
||||||
if (route.isRouteSection(tailSection))
|
|
||||||
tailRoute = true;
|
|
||||||
lock = true;
|
lock = true;
|
||||||
List<Switch> switches = screenSwitchesInFront(route, tailSection);
|
break;
|
||||||
if (!this.checkRouteSwitchPosition(route, switches) || !this.isFlsCheckPass(route.getFlsList(), switches)) {
|
|
||||||
return new MovementAuthority.End(section, MovementAuthority.EndType.ROUTE_INTERLOCK_NOT_MET);
|
|
||||||
}
|
|
||||||
if (headRoute && tailRoute)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -475,11 +503,68 @@ public class ZCLogicLoop {
|
|||||||
base = pre;
|
base = pre;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!lock && section.getSignalOf(right) == null) {
|
if (!lock) {
|
||||||
// 未锁闭进路中,设置移动授权终点
|
// 未锁闭进路中,设置移动授权终点
|
||||||
return new MovementAuthority.End(section, MovementAuthority.EndType.UNLOCK_SECTION);
|
return new MovementAuthority.End(section, MovementAuthority.EndType.UNLOCK_SECTION);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
|
||||||
|
// SimulationDataRepository repository = simulation.getRepository();
|
||||||
|
// // 判断前方是否有信号机(如果存在信号机,则不判断进路锁闭,以兼容现在列车加载到转换轨没有进路情况)
|
||||||
|
// if (section.isTransferTrack()) {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
//// Signal aheadSignal = section.getSignalOf(right);
|
||||||
|
//// if (Objects.nonNull(aheadSignal)) {
|
||||||
|
//// return null;
|
||||||
|
//// }
|
||||||
|
// // 先查询是否是已排列的锁闭进路
|
||||||
|
// List<Route> settingRoutes = repository.getSettingRoutes();
|
||||||
|
// boolean lock = false;
|
||||||
|
// if (!CollectionUtils.isEmpty(settingRoutes)) {
|
||||||
|
// boolean headRoute = false;
|
||||||
|
// boolean tailRoute = false;
|
||||||
|
// for (Route route : settingRoutes) {
|
||||||
|
// if (route.isRight() == right && (route.isRouteSection(section) || route.isRouteSection(tailSection))) {
|
||||||
|
// if (route.isRouteSection(section))
|
||||||
|
// headRoute = true;
|
||||||
|
// if (route.isRouteSection(tailSection))
|
||||||
|
// tailRoute = true;
|
||||||
|
// lock = true;
|
||||||
|
// List<Switch> switches = screenSwitchesInFront(route, tailSection);
|
||||||
|
// if (!this.checkRouteSwitchPosition(route, switches) || !this.isFlsCheckPass(route.getFlsList(), switches)) {
|
||||||
|
// return new MovementAuthority.End(section, MovementAuthority.EndType.ROUTE_INTERLOCK_NOT_MET);
|
||||||
|
// }
|
||||||
|
// if (headRoute && tailRoute)
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (!lock) { // 未找到锁闭进路,判断是否自动信号
|
||||||
|
// Section base = section;
|
||||||
|
// int count = 0;
|
||||||
|
// while (Objects.nonNull(base) && count < 20) {
|
||||||
|
// ++count;
|
||||||
|
// // 向反方向查找,找信号机,判断是否自动信号
|
||||||
|
// Section pre = base.getNextRunningSectionOf(!right);
|
||||||
|
// if (Objects.nonNull(pre)) {
|
||||||
|
// Signal signal = pre.getSignalOf(right);
|
||||||
|
// if (Objects.nonNull(signal)) {
|
||||||
|
// if (signal.isAutoSignal()) {
|
||||||
|
// lock = true; // 如果是自动信号,也相当于锁闭
|
||||||
|
// }
|
||||||
|
// break; // 找到信号机,结束
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// base = pre;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (!lock && section.getSignalOf(right) == null) {
|
||||||
|
// // 未锁闭进路中,设置移动授权终点
|
||||||
|
// return new MovementAuthority.End(section, MovementAuthority.EndType.UNLOCK_SECTION);
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkRouteSwitchPosition(Route route, List<Switch> switches) {
|
private boolean checkRouteSwitchPosition(Route route, List<Switch> switches) {
|
||||||
|
@ -388,19 +388,19 @@ public class RouteService {
|
|||||||
for (Section section : sectionList) {
|
for (Section section : sectionList) {
|
||||||
if (section.isSwitchTrack()) {
|
if (section.isSwitchTrack()) {
|
||||||
Switch relSwitch = section.getRelSwitch();
|
Switch relSwitch = section.getRelSwitch();
|
||||||
relSwitch.getA().routeLocking(right);
|
relSwitch.getA().routeLocking(route, right);
|
||||||
if (relSwitch.isNormalPosition()) { // 定位
|
if (relSwitch.isNormalPosition()) { // 定位
|
||||||
relSwitch.getB().routeLocking(right);
|
relSwitch.getB().routeLocking(route, right);
|
||||||
relSwitch.getC().routeUnlocking(right);
|
relSwitch.getC().routeUnlocking(right);
|
||||||
} else if (relSwitch.isReversePosition()) { // 反位
|
} else if (relSwitch.isReversePosition()) { // 反位
|
||||||
relSwitch.getC().routeLocking(right);
|
relSwitch.getC().routeLocking(route, right);
|
||||||
relSwitch.getB().routeUnlocking(right);
|
relSwitch.getB().routeUnlocking(right);
|
||||||
} else { // 失表
|
} else { // 失表
|
||||||
relSwitch.getB().routeLocking(right);
|
relSwitch.getB().routeLocking(route, right);
|
||||||
relSwitch.getC().routeLocking(right);
|
relSwitch.getC().routeLocking(route, right);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
section.routeLocking(right);
|
section.routeLocking(route, right);
|
||||||
}
|
}
|
||||||
// log.debug(section.debugStr() + "因<预先锁闭>锁闭");
|
// log.debug(section.debugStr() + "因<预先锁闭>锁闭");
|
||||||
}
|
}
|
||||||
@ -412,7 +412,7 @@ public class RouteService {
|
|||||||
this.routeFlsControl(simulation, route.getFlsList());
|
this.routeFlsControl(simulation, route.getFlsList());
|
||||||
if (config.isLockFirst()) {
|
if (config.isLockFirst()) {
|
||||||
for (SwitchElement switchElement : switchList) {
|
for (SwitchElement switchElement : switchList) {
|
||||||
switchElement.getASwitch().routeLock();
|
switchElement.getASwitch().routeLock(route);
|
||||||
}
|
}
|
||||||
if (!CollectionUtils.isEmpty(route.getFlsList())) {
|
if (!CollectionUtils.isEmpty(route.getFlsList())) {
|
||||||
for (RouteFls routeFls : route.getFlsList()) {
|
for (RouteFls routeFls : route.getFlsList()) {
|
||||||
@ -660,7 +660,7 @@ public class RouteService {
|
|||||||
boolean right = route.getStart().isRight();
|
boolean right = route.getStart().isRight();
|
||||||
// 进路区段锁闭
|
// 进路区段锁闭
|
||||||
for (Section section : route.getSectionList()) {
|
for (Section section : route.getSectionList()) {
|
||||||
section.routeLocking(right);
|
section.routeLocking(route, right);
|
||||||
if (section.isSwitchTrack()) {
|
if (section.isSwitchTrack()) {
|
||||||
// 道岔锁闭
|
// 道岔锁闭
|
||||||
Switch relSwitch = section.getRelSwitch();
|
Switch relSwitch = section.getRelSwitch();
|
||||||
@ -675,7 +675,7 @@ public class RouteService {
|
|||||||
// 道岔锁闭
|
// 道岔锁闭
|
||||||
for (SwitchElement element : route.getSwitchList()) {
|
for (SwitchElement element : route.getSwitchList()) {
|
||||||
Switch aSwitch = element.getASwitch();
|
Switch aSwitch = element.getASwitch();
|
||||||
aSwitch.routeLock();
|
aSwitch.routeLock(route);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 延续保护
|
// 延续保护
|
||||||
@ -1303,7 +1303,7 @@ public class RouteService {
|
|||||||
boolean right = route.getStart().isRight();
|
boolean right = route.getStart().isRight();
|
||||||
for (Section section : route.getSectionList()) {
|
for (Section section : route.getSectionList()) {
|
||||||
if (!section.isRouteLock()) {
|
if (!section.isRouteLock()) {
|
||||||
section.routeLocking(right);
|
section.routeLocking(route, right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (route.isOpen()) {
|
if (route.isOpen()) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.data.map;
|
package club.joylink.rtss.simulation.cbtc.data.map;
|
||||||
|
|
||||||
import club.joylink.rtss.simulation.cbtc.data.CalculateService;
|
|
||||||
import club.joylink.rtss.simulation.cbtc.data.SimulationDataRepository;
|
import club.joylink.rtss.simulation.cbtc.data.SimulationDataRepository;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.support.RoutePath;
|
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;
|
||||||
@ -173,6 +172,11 @@ public class Section extends MayOutOfOrderDevice {
|
|||||||
*/
|
*/
|
||||||
private boolean routeLock;
|
private boolean routeLock;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 锁闭该区段的进路
|
||||||
|
*/
|
||||||
|
private Route route;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 锁闭方向
|
* 锁闭方向
|
||||||
*/
|
*/
|
||||||
@ -253,6 +257,7 @@ public class Section extends MayOutOfOrderDevice {
|
|||||||
super.reset();
|
super.reset();
|
||||||
this.blockade = false;
|
this.blockade = false;
|
||||||
this.routeLock = false;
|
this.routeLock = false;
|
||||||
|
this.route = null;
|
||||||
this.lockRight = false;
|
this.lockRight = false;
|
||||||
this.overlapLock = false;
|
this.overlapLock = false;
|
||||||
this.ctOccupied = false;
|
this.ctOccupied = false;
|
||||||
@ -577,16 +582,18 @@ public class Section extends MayOutOfOrderDevice {
|
|||||||
/**
|
/**
|
||||||
* 进路锁闭(连同逻辑区段)
|
* 进路锁闭(连同逻辑区段)
|
||||||
*/
|
*/
|
||||||
public void routeLocking(boolean right) {
|
public void routeLocking(Route route, boolean right) {
|
||||||
//岔心锁闭
|
//岔心锁闭
|
||||||
if (this.parent != null && this.parent.isCross()) {
|
if (this.parent != null && this.parent.isCross()) {
|
||||||
|
this.parent.setRoute(route);
|
||||||
this.parent.setRouteLock(true);
|
this.parent.setRouteLock(true);
|
||||||
this.parent.setLockRight(right);
|
this.parent.setLockRight(right);
|
||||||
}
|
}
|
||||||
|
this.route = route;
|
||||||
this.routeLock = true;
|
this.routeLock = true;
|
||||||
this.lockRight = right;
|
this.lockRight = right;
|
||||||
if (!CollectionUtils.isEmpty(this.logicList)) {
|
if (!CollectionUtils.isEmpty(this.logicList)) {
|
||||||
this.logicList.forEach(logic -> logic.routeLocking(right));
|
this.logicList.forEach(logic -> logic.routeLocking(route, right));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -600,11 +607,13 @@ public class Section extends MayOutOfOrderDevice {
|
|||||||
//岔心解锁
|
//岔心解锁
|
||||||
if (this.parent != null && this.parent.isCross()) {
|
if (this.parent != null && this.parent.isCross()) {
|
||||||
this.parent.setRouteLock(false);
|
this.parent.setRouteLock(false);
|
||||||
|
this.parent.setRoute(null);
|
||||||
// this.parent.setOverlapLock(false);
|
// this.parent.setOverlapLock(false);
|
||||||
this.parent.setLockRight(false);
|
this.parent.setLockRight(false);
|
||||||
}
|
}
|
||||||
//自身解锁
|
//自身解锁
|
||||||
this.routeLock = false;
|
this.routeLock = false;
|
||||||
|
this.route = null;
|
||||||
// this.overlapLock = false;
|
// this.overlapLock = false;
|
||||||
this.lockRight = false;
|
this.lockRight = false;
|
||||||
if (!CollectionUtils.isEmpty(this.logicList)) {
|
if (!CollectionUtils.isEmpty(this.logicList)) {
|
||||||
@ -615,6 +624,7 @@ public class Section extends MayOutOfOrderDevice {
|
|||||||
|
|
||||||
public void forceUnlocking() {
|
public void forceUnlocking() {
|
||||||
this.routeLock = false;
|
this.routeLock = false;
|
||||||
|
this.route = null;
|
||||||
this.overlapLock = false;
|
this.overlapLock = false;
|
||||||
this.lockRight = false;
|
this.lockRight = false;
|
||||||
if (!isCross() && !CollectionUtils.isEmpty(this.logicList)) {
|
if (!isCross() && !CollectionUtils.isEmpty(this.logicList)) {
|
||||||
@ -836,6 +846,7 @@ public class Section extends MayOutOfOrderDevice {
|
|||||||
public void faultUnlock() {
|
public void faultUnlock() {
|
||||||
this.faultLock = false;
|
this.faultLock = false;
|
||||||
this.routeLock = false;
|
this.routeLock = false;
|
||||||
|
this.route = null;
|
||||||
this.overlapLock = false;
|
this.overlapLock = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +64,11 @@ public class Switch extends MayOutOfOrderDevice {
|
|||||||
*/
|
*/
|
||||||
private boolean routeLock;
|
private boolean routeLock;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 锁闭该道岔的进路
|
||||||
|
*/
|
||||||
|
private Route route;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否进路侧防锁闭
|
* 是否进路侧防锁闭
|
||||||
*/
|
*/
|
||||||
@ -140,6 +145,7 @@ public class Switch extends MayOutOfOrderDevice {
|
|||||||
this.singleLock = false;
|
this.singleLock = false;
|
||||||
this.blockade = false;
|
this.blockade = false;
|
||||||
this.routeLock = false;
|
this.routeLock = false;
|
||||||
|
this.route = null;
|
||||||
this.fpLock = false;
|
this.fpLock = false;
|
||||||
this.overlapLock = false;
|
this.overlapLock = false;
|
||||||
this.masterGuideLock = false;
|
this.masterGuideLock = false;
|
||||||
@ -252,12 +258,14 @@ public class Switch extends MayOutOfOrderDevice {
|
|||||||
this.c.setSpeedUpLimit(upLimitSpeed);
|
this.c.setSpeedUpLimit(upLimitSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void routeLock() {
|
public void routeLock(Route route) {
|
||||||
this.routeLock = true;
|
this.routeLock = true;
|
||||||
|
this.route = route;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void routeUnlock() {
|
public void routeUnlock() {
|
||||||
this.routeLock = false;
|
this.routeLock = false;
|
||||||
|
this.route = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fpLock() {
|
public void fpLock() {
|
||||||
|
@ -140,7 +140,12 @@ public class MovementAuthority {
|
|||||||
float offset = right ? Math.max(0, section.getLen() - 100) : Math.min(100, section.getLen());
|
float offset = right ? Math.max(0, section.getLen() - 100) : Math.min(100, section.getLen());
|
||||||
return new SectionPosition(section, offset);
|
return new SectionPosition(section, offset);
|
||||||
}
|
}
|
||||||
case FAULT_SWITCH:
|
case FAULT_SWITCH: {
|
||||||
|
Section section = (Section) this.device;
|
||||||
|
float offset = right ? 0 : section.getLen();
|
||||||
|
SectionPosition stopPosition = new SectionPosition(section, offset);
|
||||||
|
return CalculateService.calculateNextPositionByStartAndLen(stopPosition, !right, 100);
|
||||||
|
}
|
||||||
case UNLOCK_SECTION:
|
case UNLOCK_SECTION:
|
||||||
case FAULT_SECTION:
|
case FAULT_SECTION:
|
||||||
case ROUTE_INTERLOCK_NOT_MET:
|
case ROUTE_INTERLOCK_NOT_MET:
|
||||||
|
@ -5,10 +5,8 @@ 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;
|
||||||
@ -41,7 +39,7 @@ public class DeviceStatusModifyTool {
|
|||||||
// 修改进路侧防到指定位置
|
// 修改进路侧防到指定位置
|
||||||
this.batchSetRouteFlsSwitchPositionAndLock(route.getFlsList());
|
this.batchSetRouteFlsSwitchPositionAndLock(route.getFlsList());
|
||||||
// 进路元素锁闭
|
// 进路元素锁闭
|
||||||
route.getSectionList().forEach(section -> section.routeLocking(route.getStart().isRight()));
|
route.getSectionList().forEach(section -> section.routeLocking(route, route.getStart().isRight()));
|
||||||
if (this.routeService.checkCanOverlapSet(simulation, route)) {
|
if (this.routeService.checkCanOverlapSet(simulation, route)) {
|
||||||
SectionPath overlapPath = route.selectOverlapElement();
|
SectionPath overlapPath = route.selectOverlapElement();
|
||||||
if (Objects.nonNull(overlapPath)) {
|
if (Objects.nonNull(overlapPath)) {
|
||||||
@ -86,7 +84,7 @@ public class DeviceStatusModifyTool {
|
|||||||
// 修改进路侧防到指定位置
|
// 修改进路侧防到指定位置
|
||||||
this.batchSetRouteFlsSwitchPositionAndLock(route.getFlsList());
|
this.batchSetRouteFlsSwitchPositionAndLock(route.getFlsList());
|
||||||
// 进路元素锁闭
|
// 进路元素锁闭
|
||||||
route.getSectionList().forEach(section -> section.routeLocking(route.getStart().isRight()));
|
route.getSectionList().forEach(section -> section.routeLocking(route, route.getStart().isRight()));
|
||||||
SectionPath overlapPath = route.selectOverlapElement();
|
SectionPath overlapPath = route.selectOverlapElement();
|
||||||
if (Objects.nonNull(overlapPath)) {
|
if (Objects.nonNull(overlapPath)) {
|
||||||
this.batchSetRouteSwitchPositionAndLock(route, overlapPath.getSwitchList(), false);
|
this.batchSetRouteSwitchPositionAndLock(route, overlapPath.getSwitchList(), false);
|
||||||
@ -162,7 +160,7 @@ public class DeviceStatusModifyTool {
|
|||||||
}
|
}
|
||||||
this.setSingleSwitchPositionDirectly(switchElement.getASwitch(), switchElement.isNormal());
|
this.setSingleSwitchPositionDirectly(switchElement.getASwitch(), switchElement.isNormal());
|
||||||
if (routeLock) {
|
if (routeLock) {
|
||||||
switchElement.getASwitch().routeLock();
|
switchElement.getASwitch().routeLock(route);
|
||||||
} else { // 延续保护锁闭
|
} else { // 延续保护锁闭
|
||||||
switchElement.getASwitch().overlapLock();
|
switchElement.getASwitch().overlapLock();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user