收货确认时覆盖原来的收货数量,费用以当前页面提交的数据计算
This commit is contained in:
+219
-6
@@ -1372,8 +1372,8 @@ public class StockReceiptOrderApplicationService {
|
|||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
public Boolean receivingGoods(StockReceiptOrderDO stockReceiptOrderDO){
|
public Boolean receivingGoods(StockReceiptOrderDO stockReceiptOrderDO){
|
||||||
//收货装配参数
|
//收货装配参数(PC:页面全量覆盖累计已收与费用,不与历史累加)
|
||||||
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO);
|
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO, true);
|
||||||
assembleStockReceiptOrderDO.setFromPda(false); // PC收货完成,上架单是否下发=否
|
assembleStockReceiptOrderDO.setFromPda(false); // PC收货完成,上架单是否下发=否
|
||||||
return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO);
|
return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO);
|
||||||
}
|
}
|
||||||
@@ -1400,7 +1400,7 @@ public class StockReceiptOrderApplicationService {
|
|||||||
// 主项子项结构:将 children 第一条(parent_copy)赋值给主项并删除
|
// 主项子项结构:将 children 第一条(parent_copy)赋值给主项并删除
|
||||||
assignFirstChildToParentAndRemove(stockReceiptOrderDO);
|
assignFirstChildToParentAndRemove(stockReceiptOrderDO);
|
||||||
}
|
}
|
||||||
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO);
|
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO, false);
|
||||||
if (CollectionUtils.isEmpty(assembleStockReceiptOrderDO.getMaterialDetailList())) {
|
if (CollectionUtils.isEmpty(assembleStockReceiptOrderDO.getMaterialDetailList())) {
|
||||||
throw new ServiceException("无有效收货数据,请确认已填写收货数量(收货数量不能全部为0)");
|
throw new ServiceException("无有效收货数据,请确认已填写收货数量(收货数量不能全部为0)");
|
||||||
}
|
}
|
||||||
@@ -1698,14 +1698,212 @@ public class StockReceiptOrderApplicationService {
|
|||||||
return totalField;
|
return totalField;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PC 收货确认:页面提交为「当前全量实绩」,直接取 receipt* / total* 落库,不与历史累计做差或相加。
|
||||||
|
*/
|
||||||
|
private static BigDecimal pickAbsoluteMetricFromPage(BigDecimal receiptField, BigDecimal totalField) {
|
||||||
|
if (receiptField != null) {
|
||||||
|
return receiptField;
|
||||||
|
}
|
||||||
|
if (totalField != null) {
|
||||||
|
return totalField;
|
||||||
|
}
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PC 收货:按页面全量覆盖累计已收(主行、子行毛净重体面积件数)。
|
||||||
|
*/
|
||||||
|
private void appendReceiptLinePcFullPageOverwrite(
|
||||||
|
ReceiptMaterialDetailDO receiptMaterialDetailDO,
|
||||||
|
ReceiptMaterialDetailPO receiptMaterialDetailPO,
|
||||||
|
Map<Long, ReceiptMaterialDetailPO> receiptMaterialDetailDbMap,
|
||||||
|
Map<Long, ReceiptMaterialDetailPO> receiptMaterialDetailDbMapByUniqueId,
|
||||||
|
List<ReceiptMaterialDetailDO> returnReceiptMaterialDetailDOList,
|
||||||
|
BigDecimal[] wholeOrderReceiptQtySumHolder,
|
||||||
|
int[] materialKindsCompleteHolder) {
|
||||||
|
BigDecimal receiptQuantity = receiptMaterialDetailDO.getReceiptQuantity();
|
||||||
|
if (receiptQuantity == null) {
|
||||||
|
receiptQuantity = BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
List<ReceiptMaterialDetailDO> children = receiptMaterialDetailDO.getChildren();
|
||||||
|
BigDecimal childrenTotalQuantity = BigDecimal.ZERO;
|
||||||
|
if (!CollectionUtils.isEmpty(children)) {
|
||||||
|
childrenTotalQuantity = children.stream()
|
||||||
|
.map(ReceiptMaterialDetailDO::getReceiptQuantity)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
}
|
||||||
|
boolean hasReceiptByMetrics = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptNetWeight(), receiptMaterialDetailDO.getTotalNetWeight()).compareTo(BigDecimal.ZERO) > 0
|
||||||
|
|| pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptGrossWeight(), receiptMaterialDetailDO.getTotalGrossWeight()).compareTo(BigDecimal.ZERO) > 0;
|
||||||
|
if (!hasReceiptByMetrics && !CollectionUtils.isEmpty(children)) {
|
||||||
|
for (ReceiptMaterialDetailDO c : children) {
|
||||||
|
if (c == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (pickAbsoluteMetricFromPage(c.getReceiptNetWeight(), c.getTotalNetWeight()).compareTo(BigDecimal.ZERO) > 0
|
||||||
|
|| pickAbsoluteMetricFromPage(c.getReceiptGrossWeight(), c.getTotalGrossWeight()).compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
hasReceiptByMetrics = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean hasReceipt = receiptQuantity.compareTo(BigDecimal.ZERO) > 0 || childrenTotalQuantity.compareTo(BigDecimal.ZERO) > 0
|
||||||
|
|| hasReceiptByMetrics;
|
||||||
|
List<ReceiptMaterialDetailDO> returnReceiptMaterialDetailDOChildList = new ArrayList<>();
|
||||||
|
BigDecimal planQty = receiptMaterialDetailPO.getQuantity() != null ? receiptMaterialDetailPO.getQuantity() : BigDecimal.ZERO;
|
||||||
|
|
||||||
|
if (hasReceipt) {
|
||||||
|
BigDecimal poReceiptQty = receiptMaterialDetailPO.getReceiptQuantity() != null
|
||||||
|
? receiptMaterialDetailPO.getReceiptQuantity() : BigDecimal.ZERO;
|
||||||
|
if (poReceiptQty.compareTo(BigDecimal.ZERO) == 0) {
|
||||||
|
receiptMaterialDetailDO.setAllowModify(2);
|
||||||
|
setMaterialMoreDetailInfo(receiptMaterialDetailDO);
|
||||||
|
}
|
||||||
|
List<ReceiptMaterialDetailDO> receiptMaterialDetailDOChildList = receiptMaterialDetailDO.getChildren();
|
||||||
|
if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)) {
|
||||||
|
for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList) {
|
||||||
|
ReceiptMaterialDetailPO receiptMaterialDetailPOChildDb = receiptMaterialDetailDbMap.get(receiptMaterialDetailDOChild.getMaterialDetailId());
|
||||||
|
if (receiptMaterialDetailPOChildDb == null && receiptMaterialDetailDOChild.getUniqueId() != null) {
|
||||||
|
receiptMaterialDetailPOChildDb = receiptMaterialDetailDbMapByUniqueId.get(receiptMaterialDetailDOChild.getUniqueId());
|
||||||
|
}
|
||||||
|
BigDecimal childQty = receiptMaterialDetailDOChild.getReceiptQuantity() != null ? receiptMaterialDetailDOChild.getReceiptQuantity() : BigDecimal.ZERO;
|
||||||
|
BigDecimal childGross = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptGrossWeight(), receiptMaterialDetailDOChild.getTotalGrossWeight());
|
||||||
|
BigDecimal childNet = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptNetWeight(), receiptMaterialDetailDOChild.getTotalNetWeight());
|
||||||
|
BigDecimal childVol = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptVolume(), receiptMaterialDetailDOChild.getTotalVolume());
|
||||||
|
BigDecimal childArea = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptArea(), receiptMaterialDetailDOChild.getTotalArea());
|
||||||
|
if (childQty.compareTo(BigDecimal.ZERO) == 0 && childNet.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
childQty = childNet;
|
||||||
|
}
|
||||||
|
if (childQty.compareTo(BigDecimal.ZERO) == 0 && childGross.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
childQty = childGross;
|
||||||
|
}
|
||||||
|
ReceiptMaterialDetailDO returnReceiptMaterialDetailDOChild = new ReceiptMaterialDetailDO();
|
||||||
|
if (receiptMaterialDetailPOChildDb != null) {
|
||||||
|
BeanUtils.copyProperties(receiptMaterialDetailPOChildDb, returnReceiptMaterialDetailDOChild);
|
||||||
|
BeanUtils.copyProperties(receiptMaterialDetailDOChild, returnReceiptMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDOChild));
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptQuantity(childQty);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptGrossWeight(childGross);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptNetWeight(childNet);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptVolume(childVol);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptArea(childArea);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAllowModify(2);
|
||||||
|
returnReceiptMaterialDetailDOChild.setLevel(2);
|
||||||
|
returnReceiptMaterialDetailDOChild.setParentUniqueId(receiptMaterialDetailPO.getUniqueId());
|
||||||
|
setMaterialMoreDetailInfo(returnReceiptMaterialDetailDOChild);
|
||||||
|
} else {
|
||||||
|
BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDOChild, "materialDetailId", "createBy", "createByName", "createTime",
|
||||||
|
"updateBy", "updateByName", "updateTime");
|
||||||
|
BeanUtils.copyProperties(receiptMaterialDetailDOChild, returnReceiptMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDOChild));
|
||||||
|
if (ObjectUtil.isNotNull(returnReceiptMaterialDetailDOChild.getMaterialDetailId()) && returnReceiptMaterialDetailDOChild.getMaterialDetailId() == 0) {
|
||||||
|
returnReceiptMaterialDetailDOChild.setMaterialDetailId(null);
|
||||||
|
}
|
||||||
|
returnReceiptMaterialDetailDOChild.setAllowModify(2);
|
||||||
|
returnReceiptMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
|
||||||
|
returnReceiptMaterialDetailDOChild.setLevel(2);
|
||||||
|
returnReceiptMaterialDetailDOChild.setParentUniqueId(receiptMaterialDetailPO.getUniqueId());
|
||||||
|
setMaterialMoreDetailInfo(returnReceiptMaterialDetailDOChild);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptGrossWeight(childGross);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptNetWeight(childNet);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptVolume(childVol);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptArea(childArea);
|
||||||
|
returnReceiptMaterialDetailDOChild.setAlreadyReceiptQuantity(childQty);
|
||||||
|
}
|
||||||
|
returnReceiptMaterialDetailDOChild.setTotalNetWeight(returnReceiptMaterialDetailDOChild.getAlreadyReceiptNetWeight());
|
||||||
|
returnReceiptMaterialDetailDOChild.setTotalGrossWeight(returnReceiptMaterialDetailDOChild.getAlreadyReceiptGrossWeight());
|
||||||
|
returnReceiptMaterialDetailDOChild.setTotalVolume(returnReceiptMaterialDetailDOChild.getAlreadyReceiptVolume());
|
||||||
|
returnReceiptMaterialDetailDOChild.setTotalArea(returnReceiptMaterialDetailDOChild.getAlreadyReceiptArea());
|
||||||
|
if (receiptMaterialDetailPO.getSerialNumberManage() == 1) {
|
||||||
|
if (CollectionUtils.isEmpty(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList())) {
|
||||||
|
throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
returnReceiptMaterialDetailDOChild.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList());
|
||||||
|
returnReceiptMaterialDetailDOChild.setMaterialMoreDetailList(receiptMaterialDetailDOChild.getMaterialMoreDetailList());
|
||||||
|
if (returnReceiptMaterialDetailDOChild.getAlreadyReceiptQuantity() != null) {
|
||||||
|
returnReceiptMaterialDetailDOChild.setReceiptQuantity(returnReceiptMaterialDetailDOChild.getAlreadyReceiptQuantity());
|
||||||
|
}
|
||||||
|
returnReceiptMaterialDetailDOChild.setQuantity(null);
|
||||||
|
returnReceiptMaterialDetailDOChildList.add(returnReceiptMaterialDetailDOChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BigDecimal mainItemActualQuantity = receiptQuantity;
|
||||||
|
BigDecimal parentReceiptGross = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptGrossWeight(), receiptMaterialDetailDO.getTotalGrossWeight());
|
||||||
|
BigDecimal parentReceiptNet = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptNetWeight(), receiptMaterialDetailDO.getTotalNetWeight());
|
||||||
|
BigDecimal parentReceiptVol = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptVolume(), receiptMaterialDetailDO.getTotalVolume());
|
||||||
|
BigDecimal parentReceiptArea = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptArea(), receiptMaterialDetailDO.getTotalArea());
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptQuantity(mainItemActualQuantity);
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptGrossWeight(parentReceiptGross);
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptNetWeight(parentReceiptNet);
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptVolume(parentReceiptVol);
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptArea(parentReceiptArea);
|
||||||
|
receiptMaterialDetailDO.setTotalNetWeight(receiptMaterialDetailDO.getAlreadyReceiptNetWeight());
|
||||||
|
receiptMaterialDetailDO.setTotalGrossWeight(receiptMaterialDetailDO.getAlreadyReceiptGrossWeight());
|
||||||
|
receiptMaterialDetailDO.setTotalVolume(receiptMaterialDetailDO.getAlreadyReceiptVolume());
|
||||||
|
receiptMaterialDetailDO.setTotalArea(receiptMaterialDetailDO.getAlreadyReceiptArea());
|
||||||
|
BigDecimal groupReceived = receiptMaterialDetailDO.getAlreadyReceiptQuantity() != null
|
||||||
|
? receiptMaterialDetailDO.getAlreadyReceiptQuantity() : BigDecimal.ZERO;
|
||||||
|
if (!CollectionUtils.isEmpty(returnReceiptMaterialDetailDOChildList)) {
|
||||||
|
for (ReceiptMaterialDetailDO ch : returnReceiptMaterialDetailDOChildList) {
|
||||||
|
BigDecimal ca = ch.getAlreadyReceiptQuantity() != null ? ch.getAlreadyReceiptQuantity() : BigDecimal.ZERO;
|
||||||
|
groupReceived = groupReceived.add(ca);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Integer receiptStatus = judgeReceiptQuantity(groupReceived, planQty);
|
||||||
|
receiptMaterialDetailDO.setReceiptStatus(receiptStatus);
|
||||||
|
if (!CollectionUtils.isEmpty(returnReceiptMaterialDetailDOChildList)) {
|
||||||
|
for (ReceiptMaterialDetailDO ch : returnReceiptMaterialDetailDOChildList) {
|
||||||
|
ch.setReceiptStatus(receiptStatus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wholeOrderReceiptQtySumHolder[0] = wholeOrderReceiptQtySumHolder[0].add(groupReceived);
|
||||||
|
if (receiptStatus > 2) {
|
||||||
|
materialKindsCompleteHolder[0] = materialKindsCompleteHolder[0] + 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptQuantity(BigDecimal.ZERO);
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptGrossWeight(BigDecimal.ZERO);
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptNetWeight(BigDecimal.ZERO);
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptVolume(BigDecimal.ZERO);
|
||||||
|
receiptMaterialDetailDO.setAlreadyReceiptArea(BigDecimal.ZERO);
|
||||||
|
receiptMaterialDetailDO.setReceiptStatus(judgeReceiptQuantity(BigDecimal.ZERO, planQty));
|
||||||
|
}
|
||||||
|
ReceiptMaterialDetailDO returnReceiptMaterialDetailDO = new ReceiptMaterialDetailDO();
|
||||||
|
BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDO);
|
||||||
|
BeanUtils.copyProperties(receiptMaterialDetailDO, returnReceiptMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDO));
|
||||||
|
returnReceiptMaterialDetailDO.setTotalNetWeight(receiptMaterialDetailDO.getTotalNetWeight());
|
||||||
|
returnReceiptMaterialDetailDO.setTotalGrossWeight(receiptMaterialDetailDO.getTotalGrossWeight());
|
||||||
|
returnReceiptMaterialDetailDO.setTotalVolume(receiptMaterialDetailDO.getTotalVolume());
|
||||||
|
returnReceiptMaterialDetailDO.setTotalArea(receiptMaterialDetailDO.getTotalArea());
|
||||||
|
BigDecimal parentRetAlreadyQty = receiptMaterialDetailDO.getAlreadyReceiptQuantity() != null
|
||||||
|
? receiptMaterialDetailDO.getAlreadyReceiptQuantity() : BigDecimal.ZERO;
|
||||||
|
returnReceiptMaterialDetailDO.setAlreadyReceiptQuantity(parentRetAlreadyQty);
|
||||||
|
returnReceiptMaterialDetailDO.setReceiptQuantity(parentRetAlreadyQty);
|
||||||
|
if (receiptMaterialDetailPO.getReceiptStatus() == 1) {
|
||||||
|
if (receiptMaterialDetailPO.getSerialNumberManage() == 1) {
|
||||||
|
if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())) {
|
||||||
|
throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDO.getMaterialDetailSerialNumberList());
|
||||||
|
returnReceiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDO.getMaterialMoreDetailList());
|
||||||
|
} else {
|
||||||
|
returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(new ArrayList<>());
|
||||||
|
returnReceiptMaterialDetailDO.setMaterialMoreDetailList(new ArrayList<>());
|
||||||
|
}
|
||||||
|
returnReceiptMaterialDetailDO.setChildren(returnReceiptMaterialDetailDOChildList);
|
||||||
|
returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 收货装配参数
|
* @description 收货装配参数
|
||||||
* @author ZhouGY
|
* @author ZhouGY
|
||||||
* @date 2024/5/22 9:27
|
* @date 2024/5/22 9:27
|
||||||
* @param stockReceiptOrderDO
|
* @param stockReceiptOrderDO
|
||||||
|
* @param pcFullPageOverwrite PC 收货确认 true=页面全量覆盖累计已收(不累加历史)
|
||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO) {
|
private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO, boolean pcFullPageOverwrite) {
|
||||||
StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(stockReceiptOrderDO.getReceiptOrderId());
|
StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(stockReceiptOrderDO.getReceiptOrderId());
|
||||||
if (stockReceiptOrderPO == null){
|
if (stockReceiptOrderPO == null){
|
||||||
throw new ServiceException("收货单不存在");
|
throw new ServiceException("收货单不存在");
|
||||||
@@ -1734,6 +1932,8 @@ public class StockReceiptOrderApplicationService {
|
|||||||
.collect(Collectors.toMap(ReceiptMaterialDetailPO::getUniqueId, Function.identity()));
|
.collect(Collectors.toMap(ReceiptMaterialDetailPO::getUniqueId, Function.identity()));
|
||||||
BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数
|
BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数
|
||||||
int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数
|
int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数
|
||||||
|
BigDecimal[] wholeOrderReceiptQtySumHolder = new BigDecimal[]{BigDecimal.ZERO};
|
||||||
|
int[] materialKindsCompleteHolder = new int[]{0};
|
||||||
List<ReceiptMaterialDetailDO> returnReceiptMaterialDetailDOList = new ArrayList<>();
|
List<ReceiptMaterialDetailDO> returnReceiptMaterialDetailDOList = new ArrayList<>();
|
||||||
for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){
|
for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){
|
||||||
//设置物料更多属性信息:优先用 materialDetailId 查找,若为空则用 uniqueId 查找(兼容 PDA 只传 uniqueId 的场景)
|
//设置物料更多属性信息:优先用 materialDetailId 查找,若为空则用 uniqueId 查找(兼容 PDA 只传 uniqueId 的场景)
|
||||||
@@ -1747,6 +1947,11 @@ public class StockReceiptOrderApplicationService {
|
|||||||
if (receiptMaterialDetailPO == null){
|
if (receiptMaterialDetailPO == null){
|
||||||
throw new ServiceException("物料明细不存在");
|
throw new ServiceException("物料明细不存在");
|
||||||
}
|
}
|
||||||
|
if (pcFullPageOverwrite) {
|
||||||
|
appendReceiptLinePcFullPageOverwrite(receiptMaterialDetailDO, receiptMaterialDetailPO, receiptMaterialDetailDbMap,
|
||||||
|
receiptMaterialDetailDbMapByUniqueId, returnReceiptMaterialDetailDOList, wholeOrderReceiptQtySumHolder, materialKindsCompleteHolder);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// receiptQuantity 空值保护,PDA 未传时按 0 处理
|
// receiptQuantity 空值保护,PDA 未传时按 0 处理
|
||||||
BigDecimal receiptQuantity = receiptMaterialDetailDO.getReceiptQuantity();
|
BigDecimal receiptQuantity = receiptMaterialDetailDO.getReceiptQuantity();
|
||||||
if (receiptQuantity == null) {
|
if (receiptQuantity == null) {
|
||||||
@@ -1999,8 +2204,16 @@ public class StockReceiptOrderApplicationService {
|
|||||||
returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO);
|
returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO);
|
||||||
}
|
}
|
||||||
returnStockReceiptOrderDO.setMaterialDetailList(returnReceiptMaterialDetailDOList);
|
returnStockReceiptOrderDO.setMaterialDetailList(returnReceiptMaterialDetailDOList);
|
||||||
returnStockReceiptOrderDO.setActualQuantity(totalActualQuantity);
|
if (pcFullPageOverwrite) {
|
||||||
returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity);
|
returnStockReceiptOrderDO.setReceiptSubmitOverwriteFromPage(true);
|
||||||
|
returnStockReceiptOrderDO.setReceiptQuantity(wholeOrderReceiptQtySumHolder[0]);
|
||||||
|
returnStockReceiptOrderDO.setReceiptMaterialQuantity(materialKindsCompleteHolder[0]);
|
||||||
|
returnStockReceiptOrderDO.setActualQuantity(BigDecimal.ZERO);
|
||||||
|
returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(0);
|
||||||
|
} else {
|
||||||
|
returnStockReceiptOrderDO.setActualQuantity(totalActualQuantity);
|
||||||
|
returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity);
|
||||||
|
}
|
||||||
return returnStockReceiptOrderDO;
|
return returnStockReceiptOrderDO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
@@ -170,6 +170,13 @@ public class StockReceiptOrderDO extends StockInOrderBaseDO {
|
|||||||
|
|
||||||
@ApiModelProperty("是否来自PDA收货:true-PDA收货完成,false-PC收货完成(用于上架单是否下发:PDA=是,PC=否)")
|
@ApiModelProperty("是否来自PDA收货:true-PDA收货完成,false-PC收货完成(用于上架单是否下发:PDA=是,PC=否)")
|
||||||
private Boolean fromPda;
|
private Boolean fromPda;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PC 收货确认:以页面提交数据为全量实绩覆盖落库(由 Application 层根据入口设置,非前端传入)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(hidden = true)
|
||||||
|
private Boolean receiptSubmitOverwriteFromPage;
|
||||||
|
|
||||||
@ApiModelProperty("费用")
|
@ApiModelProperty("费用")
|
||||||
List<ReceiptOrderAccount> receiptOrderAccountList;
|
List<ReceiptOrderAccount> receiptOrderAccountList;
|
||||||
}
|
}
|
||||||
+20
-7
@@ -429,12 +429,14 @@ public class StockReceiptOrderDomainService {
|
|||||||
|
|
||||||
private void saveAmount(StockReceiptOrderDO stockReceiptOrderDO) {
|
private void saveAmount(StockReceiptOrderDO stockReceiptOrderDO) {
|
||||||
Long receiptOrderId = stockReceiptOrderDO.getReceiptOrderId();
|
Long receiptOrderId = stockReceiptOrderDO.getReceiptOrderId();
|
||||||
List<ReceiptOrderAccount> receiptOrderAccountList = stockReceiptOrderDO.getReceiptOrderAccountList();
|
|
||||||
for (ReceiptOrderAccount receiptOrderAccount : receiptOrderAccountList) {
|
|
||||||
receiptOrderAccount.setOrderId(receiptOrderId);
|
|
||||||
}
|
|
||||||
receiptOrderAccountService.remove(new QueryWrapper<ReceiptOrderAccount>().lambda().eq(ReceiptOrderAccount::getOrderId, receiptOrderId));
|
receiptOrderAccountService.remove(new QueryWrapper<ReceiptOrderAccount>().lambda().eq(ReceiptOrderAccount::getOrderId, receiptOrderId));
|
||||||
receiptOrderAccountService.saveBatch(receiptOrderAccountList);
|
List<ReceiptOrderAccount> receiptOrderAccountList = stockReceiptOrderDO.getReceiptOrderAccountList();
|
||||||
|
if (receiptOrderAccountList != null && !receiptOrderAccountList.isEmpty()) {
|
||||||
|
for (ReceiptOrderAccount receiptOrderAccount : receiptOrderAccountList) {
|
||||||
|
receiptOrderAccount.setOrderId(receiptOrderId);
|
||||||
|
}
|
||||||
|
receiptOrderAccountService.saveBatch(receiptOrderAccountList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -694,8 +696,19 @@ public class StockReceiptOrderDomainService {
|
|||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
StockReceiptOrder stockReceiptOrder = new StockReceiptOrder();
|
StockReceiptOrder stockReceiptOrder = new StockReceiptOrder();
|
||||||
stockReceiptOrder.setReceiptOrderId(stockReceiptOrderPO.getReceiptOrderId());
|
stockReceiptOrder.setReceiptOrderId(stockReceiptOrderPO.getReceiptOrderId());
|
||||||
stockReceiptOrder.setReceiptQuantity(stockReceiptOrderPO.getReceiptQuantity().add(stockReceiptOrderDO.getActualQuantity()));
|
if (Boolean.TRUE.equals(stockReceiptOrderDO.getReceiptSubmitOverwriteFromPage())) {
|
||||||
stockReceiptOrder.setReceiptMaterialQuantity(stockReceiptOrderPO.getReceiptMaterialQuantity() + stockReceiptOrderDO.getActualReceiptMaterialQuantity());
|
BigDecimal rq = stockReceiptOrderDO.getReceiptQuantity();
|
||||||
|
stockReceiptOrder.setReceiptQuantity(rq != null ? rq : BigDecimal.ZERO);
|
||||||
|
Integer rmq = stockReceiptOrderDO.getReceiptMaterialQuantity();
|
||||||
|
stockReceiptOrder.setReceiptMaterialQuantity(rmq != null ? rmq : 0);
|
||||||
|
} else {
|
||||||
|
BigDecimal prevRq = stockReceiptOrderPO.getReceiptQuantity() != null ? stockReceiptOrderPO.getReceiptQuantity() : BigDecimal.ZERO;
|
||||||
|
BigDecimal addAq = stockReceiptOrderDO.getActualQuantity() != null ? stockReceiptOrderDO.getActualQuantity() : BigDecimal.ZERO;
|
||||||
|
stockReceiptOrder.setReceiptQuantity(prevRq.add(addAq));
|
||||||
|
int prevRmq = stockReceiptOrderPO.getReceiptMaterialQuantity() != null ? stockReceiptOrderPO.getReceiptMaterialQuantity() : 0;
|
||||||
|
int addArm = stockReceiptOrderDO.getActualReceiptMaterialQuantity() != null ? stockReceiptOrderDO.getActualReceiptMaterialQuantity() : 0;
|
||||||
|
stockReceiptOrder.setReceiptMaterialQuantity(prevRmq + addArm);
|
||||||
|
}
|
||||||
stockReceiptOrder.setStatus(2);
|
stockReceiptOrder.setStatus(2);
|
||||||
stockReceiptOrder.setUpdateBy(loginUser.getUserid());
|
stockReceiptOrder.setUpdateBy(loginUser.getUserid());
|
||||||
stockReceiptOrder.setUpdateByName(loginUser.getUsername());
|
stockReceiptOrder.setUpdateByName(loginUser.getUsername());
|
||||||
|
|||||||
Reference in New Issue
Block a user