package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.production.dto.ProductionProductInputDto; import com.ruoyi.production.mapper.ProductStructureRecordMapper; import com.ruoyi.production.mapper.ProductionProductInputMapper; import com.ruoyi.production.pojo.ProductStructureRecord; import com.ruoyi.production.pojo.ProductionProductInput; import com.ruoyi.production.service.ProductionProductInputService; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.List; @Service @AllArgsConstructor public class ProductionProductInputServiceImpl extends ServiceImpl implements ProductionProductInputService { @Autowired private ProductionProductInputMapper productionProductInputMapper; @Autowired private StockUtils stockUtils; @Autowired private ProductStructureRecordMapper productStructureRecordMapper; @Override public IPage listPageProductionProductInputDto(Page page, ProductionProductInputDto productionProductInputDto) { return productionProductInputMapper.listPageProductionProductInputDto(page, productionProductInputDto); } @Override public Object returnMaterial(List productionProductInput) { if(CollectionUtils.isEmpty(productionProductInput)){ return "请选择要退料的数据"; } for (ProductionProductInput input : productionProductInput) { ProductionProductInput productionProductInput1 = productionProductInputMapper.selectById(input.getId()); BigDecimal qty = input.getReturnQuantity() == null ? BigDecimal.ZERO : input.getReturnQuantity(); BigDecimal qty1 = productionProductInput1.getReturnQuantity() == null ? BigDecimal.ZERO : productionProductInput1.getReturnQuantity(); productionProductInput1.setReturnQuantity(qty.add(qty1)); productionProductInputMapper.updateById(productionProductInput1); // 退料入库 stockUtils.addStock(input.getProductModelId(), input.getReturnQuantity(), StockInQualifiedRecordTypeEnum.RETURN_MATERIAL_IN.getCode(), input.getId()); // 增加物料清单 ProductStructureRecord productStructureRecord = productStructureRecordMapper.selectById(input.getProductStructureRecordId()); if(productStructureRecord != null){ productStructureRecord.setCompletedQuantity(productStructureRecord.getCompletedQuantity().subtract(qty)); productStructureRecordMapper.updateById(productStructureRecord); } } return "退料成功"; } }