| | |
| | | @Override |
| | | public Boolean frozenStock(StockInventoryDto stockInventoryDto) { |
| | | StockInventory stockInventory = stockInventoryMapper.selectById(stockInventoryDto.getId()); |
| | | if (stockInventory.getQualitity().compareTo(stockInventoryDto.getLockedQuantity()) < 0) { |
| | | throw new RuntimeException("冻结数量不能超过库存数量"); |
| | | if (ObjectUtils.isEmpty(stockInventory)) { |
| | | throw new ServiceException("库存记录不存在"); |
| | | } |
| | | if (ObjectUtils.isEmpty(stockInventory.getLockedQuantity())) { |
| | | stockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity()); |
| | | } else { |
| | | stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().add(stockInventoryDto.getLockedQuantity())); |
| | | if (ObjectUtils.isEmpty(stockInventoryDto.getLockedQuantity()) || stockInventoryDto.getLockedQuantity().compareTo(BigDecimal.ZERO) <= 0) { |
| | | throw new ServiceException("冻结数量必须大于0"); |
| | | } |
| | | BigDecimal totalQty = ObjectUtils.isEmpty(stockInventory.getQualitity()) ? BigDecimal.ZERO : stockInventory.getQualitity(); |
| | | BigDecimal currentLockedQty = ObjectUtils.isEmpty(stockInventory.getLockedQuantity()) ? BigDecimal.ZERO : stockInventory.getLockedQuantity(); |
| | | BigDecimal availableQty = totalQty.subtract(currentLockedQty); |
| | | if (stockInventoryDto.getLockedQuantity().compareTo(availableQty) > 0) { |
| | | throw new ServiceException("冻结数量不能超过可冻结库存数量"); |
| | | } |
| | | stockInventory.setLockedQuantity(currentLockedQty.add(stockInventoryDto.getLockedQuantity())); |
| | | return this.updateById(stockInventory); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean thawStock(StockInventoryDto stockInventoryDto) { |
| | | StockInventory stockInventory = stockInventoryMapper.selectById(stockInventoryDto.getId()); |
| | | if (stockInventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity()) < 0) { |
| | | throw new RuntimeException("解冻数量不能超过冻结数量"); |
| | | if (ObjectUtils.isEmpty(stockInventory)) { |
| | | throw new ServiceException("库存记录不存在"); |
| | | } |
| | | stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity())); |
| | | if (ObjectUtils.isEmpty(stockInventoryDto.getLockedQuantity()) || stockInventoryDto.getLockedQuantity().compareTo(BigDecimal.ZERO) <= 0) { |
| | | throw new ServiceException("解冻数量必须大于0"); |
| | | } |
| | | BigDecimal currentLockedQty = ObjectUtils.isEmpty(stockInventory.getLockedQuantity()) ? BigDecimal.ZERO : stockInventory.getLockedQuantity(); |
| | | if (currentLockedQty.compareTo(stockInventoryDto.getLockedQuantity()) < 0) { |
| | | throw new ServiceException("解冻数量不能超过冻结数量"); |
| | | } |
| | | stockInventory.setLockedQuantity(currentLockedQty.subtract(stockInventoryDto.getLockedQuantity())); |
| | | return this.updateById(stockInventory); |
| | | } |
| | | |