From eddd0171b76e6354564414eb9565e4f3f392b430 Mon Sep 17 00:00:00 2001 From: joylink_zhangsai <1021828630@qq.com> Date: Mon, 21 Jun 2021 09:36:44 +0800 Subject: [PATCH 1/4] =?UTF-8?q?Revert=20"=E4=BF=AE=E6=94=B9=EF=BC=9A?= =?UTF-8?q?=E6=81=A2=E5=A4=8DARB=E5=88=A4=E5=AE=9A=E3=80=82=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=EF=BC=9A<=E6=97=A0ARB=E5=88=A4=E5=AE=9A>=E7=BA=BF?= =?UTF-8?q?=E8=B7=AF=E9=85=8D=E7=BD=AE"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit dce0f88e --- .../cbtc/ATP/ground/AtpSectionService.java | 12 ++--- .../cbtc/ATP/ground/ZCLogicLoop.java | 51 +++++-------------- .../simulation/cbtc/data/map/MapConfig.java | 4 -- .../simulation/cbtc/data/map/Section.java | 20 ++++---- .../cbtc/data/support/MovementAuthority.java | 7 +-- .../joylink/rtss/vo/map/RealLineConfigVO.java | 3 -- 6 files changed, 33 insertions(+), 64 deletions(-) diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/AtpSectionService.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/AtpSectionService.java index f09c4245d..a52761d95 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/AtpSectionService.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/AtpSectionService.java @@ -178,13 +178,11 @@ public class AtpSectionService { * @param sectionList */ public void sectionARBCheck(Simulation simulation, Section section, List
sectionList) { - if (!simulation.getRepository().getConfig().isNoARB()) { - if (!section.isInvalid() && section.isNctOccupied()) { - if (!sectionList.contains(section)) { - log.debug(String.format("区段[%s(%s)]检测为ARB故障", - section.getName(), section.getCode())); - section.judgeAsInvalid(); - } + if (!section.isInvalid() && section.isNctOccupied()) { + if (!sectionList.contains(section)) { + log.debug(String.format("区段[%s(%s)]检测为ARB故障", + section.getName(), section.getCode())); + section.judgeAsInvalid(); } } } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/ZCLogicLoop.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/ZCLogicLoop.java index 570c231e4..68f6baee7 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/ZCLogicLoop.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/ZCLogicLoop.java @@ -126,20 +126,15 @@ public class ZCLogicLoop { endList.add(end1); return endList; } -// // 检查车头区段是否故障 -// if (headPosition.getSection().isFault()) { -// endList.add(new MovementAuthority.End(headPosition.getSection(), MovementAuthority.EndType.FAULT_SECTION)); -// } -// //非通信车占用区段 -// if (section.isNonCbtcOccupy()) { -// endList.add(new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_SECTION)); -// return endList; -// } + // 检查车头区段是否故障 + if (headPosition.getSection().isFault()) { + endList.add(new MovementAuthority.End(headPosition.getSection(), MovementAuthority.EndType.FAULT_SECTION)); + } //非通信车占用区段 - MovementAuthority.End nctOccupied = checkNctOccupied(train, section); - if (nctOccupied != null) - endList.add(nctOccupied); - + if (section.isNonCbtcOccupy()) { + endList.add(new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_IN_FRONT_OF_SECTION)); + return endList; + } int count = 0; while (count < 50) { ++count; @@ -184,16 +179,12 @@ public class ZCLogicLoop { break; } //非通信车占用区段 - MovementAuthority.End end = checkNctOccupied(train, temp); - if (end != null) - endList.add(end); -// //非通信车占用区段 -// if (temp.isNonCbtcOccupy()) { -// SectionPosition headPosition1 = train.getHeadPosition(); -// if (!temp.isSamePhysical(headPosition1.getSection().getCode())) { -// endList.add(new MovementAuthority.End(temp, MovementAuthority.EndType.NCT_OCCUPIED_SECTION)); -// } -// } + if (temp.isNonCbtcOccupy()) { + SectionPosition headPosition1 = train.getHeadPosition(); + if (!temp.isSamePhysical(headPosition1.getSection().getCode())) { + endList.add(new MovementAuthority.End(temp, MovementAuthority.EndType.NCT_OCCUPIED_IN_FRONT_OF_SECTION)); + } + } //检查关闭的区段 MovementAuthority.End cs = checkClosedSection(section); if (cs != null) @@ -221,20 +212,6 @@ public class ZCLogicLoop { return endList; } - /** - * 检查非通信车占用的区段 - */ - private MovementAuthority.End checkNctOccupied(VirtualRealityTrain train, Section section) { - if (train.isCBTC()) { //通信车 - if (section.isNonCbtcOccupy() && !section.isInvalid()) - return new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_SECTION); - } else { //非通信车 - if (section.isNonCbtcOccupy()) - return new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_SECTION); - } - return null; - } - private MovementAuthority.End checkClosedSection(Section section) { if (section.isClosed()) { return new MovementAuthority.End(section, MovementAuthority.EndType.CLOSED_SECTION); diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/MapConfig.java b/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/MapConfig.java index fce5beb7e..3dcb867dc 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/MapConfig.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/MapConfig.java @@ -204,9 +204,6 @@ public class MapConfig { /** 服务号的位数 */ private int figuresOfServiceNumber; - /** 没有ARB判定 */ - private boolean noARB; - private Set needConfirmConnectMembers = Stream.of(DISPATCHER, STATION_SUPERVISOR, MAINTAINER, ELECTRIC_DISPATCHER).collect(Collectors.toSet()); @@ -254,7 +251,6 @@ public class MapConfig { setDelayWhenCancelRouteWithAbnormalInterlock(configVO.isDelayWhenCancelRouteWithAbnormalInterlock()); setFiguresOfTripNumber(configVO.getFiguresOfTripNumber()); setFiguresOfServiceNumber(configVO.getFiguresOfServiceNumber()); - setNoARB(noARB); } } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java b/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java index 5e09548e6..82c509711 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java @@ -727,20 +727,20 @@ public class Section extends MayOutOfOrderDevice { if (!this.isAxleCounter()) { return; } - this.setInvalid(true); + this.setNctOccupied(true); if (this.isSwitchAxleCounterSection()) { // 道岔计轴区段 List relSwitchList = this.getRelSwitchList(); for (Switch aSwitch : relSwitchList) { - aSwitch.getA().setInvalid(true); + aSwitch.getA().setNctOccupied(true); if (aSwitch.isNormalPosition()) { - aSwitch.getB().setInvalid(true); - aSwitch.getC().setInvalid(false); + aSwitch.getB().setNctOccupied(true); + aSwitch.getC().setNctOccupied(false); } else if (aSwitch.isReversePosition()) { - aSwitch.getC().setInvalid(true); - aSwitch.getB().setInvalid(false); + aSwitch.getC().setNctOccupied(true); + aSwitch.getB().setNctOccupied(false); } else { - aSwitch.getB().setInvalid(true); - aSwitch.getC().setInvalid(true); + aSwitch.getB().setNctOccupied(true); + aSwitch.getC().setNctOccupied(true); } } Section cross = queryCross(); @@ -749,7 +749,7 @@ public class Section extends MayOutOfOrderDevice { } } else if (!CollectionUtils.isEmpty(this.logicList)) { for (Section logic : this.logicList) { - logic.setInvalid(true); + logic.setNctOccupied(true); } } @@ -796,7 +796,7 @@ public class Section extends MayOutOfOrderDevice { boolean leftSectionNctOccupied = leftSection.isNctOccupied() && leftSection.getParent().equals(this.parent); Section rightSection = logic.getRightSection(); boolean rightSectionNctOccupied = rightSection.isNctOccupied() && rightSection.getParent().equals(this.parent); - logic.setInvalid(leftSectionNctOccupied || rightSectionNctOccupied); + logic.setNctOccupied(leftSectionNctOccupied || rightSectionNctOccupied); }); } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/data/support/MovementAuthority.java b/src/main/java/club/joylink/rtss/simulation/cbtc/data/support/MovementAuthority.java index ec9c7f652..71e3a6cbb 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/data/support/MovementAuthority.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/data/support/MovementAuthority.java @@ -5,6 +5,7 @@ import club.joylink.rtss.simulation.cbtc.data.CalculateService; import club.joylink.rtss.simulation.cbtc.data.map.MapNamedElement; import club.joylink.rtss.simulation.cbtc.data.map.Section; import club.joylink.rtss.simulation.cbtc.data.map.Signal; +import club.joylink.rtss.simulation.cbtc.data.map.Stand; import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain; import club.joylink.rtss.simulation.cbtc.exception.SimulationException; import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType; @@ -152,7 +153,7 @@ public class MovementAuthority { // float offset = right ? 0 : baseSection.getLen(); // return new SectionPosition(baseSection, offset); // } - case NCT_OCCUPIED_SECTION:{ + case NCT_OCCUPIED_IN_FRONT_OF_SECTION:{ Section section = (Section) this.device; Section previous = section.getNextRunningSectionOf(!right); float offset = right ? 0 : previous.getLen(); @@ -212,9 +213,9 @@ public class MovementAuthority { UNLOCKED_OVERLAP, UNLOCK_SECTION, /** - * 非通信车占用区段 + * 区段前方有非通信车占用 */ - NCT_OCCUPIED_SECTION, + NCT_OCCUPIED_IN_FRONT_OF_SECTION, /** * 故障区段 */ diff --git a/src/main/java/club/joylink/rtss/vo/map/RealLineConfigVO.java b/src/main/java/club/joylink/rtss/vo/map/RealLineConfigVO.java index 1ce7d53f7..dbe233ec0 100644 --- a/src/main/java/club/joylink/rtss/vo/map/RealLineConfigVO.java +++ b/src/main/java/club/joylink/rtss/vo/map/RealLineConfigVO.java @@ -159,9 +159,6 @@ public class RealLineConfigVO { /** 服务号的位数 */ private int figuresOfServiceNumber = 3; - /** 没有ARB判定 */ - private boolean noARB; - public static RealLineConfigVO parseJsonStr(String configData) { if (StringUtils.hasText(configData)) { return JsonUtils.read(configData, RealLineConfigVO.class); From 2339952cae5589c16198b88c66f8b7b282d46072 Mon Sep 17 00:00:00 2001 From: joylink_zhangsai <1021828630@qq.com> Date: Mon, 21 Jun 2021 13:53:03 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E8=AE=BE?= =?UTF-8?q?=E7=BD=AEARB=E6=95=85=E9=9A=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cbtc/ATP/ground/AtpSectionService.java | 7 +++ .../cbtc/ATP/ground/ZCLogicLoop.java | 26 +++++++--- .../simulation/cbtc/data/map/Section.java | 51 +++++++++++++++++++ .../cbtc/data/support/MovementAuthority.java | 7 ++- .../cbtc/data/vr/VirtualRealityTrain.java | 4 +- .../simulation/cbtc/robot/RobotLogicLoop.java | 11 ++-- 6 files changed, 89 insertions(+), 17 deletions(-) diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/AtpSectionService.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/AtpSectionService.java index a52761d95..9967344d6 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/AtpSectionService.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/AtpSectionService.java @@ -185,6 +185,13 @@ public class AtpSectionService { section.judgeAsInvalid(); } } + //ARB故障判定 + if (Section.AxleFault.ARB.equals(section.getFault())) { + section.setInvalid(true); + for (Section logic : section.getLogicList()) { + logic.setInvalid(true); + } + } } /** diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/ZCLogicLoop.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/ZCLogicLoop.java index 68f6baee7..f16a4fb72 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/ZCLogicLoop.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATP/ground/ZCLogicLoop.java @@ -132,7 +132,7 @@ public class ZCLogicLoop { } //非通信车占用区段 if (section.isNonCbtcOccupy()) { - endList.add(new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_IN_FRONT_OF_SECTION)); + endList.add(new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_SECTION)); return endList; } int count = 0; @@ -182,7 +182,7 @@ public class ZCLogicLoop { if (temp.isNonCbtcOccupy()) { SectionPosition headPosition1 = train.getHeadPosition(); if (!temp.isSamePhysical(headPosition1.getSection().getCode())) { - endList.add(new MovementAuthority.End(temp, MovementAuthority.EndType.NCT_OCCUPIED_IN_FRONT_OF_SECTION)); + endList.add(new MovementAuthority.End(temp, MovementAuthority.EndType.NCT_OCCUPIED_SECTION)); } } //检查关闭的区段 @@ -283,11 +283,14 @@ public class ZCLogicLoop { Section section = headPosition.getSection(); int count = 0; while (Objects.nonNull(section) && count < 20) { + if (count > 1 && !CollectionUtils.isEmpty(endList)) + break; ++count; // 信号机 MovementAuthority.End signalEnd = checkGroundSignal(section, right); if (Objects.nonNull(signalEnd)) { - deviceEnd = signalEnd; + endList.add(signalEnd); +// deviceEnd = signalEnd; break; } // 轨道尽头/问题道岔 @@ -295,15 +298,24 @@ public class ZCLogicLoop { if (Objects.isNull(temp)) { // 到尽头 if (section.isSwitchTrack()) { // 问题道岔 if (Objects.nonNull(section.getSectionOf(!right))) { - deviceEnd = new MovementAuthority.End(section.getSectionOf(!right), - MovementAuthority.EndType.FAULT_SWITCH); + endList.add(new MovementAuthority.End(section.getSectionOf(!right), + MovementAuthority.EndType.FAULT_SWITCH)); +// deviceEnd = new MovementAuthority.End(section.getSectionOf(!right), +// MovementAuthority.EndType.FAULT_SWITCH); } } else { - deviceEnd = new MovementAuthority.End(section, - MovementAuthority.EndType.END_TRACK); + endList.add(new MovementAuthority.End(section, + MovementAuthority.EndType.END_TRACK)); +// deviceEnd = new MovementAuthority.End(section, +// MovementAuthority.EndType.END_TRACK); } break; } +// else { +// if (temp.isNonCbtcOccupy() && temp.isInvalid()) { +// endList.add(new MovementAuthority.End(temp, MovementAuthority.EndType.NCT_OCCUPIED_SECTION)); +// } +// } section = temp; } if (Objects.nonNull(deviceEnd)) { diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java b/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java index 82c509711..3835ac6f9 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java @@ -12,6 +12,7 @@ import lombok.Setter; import org.springframework.util.CollectionUtils; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -1109,6 +1110,56 @@ public class Section extends MayOutOfOrderDevice { } } } + }, + + ARB { + @Override + public boolean apply(MayOutOfOrderDevice device) { + Section section = (Section) device; + List
sections; + if (!section.isAxleCounter()) { + if (section.getParent() != null && section.getParent().isAxleCounter()) { + sections = Collections.singletonList(section.getParent()); + } else if (!CollectionUtils.isEmpty(section.getLogicList())) { + sections = section.getLogicList(); + } else { + sections = new ArrayList<>(); + } + } else { + sections = Collections.singletonList(section); + } + boolean flag = false; + for (Section axleSection : sections) { + if (axleSection.isAxleCounter() && !this.equals(axleSection.getFault())) { + flag = true; + axleSection.setFault(this); + } + } + return flag; + } + + @Override + public void fix(MayOutOfOrderDevice device) { + Section section = (Section) device; + List
sections; + if (!section.isAxleCounter()) { + if (section.getParent() != null && section.getParent().isAxleCounter()) { + sections = Collections.singletonList(section.getParent()); + } else if (!CollectionUtils.isEmpty(section.getLogicList())) { + sections = section.getLogicList(); + } else { + sections = new ArrayList<>(); + } + } else { + sections = Collections.singletonList(section); + } + boolean flag = false; + for (Section axleSection : sections) { + if (this.equals(axleSection.getFault())) { + axleSection.setFault(null); + } + } + } } } } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/data/support/MovementAuthority.java b/src/main/java/club/joylink/rtss/simulation/cbtc/data/support/MovementAuthority.java index 71e3a6cbb..ec9c7f652 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/data/support/MovementAuthority.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/data/support/MovementAuthority.java @@ -5,7 +5,6 @@ import club.joylink.rtss.simulation.cbtc.data.CalculateService; import club.joylink.rtss.simulation.cbtc.data.map.MapNamedElement; import club.joylink.rtss.simulation.cbtc.data.map.Section; import club.joylink.rtss.simulation.cbtc.data.map.Signal; -import club.joylink.rtss.simulation.cbtc.data.map.Stand; import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain; import club.joylink.rtss.simulation.cbtc.exception.SimulationException; import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType; @@ -153,7 +152,7 @@ public class MovementAuthority { // float offset = right ? 0 : baseSection.getLen(); // return new SectionPosition(baseSection, offset); // } - case NCT_OCCUPIED_IN_FRONT_OF_SECTION:{ + case NCT_OCCUPIED_SECTION:{ Section section = (Section) this.device; Section previous = section.getNextRunningSectionOf(!right); float offset = right ? 0 : previous.getLen(); @@ -213,9 +212,9 @@ public class MovementAuthority { UNLOCKED_OVERLAP, UNLOCK_SECTION, /** - * 区段前方有非通信车占用 + * 非通信车占用区段 */ - NCT_OCCUPIED_IN_FRONT_OF_SECTION, + NCT_OCCUPIED_SECTION, /** * 故障区段 */ diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/data/vr/VirtualRealityTrain.java b/src/main/java/club/joylink/rtss/simulation/cbtc/data/vr/VirtualRealityTrain.java index d6589d00e..36d985465 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/data/vr/VirtualRealityTrain.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/data/vr/VirtualRealityTrain.java @@ -602,6 +602,8 @@ public class VirtualRealityTrain extends VirtualRealityDevice { } public void updateTBForce(float fk, float fb) { + if (isEB()) + return; if (Fault.DRIVE_FAULT.equals(fault) && fk > 0) { return; } @@ -983,7 +985,7 @@ public class VirtualRealityTrain extends VirtualRealityDevice { * 设置紧急制动的功率和制动力 */ public void emergencyBreak() { - updateTBForce(0, 350); + enforceUpdateTBForce(0, 350); } @Getter diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/robot/RobotLogicLoop.java b/src/main/java/club/joylink/rtss/simulation/cbtc/robot/RobotLogicLoop.java index daae146ba..5ee0f18c6 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/robot/RobotLogicLoop.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/robot/RobotLogicLoop.java @@ -21,12 +21,10 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Component; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 仿真机器人逻辑循环 @@ -110,8 +108,11 @@ public class RobotLogicLoop { switch (train.getDriveMode()) { case AM: case CM: + Float recommendedSpeedMax = Stream.of(train.getAtpSpeedMax(), train.getSpeedLimit() * 0.9f, train.getAtoSpeedMax()) + .min(Comparator.comparingDouble(Float::doubleValue)).get(); + distance = ATOService.calculateTargetRemainDistance(train, train.getMa()); speedCurve = SpeedCurve.buildTargetSpeedCurve(headPosition, tailPosition, right, - distance, speed, Math.min(train.getAtpSpeedMax(), train.getSpeedLimit()) * 0.9f); + distance, speed, recommendedSpeedMax); break; case RM: speedCurve = SpeedCurve.buildTargetSpeedCurve(headPosition, tailPosition, right, From d350f15260821abf33921376eec9cccdda683d8f Mon Sep 17 00:00:00 2001 From: joylink_zhangsai <1021828630@qq.com> Date: Mon, 21 Jun 2021 14:17:19 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9AIBP=E7=9B=98?= =?UTF-8?q?=E8=9C=82=E9=B8=A3=E5=99=A8bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../club/joylink/rtss/services/VirtualRealityIbpService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/club/joylink/rtss/services/VirtualRealityIbpService.java b/src/main/java/club/joylink/rtss/services/VirtualRealityIbpService.java index 8f07afdd5..53f929577 100644 --- a/src/main/java/club/joylink/rtss/services/VirtualRealityIbpService.java +++ b/src/main/java/club/joylink/rtss/services/VirtualRealityIbpService.java @@ -100,6 +100,7 @@ public class VirtualRealityIbpService implements IVirtualRealityIbpService { case JJTC: element.setOn(true); stands.forEach(stand -> ciApiService.standEC(simulation, stand)); + ibp.query(VirtualRealityIbp.Mean.ALARM, element.getUp()).forEach(alarm -> alarm.setOn(true)); break; case QXJJTC: element.setOn(true); @@ -265,9 +266,7 @@ public class VirtualRealityIbpService implements IVirtualRealityIbpService { case KM: case AXLE_RESET: case PRERESET_Z: - break; case ALARM: - element.setOn(stands.stream().anyMatch(Stand::isEmergencyClosed)); break; case kcLight: element.setOn(stands.stream().anyMatch(Stand::isIbpHoldTrain)); From 7558c1042025bac8a2af2dc3b4f5e264be60b7e3 Mon Sep 17 00:00:00 2001 From: joylink_zhangsai <1021828630@qq.com> Date: Mon, 21 Jun 2021 15:45:17 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=8C=BA?= =?UTF-8?q?=E6=AE=B5=E8=BF=9B=E8=B7=AF=E8=A7=A3=E9=94=81=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E5=AF=B9=E5=8C=BA=E6=AE=B5=E5=BB=B6=E7=BB=AD=E4=BF=9D?= =?UTF-8?q?=E6=8A=A4=E8=A7=A3=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../club/joylink/rtss/simulation/cbtc/data/map/Section.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java b/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java index 3835ac6f9..169378d83 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/data/map/Section.java @@ -594,12 +594,12 @@ public class Section extends MayOutOfOrderDevice { //岔心解锁 if (this.parent != null && this.parent.isCross()) { this.parent.setRouteLock(false); - this.parent.setOverlapLock(false); +// this.parent.setOverlapLock(false); this.parent.setLockRight(false); } //自身解锁 this.routeLock = false; - this.overlapLock = false; +// this.overlapLock = false; this.lockRight = false; if (!CollectionUtils.isEmpty(this.logicList)) { this.logicList.forEach(logic -> logic.routeUnlocking(right));