package com.ruoyi.consumables.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.consumables.dto.ConsumablesInRecordDto; import com.ruoyi.consumables.dto.ConsumablesInventoryDto; import com.ruoyi.consumables.dto.ConsumablesOutRecordDto; import com.ruoyi.consumables.dto.ConsumablesUnInventoryDto; import com.ruoyi.consumables.execl.ConsumablesUnInventoryExportData; import com.ruoyi.consumables.mapper.ConsumablesUnInventoryMapper; import com.ruoyi.consumables.pojo.ConsumablesUnInventory; import com.ruoyi.consumables.service.ConsumablesInRecordService; import com.ruoyi.consumables.service.ConsumablesOutRecordService; import com.ruoyi.consumables.service.ConsumablesUnInventoryService; 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 ConsumablesUnInventoryServiceImpl extends ServiceImpl implements ConsumablesUnInventoryService { private ConsumablesUnInventoryMapper ConsumablesUnInventoryMapper; private ConsumablesOutRecordService ConsumablesOutRecordService; private ConsumablesInRecordService ConsumablesInRecordService; @Override public IPage pageConsumablesUnInventory(Page page, ConsumablesUnInventoryDto ConsumablesUnInventoryDto) { return ConsumablesUnInventoryMapper.pageConsumablesUnInventory(page, ConsumablesUnInventoryDto); } @Override @Transactional(rollbackFor = Exception.class) public Integer addConsumablesUnInventory(ConsumablesUnInventoryDto ConsumablesUnInventoryDto) { //新增入库记录再添加库存 ConsumablesInRecordDto ConsumablesInRecordDto = new ConsumablesInRecordDto(); ConsumablesInRecordDto.setRecordId(ConsumablesUnInventoryDto.getRecordId()); ConsumablesInRecordDto.setRecordType(ConsumablesUnInventoryDto.getRecordType()); ConsumablesInRecordDto.setConsumablesInNum(ConsumablesUnInventoryDto.getQualitity()); ConsumablesInRecordDto.setProductModelId(ConsumablesUnInventoryDto.getProductModelId()); ConsumablesInRecordDto.setType("1"); ConsumablesInRecordService.add(ConsumablesInRecordDto); //再进行新增库存数量库存 //先查询库存表中的产品是否存在,不存在新增,存在更新 ConsumablesUnInventory oldConsumablesUnInventory = ConsumablesUnInventoryMapper.selectOne(new QueryWrapper().lambda().eq(ConsumablesUnInventory::getProductModelId, ConsumablesUnInventoryDto.getProductModelId())); if (ObjectUtils.isEmpty(oldConsumablesUnInventory)) { ConsumablesUnInventory newConsumablesUnInventory = new ConsumablesUnInventory(); newConsumablesUnInventory.setProductModelId(ConsumablesUnInventoryDto.getProductModelId()); newConsumablesUnInventory.setQualitity(ConsumablesUnInventoryDto.getQualitity()); newConsumablesUnInventory.setVersion(1); newConsumablesUnInventory.setRemark(ConsumablesUnInventoryDto.getRemark()); ConsumablesUnInventoryMapper.insert(newConsumablesUnInventory); }else { ConsumablesUnInventoryMapper.updateAddConsumablesUnInventory(ConsumablesUnInventoryDto); } return 1; } @Override @Transactional(rollbackFor = Exception.class) public Integer subtractConsumablesUnInventory(ConsumablesUnInventoryDto ConsumablesUnInventoryDto) { // 新增出库记录 ConsumablesOutRecordDto ConsumablesOutRecordDto = new ConsumablesOutRecordDto(); ConsumablesOutRecordDto.setRecordId(ConsumablesUnInventoryDto.getRecordId()); ConsumablesOutRecordDto.setRecordType(ConsumablesUnInventoryDto.getRecordType()); ConsumablesOutRecordDto.setConsumablesOutNum(ConsumablesUnInventoryDto.getQualitity()); ConsumablesOutRecordDto.setProductModelId(ConsumablesUnInventoryDto.getProductModelId()); ConsumablesOutRecordDto.setType("1"); ConsumablesOutRecordService.add(ConsumablesOutRecordDto); ConsumablesUnInventory oldConsumablesInventory = ConsumablesUnInventoryMapper.selectOne(new QueryWrapper().lambda().eq(ConsumablesUnInventory::getProductModelId, ConsumablesUnInventoryDto.getProductModelId())); if (ObjectUtils.isEmpty(oldConsumablesInventory)) { throw new RuntimeException("产品库存不存在"); }else { ConsumablesUnInventoryMapper.updateSubtractConsumablesUnInventory(ConsumablesUnInventoryDto); } return 1; } @Override public void exportConsumablesUnInventory(HttpServletResponse response, ConsumablesUnInventoryDto ConsumablesUnInventoryDto) { List list = ConsumablesUnInventoryMapper.listConsumablesInventoryExportData(ConsumablesUnInventoryDto); ExcelUtil util = new ExcelUtil<>(ConsumablesUnInventoryExportData.class); util.exportExcel(response,list, "不合格库存信息"); } @Override public Boolean frozenConsumables(ConsumablesInventoryDto ConsumablesInventoryDto) { ConsumablesUnInventory ConsumablesUnInventory = ConsumablesUnInventoryMapper.selectById(ConsumablesInventoryDto.getId()); if (ConsumablesUnInventory.getQualitity().compareTo(ConsumablesInventoryDto.getLockedQuantity())<0) { throw new RuntimeException("冻结数量不能超过库存数量"); } if (ObjectUtils.isEmpty(ConsumablesUnInventory.getLockedQuantity())) { ConsumablesUnInventory.setLockedQuantity(ConsumablesInventoryDto.getLockedQuantity()); }else { ConsumablesUnInventory.setLockedQuantity(ConsumablesUnInventory.getLockedQuantity().add(ConsumablesInventoryDto.getLockedQuantity())); } return this.updateById(ConsumablesUnInventory); } @Override public Boolean thawConsumables(ConsumablesInventoryDto ConsumablesInventoryDto) { ConsumablesUnInventory ConsumablesUnInventory = ConsumablesUnInventoryMapper.selectById(ConsumablesInventoryDto.getId()); if (ConsumablesUnInventory.getLockedQuantity().compareTo(ConsumablesInventoryDto.getLockedQuantity())<0) { throw new RuntimeException("解冻数量不能超过冻结数量"); } ConsumablesUnInventory.setLockedQuantity(ConsumablesUnInventory.getLockedQuantity().subtract(ConsumablesInventoryDto.getLockedQuantity())); return this.updateById(ConsumablesUnInventory); } }