fix(智慧超市):修复导入

This commit is contained in:
zjf committed 2025-08-08 13:00:19 +08:00
1 parent dd8eb85c96
commit 77ede3ccd9
1 file changed
+45 -21
@@ -953,7 +953,10 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
}
if (!errorReasons.isEmpty()) {
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), errorReasons));
List<String> prefixed = errorReasons.stream()
.map(msg -> "货号:" + dto.getProductCode() + " 商品名称:" + dto.getProductName() + " - " + msg)
.collect(Collectors.toList());
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), prefixed));
continue;
}
@@ -963,7 +966,10 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
categoryId = resolveCategory(dto.getCategoryName(), errorReasons, rowNumber, dto.getProductCode(),
SecurityUtils.getUser().getDeptId(), null);
if (categoryId == null) {
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), errorReasons));
List<String> prefixed = errorReasons.stream()
.map(msg -> "货号:" + dto.getProductCode() + " 商品名称:" + dto.getProductName() + " - " + msg)
.collect(Collectors.toList());
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), prefixed));
continue;
}
}
@@ -973,7 +979,10 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
if (StringUtils.isNotBlank(dto.getSupplierName())) {
supplierId = resolveSupplierId(dto.getSupplierName(), errorReasons, rowNumber, dto.getProductCode());
if (supplierId == null) {
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), errorReasons));
List<String> prefixed = errorReasons.stream()
.map(msg -> "货号:" + dto.getProductCode() + " 商品名称:" + dto.getProductName() + " - " + msg)
.collect(Collectors.toList());
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), prefixed));
continue;
}
}
@@ -1054,14 +1063,13 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
SmErpUnitEntity existingUnit = smErpUnitService.getOne(existingUnitWrapper);
if (existingUnit != null) {
// 更新现有包装单位(不改动主数据)
existingUnit.setPackageNum(dto.getPackageNum());
existingUnit.setBarCode(org.apache.commons.lang3.StringUtils.isNotBlank(dto.getBarCode()) ? dto.getBarCode() : null); // 更新条码
existingUnit.setPurchasePrice(unit.getPurchasePrice());
existingUnit.setRetailPrice(unit.getRetailPrice());
existingUnit.setPromotionPrice(unit.getPromotionPrice());
existingUnit.setCostPrice(unit.getCostPrice());
smErpUnitService.updateById(existingUnit);
// 包装单位已存在:记录重复并跳过,不做更新(importNew 为新增模式)
String duplicateKey = org.apache.commons.lang3.StringUtils.isNotBlank(dto.getBarCode())
? ("条码:" + dto.getBarCode())
: ("单位:" + dto.getUnit() + ", 口味:" + (dto.getTaste() == null ? "" : dto.getTaste()) + ", 规格:" + (dto.getSpec() == null ? "" : dto.getSpec()));
errorReasons.add("货号:" + dto.getProductCode() + " 商品名称:" + dto.getProductName() + " - 包装单位已存在,跳过导入(" + duplicateKey + ")");
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), errorReasons));
continue;
} else {
smErpUnitService.save(unit);
}
@@ -1100,7 +1108,7 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
SmErpAuxiliaryCodeEntity auxiliaryCode = new SmErpAuxiliaryCodeEntity();
auxiliaryCode.setSpuId(spu.getId());
auxiliaryCode.setBarCode(auxiliaryBarcode);
auxiliaryCode.setUnitId(existingUnit != null ? existingUnit.getId() : unit.getId());
auxiliaryCode.setUnitId(unit.getId());
smErpAuxiliaryCodeService.save(auxiliaryCode);
}
}
@@ -1119,12 +1127,9 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
SmErpStockEntity existingStock = smErpStockService.getOne(existingStockWrapper);
if (existingStock != null) {
// 更新现有库存记录
existingStock.setInventoryUpperLimit(dto.getInventoryUpperLimit() != null ? dto.getInventoryUpperLimit() : 1000);
existingStock.setInventoryLowerLimit(dto.getInventoryLowerLimit() != null ? dto.getInventoryLowerLimit() : 10);
existingStock.setBaseStock(dto.getStock() != null ? dto.getStock() : 0.0);
existingStock.setCurrentStock(dto.getStock() != null ? dto.getStock() : 0.0);
smErpStockService.updateById(existingStock);
// 库存记录已存在,记录并跳过(importNew 不覆盖库存)
errorReasons.add("货号:" + dto.getProductCode() + " 商品名称:" + dto.getProductName() + " - 库存记录已存在,跳过导入以避免覆盖线上数据");
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), errorReasons));
} else {
smErpStockService.save(stock);
}
@@ -1174,7 +1179,10 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
}
if (!errorReasons.isEmpty()) {
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), errorReasons));
List<String> prefixed = errorReasons.stream()
.map(msg -> "货号:" + dto.getProductCode() + " 商品名称:" + dto.getProductName() + " - " + msg)
.collect(Collectors.toList());
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), prefixed));
continue;
}
@@ -1184,7 +1192,10 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
categoryId = resolveCategory(dto.getCategoryName(), errorReasons, rowNumber, dto.getProductCode(),
SecurityUtils.getUser().getDeptId(), null);
if (categoryId == null) {
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), errorReasons));
List<String> prefixed = errorReasons.stream()
.map(msg -> "货号:" + dto.getProductCode() + " 商品名称:" + dto.getProductName() + " - " + msg)
.collect(Collectors.toList());
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), prefixed));
continue;
}
}
@@ -1194,7 +1205,10 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
if (StringUtils.isNotBlank(dto.getSupplierName())) {
supplierId = resolveSupplierId(dto.getSupplierName(), errorReasons, rowNumber, dto.getProductCode());
if (supplierId == null) {
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), errorReasons));
List<String> prefixed = errorReasons.stream()
.map(msg -> "货号:" + dto.getProductCode() + " 商品名称:" + dto.getProductName() + " - " + msg)
.collect(Collectors.toList());
errorList.add(createErrorInfo(rowNumber, dto.getProductCode(), prefixed));
continue;
}
}
@@ -1610,6 +1624,16 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
return errorInfo;
}
// 错误信息构建(包含商品名称的重载)
private Map<String, Object> createErrorInfo(int row, String productCode, String productName, List<String> reasons) {
Map<String, Object> errorInfo = new LinkedHashMap<>();
errorInfo.put("row", row);
errorInfo.put("productCode", productCode);
errorInfo.put("productName", productName);
errorInfo.put("reasons", new ArrayList<>(reasons));
return errorInfo;
}
// 结果构建(完整实现)
private R buildImportResult(int total, int successCount, List<Map<String, Object>> errorList) {
Map<String, Object> result = new LinkedHashMap<>();