gongchunyi
5 小时以前 ada06626c3f81258e01837d09a10135f8ec3232f
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -8,11 +8,24 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.HackLoopTableRenderPolicy;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductMaterialSkuDto;
import com.ruoyi.production.dto.ProductionProductRouteItemParamDto;
import com.ruoyi.production.mapper.ProductOrderMapper;
import com.ruoyi.production.mapper.ProductionProductRouteItemMapper;
import com.ruoyi.production.mapper.ProductionProductRouteItemParamMapper;
import com.ruoyi.production.pojo.ProductionProductInput;
import com.ruoyi.production.pojo.ProductionProductRouteItemParam;
import com.ruoyi.production.service.ProductBomService;
import com.ruoyi.production.service.ProductMaterialService;
import com.ruoyi.production.service.ProductionProductInputService;
import com.ruoyi.quality.dto.FinishedPageDto;
import com.ruoyi.quality.dto.FinishedRatioDto;
import com.ruoyi.quality.dto.ProcessPageDto;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.mapper.QualityTestStandardMapper;
@@ -32,6 +45,7 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -42,17 +56,29 @@
public class QualityInspectServiceImpl extends ServiceImpl<QualityInspectMapper, QualityInspect> implements IQualityInspectService {
    private final StockUtils stockUtils;
    private QualityInspectMapper qualityInspectMapper;
    private final QualityInspectMapper qualityInspectMapper;
    private IQualityInspectParamService qualityInspectParamService;
    private final IQualityInspectParamService qualityInspectParamService;
    private QualityTestStandardMapper qualityTestStandardMapper;
    private final QualityTestStandardMapper qualityTestStandardMapper;
    private QualityUnqualifiedMapper qualityUnqualifiedMapper;
    private final QualityUnqualifiedMapper qualityUnqualifiedMapper;
    private SalesLedgerProductMapper salesLedgerProductMapper;
    private final SalesLedgerProductMapper salesLedgerProductMapper;
    private ProcurementRecordService procurementRecordService;
    private final ProcurementRecordService procurementRecordService;
    private final ProductionProductRouteItemMapper productionProductRouteItemMapper;
    private final ProductionProductRouteItemParamMapper productionProductRouteItemParamMapper;
    private final ProductOrderMapper productOrderMapper;
    private final ProductionProductInputService productionProductInputService;
    private final ProductMaterialService productMaterialService;
    private final ProductBomService productBomService;
    @Override
    public int add(QualityInspectDto qualityInspectDto) {
@@ -81,8 +107,12 @@
    @Override
    public int submit(QualityInspect inspect) {
        QualityInspect qualityInspect = qualityInspectMapper.selectById(inspect.getId());
        //提交前必须判断是否合格
        if (ObjectUtils.isNull(qualityInspect.getCheckResult())) {
            throw new RuntimeException("请先判断是否合格");
        }
        /*判断不合格*/
        if (ObjectUtils.isNotNull(qualityInspect.getCheckResult()) && qualityInspect.getCheckResult().equals("不合格")) {
        if (qualityInspect.getCheckResult().equals("不合格")) {
            QualityUnqualified qualityUnqualified = new QualityUnqualified();
            BeanUtils.copyProperties(qualityInspect, qualityUnqualified);
            qualityUnqualified.setInspectState(0);//待处理
@@ -93,7 +123,7 @@
            qualityUnqualifiedMapper.insert(qualityUnqualified);
        } else {
            //合格直接入库
            stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
            stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
        }
        qualityInspect.setInspectState(1);//已提交
        return qualityInspectMapper.updateById(qualityInspect);
@@ -152,6 +182,72 @@
    }
    @Override
    public IPage<ProcessPageDto> processPage(Page page, ProcessPageDto processPageDto) {
        return productionProductRouteItemMapper.processPage(page,processPageDto);
    }
    @Override
    public List<ProductionProductRouteItemParamDto> processDetails(ProcessPageDto processPageDto) {
        List<ProductionProductRouteItemParamDto> resultList = new ArrayList<>();
        // 1. 查询普通参数
        List<ProductionProductRouteItemParam> paramList = productionProductRouteItemParamMapper.processDetails(processPageDto.getProductionProductRouteItemId());
        if (paramList != null && !paramList.isEmpty()) {
            resultList.addAll(paramList.stream().map(param -> {
                ProductionProductRouteItemParamDto dto = new ProductionProductRouteItemParamDto();
                BeanUtils.copyProperties(param, dto);
                return dto;
            }).collect(Collectors.toList()));
        }
        // 2. 查询物料投入
        // 注意:成品检的时候可能没有具体单条报工记录ID,所以成品检详情可能需要按订单查询,
        // 但这里的processDetails是“过程检详情”,通常有具体报工记录。
        // 根据报工记录 ID 查找对应的 ProductMainId
        Long routeItemId = processPageDto.getProductionProductRouteItemId();
        if (routeItemId != null) {
            List<ProductionProductInput> inputList = productionProductInputService.list(Wrappers.<ProductionProductInput>lambdaQuery()
                    .eq(ProductionProductInput::getRouteItemId, routeItemId));
            if (inputList != null && !inputList.isEmpty()) {
                for (ProductionProductInput input : inputList) {
                    ProductionProductRouteItemParamDto dto = new ProductionProductRouteItemParamDto();
                    dto.setProductId(input.getProductId());
                    dto.setBomId(input.getBomId());
                    dto.setQuantity(input.getQuantity());
                    dto.setProductValue(input.getQuantity());
                    dto.setUnit(input.getUnit());
                    // 填充物料信息
                    ProductMaterialSkuDto materialSkuDto = productMaterialService.selectProductByModelId(input.getProductId());
                    if (materialSkuDto != null) {
                        dto.setParamName(materialSkuDto.getProductName());
                        dto.setProductName(materialSkuDto.getProductName());
                        dto.setModel(materialSkuDto.getModel());
                        dto.setMaterialCode(materialSkuDto.getMaterialCode());
                    }
                    String strength = productBomService.strengthById(input.getBomId());
                    dto.setStrength(strength);
                    resultList.add(dto);
                }
            }
        }
        return resultList;
    }
    @Override
    public IPage<FinishedPageDto> finishedPage(Page page, FinishedPageDto finishedPageDto) {
        return productOrderMapper.finishedPage(page,finishedPageDto);
    }
    @Override
    public List<FinishedRatioDto> finishedRatio(FinishedPageDto finishedPageDto) {
        return productOrderMapper.finishedRatio(finishedPageDto.getProductOrderId());
    }
    @Override
    public int updateQualityInspect(QualityInspectDto qualityInspectDto) {
        if (ObjectUtils.isNotNull(qualityInspectDto.getQualityInspectParams())) {
            qualityInspectParamService.remove(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, qualityInspectDto.getId()));