diff --git a/src/main/java/club/joylink/rtss/entity/DraftMapStationDirection.java b/src/main/java/club/joylink/rtss/entity/DraftMapStationDirection.java index 977fadffa..bdded9640 100644 --- a/src/main/java/club/joylink/rtss/entity/DraftMapStationDirection.java +++ b/src/main/java/club/joylink/rtss/entity/DraftMapStationDirection.java @@ -90,6 +90,11 @@ public class DraftMapStationDirection implements Serializable { * 相对方向 */ private String relativeLabelEnum; + /** + * 出入口方向 + */ + private StationDirection.IODirection ioDirection; + public void generateSectionList() { if (StringUtils.isEmpty(sectionsCode)) { diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java index 4dd66a06a..8a5f64cd6 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java @@ -1276,7 +1276,57 @@ public class Operation { /** * 给出票据 */ - RAIL_GIVE_TICKET_TO(new Label[]{Label.OTHER}); + RAIL_GIVE_TICKET_TO(new Label[]{Label.OTHER}), + /** + * 股道列表 + */ + STATION_DETAIL_LIST(new Label[]{Label.CLIENT}), + /** + * 股道编辑 + */ + STATION_DETAIL_EDIT(new Label[]{Label.CLIENT}), + /** + * 编辑区发布生效 + */ + STATION_DETAIL_PUBLISH(new Label[]{Label.CLIENT}), + + /** + * 车站出入口列表 + */ + STATION_IO_GATE_LIST(new Label[]{Label.CLIENT}), + /** + * 车站出入口编辑 + */ + STATION_IO_GATE_EDIT(new Label[]{Label.CLIENT}), + /** + * 编辑区发布生效 + */ + STATION_IO_GATE_PUBLISH(new Label[]{Label.CLIENT}), + + /** + * 车辆固定经路列表 + */ + REGULAR_TRAIN_LINE_LIST(new Label[]{Label.CLIENT}), + /** + * 车辆固定经路修改 + */ + REGULAR_TRAIN_LINE_EDIT(new Label[]{Label.CLIENT}), + /** + * 车辆固定经路删除 + */ + REGULAR_TRAIN_LINE_DELETE(new Label[]{Label.CLIENT}), + /** + * 车辆固定经路清除 + */ + REGULAR_TRAIN_LINE_CLEAR(new Label[]{Label.CLIENT}), + /** + * 车辆固定经路批量添加 + */ + REGULAR_TRAIN_LINE_BATCH(new Label[]{Label.CLIENT}), + /** + * 编辑区发布生效 + */ + REGULAR_TRAIN_LINE_PUBLISH(new Label[]{Label.CLIENT}); final Label[] labels; diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CI/data/StationDirection.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CI/data/StationDirection.java index 5c86167bd..7953a35fe 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/CI/data/StationDirection.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CI/data/StationDirection.java @@ -70,6 +70,8 @@ public class StationDirection extends MayOutOfOrderDevice { * 相对运行方向 */ private StationDirection relativeStationDirection; + + private Station relativeStation; /**************************************** 初始数据配置信息 **********************************************/ /***************************************** 联锁指示灯状态 ***********************************************/ @@ -170,6 +172,7 @@ public class StationDirection extends MayOutOfOrderDevice { /***************************************** 半自动闭塞按钮状态 ******************************************/ /***************************************** 关联进路信息 ***********************************************/ + /** * 当前进路列表 */ @@ -201,7 +204,32 @@ public class StationDirection extends MayOutOfOrderDevice { * 默认方向 */ private Boolean right; + /***************************************** 车务终端管理出入口方向相关属性begin **********************************************/ + private IODirection ioDirection; + /** + * 允许超限列车 + * 选择“是/否”。 + * 1.普速铁路一般选择“是”(有明确不允许超限列 + * 车的选择“否”)。 + * 2.高速铁路一般选择“否”(200km/h 客货共线铁路 + * 根据文件确定) + */ + private boolean allowOverrun; + /** + * 允许旅客列车 + * 选择“是/否”。两线、多线区间根据《行规》列 + * 车运行分工选择 + */ + private boolean travelTrain; + + /** + * 允许货物列车 + * 选择“是/否”。两线、多线区间根据《行规》列 + * 车运行分工选择。 + */ + private boolean goodsTrain; + /***************************************** 车务终端管理出入口方向相关属性begin **********************************************/ // TODO: 待数据统一之后,这个构造函数代码可删除 20220714 public StationDirection(String code, String name, DirectionLabelEnum labelEnum) { this(code, name); @@ -211,7 +239,17 @@ public class StationDirection extends MayOutOfOrderDevice { this.defaultRunStatus = this.getDefaultReceiveAndDeliver(); this.currentRouteList = getNowRouteList(); } + public StationDirection(String code, String name, DirectionLabelEnum labelEnum,IODirection ioDirection) { + this(code, name); + this.labelEnum = labelEnum; + this.runModel = getDefaultDirectionRunModel(); + this.runStatus = this.getDefaultReceiveAndDeliver(); + this.defaultRunStatus = this.getDefaultReceiveAndDeliver(); + this.currentRouteList = getNowRouteList(); + this.ioDirection = ioDirection; + + } public StationDirection(DraftMapStationDirection draftMapStationDirection) { this(draftMapStationDirection.getCode(), draftMapStationDirection.getName()); this.labelEnum = draftMapStationDirection.getLabelEnum(); @@ -220,6 +258,8 @@ public class StationDirection extends MayOutOfOrderDevice { this.defaultRunStatus = draftMapStationDirection.getRunStatus(); this.currentRouteList = getNowRouteList(); this.isDataConfig = true; + this.ioDirection = draftMapStationDirection.getIoDirection(); + } public StationDirection(String code, String name) { @@ -663,4 +703,16 @@ public class StationDirection extends MayOutOfOrderDevice { // 非自动 N } + + /** + * 出入口方向 + */ + public enum IODirection{ + DOWN_IN_STATION, + UP_IN_STATION, + DOWN_OUT_STATION, + UP_OUT_STATION, + BOTH_WAY_STATION; + + } } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/CtcEffectRepository.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/CtcEffectRepository.java index 7e11b63b9..ad2a69a36 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/CtcEffectRepository.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/CtcEffectRepository.java @@ -459,15 +459,15 @@ public class CtcEffectRepository { * 车站出入口 */ @Data - public static class StationDoorRepository extends AbstractWorkspaceRepository { + public static class StationDoorRepository extends AbstractWorkspaceRepository { @Override - public void save(StationIOGate o) { + public void save(StationDirection o) { this.dataMap.put(o.getCode(),o); } @Override - public StationIOGate query(String code) { + public StationDirection query(String code) { return this.dataMap.get(code); } } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/StationIOGate.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/StationIOGate.java index e25efca8f..6f5a0da16 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/StationIOGate.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/StationIOGate.java @@ -1,24 +1,45 @@ package club.joylink.rtss.simulation.cbtc.CTC.data; -import club.joylink.rtss.constants.DirectionLabelEnum; +import club.joylink.rtss.simulation.cbtc.CI.data.StationDirection; import lombok.Data; import lombok.NoArgsConstructor; + /** * 车站出入口 */ @Data @NoArgsConstructor public class StationIOGate { + + public StationIOGate(StationDirection sd){ + this.code = sd.getCode(); + this.ioName = sd.getName(); + this.allowOverrun = sd.isAllowOverrun(); + this.travelTrain = sd.isTravelTrain(); + this.goodsTrain = sd.isGoodsTrain(); + this.ioDirection = sd.getIoDirection(); +// this.defaultRunStatus = sd.getRunStatus(); +// if(Objects.nonNull(sd.getRelativeStation())){ +// this.relativeStationCode = sd.getRelativeStation().getCode(); +// this.relativeStationName = sd.getRelativeStation().getName(); +// } + } private String code; private String ioName; + private String relativeStationName; + private String relativeStationCode; + /** + * 接发车类型 + */ + private StationDirection.ReceiveAndDeliverModel defaultRunStatus; /** * 出入口方向 * 1.双线自动闭塞区段,按进站信号机的行别、属性 * 选择“下行进站/上行出站/下行出站/上行进站”。 * 2.单线自动闭塞、半自动闭塞区段,选择“双向” */ - private DirectionLabelEnum direction; + private StationDirection.IODirection ioDirection; /** * 允许超限列车 diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/TrackSection.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/TrackSection.java index eb9471dd1..fd46e4cea 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/TrackSection.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/TrackSection.java @@ -80,6 +80,15 @@ public class TrackSection { this.code = section.getCode(); this.name = section.getName(); this.sectionCode = section.getCode(); + this.initDefault(); + } + + private void initDefault(){ + this.trackNature =TrackNature.RIGHT_TRACK; + this.direction =DirectionType.D; + this.trainType = TrainType.VAN; + this.transfinite = CtcStationRunPlanLog.TransfiniteType.NO; + this.standType = StandType.NO; } /** diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/service/runplan/CtcManageService.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/service/runplan/CtcManageService.java index 778edc5ca..6644e90f7 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/service/runplan/CtcManageService.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/service/runplan/CtcManageService.java @@ -169,10 +169,13 @@ public class CtcManageService { .assertNotTrue(Strings.isNullOrEmpty(ts.getCode()), String.format("未找到对应的站细")); CtcManageRepository repository = simulation.getCtcRepository().getCtcManageRepository(); CtcEffectRepository.StationDoorRepository trackSectionRepository = repository.getDoorRepository().get(stationCode); - Object obj = trackSectionRepository.query(ts.getCode()); + StationDirection obj = trackSectionRepository.query(ts.getCode()); BusinessExceptionAssertEnum.DATA_NOT_EXIST .assertNotTrue(Objects.isNull(obj), String.format("未找到对应的站细")); - trackSectionRepository.save(ts); + obj.setAllowOverrun(ts.isAllowOverrun()); + obj.setTravelTrain(ts.isTravelTrain()); + obj.setGoodsTrain(ts.isGoodsTrain()); + trackSectionRepository.save(obj); } /** @@ -184,7 +187,11 @@ public class CtcManageService { public List listIOGate(Simulation simulation,String stationCode){ CtcManageRepository repository = simulation.getCtcRepository().getCtcManageRepository(); CtcEffectRepository.StationDoorRepository doorRepository = repository.getDoorRepository().get(stationCode); - return Lists.newArrayList(doorRepository.getDataMap().values()); + List gateList = new ArrayList<>(); + for (StationDirection value : doorRepository.getDataMap().values()) { + gateList.add(new StationIOGate(value)); + } + return gateList; } @@ -219,12 +226,17 @@ public class CtcManageService { RegularTrainLine rt = new RegularTrainLine(rtvo); Station station = dataRepository.getByCode(stationCode, Station.class); Section stand = dataRepository.getByCode(rtvo.getMasterCode(), Section.class); - Station backStation = dataRepository.getByCode(rtvo.getBackStationCode(),Station.class); - Station fontStation = dataRepository.getByCode(rtvo.getFontStationCode(),Station.class); + rt.setStation(station); rt.setMasterStand(stand); - rt.setBackStation(backStation); - rt.setFontStation(fontStation); + if(Objects.nonNull(rtvo.getBackStationCode())){ + Station backStation = dataRepository.getByCode(rtvo.getBackStationCode(),Station.class); + rt.setBackStation(backStation); + } + if(Objects.nonNull(rtvo.getFontStationCode())){ + Station fontStation = dataRepository.getByCode(rtvo.getFontStationCode(),Station.class); + rt.setFontStation(fontStation); + } for (StationDirection value : station.getStationDirectionMap().values()) { if(Objects.equals(value.getCode(),rtvo.getEnterDirCode())){ rt.setEnter(value); @@ -265,6 +277,9 @@ public class CtcManageService { public List regularTrainLineList(Simulation simulation, String stationCode){ CtcManageRepository repository = simulation.getCtcRepository().getCtcManageRepository(); CtcEffectRepository.RegularTrainLineRepository tLRepository = repository.getRegularTrainLineMap().get(stationCode); + if(Objects.isNull(tLRepository) || tLRepository.getDataMap().isEmpty()){ + return Collections.emptyList(); + } List voList = new ArrayList<>(tLRepository.getDataMap().values().size()); for (RegularTrainLine value : tLRepository.getDataMap().values()) { voList.add(new RegularTrainLineVO(value)); diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/build/InterlockBuilder2.java b/src/main/java/club/joylink/rtss/simulation/cbtc/build/InterlockBuilder2.java index e22b94cdb..df12290f0 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/build/InterlockBuilder2.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/build/InterlockBuilder2.java @@ -1672,7 +1672,8 @@ public class InterlockBuilder2 { model = new StationDirection(stationDirection); } else { // TODO: 待数据统一之后,下方构建代码可删除 20220714 - model = new StationDirection(stationDirection.getCode(), stationDirection.getName(), stationDirection.getLabelEnum()); +// model = new StationDirection(stationDirection.getCode(), stationDirection.getName(), stationDirection.getLabelEnum()); + model = new StationDirection(stationDirection.getCode(), stationDirection.getName(), stationDirection.getLabelEnum(),stationDirection.getIoDirection()); } // 注入信号灯数据 if (!StringUtils.isEmpty(stationDirection.getSignalCode())) { @@ -1700,6 +1701,12 @@ public class InterlockBuilder2 { } Station station = (Station) elementMap.get(stationDirection.getStationCode()); model.setStation(station); + if(Objects.nonNull(stationDirection.getRelativeStationCode())){ + MapElement relativeStation = elementMap.get(stationDirection.getRelativeStationCode()); + if(Objects.nonNull(relativeStation)){ + model.setRelativeStation((Station) relativeStation); + } + } station.getStationDirectionMap().put(model.getLabelEnum(), model); elementMap.put(model.getCode(), model); } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/build/SimulationBuilder.java b/src/main/java/club/joylink/rtss/simulation/cbtc/build/SimulationBuilder.java index 4f5eb0769..f9ae4b71e 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/build/SimulationBuilder.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/build/SimulationBuilder.java @@ -362,14 +362,15 @@ public class SimulationBuilder { doorRepository.put(stationCode,doorRep); } for (StationDirection sd : station.getStationDirectionMap().values()) { - StationIOGate ioGate = new StationIOGate(); - ioGate.setCode(sd.getCode()); - ioGate.setIoName(sd.getName()); - ioGate.setDirection(sd.getLabelEnum()); - doorRep.save(ioGate); +// StationIOGate ioGate = new StationIOGate(); +// ioGate.setCode(sd.getCode()); +// ioGate.setIoName(sd.getName()); +// ioGate.setDirection(sd.getLabelEnum()); + doorRep.save(sd); } for (Stand stand : station.getAllStandList()) { TrackSection ts = new TrackSection(stand.getSection()); + rep.save(ts); } } diff --git a/src/main/resources/mybatis/mapper/DraftMapStationDirectionDAO.xml b/src/main/resources/mybatis/mapper/DraftMapStationDirectionDAO.xml index e6f7803ce..4f3d22bf5 100644 --- a/src/main/resources/mybatis/mapper/DraftMapStationDirectionDAO.xml +++ b/src/main/resources/mybatis/mapper/DraftMapStationDirectionDAO.xml @@ -14,6 +14,8 @@ + + @@ -80,7 +82,7 @@ id, map_id, code, name, station_code, sections_code, label_enum, - signal_code, run_model, run_status, relative_station_code, + signal_code, run_model, run_status, relative_station_code,io_direction, relative_label_enum @@ -131,20 +133,20 @@ useGeneratedKeys="true"> insert into draft_map_station_direction_label ( map_id, code, name, station_code, sections_code, label_enum - ,signal_code, run_model, run_status, relative_station_code, relative_label_enum + ,signal_code, run_model, run_status, relative_station_code, relative_label_enum,io_direction ) values ( #{mapId,jdbcType=BIGINT}, #{code,jdbcType=VARCHAR}, #{name, jdbcType=VARCHAR}, #{stationCode,jdbcType=VARCHAR} ,#{sectionsCode,jdbcType=VARCHAR}, #{labelEnum,jdbcType=VARCHAR}, #{signalCode,jdbcType=VARCHAR} ,#{runModel,jdbcType=VARCHAR},#{runStatus,jdbcType=VARCHAR},#{relativeStationCode,jdbcType=VARCHAR} - ,#{relativeLabelEnum, jdbcType=VARCHAR} + ,#{relativeLabelEnum, jdbcType=VARCHAR},#{ioDirection, jdbcType=VARCHAR} ) insert into draft_map_station_direction_label ( map_id, code, name, station_code, sections_code, label_enum - ,signal_code, run_model, run_status, relative_station_code, relative_label_enum + ,signal_code, run_model, run_status, relative_station_code, relative_label_enum,io_direction ) values @@ -153,7 +155,7 @@ #{record.stationCode,jdbcType=VARCHAR}, #{record.sectionsCode,jdbcType=VARCHAR}, #{record.labelEnum,jdbcType=VARCHAR}, #{record.signalCode,jdbcType=VARCHAR} , #{record.runModel,jdbcType=VARCHAR}, #{record.runStatus,jdbcType=VARCHAR}, - #{record.relativeStationCode,jdbcType=VARCHAR} ,#{record.relativeLabelEnum,jdbcType=VARCHAR} + #{record.relativeStationCode,jdbcType=VARCHAR} ,#{record.relativeLabelEnum,jdbcType=VARCHAR},#{record.ioDirection, jdbcType=VARCHAR} ) @@ -235,6 +237,9 @@ relative_label_enum= #{record.relativeLabelEnum,jdbcType=VARCHAR}, + + io_direction= #{record.ioDirection,jdbcType=VARCHAR}, + @@ -254,7 +259,9 @@ run_model = #{record.runModel,jdbcType=VARCHAR}, run_status = #{record.runStatus,jdbcType=VARCHAR}, relative_station_code= #{record.relativeStationCode,jdbcType=VARCHAR}, - relative_label_enum= #{record.relativeLabelEnum,jdbcType=VARCHAR} + relative_label_enum= #{record.relativeLabelEnum,jdbcType=VARCHAR}, + io_direction= #{record.ioDirection,jdbcType=VARCHAR} + @@ -297,6 +304,9 @@ relative_label_enum= #{relativeLabelEnum,jdbcType=VARCHAR}, + + io_direction= #{record.ioDirection,jdbcType=VARCHAR}, + where id = #{id,jdbcType=BIGINT} @@ -314,7 +324,8 @@ run_model = #{runModel,jdbcType=VARCHAR}, run_status = #{runStatus,jdbcType=VARCHAR}, relative_station_code= #{relativeStationCode,jdbcType=VARCHAR}, - relative_label_enum= #{relativeLabelEnum,jdbcType=VARCHAR} + relative_label_enum= #{relativeLabelEnum,jdbcType=VARCHAR}, + io_direction= #{record.ioDirection,jdbcType=VARCHAR}, where id = #{id,jdbcType=BIGINT} - \ No newline at end of file +