Merge remote-tracking branch 'origin/test2' into test2
This commit is contained in:
commit
a834811cab
@ -465,7 +465,7 @@ public class CiRouteService {
|
||||
if (!logic.isOccupied() && /*!logic.isInvalid() &&*/ logic.isRouteLockOn(right)) {
|
||||
logic.routeUnlocking(route);
|
||||
logic.overlapUnlocking();
|
||||
} else if(logic.isOccupied() || logic.isInvalid()) {
|
||||
} else if(logic.isOccupied() /*|| logic.isInvalid()*/) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -318,13 +318,22 @@ public class MapDeviceBuilder {
|
||||
});
|
||||
/* ZC和区段相互赋值 */
|
||||
// ZC
|
||||
if (graphData.getZcList().size() == 1) {
|
||||
if (graphData.getZcList().size() == 1 && CollectionUtils.isEmpty(graphData.getZcList().get(0).getManagedSectionList())) {
|
||||
//线路的【ZC只有一个】且【ZC没有设置关联区段】时,自动关联全线计轴区段
|
||||
MapZcVO mapZcVO = graphData.getZcList().get(0);
|
||||
ZC zc = (ZC) elementMap.get(mapZcVO.getCode());
|
||||
physicalSectionList.forEach(section -> {
|
||||
elementMap.values().stream()
|
||||
.filter(element -> element instanceof Section)
|
||||
.map(element -> (Section) element)
|
||||
.filter(Section::isAxleCounterSection)
|
||||
.forEach(section -> {
|
||||
zc.addSection(section);
|
||||
section.addZc(zc);
|
||||
});
|
||||
// physicalSectionList.forEach(section -> {
|
||||
// zc.addSection(section);
|
||||
// section.addZc(zc);
|
||||
// });
|
||||
} else {
|
||||
graphData.getZcList().forEach(mapZcVO -> {
|
||||
if (mapZcVO.isNoService())
|
||||
@ -338,15 +347,20 @@ public class MapDeviceBuilder {
|
||||
Section section = (Section) elementMap.get(sectionCode);
|
||||
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertNotNull(section,
|
||||
String.format("ZC[%s]关联的区段[%s]不存在", zc.getCode(), sectionCode));
|
||||
if (section.isPhysical()) {
|
||||
section.addZc(zc);
|
||||
zc.addSection(section);
|
||||
} else if (section.isSwitchAxleCounterSection() || section.isCross()) {
|
||||
section.getLogicList().forEach(logic -> {
|
||||
logic.addZc(zc);
|
||||
zc.addSection(logic);
|
||||
});
|
||||
Section axleCounterSection = section.findAxleCounterSection();
|
||||
if (axleCounterSection != null) {
|
||||
axleCounterSection.addZc(zc);
|
||||
zc.addSection(axleCounterSection);
|
||||
}
|
||||
// if (section.isPhysical()) {
|
||||
// section.addZc(zc);
|
||||
// zc.addSection(section);
|
||||
// } else if (section.isSwitchAxleCounterSection() || section.isCross()) {
|
||||
// section.getLogicList().forEach(logic -> {
|
||||
// logic.addZc(zc);
|
||||
// zc.addSection(logic);
|
||||
// });
|
||||
// }
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -12,10 +12,7 @@ import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 区段
|
||||
@ -165,7 +162,7 @@ public class Section extends DelayUnlockDevice {
|
||||
/**
|
||||
* 所属zc
|
||||
*/
|
||||
private List<ZC> zcs = new ArrayList<>();
|
||||
private Set<ZC> zcs = new HashSet<>();
|
||||
|
||||
// ------------------状态属性---------------------
|
||||
|
||||
@ -1148,10 +1145,15 @@ public class Section extends DelayUnlockDevice {
|
||||
* 任意一个zc正常工作
|
||||
*/
|
||||
public boolean anyZcWorking() {
|
||||
if (!CollectionUtils.isEmpty(zcs)) {
|
||||
return zcs.stream().anyMatch(zc -> !zc.isFault());
|
||||
Section axleCounterSection = this.findAxleCounterSection();
|
||||
if (axleCounterSection != null && !CollectionUtils.isEmpty(axleCounterSection.getZcs())) {
|
||||
return axleCounterSection.getZcs().stream().anyMatch(zc -> !zc.isFault());
|
||||
}
|
||||
return false;
|
||||
// if (!CollectionUtils.isEmpty(zcs)) {
|
||||
// return zcs.stream().anyMatch(zc -> !zc.isFault());
|
||||
// }
|
||||
// return false;
|
||||
}
|
||||
|
||||
public void setInvalid(boolean invalid) {
|
||||
|
@ -1,11 +1,10 @@
|
||||
package club.joylink.rtss.simulation.cbtc.data.map;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 区域控制器
|
||||
@ -13,7 +12,7 @@ import java.util.Objects;
|
||||
@Getter
|
||||
public class ZC extends MayOutOfOrderDevice {
|
||||
|
||||
private List<Section> sections = new ArrayList<>();
|
||||
private Set<Section> sections = new HashSet<>();
|
||||
|
||||
public ZC(String code, String name) {
|
||||
super(code, name, DeviceType.ZC);
|
||||
|
@ -136,29 +136,20 @@ public class VRTrainRunningService {
|
||||
return;
|
||||
|
||||
//进入计轴区段判断
|
||||
Section headAxleCounterSectionNew = headPositionNew.getSection();
|
||||
if (!headAxleCounterSectionNew.isAxleCounter()) {
|
||||
headAxleCounterSectionNew = headAxleCounterSectionNew.getParent();
|
||||
}
|
||||
if (!headAxleCounterSectionNew.isAxleCounter()) { //当是——物理区段-岔心-道岔计轴区段三层结构的时候需要多这次判断
|
||||
headAxleCounterSectionNew = headAxleCounterSectionNew.getParent();
|
||||
}
|
||||
if (headAxleCounterSectionNew != null && headAxleCounterSectionNew.isAxleCounter()) { //新的区段是计轴区段
|
||||
Section headSectionOld = headPosition.getSection();
|
||||
if (!headAxleCounterSectionNew.equals(headSectionOld) && !headAxleCounterSectionNew.equals(headSectionOld.getParent())) { //新计轴区段和老区段不一样
|
||||
Section headAxleCounterSectionNew = headPositionNew.getSection().findAxleCounterSection();
|
||||
if (headAxleCounterSectionNew != null) {
|
||||
Section headAxleCounterSection = headPosition.getSection().findAxleCounterSection();
|
||||
if (!headAxleCounterSectionNew.equals(headAxleCounterSection)) { //【车头所在计轴区段】发生变化
|
||||
headAxleCounterSectionNew.getVirtualAxleCounter().trainIn(trainRight);
|
||||
}
|
||||
}
|
||||
//离开计轴区段判断
|
||||
SectionPosition tailPositionOld = CalculateService.calculateNextPositionByStartAndLen(headPosition, !trainRight, train.getLen(), true);
|
||||
Section tailAxleCounterSection = tailPositionOld.getSection();
|
||||
if (!tailAxleCounterSection.isAxleCounter()) {
|
||||
tailAxleCounterSection = tailAxleCounterSection.getParent();
|
||||
}
|
||||
if (tailAxleCounterSection != null && tailAxleCounterSection.isAxleCounter()) { //老的车尾区段是计轴区段
|
||||
Section tailAxleCounterSection = tailPositionOld.getSection().findAxleCounterSection();
|
||||
if (tailAxleCounterSection != null) {
|
||||
SectionPosition tailPositionNew = CalculateService.calculateNextPositionByStartAndLen(headPositionNew, !trainRight, train.getLen(), true);
|
||||
Section tailSectionNew = tailPositionNew.getSection();
|
||||
if (!tailAxleCounterSection.equals(tailSectionNew) && !tailAxleCounterSection.equals(tailSectionNew.getParent())) { //老车尾计轴区段和新车尾区段不一样
|
||||
Section tailAxleCounterSectionNew = tailPositionNew.getSection().findAxleCounterSection();
|
||||
if (!tailAxleCounterSection.equals(tailAxleCounterSectionNew)) { //【车尾所在计轴区段】发生变化
|
||||
tailAxleCounterSection.getVirtualAxleCounter().trainOut(trainRight);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user