PC上架数量修改
This commit is contained in:
+28
-4
@@ -542,11 +542,15 @@ public class StockShelfOrderDomainService {
|
||||
stockShelfOrder.setShelfOrderId(stockShelfOrderDO.getShelfOrderId());
|
||||
stockShelfOrder.setStatus(2);
|
||||
BigDecimal currentShelvesQuantity = stockShelfOrderPO.getShelvesQuantity() != null ? stockShelfOrderPO.getShelvesQuantity() : BigDecimal.ZERO;
|
||||
BigDecimal actualQuantity = stockShelfOrderDO.getActualQuantity() != null ? stockShelfOrderDO.getActualQuantity() : BigDecimal.ZERO;
|
||||
BigDecimal reduce = stockShelfOrderDO.getMaterialDetailList().stream().map(ShelfMaterialDetailDO::getShelvesQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
// PDA(fromApp=true)累加已有上架数量;PC 直接覆盖
|
||||
BigDecimal orderIncrementQuantity = stockShelfOrderDO.getActualQuantity() != null ? stockShelfOrderDO.getActualQuantity() : BigDecimal.ZERO;
|
||||
// PDA(fromApp=true):本单本次作业量 = assembleParamByShelf 汇总的 actualQuantity(含主行+子行),累加到单头
|
||||
// PC:单头「上架数量」= 各明细累计已上架数量之和(递归含子行),不可仅顶层 shelvesQuantity 汇总,否则子行数量漏计、统计与完成判断错误
|
||||
boolean fromApp = Boolean.TRUE.equals(stockShelfOrderDO.getFromApp());
|
||||
stockShelfOrder.setShelvesQuantity(fromApp ? currentShelvesQuantity.add(reduce) : reduce);
|
||||
if (fromApp) {
|
||||
stockShelfOrder.setShelvesQuantity(currentShelvesQuantity.add(orderIncrementQuantity));
|
||||
} else {
|
||||
stockShelfOrder.setShelvesQuantity(sumShelfDetailAlreadyShelvesQuantityRecursive(stockShelfOrderDO.getMaterialDetailList()));
|
||||
}
|
||||
stockShelfOrder.setShelvesMaterialQuantity(stockShelfOrderPO.getShelvesMaterialQuantity() + stockShelfOrderDO.getActualReceiptMaterialQuantity());
|
||||
stockShelfOrder.setUpdateBy(loginUser.getUserid());
|
||||
stockShelfOrder.setUpdateByName(loginUser.getUsername());
|
||||
@@ -560,6 +564,26 @@ public class StockShelfOrderDomainService {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归汇总上架明细的累计已上架数量(主行 + 子行),用于 PC 端写入上架单头 shelves_quantity。
|
||||
*/
|
||||
private BigDecimal sumShelfDetailAlreadyShelvesQuantityRecursive(List<ShelfMaterialDetailDO> list) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
BigDecimal sum = BigDecimal.ZERO;
|
||||
for (ShelfMaterialDetailDO d : list) {
|
||||
if (d == null) {
|
||||
continue;
|
||||
}
|
||||
if (d.getAlreadyShelvesQuantity() != null) {
|
||||
sum = sum.add(d.getAlreadyShelvesQuantity());
|
||||
}
|
||||
sum = sum.add(sumShelfDetailAlreadyShelvesQuantityRecursive(d.getChildren()));
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param stockShelfOrderPO
|
||||
* @param status 入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入
|
||||
|
||||
Reference in New Issue
Block a user