src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -58,9 +58,16 @@
    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("图号不能为空");
        }
        checkModelAndProductCodeUnique(model, productCode, productModelDto.getId());
        checkDrawingNoUnique(drawingNo, productModelDto.getId());
        if (productModelDto.getId() == null) {
            ProductModel productModel = new ProductModel();
@@ -68,6 +75,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 +224,17 @@
                    code = generateUniqueCode(generatedCodes);
                }
                // 图号:导入时可选,填写则校验唯一
                String drawingNo = trimToNull(row.getDrawingNo());
                if (drawingNo != null) {
                    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++;