|
|
@ -357,6 +357,11 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService |
|
|
|
List<PurchasePlanSelectSupplierVo> purchasePlanSelectSupplierVoList = addPurchaseOrder.getPurchasePlanSelectSupplierVoList(); |
|
|
|
List<PurchasePlanSelectMaterialVo> purchasePlanSelectMaterialVoList = addPurchaseOrder.getPurchasePlanSelectMaterialVoList(); |
|
|
|
|
|
|
|
String warehouseCode = purchasePlanTwo.getWarehouseCode(); |
|
|
|
if (StringUtils.isEmpty(warehouseCode)){ |
|
|
|
throw new BusinessException("请选择仓库ID"); |
|
|
|
} |
|
|
|
|
|
|
|
//先不判断处理本次占用库存数
|
|
|
|
//判断本次采购数
|
|
|
|
boolean anyNullThisPurchaseNum = purchasePlanSelectMaterialVoList.stream().anyMatch(item -> item.getThisPurchaseNum() == null); |
|
|
@ -460,6 +465,28 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService |
|
|
|
Integer thisPurchaseNum = purchasePlanSelectMaterialVo.getThisPurchaseNum(); |
|
|
|
Integer sharedInventoryOccupancyNum = purchasePlanSelectMaterialVo.getSharedInventoryOccupancyNum(); |
|
|
|
|
|
|
|
|
|
|
|
//库存查询
|
|
|
|
WarehouseInventoryInquiry warehouseInventoryInquiry = inventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo); |
|
|
|
if ( sharedInventoryOccupancyNum != null && sharedInventoryOccupancyNum > 0){ |
|
|
|
Integer sharedAvailableStockNum = Optional.ofNullable(warehouseInventoryInquiry.getSharedAvailableStockNum()).orElse(0); |
|
|
|
|
|
|
|
Integer availableStockNum = Optional.ofNullable(warehouseInventoryInquiry.getAvailableStockNum()).orElse(0); |
|
|
|
Integer lockStockNum = Optional.ofNullable(warehouseInventoryInquiry.getLockStockNum()).orElse(0); |
|
|
|
warehouseInventoryInquiry.setAvailableStockNum(availableStockNum - sharedInventoryOccupancyNum); |
|
|
|
warehouseInventoryInquiry.setSharedAvailableStockNum(sharedAvailableStockNum - sharedInventoryOccupancyNum); |
|
|
|
warehouseInventoryInquiry.setLockStockNum(lockStockNum + sharedInventoryOccupancyNum); |
|
|
|
warehouseInventoryInquiry.setNoOccupancyNum(sharedAvailableStockNum - sharedInventoryOccupancyNum); |
|
|
|
warehouseInventoryInquiry.setUpdateTime(new Date()); |
|
|
|
warehouseInventoryInquiry.setUpdateBy(ShiroUtils.getLoginName()); |
|
|
|
int updateInventoryInquiry = inventoryInquiryMapper.updateWarehouseInventoryInquiry(warehouseInventoryInquiry); |
|
|
|
if (updateInventoryInquiry <= 0){ |
|
|
|
throw new BusinessException("更新库存查询记录失败"); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 检查是否有共享库存占用数,没有的话直接使用thisPurchaseNum
|
|
|
|
Integer remainingSharedInventoryOccupancyNum = 0; |
|
|
|
if (sharedInventoryOccupancyNum == null || sharedInventoryOccupancyNum <= 0) { |
|
|
@ -714,11 +741,59 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService |
|
|
|
if (purchaseOrder.getAuditStatus().equals("2")){ |
|
|
|
purchaseOrderAuditRefuse(purchaseOrder); |
|
|
|
} |
|
|
|
//处理审核通过的情况
|
|
|
|
if (purchaseOrder.getAuditStatus().equals("1")){ |
|
|
|
purchaseOrderAuditApprove(purchaseOrder); |
|
|
|
} |
|
|
|
|
|
|
|
return purchaseOrderMapper.updatePurchaseOrder(purchaseOrder); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 采购订单审核通过,需要更新库存查询数据 |
|
|
|
* */ |
|
|
|
|
|
|
|
private void purchaseOrderAuditApprove(PurchaseOrder purchaseOrder) { |
|
|
|
|
|
|
|
Long purchaseOrderId = purchaseOrder.getPurchaseOrderId(); |
|
|
|
PurchaseOrderVo purchaseOrderVo = purchaseOrderMapper.selectPurchaseOrderById(purchaseOrderId); |
|
|
|
|
|
|
|
String purchaseOrderCode = purchaseOrderVo.getPurchaseOrderCode(); |
|
|
|
|
|
|
|
|
|
|
|
//得到采购订单子表的数据
|
|
|
|
List<PurchaseOrderChild> purchaseOrderChildList = purchaseOrderChildMapper.selectPurchaseOrderChildByOrderCode(purchaseOrderCode); |
|
|
|
|
|
|
|
String purchasePlanCode = purchaseOrderVo.getPurchasePlanCode(); |
|
|
|
|
|
|
|
//得到采购计划单号的集合
|
|
|
|
List<String> purchasePlanCodeList = new ArrayList<>(); |
|
|
|
|
|
|
|
if (StringUtils.isNotEmpty(purchasePlanCode)){ |
|
|
|
String[] splitSalesOrderCode = purchasePlanCode.split(","); |
|
|
|
purchasePlanCodeList = Arrays.asList(splitSalesOrderCode); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 得到采购计划主表数据
|
|
|
|
List<PurchasePlan> purchasePlanList = purchasePlanMapper.selectPurchaseOrderByPlanCodeList(purchasePlanCodeList); |
|
|
|
// 得到采购计划子表数据
|
|
|
|
List<PurchasePlanChild> purchasePlanChildList = purchasePlanChildMapper.selectPurchasePlanChildPlanCodeList(purchasePlanCodeList); |
|
|
|
|
|
|
|
|
|
|
|
// 创建一个 map 用于快速查找采购计划子表数据
|
|
|
|
Map<String, List<PurchasePlanChild>> purchasePlanChildMap = purchasePlanChildList.stream() |
|
|
|
.collect(Collectors.groupingBy(PurchasePlanChild::getPurchasePlanCode)); |
|
|
|
|
|
|
|
//
|
|
|
|
// for (PurchasePlanChild purchasePlanChild : purchasePlanChildList) {
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 采购订单审核拒绝,需要更新采购计划数据,采购计划子表数据 |
|
|
|
* */ |
|
|
|