库存计算判空处理;

This commit is contained in:
王奎兴
2026-02-05 15:00:52 +08:00
parent f4ff722b96
commit 5e16ca2436
3 changed files with 28 additions and 6 deletions
@@ -185,6 +185,14 @@ public class HandoverTaskOrderDomainService {
BigDecimal checkVolume = outMaterialDetail.getCheckVolume();
BigDecimal checkGrossWeight = outMaterialDetail.getCheckGrossWeight();
BigDecimal checkNetWeight = outMaterialDetail.getCheckNetWeight();
// 初始化检查数据,避免空指针
checkQuantity = checkQuantity != null ? checkQuantity : BigDecimal.ZERO;
checkArea = checkArea != null ? checkArea : BigDecimal.ZERO;
checkVolume = checkVolume != null ? checkVolume : BigDecimal.ZERO;
checkGrossWeight = checkGrossWeight != null ? checkGrossWeight : BigDecimal.ZERO;
checkNetWeight = checkNetWeight != null ? checkNetWeight : BigDecimal.ZERO;
MaterialInventory materialInventoryPO = materialInventoryMapper.selectById(materialInventoryId);
if (materialInventoryPO != null) {
//更新库存数量
@@ -39,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
@@ -416,6 +417,9 @@ public class OutMaterialDetailImpl extends ServiceImpl<OutMaterialDetailMapper,
for (OutMaterialDetail outMaterialDetail : outMaterialDetailList) {
Long materialInventoryId = outMaterialDetail.getMaterialInventoryId();
BigDecimal allocationQuantity = outMaterialDetail.getAllocationQuantity();
if (ObjectUtils.isEmpty(allocationQuantity)) {
allocationQuantity = BigDecimal.ZERO;
}
MaterialInventory materialInventoryPO = materialInventoryMapper.selectById(materialInventoryId);
if (materialInventoryPO != null) {
//更新库存数量
@@ -534,19 +534,29 @@ public class StockShelfOrderDomainService {
inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord);
} else if (materialInventoryPOS.size() == 1) {
MaterialInventory materialInventory = new MaterialInventory();
BigDecimal shelvesQuantity = shelfMaterialDetail.getShelvesQuantity();
shelvesQuantity = shelvesQuantity != null ? shelvesQuantity : BigDecimal.ZERO;
MaterialInventoryPO materialInventoryPO = materialInventoryPOS.get(0);
BigDecimal newInventoryQuantity = materialInventoryPO.getInventoryQuantity().add(shelfMaterialDetail.getShelvesQuantity());
BigDecimal newInventoryQuantity = materialInventoryPO.getInventoryQuantity().add(shelvesQuantity);
BigDecimal oldInventoryQuantity = materialInventoryPO.getInventoryQuantity();
BigDecimal newAllocationQuantity = materialInventoryPO.getAllocationQuantity().add(shelfMaterialDetail.getShelvesQuantity());
BigDecimal newAllocationQuantity = materialInventoryPO.getAllocationQuantity().add(shelvesQuantity);
BigDecimal oldAllocationQuantity = materialInventoryPO.getAllocationQuantity();
BigDecimal oldArea = materialInventoryPO.getArea();
BigDecimal newArea = oldArea.add(shelfMaterialDetail.getTotalArea());
BigDecimal totalArea = shelfMaterialDetail.getTotalArea();
totalArea = totalArea != null ? totalArea : BigDecimal.ZERO;
BigDecimal newArea = oldArea.add(totalArea);
BigDecimal oldVolume = materialInventoryPO.getVolume();
BigDecimal newVolume = oldVolume.add(shelfMaterialDetail.getTotalVolume());
BigDecimal totalVolume = shelfMaterialDetail.getTotalVolume();
totalVolume = totalVolume != null ? totalVolume : BigDecimal.ZERO;
BigDecimal newVolume = oldVolume.add(totalVolume);
BigDecimal oldGrossWeight = materialInventoryPO.getGrossWeight();
BigDecimal newGrossWeight = oldGrossWeight.add(shelfMaterialDetail.getTotalGrossWeight());
BigDecimal totalGrossWeight = shelfMaterialDetail.getTotalGrossWeight();
totalGrossWeight = totalGrossWeight != null ? totalGrossWeight : BigDecimal.ZERO;
BigDecimal newGrossWeight = oldGrossWeight.add(totalGrossWeight);
BigDecimal oldNetWeight = materialInventoryPO.getNetWeight();
BigDecimal newNetWeight = oldNetWeight.add(shelfMaterialDetail.getTotalNetWeight());
BigDecimal totalNetWeight = shelfMaterialDetail.getTotalNetWeight();
totalNetWeight = totalNetWeight != null ? totalNetWeight : BigDecimal.ZERO;
BigDecimal newNetWeight = oldNetWeight.add(totalNetWeight);
materialInventoryPO.setInventoryQuantity(newInventoryQuantity);
materialInventoryPO.setAllocationQuantity(newAllocationQuantity);