refactor(sip): 重构产品信息比较逻辑
- 新增产品新增和删除的单独处理逻辑- 优化产品变更比较逻辑,使用更简洁的代码 -修复产品 BOM 编码为空时的处理 - 优化日志输出格式master
parent
6a62d079d5
commit
06f48e6825
|
@ -320,33 +320,36 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
|
|||
.collect(Collectors.toMap(ProjectProductInfo::getId, product -> product));
|
||||
Map<Long, ProjectProductInfo> newMap = CollUtil.isEmpty(newList) ? new HashMap<>() : newList.stream()
|
||||
.collect(Collectors.toMap(ProjectProductInfo::getId, product -> product));
|
||||
//新增
|
||||
List<String> 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<String> 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<Long> 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;
|
||||
|
|
|
@ -132,7 +132,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
update project_product_info
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="item.projectId != null">project_id = #{item.projectId},</if>
|
||||
<if test="item.productBomCode != null and productBomCode != ''">product_bom_code = #{item.productBomCode},</if>
|
||||
<if test="item.productBomCode != null and item.productBomCode != ''">product_bom_code = #{item.productBomCode},</if>
|
||||
<if test="item.model != null">model = #{item.model},</if>
|
||||
<if test="item.productCode != null">product_code = #{item.productCode},</if>
|
||||
<if test="item.productDesc != null">product_desc = #{item.productDesc},</if>
|
||||
|
|
Loading…
Reference in New Issue