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

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
@@ -170,6 +170,13 @@ public class StockReceiptOrderDO extends StockInOrderBaseDO {
@ApiModelProperty("是否来自PDA收货:true-PDA收货完成,false-PC收货完成(用于上架单是否下发:PDA=是,PC=否)")
private Boolean fromPda;
/**
* PC 收货确认:以页面提交数据为全量实绩覆盖落库(由 Application 层根据入口设置,非前端传入)
*/
@ApiModelProperty(hidden = true)
private Boolean receiptSubmitOverwriteFromPage;
@ApiModelProperty("费用")
List<ReceiptOrderAccount> receiptOrderAccountList;
}
@@ -429,12 +429,14 @@ public class StockReceiptOrderDomainService {
private void saveAmount(StockReceiptOrderDO stockReceiptOrderDO) {
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.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();
StockReceiptOrder stockReceiptOrder = new StockReceiptOrder();
stockReceiptOrder.setReceiptOrderId(stockReceiptOrderPO.getReceiptOrderId());
stockReceiptOrder.setReceiptQuantity(stockReceiptOrderPO.getReceiptQuantity().add(stockReceiptOrderDO.getActualQuantity()));
stockReceiptOrder.setReceiptMaterialQuantity(stockReceiptOrderPO.getReceiptMaterialQuantity() + stockReceiptOrderDO.getActualReceiptMaterialQuantity());
if (Boolean.TRUE.equals(stockReceiptOrderDO.getReceiptSubmitOverwriteFromPage())) {
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.setUpdateBy(loginUser.getUserid());
stockReceiptOrder.setUpdateByName(loginUser.getUsername());