From 2b3be8636f2b8247b42719c63d5745f3c6bf4292 Mon Sep 17 00:00:00 2001 From: xiaoyang <17515057146@163.com> Date: Thu, 16 Apr 2026 19:49:56 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=8D=95=E4=BD=93=E7=94=B5=E6=B1=A0=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmsDeviceSettingServiceImpl.java | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) 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 86fa049..d51d52d 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 @@ -1144,6 +1144,16 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService .collect(Collectors.toCollection(LinkedHashSet::new)); List scopeBatteryList = getScopeBatteryList(scope.allSiteDevices, scopeClusterIdSet); result.setExistingBatteryCount(scopeBatteryList.size()); + Set affectedBatteryIds = scopeBatteryList.stream() + .map(EmsDevicesSetting::getDeviceId) + .filter(StringUtils::isNotBlank) + .map(String::trim) + .collect(Collectors.toSet()); + + if (SINGLE_BATTERY_SCOPE_CLUSTER.equals(scope.scopeType) && !scopeBatteryList.isEmpty()) { + deleteScopeSingleBatteries(scope.normalizedSiteId, scopeBatteryList, deviceMap); + scopeBatteryList = new ArrayList<>(); + } int targetCount = request.getTargetCount(); if (targetCount > scopeBatteryList.size()) { @@ -1219,11 +1229,11 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService )); List insertList = new ArrayList<>(); - Set affectedBatteryIds = scopeBatteryList.stream() + affectedBatteryIds.addAll(scopeBatteryList.stream() .map(EmsDevicesSetting::getDeviceId) .filter(StringUtils::isNotBlank) .map(String::trim) - .collect(Collectors.toSet()); + .collect(Collectors.toSet())); for (SingleBatteryFieldInitTask task : taskList) { boolean pointExists = pointConfigMap.containsKey(task.pointId); if (pointExists) { @@ -1330,6 +1340,31 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService .collect(Collectors.toCollection(ArrayList::new)); } + private void deleteScopeSingleBatteries(String siteId, + List batteryList, + Map deviceMap) { + if (CollectionUtils.isEmpty(batteryList)) { + return; + } + Long[] ids = batteryList.stream() + .map(EmsDevicesSetting::getId) + .filter(Objects::nonNull) + .toArray(Long[]::new); + for (EmsDevicesSetting battery : batteryList) { + if (battery == null || StringUtils.isBlank(battery.getDeviceId())) { + continue; + } + String batteryId = StringUtils.trim(battery.getDeviceId()); + emsSiteMonitorPointMatchMapper.deleteBySiteIdAndDeviceId(siteId, batteryId); + if (deviceMap != null) { + deviceMap.remove(batteryId); + } + } + if (ids.length > 0) { + emsDevicesMapper.deleteEmsDevicesSettingByIds(ids); + } + } + private List createMissingSingleBatteries(String siteId, String clusterDeviceId, int appendCount,