新的proto id变更

This commit is contained in:
tiger_zhou 2023-12-15 17:18:35 +08:00
parent cf75ce5f89
commit 01b440646b
20 changed files with 1970 additions and 1154 deletions

View File

@ -119,7 +119,7 @@ public class AlertDetailFactory {
private String getPlatformDesc(int lineId, Platform platform) { private String getPlatformDesc(int lineId, Platform platform) {
Station station = LineGraphicDataRepository.getDeviceByCode(lineId, Station station = LineGraphicDataRepository.getDeviceByCode(lineId,
platform.getRefStation(), Station.class); String.valueOf(platform.getRefStation()), Station.class);
return String.format("[%s][%s行站台]", station.getName(), platform.getUp() ? "" : ""); return String.format("[%s][%s行站台]", station.getName(), platform.getUp() ? "" : "");
} }

View File

@ -29,9 +29,9 @@ public class RelieveFilterManager implements ApplicationRunner {
* @param deviceLayoutId * @param deviceLayoutId
* @return true = 解除告警false = 需要告警 * @return true = 解除告警false = 需要告警
*/ */
public boolean relieveAlertMatch(Integer lineId, AlertDeviceType deviceType, AlertType alertType, String deviceLayoutId) { public boolean relieveAlertMatch(Integer lineId, AlertDeviceType deviceType, AlertType alertType, Integer deviceLayoutId) {
for (RelieveFilter filter : RELIEVE_FILTER_LIST) { for (RelieveFilter filter : RELIEVE_FILTER_LIST) {
MatcherResult result = filter.isMatch(lineId, deviceType, alertType, deviceLayoutId); MatcherResult result = filter.isMatch(lineId, deviceType, alertType, deviceLayoutId.toString());
if (result.nextFilter) { if (result.nextFilter) {
if (Objects.equals(false, result.result)) { if (Objects.equals(false, result.result)) {
return false; return false;

View File

@ -15,10 +15,7 @@ import club.joylink.xiannccda.dto.protos.LayoutGraphicsProto.Section.SectionType
import club.joylink.xiannccda.entity.PublishedGi; import club.joylink.xiannccda.entity.PublishedGi;
import club.joylink.xiannccda.exception.BusinessExceptionAssertEnum; import club.joylink.xiannccda.exception.BusinessExceptionAssertEnum;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBasedTable; import com.google.common.collect.HashBasedTable;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.Maps;
import com.google.common.collect.Table; import com.google.common.collect.Table;
import com.google.protobuf.Descriptors.FieldDescriptor; import com.google.protobuf.Descriptors.FieldDescriptor;
import com.google.protobuf.GeneratedMessageV3.Builder; import com.google.protobuf.GeneratedMessageV3.Builder;
@ -42,9 +39,13 @@ import org.apache.commons.lang3.StringUtils;
public class LineGraphicDataRepository { public class LineGraphicDataRepository {
/** /**
* 线路数据信息 * 线路数据信息 k1 = 线路id
* <p>
* k2 = 设备类型
* <p>
* k3 = 设备图中的id
*/ */
private static final Map<Integer, Map<String, Map<String, Builder>>> lineGraphMap = private static final Map<Integer, Map<String, Map<Integer, Builder>>> lineGraphMap =
new ConcurrentHashMap<>(); new ConcurrentHashMap<>();
/** /**
@ -54,7 +55,7 @@ public class LineGraphicDataRepository {
new HashMap<>(); new HashMap<>();
/** /**
* 线路-设备code-设备 * 线路-设备code(包含设备id)-设备
*/ */
private static final HashBasedTable<Integer, String, MessageOrBuilder> line_code_table = private static final HashBasedTable<Integer, String, MessageOrBuilder> line_code_table =
HashBasedTable.create(); HashBasedTable.create();
@ -85,7 +86,7 @@ public class LineGraphicDataRepository {
LayoutGraphicsProto.RtssGraphicStorage storage = LayoutGraphicsProto.RtssGraphicStorage storage =
LayoutGraphicsProto.RtssGraphicStorage.parseFrom(publishGi.getProto()); LayoutGraphicsProto.RtssGraphicStorage.parseFrom(publishGi.getProto());
// DeviceNameChanger.init(storage); // DeviceNameChanger.init(storage);
Map<String, Map<String, Builder>> lineDataMap = new HashMap<>(); Map<String, Map<Integer, Builder>> lineDataMap = new HashMap<>();
// 构建区段 // 构建区段
physicalSectionInitLineGraph(lineDataMap, storage); physicalSectionInitLineGraph(lineDataMap, storage);
// 构建道岔 // 构建道岔
@ -103,29 +104,27 @@ public class LineGraphicDataRepository {
// 填充line_code_table // 填充line_code_table
fillLineCodeTable(publishGi.getLineId(), storage); fillLineCodeTable(publishGi.getLineId(), storage);
Map<String, Map<String, Builder>> tmpMaper = lineGraphMap.get(publishGi.getLineId()); Map<String, Map<Integer, Builder>> tmpMaper = lineGraphMap.get(publishGi.getLineId());
if (CollectionUtils.isEmpty(tmpMaper)) { if (CollectionUtils.isEmpty(tmpMaper)) {
return; return;
} }
Map<String, Builder> turnoutMap = tmpMaper.get(DeviceType.Turnout.name()); Map<Integer, Builder> turnoutMap = tmpMaper.get(DeviceType.Turnout.name());
Map<String, Builder> builderMap = tmpMaper.get(DeviceType.Section.name()); Map<Integer, Builder> builderMap = tmpMaper.get(DeviceType.Section.name());
/*if (CollectionUtils.isEmpty(builderMap)) {
return;
}*/
for (Section section : storage.getSectionList()) { for (Section section : storage.getSectionList()) {
if (section.getSectionType() == SectionType.TurnoutPhysical) { if (section.getSectionType() == SectionType.TurnoutPhysical) {
for (String s : section.getChildrenList()) {
Builder b = turnoutMap.get(s); for (Integer childId : section.getChildrenList()) {
Builder b = turnoutMap.get(childId);
if (b instanceof DeviceInfoProto.Turnout.Builder logicSection) { if (b instanceof DeviceInfoProto.Turnout.Builder logicSection) {
LOGIC_SECTION_TO_SECTION_TABLE.put(publishGi.getLineId(), logicSection.getCode(), section.getCode()); LOGIC_SECTION_TO_SECTION_TABLE.put(publishGi.getLineId(), logicSection.getCode(), section.getCode());
LOGIC_SECTION_TO_AXLE_TABLE.put(publishGi.getLineId(), section.getCode(), logicSection.getCode()); LOGIC_SECTION_TO_AXLE_TABLE.put(publishGi.getLineId(), section.getCode(), logicSection.getCode());
} }
} }
} else { } else {
for (String s : section.getChildrenList()) { for (Integer childId : section.getChildrenList()) {
Builder b = builderMap.get(s); Builder b = builderMap.get(childId);
if (b instanceof DeviceInfoProto.Section.Builder logicSection) { if (b instanceof DeviceInfoProto.Section.Builder logicSection) {
LOGIC_SECTION_TO_SECTION_TABLE.put(publishGi.getLineId(), logicSection.getCode(), logicSection.getCode()); LOGIC_SECTION_TO_SECTION_TABLE.put(publishGi.getLineId(), logicSection.getCode(), logicSection.getCode());
LOGIC_SECTION_TO_AXLE_TABLE.put(publishGi.getLineId(), logicSection.getCode(), section.getCode()); LOGIC_SECTION_TO_AXLE_TABLE.put(publishGi.getLineId(), logicSection.getCode(), section.getCode());
@ -146,7 +145,7 @@ public class LineGraphicDataRepository {
} }
if (sectionMsg instanceof Section section) { if (sectionMsg instanceof Section section) {
Stream<LayoutGraphicsProto.Platform> platformStream = LineGraphicDataRepository.getDevices(lineId, LayoutGraphicsProto.Platform.class); Stream<LayoutGraphicsProto.Platform> platformStream = LineGraphicDataRepository.getDevices(lineId, LayoutGraphicsProto.Platform.class);
return platformStream.filter(d -> StringUtils.equals(d.getRefSectionId(), section.getCommon().getId())).findFirst(); return platformStream.filter(d -> d.getRefSectionId() == section.getCommon().getId()).findFirst();
} }
return Optional.empty(); return Optional.empty();
} }
@ -164,9 +163,9 @@ public class LineGraphicDataRepository {
* @return 公里标 * @return 公里标
*/ */
public static DeviceKilometer.Builder getKilometerCodeList(int lineId, String sectionName) { public static DeviceKilometer.Builder getKilometerCodeList(int lineId, String sectionName) {
Map<String, Map<String, Builder>> lineDataMap = lineGraphMap.get(lineId); Map<String, Map<Integer, Builder>> lineDataMap = lineGraphMap.get(lineId);
if (CollectionUtils.isNotEmpty(lineDataMap)) { if (CollectionUtils.isNotEmpty(lineDataMap)) {
Map<String, Builder> sectionMap = lineDataMap.get(DeviceType.Section.name()); Map<Integer, Builder> sectionMap = lineDataMap.get(DeviceType.Section.name());
for (Builder v : sectionMap.values()) { for (Builder v : sectionMap.values()) {
DeviceInfoProto.Section.Builder builder = (DeviceInfoProto.Section.Builder) v; DeviceInfoProto.Section.Builder builder = (DeviceInfoProto.Section.Builder) v;
if (Objects.equals(builder.getCode(), sectionName)) { if (Objects.equals(builder.getCode(), sectionName)) {
@ -174,7 +173,7 @@ public class LineGraphicDataRepository {
} }
} }
Map<String, Builder> turnoutMap = lineDataMap.get(DeviceType.Turnout.name()); Map<Integer, Builder> turnoutMap = lineDataMap.get(DeviceType.Turnout.name());
for (Builder v : turnoutMap.values()) { for (Builder v : turnoutMap.values()) {
DeviceInfoProto.Turnout.Builder builder = (DeviceInfoProto.Turnout.Builder) v; DeviceInfoProto.Turnout.Builder builder = (DeviceInfoProto.Turnout.Builder) v;
if (Objects.equals(builder.getCode(), sectionName)) { if (Objects.equals(builder.getCode(), sectionName)) {
@ -260,9 +259,14 @@ public class LineGraphicDataRepository {
continue; continue;
} }
MessageOrBuilder common = (MessageOrBuilder) builder.getField(commonField); MessageOrBuilder common = (MessageOrBuilder) builder.getField(commonField);
Object idObjVal = common.getField(idField);
String id = (String) common.getField(idField); String idTmpVal = "";
line_code_table.put(lineId, id, builder); if (idObjVal instanceof String idVal) {
idTmpVal = idVal;
} else if (idObjVal instanceof Integer idVal) {
idTmpVal = String.valueOf(idVal);
}
line_code_table.put(lineId, idTmpVal, builder);
} }
} }
}); });
@ -274,8 +278,8 @@ public class LineGraphicDataRepository {
* @param lineId 线路ID * @param lineId 线路ID
* @return 区段集合 * @return 区段集合
*/ */
public static Map<String, Builder> getLineSectionBuild(int lineId) { public static Map<Integer, Builder> getLineSectionBuild(int lineId) {
Map<String, Map<String, Builder>> lineDataMap = lineGraphMap.get(lineId); Map<String, Map<Integer, Builder>> lineDataMap = lineGraphMap.get(lineId);
if (CollectionUtils.isNotEmpty(lineDataMap)) { if (CollectionUtils.isNotEmpty(lineDataMap)) {
return lineDataMap.get(DeviceType.Section.name()); return lineDataMap.get(DeviceType.Section.name());
} }
@ -289,20 +293,20 @@ public class LineGraphicDataRepository {
* @param storage 地图构建数据 * @param storage 地图构建数据
*/ */
private static void physicalSectionInitLineGraph( private static void physicalSectionInitLineGraph(
Map<String, Map<String, Builder>> dataMap, LayoutGraphicsProto.RtssGraphicStorage storage) { Map<String, Map<Integer, Builder>> dataMap, LayoutGraphicsProto.RtssGraphicStorage storage) {
// 先初始化物理区段信息 // 先初始化物理区段信息
List<Section> sectionList = List<Section> sectionList =
storage.getSectionList().stream() storage.getSectionList().stream()
.filter(s -> Objects.equals(s.getSectionType(), SectionType.Physical)) .filter(s -> Objects.equals(s.getSectionType(), SectionType.Physical))
.toList(); .toList();
// 物理区段数据 + 逻辑区段数据预设值[物理section数量 * ABCD] // 物理区段数据 + 逻辑区段数据预设值[物理section数量 * ABCD]
Map<String, Builder> sectionMap = new HashMap<>(sectionList.size() * 5); Map<Integer, Builder> sectionMap = new HashMap<>(sectionList.size() * 5);
sectionList.stream() sectionList.stream()
// 目前数据中还存在 区段类型为 逻辑区段类型暂时先过滤掉错误 // 目前数据中还存在 区段类型为 逻辑区段类型暂时先过滤掉错误
.filter(section -> !SectionType.UNRECOGNIZED.equals(section.getSectionType())) .filter(section -> !SectionType.UNRECOGNIZED.equals(section.getSectionType()))
.forEach( .forEach(
section -> { section -> {
String sid = section.getCommon().getId(); Integer sid = section.getCommon().getId();
DeviceInfoProto.Section.Builder sectionBuilder = initSection(sectionMap, sid); DeviceInfoProto.Section.Builder sectionBuilder = initSection(sectionMap, sid);
sectionBuilder.setCode(section.getCode()); sectionBuilder.setCode(section.getCode());
sectionBuilder.setDestinationCode(section.getDestinationCode()); sectionBuilder.setDestinationCode(section.getDestinationCode());
@ -326,11 +330,11 @@ public class LineGraphicDataRepository {
*/ */
private static void turnoutInitLineGraph( private static void turnoutInitLineGraph(
Integer lineId, Integer lineId,
Map<String, Map<String, Builder>> dataMap, Map<String, Map<Integer, Builder>> dataMap,
LayoutGraphicsProto.RtssGraphicStorage storage) { LayoutGraphicsProto.RtssGraphicStorage storage) {
Map<String, CoordinateConvertor> convertorMap = Map<String, CoordinateConvertor> convertorMap =
lineCoordinateMain.computeIfAbsent(lineId, id -> new HashMap<>()); lineCoordinateMain.computeIfAbsent(lineId, id -> new HashMap<>());
Map<String, Builder> cacheSwitchMap = new HashMap<>(storage.getTurnoutsList().size()); Map<Integer, Builder> cacheSwitchMap = new HashMap<>(storage.getTurnoutsList().size());
storage.getTurnoutsList().stream() storage.getTurnoutsList().stream()
.forEach( .forEach(
t -> { t -> {
@ -355,19 +359,19 @@ public class LineGraphicDataRepository {
* @param storage * @param storage
*/ */
private static void setUpTurnoutPhysicalSectionInfo( private static void setUpTurnoutPhysicalSectionInfo(
Map<String, Map<String, Builder>> dataMap, LayoutGraphicsProto.RtssGraphicStorage storage) { Map<String, Map<Integer, Builder>> dataMap, LayoutGraphicsProto.RtssGraphicStorage storage) {
Map<String, Builder> curSectionMap = dataMap.getOrDefault(DeviceType.Section.name(), Map.of()); Map<Integer, Builder> curSectionMap = dataMap.getOrDefault(DeviceType.Section.name(), Map.of());
Map<String, Builder> turnoutMap = dataMap.getOrDefault(DeviceType.Turnout.name(), Map.of()); Map<Integer, Builder> turnoutMap = dataMap.getOrDefault(DeviceType.Turnout.name(), Map.of());
// 先初始化物理区段信息 // 先初始化物理区段信息
List<Section> sectionList = List<Section> sectionList =
storage.getSectionList().stream() storage.getSectionList().stream()
.filter(s -> Objects.equals(s.getSectionType(), SectionType.TurnoutPhysical)) .filter(s -> Objects.equals(s.getSectionType(), SectionType.TurnoutPhysical))
.toList(); .toList();
// 道岔区段数据 // 道岔区段数据
Map<String, Builder> sectionMap = new HashMap<>(sectionList.size()); Map<Integer, Builder> sectionMap = new HashMap<>(sectionList.size());
sectionList.forEach( sectionList.forEach(
section -> { section -> {
String sid = section.getCommon().getId(); Integer sid = section.getCommon().getId();
DeviceInfoProto.Section.Builder s = initSection(sectionMap, sid); DeviceInfoProto.Section.Builder s = initSection(sectionMap, sid);
s.setCode(section.getCode()); s.setCode(section.getCode());
s.setDestinationCode(section.getDestinationCode()); s.setDestinationCode(section.getDestinationCode());
@ -396,12 +400,12 @@ public class LineGraphicDataRepository {
*/ */
private static void setUpKilometerCode( private static void setUpKilometerCode(
Integer lineId, Integer lineId,
Map<String, Map<String, Builder>> dataMap, Map<String, Map<Integer, Builder>> dataMap,
LayoutGraphicsProto.RtssGraphicStorage storage) { LayoutGraphicsProto.RtssGraphicStorage storage) {
// 初始化转换信息 // 初始化转换信息
initConvertorCoordinate(lineId, dataMap, storage); initConvertorCoordinate(lineId, dataMap, storage);
Map<String, Builder> sectionMap = dataMap.getOrDefault(DeviceType.Section.name(), Map.of()); Map<Integer, Builder> sectionMap = dataMap.getOrDefault(DeviceType.Section.name(), Map.of());
Map<String, Builder> turnoutMap = dataMap.getOrDefault(DeviceType.Turnout.name(), Map.of()); Map<Integer, Builder> turnoutMap = dataMap.getOrDefault(DeviceType.Turnout.name(), Map.of());
storage.getAxleCountingsList().stream() storage.getAxleCountingsList().stream()
.filter(ac -> StringUtils.isNotEmpty(ac.getKilometerSystem().getCoordinateSystem())) .filter(ac -> StringUtils.isNotEmpty(ac.getKilometerSystem().getCoordinateSystem()))
.forEach( .forEach(
@ -443,10 +447,10 @@ public class LineGraphicDataRepository {
*/ */
private static void initConvertorCoordinate( private static void initConvertorCoordinate(
Integer lineId, Integer lineId,
Map<String, Map<String, Builder>> dataMap, Map<String, Map<Integer, Builder>> dataMap,
LayoutGraphicsProto.RtssGraphicStorage storage) { LayoutGraphicsProto.RtssGraphicStorage storage) {
// 强制转换道岔 // 强制转换道岔
Map<String, Builder> turnoutMap = dataMap.get(DeviceType.Turnout.name()); Map<Integer, Builder> turnoutMap = dataMap.get(DeviceType.Turnout.name());
if (CollectionUtils.isEmpty(turnoutMap)) { if (CollectionUtils.isEmpty(turnoutMap)) {
return; return;
} }
@ -580,8 +584,9 @@ public class LineGraphicDataRepository {
* @param storage 地图信息 * @param storage 地图信息
*/ */
private static void setUpLogicSectionInfo( private static void setUpLogicSectionInfo(
Map<String, Map<String, Builder>> dataMap, LayoutGraphicsProto.RtssGraphicStorage storage) { Map<String, Map<Integer, Builder>> dataMap, LayoutGraphicsProto.RtssGraphicStorage storage) {
Map<String, Builder> sectionMap = dataMap.getOrDefault(DeviceType.Section.name(), Map.of());
Map<Integer, Builder> sectionMap = dataMap.getOrDefault(DeviceType.Section.name(), Map.of());
if (sectionMap.isEmpty()) { if (sectionMap.isEmpty()) {
return; return;
} }
@ -589,13 +594,13 @@ public class LineGraphicDataRepository {
.getLogicSectionsList() .getLogicSectionsList()
.forEach( .forEach(
section -> { section -> {
String sid = section.getCommon().getId(); Integer sid = section.getCommon().getId();
if (sectionMap.containsKey(sid)) { if (sectionMap.containsKey(sid)) {
DeviceInfoProto.Section.Builder sectionBuilder = findSection(sectionMap, sid); DeviceInfoProto.Section.Builder sectionBuilder = findSection(sectionMap, sid);
sectionBuilder.setCode(section.getCode()); sectionBuilder.setCode(section.getCode());
// 获取到物理区段信息 // 获取到物理区段信息
DeviceInfoProto.Section.Builder physicalSection = DeviceInfoProto.Section.Builder physicalSection =
findSection(sectionMap, sectionBuilder.getPhysicalSectionId()); findSection(sectionMap, Integer.valueOf(sectionBuilder.getPhysicalSectionId()));
DeviceKilometer.Builder deviceKilometer = sectionBuilder.getKilometerBuilder(); DeviceKilometer.Builder deviceKilometer = sectionBuilder.getKilometerBuilder();
DeviceKilometer.Builder parentKilometer = physicalSection.getKilometerBuilder(); DeviceKilometer.Builder parentKilometer = physicalSection.getKilometerBuilder();
if (parentKilometer.getKilometerSystemCount() > 0) { if (parentKilometer.getKilometerSystemCount() > 0) {
@ -678,7 +683,7 @@ public class LineGraphicDataRepository {
* @param id 区段ID * @param id 区段ID
* @return 区段实体信息 * @return 区段实体信息
*/ */
private static DeviceInfoProto.Section.Builder initSection(Map<String, Builder> map, String id) { private static DeviceInfoProto.Section.Builder initSection(Map<Integer, Builder> map, Integer id) {
if (map.containsKey(id)) { if (map.containsKey(id)) {
return (DeviceInfoProto.Section.Builder) map.get(id); return (DeviceInfoProto.Section.Builder) map.get(id);
} else { } else {
@ -697,7 +702,7 @@ public class LineGraphicDataRepository {
* @param id 区段ID * @param id 区段ID
* @return 区段信息 * @return 区段信息
*/ */
private static DeviceInfoProto.Section.Builder findSection(Map<String, Builder> map, String id) { private static DeviceInfoProto.Section.Builder findSection(Map<Integer, Builder> map, Integer id) {
if (map.containsKey(id)) { if (map.containsKey(id)) {
return (DeviceInfoProto.Section.Builder) map.get(id); return (DeviceInfoProto.Section.Builder) map.get(id);
} }
@ -711,7 +716,7 @@ public class LineGraphicDataRepository {
* @param id 道岔ID * @param id 道岔ID
* @return 道岔信息 * @return 道岔信息
*/ */
private static DeviceInfoProto.Turnout.Builder findTurnout(Map<String, Builder> map, String id) { private static DeviceInfoProto.Turnout.Builder findTurnout(Map<Integer, Builder> map, Integer id) {
if (map.containsKey(id)) { if (map.containsKey(id)) {
return (DeviceInfoProto.Turnout.Builder) map.get(id); return (DeviceInfoProto.Turnout.Builder) map.get(id);
} }

View File

@ -18,7 +18,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
/** 线网的列车数据,一些公共方法 */ /**
* 线网的列车数据一些公共方法
*/
@Slf4j @Slf4j
public abstract class LineNetTrainComMethod { public abstract class LineNetTrainComMethod {
@ -50,8 +52,8 @@ public abstract class LineNetTrainComMethod {
/** /**
* 设置公里标信息 * 设置公里标信息
* *
* @param obj 要设置的对象 * @param obj 要设置的对象
* @param type 所在设备类型 * @param type 所在设备类型
* @param deviceName 设备名称 * @param deviceName 设备名称
*/ */
public static void setUpKilometerCode( public static void setUpKilometerCode(
@ -68,11 +70,11 @@ public abstract class LineNetTrainComMethod {
/** /**
* 根据目的码确定方向并确定公里标 * 根据目的码确定方向并确定公里标
* *
* @param obj 要设置的对象 * @param obj 要设置的对象
* @param globalId 车次号 * @param globalId 车次号
* @param destinationCode 目的码 * @param destinationCode 目的码
* @param type 设备类型 * @param type 设备类型
* @param name 设备名称 * @param name 设备名称
*/ */
public static void setTrainDirectionAndKilometerCode( public static void setTrainDirectionAndKilometerCode(
WsMessageProto.WsLineNetTrainOffsetMessage.Builder obj, WsMessageProto.WsLineNetTrainOffsetMessage.Builder obj,
@ -114,8 +116,8 @@ public abstract class LineNetTrainComMethod {
* 获取设备的公里标 * 获取设备的公里标
* *
* @param lineId 线路ID * @param lineId 线路ID
* @param type 设备类型 * @param type 设备类型
* @param name 设备名称 * @param name 设备名称
* @return 公里标列表 * @return 公里标列表
*/ */
private static DeviceKilometer.Builder getDeviceKM(int lineId, DeviceType type, String name) { private static DeviceKilometer.Builder getDeviceKM(int lineId, DeviceType type, String name) {
@ -133,11 +135,11 @@ public abstract class LineNetTrainComMethod {
* 获取目的地码的公里标信息 * 获取目的地码的公里标信息
* *
* @param lineId 线路ID * @param lineId 线路ID
* @param code 目的地码 * @param code 目的地码
* @return 公里标列表 * @return 公里标列表
*/ */
private static DeviceKilometer.Builder getDirectionCodeKM(int lineId, String code) { private static DeviceKilometer.Builder getDirectionCodeKM(int lineId, String code) {
Map<String, Builder> map = LineGraphicDataRepository.getLineSectionBuild(lineId); Map<Integer, Builder> map = LineGraphicDataRepository.getLineSectionBuild(lineId);
Optional<Builder> destination = Optional<Builder> destination =
map.values().stream() map.values().stream()
.filter( .filter(
@ -158,7 +160,7 @@ public abstract class LineNetTrainComMethod {
* 选择对应的公里标信息 * 选择对应的公里标信息
* *
* @param dir 运行方向 * @param dir 运行方向
* @param km 公里标信息 * @param km 公里标信息
* @return 公里标 * @return 公里标
*/ */
private static long selectDeviceKilometerCode(int dir, DeviceKilometer.Builder km) { private static long selectDeviceKilometerCode(int dir, DeviceKilometer.Builder km) {

View File

@ -66,10 +66,10 @@ public class InterLockData extends AbstractData {
// this.handleLevelOne(AlertType.INTERLOCK_LEVEL_TWO, alertTypeListMap, builder, lineId); // this.handleLevelOne(AlertType.INTERLOCK_LEVEL_TWO, alertTypeListMap, builder, lineId);
} }
private List<Station> sortRtu(String[] datas, Integer lineId) { private List<Station> sortRtu(Integer[] datas, Integer lineId) {
List<Station> stationList = Lists.newArrayList(); List<Station> stationList = Lists.newArrayList();
for (String data : datas) { for (Integer data : datas) {
Station stationS = LineGraphicDataRepository.getDeviceByCode(lineId, data, Station.class); Station stationS = LineGraphicDataRepository.getDeviceByCode(lineId, data.toString(), Station.class);
stationList.add(stationS); stationList.add(stationS);
} }
stationList.sort((o1, o2) -> String.CASE_INSENSITIVE_ORDER.compare(o1.getCode(), o2.getCode())); stationList.sort((o1, o2) -> String.CASE_INSENSITIVE_ORDER.compare(o1.getCode(), o2.getCode()));
@ -116,7 +116,7 @@ public class InterLockData extends AbstractData {
detail.setRtuId(deviceRtuId); detail.setRtuId(deviceRtuId);
INTER_LOCK_TABLE.put(names, tableColumn, detail); INTER_LOCK_TABLE.put(names, tableColumn, detail);
} }
detail.addDevice(commonInfo.getId()); detail.addDevice(commonInfo.getOldid());
} }
private String interLockMapName(AlertType alertType, AlertDeviceType deviceTyp) { private String interLockMapName(AlertType alertType, AlertDeviceType deviceTyp) {

View File

@ -32,8 +32,7 @@ public class AllLineBlueAlertListener implements AlertSourceEventListener<AllLin
if (alertManager.needMostShow(rtu.getLineId(), BlueAlertListener.BLUE_DISPLAY_NAME, event.allControlStationSize) if (alertManager.needMostShow(rtu.getLineId(), BlueAlertListener.BLUE_DISPLAY_NAME, event.allControlStationSize)
&& alertManager.putAlterDevice(rtu.getLineId(), BlueAlertListener.BLUE_DISPLAY_NAME, BlueAlertListener.ALL_BLUE_DISPLAY_VAL_FLAG)) { && alertManager.putAlterDevice(rtu.getLineId(), BlueAlertListener.BLUE_DISPLAY_NAME, BlueAlertListener.ALL_BLUE_DISPLAY_VAL_FLAG)) {
NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), AlertType.ALL_LINE_BLUE_DISPLAY, rtu, BlueAlertListener.ALL_BLUE_DISPLAY_VAL_FLAG, NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), AlertType.ALL_LINE_BLUE_DISPLAY, rtu, BlueAlertListener.ALL_BLUE_DISPLAY_VAL_FLAG,
event.station.getCommon().getId(), String.valueOf(event.station.getCommon().getId()), AlertDeviceType.DEVICE_TYPE_RTU, false);
AlertDeviceType.DEVICE_TYPE_RTU, false);
alertManager.emit(alertInfo); alertManager.emit(alertInfo);
} }
} }

View File

@ -85,8 +85,8 @@ public class AxleLedAlertListener implements AlertSourceEventListener<AxleLedAle
List<Boolean> orangeList = Lists.newArrayList(); List<Boolean> orangeList = Lists.newArrayList();
DeviceStatusData deviceStatusData = DeviceDataRepository.findDataSouce(String.valueOf(trackBuild.getLineId()), DataTypeEnum.DEVICE); DeviceStatusData deviceStatusData = DeviceDataRepository.findDataSouce(String.valueOf(trackBuild.getLineId()), DataTypeEnum.DEVICE);
for (String childId : axleSection.getChildrenList()) { for (Integer childId : axleSection.getChildrenList()) {
LogicSection childSection = LineGraphicDataRepository.getDeviceByCode(trackBuild.getLineId(), childId, LogicSection.class); LogicSection childSection = LineGraphicDataRepository.getDeviceByCode(trackBuild.getLineId(), childId.toString(), LogicSection.class);
String trainGroupId = trainDataSource.findTrainForDeviceName(childSection.getCode()); String trainGroupId = trainDataSource.findTrainForDeviceName(childSection.getCode());
if (StringUtils.isNotEmpty(trainGroupId)) { if (StringUtils.isNotEmpty(trainGroupId)) {
redList.add(false); redList.add(false);
@ -115,7 +115,7 @@ public class AxleLedAlertListener implements AlertSourceEventListener<AxleLedAle
Integer rtuId = DeviceStatusDataOperate.findFieldVal(build, "rtuId", Integer.class); Integer rtuId = DeviceStatusDataOperate.findFieldVal(build, "rtuId", Integer.class);
String deviceCodeId = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "code", String.class); String deviceCodeId = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "code", String.class);
CommonInfo commonInfo = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "common", CommonInfo.class); CommonInfo commonInfo = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "common", CommonInfo.class);
String layoutDeviceId = commonInfo.getId(); Integer layoutDeviceId = commonInfo.getId();
String ledName = alertType == AlertType.AXLE_LED_RED ? "红光带" : "橙光带"; String ledName = alertType == AlertType.AXLE_LED_RED ? "红光带" : "橙光带";
String ledPutName = this.getDefaultName(alertType, lineId, rtuId); String ledPutName = this.getDefaultName(alertType, lineId, rtuId);
if (light) { if (light) {
@ -123,7 +123,7 @@ public class AxleLedAlertListener implements AlertSourceEventListener<AxleLedAle
if (alertManager.putAlterDevice(lineId, ledPutName, deviceCodeId) && Objects.equals(false, if (alertManager.putAlterDevice(lineId, ledPutName, deviceCodeId) && Objects.equals(false,
relieveFilterManager.relieveAlertMatch(lineId, AlertDeviceType.DEVICE_TYPE_TRACK, alertType, layoutDeviceId))) { relieveFilterManager.relieveAlertMatch(lineId, AlertDeviceType.DEVICE_TYPE_TRACK, alertType, layoutDeviceId))) {
String alertMsg = String.format("出现%s设备[%s]", ledName, deviceCodeId); String alertMsg = String.format("出现%s设备[%s]", ledName, deviceCodeId);
NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), alertType, build, alertMsg, layoutDeviceId, AlertDeviceType.DEVICE_TYPE_TRACK, false); NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), alertType, build, alertMsg, String.valueOf(layoutDeviceId), AlertDeviceType.DEVICE_TYPE_TRACK, false);
alertManager.emit(alertInfo); alertManager.emit(alertInfo);
alertManager.emit(new SwitchAndTrackLedMostAlertEvent(build, alertType, lineId, layoutDeviceId, deviceCodeId, true)); alertManager.emit(new SwitchAndTrackLedMostAlertEvent(build, alertType, lineId, layoutDeviceId, deviceCodeId, true));
// alertManager.emit(new SwitchAndTrackLedInterLockL2AlertEvent(build, alertType, lineId, layoutDeviceId, deviceCodeId, true, rtuId)); // alertManager.emit(new SwitchAndTrackLedInterLockL2AlertEvent(build, alertType, lineId, layoutDeviceId, deviceCodeId, true, rtuId));

View File

@ -104,14 +104,14 @@ public class AxleSwitchTrackLedAlertListener implements AlertSourceEventListener
Integer rtuId = DeviceStatusDataOperate.findFieldVal(build, "rtuId", Integer.class); Integer rtuId = DeviceStatusDataOperate.findFieldVal(build, "rtuId", Integer.class);
String deviceCodeId = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "code", String.class); String deviceCodeId = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "code", String.class);
CommonInfo commonInfo = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "common", CommonInfo.class); CommonInfo commonInfo = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "common", CommonInfo.class);
String layoutDeviceId = commonInfo.getId(); Integer layoutDeviceId = commonInfo.getId();
String ledName = alertType == AlertType.AXLE_LED_RED ? "红光带" : "橙光带"; String ledName = alertType == AlertType.AXLE_LED_RED ? "红光带" : "橙光带";
String ledPutName = this.getDefaultName(alertType, lineId, rtuId); String ledPutName = this.getDefaultName(alertType, lineId, rtuId);
if (light) { if (light) {
log.info("光带检测到[{}] 线路[{}] 设备[{}] 告警[{}]", ledName, lineId, deviceCodeId, alertType.name()); log.info("光带检测到[{}] 线路[{}] 设备[{}] 告警[{}]", ledName, lineId, deviceCodeId, alertType.name());
if (alertManager.putAlterDevice(lineId, ledPutName, deviceCodeId)) { if (alertManager.putAlterDevice(lineId, ledPutName, deviceCodeId)) {
String alertMsg = String.format("出现%s设备[%s]", ledName, deviceCodeId); String alertMsg = String.format("出现%s设备[%s]", ledName, deviceCodeId);
NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), alertType, build, alertMsg, layoutDeviceId, AlertDeviceType.DEVICE_TYPE_TRACK, false); NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), alertType, build, alertMsg, String.valueOf(layoutDeviceId), AlertDeviceType.DEVICE_TYPE_TRACK, false);
alertManager.emit(alertInfo); alertManager.emit(alertInfo);
alertManager.emit(new SwitchAndTrackLedMostAlertEvent(build, alertType, lineId, layoutDeviceId, deviceCodeId, true)); alertManager.emit(new SwitchAndTrackLedMostAlertEvent(build, alertType, lineId, layoutDeviceId, deviceCodeId, true));
// alertManager.emit(new SwitchAndTrackLedInterLockL2AlertEvent(build, alertType, lineId, layoutDeviceId, deviceCodeId, true, rtuId)); // alertManager.emit(new SwitchAndTrackLedInterLockL2AlertEvent(build, alertType, lineId, layoutDeviceId, deviceCodeId, true, rtuId));

View File

@ -67,11 +67,11 @@ public class AxleSwitchTrackLedMostAlertListener implements AlertSourceEventList
private AlertType alertType; private AlertType alertType;
private int lineId; private int lineId;
private String layoutDeviceId; private Integer layoutDeviceId;
private boolean alert; private boolean alert;
private String realDeviceCodeId; private String realDeviceCodeId;
public SwitchAndTrackLedMostAlertEvent(Builder source, AlertType alertType, int lineId, String layoutDeviceId, String realDeviceCodeId, boolean alert) { public SwitchAndTrackLedMostAlertEvent(Builder source, AlertType alertType, int lineId, Integer layoutDeviceId, String realDeviceCodeId, boolean alert) {
super(source); super(source);
this.alertType = alertType; this.alertType = alertType;
this.lineId = lineId; this.lineId = lineId;

View File

@ -65,7 +65,8 @@ public class BlueAlertListener implements AlertSourceEventListener<BlueDisplayAl
Optional<AreaConfigVO> alertInfoMostOptional = this.alertInfoService.findAreaDevice(AlertType.BLUE_DISPLAY, AlertDeviceType.DEVICE_TYPE_RTU, station.getCommon().getId(), rtu.getLineId()); Optional<AreaConfigVO> alertInfoMostOptional = this.alertInfoService.findAreaDevice(AlertType.BLUE_DISPLAY, AlertDeviceType.DEVICE_TYPE_RTU, station.getCommon().getId(), rtu.getLineId());
String alertInfoMostName = alertInfoMostOptional.map(AreaConfigVO::getAreaName).orElse(String.format("%s 集中站中断连接 ", station.getName())); String alertInfoMostName = alertInfoMostOptional.map(AreaConfigVO::getAreaName).orElse(String.format("%s 集中站中断连接 ", station.getName()));
int allControlStationSize = CONTROL_STATION_MAPER.get(rtu.getLineId()).size(); int allControlStationSize = CONTROL_STATION_MAPER.get(rtu.getLineId()).size();
NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), AlertType.BLUE_DISPLAY, rtu, alertInfoMostName, station.getCommon().getId(), AlertDeviceType.DEVICE_TYPE_RTU, NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), AlertType.BLUE_DISPLAY, rtu, alertInfoMostName, String.valueOf(station.getCommon().getId()),
AlertDeviceType.DEVICE_TYPE_RTU,
false); false);
alertManager.emit(alertInfo); alertManager.emit(alertInfo);
alertManager.emit(new AllLineBlueDisplayAlertEvent(rtu, station, allControlStationSize)); alertManager.emit(new AllLineBlueDisplayAlertEvent(rtu, station, allControlStationSize));

View File

@ -79,9 +79,9 @@ public class PlatformAlertMonitoringTask implements AlertMonitoringTask {
return "PLATFORM_CLOSE_OR_OPEN_ALTER"; return "PLATFORM_CLOSE_OR_OPEN_ALTER";
} }
private String findRefStationName(int lineId, String stationId) { private String findRefStationName(int lineId, Integer stationId) {
Stream<Station> stream = LineGraphicDataRepository.getDevices(lineId, Station.class); Stream<Station> stream = LineGraphicDataRepository.getDevices(lineId, Station.class);
Optional<Station> stationOptional = stream.filter(d -> StringUtils.equalsIgnoreCase(d.getCommon().getId(), stationId)).findAny(); Optional<Station> stationOptional = stream.filter(d -> d.getCommon().getId() == stationId).findAny();
return stationOptional.map(Station::getName).orElse(null); return stationOptional.map(Station::getName).orElse(null);
} }

View File

@ -89,7 +89,7 @@ public class SwitchLostAlertMonitoringTask implements AlertMonitoringTask {
//失表超时 //失表超时
if (alertManager.putAlterDevice(lineId, switchPutName, savedSwitchBuild.getId())) { if (alertManager.putAlterDevice(lineId, switchPutName, savedSwitchBuild.getId())) {
String alertMsg = String.format("设备[%s]失表", savedSwitchBuild.getId()); String alertMsg = String.format("设备[%s]失表", savedSwitchBuild.getId());
NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), AlertType.SWITCH_LOST, savedSwitchBuild, alertMsg, turnout.getCommon().getId(), NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), AlertType.SWITCH_LOST, savedSwitchBuild, alertMsg, String.valueOf(turnout.getCommon().getId()),
AlertDeviceType.DEVICE_TYPE_SWITCH, false); AlertDeviceType.DEVICE_TYPE_SWITCH, false);
alertManager.emit(alertInfo); alertManager.emit(alertInfo);
alertManager.emit(new SwitchLostMostEvent(savedSwitchBuild, true, turnout)); alertManager.emit(new SwitchLostMostEvent(savedSwitchBuild, true, turnout));

View File

@ -107,7 +107,7 @@ public class SwitchLostAlertMonitoringTask2 implements AlertMonitoringTask {
log.info("道岔失表超时,准备报警 线路[{}] 设备[{}] 接受时间[{}] 发送时间[{}] 对应地图设备id[{}]" log.info("道岔失表超时,准备报警 线路[{}] 设备[{}] 接受时间[{}] 发送时间[{}] 对应地图设备id[{}]"
, lineId, switchBuild.getId(), switchBuild.getReceiveTime(), switchBuild.getTimestamp(), turnout.getCommon().getId()); , lineId, switchBuild.getId(), switchBuild.getReceiveTime(), switchBuild.getTimestamp(), turnout.getCommon().getId());
String alertMsg = String.format("设备[%s]失表", switchBuild.getId()); String alertMsg = String.format("设备[%s]失表", switchBuild.getId());
NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), AlertType.SWITCH_LOST, switchBuild, alertMsg, turnout.getCommon().getId(), NccAlertInfo alertInfo = this.alertInfoService.createAlert2(Optional.empty(), AlertType.SWITCH_LOST, switchBuild, alertMsg, String.valueOf(turnout.getCommon().getId()),
AlertDeviceType.DEVICE_TYPE_SWITCH, false); AlertDeviceType.DEVICE_TYPE_SWITCH, false);
alertManager.emit(alertInfo); alertManager.emit(alertInfo);
alertManager.emit(new SwitchLostMostEvent(switchBuild, true, turnout)); alertManager.emit(new SwitchLostMostEvent(switchBuild, true, turnout));

View File

@ -36,8 +36,8 @@ public class SwitchLostMostAlertListener implements AlertSourceEventListener<Swi
private final AlertManager alertManager = AlertManager.getDefault(); private final AlertManager alertManager = AlertManager.getDefault();
private List<String> findDeviceIdFormCode(Integer lineId, List<String> deviceCodes) { private List<Integer> findDeviceIdFormCode(Integer lineId, List<String> deviceCodes) {
List<String> list = Lists.newArrayList(); List<Integer> list = Lists.newArrayList();
for (String deviceCode : deviceCodes) { for (String deviceCode : deviceCodes) {
Turnout turnout = LineGraphicDataRepository.getDeviceByCode(lineId, deviceCode, Turnout.class); Turnout turnout = LineGraphicDataRepository.getDeviceByCode(lineId, deviceCode, Turnout.class);
list.add(turnout.getCommon().getId()); list.add(turnout.getCommon().getId());

View File

@ -102,7 +102,7 @@ public class TrainAtpCutAlertMonitoringTask implements AlertMonitoringTask {
MessageOrBuilder turnoutOrLogicSection = LineGraphicDataRepository.getDeviceByCode(trainInfo.getLineId(), sectionCode); MessageOrBuilder turnoutOrLogicSection = LineGraphicDataRepository.getDeviceByCode(trainInfo.getLineId(), sectionCode);
CommonInfo commonInfo = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "common", CommonInfo.class); CommonInfo commonInfo = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "common", CommonInfo.class);
String deviceCode = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "code", String.class); String deviceCode = DeviceStatusDataOperate.findFieldVal(turnoutOrLogicSection, "code", String.class);
String layoutDeviceId = commonInfo.getId(); Integer layoutDeviceId = commonInfo.getId();
if (alertManager.putAlterDevice(trainInfo.getLineId(), this.getName(), trainInfo.getGroupId())) { if (alertManager.putAlterDevice(trainInfo.getLineId(), this.getName(), trainInfo.getGroupId())) {
log.info("列车紧制ATP检测告警 线路[{}] 列车车组号[{}] 所在设备[{}]", trainInfo.getLineId(), trainInfo.getGroupId(), trainInfo.getDevName()); log.info("列车紧制ATP检测告警 线路[{}] 列车车组号[{}] 所在设备[{}]", trainInfo.getLineId(), trainInfo.getGroupId(), trainInfo.getDevName());
String alertMsg = String.format("列车[%s] 紧制导致ATP切除所在区段[%s]", trainInfo.getGroupId(), deviceCode); String alertMsg = String.format("列车[%s] 紧制导致ATP切除所在区段[%s]", trainInfo.getGroupId(), deviceCode);

View File

@ -36,17 +36,17 @@ public class AlertInfoService {
} }
public NccAlertInfo createAlert(AlertType alertType, AlertDeviceType areaDeviceType, String layoutId, MessageOrBuilder mb, String alertMsg, AlertDeviceType deviceType, boolean mockData) { public NccAlertInfo createAlert(AlertType alertType, AlertDeviceType areaDeviceType, Integer layoutId, MessageOrBuilder mb, String alertMsg, AlertDeviceType deviceType, boolean mockData) {
Integer lineId = DeviceStatusDataOperate.findFieldVal(mb, "lineId", Integer.class); Integer lineId = DeviceStatusDataOperate.findFieldVal(mb, "lineId", Integer.class);
Optional<AreaConfigVO> areaConfigOptional = this.findAreaDevice(alertType, areaDeviceType, layoutId, lineId); Optional<AreaConfigVO> areaConfigOptional = this.findAreaDevice(alertType, areaDeviceType, layoutId, lineId);
return this.createAlert2(areaConfigOptional, alertType, mb, alertMsg, layoutId, deviceType, mockData); return this.createAlert2(areaConfigOptional, alertType, mb, alertMsg, layoutId.toString(), deviceType, mockData);
} }
public NccAlertInfo createAlert2(Long areaConfigId, AlertType alertType, MessageOrBuilder mb, String alertMsg, String layoutId, AlertDeviceType deviceType, boolean mockData) { public NccAlertInfo createAlert2(Long areaConfigId, AlertType alertType, MessageOrBuilder mb, String alertMsg, Integer layoutId, AlertDeviceType deviceType, boolean mockData) {
Long timestamp = DeviceStatusDataOperate.findFieldVal(mb, "timestamp", Long.class); Long timestamp = DeviceStatusDataOperate.findFieldVal(mb, "timestamp", Long.class);
Integer lineId = DeviceStatusDataOperate.findFieldVal(mb, "lineId", Integer.class); Integer lineId = DeviceStatusDataOperate.findFieldVal(mb, "lineId", Integer.class);
LocalDateTime createTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(timestamp), ZoneId.of("+8")); LocalDateTime createTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(timestamp), ZoneId.of("+8"));
return this.createAlert2(areaConfigId, alertType, lineId, createTime, alertMsg, layoutId, deviceType, mockData); return this.createAlert2(areaConfigId, alertType, lineId, createTime, alertMsg, layoutId.toString(), deviceType, mockData);
} }
public NccAlertInfo createAlert2(Long areaConfigId, AlertType alertType, Integer lineId, LocalDateTime localDateTime, String alertMsg, String layoutId, AlertDeviceType deviceType, public NccAlertInfo createAlert2(Long areaConfigId, AlertType alertType, Integer lineId, LocalDateTime localDateTime, String alertMsg, String layoutId, AlertDeviceType deviceType,
@ -64,12 +64,12 @@ public class AlertInfoService {
} }
public Optional<AreaConfigVO> findAreaDevice(AlertType alertType, AlertDeviceType dt, String layoutId, int lineId) { public Optional<AreaConfigVO> findAreaDevice(AlertType alertType, AlertDeviceType dt, Integer layoutId, int lineId) {
List<AreaConfigVO> areaConfigList = this.findDevice2(alertType, dt, lineId); List<AreaConfigVO> areaConfigList = this.findDevice2(alertType, dt, lineId);
return this.findAreaDevice(areaConfigList, layoutId); return this.findAreaDevice(areaConfigList, layoutId);
} }
private Optional<AreaConfigVO> findAreaDevice(List<AreaConfigVO> areaConfigList, String layoutId) { private Optional<AreaConfigVO> findAreaDevice(List<AreaConfigVO> areaConfigList, Integer layoutId) {
if (CollectionUtils.isEmpty(areaConfigList)) { if (CollectionUtils.isEmpty(areaConfigList)) {
//TODO //TODO
return Optional.empty(); return Optional.empty();

View File

@ -74,7 +74,7 @@ public class AlertRecordService {
}*/ }*/
case BLUE_DISPLAY, AXLE_LED_RED, AXLE_LED_ORANGE, SWITCH_DW_LOST, SWITCH_FW_LOST, TRAIN_EB_ATP, case BLUE_DISPLAY, AXLE_LED_RED, AXLE_LED_ORANGE, SWITCH_DW_LOST, SWITCH_FW_LOST, TRAIN_EB_ATP,
SWITCH_All_LOST/*, AXLE_LED_ORANGE_MOST, AXLE_LED_RED_MOST, AXLE_LED_ORANGE_INTERLOCK_AREA, AXLE_LED_RED_INTERLOCK_AREA*/ -> { SWITCH_All_LOST/*, AXLE_LED_ORANGE_MOST, AXLE_LED_RED_MOST, AXLE_LED_ORANGE_INTERLOCK_AREA, AXLE_LED_RED_INTERLOCK_AREA*/ -> {
Optional<AreaConfigVO> areaConfigVOOptional = this.alertInfoService.findAreaDevice(alertType, AlertDeviceType.valueOf(ar.getAlertDeviceType()), deviceId, ar.getLineId()); Optional<AreaConfigVO> areaConfigVOOptional = this.alertInfoService.findAreaDevice(alertType, AlertDeviceType.valueOf(ar.getAlertDeviceType()), Integer.parseInt(deviceId), ar.getLineId());
log.info("告警数据确认区域线路[{}] 记录id[{}] ", ar.getLineId(), ar.getId()); log.info("告警数据确认区域线路[{}] 记录id[{}] ", ar.getLineId(), ar.getId());
return areaConfigVOOptional.map(AreaConfigVO::getId).orElse(null); return areaConfigVOOptional.map(AreaConfigVO::getId).orElse(null);

View File

@ -24,7 +24,7 @@ public class AreaConfigVO {
if (StringUtils.isNotEmpty(areaConfig.getData())) { if (StringUtils.isNotEmpty(areaConfig.getData())) {
List<String> tmpList = Splitter.on(StringPool.COMMA).omitEmptyStrings().splitToList(areaConfig.getData()); List<String> tmpList = Splitter.on(StringPool.COMMA).omitEmptyStrings().splitToList(areaConfig.getData());
if (CollectionUtils.isNotEmpty(tmpList)) { if (CollectionUtils.isNotEmpty(tmpList)) {
this.datas = new String[tmpList.size()]; this.datas = new Integer[tmpList.size()];
tmpList.toArray(this.datas); tmpList.toArray(this.datas);
Arrays.sort(this.datas); Arrays.sort(this.datas);
} }
@ -36,7 +36,7 @@ public class AreaConfigVO {
private Long id; private Long id;
private String[] datas; private Integer[] datas;
private String areaName; private String areaName;
private AlertDeviceType deviceType; private AlertDeviceType deviceType;
private List<String> alertTypes; private List<String> alertTypes;
@ -48,7 +48,7 @@ public class AreaConfigVO {
return this.alertTypes.contains(alertType); return this.alertTypes.contains(alertType);
} }
public int findDataIndex(String deviceId) { public int findDataIndex(Integer deviceId) {
if (ArrayUtils.isEmpty(this.datas)) { if (ArrayUtils.isEmpty(this.datas)) {
return -1; return -1;
} }