From 0a03503976b73180749a4953a100240078f5d3e4 Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Mon, 12 Jan 2026 14:58:11 +0800
Subject: [PATCH] 设备关联从场景转到区域

---
 drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwDefenseSceneServiceImpl.java |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwDefenseSceneServiceImpl.java b/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwDefenseSceneServiceImpl.java
index 477d5a6..c01048d 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwDefenseSceneServiceImpl.java
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwDefenseSceneServiceImpl.java
@@ -33,7 +33,6 @@
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseServiceImpl;
-import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
@@ -71,13 +70,13 @@
 		}
 
 		Set<Long> areaIdSet = new HashSet<>();
-		Set<Long> deviceIdSet = new HashSet<>();
 		for (FwDefenseSceneVO record : records) {
 			areaIdSet.addAll(parseIdList(record.getAreaDivideIds()));
-			deviceIdSet.addAll(parseIdList(record.getDeviceIds()));
 		}
 
 		Map<Long, BigDecimal> areaSizeMap = new HashMap<>();
+		Map<Long, List<Long>> areaDeviceMap = new HashMap<>();
+		Set<Long> deviceIdSet = new HashSet<>();
 		if (!areaIdSet.isEmpty()) {
 			List<FwAreaDivideEntity> areaList = fwAreaDivideService.listByIds(areaIdSet);
 			for (FwAreaDivideEntity area : areaList) {
@@ -85,6 +84,9 @@
 					continue;
 				}
 				areaSizeMap.put(area.getId(), area.getAreaSize());
+				List<Long> areaDeviceIds = parseIdList(area.getDeviceIds());
+				areaDeviceMap.put(area.getId(), areaDeviceIds);
+				deviceIdSet.addAll(areaDeviceIds);
 			}
 		}
 
@@ -104,7 +106,13 @@
 			record.setAreaCount(areaIds.size());
 			record.setDefenseArea(sumDefenseArea(areaIds, areaSizeMap));
 
-			List<Long> deviceIds = parseIdList(record.getDeviceIds());
+			Set<Long> deviceIds = new HashSet<>();
+			for (Long areaId : areaIds) {
+				List<Long> areaDeviceIds = areaDeviceMap.get(areaId);
+				if (areaDeviceIds != null) {
+					deviceIds.addAll(areaDeviceIds);
+				}
+			}
 			int detectCount = 0;
 			int counterCount = 0;
 			for (Long deviceId : deviceIds) {

--
Gitblit v1.9.3