大铁进路逻辑修改;剧本车次识别增加内容
This commit is contained in:
parent
e966d6360c
commit
7cd4eaac15
@ -322,10 +322,10 @@ public class CompetitionAndScriptManager {
|
|||||||
sb.append("[1一幺妖腰摇要爻]");
|
sb.append("[1一幺妖腰摇要爻]");
|
||||||
break;
|
break;
|
||||||
case "2":
|
case "2":
|
||||||
sb.append("[两梁良亮辆量]");
|
sb.append("[两梁良亮辆量凉]");
|
||||||
break;
|
break;
|
||||||
case "3":
|
case "3":
|
||||||
sb.append("[3三]");
|
sb.append("[3三山]");
|
||||||
break;
|
break;
|
||||||
case "4":
|
case "4":
|
||||||
sb.append("[4四]");
|
sb.append("[4四]");
|
||||||
@ -337,16 +337,16 @@ public class CompetitionAndScriptManager {
|
|||||||
sb.append("[6六]");
|
sb.append("[6六]");
|
||||||
break;
|
break;
|
||||||
case "7":
|
case "7":
|
||||||
sb.append("[怪乖拐]");
|
sb.append("[怪乖拐快]");
|
||||||
break;
|
break;
|
||||||
case "8":
|
case "8":
|
||||||
sb.append("[8八]");
|
sb.append("[8八]");
|
||||||
break;
|
break;
|
||||||
case "9":
|
case "9":
|
||||||
sb.append("[9九酒]");
|
sb.append("[9九酒久就]");
|
||||||
break;
|
break;
|
||||||
case "0":
|
case "0":
|
||||||
sb.append("[0洞栋动]");
|
sb.append("[0洞栋动东冻冬]");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,11 +70,11 @@ public class SimulationVoiceHandler {
|
|||||||
replacementList.add(new Replacement("(赚钱折法|赚钱折返)", "站前折返"));
|
replacementList.add(new Replacement("(赚钱折法|赚钱折返)", "站前折返"));
|
||||||
replacementList.add(new Replacement("(权限各次)", "全线各次"));
|
replacementList.add(new Replacement("(权限各次)", "全线各次"));
|
||||||
replacementList.add(new Replacement("(庭院)", "停运"));
|
replacementList.add(new Replacement("(庭院)", "停运"));
|
||||||
replacementList.add(new Replacement("(请客|青稞|青客|轻客|轻课|青涩|听课|停课|听,可|听可|顷刻|倾刻)", "清客"));
|
replacementList.add(new Replacement("(请客|青稞|青客|轻客|轻课|青涩|听课|停课|听,可|听可|顷刻|倾刻|千克)", "清客"));
|
||||||
replacementList.add(new Replacement("(会断|会短|回断)", "回段"));
|
replacementList.add(new Replacement("(会断|会短|回断)", "回段"));
|
||||||
replacementList.add(new Replacement("(清朝|请朝|请钞)", "请抄"));
|
replacementList.add(new Replacement("(清朝|请朝|请钞)", "请抄"));
|
||||||
replacementList.add(new Replacement("(请超链|请超龄)", "请抄令"));
|
replacementList.add(new Replacement("(请超链|请超龄)", "请抄令"));
|
||||||
replacementList.add(new Replacement("(首领处所|手令处所)", "受令处所"));
|
replacementList.add(new Replacement("(首领处所|手令处所|手链处所)", "受令处所"));
|
||||||
replacementList.add(new Replacement("安全保护", "安全防护"));
|
replacementList.add(new Replacement("安全保护", "安全防护"));
|
||||||
replacementList.add(new Replacement("(手摇质|说杨智|受邀至)", "手摇至"));
|
replacementList.add(new Replacement("(手摇质|说杨智|受邀至)", "手摇至"));
|
||||||
replacementList.add(new Replacement("(反胃|软位)", "反位"));
|
replacementList.add(new Replacement("(反胃|软位)", "反位"));
|
||||||
@ -88,7 +88,7 @@ public class SimulationVoiceHandler {
|
|||||||
replacementList.add(new Replacement("(手机号|首信号|首信好|首信后)", "手信号"));
|
replacementList.add(new Replacement("(手机号|首信号|首信好|首信后)", "手信号"));
|
||||||
replacementList.add(new Replacement("(鼓掌|部长)", "故障"));
|
replacementList.add(new Replacement("(鼓掌|部长)", "故障"));
|
||||||
replacementList.add(new Replacement("(向凤|下方)", "下放"));
|
replacementList.add(new Replacement("(向凤|下方)", "下放"));
|
||||||
replacementList.add(new Replacement("(占线|占先)", "站线"));
|
replacementList.add(new Replacement("(占线|占先|展现|战线)", "站线"));
|
||||||
replacementList.add(new Replacement("(定为)", "定位"));
|
replacementList.add(new Replacement("(定为)", "定位"));
|
||||||
replacementList.add(new Replacement("(者搬迁)", "折返线"));
|
replacementList.add(new Replacement("(者搬迁)", "折返线"));
|
||||||
replacementList.add(new Replacement("(进入)", "进路"));
|
replacementList.add(new Replacement("(进入)", "进路"));
|
||||||
|
@ -9,6 +9,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.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@ -24,8 +25,10 @@ public class CilRouteLogicService {
|
|||||||
public void routeLogic(RtSimulation rtSimulation, CilRepository cilRepository) {
|
public void routeLogic(RtSimulation rtSimulation, CilRepository cilRepository) {
|
||||||
List<CilRoute> supervisedRouteList = cilRepository.getSupervisedRouteList();
|
List<CilRoute> supervisedRouteList = cilRepository.getSupervisedRouteList();
|
||||||
for (CilRoute cilRoute : supervisedRouteList) {
|
for (CilRoute cilRoute : supervisedRouteList) {
|
||||||
if (!cilRoute.isGl()) {
|
if (!cilRoute.isSettingFinished()) {
|
||||||
this.settingProgress(rtSimulation, cilRoute, cilRepository.getConfig());
|
this.settingProgress(rtSimulation, cilRepository, cilRoute, cilRepository.getConfig());
|
||||||
|
} else {
|
||||||
|
monitorRoute(rtSimulation, cilRepository, cilRoute);
|
||||||
}
|
}
|
||||||
if (cilRoute.isDelayUnlocking()) {
|
if (cilRoute.isDelayUnlocking()) {
|
||||||
this.monitorDelayUnlockingRoute(rtSimulation, cilRoute, cilRepository.getConfig());
|
this.monitorDelayUnlockingRoute(rtSimulation, cilRoute, cilRepository.getConfig());
|
||||||
@ -43,7 +46,7 @@ public class CilRouteLogicService {
|
|||||||
if (cilRepository.getSectionById(commonRoute.getPathElement().getStart().getId()).isAxcOccupy()) { //进路首区段占用
|
if (cilRepository.getSectionById(commonRoute.getPathElement().getStart().getId()).isAxcOccupy()) { //进路首区段占用
|
||||||
cilSignal.initGuideTime();
|
cilSignal.initGuideTime();
|
||||||
}
|
}
|
||||||
cilSignalLogicService.update2GuideAspect(simulation, cilSignal);
|
cilSignalLogicService.openGuideSignal(simulation, cilSignal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void masterUnlock(RtSimulation simulation, boolean right) {
|
public void masterUnlock(RtSimulation simulation, boolean right) {
|
||||||
@ -67,7 +70,7 @@ public class CilRouteLogicService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (find)
|
if (find)
|
||||||
cilSignalLogicService.update2ForbiddenAspect(simulation, signal.getId());
|
cilSignalLogicService.openForbiddenAspect(simulation, signal.getId());
|
||||||
}
|
}
|
||||||
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(find, "无引导总锁");
|
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(find, "无引导总锁");
|
||||||
}
|
}
|
||||||
@ -105,7 +108,7 @@ public class CilRouteLogicService {
|
|||||||
//进路锁闭,但因为区段占用导致无法开放信号
|
//进路锁闭,但因为区段占用导致无法开放信号
|
||||||
if (cilRoute.isLock() || cilRoute.isGl()) {
|
if (cilRoute.isLock() || cilRoute.isGl()) {
|
||||||
if (cilSignal.isForbidAspect(commonSignal.isShunting())) {
|
if (cilSignal.isForbidAspect(commonSignal.isShunting())) {
|
||||||
cilSignalLogicService.update2GuideAspect(simulation, cilSignal);
|
cilSignalLogicService.openGuideSignal(simulation, cilSignal);
|
||||||
if (cilRepository.getSectionById(commonRoute.getPathElement().getStart().getId()).isAxcOccupy()) { //进路首区段占用
|
if (cilRepository.getSectionById(commonRoute.getPathElement().getStart().getId()).isAxcOccupy()) { //进路首区段占用
|
||||||
cilSignal.initGuideTime();
|
cilSignal.initGuideTime();
|
||||||
}
|
}
|
||||||
@ -134,7 +137,7 @@ public class CilRouteLogicService {
|
|||||||
if (cilRepository.getSectionById(commonRoute.getPathElement().getStart().getId()).isAxcOccupy()) {
|
if (cilRepository.getSectionById(commonRoute.getPathElement().getStart().getId()).isAxcOccupy()) {
|
||||||
cilSignal.initGuideTime();
|
cilSignal.initGuideTime();
|
||||||
}
|
}
|
||||||
cilSignalLogicService.update2GuideAspect(simulation, cilSignal); //开放引导信号
|
cilSignalLogicService.openGuideSignal(simulation, cilSignal); //开放引导信号
|
||||||
cilRoute.setGl(true); //引导锁
|
cilRoute.setGl(true); //引导锁
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -149,7 +152,7 @@ public class CilRouteLogicService {
|
|||||||
cilRoute.setGl(false);
|
cilRoute.setGl(false);
|
||||||
cilSignal.clearGuideTime();
|
cilSignal.clearGuideTime();
|
||||||
if (cilSignal.isGuideAspect()) {
|
if (cilSignal.isGuideAspect()) {
|
||||||
cilSignalLogicService.update2ForbiddenAspect(simulation, signalId);
|
cilSignalLogicService.openForbiddenAspect(simulation, signalId);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertNotTrue(cilRoute.isDelayUnlocking(), "进路已在延时解锁中");
|
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertNotTrue(cilRoute.isDelayUnlocking(), "进路已在延时解锁中");
|
||||||
@ -157,7 +160,7 @@ public class CilRouteLogicService {
|
|||||||
"进路未接近锁闭");
|
"进路未接近锁闭");
|
||||||
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertNotTrue(cilRoute.isTrainIn(), "进路非空闲状态");
|
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertNotTrue(cilRoute.isTrainIn(), "进路非空闲状态");
|
||||||
//关闭信号
|
//关闭信号
|
||||||
cilSignalLogicService.update2ForbiddenAspect(simulation, signalId);
|
cilSignalLogicService.openForbiddenAspect(simulation, signalId);
|
||||||
//设置延时解锁
|
//设置延时解锁
|
||||||
CommonSignal commonSignal = cilRepository.getCommonRepository().getSignalById(signalId);
|
CommonSignal commonSignal = cilRepository.getCommonRepository().getSignalById(signalId);
|
||||||
cilSignal.initDelayTime(commonSignal);
|
cilSignal.initDelayTime(commonSignal);
|
||||||
@ -173,7 +176,7 @@ public class CilRouteLogicService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查进路能否开放信号
|
* 检查联锁状态以判断进路能否开放信号
|
||||||
*/
|
*/
|
||||||
public boolean canOpenSignal(RtSimulation rtSimulation, String routeId) {
|
public boolean canOpenSignal(RtSimulation rtSimulation, String routeId) {
|
||||||
CilRepository cilRepository = rtSimulation.getRepository(CilRepository.NAME, CilRepository.class);
|
CilRepository cilRepository = rtSimulation.getRepository(CilRepository.NAME, CilRepository.class);
|
||||||
@ -296,7 +299,7 @@ public class CilRouteLogicService {
|
|||||||
// 关灯
|
// 关灯
|
||||||
CommonSignal commonSignal = commonRoute.getStart();
|
CommonSignal commonSignal = commonRoute.getStart();
|
||||||
CilSignal cilSignal = cilRepository.getSignalById(commonSignal.getId());
|
CilSignal cilSignal = cilRepository.getSignalById(commonSignal.getId());
|
||||||
cilSignalLogicService.update2ForbiddenAspect(rtSimulation, cilSignal.getId());
|
cilSignalLogicService.openForbiddenAspect(rtSimulation, cilSignal.getId());
|
||||||
cilSignal.setRouteId(null);
|
cilSignal.setRouteId(null);
|
||||||
/* 取消进路相关所有设备的锁闭状态 */
|
/* 取消进路相关所有设备的锁闭状态 */
|
||||||
// 延续保护解锁
|
// 延续保护解锁
|
||||||
@ -318,7 +321,6 @@ public class CilRouteLogicService {
|
|||||||
cancelRouteLockAndCancelRouteUse(cilRepository, commonRoute);
|
cancelRouteLockAndCancelRouteUse(cilRepository, commonRoute);
|
||||||
cilRoute.setLock(false);
|
cilRoute.setLock(false);
|
||||||
//信号机可以自动开放
|
//信号机可以自动开放
|
||||||
cilRoute.setCanAutoOpen(true);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,10 +379,13 @@ public class CilRouteLogicService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void settingProgress(RtSimulation rtSimulation, CilRoute cilRoute, CilConfig config) {
|
private void settingProgress(RtSimulation rtSimulation, CilRepository cilRepository, CilRoute cilRoute, CilConfig config) {
|
||||||
|
if (LocalDateTime.now().isAfter(cilRoute.getStartSettingTime().plusSeconds(10))) { //进路办理时间超过10秒
|
||||||
|
cilRepository.removeSupervisedRoute(cilRoute.getId());
|
||||||
|
return;
|
||||||
|
}
|
||||||
CommonRepository commonRepository = rtSimulation.getRepository(CommonRepository.NAME, CommonRepository.class);
|
CommonRepository commonRepository = rtSimulation.getRepository(CommonRepository.NAME, CommonRepository.class);
|
||||||
CommonRoute commonRoute = commonRepository.getRouteById(cilRoute.getId());
|
CommonRoute commonRoute = commonRepository.getRouteById(cilRoute.getId());
|
||||||
CilRepository cilRepository = rtSimulation.getRepository(CilRepository.NAME, CilRepository.class);
|
|
||||||
List<CommonRoute.MultiRouteAspect> routes = commonRoute.getMultiRouteAspectList();
|
List<CommonRoute.MultiRouteAspect> routes = commonRoute.getMultiRouteAspectList();
|
||||||
if (!CollectionUtils.isEmpty(routes)) {
|
if (!CollectionUtils.isEmpty(routes)) {
|
||||||
for (int i = routes.size() - 1; i >= 0; i--) {
|
for (int i = routes.size() - 1; i >= 0; i--) {
|
||||||
@ -399,29 +404,35 @@ public class CilRouteLogicService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (cilRoute.isCanAutoOpen()) {
|
|
||||||
lockRouteDevices(rtSimulation, cilRepository, cilRoute, commonRoute);
|
lockRouteDevices(rtSimulation, cilRepository, cilRoute, commonRoute);
|
||||||
}
|
|
||||||
setLockingStateByInterlockCheck(cilRepository, cilRoute, commonRoute);
|
setLockingStateByInterlockCheck(cilRepository, cilRoute, commonRoute);
|
||||||
CilSignal cilSignal = cilRepository.getSignalById(commonRoute.getStart().getId());
|
CilSignal cilSignal = cilRepository.getSignalById(commonRoute.getStart().getId());
|
||||||
updateSignalLevel(cilRepository, cilRoute, commonRoute, cilSignal);
|
updateSignalLevel(cilRepository, cilRoute, commonRoute, cilSignal);
|
||||||
|
if (cilSignal.getSignalAspect() == commonRoute.getSignalAspect()) //信号机已开启进路指定的信号
|
||||||
|
cilRoute.finishSetting();
|
||||||
|
if (cilRoute.isCanAutoOpen()) {
|
||||||
try2OpenSignal4Route(rtSimulation, cilRoute, commonRoute, cilSignal, commonRoute.getSignalAspect());
|
try2OpenSignal4Route(rtSimulation, cilRoute, commonRoute, cilSignal, commonRoute.getSignalAspect());
|
||||||
monitorRoute(rtSimulation, commonRepository, cilRepository, cilSignal, commonRoute, cilRoute);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监控进路
|
* 监控进路
|
||||||
*/
|
*/
|
||||||
private void monitorRoute(RtSimulation rtSimulation, CommonRepository commonRepository, CilRepository cilRepository, CilSignal cilSignal, CommonRoute commonRoute, CilRoute cilRoute) {
|
private void monitorRoute(RtSimulation simulation, CilRepository cilRepository, CilRoute cilRoute) {
|
||||||
|
CommonRepository commonRepository = simulation.getRepository(CommonRepository.NAME, CommonRepository.class);
|
||||||
|
CommonRoute commonRoute = commonRepository.getRouteById(cilRoute.getId());
|
||||||
|
CilSignal cilSignal = cilRepository.getSignalById(commonRoute.getStart().getId());
|
||||||
|
setLockingStateByInterlockCheck(cilRepository, cilRoute, commonRoute);
|
||||||
|
updateSignalLevel(cilRepository, cilRoute, commonRoute, cilSignal);
|
||||||
//列车进入进路检查
|
//列车进入进路检查
|
||||||
cilRoute.setTrainIn(this.isTrainIn(cilRepository, commonRoute));
|
cilRoute.setTrainIn(this.isTrainIn(cilRepository, commonRoute));
|
||||||
if (!cilSignal.isGuideAspect()) { //非引导信号
|
if (!cilSignal.isGuideAspect()) { //非引导信号
|
||||||
CommonSignal commonSignal = commonRepository.getSignalById(cilSignal.getId());
|
CommonSignal commonSignal = commonRepository.getSignalById(cilSignal.getId());
|
||||||
//信号开放条件检查,不通过时关闭信号
|
//信号开放条件检查,不通过时关闭信号
|
||||||
if (!cilSignal.isForbidAspect(commonSignal.isShunting())) {
|
if (!cilSignal.isForbidAspect(commonSignal.isShunting())) {
|
||||||
if (!canOpenSignal(rtSimulation, cilRoute.getId())) {
|
if (!canOpenSignal(simulation, cilRoute.getId())) {
|
||||||
cilSignalLogicService.update2ForbiddenAspect(rtSimulation, cilSignal.getId());
|
cilSignalLogicService.openForbiddenAspect(simulation, cilSignal.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -434,14 +445,8 @@ public class CilRouteLogicService {
|
|||||||
//开放信号
|
//开放信号
|
||||||
// boolean routeCtcMode = cilRoute.getCilServer().isCtcMode();
|
// boolean routeCtcMode = cilRoute.getCilServer().isCtcMode();
|
||||||
boolean routeCtcMode = true;
|
boolean routeCtcMode = true;
|
||||||
if (cilRoute.isCanAutoOpen()) {
|
|
||||||
if (cilSignal.getSignalAspect() == commonRoute.getSignalAspect()) { //信号机已开启进路指定的信号
|
|
||||||
cilRoute.setCanAutoOpen(false);
|
|
||||||
} else {
|
|
||||||
if (canOpenSignal(rtSimulation, cilRoute.getId())) {
|
if (canOpenSignal(rtSimulation, cilRoute.getId())) {
|
||||||
cilSignalLogicService.try2UpdateSignalDisplay(rtSimulation, cilSignal, aspect, routeCtcMode);
|
cilSignalLogicService.try2OpenSignal(rtSimulation, cilSignal, aspect, routeCtcMode);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -789,7 +794,7 @@ public class CilRouteLogicService {
|
|||||||
if (cilSignal.getGuideTime() != 0) { //引导信号的关闭只依赖时间
|
if (cilSignal.getGuideTime() != 0) { //引导信号的关闭只依赖时间
|
||||||
cilSignal.updateGuideTime();
|
cilSignal.updateGuideTime();
|
||||||
if (cilSignal.getGuideTime() == 0) {
|
if (cilSignal.getGuideTime() == 0) {
|
||||||
cilSignalLogicService.update2ForbiddenAspect(rtSimulation, cilSignal.getId());
|
cilSignalLogicService.openForbiddenAspect(rtSimulation, cilSignal.getId());
|
||||||
}
|
}
|
||||||
} else { //列车进入进路不能这么判断
|
} else { //列车进入进路不能这么判断
|
||||||
// if (cilRepository.getSectionById(commonRoute.getPathElement().getStart().getId()).isAxcOccupy()) {
|
// if (cilRepository.getSectionById(commonRoute.getPathElement().getStart().getId()).isAxcOccupy()) {
|
||||||
|
@ -22,26 +22,26 @@ public class CilSignalLogicService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private CilRouteLogicService cilRouteLogicService;
|
private CilRouteLogicService cilRouteLogicService;
|
||||||
|
|
||||||
public void update2ForbiddenAspect(RtSimulation simulation, String signalId) {
|
/**
|
||||||
|
* 开放禁止信号
|
||||||
|
*/
|
||||||
|
public void openForbiddenAspect(RtSimulation simulation, String signalId) {
|
||||||
CommonRepository commonRepository = simulation.getRepository(CommonRepository.NAME, CommonRepository.class);
|
CommonRepository commonRepository = simulation.getRepository(CommonRepository.NAME, CommonRepository.class);
|
||||||
CilRepository cilRepository = simulation.getRepository(CilRepository.NAME, CilRepository.class);
|
CilRepository cilRepository = simulation.getRepository(CilRepository.NAME, CilRepository.class);
|
||||||
CommonSignal commonSignal = commonRepository.getSignalById(signalId);
|
CommonSignal commonSignal = commonRepository.getSignalById(signalId);
|
||||||
CilSignal cilSignal = cilRepository.getSignalById(signalId);
|
CilSignal cilSignal = cilRepository.getSignalById(signalId);
|
||||||
if (commonSignal.isShunting()) {
|
if (commonSignal.isShunting()) {
|
||||||
UpdateSignalDisplay(simulation, cilSignal, SrSignal.A, false);
|
srdApiService.changeSignalLight(simulation, cilSignal.getId(), SrSignal.A);
|
||||||
} else {
|
} else {
|
||||||
UpdateSignalDisplay(simulation, cilSignal, SrSignal.H, false);
|
srdApiService.changeSignalLight(simulation, cilSignal.getId(), SrSignal.H);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update2GuideAspect(RtSimulation simulation, String signalId) {
|
/**
|
||||||
CilRepository cilRepository = simulation.getRepository(CilRepository.NAME, CilRepository.class);
|
* 开放引导信号
|
||||||
CilSignal cilSignal = cilRepository.getSignalById(signalId);
|
*/
|
||||||
UpdateSignalDisplay(simulation, cilSignal, SrSignal.BH, false);
|
public void openGuideSignal(RtSimulation simulation, CilSignal cilSignal) {
|
||||||
}
|
openSignal(simulation, cilSignal, SrSignal.BH, false);
|
||||||
|
|
||||||
public void update2GuideAspect(RtSimulation simulation, CilSignal cilSignal) {
|
|
||||||
UpdateSignalDisplay(simulation, cilSignal, SrSignal.BH, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,6 +67,9 @@ public class CilSignalLogicService {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 信号重开
|
||||||
|
*/
|
||||||
public void reopen(RtSimulation rtSimulation, String signalId) {
|
public void reopen(RtSimulation rtSimulation, String signalId) {
|
||||||
//检查
|
//检查
|
||||||
CilRepository cilRepository = rtSimulation.getRepository(CilRepository.NAME, CilRepository.class);
|
CilRepository cilRepository = rtSimulation.getRepository(CilRepository.NAME, CilRepository.class);
|
||||||
@ -81,10 +84,13 @@ public class CilSignalLogicService {
|
|||||||
"联锁条件不满足,无法重开");
|
"联锁条件不满足,无法重开");
|
||||||
//执行
|
//执行
|
||||||
cilRouteLogicService.cancelDelayUnlock(cilRepository, cilSignal);//取消延时解锁
|
cilRouteLogicService.cancelDelayUnlock(cilRepository, cilSignal);//取消延时解锁
|
||||||
UpdateSignalDisplay(rtSimulation, cilSignal, commonRoute.getSignalAspect(), false); //信号机开放
|
openSignal(rtSimulation, cilSignal, commonRoute.getSignalAspect(), false); //信号机开放
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean try2UpdateSignalDisplay(RtSimulation rtSimulation, CilSignal signal, int aspect, boolean ctcMode) {
|
/**
|
||||||
|
* 尝试开放信号
|
||||||
|
*/
|
||||||
|
public boolean try2OpenSignal(RtSimulation rtSimulation, CilSignal signal, int aspect, boolean ctcMode) {
|
||||||
// TODO: 2021/4/20 因信号机缺少表示虚拟信号机的字段,故缺少对虚拟信号机的检查
|
// TODO: 2021/4/20 因信号机缺少表示虚拟信号机的字段,故缺少对虚拟信号机的检查
|
||||||
// boolean logic = !signal.isUta() && ctcMode && !signal.isForceLight();
|
// boolean logic = !signal.isUta() && ctcMode && !signal.isForceLight();
|
||||||
// if (signal.sufficientLevel(aspect, logic)) {
|
// if (signal.sufficientLevel(aspect, logic)) {
|
||||||
@ -112,9 +118,8 @@ public class CilSignalLogicService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateSignalDisplay(RtSimulation rtSimulation, CilSignal signal, int aspect, boolean ctcMode) {
|
public void openSignal(RtSimulation rtSimulation, CilSignal signal, int aspect, boolean ctcMode) {
|
||||||
|
BusinessExceptionAssertEnum.OPERATION_FAIL.assertTrue(try2OpenSignal(rtSimulation, signal, aspect, ctcMode));
|
||||||
BusinessExceptionAssertEnum.OPERATION_FAIL.assertTrue(try2UpdateSignalDisplay(rtSimulation, signal, aspect, ctcMode));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void blockadeSignal(RtSimulation simulation, String signalId) {
|
public void blockadeSignal(RtSimulation simulation, String signalId) {
|
||||||
|
@ -2,10 +2,8 @@ package club.joylink.rtss.simulation.rt.CIL.bo;
|
|||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
@ -20,7 +18,7 @@ public class CilRoute extends CilDevice {
|
|||||||
|
|
||||||
Map<String, CilSwitchPosition> waitTurnMap = new ConcurrentHashMap<>(); // 进路办理中待转换的道岔
|
Map<String, CilSwitchPosition> waitTurnMap = new ConcurrentHashMap<>(); // 进路办理中待转换的道岔
|
||||||
Map<String, CilSwitchPosition> waitOnPositionMap = new ConcurrentHashMap<>(); // 进路办理中待转换到位的道岔
|
Map<String, CilSwitchPosition> waitOnPositionMap = new ConcurrentHashMap<>(); // 进路办理中待转换到位的道岔
|
||||||
LocalDateTime stageStartTime;
|
LocalDateTime startSettingTime;
|
||||||
int signalState;// 进路信号状态(当前实际状态)
|
int signalState;// 进路信号状态(当前实际状态)
|
||||||
@Setter
|
@Setter
|
||||||
private boolean lock; // 进路是否锁闭(进路主体)
|
private boolean lock; // 进路是否锁闭(进路主体)
|
||||||
@ -29,13 +27,14 @@ public class CilRoute extends CilDevice {
|
|||||||
@Setter
|
@Setter
|
||||||
private boolean fl; // 进路的侧防是否锁闭
|
private boolean fl; // 进路的侧防是否锁闭
|
||||||
@Setter
|
@Setter
|
||||||
private boolean canAutoOpen = true; // 是否可以自动开放信号(初始应该为true,进路办理完毕,开放信号之后为false,代表不能自动重开信号)
|
private boolean canAutoOpen; // 是否可以自动开放信号(初始应该为true,进路办理完毕,开放信号之后为false,代表不能自动重开信号)
|
||||||
@Setter
|
@Setter
|
||||||
private boolean trainIn; //列车在进路中
|
private boolean trainIn; //列车在进路中
|
||||||
@Setter
|
@Setter
|
||||||
private boolean delayUnlocking; //延时解锁中
|
private boolean delayUnlocking; //延时解锁中
|
||||||
@Setter
|
@Setter
|
||||||
boolean gl; //引导锁闭
|
boolean gl; //引导锁闭
|
||||||
|
boolean settingFinished; //进路办理完成
|
||||||
|
|
||||||
public CilRoute(String id, String name) {
|
public CilRoute(String id, String name) {
|
||||||
super(id, name);
|
super(id, name);
|
||||||
@ -49,15 +48,16 @@ public class CilRoute extends CilDevice {
|
|||||||
flt = false;
|
flt = false;
|
||||||
waitTurnMap.clear();
|
waitTurnMap.clear();
|
||||||
waitOnPositionMap.clear();
|
waitOnPositionMap.clear();
|
||||||
stageStartTime = null;
|
startSettingTime = null;
|
||||||
signalState = 0;
|
signalState = 0;
|
||||||
lock = false;
|
lock = false;
|
||||||
ol = false;
|
ol = false;
|
||||||
fl = false;
|
fl = false;
|
||||||
canAutoOpen = true;
|
canAutoOpen = false;
|
||||||
trainIn = false;
|
trainIn = false;
|
||||||
delayUnlocking = false;
|
delayUnlocking = false;
|
||||||
gl = false;
|
gl = false;
|
||||||
|
settingFinished = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public boolean isOpenAspect() {
|
// public boolean isOpenAspect() {
|
||||||
@ -71,7 +71,8 @@ public class CilRoute extends CilDevice {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
public void startSetting(LocalDateTime systemTime) {
|
public void startSetting(LocalDateTime systemTime) {
|
||||||
this.stageStartTime = systemTime;
|
this.startSettingTime = systemTime;
|
||||||
|
this.canAutoOpen = true;
|
||||||
// this.stage = STAGE_SETTING;
|
// this.stage = STAGE_SETTING;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,6 +80,11 @@ public class CilRoute extends CilDevice {
|
|||||||
this.waitTurnMap.put(cilSwitchPosition.getCilSwitch().getId(), cilSwitchPosition);
|
this.waitTurnMap.put(cilSwitchPosition.getCilSwitch().getId(), cilSwitchPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void finishSetting() {
|
||||||
|
this.settingFinished = true;
|
||||||
|
this.canAutoOpen = false;
|
||||||
|
}
|
||||||
|
|
||||||
// public boolean isPreparedForCtc() {
|
// public boolean isPreparedForCtc() {
|
||||||
// return this.cilServer.isCtcMode() && !this.start.isUta();
|
// return this.cilServer.isCtcMode() && !this.start.isUta();
|
||||||
// }
|
// }
|
||||||
|
@ -90,24 +90,6 @@ public class CilSignal extends CilDevice {
|
|||||||
* 信号机有足够的级别以{aspect}显示
|
* 信号机有足够的级别以{aspect}显示
|
||||||
*/
|
*/
|
||||||
public boolean sufficientLevel(int aspect, boolean logic) {
|
public boolean sufficientLevel(int aspect, boolean logic) {
|
||||||
// switch (aspect) {
|
|
||||||
// case RED:
|
|
||||||
// return true;
|
|
||||||
// case GUIDE:
|
|
||||||
// return level == LEVEL_2 || level == LEVEL_3 || level == LEVEL_4;
|
|
||||||
// case GREEN:
|
|
||||||
// case YELLOW:
|
|
||||||
// if (logic) {
|
|
||||||
// return level == LEVEL_3 || level == LEVEL_4;
|
|
||||||
// } else {
|
|
||||||
// return level == LEVEL_4;
|
|
||||||
// }
|
|
||||||
// default:
|
|
||||||
// throw BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.exception(String.format("未知的显示状态[%s]", aspect));
|
|
||||||
// }
|
|
||||||
if (aspect == SrSignal.H) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (aspect == SrSignal.BH) {
|
if (aspect == SrSignal.BH) {
|
||||||
return level == LEVEL_2 || level == LEVEL_3 || level == LEVEL_4;
|
return level == LEVEL_2 || level == LEVEL_3 || level == LEVEL_4;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public class SignalFaultListener {
|
|||||||
CilSignal cilSignal = cilRepository.getSignalById(deviceFault.getDeviceId());
|
CilSignal cilSignal = cilRepository.getSignalById(deviceFault.getDeviceId());
|
||||||
cilSignal.setFault(fault);
|
cilSignal.setFault(fault);
|
||||||
// 室外信号机显示控制
|
// 室外信号机显示控制
|
||||||
this.cilSignalLogicService.try2UpdateSignalDisplay((RtSimulation) simulation, cilSignal, SrSignal.H, false);
|
this.cilSignalLogicService.try2OpenSignal((RtSimulation) simulation, cilSignal, SrSignal.H, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user