From 579f3590f60df0e26c3400394222b26d3d7cc87c Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Thu, 25 Dec 2025 15:45:22 +0800
Subject: [PATCH] 1. 新增盒子编码,检查是否有重复的盒子编码。

---
 ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java  |   25 +++++++++++++++++++++++++
 ard-work/src/main/java/com/ard/work/service/impl/ArdServerInfoServiceImpl.java |   24 ------------------------
 ard-work/src/main/java/com/ard/work/service/IArdServerInfoService.java         |    2 --
 3 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/ard-work/src/main/java/com/ard/work/service/IArdServerInfoService.java b/ard-work/src/main/java/com/ard/work/service/IArdServerInfoService.java
index 2e25e77..78b1125 100644
--- a/ard-work/src/main/java/com/ard/work/service/IArdServerInfoService.java
+++ b/ard-work/src/main/java/com/ard/work/service/IArdServerInfoService.java
@@ -28,8 +28,6 @@
      */
     public List<ArdServerInfo> selectArdServerInfoList(ArdServerInfo ardServerInfo);
 
-    public List<ArdServerInfo> selectArdServerInfoListNo(ArdServerInfo ardServerInfo);
-
     /**
      * 新增服务器管理
      * 
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
index 053cfa6..9d6b7f9 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
@@ -176,6 +176,8 @@
         try {
             // 1. 检查已存在的无人机盒子
             List<ArdDroneInfo> existingDrones = getExistingDrones(boxSn);
+            // 1.1 新增时不能添加重复的
+            checkDuplicateBox(existingDrones, boxSn);
             // 2. 授权数量验证
             validateAuthorization(existingDrones.size(), boxSn.length);
             // 3. 获取并组装新的无人机信息
@@ -207,6 +209,29 @@
     }
 
     /**
+     * 检查是否有重复的盒子编码
+     */
+    private void checkDuplicateBox(List<ArdDroneInfo> existingDrone,String[] boxSn) {
+        Set<String> existingBoxSnSet = new HashSet<>();
+        for (ArdDroneInfo droneInfo : existingDrone) {
+            existingBoxSnSet.add(droneInfo.getBoxSn());
+        }
+
+        // 检查是否有重复的盒子编码
+        List<String> duplicateBoxSns = new ArrayList<>();
+        for (String sn : boxSn) {
+            if (existingBoxSnSet.contains(sn)) {
+                duplicateBoxSns.add(sn);
+            }
+        }
+
+        if (!duplicateBoxSns.isEmpty()) {
+            log.warn("存在重复的无人机盒子编码: {}", duplicateBoxSns);
+            throw new ServiceException("以下无人机盒子编码已存在: " + String.join(", ", duplicateBoxSns));
+        }
+    }
+
+    /**
      * 验证授权数量
      */
     private void validateAuthorization(int existingCount, int newCount) {
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdServerInfoServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdServerInfoServiceImpl.java
index ad2e534..025eee6 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdServerInfoServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdServerInfoServiceImpl.java
@@ -5,14 +5,11 @@
 import com.ard.work.component.forest.TyClient;
 import com.ard.work.component.netty.TyTcpClientManager;
 import com.ard.work.domain.dto.TokenDTO;
-import com.ard.work.domain.entity.ArdDroneInfo;
 import com.ard.work.domain.entity.ArdServerInfo;
 import com.ard.work.domain.receiver.AccessTokenReceiver;
 import com.ard.work.domain.receiver.TyHttpCommonReceiver;
-import com.ard.work.mapper.ArdDroneInfoMapper;
 import com.ard.work.mapper.ArdServerInfoMapper;
 import com.ard.work.service.IArdServerInfoService;
-import com.dtflys.forest.exceptions.ForestRuntimeException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.util.DigestUtils;
@@ -40,9 +37,6 @@
     @Resource
     private TyTcpClientManager tyTcpClientManager;
 
-    @Resource
-    private ArdDroneInfoMapper ArdDroneInfoMapper;
-
     /**
      * 查询服务器管理
      *
@@ -63,24 +57,6 @@
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
     public List<ArdServerInfo> selectArdServerInfoList(ArdServerInfo ardServerInfo) {
-        return ardServerInfoMapper.selectArdServerInfoList(ardServerInfo);
-    }
-
-    @Override
-    @DataScope(deptAlias = "d", userAlias = "u")
-    public List<ArdServerInfo> selectArdServerInfoListNo(ArdServerInfo ardServerInfo) {
-
-//        List<ArdDroneInfo> ardDroneInfos = ArdDroneInfoMapper.selectArdDroneList(new ArdDroneInfo());
-//        for (ArdDroneInfo ardDroneInfo : ardDroneInfos) {
-//            ardDroneInfo.getBoxSn();
-//        }
-//        List<ArdServerInfo> servers = ardServerInfoMapper.selectArdServerInfoList(ardServerInfo);
-//        for (ArdServerInfo server : servers) {
-//            for (ArdDroneInfo ardDroneInfo : server.getArdDroneInfoList()) {
-//                ardDroneInfo.getBoxSn();
-//            }
-//        }
-
         return ardServerInfoMapper.selectArdServerInfoList(ardServerInfo);
     }
 

--
Gitblit v1.9.3