From a1f7856f0f450883c7060444a4fc2b721720a051 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期三, 15 四月 2026 11:00:05 +0800
Subject: [PATCH] 1.erp对接新增字段 2.电视机数据

---
 src/main/java/com/zy/asrs/controller/BasDevpController.java |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/BasDevpController.java b/src/main/java/com/zy/asrs/controller/BasDevpController.java
index 5182bc4..af961df 100644
--- a/src/main/java/com/zy/asrs/controller/BasDevpController.java
+++ b/src/main/java/com/zy/asrs/controller/BasDevpController.java
@@ -7,13 +7,16 @@
 import com.baomidou.mybatisplus.plugins.Page;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.entity.param.BasDevpInitParam;
+import com.zy.asrs.service.BasCrnpService;
 import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.web.BaseController;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.R;
+import com.core.exception.CoolException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -24,6 +27,8 @@
 
     @Autowired
     private BasDevpService basDevpService;
+    @Autowired
+    private BasCrnpService basCrnpService;
 
     @RequestMapping(value = "/basDevp/init/auth")
     @ManagerAuth(memo = "鍒濆鍖栫珯鐐�")
@@ -85,6 +90,7 @@
     @RequestMapping(value = "/basDevp/add/auth")
     @ManagerAuth(memo = "绔欑偣娣诲姞")
     public R add(BasDevp basDevp) {
+        normalizeInboundPriority(basDevp, null);
         basDevp.setModiUser(getUserId());
         basDevp.setModiTime(new Date());
         basDevp.setAppeUser(getUserId());
@@ -99,6 +105,11 @@
         if (Cools.isEmpty(basDevp) || null==basDevp.getDevNo()){
             return R.error();
         }
+        BasDevp existing = basDevpService.selectById(basDevp.getDevNo());
+        if (existing == null) {
+            return R.error("绔欑偣涓嶅瓨鍦�");
+        }
+        normalizeInboundPriority(basDevp, existing);
         basDevp.setModiUser(getUserId());
         basDevp.setModiTime(new Date());
         basDevpService.updateById(basDevp);
@@ -155,4 +166,65 @@
         return R.ok();
     }
 
+    private void normalizeInboundPriority(BasDevp basDevp, BasDevp existing) {
+        if (basDevp == null) {
+            return;
+        }
+        String firstCsv = resolveCsvValue(basDevp.getInFirstCrnCsv(), existing == null ? null : existing.getInFirstCrnCsv());
+        String secondCsv = resolveCsvValue(basDevp.getInSecondCrnCsv(), existing == null ? null : existing.getInSecondCrnCsv());
+
+        List<Integer> firstCrnNos = parseCrnPool("绗竴浼樺厛姹�", firstCsv);
+        List<Integer> secondCrnNos = parseCrnPool("绗簩浼樺厛姹�", secondCsv);
+        Set<Integer> duplicateCrnNos = new LinkedHashSet<>(firstCrnNos);
+        duplicateCrnNos.retainAll(secondCrnNos);
+        if (!duplicateCrnNos.isEmpty()) {
+            throw new CoolException("绗竴浼樺厛姹犲拰绗簩浼樺厛姹犱笉鑳介噸澶嶉厤缃悓涓�鍙板爢鍨涙満锛�" + duplicateCrnNos);
+        }
+
+        basDevp.setInFirstCrnCsv(Utils.normalizeCrnCsv(firstCrnNos));
+        basDevp.setInSecondCrnCsv(Utils.normalizeCrnCsv(secondCrnNos));
+
+        if (existing == null) {
+            basDevp.setInFirstCrnCurrentNo(null);
+            basDevp.setInSecondCrnCurrentNo(null);
+            return;
+        }
+
+        basDevp.setInFirstCrnCurrentNo(resolveCurrentNo(existing.getInFirstCrnCurrentNo(), firstCrnNos));
+        basDevp.setInSecondCrnCurrentNo(resolveCurrentNo(existing.getInSecondCrnCurrentNo(), secondCrnNos));
+    }
+
+    private String resolveCsvValue(String incoming, String existing) {
+        if (incoming == null) {
+            return existing;
+        }
+        return incoming;
+    }
+
+    private List<Integer> parseCrnPool(String label, String csv) {
+        List<Integer> crnNos;
+        try {
+            crnNos = Utils.parseCrnNos(csv);
+        } catch (CoolException e) {
+            throw new CoolException(label + e.getMessage());
+        }
+        List<Integer> distinctCrnNos = Utils.distinctCrnNos(crnNos);
+        if (crnNos.size() != distinctCrnNos.size()) {
+            throw new CoolException(label + "瀛樺湪閲嶅鍫嗗灈鏈哄彿");
+        }
+        for (Integer crnNo : distinctCrnNos) {
+            if (basCrnpService.selectById(crnNo) == null) {
+                throw new CoolException(label + "鍖呭惈涓嶅瓨鍦ㄧ殑鍫嗗灈鏈哄彿锛�" + crnNo);
+            }
+        }
+        return distinctCrnNos;
+    }
+
+    private Integer resolveCurrentNo(Integer currentNo, List<Integer> crnNos) {
+        if (currentNo == null || Cools.isEmpty(crnNos) || !crnNos.contains(currentNo)) {
+            return null;
+        }
+        return currentNo;
+    }
+
 }

--
Gitblit v1.9.1