收货确认时覆盖原来的收货数量,费用以当前页面提交的数据计算

This commit is contained in:
秦鸿展
2026-04-07 14:21:24 +08:00
parent f5e364093e
commit cdb5d52b4d
3 changed files with 246 additions and 13 deletions
@@ -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;
} }
@@ -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;
} }
@@ -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());