Xiajijian
2025-12-25 579f3590f60df0e26c3400394222b26d3d7cc87c
1. 新增盒子编码,检查是否有重复的盒子编码。
3 files modified
51 ■■■■■ changed files
ard-work/src/main/java/com/ard/work/service/IArdServerInfoService.java 2 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java 25 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/service/impl/ArdServerInfoServiceImpl.java 24 ●●●●● patch | view | raw | blame | history
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);
    /**
     * 新增服务器管理
     * 
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) {
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);
    }