From e55cdc650457badf887e18b2bea66dca7c9a01f2 Mon Sep 17 00:00:00 2001 From: dashixiong Date: Sun, 25 Jan 2026 18:47:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DeviceDataProcessServiceImpl.java | 10 ++-- .../impl/EmsDeviceSettingServiceImpl.java | 52 +++++++++++++------ .../service/impl/SingleSiteServiceImpl.java | 9 ++-- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java index f891950..7c8eaac 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java @@ -405,7 +405,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i //TODO 临时解决上送数据为浮点的问题 String status = dataStack.getWorkStatus(); - int result = 0; + int result = 5; if (status != null && !status.trim().isEmpty()) { // 1.0 -> 1, 2.0 -> 2 @@ -724,6 +724,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i //单体电池 Map> records = processData(JSON.parseObject(dataJson, new TypeReference>() { })); + log.info("站点:{},单体电池数据:{}", siteId, records); List list = new ArrayList<>(); List dailyList = new ArrayList<>(); @@ -739,6 +740,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i String batteryDeviceId = recordId + deviceId; // 点位匹配数据 List pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(siteId, batteryDeviceId, DeviceMatchTable.BATTERY.getCode()); + if (CollectionUtils.isEmpty(pointMatchList)) { pointMatchList = devicePointMatchDataProcessor.getDeviceDefaultPointMatch(siteId, DeviceMatchTable.BATTERY.getCode()); } else { @@ -748,13 +750,15 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i } fields = newFields; } + if (CollectionUtils.isEmpty(pointMatchList)) { log.info("未找到匹配的点位数据,无法处理单体电池数据,siteId: " + siteId + ",deviceId: " + batteryDeviceId); return; } EmsBatteryData batteryData = new EmsBatteryData(); - batteryData.setDeviceId(recordId); + //TODO 单体电池 deviceid 拼接簇的 deviceid + batteryData.setDeviceId(recordId+deviceId); batteryData.setBatteryCellId(recordId); saveDeviceData(pointMatchList, fields, batteryData); @@ -997,7 +1001,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i //TODO 临时解决上送数据为浮点的问题 start log.info("临时解决上送数据为浮点的问题"); String status = data.getWorkStatus(); - int result = 0; + int result = 5; if (status != null && !status.trim().isEmpty()) { // 1.0 -> 1, 2.0 -> 2 result = (int) Double.parseDouble(status.trim()); diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsDeviceSettingServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsDeviceSettingServiceImpl.java index 23a3eee..cb4a1b3 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsDeviceSettingServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsDeviceSettingServiceImpl.java @@ -192,14 +192,21 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService String parentDeviceId = request.getParentId(); String ipAddress = request.getIpAddress(); Integer ipPort = request.getIpPort(); + log.info("处理点位清单,deviceCategory:"+ deviceCategory); + log.info("处理点位清单,deviceId:"+ deviceId); + log.info("处理点位清单,parentDeviceId:"+ parentDeviceId); + Integer isAlarm = request.getIsAlarm() == null ? PointType.NO.getCode() : request.getIsAlarm(); // 电动所的电池簇特殊处理-来源pcs+bmsd if (siteId.equals(DDS_SITE_ID) && DeviceCategory.CLUSTER.getCode().equals(deviceCategory)) { response = specialDealWithDDSCluster(siteId,deviceId,deviceCategory,dataPointName,dataPoint,ipAddress,ipPort,isAlarm); } else if (DeviceCategory.BATTERY.getCode().equals(deviceCategory)) { + log.info("单体电池处理,parentdeviceId:"+ parentDeviceId); response = specialDealWithBattery(siteId,deviceId,deviceCategory, dataPointName,dataPoint,parentDeviceId,ipAddress,ipPort,isAlarm); } else { + log.info("处理点位清单,ELSE"); + response = emsPointMatchMapper.getSingleSiteDevicePoints( siteId,deviceId,deviceCategory,dataPointName,dataPoint,ipAddress,ipPort,isAlarm); String redisDataKey = RedisKeyConstants.ORIGINAL_MQTT_DATA; @@ -301,18 +308,20 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService if (PointType.YES.getCode().equals(isAlarm)) { redisDataKey = RedisKeyConstants.ORIGINAL_MQTT_DATA_ALARM; } - if (SiteEnum.DDS.getCode().equals(siteId)) { - // dds单体电池数据来源于BMSD - EmsDevicesSetting clusterDevice = emsDevicesMapper.getDeviceBySiteAndDeviceId(parentDeviceId,siteId); - String bmsdDeviceId = clusterDevice == null ? "" :clusterDevice.getParentId(); - if (StringUtils.isEmpty(bmsdDeviceId)) { - return response; - } - jsonObject = redisCache.getCacheObject(redisDataKey + siteId + "_" + bmsdDeviceId); - } else if (SiteEnum.FX.getCode().equals(siteId)) { + //TODO 单体电池数据统一有 BMSC 提供 +// if (SiteEnum.DDS.getCode().equals(siteId)) { +// // dds单体电池数据来源于BMSD +// EmsDevicesSetting clusterDevice = emsDevicesMapper.getDeviceBySiteAndDeviceId(parentDeviceId,siteId); +// String bmsdDeviceId = clusterDevice == null ? "" :clusterDevice.getParentId(); +// if (StringUtils.isEmpty(bmsdDeviceId)) { +// return response; +// } +// jsonObject = redisCache.getCacheObject(redisDataKey + siteId + "_" + bmsdDeviceId); +// } else if (SiteEnum.FX.getCode().equals(siteId)) { // fx单体电池数据来源于父类簇BMSC - jsonObject = redisCache.getCacheObject(redisDataKey + siteId + "_" + parentDeviceId); - } + jsonObject = redisCache.getCacheObject(redisDataKey + siteId + "_" + parentDeviceId); +// } + log.info("点位 key:"+redisDataKey+ ",点位数据:"+jsonObject); if (jsonObject != null) { // 填充数据 fillBatteryData(jsonObject,siteId, deviceId, response); @@ -325,19 +334,28 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService if (StringUtils.isEmpty(jsonData)) { return; } + //TODO deviceId 获取前三位 + String xdeviceId = ""; + if (deviceId != null && deviceId.length()>3) { + xdeviceId = deviceId.substring(0, 3); + } Map obj = JSON.parseObject(jsonData, new TypeReference>() { }); + log.info("单体电池的点位数据组合 obj:"+JSON.toJSONString(obj)); Long updateTime = Long.valueOf(jsonObject.get("timestamp").toString()); Date dataUpdateTime = DateUtils.convertUpdateTime(updateTime); // 遍历点位数据,设最新值 for (PointQueryResponse pointInfo : response) { String dataKey = ""; - if (SiteEnum.DDS.getCode().equals(siteId)) { - dataKey = "DTDC" + deviceId + pointInfo.getDataPoint(); - } else if (SiteEnum.FX.getCode().equals(siteId)) { - dataKey = pointInfo.getDataPoint() + deviceId; - } - pointInfo.setPointValue(obj.get(dataKey)); + //TODO 统一处理单体电池逻辑 +// if (SiteEnum.DDS.getCode().equals(siteId)) { +// dataKey = "DTDC" + xdeviceId + pointInfo.getDataPoint(); +// log.info("单体电池的点位数据组合 dataKey:"+dataKey); +// } else if (SiteEnum.FX.getCode().equals(siteId)) { +// dataKey = pointInfo.getDataPoint(); + log.info("单体电池的点位数据组合 dataKey:"+dataKey); +// } + pointInfo.setPointValue(obj.get(pointInfo.getDataPoint())); pointInfo.setUpdateTime(dataUpdateTime); } } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java index 4e797bd..ccb3a77 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java @@ -711,11 +711,12 @@ public class SingleSiteServiceImpl implements ISingleSiteService { } } } + //TODO 临时删除排序 // 排序 - List sortedList = batteryDataStatsListVo.stream() - .sorted((u1, u2) -> Integer.parseInt(u1.getDeviceId()) - Integer.parseInt(u2.getDeviceId())) - .collect(Collectors.toList()); - return sortedList; +// List sortedList = batteryDataStatsListVo.stream() +// .sorted((u1, u2) -> Integer.parseInt(u1.getClusterDeviceId()) - Integer.parseInt(u2.getClusterDeviceId())) +// .collect(Collectors.toList()); + return batteryDataStatsListVo; } // 获取单站的最大最小温度和电压单体数据id