Merge remote-tracking branch 'origin/test' into dev

# Conflicts:
#	src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/TrainOperateHandler.java
This commit is contained in:
joylink_zhangsai 2021-08-27 15:09:15 +08:00
commit 09890ab2a1
8 changed files with 55 additions and 14 deletions

View File

@ -259,21 +259,30 @@ public class MaService {
private SectionPosition buildEoaOfLimitSignalWithOverlap(Signal signal, boolean right) {
List<RouteOverlap> overlapList = signal.getOverlapList();
Section section = this.queryOverlapLockedEndSection(overlapList);
if (section == null) {
section = signal.getSection();
SectionPosition eoa = this.queryOverlapLockedEndSection(overlapList, right);
if (eoa == null) {
Section section = signal.getSection();
eoa = new SectionPosition(section, right ? section.getMaxOffset() : section.getMinOffset());
}
return new SectionPosition(section, right ? section.getLen() : 0);
return eoa;
}
private Section queryOverlapLockedEndSection(List<RouteOverlap> overlapList) {
private SectionPosition queryOverlapLockedEndSection(List<RouteOverlap> overlapList, boolean right) {
for (RouteOverlap routeOverlap : overlapList) {
if (routeOverlap.isLock()) {
List<SectionPath> pathList = routeOverlap.getPathList();
for (SectionPath sectionPath : pathList) {
List<Section> logicList = sectionPath.getLogicList();
if (!CollectionUtils.isEmpty(logicList)) {
Section lastSection = logicList.get(logicList.size() - 1);
if (lastSection.isOverlapLock()) {
return new SectionPosition(lastSection.getParent(), right ? lastSection.getMaxOffset() : lastSection.getMinOffset());
}
}
List<Section> sectionList = sectionPath.getSectionList();
if (sectionList.get(sectionList.size() - 1).isOverlapLock()) {
return sectionList.get(sectionList.size() - 1);
Section last = sectionList.get(sectionList.size() - 1);
if (last.isOverlapLock()) {
return new SectionPosition(last, right ? last.getMaxOffset() : last.getMinOffset());
}
}
}

View File

@ -105,11 +105,12 @@ public class TrainOperateHandler {
* @param sn 服务号/表号可为空
* @param tn 行程号/序号/车次号可为空
* @param cn 乘务组号可为空
* @param autoTrigger 列车自动排列可为空
*/
@OperateHandlerMapping(type = Operation.Type.Train_Add_Train_Trace)
public void addTrainTrace(Simulation simulation, String sectionCode, String groupNumber,
String dn, String sn, String tn, String cn) {
this.atsTrainService.addTrainTrace(simulation, sectionCode, groupNumber, dn, sn, tn, cn);
String dn, String sn, String tn, String cn, Boolean autoTrigger) {
this.atsTrainService.addTrainTrace(simulation, sectionCode, groupNumber, dn, sn, tn, cn, Objects.isNull(autoTrigger) || autoTrigger);
}
/**
@ -157,6 +158,8 @@ public class TrainOperateHandler {
updateParam.getServiceNumber(), updateParam.getTripNumber(), updateParam.getDestinationCode());
break;
}
this.atsTrainService.autoTrigger(simulation, updateParam.getGroupNumber(),
Objects.isNull(updateParam.getAutoTrigger()) || updateParam.getAutoTrigger());
}
/**

View File

@ -28,6 +28,9 @@ public class TrainTypeUpdateParam {
/** 更新为头码车的目的地码 */
private String destinationCode;
/** 列车自动进路排列 */
private Boolean autoTrigger;
public void validCheck() {
if (Objects.isNull(this.groupNumber) || Objects.isNull(this.type)) {
throw new SimulationException(SimulationExceptionType.Illegal_Argument);

View File

@ -72,7 +72,7 @@ public class AtsTrainService {
* @param cn
*/
public void addTrainTrace(Simulation simulation, String sectionCode, String groupNumber,
String dn, String sn, String tn, String cn) {
String dn, String sn, String tn, String cn, boolean autoTrigger) {
SimulationDataRepository repository = simulation.getRepository();
//车组号检查
TrainInfo trainInfo = repository.findSupervisedTrainByGroup(groupNumber);
@ -101,6 +101,7 @@ public class AtsTrainService {
ti = new TrainInfo(groupNumber, TrainType.MANUAL);
}
ti.init(section, dn, sn, tn, cn);
ti.setAtsAutoTrigger(autoTrigger);
repository.addTrainInfo(ti);
}
@ -940,4 +941,9 @@ public class AtsTrainService {
BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertCollectionNotEmpty(standCodes, "所选站台列表不能为空");
standCodes.forEach(code -> atsStandService.cancelJumpStop(simulation, code, groupNumber));
}
public void autoTrigger(Simulation simulation, String groupNumber, boolean autoTrigger) {
TrainInfo trainInfo = simulation.getRepository().getSupervisedTrainByGroup(groupNumber);
trainInfo.setAtsAutoTrigger(autoTrigger);
}
}

View File

@ -32,6 +32,9 @@ public class AtsTriggerRouteService {
if (trainInfo.isManualTrain()) { // 人工车不触发
return;
}
if (!trainInfo.isAtsAutoTrigger()) { // 关闭列车自动排列
return;
}
Map<String, Route> atsTriggerRouteMap = trainInfo.getAtsTriggerRouteMap();
boolean triggerRoute = triggerRoute(simulation, trainInfo, atsTriggerRouteMap); //触发了进路办理
if (!triggerRoute) {

View File

@ -123,6 +123,8 @@ public class TrainStatus extends DeviceStatus {
private String turnBackStatus;
private Boolean autoTrigger;
public TrainStatus(TrainInfo train) {
super(train.getGroupNumber(), MapElement.DeviceType.TRAIN);
this.groupNumber = train.getGroupNumber();
@ -157,6 +159,7 @@ public class TrainStatus extends DeviceStatus {
this.parkingRemainTime = train.getParkingRemainTimeInSeconds();
this.turnBackStrategy = train.getTurnBackStrategy();
this.turnBackStatus = train.getTurnBackStatus();
this.autoTrigger = train.isAtsAutoTrigger();
}
/**
@ -317,6 +320,11 @@ public class TrainStatus extends DeviceStatus {
status.setTurnBackStatus(this.turnBackStatus);
change = true;
}
if (!Objects.equals(this.autoTrigger, train.isAtsAutoTrigger())) {
this.autoTrigger = train.isAtsAutoTrigger();
status.setAutoTrigger(this.autoTrigger);
change = true;
}
return change;
}

View File

@ -239,6 +239,12 @@ public class TrainInfo extends MapElement {
@Setter
private String turnBackStrategy;
/**
* 自动进路排列
*/
@Setter
private boolean atsAutoTrigger = true;
/**
* 折返状态
*/

View File

@ -123,6 +123,8 @@ public class TrainStatusVO extends DeviceStatusVO {
private String turnBackStatus;
private Boolean autoTrigger;
public TrainStatusVO(TrainInfo train) {
super(train.getGroupNumber(), MapElement.DeviceType.TRAIN);
}
@ -156,6 +158,7 @@ public class TrainStatusVO extends DeviceStatusVO {
this.parkingRemainTime = train.getParkingRemainTime();
this.turnBackStrategy = train.getTurnBackStrategy();
this.turnBackStatus = train.getTurnBackStatus();
this.autoTrigger = train.getAutoTrigger();
}