数据处理过滤不需要的集中站
This commit is contained in:
parent
9ad40d520b
commit
f7df06b607
@ -37,12 +37,6 @@ public class OccMessageManage implements ApplicationRunner {
|
|||||||
client.send(md, isRealTime);
|
client.send(md, isRealTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void checkWithConnection() {
|
|
||||||
// Map<Integer, Boolean> lineConnStatus = Maps.newHashMap();
|
|
||||||
// clientMap.forEach((k, v) -> {
|
|
||||||
//
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void registerClient(XianOccMessagingClient client) {
|
public void registerClient(XianOccMessagingClient client) {
|
||||||
clientMap.put(client.lineId, client);
|
clientMap.put(client.lineId, client);
|
||||||
|
@ -45,11 +45,8 @@ public class OccTcpClientConnection {
|
|||||||
this.channel.writeAndFlush(List.of(messageData));
|
this.channel.writeAndFlush(List.of(messageData));
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Getter
|
public OccTcpClientConnection(XianOccMessagingClient client, String host, int port, boolean collectorData) {
|
||||||
// private final boolean realConnection;
|
|
||||||
|
|
||||||
public OccTcpClientConnection(XianOccMessagingClient client, String host, int port, boolean collectorData/*, boolean realConnections*/) {
|
|
||||||
// this.realConnection = realConnections;
|
|
||||||
this.client = client;
|
this.client = client;
|
||||||
this.host = host;
|
this.host = host;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
|
@ -39,8 +39,8 @@ public class XianOccMessagingClient {
|
|||||||
this.lineId = lineId;
|
this.lineId = lineId;
|
||||||
|
|
||||||
// 创建实时和非实时消息连接
|
// 创建实时和非实时消息连接
|
||||||
this.rtConnection = new OccTcpClientConnection(this, host, realPort, collectorData/*, true*/);
|
this.rtConnection = new OccTcpClientConnection(this, host, realPort, collectorData);
|
||||||
this.nrtConnection = new OccTcpClientConnection(this, host, unRealPort, false/*, false*/);
|
this.nrtConnection = new OccTcpClientConnection(this, host, unRealPort, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConnectionInfo getRTClientConnectionInfo() {
|
public ConnectionInfo getRTClientConnectionInfo() {
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
package club.joylink.xiannccda.ats.message.collect.convertor;
|
||||||
|
|
||||||
|
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<Integer, String> 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<String> rtuList = Splitter.on(",").splitToList(rtuIds);
|
||||||
|
if (rtuList.contains(rtuId.toString())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -5,6 +5,8 @@ import club.joylink.xiannccda.ats.message.MessageResponse;
|
|||||||
import club.joylink.xiannccda.ats.message.collect.DeviceDataRepository;
|
import club.joylink.xiannccda.ats.message.collect.DeviceDataRepository;
|
||||||
import club.joylink.xiannccda.ats.message.collect.DeviceDataRepository.DataTypeEnum;
|
import club.joylink.xiannccda.ats.message.collect.DeviceDataRepository.DataTypeEnum;
|
||||||
import club.joylink.xiannccda.ats.message.collect.DeviceStatusConvertor;
|
import club.joylink.xiannccda.ats.message.collect.DeviceStatusConvertor;
|
||||||
|
import club.joylink.xiannccda.ats.message.collect.DeviceStatusDataOperate;
|
||||||
|
import club.joylink.xiannccda.constants.SystemContext;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.google.protobuf.GeneratedMessageV3;
|
import com.google.protobuf.GeneratedMessageV3;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -36,7 +38,13 @@ public abstract class DefaultConvertor extends DeviceStatusConvertor {
|
|||||||
public void run(List<MessageData> messageDataList) {
|
public void run(List<MessageData> messageDataList) {
|
||||||
Map<Short, List<MessageResponse>> lineMapper = this.groupByLineId(messageDataList);
|
Map<Short, List<MessageResponse>> lineMapper = this.groupByLineId(messageDataList);
|
||||||
lineMapper.forEach((k, v) -> {
|
lineMapper.forEach((k, v) -> {
|
||||||
List<GeneratedMessageV3.Builder> builders = v.stream().map(MessageResponse::generateProto).flatMap(Collection::stream).collect(Collectors.toList());
|
List<GeneratedMessageV3.Builder> builders = v.stream().map(MessageResponse::generateProto)
|
||||||
|
.flatMap(Collection::stream).filter(d -> {
|
||||||
|
ConvertorUtil cu = SystemContext.getAppContext().getBean(ConvertorUtil.class);
|
||||||
|
Integer lineId = DeviceStatusDataOperate.findFieldVal(d, "lineId", Integer.class);
|
||||||
|
Integer rtuId = DeviceStatusDataOperate.findFieldVal(d, "rtuId", Integer.class);
|
||||||
|
return cu.notMatchHandle(lineId, rtuId);
|
||||||
|
}).collect(Collectors.toList());
|
||||||
this.eventHandle(builders);
|
this.eventHandle(builders);
|
||||||
DeviceDataRepository.add(k.toString(), builders, this.dataType());
|
DeviceDataRepository.add(k.toString(), builders, this.dataType());
|
||||||
});
|
});
|
||||||
|
@ -12,14 +12,19 @@ import club.joylink.xiannccda.entity.DeviceAreaConfig;
|
|||||||
import club.joylink.xiannccda.service.AlertInfoService;
|
import club.joylink.xiannccda.service.AlertInfoService;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.checkerframework.checker.units.qual.A;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@ -86,8 +91,9 @@ public class BlueAlertListener implements AlertSourceEventListener<BlueDisplayAl
|
|||||||
private static synchronized Station findAllStation(int lineId, String rtuId) {
|
private static synchronized Station findAllStation(int lineId, String rtuId) {
|
||||||
if (CollectionUtils.isEmpty(CONTROL_STATION_MAPER)) {
|
if (CollectionUtils.isEmpty(CONTROL_STATION_MAPER)) {
|
||||||
Stream<Station> stream = LineGraphicDataRepository.getDevices(lineId, Station.class);
|
Stream<Station> stream = LineGraphicDataRepository.getDevices(lineId, Station.class);
|
||||||
List<Station> stationList = stream.filter(Station::getConcentrationStations).toList();
|
Collection<Station> stationList = stream.filter(Station::getConcentrationStations)
|
||||||
CONTROL_STATION_MAPER.put(lineId, stationList);
|
.collect(Collectors.toMap(d -> d.getCommon().getId(), Function.identity(), (o1, o2) -> o2)).values();
|
||||||
|
CONTROL_STATION_MAPER.put(lineId, new ArrayList<>(stationList));
|
||||||
}
|
}
|
||||||
List<Station> stationList = CONTROL_STATION_MAPER.get(lineId);
|
List<Station> stationList = CONTROL_STATION_MAPER.get(lineId);
|
||||||
if (CollectionUtils.isEmpty(stationList)) {
|
if (CollectionUtils.isEmpty(stationList)) {
|
||||||
|
@ -32,7 +32,6 @@ public class TrainModeAlertListener implements AlertSourceEventListener<TrainAle
|
|||||||
TrainInfo.Builder trainInfo = event.getSource();
|
TrainInfo.Builder trainInfo = event.getSource();
|
||||||
TrainMode trainMode = trainInfo.getMode();
|
TrainMode trainMode = trainInfo.getMode();
|
||||||
if (trainMode.getIpModeTrainAtpCut() && trainMode.getIpModeTrainEbAlarm()) {
|
if (trainMode.getIpModeTrainAtpCut() && trainMode.getIpModeTrainEbAlarm()) {
|
||||||
|
|
||||||
String sectionCode = LineGraphicDataRepository.findSectionFromLogicCode(trainInfo.getLineId(), trainInfo.getDevName());
|
String sectionCode = LineGraphicDataRepository.findSectionFromLogicCode(trainInfo.getLineId(), trainInfo.getDevName());
|
||||||
if (StringUtils.isEmpty(sectionCode)) {
|
if (StringUtils.isEmpty(sectionCode)) {
|
||||||
return;
|
return;
|
||||||
|
@ -42,3 +42,5 @@ jwt:
|
|||||||
key:
|
key:
|
||||||
pub: classpath:app.pub
|
pub: classpath:app.pub
|
||||||
prv: classpath:app.key
|
prv: classpath:app.key
|
||||||
|
|
||||||
|
occ-not-handle-rtu: '{3: "81,82"}'
|
||||||
|
@ -23,7 +23,7 @@ public class DeviceStatusCheckTest {
|
|||||||
@Test
|
@Test
|
||||||
public void RtuTest() {
|
public void RtuTest() {
|
||||||
DeviceStatusProto.Rtu.Builder rtu = DeviceStatusConvertor.convert(DeviceStatus.RTU.class, 1);
|
DeviceStatusProto.Rtu.Builder rtu = DeviceStatusConvertor.convert(DeviceStatus.RTU.class, 1);
|
||||||
DeviceStatusProto.Rtu.Builder rtu2 = DeviceStatusConvertor.convert(DeviceStatus.RTU.class, 2);
|
DeviceStatusProto.Rtu.Builder rtu2 = DeviceStatusConvertor.convert(DeviceStatus.RTU.class, 32768);
|
||||||
System.out.println(rtu);
|
System.out.println(rtu);
|
||||||
System.out.println("--------------------------");
|
System.out.println("--------------------------");
|
||||||
System.out.println(rtu2);
|
System.out.println(rtu2);
|
||||||
|
@ -75,15 +75,17 @@ public class CollectorData {
|
|||||||
|
|
||||||
|
|
||||||
private Table<DeviceType, String, List<String>> loadData() {
|
private Table<DeviceType, String, List<String>> loadData() {
|
||||||
|
this.nccMockDataService.reset(9999999);
|
||||||
LambdaQueryWrapper<NccMockData> queryWrapper = Wrappers.<NccMockData>lambdaQuery();
|
LambdaQueryWrapper<NccMockData> queryWrapper = Wrappers.<NccMockData>lambdaQuery();
|
||||||
queryWrapper.eq(NccMockData::getMsgId, "DEVICE_STATUS_BITMAP");
|
queryWrapper.eq(NccMockData::getMsgId, "DEVICE_STATUS_BITMAP");
|
||||||
|
Set<String> rtuSets = new HashSet<>();
|
||||||
List<MessageResponse> datas = this.nccMockDataService.loadALLData(queryWrapper);
|
List<MessageResponse> datas = this.nccMockDataService.loadALLData(queryWrapper);
|
||||||
List<DeviceStatusBitmapResponse> bitmapResponses = datas.stream().map(d -> (DeviceStatusBitmapResponse) d).collect(Collectors.toList());
|
List<DeviceStatusBitmapResponse> bitmapResponses = datas.stream().map(d -> (DeviceStatusBitmapResponse) d).collect(Collectors.toList());
|
||||||
Table<DeviceType, String, List<String>> dataTable = HashBasedTable.create();
|
Table<DeviceType, String, List<String>> dataTable = HashBasedTable.create();
|
||||||
List<String> dd = Lists.newArrayList();
|
List<String> dd = Lists.newArrayList();
|
||||||
for (DeviceStatusBitmapResponse bitmapRespons : bitmapResponses) {
|
for (DeviceStatusBitmapResponse bitmapRespons : bitmapResponses) {
|
||||||
String rtuId = bitmapRespons.getRtuId().toString();
|
String rtuId = bitmapRespons.getRtuId().toString();
|
||||||
|
rtuSets.add(rtuId);
|
||||||
for (DeviceTypeEntity deviceTypeEntity : bitmapRespons.getEntityList()) {
|
for (DeviceTypeEntity deviceTypeEntity : bitmapRespons.getEntityList()) {
|
||||||
DeviceType dt = deviceTypeEntity.getType();
|
DeviceType dt = deviceTypeEntity.getType();
|
||||||
if (!dd.contains(dt.name())) {
|
if (!dd.contains(dt.name())) {
|
||||||
@ -104,6 +106,7 @@ public class CollectorData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
System.out.println(rtuSets);
|
||||||
return dataTable;
|
return dataTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user