feat: 采购删主表同时删明细,推荐计算在途

This commit is contained in:
JR
2025-07-30 10:49:45 +08:00
parent bdb201e015
commit 7331563729

View File

@@ -81,7 +81,8 @@ public class WmsPurchasePlanServiceImpl implements IWmsPurchasePlanService {
List<WmsProductBom> bomList = wmsProductBomService.listByProductId(detail.getProductId()); List<WmsProductBom> bomList = wmsProductBomService.listByProductId(detail.getProductId());
for (WmsProductBom bom : bomList) { for (WmsProductBom bom : bomList) {
BigDecimal needQty = bom.getQuantity().multiply(detail.getQuantity()); BigDecimal needQty = bom.getQuantity().multiply(detail.getQuantity());
WmsPurchasePlanDetailVo vo = materialMap.getOrDefault(bom.getRawMaterialId(), new WmsPurchasePlanDetailVo()); WmsPurchasePlanDetailVo vo =
materialMap.getOrDefault(bom.getRawMaterialId(), new WmsPurchasePlanDetailVo());
vo.setRawMaterialId(bom.getRawMaterialId()); vo.setRawMaterialId(bom.getRawMaterialId());
vo.setQuantity(vo.getQuantity() == null ? needQty : vo.getQuantity().add(needQty)); vo.setQuantity(vo.getQuantity() == null ? needQty : vo.getQuantity().add(needQty));
vo.setUnit(bom.getUnit()); vo.setUnit(bom.getUnit());
@@ -98,19 +99,20 @@ public class WmsPurchasePlanServiceImpl implements IWmsPurchasePlanService {
vo.setDemand(vo.getQuantity()); vo.setDemand(vo.getQuantity());
BigDecimal stockQty = wmsStockService.getStockByItemId(vo.getRawMaterialId()); BigDecimal stockQty = wmsStockService.getStockByItemId(vo.getRawMaterialId());
// 库存量 // 库存量
if(stockQty == null){
stockQty = BigDecimal.ZERO;
}
vo.setInventory(stockQty); vo.setInventory(stockQty);
// 在途量 // 在途量
BigDecimal onTheWayQty = BigDecimal.ZERO; BigDecimal onTheWayQty = BigDecimal.ZERO;
BigDecimal byRawMaterialIdAndOnTheWay = wmsPurchasePlanDetailMapper.getByRawMaterialIdAndOnTheWay(vo.getRawMaterialId()); BigDecimal byRawMaterialIdAndOnTheWay =
wmsPurchasePlanDetailMapper.getByRawMaterialIdAndOnTheWay(vo.getRawMaterialId());
if (byRawMaterialIdAndOnTheWay != null) { if (byRawMaterialIdAndOnTheWay != null) {
onTheWayQty = byRawMaterialIdAndOnTheWay; onTheWayQty = byRawMaterialIdAndOnTheWay;
} }
vo.setOnTheWay(onTheWayQty); vo.setOnTheWay(onTheWayQty);
// 要是物料不是产品 // 计算推荐采购量
BigDecimal recommendQty = BigDecimal.ZERO; BigDecimal recommendQty = vo.getQuantity().subtract(onTheWayQty).subtract(stockQty);
if (stockQty != null) {
recommendQty = vo.getQuantity().subtract(stockQty);
}
vo.setQuantity(recommendQty.compareTo(BigDecimal.ZERO) > 0 ? recommendQty : BigDecimal.ZERO); vo.setQuantity(recommendQty.compareTo(BigDecimal.ZERO) > 0 ? recommendQty : BigDecimal.ZERO);
} }
// 4. 组装主VO // 4. 组装主VO
@@ -196,9 +198,11 @@ public class WmsPurchasePlanServiceImpl implements IWmsPurchasePlanService {
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ // 逻辑删除采购明细
//TODO 做一些业务上的校验,判断是否需要校验 LambdaQueryWrapper<WmsPurchasePlanDetail> lqw = Wrappers.lambdaQuery();
} lqw.in(WmsPurchasePlanDetail::getPlanId, ids);
wmsPurchasePlanDetailMapper.delete(lqw);
// 逻辑删除采购计划主表
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
} }