From fd5ff7ce41f402720c79546617842bbf679e576e Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期三, 21 十月 2026 16:32:55 +0800
Subject: [PATCH] fix(销售台账/产品维护): 图号与销售合同号长度校验、导入提示优化

---
 src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
index dd0e7ab..0f2e47a 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -58,9 +58,19 @@
     public int addOrEditProductModel(ProductModelDto productModelDto) {
         String model = StringUtils.trim(productModelDto.getModel());
         String productCode = StringUtils.trim(productModelDto.getProductCode());
+        String drawingNo = StringUtils.trim(productModelDto.getDrawingNo());
         productModelDto.setModel(model);
         productModelDto.setProductCode(productCode);
+        productModelDto.setDrawingNo(drawingNo);
+        // 鍥惧彿蹇呭~
+        if (StringUtils.isEmpty(drawingNo)) {
+            throw new ServiceException("鍥惧彿涓嶈兘涓虹┖");
+        }
+        if (drawingNo.length() > 255) {
+            throw new ServiceException("鍥惧彿闀垮害涓嶈兘瓒呰繃255涓瓧绗�");
+        }
         checkModelAndProductCodeUnique(model, productCode, productModelDto.getId());
+        checkDrawingNoUnique(drawingNo, productModelDto.getId());
 
         if (productModelDto.getId() == null) {
             ProductModel productModel = new ProductModel();
@@ -68,6 +78,23 @@
             return productModelMapper.insert(productModel);
         } else {
             return productModelMapper.updateById(productModelDto);
+        }
+    }
+
+    /**
+     * 鍥惧彿鍞竴鏍¢獙锛堝叏灞�锛岀紪杈戞椂鎺掗櫎鑷韩锛�
+     */
+    private void checkDrawingNoUnique(String drawingNo, Long currentId) {
+        if (StringUtils.isEmpty(drawingNo)) {
+            return;
+        }
+        LambdaQueryWrapper<ProductModel> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProductModel::getDrawingNo, drawingNo)
+                .ne(currentId != null, ProductModel::getId, currentId)
+                .last("limit 1");
+        ProductModel duplicateProductModel = productModelMapper.selectOne(queryWrapper);
+        if (duplicateProductModel != null) {
+            throw new ServiceException("鍥惧彿" + drawingNo + "宸茬粡瀛樺湪");
         }
     }
 
@@ -200,10 +227,20 @@
                     code = generateUniqueCode(generatedCodes);
                 }
 
+                // 鍥惧彿锛氬鍏ユ椂鍙�夛紝濉啓鍒欐牎楠屽敮涓�
+                String drawingNo = trimToNull(row.getDrawingNo());
+                if (drawingNo != null) {
+                    if (drawingNo.length() > 255) {
+                        throw new ServiceException("宸ヤ綔绨裤��" + sheetName + "銆戠 " + resolveRowNum(row, i) + " 琛岋細鍥惧彿闀垮害涓嶈兘瓒呰繃255涓瓧绗�");
+                    }
+                    checkDrawingNoUnique(drawingNo, null);
+                }
+
                 ProductModel productModel = new ProductModel();
                 productModel.setProductId(leafId);
                 productModel.setProductCode(code);
                 productModel.setModel(model);
+                productModel.setDrawingNo(drawingNo);
                 productModel.setUnit(trimToNull(row.getUnit()));
                 productModelMapper.insert(productModel);
                 successCount++;

--
Gitblit v1.9.3