【大铁非通信车区段占用处理】
This commit is contained in:
parent
89926b72ee
commit
e02768821c
@ -82,6 +82,7 @@ public class AtpSectionService {
|
|||||||
SimulationDataRepository repository = simulation.getRepository();
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
MapConfig config = repository.getConfig();
|
MapConfig config = repository.getConfig();
|
||||||
boolean switchSingleHandle = config.isSwitchSingleHandle();
|
boolean switchSingleHandle = config.isSwitchSingleHandle();
|
||||||
|
boolean isHasCTC = config.isHasCTC(); // 大铁逻辑
|
||||||
if (train.isCommunicable()) { // 通信车占用
|
if (train.isCommunicable()) { // 通信车占用
|
||||||
// 车尾位置追加不确定性距离:(速度*2)m
|
// 车尾位置追加不确定性距离:(速度*2)m
|
||||||
SectionPosition trainTailPosition = CalculateService
|
SectionPosition trainTailPosition = CalculateService
|
||||||
@ -110,7 +111,7 @@ public class AtpSectionService {
|
|||||||
for (Section section : sectionList) {
|
for (Section section : sectionList) {
|
||||||
if (section.isSwitchAxleCounterSection()) {
|
if (section.isSwitchAxleCounterSection()) {
|
||||||
Section switchSection = section.getLogicList().get(0);
|
Section switchSection = section.getLogicList().get(0);
|
||||||
if (switchSingleHandle) {
|
if (switchSingleHandle && isHasCTC) {
|
||||||
atpSectionList.addAll(handleSingleSwitchPosition(section, right));
|
atpSectionList.addAll(handleSingleSwitchPosition(section, right));
|
||||||
} else {
|
} else {
|
||||||
atpSectionList.addAll(switchSection.getSwitchAxleSectionsBySwitchPosition());
|
atpSectionList.addAll(switchSection.getSwitchAxleSectionsBySwitchPosition());
|
||||||
|
@ -74,12 +74,10 @@ public class GroundAtpApiServiceImpl implements GroundAtpApiService {
|
|||||||
section.communicateTrainOccupy(train.isRight());
|
section.communicateTrainOccupy(train.isRight());
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
// 大铁逻辑
|
||||||
|
if (simulation.getRepository().getConfig().isHasCTC()) {
|
||||||
// 非通信车占用
|
// 非通信车占用
|
||||||
nctSectionMap.forEach(((train, sections) -> {
|
nctSectionMap.forEach(((train, sections) -> {
|
||||||
//简单写法,效率比较低
|
|
||||||
// sections.stream().filter(section -> train.getHeadPosition()
|
|
||||||
// .isAheadOf(section, section.getStopPointByDirection(train.isRight()),train.isRight())
|
|
||||||
// ).forEach(section -> section.nonCommunicateTrainOccupy(train.isRight()));
|
|
||||||
// 判断车头所在位置
|
// 判断车头所在位置
|
||||||
int index = sections.indexOf(train.getHeadPosition().getSection());
|
int index = sections.indexOf(train.getHeadPosition().getSection());
|
||||||
if (index > 0) {
|
if (index > 0) {
|
||||||
@ -100,6 +98,13 @@ public class GroundAtpApiServiceImpl implements GroundAtpApiService {
|
|||||||
sections.get(index).nonCommunicateTrainOccupy(train.isRight());
|
sections.get(index).nonCommunicateTrainOccupy(train.isRight());
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
} else {
|
||||||
|
nctSectionMap.forEach(((train, sections) -> {
|
||||||
|
for (Section section : sections) {
|
||||||
|
section.nonCommunicateTrainOccupy(train.isRight());
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
// 信号机接近信息
|
// 信号机接近信息
|
||||||
this.atpSectionService.changeSignalModeByTrainApproach(simulation, onlineTrainList, trainAtpSectionMap);
|
this.atpSectionService.changeSignalModeByTrainApproach(simulation, onlineTrainList, trainAtpSectionMap);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user