收货确认时覆盖原来的收货数量,费用以当前页面提交的数据计算
This commit is contained in:
+219
-6
@@ -1372,8 +1372,8 @@ public class StockReceiptOrderApplicationService {
|
||||
* @return Boolean
|
||||
*/
|
||||
public Boolean receivingGoods(StockReceiptOrderDO stockReceiptOrderDO){
|
||||
//收货装配参数
|
||||
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO);
|
||||
//收货装配参数(PC:页面全量覆盖累计已收与费用,不与历史累加)
|
||||
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO, true);
|
||||
assembleStockReceiptOrderDO.setFromPda(false); // PC收货完成,上架单是否下发=否
|
||||
return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO);
|
||||
}
|
||||
@@ -1400,7 +1400,7 @@ public class StockReceiptOrderApplicationService {
|
||||
// 主项子项结构:将 children 第一条(parent_copy)赋值给主项并删除
|
||||
assignFirstChildToParentAndRemove(stockReceiptOrderDO);
|
||||
}
|
||||
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO);
|
||||
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO, false);
|
||||
if (CollectionUtils.isEmpty(assembleStockReceiptOrderDO.getMaterialDetailList())) {
|
||||
throw new ServiceException("无有效收货数据,请确认已填写收货数量(收货数量不能全部为0)");
|
||||
}
|
||||
@@ -1698,14 +1698,212 @@ public class StockReceiptOrderApplicationService {
|
||||
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 收货装配参数
|
||||
* @author ZhouGY
|
||||
* @date 2024/5/22 9:27
|
||||
* @param stockReceiptOrderDO
|
||||
* @param pcFullPageOverwrite PC 收货确认 true=页面全量覆盖累计已收(不累加历史)
|
||||
* @return Boolean
|
||||
*/
|
||||
private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO) {
|
||||
private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO, boolean pcFullPageOverwrite) {
|
||||
StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(stockReceiptOrderDO.getReceiptOrderId());
|
||||
if (stockReceiptOrderPO == null){
|
||||
throw new ServiceException("收货单不存在");
|
||||
@@ -1734,6 +1932,8 @@ public class StockReceiptOrderApplicationService {
|
||||
.collect(Collectors.toMap(ReceiptMaterialDetailPO::getUniqueId, Function.identity()));
|
||||
BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数
|
||||
int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数
|
||||
BigDecimal[] wholeOrderReceiptQtySumHolder = new BigDecimal[]{BigDecimal.ZERO};
|
||||
int[] materialKindsCompleteHolder = new int[]{0};
|
||||
List<ReceiptMaterialDetailDO> returnReceiptMaterialDetailDOList = new ArrayList<>();
|
||||
for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){
|
||||
//设置物料更多属性信息:优先用 materialDetailId 查找,若为空则用 uniqueId 查找(兼容 PDA 只传 uniqueId 的场景)
|
||||
@@ -1747,6 +1947,11 @@ public class StockReceiptOrderApplicationService {
|
||||
if (receiptMaterialDetailPO == null){
|
||||
throw new ServiceException("物料明细不存在");
|
||||
}
|
||||
if (pcFullPageOverwrite) {
|
||||
appendReceiptLinePcFullPageOverwrite(receiptMaterialDetailDO, receiptMaterialDetailPO, receiptMaterialDetailDbMap,
|
||||
receiptMaterialDetailDbMapByUniqueId, returnReceiptMaterialDetailDOList, wholeOrderReceiptQtySumHolder, materialKindsCompleteHolder);
|
||||
continue;
|
||||
}
|
||||
// receiptQuantity 空值保护,PDA 未传时按 0 处理
|
||||
BigDecimal receiptQuantity = receiptMaterialDetailDO.getReceiptQuantity();
|
||||
if (receiptQuantity == null) {
|
||||
@@ -1999,8 +2204,16 @@ public class StockReceiptOrderApplicationService {
|
||||
returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO);
|
||||
}
|
||||
returnStockReceiptOrderDO.setMaterialDetailList(returnReceiptMaterialDetailDOList);
|
||||
returnStockReceiptOrderDO.setActualQuantity(totalActualQuantity);
|
||||
returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity);
|
||||
if (pcFullPageOverwrite) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
+7
@@ -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;
|
||||
}
|
||||
+20
-7
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user