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) {
|
private StringBuilder check(StockOutOrderDO stockOutOrder) {
|
||||||
StringBuilder errorMsg = new StringBuilder();
|
StringBuilder errorMsg = new StringBuilder();
|
||||||
|
errorMsg.append(validateShipperMaterialDetails(stockOutOrder));
|
||||||
if (stockOutOrder.getMaterialDetailList() == null || stockOutOrder.getMaterialDetailList().isEmpty()) errorMsg.append("物料明细列表不能为空或匹配不上物料信息; ");
|
if (stockOutOrder.getMaterialDetailList() == null || stockOutOrder.getMaterialDetailList().isEmpty()) errorMsg.append("物料明细列表不能为空或匹配不上物料信息; ");
|
||||||
if (StringUtils.isEmpty(stockOutOrder.getTo())) errorMsg.append("To不能为空; ");
|
if (StringUtils.isEmpty(stockOutOrder.getTo())) errorMsg.append("To不能为空; ");
|
||||||
if (StringUtils.isEmpty(stockOutOrder.getEntrustNo())) errorMsg.append("委托单号不能为空; ");
|
if (StringUtils.isEmpty(stockOutOrder.getEntrustNo())) errorMsg.append("委托单号不能为空; ");
|
||||||
@@ -303,6 +354,11 @@ public class ExcelParseService {
|
|||||||
outMaterialDetailDO.setWarehouseCode(warehouseCode);
|
outMaterialDetailDO.setWarehouseCode(warehouseCode);
|
||||||
outMaterialDetailDO.setWarehouseName(warehouseName);
|
outMaterialDetailDO.setWarehouseName(warehouseName);
|
||||||
|
|
||||||
|
// 未识别货主时不查物料,避免匹配到其他货主的物料基础信息
|
||||||
|
if (shipperId == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// 根据明细表中的字段查询物料基础信息(优先:料号 > 商品SKU码 > 商品名称)
|
// 根据明细表中的字段查询物料基础信息(优先:料号 > 商品SKU码 > 商品名称)
|
||||||
// 注意:查询时必须加上货主ID条件,确保查询到的是该货主绑定的物料
|
// 注意:查询时必须加上货主ID条件,确保查询到的是该货主绑定的物料
|
||||||
Long materialBaseInfoId = null;
|
Long materialBaseInfoId = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user