feat: 采购删主表同时删明细,推荐计算在途
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user