huminmin
11 小时以前 a34f7d669aa91045dc661bceae9a78793b989410
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.quality.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,6 +14,15 @@
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.mapper.ProductOrderMapper;
import com.ruoyi.production.mapper.ProductProcessMapper;
import com.ruoyi.production.mapper.ProductWorkOrderMapper;
import com.ruoyi.production.mapper.ProductionProductMainMapper;
import com.ruoyi.production.pojo.ProductOrder;
import com.ruoyi.production.pojo.ProductProcess;
import com.ruoyi.production.pojo.ProductWorkOrder;
import com.ruoyi.production.pojo.ProductionProductMain;
import com.ruoyi.project.system.service.ISysNoticeService;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.mapper.QualityTestStandardMapper;
@@ -23,15 +33,20 @@
import com.ruoyi.quality.service.IQualityInspectParamService;
import com.ruoyi.quality.service.IQualityInspectService;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.stock.pojo.StockUninventory;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -53,6 +68,16 @@
    private SalesLedgerProductMapper salesLedgerProductMapper;
    private ProcurementRecordService procurementRecordService;
    @Autowired
    private ProductProcessMapper productProcessMapper;
    @Autowired
    private ProductWorkOrderMapper productWorkOrderMapper;
    @Autowired
    private ProductionProductMainMapper productionProductMainMapper;
    @Autowired
    private ProductOrderMapper productOrderMapper;
    @Autowired
    private ISysNoticeService sysNoticeService;
    @Override
    public int add(QualityInspectDto qualityInspectDto) {
@@ -85,6 +110,33 @@
        if (ObjectUtils.isNull(qualityInspect.getCheckResult())) {
            throw new RuntimeException("请先判断是否合格");
        }
        // 质检总数
        BigDecimal quantity = qualityInspect.getQuantity();
        // 合格数量 = 质检总数 - 不良数量
        BigDecimal productQty = quantity.subtract(qualityInspect.getDefectiveQuantity());
        // 合格率=合格数量/质检总数
        BigDecimal productQtyRate = productQty.divide(quantity, 2, RoundingMode.HALF_UP)
                .multiply(new BigDecimal("100"));
        // 查询工序的合格率
        ProductProcess productProcess = productProcessMapper.selectOne(new LambdaQueryWrapper<ProductProcess>().eq(ProductProcess::getName, qualityInspect.getProcess()));
        if (!ObjectUtils.isNull(productProcess)) {
            // 合格率 < 该工序的合格率
            if (productQtyRate.compareTo(productProcess.getQualifiedRate()) < 0) {
                // 查询生产订单
                ProductionProductMain productionProductMain = productionProductMainMapper.selectById(qualityInspect.getProductMainId());
                ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
                ProductOrder productOrder = productOrderMapper.selectOne(new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getId, productWorkOrder.getProductOrderId()));
                if (!ObjectUtils.isNull(productOrder)) {
                    // 发送通知给管理员
                    sysNoticeService.simpleNoticeByUser("质检提示",
                            String.format("%s生产订单,%s工序合格率%.2f%%低于标准%.2f%%", productOrder.getNpsNo(), productProcess.getName(), productQtyRate, productProcess.getQualifiedRate()),
                            Arrays.asList(Long.valueOf(1L)),
                            qualityInspect.getInspectType() == 2 ? "/qualityManagement/finalInspection" : "/qualityManagement/processInspection");
                }
            }
        }
        /*判断不合格*/
        if (qualityInspect.getCheckResult().equals("不合格")) {
            QualityUnqualified qualityUnqualified = new QualityUnqualified();
@@ -96,8 +148,16 @@
            qualityUnqualified.setInspectId(qualityInspect.getId());
            qualityUnqualifiedMapper.insert(qualityUnqualified);
        } else {
            //合格直接入库
            stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
            //合格入库
            Integer inspectType = qualityInspect.getInspectType();
            //生产成品添加审核流程,半成品不审核
            if (inspectType != null && inspectType.equals(2)) {
                stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(),
                        StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
            } else {
                stockUtils.addStockNoReview(qualityInspect.getProductModelId(), qualityInspect.getQuantity(),
                        StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
            }
        }
        qualityInspect.setInspectState(1);//已提交
        return qualityInspectMapper.updateById(qualityInspect);
@@ -116,7 +176,7 @@
                inspectType = "过程检验";
                break;
            case 2:
                inspectType = "出厂检验";
                inspectType = "成品检验";
                break;
        }
        List<QualityInspectParam> paramList = qualityInspectParamService.list(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, inspect.getId()));
@@ -186,7 +246,7 @@
                util.exportExcel(response, qualityInspects, "过程检验导出");
                break;
            case 2:
                util.exportExcel(response, qualityInspects, "出厂检验导出");
                util.exportExcel(response, qualityInspects, "成品检验导出");
                break;
        }