[新增]首区段占用时,办理引导进路延时15秒后关闭引导信号
This commit is contained in:
parent
3c9aeb82f6
commit
508b8fa086
@ -246,12 +246,12 @@ public class CiApiServiceImpl2 implements CiApiService {
|
|||||||
@Override
|
@Override
|
||||||
public void humanCancel(Simulation simulation, String routeCode) {
|
public void humanCancel(Simulation simulation, String routeCode) {
|
||||||
Route route = simulation.getRepository().getByCode(routeCode, Route.class);
|
Route route = simulation.getRepository().getByCode(routeCode, Route.class);
|
||||||
// if (simulation.getRepository().getConfig().isRailway()) {
|
if (route.getStart().isGuideAspect()) { // 根据成都三引导解锁逻辑修改
|
||||||
// BusinessExceptionAssertEnum.OPERATION_FAIL.assertTrue(route.isApproachLock(),
|
signalService.closeRoute(simulation, route.getStart());
|
||||||
// "进路未接近锁闭,不能人解");
|
} else {
|
||||||
// }
|
|
||||||
this.routeService.delayUnlockStart(simulation, route, route.getStart());
|
this.routeService.delayUnlockStart(simulation, route, route.getStart());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sectionFaultUnlock(Simulation simulation, String sectionCode) {
|
public void sectionFaultUnlock(Simulation simulation, String sectionCode) {
|
||||||
@ -504,6 +504,10 @@ public class CiApiServiceImpl2 implements CiApiService {
|
|||||||
signal.guideDelayStart();
|
signal.guideDelayStart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (repository.getConfig().isGuideDelayCloseWhenFirstSectionOccupied()
|
||||||
|
&& signal.isGuideAspect()) {
|
||||||
|
signal.guideDelayStart();
|
||||||
|
}
|
||||||
// if (signal.getGuideRemain() > 0) {
|
// if (signal.getGuideRemain() > 0) {
|
||||||
// signal.setGuideRemain(0);
|
// signal.setGuideRemain(0);
|
||||||
// } else {
|
// } else {
|
||||||
|
@ -1,20 +1,22 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.data.map;
|
package club.joylink.rtss.simulation.cbtc.data.map;
|
||||||
|
|
||||||
|
import static club.joylink.rtss.simulation.cbtc.member.SimulationMember.Type.DISPATCHER;
|
||||||
|
import static club.joylink.rtss.simulation.cbtc.member.SimulationMember.Type.ELECTRIC_DISPATCHER;
|
||||||
|
import static club.joylink.rtss.simulation.cbtc.member.SimulationMember.Type.MAINTAINER;
|
||||||
|
import static club.joylink.rtss.simulation.cbtc.member.SimulationMember.Type.STATION_SUPERVISOR;
|
||||||
|
|
||||||
import club.joylink.rtss.simulation.cbtc.constant.RunLevel;
|
import club.joylink.rtss.simulation.cbtc.constant.RunLevel;
|
||||||
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
|
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
|
||||||
import club.joylink.rtss.vo.map.MapFunctionConfig;
|
import club.joylink.rtss.vo.map.MapFunctionConfig;
|
||||||
import club.joylink.rtss.vo.map.RealLineConfigVO;
|
import club.joylink.rtss.vo.map.RealLineConfigVO;
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
import lombok.Getter;
|
||||||
import static club.joylink.rtss.simulation.cbtc.member.SimulationMember.Type.*;
|
import lombok.Setter;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 地图配置
|
* 地图配置
|
||||||
@ -193,40 +195,64 @@ public class MapConfig {
|
|||||||
*/
|
*/
|
||||||
private boolean holdCommandIgnoreControlMode;
|
private boolean holdCommandIgnoreControlMode;
|
||||||
|
|
||||||
/** 共享紧急关闭效果的车站 */
|
/**
|
||||||
|
* 共享紧急关闭效果的车站
|
||||||
|
*/
|
||||||
private Set<String> sharingECStations;
|
private Set<String> sharingECStations;
|
||||||
|
|
||||||
/** 取消联锁条件不满足的进路时需要延时解锁 */
|
/**
|
||||||
|
* 取消联锁条件不满足的进路时需要延时解锁
|
||||||
|
*/
|
||||||
private boolean delayWhenCancelRouteWithAbnormalInterlock;
|
private boolean delayWhenCancelRouteWithAbnormalInterlock;
|
||||||
|
|
||||||
/** 车次号的位数 */
|
/**
|
||||||
|
* 车次号的位数
|
||||||
|
*/
|
||||||
private int figuresOfTripNumber;
|
private int figuresOfTripNumber;
|
||||||
|
|
||||||
/** 服务号的位数 */
|
/**
|
||||||
|
* 服务号的位数
|
||||||
|
*/
|
||||||
private int figuresOfServiceNumber;
|
private int figuresOfServiceNumber;
|
||||||
|
|
||||||
/** 设置头码车时检查方向 */
|
/**
|
||||||
|
* 设置头码车时检查方向
|
||||||
|
*/
|
||||||
private boolean checkDirectionWhenSetHead;
|
private boolean checkDirectionWhenSetHead;
|
||||||
|
|
||||||
/** 转换轨进路只能通过故障解锁来取消 */
|
/**
|
||||||
|
* 转换轨进路只能通过故障解锁来取消
|
||||||
|
*/
|
||||||
private boolean transferRouteCanOnlyFaultUnlock;
|
private boolean transferRouteCanOnlyFaultUnlock;
|
||||||
|
|
||||||
/** 头码车抵达目的地后变为人工车 */
|
/**
|
||||||
|
* 头码车抵达目的地后变为人工车
|
||||||
|
*/
|
||||||
private boolean setManualWhenHeadTrainArriveTarget;
|
private boolean setManualWhenHeadTrainArriveTarget;
|
||||||
|
|
||||||
/** 进路默认开启冲突检测 */
|
/**
|
||||||
|
* 进路默认开启冲突检测
|
||||||
|
*/
|
||||||
private boolean routeDefaultCheckConflict;
|
private boolean routeDefaultCheckConflict;
|
||||||
|
|
||||||
/** 处理停车场/车辆段逻辑 */
|
/**
|
||||||
|
* 处理停车场/车辆段逻辑
|
||||||
|
*/
|
||||||
private boolean handleDepot;
|
private boolean handleDepot;
|
||||||
|
|
||||||
/** 运行图中车次号是否唯一 */
|
/**
|
||||||
|
* 运行图中车次号是否唯一
|
||||||
|
*/
|
||||||
private boolean tripNumberIsUnique;
|
private boolean tripNumberIsUnique;
|
||||||
|
|
||||||
/** 站台折返策略不生效 */
|
/**
|
||||||
|
* 站台折返策略不生效
|
||||||
|
*/
|
||||||
private boolean standTbStrategyIsInvalid;
|
private boolean standTbStrategyIsInvalid;
|
||||||
|
|
||||||
/** 根据服务号更新车次计划(西安三提出,抽线之后,后续列车还跑原来的服务,不会自动顶上) */
|
/**
|
||||||
|
* 根据服务号更新车次计划(西安三提出,抽线之后,后续列车还跑原来的服务,不会自动顶上)
|
||||||
|
*/
|
||||||
private boolean updateTripPlanByServiceNumber;
|
private boolean updateTripPlanByServiceNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -236,8 +262,7 @@ public class MapConfig {
|
|||||||
/**
|
/**
|
||||||
* 对信号机封锁操作,是否影响信号显示
|
* 对信号机封锁操作,是否影响信号显示
|
||||||
* <p>
|
* <p>
|
||||||
* true-封锁信号机,会使信号机显示禁止色<br>
|
* true-封锁信号机,会使信号机显示禁止色<br> false-封锁信号机,不会影响信号机显示。
|
||||||
* false-封锁信号机,不会影响信号机显示。
|
|
||||||
*/
|
*/
|
||||||
private boolean signalBolckOptReflectSignal;
|
private boolean signalBolckOptReflectSignal;
|
||||||
|
|
||||||
@ -260,8 +285,14 @@ public class MapConfig {
|
|||||||
*/
|
*/
|
||||||
private boolean manualTrainDefaultStop;
|
private boolean manualTrainDefaultStop;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 办理引导进路时,如果进路首区段占用,引导信号15秒后关闭
|
||||||
|
*/
|
||||||
|
private boolean guideDelayCloseWhenFirstSectionOccupied;
|
||||||
|
|
||||||
private Set<SimulationMember.Type> needConfirmConnectMembers =
|
private Set<SimulationMember.Type> needConfirmConnectMembers =
|
||||||
Stream.of(DISPATCHER, STATION_SUPERVISOR, MAINTAINER, ELECTRIC_DISPATCHER).collect(Collectors.toSet());
|
Stream.of(DISPATCHER, STATION_SUPERVISOR, MAINTAINER, ELECTRIC_DISPATCHER)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
public MapConfig() {
|
public MapConfig() {
|
||||||
this.lockFirst = false;
|
this.lockFirst = false;
|
||||||
@ -290,8 +321,10 @@ public class MapConfig {
|
|||||||
setParkingSM(configVO.getParkingSM());
|
setParkingSM(configVO.getParkingSM());
|
||||||
setRmAtpSpeed(configVO.getRmAtpSpeed() / 3.6f);
|
setRmAtpSpeed(configVO.getRmAtpSpeed() / 3.6f);
|
||||||
setUrmAtpSpeed(configVO.getUrmAtpSpeed() / 3.6f);
|
setUrmAtpSpeed(configVO.getUrmAtpSpeed() / 3.6f);
|
||||||
setCancelAtsControlOfAllRoutesWhenCancelRoute(configVO.isCancelAtsControlOfAllRoutesWhenCancelRoute());
|
setCancelAtsControlOfAllRoutesWhenCancelRoute(
|
||||||
setSignalHumanControlBeforeSetAtsControlOrCIAutoTrigger(configVO.isSignalHumanControlBeforeSetAtsControlOrCIAutoTrigger());
|
configVO.isCancelAtsControlOfAllRoutesWhenCancelRoute());
|
||||||
|
setSignalHumanControlBeforeSetAtsControlOrCIAutoTrigger(
|
||||||
|
configVO.isSignalHumanControlBeforeSetAtsControlOrCIAutoTrigger());
|
||||||
setAllowEarlyDepartureWhenHoldTrain(configVO.isAllowEarlyDepartureWhenHoldTrain());
|
setAllowEarlyDepartureWhenHoldTrain(configVO.isAllowEarlyDepartureWhenHoldTrain());
|
||||||
setEBWhenCancelRoute(configVO.isEBWhenCancelRoute());
|
setEBWhenCancelRoute(configVO.isEBWhenCancelRoute());
|
||||||
setAdjustOperationAutomatically(configVO.isAdjustOperationAutomatically());
|
setAdjustOperationAutomatically(configVO.isAdjustOperationAutomatically());
|
||||||
@ -302,9 +335,11 @@ public class MapConfig {
|
|||||||
setBlockadeCommandOnlyValidInStandbyMode(configVO.isBlockadeCommandOnlyValidInStandbyMode());
|
setBlockadeCommandOnlyValidInStandbyMode(configVO.isBlockadeCommandOnlyValidInStandbyMode());
|
||||||
// setSomeCommandNeedInit(configVO.isSwitchBlockadeCommandNeedInit());
|
// setSomeCommandNeedInit(configVO.isSwitchBlockadeCommandNeedInit());
|
||||||
setStationPreResetBeforeAxlePreReset(configVO.isStationPreResetBeforeAxlePreReset());
|
setStationPreResetBeforeAxlePreReset(configVO.isStationPreResetBeforeAxlePreReset());
|
||||||
setSwitchTurnOperationCanRecoverSplitFault(configVO.isSwitchTurnOperationCanRecoverSplitFault());
|
setSwitchTurnOperationCanRecoverSplitFault(
|
||||||
|
configVO.isSwitchTurnOperationCanRecoverSplitFault());
|
||||||
setHoldCommandIgnoreControlMode(configVO.isHoldCommandIgnoreControlMode());
|
setHoldCommandIgnoreControlMode(configVO.isHoldCommandIgnoreControlMode());
|
||||||
setDelayWhenCancelRouteWithAbnormalInterlock(configVO.isDelayWhenCancelRouteWithAbnormalInterlock());
|
setDelayWhenCancelRouteWithAbnormalInterlock(
|
||||||
|
configVO.isDelayWhenCancelRouteWithAbnormalInterlock());
|
||||||
setFiguresOfTripNumber(configVO.getFiguresOfTripNumber());
|
setFiguresOfTripNumber(configVO.getFiguresOfTripNumber());
|
||||||
setFiguresOfServiceNumber(configVO.getFiguresOfServiceNumber());
|
setFiguresOfServiceNumber(configVO.getFiguresOfServiceNumber());
|
||||||
setCheckDirectionWhenSetHead(configVO.isCheckDirectionWhenSetHead());
|
setCheckDirectionWhenSetHead(configVO.isCheckDirectionWhenSetHead());
|
||||||
@ -319,12 +354,15 @@ public class MapConfig {
|
|||||||
setSFUCanOnlyApplyForFaultLockSection(configVO.isSFUCanOnlyApplyForFaultLockSection());
|
setSFUCanOnlyApplyForFaultLockSection(configVO.isSFUCanOnlyApplyForFaultLockSection());
|
||||||
setRouteCanSetWhenSwitchFault(configVO.isRouteCanSetWhenSwitchFault());
|
setRouteCanSetWhenSwitchFault(configVO.isRouteCanSetWhenSwitchFault());
|
||||||
setManualTrainDefaultStop(configVO.isManualTrainDefaultStop());
|
setManualTrainDefaultStop(configVO.isManualTrainDefaultStop());
|
||||||
|
setGuideDelayCloseWhenFirstSectionOccupied(
|
||||||
|
configVO.isGuideDelayCloseWhenFirstSectionOccupied());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void copyConfigBy(MapFunctionConfig mapFunctionConfig) {
|
public void copyConfigBy(MapFunctionConfig mapFunctionConfig) {
|
||||||
if (mapFunctionConfig == null)
|
if (mapFunctionConfig == null) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
this.hasCTC = mapFunctionConfig.isHasCTC();
|
this.hasCTC = mapFunctionConfig.isHasCTC();
|
||||||
this.hasTDCS = mapFunctionConfig.isHasTDCS();
|
this.hasTDCS = mapFunctionConfig.isHasTDCS();
|
||||||
}
|
}
|
||||||
@ -334,7 +372,8 @@ public class MapConfig {
|
|||||||
if (noParkingSM.contains("-")) {
|
if (noParkingSM.contains("-")) {
|
||||||
String[] split = noParkingSM.split("-");
|
String[] split = noParkingSM.split("-");
|
||||||
if (split.length == 2) {
|
if (split.length == 2) {
|
||||||
return Integer.parseInt(serviceNumber) >= Integer.parseInt(split[0]) && Integer.parseInt(serviceNumber) <= Integer.parseInt(split[1]);
|
return Integer.parseInt(serviceNumber) >= Integer.parseInt(split[0])
|
||||||
|
&& Integer.parseInt(serviceNumber) <= Integer.parseInt(split[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -346,7 +385,8 @@ public class MapConfig {
|
|||||||
if (parkingSM.contains("-")) {
|
if (parkingSM.contains("-")) {
|
||||||
String[] split = parkingSM.split("-");
|
String[] split = parkingSM.split("-");
|
||||||
if (split.length == 2) {
|
if (split.length == 2) {
|
||||||
return Integer.parseInt(serviceNumber) >= Integer.parseInt(split[0]) && Integer.parseInt(serviceNumber) <= Integer.parseInt(split[1]);
|
return Integer.parseInt(serviceNumber) >= Integer.parseInt(split[0])
|
||||||
|
&& Integer.parseInt(serviceNumber) <= Integer.parseInt(split[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -375,12 +415,14 @@ public class MapConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSharingECStation(String stationCode) {
|
public boolean isSharingECStation(String stationCode) {
|
||||||
if (CollectionUtils.isEmpty(this.sharingECStations))
|
if (CollectionUtils.isEmpty(this.sharingECStations)) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
for (String code : sharingECStations) {
|
for (String code : sharingECStations) {
|
||||||
if (code.equals(stationCode))
|
if (code.equals(stationCode)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -396,6 +438,7 @@ public class MapConfig {
|
|||||||
/**
|
/**
|
||||||
* 直接取消
|
* 直接取消
|
||||||
*/
|
*/
|
||||||
DIRECT,;
|
DIRECT,
|
||||||
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,34 +186,54 @@ public class RealLineConfigVO {
|
|||||||
*/
|
*/
|
||||||
private boolean holdCommandIgnoreControlMode;
|
private boolean holdCommandIgnoreControlMode;
|
||||||
|
|
||||||
/** 取消联锁条件不满足的进路时需要延时解锁 */
|
/**
|
||||||
|
* 取消联锁条件不满足的进路时需要延时解锁
|
||||||
|
*/
|
||||||
private boolean delayWhenCancelRouteWithAbnormalInterlock;
|
private boolean delayWhenCancelRouteWithAbnormalInterlock;
|
||||||
|
|
||||||
/** 车次号的位数 */
|
/**
|
||||||
|
* 车次号的位数
|
||||||
|
*/
|
||||||
private int figuresOfTripNumber = 4;
|
private int figuresOfTripNumber = 4;
|
||||||
|
|
||||||
/** 服务号的位数 */
|
/**
|
||||||
|
* 服务号的位数
|
||||||
|
*/
|
||||||
private int figuresOfServiceNumber = 3;
|
private int figuresOfServiceNumber = 3;
|
||||||
|
|
||||||
/** 设置头码车时检查方向 */
|
/**
|
||||||
|
* 设置头码车时检查方向
|
||||||
|
*/
|
||||||
private boolean checkDirectionWhenSetHead;
|
private boolean checkDirectionWhenSetHead;
|
||||||
|
|
||||||
/** 转换轨进路只能通过故障解锁来取消 */
|
/**
|
||||||
|
* 转换轨进路只能通过故障解锁来取消
|
||||||
|
*/
|
||||||
private boolean transferRouteCanOnlyFaultUnlock;
|
private boolean transferRouteCanOnlyFaultUnlock;
|
||||||
|
|
||||||
/** 头码车抵达目的地后变为人工车 */
|
/**
|
||||||
|
* 头码车抵达目的地后变为人工车
|
||||||
|
*/
|
||||||
private boolean setManualWhenHeadTrainArriveTarget;
|
private boolean setManualWhenHeadTrainArriveTarget;
|
||||||
|
|
||||||
/** 进路默认开启冲突检测 */
|
/**
|
||||||
|
* 进路默认开启冲突检测
|
||||||
|
*/
|
||||||
private boolean routeDefaultCheckConflict;
|
private boolean routeDefaultCheckConflict;
|
||||||
|
|
||||||
/** 运行图中车次号是否唯一 */
|
/**
|
||||||
|
* 运行图中车次号是否唯一
|
||||||
|
*/
|
||||||
private boolean tripNumberIsUnique;
|
private boolean tripNumberIsUnique;
|
||||||
|
|
||||||
/** 站台折返策略不生效 */
|
/**
|
||||||
|
* 站台折返策略不生效
|
||||||
|
*/
|
||||||
private boolean standTbStrategyIsInvalid;
|
private boolean standTbStrategyIsInvalid;
|
||||||
|
|
||||||
/** 根据服务号更新车次计划 */
|
/**
|
||||||
|
* 根据服务号更新车次计划
|
||||||
|
*/
|
||||||
private boolean updateTripPlanByServiceNumber;
|
private boolean updateTripPlanByServiceNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -223,8 +243,7 @@ public class RealLineConfigVO {
|
|||||||
/**
|
/**
|
||||||
* 对信号机封锁操作,是否影响信号显示
|
* 对信号机封锁操作,是否影响信号显示
|
||||||
* <p>
|
* <p>
|
||||||
* true-封锁信号机,会使信号机显示禁止色<br>
|
* true-封锁信号机,会使信号机显示禁止色<br> false-封锁信号机,不会影响信号机显示。
|
||||||
* false-封锁信号机,不会影响信号机显示。
|
|
||||||
*/
|
*/
|
||||||
private boolean signalBolckOptReflectSignal = true;
|
private boolean signalBolckOptReflectSignal = true;
|
||||||
|
|
||||||
@ -245,6 +264,11 @@ public class RealLineConfigVO {
|
|||||||
*/
|
*/
|
||||||
private boolean manualTrainDefaultStop;
|
private boolean manualTrainDefaultStop;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 办理引导进路时,如果进路首区段占用,引导信号15秒后关闭
|
||||||
|
*/
|
||||||
|
private boolean guideDelayCloseWhenFirstSectionOccupied;
|
||||||
|
|
||||||
public static RealLineConfigVO parseJsonStr(String configData) {
|
public static RealLineConfigVO parseJsonStr(String configData) {
|
||||||
if (StringUtils.hasText(configData)) {
|
if (StringUtils.hasText(configData)) {
|
||||||
return JsonUtils.read(configData, RealLineConfigVO.class);
|
return JsonUtils.read(configData, RealLineConfigVO.class);
|
||||||
|
Loading…
Reference in New Issue
Block a user