WMS出库导入单位处理修改
This commit is contained in:
+57
-2
@@ -533,7 +533,7 @@ public class StockReceiptOrderApplicationService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归填充明细行的物料单位信息(如果单位信息为空)
|
||||
* 递归填充明细行的物料单位信息、包装规格(如果为空)
|
||||
* @param receiptMaterialDetailPOList 收货物料明细列表
|
||||
* @param materialBaseInfoMap 物料基础信息Map(key: materialBaseInfoId, value: MaterialBaseInfoPO)
|
||||
* @param packDetailMap 包装规格明细Map(key: materialBaseInfoId, value: PackDetailFeignPO,单位代码为EA)
|
||||
@@ -549,6 +549,19 @@ public class StockReceiptOrderApplicationService {
|
||||
Long materialBaseInfoId = receiptMaterialDetailPO.getMaterialBaseInfoId();
|
||||
|
||||
if (materialBaseInfoId != null) {
|
||||
MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoMap.get(materialBaseInfoId);
|
||||
// 填充包装规格(packCode、packName、packId)为空时从物料基础信息获取
|
||||
if (materialBaseInfoPO != null) {
|
||||
if (receiptMaterialDetailPO.getPackId() == null && materialBaseInfoPO.getPackId() != null) {
|
||||
receiptMaterialDetailPO.setPackId(materialBaseInfoPO.getPackId());
|
||||
}
|
||||
if (StringUtils.isBlank(receiptMaterialDetailPO.getPackCode()) && StringUtils.isNotBlank(materialBaseInfoPO.getPackCode())) {
|
||||
receiptMaterialDetailPO.setPackCode(materialBaseInfoPO.getPackCode());
|
||||
}
|
||||
if (StringUtils.isBlank(receiptMaterialDetailPO.getPackName()) && StringUtils.isNotBlank(materialBaseInfoPO.getPackName())) {
|
||||
receiptMaterialDetailPO.setPackName(materialBaseInfoPO.getPackName());
|
||||
}
|
||||
}
|
||||
// 只有当单位信息为空时才填充
|
||||
if (StringUtils.isBlank(receiptMaterialDetailPO.getUnitCode())
|
||||
|| StringUtils.isBlank(receiptMaterialDetailPO.getUnitName())) {
|
||||
@@ -874,11 +887,53 @@ public class StockReceiptOrderApplicationService {
|
||||
* @return Boolean
|
||||
*/
|
||||
public Boolean receivingGoodsByApp(StockReceiptOrderDO stockReceiptOrderDO){
|
||||
// PDA 收货与 PC 一致,保留主项子项结构
|
||||
// PDA 收货回传时,将第一项作为主项,其余作为其子项
|
||||
ensureFirstItemAsParent(stockReceiptOrderDO);
|
||||
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO);
|
||||
return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* PDA 收货回传时,将 materialDetailList 的第一项作为主项(level 1),其余项作为其子项(level 2)
|
||||
*/
|
||||
private void ensureFirstItemAsParent(StockReceiptOrderDO stockReceiptOrderDO) {
|
||||
List<ReceiptMaterialDetailDO> list = stockReceiptOrderDO.getMaterialDetailList();
|
||||
if (CollectionUtils.isEmpty(list) || list.size() <= 1) {
|
||||
return;
|
||||
}
|
||||
// 若第一项已有子项,说明已是主项子项结构,不处理
|
||||
if (!CollectionUtils.isEmpty(list.get(0).getChildren())) {
|
||||
return;
|
||||
}
|
||||
StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(stockReceiptOrderDO.getReceiptOrderId());
|
||||
if (stockReceiptOrderPO == null) {
|
||||
return;
|
||||
}
|
||||
ReceiptMaterialDetailDO receiptMaterialDetailDOByQuery = new ReceiptMaterialDetailDO();
|
||||
receiptMaterialDetailDOByQuery.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber());
|
||||
List<ReceiptMaterialDetailPO> receiptMaterialDetailPODbList = receiptMaterialDetailDomainService.queryList(receiptMaterialDetailDOByQuery);
|
||||
Map<Long, ReceiptMaterialDetailPO> dbMap = receiptMaterialDetailPODbList.stream()
|
||||
.collect(Collectors.toMap(ReceiptMaterialDetailPO::getMaterialDetailId, Function.identity()));
|
||||
ReceiptMaterialDetailDO first = list.get(0);
|
||||
ReceiptMaterialDetailPO firstPO = dbMap.get(first.getMaterialDetailId());
|
||||
if (firstPO == null || firstPO.getUniqueId() == null) {
|
||||
return;
|
||||
}
|
||||
Long parentUniqueId = firstPO.getUniqueId();
|
||||
List<ReceiptMaterialDetailDO> children = new ArrayList<>();
|
||||
for (int i = 1; i < list.size(); i++) {
|
||||
ReceiptMaterialDetailDO child = list.get(i);
|
||||
child.setLevel(2);
|
||||
child.setParentUniqueId(parentUniqueId);
|
||||
children.add(child);
|
||||
}
|
||||
first.setLevel(1);
|
||||
first.setChildren(children);
|
||||
List<ReceiptMaterialDetailDO> newList = new ArrayList<>();
|
||||
newList.add(first);
|
||||
stockReceiptOrderDO.setMaterialDetailList(newList);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 完成收货
|
||||
* @author ZhouGY
|
||||
|
||||
+9
@@ -386,6 +386,15 @@ public class ExcelParseService {
|
||||
outMaterialDetailDO.setSkucode(materialBaseInfoPO.getBarCode());
|
||||
}
|
||||
}
|
||||
// 单位:优先使用Excel中的"单位"字段,如果为空则使用"申报单位",如果还为空则从物料主数据获取(与入库单导入处理一致)
|
||||
String unit = StringUtils.isNotBlank(outMaterialDetailDO.getUnit()) ? outMaterialDetailDO.getUnit() : null;
|
||||
if (StringUtils.isBlank(unit) && StringUtils.isNotBlank(outMaterialDetailDO.getDeclareUnit())) {
|
||||
unit = outMaterialDetailDO.getDeclareUnit();
|
||||
}
|
||||
if (StringUtils.isBlank(unit) && materialBaseInfoPO != null && StringUtils.isNotBlank(materialBaseInfoPO.getUnitName())) {
|
||||
unit = materialBaseInfoPO.getUnitName();
|
||||
}
|
||||
outMaterialDetailDO.setUnit(unit);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user