Browse Source

[fix] 销售管理

修复采购入库的来源为采购订单,并且该采购订单关联多个采购计划的情况出行查询为空指针的bug
dev
liuxiaoxu 2 months ago
parent
commit
9aa0a42515
  1. 197
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java

197
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java

@ -1,6 +1,8 @@
package com.ruoyi.warehouse.service.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@ -1829,109 +1831,120 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
// 新增采购入库库存历史记录
String purchasePlanCode = purchaseOrderMapper.selectPurchasePlanCodeByCode(correlationCode);
PurchasePlan purchasePlan = purchasePlanMapper.selectPurchasePlanByPlanCode(purchasePlanCode);
if ("2".equals(purchasePlan.getPurchasePlanType())){ //来源为请购单
List<PurchaseOrderChild> purchaseOrderChildList = purchaseOrderChildMapper.selectPurchaseOrderChildByOrderCode(correlationCode);
for (PurchaseOrderChild purchaseOrderChild : purchaseOrderChildList) {
if(purchaseOrderChild.getMaterialNo().equals(materialNo)){
WarehouseInventoryInquiry oldWarehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
Integer historicalTotal = oldWarehouseInventoryInquiry.getHistoricalTotal();
historicalTotal += storageNum;
oldWarehouseInventoryInquiry.setHistoricalTotal(historicalTotal);
Integer availableStockNum = oldWarehouseInventoryInquiry.getAvailableStockNum();
if (availableStockNum == null || availableStockNum == 0){
availableStockNum = storageNum;
}else {
availableStockNum += storageNum;
}
List<String> purchasePlanCodes = new ArrayList<>();
if (StringUtils.isEmpty(purchasePlanCode)){
throw new BusinessException("找不到与采购单号关联的采购计划号");
}
oldWarehouseInventoryInquiry.setAvailableStockNum(availableStockNum);
if (StringUtils.isNotEmpty(purchasePlanCode)){
String[] splitPurchasePlanCode = purchasePlanCode.split(",");
purchasePlanCodes = Arrays.asList(splitPurchasePlanCode);
}
List<PurchasePlan> purchasePlans = purchasePlanMapper.selectPurchaseOrderByPlanCodeList(purchasePlanCodes);
for (PurchasePlan purchasePlan : purchasePlans) {
if ("2".equals(purchasePlan.getPurchasePlanType())){ //来源为请购单
List<PurchaseOrderChild> purchaseOrderChildList = purchaseOrderChildMapper.selectPurchaseOrderChildByOrderCode(correlationCode);
for (PurchaseOrderChild purchaseOrderChild : purchaseOrderChildList) {
if(purchaseOrderChild.getMaterialNo().equals(materialNo)){
WarehouseInventoryInquiry oldWarehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
Integer historicalTotal = oldWarehouseInventoryInquiry.getHistoricalTotal();
historicalTotal += storageNum;
oldWarehouseInventoryInquiry.setHistoricalTotal(historicalTotal);
Integer availableStockNum = oldWarehouseInventoryInquiry.getAvailableStockNum();
if (availableStockNum == null || availableStockNum == 0){
availableStockNum = storageNum;
}else {
availableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setAvailableStockNum(availableStockNum);
// Integer oldAvailableStockNum = warehouseInventoryInquiryService.calculateAvailableStockNum(materialNo);
// oldWarehouseInventoryInquiry.setAvailableStockNum(oldAvailableStockNum + storageNum); //加上本次入库的数量
Integer sharedAvailableStockNum = oldWarehouseInventoryInquiry.getSharedAvailableStockNum();//共享可用库存
if (sharedAvailableStockNum == null || sharedAvailableStockNum == 0){
sharedAvailableStockNum = storageNum;
}else {
sharedAvailableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setSharedAvailableStockNum(sharedAvailableStockNum);
int updateResult = warehouseInventoryInquiryService.updateWarehouseInventoryInquiry(oldWarehouseInventoryInquiry);
if (updateResult <= 0){
throw new BusinessException("更新库存查询记录失败!");
}
remindService.warehouseSafetyStockRemind(oldWarehouseInventoryInquiry);
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(materialNo);
inquiryDetail.setInquiryWarehouseType("0");//采购入库
inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate());
inquiryDetail.setInquiryOrderType("0");
inquiryDetail.setInquiryBusinessType("0");
inquiryDetail.setCorrelationCode(storageCode);
inquiryDetail.setIncreaseDecreaseNum(warehouseStorageOrderDetail.getStorageNum());
inquiryDetail.setInventoryIncreaseDecrease("1");
int insertDetailResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if (insertDetailResult <= 0){
throw new BusinessException("新增库存履历失败!");
Integer sharedAvailableStockNum = oldWarehouseInventoryInquiry.getSharedAvailableStockNum();//共享可用库存
if (sharedAvailableStockNum == null || sharedAvailableStockNum == 0){
sharedAvailableStockNum = storageNum;
}else {
sharedAvailableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setSharedAvailableStockNum(sharedAvailableStockNum);
int updateResult = warehouseInventoryInquiryService.updateWarehouseInventoryInquiry(oldWarehouseInventoryInquiry);
if (updateResult <= 0){
throw new BusinessException("更新库存查询记录失败!");
}
remindService.warehouseSafetyStockRemind(oldWarehouseInventoryInquiry);
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(materialNo);
inquiryDetail.setInquiryWarehouseType("0");//采购入库
inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate());
inquiryDetail.setInquiryOrderType("0");
inquiryDetail.setInquiryBusinessType("0");
inquiryDetail.setCorrelationCode(storageCode);
inquiryDetail.setIncreaseDecreaseNum(warehouseStorageOrderDetail.getStorageNum());
inquiryDetail.setInventoryIncreaseDecrease("1");
int insertDetailResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if (insertDetailResult <= 0){
throw new BusinessException("新增库存履历失败!");
}
}
}
}
}else if ("1".equals(purchasePlan.getPurchasePlanType())){ //生产订单
List<PurchaseOrderChild> purchaseOrderChildList = purchaseOrderChildMapper.selectPurchaseOrderChildByOrderCode(correlationCode);
for (PurchaseOrderChild purchaseOrderChild : purchaseOrderChildList) {
if (purchaseOrderChild.getMaterialNo().equals(materialNo)) {
WarehouseInventoryInquiry oldWarehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
Integer historicalTotal = oldWarehouseInventoryInquiry.getHistoricalTotal();
historicalTotal += storageNum;
oldWarehouseInventoryInquiry.setHistoricalTotal(historicalTotal);
Integer availableStockNum = oldWarehouseInventoryInquiry.getAvailableStockNum();
if (availableStockNum == null || availableStockNum == 0){
availableStockNum = storageNum;
}else {
availableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setAvailableStockNum(availableStockNum);
}else if ("1".equals(purchasePlan.getPurchasePlanType())){ //生产订单
List<PurchaseOrderChild> purchaseOrderChildList = purchaseOrderChildMapper.selectPurchaseOrderChildByOrderCode(correlationCode);
for (PurchaseOrderChild purchaseOrderChild : purchaseOrderChildList) {
if (purchaseOrderChild.getMaterialNo().equals(materialNo)) {
WarehouseInventoryInquiry oldWarehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
Integer historicalTotal = oldWarehouseInventoryInquiry.getHistoricalTotal();
historicalTotal += storageNum;
oldWarehouseInventoryInquiry.setHistoricalTotal(historicalTotal);
Integer availableStockNum = oldWarehouseInventoryInquiry.getAvailableStockNum();
if (availableStockNum == null || availableStockNum == 0){
availableStockNum = storageNum;
}else {
availableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setAvailableStockNum(availableStockNum);
// Integer oldAvailableStockNum = warehouseInventoryInquiryService.calculateAvailableStockNum(materialNo);
Integer fixedAvailableStockNum = oldWarehouseInventoryInquiry.getFixedAvailableStockNum();//固定可用库存
if (fixedAvailableStockNum == null || fixedAvailableStockNum == 0){
fixedAvailableStockNum = storageNum;
}else {
fixedAvailableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setFixedAvailableStockNum(fixedAvailableStockNum);
int updateResult = warehouseInventoryInquiryService.updateWarehouseInventoryInquiry(oldWarehouseInventoryInquiry);
if (updateResult <= 0) {
throw new BusinessException("更新库存查询记录失败!");
}
remindService.warehouseSafetyStockRemind(oldWarehouseInventoryInquiry);
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(materialNo);
inquiryDetail.setInquiryWarehouseType("0");//采购入库
inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate());
inquiryDetail.setInquiryOrderType("0");
inquiryDetail.setInquiryBusinessType("0");
inquiryDetail.setCorrelationCode(storageCode);
inquiryDetail.setIncreaseDecreaseNum(warehouseStorageOrderDetail.getStorageNum());
inquiryDetail.setInventoryIncreaseDecrease("1");
int insertDetailResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if (insertDetailResult <= 0) {
throw new BusinessException("新增库存履历失败!");
Integer fixedAvailableStockNum = oldWarehouseInventoryInquiry.getFixedAvailableStockNum();//固定可用库存
if (fixedAvailableStockNum == null || fixedAvailableStockNum == 0){
fixedAvailableStockNum = storageNum;
}else {
fixedAvailableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setFixedAvailableStockNum(fixedAvailableStockNum);
int updateResult = warehouseInventoryInquiryService.updateWarehouseInventoryInquiry(oldWarehouseInventoryInquiry);
if (updateResult <= 0) {
throw new BusinessException("更新库存查询记录失败!");
}
remindService.warehouseSafetyStockRemind(oldWarehouseInventoryInquiry);
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(materialNo);
inquiryDetail.setInquiryWarehouseType("0");//采购入库
inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate());
inquiryDetail.setInquiryOrderType("0");
inquiryDetail.setInquiryBusinessType("0");
inquiryDetail.setCorrelationCode(storageCode);
inquiryDetail.setIncreaseDecreaseNum(warehouseStorageOrderDetail.getStorageNum());
inquiryDetail.setInventoryIncreaseDecrease("1");
int insertDetailResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if (insertDetailResult <= 0) {
throw new BusinessException("新增库存履历失败!");
}
}
}
}
}
}else if(warehouseStorageType.equals("5")){//新增生产入库库存历史记录
WarehouseInventoryInquiry oldWarehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);

Loading…
Cancel
Save