fix(智慧超市):修复导入
This commit is contained in:
1 parent
dd8eb85c96
commit
77ede3ccd9
1 file changed
+45
-21
+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<>();
|
||||
|
||||
Reference in new issue
Block a user