package com.ruoyi.procurementrecord.utils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper; import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockUninventoryDto; import com.ruoyi.stock.pojo.StockInRecord; import com.ruoyi.stock.service.StockInRecordService; import com.ruoyi.stock.service.StockInventoryService; import com.ruoyi.stock.service.StockUninventoryService; import com.ruoyi.stock.service.impl.StockInRecordServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Collections; import java.util.HashMap; import java.util.Map; @Component @RequiredArgsConstructor public class StockUtils { private final ProcurementRecordOutMapper procurementRecordOutMapper; private final ProcurementRecordMapper procurementRecordMapper; private final StockUninventoryService stockUninventoryService; private final StockInventoryService stockInventoryService; private final StockInRecordService stockInRecordService; // 获取商品入库数量,出库数量,剩余库存 // public Map getStockQuantity(Long productModelId) { // // 入库数量 // BigDecimal sumQuantity = procurementRecordMapper.getSumQuantity(productModelId); // // 出库数量 // BigDecimal outQuantity = procurementRecordOutMapper.getSumQuantity(productModelId); // // 剩余库存 // BigDecimal stockQuantity = outQuantity.compareTo(sumQuantity) > 0 ? BigDecimal.ZERO : sumQuantity.subtract(outQuantity); // Map stockMap = new HashMap<>(); // stockMap.put("inboundNum", sumQuantity); // stockMap.put("outboundNum", outQuantity); // stockMap.put("stockQuantity", stockQuantity); // return stockMap; // } /** * 不合格入库 * @param productModelId * @param quantity * @param recordType * @param recordId */ public void addUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { StockUninventoryDto stockUninventoryDto = new StockUninventoryDto(); stockUninventoryDto.setRecordId(recordId); stockUninventoryDto.setRecordType(String.valueOf(recordType)); stockUninventoryDto.setQualitity(quantity); stockUninventoryDto.setProductModelId(productModelId); stockUninventoryService.addStockUninventory(stockUninventoryDto); } /** * 不合格出库 * @param productModelId * @param quantity * @param recordType * @param recordId */ public void subtractUnStock(Long productModelId, BigDecimal quantity, Integer recordType,Long recordId) { StockUninventoryDto stockUninventoryDto = new StockUninventoryDto(); stockUninventoryDto.setRecordId(recordId); stockUninventoryDto.setRecordType(String.valueOf(recordType)); stockUninventoryDto.setQualitity(quantity); stockUninventoryDto.setProductModelId(productModelId); stockUninventoryService.subtractStockUninventory(stockUninventoryDto); } /** * 合格入库 * @param productModelId * @param quantity * @param recordType * @param recordId */ public void addStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { StockInventoryDto stockInventoryDto = new StockInventoryDto(); stockInventoryDto.setRecordId(recordId); stockInventoryDto.setRecordType(String.valueOf(recordType)); stockInventoryDto.setQualitity(quantity); stockInventoryDto.setProductModelId(productModelId); stockInventoryService.addstockInventory(stockInventoryDto); } /** * 合格出库 * @param productModelId * @param quantity * @param recordType * @param recordId */ public void substractStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { StockInventoryDto stockInventoryDto = new StockInventoryDto(); stockInventoryDto.setRecordId(recordId); stockInventoryDto.setRecordType(String.valueOf(recordType)); stockInventoryDto.setQualitity(quantity); stockInventoryDto.setProductModelId(productModelId); stockInventoryService.subtractStockInventory(stockInventoryDto); } //不合格库存删除 public void deleteStockRecord(Long recordId, String recordType) { StockInRecord one = stockInRecordService.getOne(new QueryWrapper() .lambda().eq(StockInRecord::getRecordId, recordId) .eq(StockInRecord::getRecordType, recordType)); stockInRecordService.batchDelete(Collections.singletonList(one.getId())); } }