PC出库单导入检验物料
This commit is contained in:
+56
@@ -228,8 +228,59 @@ public class ExcelParseService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验导入明细是否已在当前货主下维护物料基础信息
|
||||
*/
|
||||
private StringBuilder validateShipperMaterialDetails(StockOutOrderDO stockOutOrder) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
List<OutMaterialDetailDO> details = stockOutOrder.getMaterialDetailList();
|
||||
if (details == null || details.isEmpty()) {
|
||||
return sb;
|
||||
}
|
||||
Long shipperId = stockOutOrder.getShipperId();
|
||||
for (OutMaterialDetailDO row : details) {
|
||||
if (row.getMaterialBaseInfoId() != null) {
|
||||
continue;
|
||||
}
|
||||
boolean hasIdentifier = StringUtils.isNotBlank(row.getMaterialNo())
|
||||
|| StringUtils.isNotBlank(row.getSkucode())
|
||||
|| StringUtils.isNotBlank(row.getCommodityName());
|
||||
if (!hasIdentifier) {
|
||||
continue;
|
||||
}
|
||||
String desc = buildImportMaterialRowDesc(row);
|
||||
if (ObjectUtil.isEmpty(shipperId)) {
|
||||
sb.append("请先确认客户(货主)信息;无法校验以下物料是否已在货主下维护:").append(desc).append("; ");
|
||||
} else {
|
||||
sb.append("当前货主下未维护以下物料:").append(desc).append("; ");
|
||||
}
|
||||
}
|
||||
return sb;
|
||||
}
|
||||
|
||||
/**
|
||||
* 提示文案只强调 Excel 导入列「商品名称」;商品名称为空时用导入料号/SKU 辅助说明。
|
||||
*/
|
||||
private String buildImportMaterialRowDesc(OutMaterialDetailDO row) {
|
||||
String commodityName = StringUtils.trimToEmpty(row.getCommodityName());
|
||||
if (StringUtils.isNotBlank(commodityName)) {
|
||||
return "商品名称「" + commodityName + "」";
|
||||
}
|
||||
String materialNo = StringUtils.trimToEmpty(row.getMaterialNo());
|
||||
String sku = StringUtils.trimToEmpty(row.getSkucode());
|
||||
StringBuilder b = new StringBuilder("导入商品名称为空");
|
||||
if (StringUtils.isNotBlank(materialNo)) {
|
||||
b.append(",料号「").append(materialNo).append("」");
|
||||
}
|
||||
if (StringUtils.isNotBlank(sku)) {
|
||||
b.append(",SKU「").append(sku).append("」");
|
||||
}
|
||||
return b.toString();
|
||||
}
|
||||
|
||||
private StringBuilder check(StockOutOrderDO stockOutOrder) {
|
||||
StringBuilder errorMsg = new StringBuilder();
|
||||
errorMsg.append(validateShipperMaterialDetails(stockOutOrder));
|
||||
if (stockOutOrder.getMaterialDetailList() == null || stockOutOrder.getMaterialDetailList().isEmpty()) errorMsg.append("物料明细列表不能为空或匹配不上物料信息; ");
|
||||
if (StringUtils.isEmpty(stockOutOrder.getTo())) errorMsg.append("To不能为空; ");
|
||||
if (StringUtils.isEmpty(stockOutOrder.getEntrustNo())) errorMsg.append("委托单号不能为空; ");
|
||||
@@ -302,6 +353,11 @@ public class ExcelParseService {
|
||||
outMaterialDetailDO.setWarehouseId(warehouseId);
|
||||
outMaterialDetailDO.setWarehouseCode(warehouseCode);
|
||||
outMaterialDetailDO.setWarehouseName(warehouseName);
|
||||
|
||||
// 未识别货主时不查物料,避免匹配到其他货主的物料基础信息
|
||||
if (shipperId == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 根据明细表中的字段查询物料基础信息(优先:料号 > 商品SKU码 > 商品名称)
|
||||
// 注意:查询时必须加上货主ID条件,确保查询到的是该货主绑定的物料
|
||||
|
||||
Reference in New Issue
Block a user