增加<回库>指令;非计划车不会自动回库;设置头码车时会清空ats待触发进路;设置头码车时会更新计划区段;
This commit is contained in:
parent
8d217cfae1
commit
9bf2b2ded6
@ -2,6 +2,7 @@ package club.joylink.rtss.simulation.cbtc.ATS.service;
|
|||||||
|
|
||||||
import club.joylink.rtss.entity.PlanRouting;
|
import club.joylink.rtss.entity.PlanRouting;
|
||||||
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.ATS.service.stage.AtsHeadTrainStageService;
|
||||||
import club.joylink.rtss.simulation.cbtc.ATS.service.stage.AtsPlanTrainStageService;
|
import club.joylink.rtss.simulation.cbtc.ATS.service.stage.AtsPlanTrainStageService;
|
||||||
import club.joylink.rtss.simulation.cbtc.CI.CiApiService;
|
import club.joylink.rtss.simulation.cbtc.CI.CiApiService;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
@ -58,6 +59,9 @@ public class AtsTrainService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private AtsPlanTrainStageService atsPlanTrainStageService;
|
private AtsPlanTrainStageService atsPlanTrainStageService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AtsHeadTrainStageService atsHeadTrainStageService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加列车追踪
|
* 添加列车追踪
|
||||||
*
|
*
|
||||||
@ -332,6 +336,7 @@ public class AtsTrainService {
|
|||||||
needParking = false;
|
needParking = false;
|
||||||
}
|
}
|
||||||
supervisedTrain.change2HeadCode(destinationCode, serviceNumber, tripNumber);
|
supervisedTrain.change2HeadCode(destinationCode, serviceNumber, tripNumber);
|
||||||
|
atsHeadTrainStageService.updatePlanSection(simulation, supervisedTrain);
|
||||||
this.onboardAtpApiService.update2HeadTrainServiceNumber(simulation, groupNumber, serviceNumber, tripNumber, destinationCode, needParking);
|
this.onboardAtpApiService.update2HeadTrainServiceNumber(simulation, groupNumber, serviceNumber, tripNumber, destinationCode, needParking);
|
||||||
supervisedTrain.updateEstimatedArriveInfo(null, null);
|
supervisedTrain.updateEstimatedArriveInfo(null, null);
|
||||||
}
|
}
|
||||||
|
@ -40,16 +40,12 @@ public class AtsHeadTrainStageService implements AtsStageService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleTransferTrackParking(Simulation simulation, TrainInfo trainInfo, Section parkSection) {
|
public void handleTransferTrackParking(Simulation simulation, TrainInfo trainInfo, Section parkSection) {
|
||||||
Boolean right = trainInfo.getRight();
|
|
||||||
if (right == null)
|
|
||||||
return;
|
|
||||||
SimulationDataRepository repository = simulation.getRepository();
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
DestinationCodeDefinition dcd = repository.findDestinationCodeDefinition(trainInfo.getDestinationCode());
|
DestinationCodeDefinition dcd = repository.findDestinationCodeDefinition(trainInfo.getDestinationCode());
|
||||||
if (dcd == null)
|
if (dcd == null)
|
||||||
return;
|
return;
|
||||||
if (Objects.equals(dcd.getSection(), parkSection)) {
|
if (Objects.equals(dcd.getSection(), parkSection)) {
|
||||||
// 列车到达目的地
|
// 列车到达目的地
|
||||||
trainInfo.finishPlanPrepareInbound();
|
|
||||||
handleArriveDestination(simulation, trainInfo);
|
handleArriveDestination(simulation, trainInfo);
|
||||||
} else {
|
} else {
|
||||||
this.updatePlanSection(simulation, trainInfo);
|
this.updatePlanSection(simulation, trainInfo);
|
||||||
@ -95,7 +91,7 @@ public class AtsHeadTrainStageService implements AtsStageService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updatePlanSection(Simulation simulation, TrainInfo trainInfo) {
|
public void updatePlanSection(Simulation simulation, TrainInfo trainInfo) {
|
||||||
boolean planRight = trainInfo.getHctPath().isRight();
|
boolean planRight = trainInfo.getHctPath().isRight();
|
||||||
SimulationDataRepository repository = simulation.getRepository();
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
SectionPosition headPosition = repository.buildHeadPositionOfTrainInfo(trainInfo);
|
SectionPosition headPosition = repository.buildHeadPositionOfTrainInfo(trainInfo);
|
||||||
|
@ -31,9 +31,7 @@ public class AtsManualTrainStageService implements AtsStageService {
|
|||||||
if (routePathList.get(0).isRight() == trainInfo.getRight().booleanValue()) {
|
if (routePathList.get(0).isRight() == trainInfo.getRight().booleanValue()) {
|
||||||
in = true;
|
in = true;
|
||||||
}
|
}
|
||||||
if (in) {
|
if (!in) { // 出库,查询计划,是否此轨道有出库计划
|
||||||
trainInfo.finishPlanPrepareInbound();
|
|
||||||
} else { // 出库,查询计划,是否此轨道有出库计划
|
|
||||||
if (simulation.isPlanRunning()) {
|
if (simulation.isPlanRunning()) {
|
||||||
this.checkAndApplyTripPlan(simulation, trainInfo, parkSection);
|
this.checkAndApplyTripPlan(simulation, trainInfo, parkSection);
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,10 @@ public class AtsPlanTrainStageService implements AtsStageService {
|
|||||||
public void handleTransferTrackParking(Simulation simulation, TrainInfo trainInfo, Section parkSection) {
|
public void handleTransferTrackParking(Simulation simulation, TrainInfo trainInfo, Section parkSection) {
|
||||||
SimulationDataRepository repository = simulation.getRepository();
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
TripPlan tripPlan = repository.getTripPlan(trainInfo.getServiceNumber(), trainInfo.getTripNumber());
|
TripPlan tripPlan = repository.getTripPlan(trainInfo.getServiceNumber(), trainInfo.getTripNumber());
|
||||||
if (tripPlan.getEndSection().equals(parkSection) ||
|
List<RoutePath> routePathList = repository.queryRoutePathsByEnd(parkSection);
|
||||||
|
if (routePathList.get(0).isRight() == trainInfo.getRight()) { //准备回库
|
||||||
|
trainInfo.finishPlanPrepareInbound();
|
||||||
|
} else if (tripPlan.getEndSection().equals(parkSection) ||
|
||||||
tripPlan.getEndSection().getStation().equals(parkSection.getStation())) {
|
tripPlan.getEndSection().getStation().equals(parkSection.getStation())) {
|
||||||
// 列车到达计划终点,准备回库
|
// 列车到达计划终点,准备回库
|
||||||
trainInfo.finishPlanPrepareInbound();
|
trainInfo.finishPlanPrepareInbound();
|
||||||
|
@ -60,10 +60,6 @@ public class AtsTrainStageHandler {
|
|||||||
AtsStageService stageService = this.getStageService(trainInfo);
|
AtsStageService stageService = this.getStageService(trainInfo);
|
||||||
if (parkSection.isTransferTrack()) { // 转换轨
|
if (parkSection.isTransferTrack()) { // 转换轨
|
||||||
stageService.handleTransferTrackParking(simulation, trainInfo, parkSection);
|
stageService.handleTransferTrackParking(simulation, trainInfo, parkSection);
|
||||||
List<RoutePath> routePathList = repository.queryRoutePathsByEnd(parkSection);
|
|
||||||
if (routePathList.get(0).isRight() == trainInfo.getRight()) { //准备回库
|
|
||||||
trainInfo.finishPlanPrepareInbound();
|
|
||||||
}
|
|
||||||
} else if (parkSection.isNormalStandTrack()) { // 正常站台轨
|
} else if (parkSection.isNormalStandTrack()) { // 正常站台轨
|
||||||
stageService.handleNormalStandParking(simulation, trainInfo, parkSection);
|
stageService.handleNormalStandParking(simulation, trainInfo, parkSection);
|
||||||
List<Stand> standList = parkSection.getStandList();
|
List<Stand> standList = parkSection.getStandList();
|
||||||
|
@ -5,11 +5,14 @@ import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation;
|
|||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
import club.joylink.rtss.simulation.cbtc.constant.DriveMode;
|
import club.joylink.rtss.simulation.cbtc.constant.DriveMode;
|
||||||
import club.joylink.rtss.simulation.cbtc.constant.RunLevel;
|
import club.joylink.rtss.simulation.cbtc.constant.RunLevel;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.SimulationDataRepository;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Section;
|
import club.joylink.rtss.simulation.cbtc.data.map.Section;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Signal;
|
import club.joylink.rtss.simulation.cbtc.data.map.Signal;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Stand;
|
import club.joylink.rtss.simulation.cbtc.data.map.Stand;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Switch;
|
import club.joylink.rtss.simulation.cbtc.data.map.Switch;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.support.RoutePath;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.support.SectionPosition;
|
import club.joylink.rtss.simulation.cbtc.data.support.SectionPosition;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.vo.TrainInfo;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
|
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
|
||||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
||||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
||||||
@ -586,6 +589,31 @@ public class CommandBO {
|
|||||||
return buildDriverAtoOpenOperationStep(train.getGroupNumber());
|
return buildDriverAtoOpenOperationStep(train.getGroupNumber());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 回库 */
|
||||||
|
Inbound(List.of(), SimulationMember.Type.DRIVER) {
|
||||||
|
@Override
|
||||||
|
public List<Step> buildStepList(Simulation simulation, SimulationMember targetMember, Map<String, Object> params) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Step executeOrReturnStep(Simulation simulation, CommandBO command) {
|
||||||
|
SimulationMember driver = command.getTargetMember();
|
||||||
|
driver.setCommand(null);
|
||||||
|
VirtualRealityTrain train = (VirtualRealityTrain) driver.getDevice();
|
||||||
|
Section headSection = train.getHeadPosition().getSection();
|
||||||
|
if (headSection.isTransferTrack() && train.isStop()) { //列车停在折返轨
|
||||||
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
|
TrainInfo trainInfo = repository.getSupervisedTrainByGroup(train.getGroupNumber());
|
||||||
|
List<RoutePath> routePathList = repository.queryRoutePathsByEnd(headSection);
|
||||||
|
if (routePathList.get(0).isRight() == trainInfo.getRight()) { //准备回库
|
||||||
|
trainInfo.finishPlanPrepareInbound();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1144,6 +1144,8 @@ public class Section extends MayOutOfOrderDevice {
|
|||||||
@Override
|
@Override
|
||||||
public void fix(MayOutOfOrderDevice device) {
|
public void fix(MayOutOfOrderDevice device) {
|
||||||
Section section = (Section) device;
|
Section section = (Section) device;
|
||||||
|
if (this != section.getFault())
|
||||||
|
return;
|
||||||
if (!section.isAxleCounter()) {
|
if (!section.isAxleCounter()) {
|
||||||
section = section.getParent();
|
section = section.getParent();
|
||||||
}
|
}
|
||||||
@ -1224,6 +1226,8 @@ public class Section extends MayOutOfOrderDevice {
|
|||||||
@Override
|
@Override
|
||||||
public void fix(MayOutOfOrderDevice device) {
|
public void fix(MayOutOfOrderDevice device) {
|
||||||
Section section = (Section) device;
|
Section section = (Section) device;
|
||||||
|
if (this != section.getFault())
|
||||||
|
return;
|
||||||
List<Section> sections;
|
List<Section> sections;
|
||||||
if (!section.isAxleCounter()) {
|
if (!section.isAxleCounter()) {
|
||||||
if (section.getParent() != null && section.getParent().isAxleCounter()) {
|
if (section.getParent() != null && section.getParent().isAxleCounter()) {
|
||||||
|
@ -556,6 +556,7 @@ public class TrainInfo extends MapElement {
|
|||||||
this.planRoutingType = null;
|
this.planRoutingType = null;
|
||||||
this.type = TrainType.HEAD;
|
this.type = TrainType.HEAD;
|
||||||
this.routing = null;
|
this.routing = null;
|
||||||
|
this.atsTriggerRouteMap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void frontTurnBackStart() {
|
public void frontTurnBackStart() {
|
||||||
|
Loading…
Reference in New Issue
Block a user