昨天 4bcd26a4975d6722bff65690e7a8331cd0afd520
src/main/java/com/ruoyi/production/service/impl/ProductionProductInputServiceImpl.java
@@ -1,15 +1,24 @@
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
@@ -17,8 +26,37 @@
    @Autowired
    private ProductionProductInputMapper productionProductInputMapper;
    @Autowired
    private StockUtils stockUtils;
    @Autowired
    private ProductStructureRecordMapper productStructureRecordMapper;
    @Override
    public IPage<ProductionProductInputDto> listPageProductionProductInputDto(Page page, ProductionProductInputDto productionProductInputDto) {
        return productionProductInputMapper.listPageProductionProductInputDto(page, productionProductInputDto);
    }
    @Override
    public Object returnMaterial(List<ProductionProductInput> 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 "退料成功";
    }
}