From 06f48e68256c51df223ee2f01efc88a1db6dd91b Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Fri, 6 Jun 2025 15:47:24 +0800 Subject: [PATCH] =?UTF-8?q?refactor(sip):=20=E9=87=8D=E6=9E=84=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E4=BF=A1=E6=81=AF=E6=AF=94=E8=BE=83=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增产品新增和删除的单独处理逻辑- 优化产品变更比较逻辑,使用更简洁的代码 -修复产品 BOM 编码为空时的处理 - 优化日志输出格式 --- .../service/impl/ProjectInfoServiceImpl.java | 51 ++++++++++--------- .../mapper/sip/ProjectProductInfoMapper.xml | 2 +- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java index 7ef7d8b8..f5546e69 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java @@ -320,33 +320,36 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { .collect(Collectors.toMap(ProjectProductInfo::getId, product -> product)); Map newMap = CollUtil.isEmpty(newList) ? new HashMap<>() : newList.stream() .collect(Collectors.toMap(ProjectProductInfo::getId, product -> product)); + //新增 + List addCode = newList.stream().filter(item -> item.getId() == null).map(ProjectProductInfo::getProductBomCode).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(addCode)) { + logContent.append(index).append(".产品新增").append(type).append(":").append(String.join(",", addCode)).append("\n"); + index++; + } + //删除 + List deleteCode = oldList.stream().filter(item -> !newMap.containsKey(item.getId())).map(ProjectProductInfo::getProductBomCode).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(deleteCode)) { + logContent.append(index).append(".产品删除").append(type).append(":").append(String.join(",", deleteCode)).append("\n"); + index++; + } + // 获取所有 id 的并集 Set allIds = new HashSet<>(oldMap.keySet()); allIds.addAll(newMap.keySet()); - for (Long id : allIds) { ProjectProductInfo oldProduct = oldMap.get(id); ProjectProductInfo newProduct = newMap.get(id); - - if (oldProduct == null && newProduct != null) { - // 新增产品 - logContent.append(index).append(".").append(type).append("新增:").append(StringUtils.isEmpty(newProduct.getProductBomCode()) ? "空" : newProduct.getProductBomCode()).append("\n"); - index++; - } else if (oldProduct != null && newProduct == null) { - // 删除产品 - logContent.append(index).append(".").append(type).append("删除:").append(StringUtils.isEmpty(oldProduct.getProductBomCode()) ? "空" : oldProduct.getProductBomCode()).append("\n"); - index++; - } else if (oldProduct != null) { + if (oldProduct != null && newProduct != null) { // 变更产品 index = compareField(logContent, index, "产品编号", oldProduct.getProductBomCode(), newProduct.getProductBomCode()); index = compareField(logContent, index, "数量", oldProduct.getQuantity(), newProduct.getQuantity()); - index = compareField(logContent, index, "目录单价", oldProduct.getCataloguePrice(), newProduct.getCataloguePrice()); - index = compareField(logContent, index, "指导折扣", oldProduct.getGuidanceDiscount(), newProduct.getGuidanceDiscount()); - index = compareField(logContent, index, "指导折扣", oldProduct.getDiscount(), newProduct.getDiscount()); - index = compareField(logContent, index, "单价", oldProduct.getPrice(), newProduct.getPrice()); - index = compareField(logContent, index, "总价", oldProduct.getAllPrice(), newProduct.getAllPrice()); - index = compareField(logContent, index, "目录总价", oldProduct.getCatalogueAllPrice(), newProduct.getCatalogueAllPrice()); + index = compareBigDecimalField(logContent, index, "目录单价", oldProduct.getCataloguePrice(), newProduct.getCataloguePrice()); + index = compareBigDecimalField(logContent, index, "指导折扣", oldProduct.getGuidanceDiscount(), newProduct.getGuidanceDiscount()); + index = compareBigDecimalField(logContent, index, "指导折扣", oldProduct.getDiscount(), newProduct.getDiscount()); + index = compareBigDecimalField(logContent, index, "单价", oldProduct.getPrice(), newProduct.getPrice()); + index = compareBigDecimalField(logContent, index, "总价", oldProduct.getAllPrice(), newProduct.getAllPrice()); + index = compareBigDecimalField(logContent, index, "目录总价", oldProduct.getCatalogueAllPrice(), newProduct.getCatalogueAllPrice()); index = compareField(logContent, index, "备注", oldProduct.getRemark(), newProduct.getRemark()); } } @@ -359,7 +362,7 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { index, fieldName, oldValue == null ? "空" : oldValue, - newValue == null ? "空" : oldValue)); + newValue == null ? "空" : newValue)); index++; } return index; @@ -367,13 +370,11 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { private int compareBigDecimalField(StringBuilder logContent, int index, String fieldName, BigDecimal oldValue, BigDecimal newValue) { if (oldValue != null && newValue != null && oldValue.compareTo(newValue) != 0) { - logContent.append(index).append(".") - .append(fieldName) - .append("由‘") - .append(oldValue) - .append("’变更为‘") - .append(newValue) - .append("’\n"); + logContent.append(StringUtils.format("{}.{}由[{}]变更为[{}]\n", + index, + fieldName, + oldValue, + newValue)); index++; } return index; diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml index 9eada1e1..240513e0 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml @@ -132,7 +132,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update project_product_info project_id = #{item.projectId}, - product_bom_code = #{item.productBomCode}, + product_bom_code = #{item.productBomCode}, model = #{item.model}, product_code = #{item.productCode}, product_desc = #{item.productDesc},