liyong
2026-05-14 d6edd84479aed226bafe54d34d3f6eec2731c13b
fix(sales): 解决销售台账合同号更新时的唯一性校验问题

- 在更新销售台账时添加合同号唯一性校验逻辑
- 检查合同号是否发生变化后再执行唯一性验证
- 防止相同合同号重复提交导致的数据异常
- 保留原有的合同号非空判断条件
- 使用数据库查询验证合同号唯一性并返回友好错误提示
已修改1个文件
12 ■■■■■ 文件已修改
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -829,7 +829,17 @@
            salesLedger.setSalesContractNo(contractNo);
            salesLedgerMapper.insert(salesLedger);
        } else {
            salesLedger.setSalesContractNo(null);
            if (StrUtil.isNotBlank(salesLedgerDto.getSalesContractNo())) {
                SalesLedger existLedger = salesLedgerMapper.selectById(salesLedger.getId());
                // 如果合同号发生了变化,需要校验唯一性
                if (!salesLedgerDto.getSalesContractNo().equals(existLedger.getSalesContractNo())) {
                    Assert.isTrue(salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
                                    .eq(SalesLedger::getSalesContractNo, salesLedgerDto.getSalesContractNo())
                                    .last("limit 1")) == null,
                            salesLedgerDto.getSalesContractNo() + "合同号已存在");
                }
                salesLedger.setSalesContractNo(salesLedgerDto.getSalesContractNo());
            }
            salesLedgerMapper.updateById(salesLedger);
        }