From 3ea0d08ca683ba2f896c02a10998a5319472960a Mon Sep 17 00:00:00 2001 From: tiger_zhou Date: Fri, 15 Dec 2023 15:01:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=85=B3=E9=97=A8=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E5=A4=B1=E8=A1=A8=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ats/cache/LineGraphicDataRepository.java | 22 + .../collect/convertor/ConvertorUtil.java | 40 - .../datasource/InUsedScheduleData.java | 4 +- .../line3/rep/DeviceStatusChangeResponse.java | 2 +- .../ats/warn/PlatformAlertMonitoringTask.java | 23 +- .../ats/warn/SwitchLostAlertListener.java | 3 +- .../warn/SwitchLostAlertMonitoringTask.java | 36 +- .../warn/SwitchLostAlertMonitoringTask2.java | 146 +++ .../ats/warn/TrainReacrdAlertListener.java | 8 +- .../configuration/pros/OccNotHandlePros.java | 33 + .../xiannccda/constants/SystemContext.java | 6 +- .../dto/protos/LayoutGraphicsProto.java | 930 ++++++++++++++++-- 12 files changed, 1115 insertions(+), 138 deletions(-) delete mode 100644 src/main/java/club/joylink/xiannccda/ats/message/collect/convertor/ConvertorUtil.java create mode 100644 src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertMonitoringTask2.java create mode 100644 src/main/java/club/joylink/xiannccda/configuration/pros/OccNotHandlePros.java diff --git a/src/main/java/club/joylink/xiannccda/ats/cache/LineGraphicDataRepository.java b/src/main/java/club/joylink/xiannccda/ats/cache/LineGraphicDataRepository.java index 5cfb6ba..a7241da 100644 --- a/src/main/java/club/joylink/xiannccda/ats/cache/LineGraphicDataRepository.java +++ b/src/main/java/club/joylink/xiannccda/ats/cache/LineGraphicDataRepository.java @@ -7,6 +7,7 @@ import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto; import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.CommonInfo; import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.KilometerSystem; import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.LogicSection; +import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.Platform; import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.RelatedRef.DeviceType; import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.RtssGraphicStorage; import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.Section; @@ -27,6 +28,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Stream; import lombok.Getter; @@ -137,6 +139,18 @@ public class LineGraphicDataRepository { } } + public static Optional findLayoutPlatformFromSection(Integer lineId, String sectionName) { + MessageOrBuilder sectionMsg = LineGraphicDataRepository.getDeviceByCodeNotException(lineId, sectionName); + if (Objects.isNull(sectionMsg)) { + return Optional.empty(); + } + if (sectionMsg instanceof Section section) { + Stream platformStream = LineGraphicDataRepository.getDevices(lineId, LayoutGraphicsProto.Platform.class); + return platformStream.filter(d -> StringUtils.equals(d.getRefSectionId(), section.getCommon().getId())).findFirst(); + } + return Optional.empty(); + } + public static String findAxleCodeFromLogicCode(int lineId, String logicCode) { return LOGIC_SECTION_TO_AXLE_TABLE.get(lineId, logicCode); @@ -195,6 +209,14 @@ public class LineGraphicDataRepository { return LOGIC_SECTION_TO_SECTION_TABLE.get(lineId, code); } + public static Optional getDeviceOptByCode(int lineId, String code, Class cls) { + MessageOrBuilder mob = line_code_table.get(lineId, code); + if (Objects.isNull(mob)) { + return Optional.empty(); + } + return Optional.of((T) mob); + } + public static T getDeviceByCode(int lineId, String code, Class cls) { MessageOrBuilder mob = line_code_table.get(lineId, code); BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertNotNull(mob, diff --git a/src/main/java/club/joylink/xiannccda/ats/message/collect/convertor/ConvertorUtil.java b/src/main/java/club/joylink/xiannccda/ats/message/collect/convertor/ConvertorUtil.java deleted file mode 100644 index 87858e6..0000000 --- a/src/main/java/club/joylink/xiannccda/ats/message/collect/convertor/ConvertorUtil.java +++ /dev/null @@ -1,40 +0,0 @@ -package club.joylink.xiannccda.ats.message.collect.convertor; - -import com.baomidou.mybatisplus.core.toolkit.StringPool; -import com.google.common.base.Splitter; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -@Component -public class ConvertorUtil { - - @Value("#{${occ-not-handle-rtu}}") -// @Value("${occ-not-handle-rtu}") - private Map mapList; - - /** - * 过滤需要处理的rtu消息 - * - * @param lineId - * @param rtuId - * @return - */ - public boolean notMatchHandle(Integer lineId, Integer rtuId) { - if (Objects.isNull(lineId) || Objects.isNull(rtuId)) { - return true; - } - String rtuIds = mapList.get(lineId); - if (StringUtils.isEmpty(rtuIds)) { - return true; - } - List rtuList = Splitter.on(StringPool.COMMA).splitToList(rtuIds); - if (rtuList.contains(rtuId.toString())) { - return false; - } - return true; - } -} diff --git a/src/main/java/club/joylink/xiannccda/ats/message/collect/datasource/InUsedScheduleData.java b/src/main/java/club/joylink/xiannccda/ats/message/collect/datasource/InUsedScheduleData.java index 36d959c..61ccc40 100644 --- a/src/main/java/club/joylink/xiannccda/ats/message/collect/datasource/InUsedScheduleData.java +++ b/src/main/java/club/joylink/xiannccda/ats/message/collect/datasource/InUsedScheduleData.java @@ -45,13 +45,13 @@ public class InUsedScheduleData extends AbstractData { } } - public Optional findPlan(String trainId, String globalId, Integer stationId, boolean upDownWay) { + public Optional findPlan(String trainId, String globalId, Integer stationId, boolean upDownWay, Integer platformId) { List plans = trainSchedule.get(trainId, globalId); if (CollectionUtils.isEmpty(plans)) { return Optional.empty(); } - Optional optional = plans.stream().filter(d -> d.getStationId() == stationId && Objects.equals(d.getUpWay(), upDownWay)).findAny(); + Optional optional = plans.stream().filter(d -> d.getStationId() == stationId && Objects.equals(d.getUpWay(), upDownWay) && d.getPlatformId() == platformId).findAny(); /* if (optional.isEmpty()) { System.out.println("aaaaaaaaaaaaa"); }*/ diff --git a/src/main/java/club/joylink/xiannccda/ats/message/line3/rep/DeviceStatusChangeResponse.java b/src/main/java/club/joylink/xiannccda/ats/message/line3/rep/DeviceStatusChangeResponse.java index 648e37a..7dd0111 100644 --- a/src/main/java/club/joylink/xiannccda/ats/message/line3/rep/DeviceStatusChangeResponse.java +++ b/src/main/java/club/joylink/xiannccda/ats/message/line3/rep/DeviceStatusChangeResponse.java @@ -112,7 +112,7 @@ public class DeviceStatusChangeResponse extends MessageResponse { DeviceStatusConvertor.convertForTrack(this.deviceStatus, builder); DeviceStatusConvertor.convertForPlatform(this.deviceStatus, Objects.isNull(this.spare) ? 0 : this.spare, builder); DeviceStatusConvertor.convertForSwitch(Objects.isNull(this.spare) ? 0 : this.spare, builder); - log.info("接受全量状态设备类型[{}] 对应状态[{}]", this.type.name(), builder); + log.info("接受设备状态设备类型[{}] 对应状态[{}]", this.type.name(), builder); return List.of(builder); } diff --git a/src/main/java/club/joylink/xiannccda/ats/warn/PlatformAlertMonitoringTask.java b/src/main/java/club/joylink/xiannccda/ats/warn/PlatformAlertMonitoringTask.java index adb0ef4..e1466b7 100644 --- a/src/main/java/club/joylink/xiannccda/ats/warn/PlatformAlertMonitoringTask.java +++ b/src/main/java/club/joylink/xiannccda/ats/warn/PlatformAlertMonitoringTask.java @@ -9,12 +9,16 @@ import club.joylink.xiannccda.ats.message.collect.DeviceDataRepository; import club.joylink.xiannccda.ats.message.collect.DeviceDataRepository.DataTypeEnum; import club.joylink.xiannccda.ats.message.collect.datasource.DeviceStatusData; import club.joylink.xiannccda.ats.message.collect.datasource.InUsedScheduleData; +import club.joylink.xiannccda.ats.message.line3.changer.DeviceNameChangerManage; +import club.joylink.xiannccda.ats.message.line3.device.DeviceType; import club.joylink.xiannccda.ats.message.line3.rep.TrainRecordResponse.DirectionEnum; import club.joylink.xiannccda.dto.protos.AlertConstProto.AlertType; import club.joylink.xiannccda.dto.protos.DeviceStatusProto; import club.joylink.xiannccda.dto.protos.DeviceStatusProto.Platform; +import club.joylink.xiannccda.dto.protos.DeviceStatusProto.Track; import club.joylink.xiannccda.dto.protos.GuardConfigProto.GuardConfig; import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto; +import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.Section; import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.Station; import club.joylink.xiannccda.dto.protos.TrainProto.TrainRecord; import club.joylink.xiannccda.dto.protos.TrainProto.TrainRecord.Builder; @@ -24,6 +28,7 @@ import club.joylink.xiannccda.service.config.DeviceGuardConfigService; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.google.common.base.Strings; import com.google.protobuf.GeneratedMessageV3; +import com.google.protobuf.MessageOrBuilder; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -80,10 +85,18 @@ public class PlatformAlertMonitoringTask implements AlertMonitoringTask { return stationOptional.map(Station::getName).orElse(null); } + private Platform.Builder parsePlatform(TrainRecord.Builder record, boolean isUpWay) { - Integer stationId = record.getStationId(); + + /*Integer stationId = record.getStationId(); String stationCode = Strings.padStart(stationId.toString(), 2, '0'); - String platformCode = String.format("PF%s3%s", (isUpWay ? "01" : "02"), stationCode); + String platformCode = String.format("PF%s3%s", (isUpWay ? "01" : "02"), stationCode);*/ + String newTrackName = DeviceNameChangerManage.findMatch(DeviceType.DEVICE_TYPE_TRACK, record.getTrackName()); + Optional layoutPlatformOpt = LineGraphicDataRepository.findLayoutPlatformFromSection(record.getLineId(), newTrackName); + String platformCode = layoutPlatformOpt.map(LayoutGraphicsProto.Platform::getCode).orElse(null); + if (StringUtils.isEmpty(platformCode)) { + return null; + } DeviceStatusData deviceStatusData = DeviceDataRepository.findDataSouce(String.valueOf(record.getLineId()), DataTypeEnum.DEVICE); Map builderMap = deviceStatusData.getAllDeviceMap().get(DeviceStatusProto.Platform.getDescriptor().getName()); if (CollectionUtils.isNotEmpty(builderMap)) { @@ -147,9 +160,11 @@ public class PlatformAlertMonitoringTask implements AlertMonitoringTask { } } + @Override public void run() { for (Builder record : this.trainRecordMap.values()) { + boolean isUpWay = record.getDir() == DirectionEnum.Up.getValue(); Platform.Builder platformBuild = this.parsePlatform(record, isUpWay); int lineId = record.getLineId(); @@ -159,7 +174,7 @@ public class PlatformAlertMonitoringTask implements AlertMonitoringTask { } InUsedScheduleData scheduleData = DeviceDataRepository.findDataSouce(String.valueOf(record.getLineId()), DataTypeEnum.TRAIN_PLAN); - Optional planBuildOpt = scheduleData.findPlan(record.getTrainId(), record.getGlobalId(), record.getStationId(), isUpWay); + Optional planBuildOpt = scheduleData.findPlan(record.getTrainId(), record.getGlobalId(), record.getStationId(), isUpWay, record.getSideId()); if (planBuildOpt.isEmpty()) { if (log.isDebugEnabled()) { log.info("未找到对应的行车计划,线路[{}] 列车表号[{}] 列车车次号[{}] 车站id[{}] 站台门id[{}] 上下行[{}] 解析屏蔽门code[{}]" @@ -169,7 +184,7 @@ public class PlatformAlertMonitoringTask implements AlertMonitoringTask { continue; } Plan.Builder planBuild = planBuildOpt.get(); - + boolean isOpen = alertManager.deviceIsExist(lineId, PLATFORM_IS_OPEN, platformBuild.getId()); boolean isClose = alertManager.deviceIsExist(lineId, PLATFORM_IS_CLOSE, platformBuild.getId()); if (isOpen && isClose && Objects.equals(false, platformBuild.getTrainberth())) { diff --git a/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertListener.java b/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertListener.java index 427e40a..055d144 100644 --- a/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertListener.java +++ b/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertListener.java @@ -12,7 +12,8 @@ import org.springframework.stereotype.Component; public class SwitchLostAlertListener implements AlertSourceEventListener { @Autowired - private SwitchLostAlertMonitoringTask monitoringTask2; +// private SwitchLostAlertMonitoringTask monitoringTask2; + private SwitchLostAlertMonitoringTask2 monitoringTask2; @Override diff --git a/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertMonitoringTask.java b/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertMonitoringTask.java index abc9e7f..539d5f9 100644 --- a/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertMonitoringTask.java +++ b/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertMonitoringTask.java @@ -14,13 +14,19 @@ import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.Turnout; import club.joylink.xiannccda.service.AlertInfoService; import club.joylink.xiannccda.service.config.DeviceGuardConfigService; import com.google.protobuf.MessageOrBuilder; +import java.util.Collections; import java.util.Map; +import java.util.Objects; import java.util.Optional; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedDeque; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ConcurrentSkipListSet; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -@Component +//@Component @Slf4j public class SwitchLostAlertMonitoringTask implements AlertMonitoringTask { @@ -40,21 +46,24 @@ public class SwitchLostAlertMonitoringTask implements AlertMonitoringTask { private final Map deviceMap = new ConcurrentHashMap<>(); public void putSwitchIfNotExist(Switch.Builder switchBuilder) { - if (!deviceMap.containsKey(switchBuilder.getId())) { + /*if (!deviceMap.containsKey(switchBuilder.getId())) { deviceMap.put(switchBuilder.getId(), switchBuilder); log.info("线路[{}] 道岔[{}] 添加到道岔失表监控中... 设备状态参数[{}]", switchBuilder.getLineId(), switchBuilder.getId(), switchBuilder.getIpSingleSwitchStusLostIndication()); - } + }*/ + deviceMap.put(switchBuilder.getId(), switchBuilder); + log.info("线路[{}] 道岔[{}] 添加到道岔失表监控中... 设备状态参数[{}]", switchBuilder.getLineId(), switchBuilder.getId(), switchBuilder.getIpSingleSwitchStusLostIndication()); } public void removeSwitch(Switch.Builder switchBuilder) { - MessageOrBuilder turnoutBuild = LineGraphicDataRepository.getDeviceByCode(switchBuilder.getLineId(), switchBuilder.getId()); - if (turnoutBuild instanceof Turnout turnout) { - String switchPutName = this.getDefaultName(AlertType.SWITCH_LOST, switchBuilder.getLineId(), switchBuilder.getRtuId()); - log.info("线路[{}] 道岔[{}] 从监控中移除... 设备状态参数[{}]", switchBuilder.getLineId(), switchBuilder.getId(), switchBuilder); - deviceMap.remove(switchBuilder.getId()); - alertManager.removeAlterDevice(switchBuilder.getLineId(), switchPutName, switchBuilder.getId()); + String switchPutName = this.getDefaultName(AlertType.SWITCH_LOST, switchBuilder.getLineId(), switchBuilder.getRtuId()); + log.info("线路[{}] 道岔[{}] 从监控中移除... 设备状态参数[{}]", switchBuilder.getLineId(), switchBuilder.getId(), switchBuilder); + deviceMap.remove(switchBuilder.getId()); + alertManager.removeAlterDevice(switchBuilder.getLineId(), switchPutName, switchBuilder.getId()); + + MessageOrBuilder turnoutBuild = LineGraphicDataRepository.getDeviceByCodeNotException(switchBuilder.getLineId(), switchBuilder.getId()); + if (Objects.nonNull(turnoutBuild) && turnoutBuild instanceof Turnout turnout) { + //大面积失表移除 alertManager.emit(new SwitchLostMostEvent(switchBuilder, false, turnout)); -// alertManager.emit(new SwitchLostMostInterLockL2Event(switchBuilder, false, turnout)); } } @@ -67,8 +76,9 @@ public class SwitchLostAlertMonitoringTask implements AlertMonitoringTask { return String.format("%s-%s-%s", alertType.name(), lineId, rtuId); } - private void checkDevice(Turnout turnout, Builder savedSwitchBuild) { + private void checkDevice(Builder savedSwitchBuild) { int lineId = savedSwitchBuild.getLineId(); + Turnout turnout = LineGraphicDataRepository.getDeviceByCode(lineId, savedSwitchBuild.getId(), Turnout.class); GuardConfig guardConfig = configService.getGuardConfig(lineId); boolean saveIsLost = savedSwitchBuild.getIpSingleSwitchStusLostIndication(); boolean timeOver = this.timeOver(savedSwitchBuild.getReceiveTime(), guardConfig.getSwitchLostTimes()); @@ -94,10 +104,8 @@ public class SwitchLostAlertMonitoringTask implements AlertMonitoringTask { @Override public void run() { for (Builder savedSwitchBuild : this.deviceMap.values()) { - Integer lineId = savedSwitchBuild.getLineId(); - Turnout turnout = LineGraphicDataRepository.getDeviceByCode(lineId, savedSwitchBuild.getId(), Turnout.class); // log.info("道岔失表检测 线路[{}] 设备[{}] 查找对应的地图道岔id[{}]", lineId, savedSwitchBuild.getId(), turnout.getCommon().getId()); - this.checkDevice(turnout, savedSwitchBuild); + this.checkDevice(savedSwitchBuild); } } diff --git a/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertMonitoringTask2.java b/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertMonitoringTask2.java new file mode 100644 index 0000000..9039156 --- /dev/null +++ b/src/main/java/club/joylink/xiannccda/ats/warn/SwitchLostAlertMonitoringTask2.java @@ -0,0 +1,146 @@ +package club.joylink.xiannccda.ats.warn; + +import club.joylink.xiannccda.alert.NccAlertInfo; +import club.joylink.xiannccda.alert.core.AlertDeviceType; +import club.joylink.xiannccda.alert.core.AlertManager; +import club.joylink.xiannccda.alert.core.AlertMonitoringTask; +import club.joylink.xiannccda.ats.cache.LineGraphicDataRepository; +import club.joylink.xiannccda.ats.message.collect.DeviceDataRepository; +import club.joylink.xiannccda.ats.message.collect.DeviceDataRepository.DataTypeEnum; +import club.joylink.xiannccda.ats.message.collect.datasource.DeviceStatusData; +import club.joylink.xiannccda.ats.warn.SwitchLostMostAlertListener.SwitchLostMostEvent; +import club.joylink.xiannccda.dto.protos.AlertConstProto.AlertType; +import club.joylink.xiannccda.dto.protos.DeviceStatusProto.Switch; +import club.joylink.xiannccda.dto.protos.DeviceStatusProto.Switch.Builder; +import club.joylink.xiannccda.dto.protos.GuardConfigProto.GuardConfig; +import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.Turnout; +import club.joylink.xiannccda.service.AlertInfoService; +import club.joylink.xiannccda.service.config.DeviceGuardConfigService; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.google.protobuf.GeneratedMessageV3; +import com.google.protobuf.MessageOrBuilder; +import java.util.Collections; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class SwitchLostAlertMonitoringTask2 implements AlertMonitoringTask { + + private DeviceGuardConfigService configService; + + private AlertInfoService alertInfoService; + + public SwitchLostAlertMonitoringTask2(DeviceGuardConfigService configService, AlertInfoService alertInfoService) { + + this.configService = configService; + this.alertInfoService = alertInfoService; + } + + + private final AlertManager alertManager = AlertManager.getDefault(); + + private final Map deviceCodeMap = new ConcurrentHashMap<>(); + + public void putSwitchIfNotExist(Builder switchBuilder) { + if (!this.deviceCodeMap.containsKey(switchBuilder.getId())) { + log.info("线路[{}] 道岔[{}] 添加到道岔失表监控中... 设备状态参数[{}]", switchBuilder.getLineId(), switchBuilder.getId(), switchBuilder.getIpSingleSwitchStusLostIndication()); + deviceCodeMap.put(switchBuilder.getId(), switchBuilder.getLineId()); + } + } + + public void removeSwitch(Builder switchBuilder) { + String switchPutName = this.getDefaultName(AlertType.SWITCH_LOST, switchBuilder.getLineId(), switchBuilder.getRtuId()); + log.info("线路[{}] 道岔[{}] 从监控中移除... 设备状态参数[{}]", switchBuilder.getLineId(), switchBuilder.getId(), switchBuilder); + deviceCodeMap.remove(switchBuilder.getId()); + alertManager.removeAlterDevice(switchBuilder.getLineId(), switchPutName, switchBuilder.getId()); + + Optional turnoutOpt = LineGraphicDataRepository.getDeviceOptByCode(switchBuilder.getLineId(), switchBuilder.getId(), Turnout.class); + Turnout turnout = turnoutOpt.orElse(null); + if (Objects.nonNull(turnout)) { + log.info("道岔失表未找到地图对应的设备 线路[{}],道岔code[{}]", switchBuilder.getLineId(), switchBuilder.getId()); + + //大面积失表移除 + alertManager.emit(new SwitchLostMostEvent(switchBuilder, false, turnout)); + } + + } + + @Override + public String getName() { + return "SWITCH_LOST_ALTER"; + } + + private String getDefaultName(AlertType alertType, Integer lineId, Integer rtuId) { + return String.format("%s-%s-%s", alertType.name(), lineId, rtuId); + } + + + private Switch.Builder findSwitchDevice(String deviceCode, Integer lineId) { + DeviceStatusData deviceDataSource = DeviceDataRepository.findDataSouce(lineId.toString(), DataTypeEnum.DEVICE); + Map switchBuildMap = deviceDataSource.getAllDeviceMap().get(Switch.getDescriptor().getName()); + if (CollectionUtils.isEmpty(switchBuildMap)) { + return null; + } + GeneratedMessageV3.Builder msgBuild = switchBuildMap.get(deviceCode); + if (msgBuild instanceof Switch.Builder switchs) { + return switchs; + } else { + return null; + } + } + + private void checkDevice(Switch.Builder switchBuild, Turnout turnout, Integer lineId, GuardConfig guardConfig) { + + boolean saveIsLost = switchBuild.getIpSingleSwitchStusLostIndication(); + boolean timeOver = this.timeOver(switchBuild.getReceiveTime(), guardConfig.getSwitchLostTimes()); + String switchPutName = this.getDefaultName(AlertType.SWITCH_LOST, lineId, switchBuild.getRtuId()); + if (saveIsLost && timeOver) { + log.info("道岔失表超时,准备报警 线路[{}] 设备[{}] 接受时间[{}] 发送时间[{}] 对应地图设备id[{}]" + , lineId, switchBuild.getId(), switchBuild.getReceiveTime(), switchBuild.getTimestamp(), turnout.getCommon().getId()); + //失表超时 + if (alertManager.putAlterDevice(lineId, switchPutName, switchBuild.getId())) { + String alertMsg = String.format("设备[%s]失表", switchBuild.getId()); + NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), AlertType.SWITCH_LOST, switchBuild, alertMsg, turnout.getCommon().getId(), + AlertDeviceType.DEVICE_TYPE_SWITCH, false); + alertManager.emit(alertInfo); + alertManager.emit(new SwitchLostMostEvent(switchBuild, true, turnout)); + } + this.deviceCodeMap.remove(switchBuild.getId()); + } else if (!saveIsLost) { + this.removeSwitch(switchBuild); + } + } + + @Override + public void run() { + for (Entry entry : this.deviceCodeMap.entrySet()) { + String deviceCode = entry.getKey(); + Integer lineId = entry.getValue(); + Switch.Builder switchBuild = this.findSwitchDevice(deviceCode, lineId); + if (Objects.isNull(switchBuild)) { + this.deviceCodeMap.remove(deviceCode); + continue; + } + + Optional turnoutOpt = LineGraphicDataRepository.getDeviceOptByCode(lineId, deviceCode, Turnout.class); + Turnout turnout = turnoutOpt.orElse(null); + if (Objects.isNull(turnout)) { + log.info("道岔失表未找到地图对应的设备 线路[{}],道岔code[{}]", lineId, deviceCode); + this.deviceCodeMap.remove(deviceCode); + continue; + } + GuardConfig guardConfig = configService.getGuardConfig(lineId); + this.checkDevice(switchBuild, turnout, lineId, guardConfig); + } + + } + + +} diff --git a/src/main/java/club/joylink/xiannccda/ats/warn/TrainReacrdAlertListener.java b/src/main/java/club/joylink/xiannccda/ats/warn/TrainReacrdAlertListener.java index 0ad5430..d11d76b 100644 --- a/src/main/java/club/joylink/xiannccda/ats/warn/TrainReacrdAlertListener.java +++ b/src/main/java/club/joylink/xiannccda/ats/warn/TrainReacrdAlertListener.java @@ -1,12 +1,16 @@ package club.joylink.xiannccda.ats.warn; import club.joylink.xiannccda.alert.core.AlertSourceEventListener; +import club.joylink.xiannccda.ats.message.line3.changer.DeviceNameChangerManage; +import club.joylink.xiannccda.ats.message.line3.device.DeviceType; import club.joylink.xiannccda.ats.message.line3.rep.TrainRecordResponse.DirectionEnum; import club.joylink.xiannccda.ats.message.line3.rep.TrainRecordResponse.TrainTypeEnum; import club.joylink.xiannccda.ats.warn.TrainReacrdAlertListener.TrainRecordAlertEvent; +import club.joylink.xiannccda.configuration.pros.OccNotHandlePros; import club.joylink.xiannccda.dto.protos.TrainProto.TrainRecord; import java.util.Objects; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -15,6 +19,8 @@ import org.springframework.stereotype.Component; public class TrainReacrdAlertListener implements AlertSourceEventListener { private final PlatformAlertMonitoringTask platformAlertMonitoringTask; + @Autowired + private OccNotHandlePros notHandlePros; public TrainReacrdAlertListener(PlatformAlertMonitoringTask platformAlertMonitoringTask) { this.platformAlertMonitoringTask = platformAlertMonitoringTask; @@ -23,7 +29,7 @@ public class TrainReacrdAlertListener implements AlertSourceEventListener filterRtuIds; + private Map> trainRecordStation; + + public boolean notMatchHandle(Integer lineId, Integer rtuId) { + if (Objects.isNull(lineId) || Objects.isNull(rtuId)) { + return true; + } + if (CollectionUtils.isEmpty(this.filterRtuIds)) { + return true; + } + if (this.filterRtuIds.contains(rtuId)) { + return false; + } + return true; + } + +} diff --git a/src/main/java/club/joylink/xiannccda/constants/SystemContext.java b/src/main/java/club/joylink/xiannccda/constants/SystemContext.java index f6543b9..4cbae42 100644 --- a/src/main/java/club/joylink/xiannccda/constants/SystemContext.java +++ b/src/main/java/club/joylink/xiannccda/constants/SystemContext.java @@ -1,10 +1,8 @@ package club.joylink.xiannccda.constants; -import club.joylink.xiannccda.ats.message.collect.convertor.ConvertorUtil; -import java.util.Objects; +import club.joylink.xiannccda.configuration.pros.OccNotHandlePros; import lombok.Getter; import org.springframework.beans.BeansException; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @@ -27,7 +25,7 @@ public class SystemContext implements ApplicationContextAware { } public static boolean notMatchRtu(Integer lineId, Integer rtuId) { - ConvertorUtil cu = SystemContext.getAppContext().getBean(ConvertorUtil.class); + OccNotHandlePros cu = SystemContext.getAppContext().getBean(OccNotHandlePros.class); return cu.notMatchHandle(lineId, rtuId); } diff --git a/src/main/java/club/joylink/xiannccda/dto/protos/LayoutGraphicsProto.java b/src/main/java/club/joylink/xiannccda/dto/protos/LayoutGraphicsProto.java index bf86b3a..dcbbb77 100644 --- a/src/main/java/club/joylink/xiannccda/dto/protos/LayoutGraphicsProto.java +++ b/src/main/java/club/joylink/xiannccda/dto/protos/LayoutGraphicsProto.java @@ -16953,6 +16953,26 @@ public final class LayoutGraphicsProto { * @return The up. */ boolean getUp(); + + /** + *
+     *关联的物理区段id
+     * 
+ * + * string refSectionId = 8; + * @return The refSectionId. + */ + java.lang.String getRefSectionId(); + /** + *
+     *关联的物理区段id
+     * 
+ * + * string refSectionId = 8; + * @return The bytes for refSectionId. + */ + com.google.protobuf.ByteString + getRefSectionIdBytes(); } /** * Protobuf type {@code graphicData.Platform} @@ -16970,6 +16990,7 @@ public final class LayoutGraphicsProto { code_ = ""; direction_ = ""; refStation_ = ""; + refSectionId_ = ""; } @java.lang.Override @@ -17181,6 +17202,53 @@ public final class LayoutGraphicsProto { return up_; } + public static final int REFSECTIONID_FIELD_NUMBER = 8; + @SuppressWarnings("serial") + private volatile java.lang.Object refSectionId_ = ""; + /** + *
+     *关联的物理区段id
+     * 
+ * + * string refSectionId = 8; + * @return The refSectionId. + */ + @java.lang.Override + public java.lang.String getRefSectionId() { + java.lang.Object ref = refSectionId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + refSectionId_ = s; + return s; + } + } + /** + *
+     *关联的物理区段id
+     * 
+ * + * string refSectionId = 8; + * @return The bytes for refSectionId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getRefSectionIdBytes() { + java.lang.Object ref = refSectionId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + refSectionId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -17213,6 +17281,9 @@ public final class LayoutGraphicsProto { if (up_ != false) { output.writeBool(7, up_); } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(refSectionId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 8, refSectionId_); + } getUnknownFields().writeTo(output); } @@ -17243,6 +17314,9 @@ public final class LayoutGraphicsProto { size += com.google.protobuf.CodedOutputStream .computeBoolSize(7, up_); } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(refSectionId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, refSectionId_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -17273,6 +17347,8 @@ public final class LayoutGraphicsProto { .equals(other.getRefStation())) return false; if (getUp() != other.getUp()) return false; + if (!getRefSectionId() + .equals(other.getRefSectionId())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -17300,6 +17376,8 @@ public final class LayoutGraphicsProto { hash = (37 * hash) + UP_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( getUp()); + hash = (37 * hash) + REFSECTIONID_FIELD_NUMBER; + hash = (53 * hash) + getRefSectionId().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -17441,6 +17519,7 @@ public final class LayoutGraphicsProto { direction_ = ""; refStation_ = ""; up_ = false; + refSectionId_ = ""; return this; } @@ -17494,6 +17573,9 @@ public final class LayoutGraphicsProto { if (((from_bitField0_ & 0x00000020) != 0)) { result.up_ = up_; } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.refSectionId_ = refSectionId_; + } } @java.lang.Override @@ -17532,6 +17614,11 @@ public final class LayoutGraphicsProto { if (other.getUp() != false) { setUp(other.getUp()); } + if (!other.getRefSectionId().isEmpty()) { + refSectionId_ = other.refSectionId_; + bitField0_ |= 0x00000040; + onChanged(); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -17590,6 +17677,11 @@ public final class LayoutGraphicsProto { bitField0_ |= 0x00000020; break; } // case 56 + case 66: { + refSectionId_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000040; + break; + } // case 66 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -18069,6 +18161,98 @@ public final class LayoutGraphicsProto { onChanged(); return this; } + + private java.lang.Object refSectionId_ = ""; + /** + *
+       *关联的物理区段id
+       * 
+ * + * string refSectionId = 8; + * @return The refSectionId. + */ + public java.lang.String getRefSectionId() { + java.lang.Object ref = refSectionId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + refSectionId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       *关联的物理区段id
+       * 
+ * + * string refSectionId = 8; + * @return The bytes for refSectionId. + */ + public com.google.protobuf.ByteString + getRefSectionIdBytes() { + java.lang.Object ref = refSectionId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + refSectionId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       *关联的物理区段id
+       * 
+ * + * string refSectionId = 8; + * @param value The refSectionId to set. + * @return This builder for chaining. + */ + public Builder setRefSectionId( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + refSectionId_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + *
+       *关联的物理区段id
+       * 
+ * + * string refSectionId = 8; + * @return This builder for chaining. + */ + public Builder clearRefSectionId() { + refSectionId_ = getDefaultInstance().getRefSectionId(); + bitField0_ = (bitField0_ & ~0x00000040); + onChanged(); + return this; + } + /** + *
+       *关联的物理区段id
+       * 
+ * + * string refSectionId = 8; + * @param value The bytes for refSectionId to set. + * @return This builder for chaining. + */ + public Builder setRefSectionIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + refSectionId_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -19485,6 +19669,17 @@ public final class LayoutGraphicsProto { * @return The hideName. */ boolean getHideName(); + + /** + * .graphicData.StationLine.stationColor codeColor = 5; + * @return The enum numeric value on the wire for codeColor. + */ + int getCodeColorValue(); + /** + * .graphicData.StationLine.stationColor codeColor = 5; + * @return The codeColor. + */ + club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor getCodeColor(); } /** * Protobuf type {@code graphicData.StationLine} @@ -19500,6 +19695,7 @@ public final class LayoutGraphicsProto { } private StationLine() { code_ = ""; + codeColor_ = 0; } @java.lang.Override @@ -19522,6 +19718,114 @@ public final class LayoutGraphicsProto { club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.class, club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.Builder.class); } + /** + * Protobuf enum {@code graphicData.StationLine.stationColor} + */ + public enum stationColor + implements com.google.protobuf.ProtocolMessageEnum { + /** + * orange = 0; + */ + orange(0), + /** + * gray = 1; + */ + gray(1), + UNRECOGNIZED(-1), + ; + + /** + * orange = 0; + */ + public static final int orange_VALUE = 0; + /** + * gray = 1; + */ + public static final int gray_VALUE = 1; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static stationColor valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static stationColor forNumber(int value) { + switch (value) { + case 0: return orange; + case 1: return gray; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + stationColor> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public stationColor findValueByNumber(int number) { + return stationColor.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.getDescriptor().getEnumTypes().get(0); + } + + private static final stationColor[] VALUES = values(); + + public static stationColor valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private stationColor(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:graphicData.StationLine.stationColor) + } + public static final int COMMON_FIELD_NUMBER = 1; private club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.CommonInfo common_; /** @@ -19613,6 +19917,24 @@ public final class LayoutGraphicsProto { return hideName_; } + public static final int CODECOLOR_FIELD_NUMBER = 5; + private int codeColor_ = 0; + /** + * .graphicData.StationLine.stationColor codeColor = 5; + * @return The enum numeric value on the wire for codeColor. + */ + @java.lang.Override public int getCodeColorValue() { + return codeColor_; + } + /** + * .graphicData.StationLine.stationColor codeColor = 5; + * @return The codeColor. + */ + @java.lang.Override public club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor getCodeColor() { + club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor result = club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor.forNumber(codeColor_); + return result == null ? club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor.UNRECOGNIZED : result; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -19639,6 +19961,9 @@ public final class LayoutGraphicsProto { if (hideName_ != false) { output.writeBool(4, hideName_); } + if (codeColor_ != club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor.orange.getNumber()) { + output.writeEnum(5, codeColor_); + } getUnknownFields().writeTo(output); } @@ -19663,6 +19988,10 @@ public final class LayoutGraphicsProto { size += com.google.protobuf.CodedOutputStream .computeBoolSize(4, hideName_); } + if (codeColor_ != club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor.orange.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(5, codeColor_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -19689,6 +20018,7 @@ public final class LayoutGraphicsProto { != other.getHasTransfer()) return false; if (getHideName() != other.getHideName()) return false; + if (codeColor_ != other.codeColor_) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -19712,6 +20042,8 @@ public final class LayoutGraphicsProto { hash = (37 * hash) + HIDENAME_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( getHideName()); + hash = (37 * hash) + CODECOLOR_FIELD_NUMBER; + hash = (53 * hash) + codeColor_; hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -19851,6 +20183,7 @@ public final class LayoutGraphicsProto { code_ = ""; hasTransfer_ = false; hideName_ = false; + codeColor_ = 0; return this; } @@ -19898,6 +20231,9 @@ public final class LayoutGraphicsProto { if (((from_bitField0_ & 0x00000008) != 0)) { result.hideName_ = hideName_; } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.codeColor_ = codeColor_; + } } @java.lang.Override @@ -19926,6 +20262,9 @@ public final class LayoutGraphicsProto { if (other.getHideName() != false) { setHideName(other.getHideName()); } + if (other.codeColor_ != 0) { + setCodeColorValue(other.getCodeColorValue()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -19974,6 +20313,11 @@ public final class LayoutGraphicsProto { bitField0_ |= 0x00000008; break; } // case 32 + case 40: { + codeColor_ = input.readEnum(); + bitField0_ |= 0x00000010; + break; + } // case 40 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -20257,6 +20601,59 @@ public final class LayoutGraphicsProto { onChanged(); return this; } + + private int codeColor_ = 0; + /** + * .graphicData.StationLine.stationColor codeColor = 5; + * @return The enum numeric value on the wire for codeColor. + */ + @java.lang.Override public int getCodeColorValue() { + return codeColor_; + } + /** + * .graphicData.StationLine.stationColor codeColor = 5; + * @param value The enum numeric value on the wire for codeColor to set. + * @return This builder for chaining. + */ + public Builder setCodeColorValue(int value) { + codeColor_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + * .graphicData.StationLine.stationColor codeColor = 5; + * @return The codeColor. + */ + @java.lang.Override + public club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor getCodeColor() { + club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor result = club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor.forNumber(codeColor_); + return result == null ? club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor.UNRECOGNIZED : result; + } + /** + * .graphicData.StationLine.stationColor codeColor = 5; + * @param value The codeColor to set. + * @return This builder for chaining. + */ + public Builder setCodeColor(club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.StationLine.stationColor value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + codeColor_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .graphicData.StationLine.stationColor codeColor = 5; + * @return This builder for chaining. + */ + public Builder clearCodeColor() { + bitField0_ = (bitField0_ & ~0x00000010); + codeColor_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -30203,6 +30600,47 @@ public final class LayoutGraphicsProto { * @return The dashPointIndexs at the given index. */ int getDashPointIndexs(int index); + + /** + *
+     * 虚线段点序号
+     * 
+ * + * repeated int32 grayPointIndexs = 12; + * @return A list containing the grayPointIndexs. + */ + java.util.List getGrayPointIndexsList(); + /** + *
+     * 虚线段点序号
+     * 
+ * + * repeated int32 grayPointIndexs = 12; + * @return The count of grayPointIndexs. + */ + int getGrayPointIndexsCount(); + /** + *
+     * 虚线段点序号
+     * 
+ * + * repeated int32 grayPointIndexs = 12; + * @param index The index of the element to return. + * @return The grayPointIndexs at the given index. + */ + int getGrayPointIndexs(int index); + + /** + * string lineColor = 13; + * @return The lineColor. + */ + java.lang.String getLineColor(); + /** + * string lineColor = 13; + * @return The bytes for lineColor. + */ + com.google.protobuf.ByteString + getLineColorBytes(); } /** * Protobuf type {@code graphicData.RunLine} @@ -30227,6 +30665,8 @@ public final class LayoutGraphicsProto { com.google.protobuf.LazyStringArrayList.emptyList(); lineId_ = ""; dashPointIndexs_ = emptyIntList(); + grayPointIndexs_ = emptyIntList(); + lineColor_ = ""; } @java.lang.Override @@ -30607,6 +31047,86 @@ public final class LayoutGraphicsProto { } private int dashPointIndexsMemoizedSerializedSize = -1; + public static final int GRAYPOINTINDEXS_FIELD_NUMBER = 12; + @SuppressWarnings("serial") + private com.google.protobuf.Internal.IntList grayPointIndexs_; + /** + *
+     * 虚线段点序号
+     * 
+ * + * repeated int32 grayPointIndexs = 12; + * @return A list containing the grayPointIndexs. + */ + @java.lang.Override + public java.util.List + getGrayPointIndexsList() { + return grayPointIndexs_; + } + /** + *
+     * 虚线段点序号
+     * 
+ * + * repeated int32 grayPointIndexs = 12; + * @return The count of grayPointIndexs. + */ + public int getGrayPointIndexsCount() { + return grayPointIndexs_.size(); + } + /** + *
+     * 虚线段点序号
+     * 
+ * + * repeated int32 grayPointIndexs = 12; + * @param index The index of the element to return. + * @return The grayPointIndexs at the given index. + */ + public int getGrayPointIndexs(int index) { + return grayPointIndexs_.getInt(index); + } + private int grayPointIndexsMemoizedSerializedSize = -1; + + public static final int LINECOLOR_FIELD_NUMBER = 13; + @SuppressWarnings("serial") + private volatile java.lang.Object lineColor_ = ""; + /** + * string lineColor = 13; + * @return The lineColor. + */ + @java.lang.Override + public java.lang.String getLineColor() { + java.lang.Object ref = lineColor_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lineColor_ = s; + return s; + } + } + /** + * string lineColor = 13; + * @return The bytes for lineColor. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getLineColorBytes() { + java.lang.Object ref = lineColor_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + lineColor_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -30653,6 +31173,16 @@ public final class LayoutGraphicsProto { for (int i = 0; i < dashPointIndexs_.size(); i++) { output.writeInt32NoTag(dashPointIndexs_.getInt(i)); } + if (getGrayPointIndexsList().size() > 0) { + output.writeUInt32NoTag(98); + output.writeUInt32NoTag(grayPointIndexsMemoizedSerializedSize); + } + for (int i = 0; i < grayPointIndexs_.size(); i++) { + output.writeInt32NoTag(grayPointIndexs_.getInt(i)); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lineColor_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 13, lineColor_); + } getUnknownFields().writeTo(output); } @@ -30712,6 +31242,23 @@ public final class LayoutGraphicsProto { } dashPointIndexsMemoizedSerializedSize = dataSize; } + { + int dataSize = 0; + for (int i = 0; i < grayPointIndexs_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(grayPointIndexs_.getInt(i)); + } + size += dataSize; + if (!getGrayPointIndexsList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + grayPointIndexsMemoizedSerializedSize = dataSize; + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lineColor_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, lineColor_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -30748,6 +31295,10 @@ public final class LayoutGraphicsProto { .equals(other.getLineId())) return false; if (!getDashPointIndexsList() .equals(other.getDashPointIndexsList())) return false; + if (!getGrayPointIndexsList() + .equals(other.getGrayPointIndexsList())) return false; + if (!getLineColor() + .equals(other.getLineColor())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -30787,6 +31338,12 @@ public final class LayoutGraphicsProto { hash = (37 * hash) + DASHPOINTINDEXS_FIELD_NUMBER; hash = (53 * hash) + getDashPointIndexsList().hashCode(); } + if (getGrayPointIndexsCount() > 0) { + hash = (37 * hash) + GRAYPOINTINDEXS_FIELD_NUMBER; + hash = (53 * hash) + getGrayPointIndexsList().hashCode(); + } + hash = (37 * hash) + LINECOLOR_FIELD_NUMBER; + hash = (53 * hash) + getLineColor().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -30939,6 +31496,8 @@ public final class LayoutGraphicsProto { com.google.protobuf.LazyStringArrayList.emptyList(); lineId_ = ""; dashPointIndexs_ = emptyIntList(); + grayPointIndexs_ = emptyIntList(); + lineColor_ = ""; return this; } @@ -30986,6 +31545,11 @@ public final class LayoutGraphicsProto { bitField0_ = (bitField0_ & ~0x00000100); } result.dashPointIndexs_ = dashPointIndexs_; + if (((bitField0_ & 0x00000200) != 0)) { + grayPointIndexs_.makeImmutable(); + bitField0_ = (bitField0_ & ~0x00000200); + } + result.grayPointIndexs_ = grayPointIndexs_; } private void buildPartial0(club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.RunLine result) { @@ -31015,6 +31579,9 @@ public final class LayoutGraphicsProto { if (((from_bitField0_ & 0x00000080) != 0)) { result.lineId_ = lineId_; } + if (((from_bitField0_ & 0x00000400) != 0)) { + result.lineColor_ = lineColor_; + } } @java.lang.Override @@ -31108,6 +31675,21 @@ public final class LayoutGraphicsProto { } onChanged(); } + if (!other.grayPointIndexs_.isEmpty()) { + if (grayPointIndexs_.isEmpty()) { + grayPointIndexs_ = other.grayPointIndexs_; + bitField0_ = (bitField0_ & ~0x00000200); + } else { + ensureGrayPointIndexsIsMutable(); + grayPointIndexs_.addAll(other.grayPointIndexs_); + } + onChanged(); + } + if (!other.getLineColor().isEmpty()) { + lineColor_ = other.lineColor_; + bitField0_ |= 0x00000400; + onChanged(); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -31202,6 +31784,27 @@ public final class LayoutGraphicsProto { input.popLimit(limit); break; } // case 90 + case 96: { + int v = input.readInt32(); + ensureGrayPointIndexsIsMutable(); + grayPointIndexs_.addInt(v); + break; + } // case 96 + case 98: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + ensureGrayPointIndexsIsMutable(); + while (input.getBytesUntilLimit() > 0) { + grayPointIndexs_.addInt(input.readInt32()); + } + input.popLimit(limit); + break; + } // case 98 + case 106: { + lineColor_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000400; + break; + } // case 106 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -32241,6 +32844,187 @@ public final class LayoutGraphicsProto { onChanged(); return this; } + + private com.google.protobuf.Internal.IntList grayPointIndexs_ = emptyIntList(); + private void ensureGrayPointIndexsIsMutable() { + if (!((bitField0_ & 0x00000200) != 0)) { + grayPointIndexs_ = mutableCopy(grayPointIndexs_); + bitField0_ |= 0x00000200; + } + } + /** + *
+       * 虚线段点序号
+       * 
+ * + * repeated int32 grayPointIndexs = 12; + * @return A list containing the grayPointIndexs. + */ + public java.util.List + getGrayPointIndexsList() { + return ((bitField0_ & 0x00000200) != 0) ? + java.util.Collections.unmodifiableList(grayPointIndexs_) : grayPointIndexs_; + } + /** + *
+       * 虚线段点序号
+       * 
+ * + * repeated int32 grayPointIndexs = 12; + * @return The count of grayPointIndexs. + */ + public int getGrayPointIndexsCount() { + return grayPointIndexs_.size(); + } + /** + *
+       * 虚线段点序号
+       * 
+ * + * repeated int32 grayPointIndexs = 12; + * @param index The index of the element to return. + * @return The grayPointIndexs at the given index. + */ + public int getGrayPointIndexs(int index) { + return grayPointIndexs_.getInt(index); + } + /** + *
+       * 虚线段点序号
+       * 
+ * + * repeated int32 grayPointIndexs = 12; + * @param index The index to set the value at. + * @param value The grayPointIndexs to set. + * @return This builder for chaining. + */ + public Builder setGrayPointIndexs( + int index, int value) { + + ensureGrayPointIndexsIsMutable(); + grayPointIndexs_.setInt(index, value); + onChanged(); + return this; + } + /** + *
+       * 虚线段点序号
+       * 
+ * + * repeated int32 grayPointIndexs = 12; + * @param value The grayPointIndexs to add. + * @return This builder for chaining. + */ + public Builder addGrayPointIndexs(int value) { + + ensureGrayPointIndexsIsMutable(); + grayPointIndexs_.addInt(value); + onChanged(); + return this; + } + /** + *
+       * 虚线段点序号
+       * 
+ * + * repeated int32 grayPointIndexs = 12; + * @param values The grayPointIndexs to add. + * @return This builder for chaining. + */ + public Builder addAllGrayPointIndexs( + java.lang.Iterable values) { + ensureGrayPointIndexsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, grayPointIndexs_); + onChanged(); + return this; + } + /** + *
+       * 虚线段点序号
+       * 
+ * + * repeated int32 grayPointIndexs = 12; + * @return This builder for chaining. + */ + public Builder clearGrayPointIndexs() { + grayPointIndexs_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000200); + onChanged(); + return this; + } + + private java.lang.Object lineColor_ = ""; + /** + * string lineColor = 13; + * @return The lineColor. + */ + public java.lang.String getLineColor() { + java.lang.Object ref = lineColor_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lineColor_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string lineColor = 13; + * @return The bytes for lineColor. + */ + public com.google.protobuf.ByteString + getLineColorBytes() { + java.lang.Object ref = lineColor_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + lineColor_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string lineColor = 13; + * @param value The lineColor to set. + * @return This builder for chaining. + */ + public Builder setLineColor( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + lineColor_ = value; + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + * string lineColor = 13; + * @return This builder for chaining. + */ + public Builder clearLineColor() { + lineColor_ = getDefaultInstance().getLineColor(); + bitField0_ = (bitField0_ & ~0x00000400); + onChanged(); + return this; + } + /** + * string lineColor = 13; + * @param value The bytes for lineColor to set. + * @return This builder for chaining. + */ + public Builder setLineColorBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + lineColor_ = value; + bitField0_ |= 0x00000400; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -40833,78 +41617,82 @@ public final class LayoutGraphicsProto { "\n\007Polygon\022\'\n\006common\030\001 \001(\0132\027.graphicData." + "CommonInfo\022\014\n\004code\030\002 \001(\t\022\021\n\tlineWidth\030\003 " + "\001(\005\022\021\n\tlineColor\030\004 \001(\t\022\"\n\006points\030\005 \003(\0132\022" + - ".graphicData.Point\"\205\001\n\010Platform\022\'\n\006commo" + + ".graphicData.Point\"\233\001\n\010Platform\022\'\n\006commo" + "n\030\001 \001(\0132\027.graphicData.CommonInfo\022\014\n\004code" + "\030\002 \001(\t\022\017\n\007hasdoor\030\003 \001(\010\022\021\n\tdirection\030\004 \001" + - "(\t\022\022\n\nrefStation\030\006 \001(\t\022\n\n\002up\030\007 \001(\010\"\270\001\n\007S" + - "tation\022\'\n\006common\030\001 \001(\0132\027.graphicData.Com" + - "monInfo\022\014\n\004code\030\002 \001(\t\022\022\n\nhasControl\030\003 \001(" + - "\010\022\035\n\025concentrationStations\030\004 \001(\010\0225\n\017kilo" + - "meterSystem\030\006 \001(\0132\034.graphicData.Kilomete" + - "rSystem\022\014\n\004name\030\007 \001(\t\"k\n\013StationLine\022\'\n\006" + - "common\030\001 \001(\0132\027.graphicData.CommonInfo\022\014\n" + - "\004code\030\002 \001(\t\022\023\n\013hasTransfer\030\003 \001(\010\022\020\n\010hide" + - "Name\030\004 \001(\010\"Y\n\013TrainWindow\022\'\n\006common\030\001 \001(" + - "\0132\027.graphicData.CommonInfo\022\014\n\004code\030\002 \001(\t" + - "\022\023\n\013refDeviceId\030\003 \003(\t\"\256\001\n\014AxleCounting\022\'" + + "(\t\022\022\n\nrefStation\030\006 \001(\t\022\n\n\002up\030\007 \001(\010\022\024\n\014re" + + "fSectionId\030\010 \001(\t\"\270\001\n\007Station\022\'\n\006common\030\001" + + " \001(\0132\027.graphicData.CommonInfo\022\014\n\004code\030\002 " + + "\001(\t\022\022\n\nhasControl\030\003 \001(\010\022\035\n\025concentration" + + "Stations\030\004 \001(\010\0225\n\017kilometerSystem\030\006 \001(\0132" + + "\034.graphicData.KilometerSystem\022\014\n\004name\030\007 " + + "\001(\t\"\313\001\n\013StationLine\022\'\n\006common\030\001 \001(\0132\027.gr" + + "aphicData.CommonInfo\022\014\n\004code\030\002 \001(\t\022\023\n\013ha" + + "sTransfer\030\003 \001(\010\022\020\n\010hideName\030\004 \001(\010\0228\n\tcod" + + "eColor\030\005 \001(\0162%.graphicData.StationLine.s" + + "tationColor\"$\n\014stationColor\022\n\n\006orange\020\000\022" + + "\010\n\004gray\020\001\"Y\n\013TrainWindow\022\'\n\006common\030\001 \001(\013" + + "2\027.graphicData.CommonInfo\022\014\n\004code\030\002 \001(\t\022" + + "\023\n\013refDeviceId\030\003 \003(\t\"\256\001\n\014AxleCounting\022\'\n" + + "\006common\030\001 \001(\0132\027.graphicData.CommonInfo\022\014" + + "\n\004code\030\002 \001(\t\0225\n\017kilometerSystem\030\003 \001(\0132\034." + + "graphicData.KilometerSystem\0220\n\017axleCount" + + "ingRef\030\004 \003(\0132\027.graphicData.RelatedRef\">\n" + + "\005Train\022\'\n\006common\030\001 \001(\0132\027.graphicData.Com" + + "monInfo\022\014\n\004code\030\002 \001(\t\"B\n\tTrainLine\022\'\n\006co" + + "mmon\030\001 \001(\0132\027.graphicData.CommonInfo\022\014\n\004c" + + "ode\030\002 \001(\t\"@\n\007IscsFan\022\'\n\006common\030\001 \001(\0132\027.g" + + "raphicData.CommonInfo\022\014\n\004code\030\002 \001(\t\"\333\002\n\007" + + "Turnout\022\'\n\006common\030\001 \001(\0132\027.graphicData.Co" + + "mmonInfo\022\014\n\004code\030\002 \001(\t\022\"\n\006pointA\030\006 \003(\0132\022" + + ".graphicData.Point\022\"\n\006pointB\030\007 \003(\0132\022.gra" + + "phicData.Point\022\"\n\006pointC\030\010 \003(\0132\022.graphic" + + "Data.Point\022&\n\005paRef\030\t \001(\0132\027.graphicData." + + "RelatedRef\022&\n\005pbRef\030\n \001(\0132\027.graphicData." + + "RelatedRef\022&\n\005pcRef\030\013 \001(\0132\027.graphicData." + + "RelatedRef\0225\n\017kilometerSystem\030\r \003(\0132\034.gr" + + "aphicData.KilometerSystem\">\n\017KilometerSy" + + "stem\022\021\n\tkilometer\030\001 \001(\003\022\030\n\020coordinateSys" + + "tem\030\002 \001(\t\"\206\001\n\006Signal\022\'\n\006common\030\001 \001(\0132\027.g" + + "raphicData.CommonInfo\022\014\n\004code\030\002 \001(\t\022\016\n\006m" + + "irror\030\003 \001(\010\0225\n\017kilometerSystem\030\006 \001(\0132\034.g" + + "raphicData.KilometerSystem\"\214\002\n\007RunLine\022\'" + "\n\006common\030\001 \001(\0132\027.graphicData.CommonInfo\022" + - "\014\n\004code\030\002 \001(\t\0225\n\017kilometerSystem\030\003 \001(\0132\034" + - ".graphicData.KilometerSystem\0220\n\017axleCoun" + - "tingRef\030\004 \003(\0132\027.graphicData.RelatedRef\">" + - "\n\005Train\022\'\n\006common\030\001 \001(\0132\027.graphicData.Co" + - "mmonInfo\022\014\n\004code\030\002 \001(\t\"B\n\tTrainLine\022\'\n\006c" + - "ommon\030\001 \001(\0132\027.graphicData.CommonInfo\022\014\n\004" + - "code\030\002 \001(\t\"@\n\007IscsFan\022\'\n\006common\030\001 \001(\0132\027." + - "graphicData.CommonInfo\022\014\n\004code\030\002 \001(\t\"\333\002\n" + - "\007Turnout\022\'\n\006common\030\001 \001(\0132\027.graphicData.C" + - "ommonInfo\022\014\n\004code\030\002 \001(\t\022\"\n\006pointA\030\006 \003(\0132" + - "\022.graphicData.Point\022\"\n\006pointB\030\007 \003(\0132\022.gr" + - "aphicData.Point\022\"\n\006pointC\030\010 \003(\0132\022.graphi" + - "cData.Point\022&\n\005paRef\030\t \001(\0132\027.graphicData" + - ".RelatedRef\022&\n\005pbRef\030\n \001(\0132\027.graphicData" + - ".RelatedRef\022&\n\005pcRef\030\013 \001(\0132\027.graphicData" + - ".RelatedRef\0225\n\017kilometerSystem\030\r \003(\0132\034.g" + - "raphicData.KilometerSystem\">\n\017KilometerS" + - "ystem\022\021\n\tkilometer\030\001 \001(\003\022\030\n\020coordinateSy" + - "stem\030\002 \001(\t\"\206\001\n\006Signal\022\'\n\006common\030\001 \001(\0132\027." + - "graphicData.CommonInfo\022\014\n\004code\030\002 \001(\t\022\016\n\006" + - "mirror\030\003 \001(\010\0225\n\017kilometerSystem\030\006 \001(\0132\034." + - "graphicData.KilometerSystem\"\340\001\n\007RunLine\022" + - "\'\n\006common\030\001 \001(\0132\027.graphicData.CommonInfo" + - "\022\014\n\004code\030\002 \001(\t\022\"\n\006points\030\003 \003(\0132\022.graphic" + - "Data.Point\022\021\n\tnameColor\030\004 \001(\t\022\023\n\013nameBgC" + - "olor\030\005 \001(\t\022\022\n\ncontainSta\030\010 \003(\t\022\025\n\rlinkPa" + - "thLines\030\t \003(\t\022\016\n\006lineId\030\n \001(\t\022\027\n\017dashPoi" + - "ntIndexs\030\013 \003(\005\"\360\002\n\007Section\022\'\n\006common\030\001 \001" + - "(\0132\027.graphicData.CommonInfo\022\014\n\004code\030\002 \001(" + - "\t\022\"\n\006points\030\003 \003(\0132\022.graphicData.Point\022&\n" + - "\005paRef\030\004 \001(\0132\027.graphicData.RelatedRef\022&\n" + - "\005pbRef\030\005 \001(\0132\027.graphicData.RelatedRef\0225\n" + - "\013sectionType\030\006 \001(\0162 .graphicData.Section" + - ".SectionType\022\025\n\raxleCountings\030\007 \003(\t\022\020\n\010c" + - "hildren\030\010 \003(\t\022\027\n\017destinationCode\030\t \001(\t\022\017" + - "\n\007turning\030\n \001(\010\"0\n\013SectionType\022\014\n\010Physic" + - "al\020\000\022\023\n\017TurnoutPhysical\020\002\"i\n\014LogicSectio" + - "n\022\'\n\006common\030\001 \001(\0132\027.graphicData.CommonIn" + - "fo\022\014\n\004code\030\002 \001(\t\022\"\n\006points\030\003 \003(\0132\022.graph" + - "icData.Point\"V\n\016KilometerPoint\022!\n\005point\030" + - "\001 \001(\0132\022.graphicData.Point\022\021\n\tkilometer\030\002" + - " \001(\003\022\016\n\006stName\030\003 \001(\t\"\277\001\n\010PathLine\022\'\n\006com" + - "mon\030\001 \001(\0132\027.graphicData.CommonInfo\022\014\n\004co" + - "de\030\002 \001(\t\022\"\n\006points\030\003 \003(\0132\022.graphicData.P" + - "oint\022\014\n\004isUp\030\004 \001(\010\0224\n\017kilometerPoints\030\005 " + - "\003(\0132\033.graphicData.KilometerPoint\022\024\n\014isKm" + - "Increase\030\006 \001(\010\"\366\001\n\nRelatedRef\0226\n\ndeviceT" + - "ype\030\001 \001(\0162\".graphicData.RelatedRef.Devic" + - "eType\022\n\n\002id\030\002 \001(\t\0226\n\ndevicePort\030\003 \001(\0162\"." + - "graphicData.RelatedRef.DevicePort\"I\n\nDev" + - "iceType\022\013\n\007Section\020\000\022\013\n\007Turnout\020\001\022\017\n\013Tra" + - "inWindow\020\002\022\020\n\014AxleCounting\020\003\"!\n\nDevicePo" + - "rt\022\005\n\001A\020\000\022\005\n\001B\020\001\022\005\n\001C\020\002\"Y\n\tSeparator\022\'\n\006" + + "\014\n\004code\030\002 \001(\t\022\"\n\006points\030\003 \003(\0132\022.graphicD" + + "ata.Point\022\021\n\tnameColor\030\004 \001(\t\022\023\n\013nameBgCo" + + "lor\030\005 \001(\t\022\022\n\ncontainSta\030\010 \003(\t\022\025\n\rlinkPat" + + "hLines\030\t \003(\t\022\016\n\006lineId\030\n \001(\t\022\027\n\017dashPoin" + + "tIndexs\030\013 \003(\005\022\027\n\017grayPointIndexs\030\014 \003(\005\022\021" + + "\n\tlineColor\030\r \001(\t\"\360\002\n\007Section\022\'\n\006common\030" + + "\001 \001(\0132\027.graphicData.CommonInfo\022\014\n\004code\030\002" + + " \001(\t\022\"\n\006points\030\003 \003(\0132\022.graphicData.Point" + + "\022&\n\005paRef\030\004 \001(\0132\027.graphicData.RelatedRef" + + "\022&\n\005pbRef\030\005 \001(\0132\027.graphicData.RelatedRef" + + "\0225\n\013sectionType\030\006 \001(\0162 .graphicData.Sect" + + "ion.SectionType\022\025\n\raxleCountings\030\007 \003(\t\022\020" + + "\n\010children\030\010 \003(\t\022\027\n\017destinationCode\030\t \001(" + + "\t\022\017\n\007turning\030\n \001(\010\"0\n\013SectionType\022\014\n\010Phy" + + "sical\020\000\022\023\n\017TurnoutPhysical\020\002\"i\n\014LogicSec" + + "tion\022\'\n\006common\030\001 \001(\0132\027.graphicData.Commo" + + "nInfo\022\014\n\004code\030\002 \001(\t\022\"\n\006points\030\003 \003(\0132\022.gr" + + "aphicData.Point\"V\n\016KilometerPoint\022!\n\005poi" + + "nt\030\001 \001(\0132\022.graphicData.Point\022\021\n\tkilomete" + + "r\030\002 \001(\003\022\016\n\006stName\030\003 \001(\t\"\277\001\n\010PathLine\022\'\n\006" + "common\030\001 \001(\0132\027.graphicData.CommonInfo\022\014\n" + - "\004code\030\002 \001(\t\022\025\n\rseparatorType\030\003 \001(\tB8\n!cl" + - "ub.joylink.xiannccda.dto.protosB\023LayoutG" + - "raphicsProtob\006proto3" + "\004code\030\002 \001(\t\022\"\n\006points\030\003 \003(\0132\022.graphicDat" + + "a.Point\022\014\n\004isUp\030\004 \001(\010\0224\n\017kilometerPoints" + + "\030\005 \003(\0132\033.graphicData.KilometerPoint\022\024\n\014i" + + "sKmIncrease\030\006 \001(\010\"\366\001\n\nRelatedRef\0226\n\ndevi" + + "ceType\030\001 \001(\0162\".graphicData.RelatedRef.De" + + "viceType\022\n\n\002id\030\002 \001(\t\0226\n\ndevicePort\030\003 \001(\016" + + "2\".graphicData.RelatedRef.DevicePort\"I\n\n" + + "DeviceType\022\013\n\007Section\020\000\022\013\n\007Turnout\020\001\022\017\n\013" + + "TrainWindow\020\002\022\020\n\014AxleCounting\020\003\"!\n\nDevic" + + "ePort\022\005\n\001A\020\000\022\005\n\001B\020\001\022\005\n\001C\020\002\"Y\n\tSeparator\022" + + "\'\n\006common\030\001 \001(\0132\027.graphicData.CommonInfo" + + "\022\014\n\004code\030\002 \001(\t\022\025\n\rseparatorType\030\003 \001(\tB8\n" + + "!club.joylink.xiannccda.dto.protosB\023Layo" + + "utGraphicsProtob\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -40969,7 +41757,7 @@ public final class LayoutGraphicsProto { internal_static_graphicData_Platform_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_graphicData_Platform_descriptor, - new java.lang.String[] { "Common", "Code", "Hasdoor", "Direction", "RefStation", "Up", }); + new java.lang.String[] { "Common", "Code", "Hasdoor", "Direction", "RefStation", "Up", "RefSectionId", }); internal_static_graphicData_Station_descriptor = getDescriptor().getMessageTypes().get(10); internal_static_graphicData_Station_fieldAccessorTable = new @@ -40981,7 +41769,7 @@ public final class LayoutGraphicsProto { internal_static_graphicData_StationLine_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_graphicData_StationLine_descriptor, - new java.lang.String[] { "Common", "Code", "HasTransfer", "HideName", }); + new java.lang.String[] { "Common", "Code", "HasTransfer", "HideName", "CodeColor", }); internal_static_graphicData_TrainWindow_descriptor = getDescriptor().getMessageTypes().get(12); internal_static_graphicData_TrainWindow_fieldAccessorTable = new @@ -41035,7 +41823,7 @@ public final class LayoutGraphicsProto { internal_static_graphicData_RunLine_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_graphicData_RunLine_descriptor, - new java.lang.String[] { "Common", "Code", "Points", "NameColor", "NameBgColor", "ContainSta", "LinkPathLines", "LineId", "DashPointIndexs", }); + new java.lang.String[] { "Common", "Code", "Points", "NameColor", "NameBgColor", "ContainSta", "LinkPathLines", "LineId", "DashPointIndexs", "GrayPointIndexs", "LineColor", }); internal_static_graphicData_Section_descriptor = getDescriptor().getMessageTypes().get(21); internal_static_graphicData_Section_fieldAccessorTable = new