package com.ruoyi.stock.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockOutRecordDto; import com.ruoyi.stock.dto.StockUninventoryDto; import com.ruoyi.stock.execl.StockInventoryExportData; import com.ruoyi.stock.mapper.StockUninventoryMapper; import com.ruoyi.stock.pojo.StockInventory; import com.ruoyi.stock.pojo.StockUninventory; import com.ruoyi.stock.service.StockInRecordService; import com.ruoyi.stock.service.StockOutRecordService; import com.ruoyi.stock.service.StockUninventoryService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.List; /** *

* 不合格库存表 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-01-22 10:17:45 */ @Service @AllArgsConstructor public class StockUninventoryServiceImpl extends ServiceImpl implements StockUninventoryService { private StockUninventoryMapper stockUninventoryMapper; private StockOutRecordService stockOutRecordService; private StockInRecordService stockInRecordService; @Override public IPage pageStockUninventory(Page page, StockUninventoryDto stockUninventoryDto) { return stockUninventoryMapper.pageStockUninventory(page, stockUninventoryDto); } @Override @Transactional(rollbackFor = Exception.class) public Integer addStockUninventory(StockUninventoryDto stockUninventoryDto) { //新增入库记录再添加库存 StockInRecordDto stockInRecordDto = new StockInRecordDto(); stockInRecordDto.setRecordId(stockUninventoryDto.getRecordId()); stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType()); stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity()); stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId()); stockInRecordDto.setType("1"); stockInRecordService.add(stockInRecordDto); //再进行新增库存数量库存 //先查询库存表中的产品是否存在,不存在新增,存在更新 StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(new QueryWrapper().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId())); if (ObjectUtils.isEmpty(oldStockUnInventory)) { StockUninventory newStockUnInventory = new StockUninventory(); newStockUnInventory.setProductModelId(stockUninventoryDto.getProductModelId()); newStockUnInventory.setQualitity(stockUninventoryDto.getQualitity()); newStockUnInventory.setVersion(1); newStockUnInventory.setRemark(stockUninventoryDto.getRemark()); stockUninventoryMapper.insert(newStockUnInventory); }else { stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto); } return 1; } @Override @Transactional(rollbackFor = Exception.class) public Integer subtractStockUninventory(StockUninventoryDto stockUninventoryDto) { // 新增出库记录 StockOutRecordDto stockOutRecordDto = new StockOutRecordDto(); stockOutRecordDto.setRecordId(stockUninventoryDto.getRecordId()); stockOutRecordDto.setRecordType(stockUninventoryDto.getRecordType()); stockOutRecordDto.setStockOutNum(stockUninventoryDto.getQualitity()); stockOutRecordDto.setProductModelId(stockUninventoryDto.getProductModelId()); stockOutRecordDto.setType("1"); stockOutRecordService.add(stockOutRecordDto); StockUninventory oldStockInventory = stockUninventoryMapper.selectOne(new QueryWrapper().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId())); if (ObjectUtils.isEmpty(oldStockInventory)) { throw new RuntimeException("产品库存不存在"); }else { stockUninventoryMapper.updateSubtractStockUnInventory(stockUninventoryDto); } return 1; } @Override public void exportStockUninventory(HttpServletResponse response, StockUninventoryDto stockUninventoryDto) { List list = stockUninventoryMapper.listStockInventoryExportData(stockUninventoryDto); ExcelUtil util = new ExcelUtil<>(StockInventoryExportData.class); util.exportExcel(response,list, "不合格库存信息"); } @Override public Boolean frozenStock(StockInventoryDto stockInventoryDto) { StockUninventory stockUninventory = stockUninventoryMapper.selectById(stockInventoryDto.getId()); if (stockUninventory.getQualitity().compareTo(stockInventoryDto.getLockedQuantity())<0) { throw new RuntimeException("冻结数量不能超过库存数量"); } if (ObjectUtils.isEmpty(stockUninventory.getLockedQuantity())) { stockUninventory.setLockedQuantity(stockInventoryDto.getLockedQuantity()); }else { stockUninventory.setLockedQuantity(stockUninventory.getLockedQuantity().add(stockInventoryDto.getLockedQuantity())); } return this.updateById(stockUninventory); } @Override public Boolean thawStock(StockInventoryDto stockInventoryDto) { StockUninventory stockUninventory = stockUninventoryMapper.selectById(stockInventoryDto.getId()); if (stockUninventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity())<0) { throw new RuntimeException("解冻数量不能超过冻结数量"); } stockUninventory.setLockedQuantity(stockUninventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity())); return this.updateById(stockUninventory); } }