16 小时以前 bfcc71f500625a26886b43c43a8fdf2ea1152844
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -17,6 +17,9 @@
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.quality.dto.AutoJudgeAllResponse;
import com.ruoyi.quality.dto.AutoJudgeRequest;
import com.ruoyi.quality.dto.AutoJudgeResponse;
import com.ruoyi.quality.dto.BatchQuickInspectRequest;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.mapper.QualityInspectMapper;
@@ -26,6 +29,7 @@
import com.ruoyi.quality.pojo.QualityInspectParam;
import com.ruoyi.quality.pojo.QualityUnqualified;
import com.ruoyi.quality.utils.QualityInspectTemplateExportHelper;
import com.ruoyi.quality.utils.QualityJudgeUtil;
import com.ruoyi.stock.pojo.StockInRecord;
import com.ruoyi.stock.service.StockInRecordService;
import com.ruoyi.quality.service.IQualityInspectParamService;
@@ -561,4 +565,100 @@
        return qualityInspectTemplateExportHelper.analyzeTemplate(templatePath);
    }
    @Override
    public AutoJudgeResponse autoJudge(AutoJudgeRequest request) {
        QualityJudgeUtil.JudgeResult result = QualityJudgeUtil.judge(
                request.getTestValue(),
                request.getStandardValue(),
                request.getMinValue(),
                request.getMaxValue(),
                request.getJudgeType()
        );
        return new AutoJudgeResponse(result.getQualified(), result.getMessage());
    }
    @Override
    public AutoJudgeAllResponse autoJudgeAll(Long inspectId) {
        List<QualityInspectParam> params = qualityInspectParamService.list(
                Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, inspectId));
        AutoJudgeAllResponse response = new AutoJudgeAllResponse();
        List<AutoJudgeAllResponse.ParamJudgeResult> paramResults = new ArrayList<>();
        boolean hasRequiredUnqualified = false;
        boolean hasNonRequiredUnqualified = false;
        boolean allTextDescription = true;
        boolean hasRequiredParam = false;
        for (QualityInspectParam param : params) {
            AutoJudgeAllResponse.ParamJudgeResult paramResult = new AutoJudgeAllResponse.ParamJudgeResult();
            paramResult.setParamId(param.getId());
            paramResult.setParameterItem(param.getParameterItem());
            paramResult.setIsRequired(param.getIsRequired() != null && param.getIsRequired() == 1);
            if (paramResult.getIsRequired()) {
                hasRequiredParam = true;
            }
            String judgeType = param.getJudgeType();
            if (QualityJudgeUtil.JUDGE_TYPE_TEXT_DESCRIPTION.equals(judgeType)) {
                paramResult.setIsQualified(null);
                paramResult.setMessage("文字描述类型需手动判断");
            } else {
                allTextDescription = false;
                QualityJudgeUtil.JudgeResult result = QualityJudgeUtil.judge(
                        param.getTestValue(),
                        param.getStandardValue(),
                        param.getMinValue(),
                        param.getMaxValue(),
                        judgeType
                );
                paramResult.setIsQualified(result.getQualified());
                paramResult.setMessage(result.getMessage());
                // 更新参数项的判断结果
                if (result.getQualified() != null) {
                    param.setIsQualified(result.getQualified() ? 1 : 0);
                    qualityInspectParamService.updateById(param);
                }
                // 检查必要判断参数是否不合格
                if (paramResult.getIsRequired() && Boolean.FALSE.equals(result.getQualified())) {
                    hasRequiredUnqualified = true;
                }
                // 检查非必要判断参数是否不合格
                if (!paramResult.getIsRequired() && Boolean.FALSE.equals(result.getQualified())) {
                    hasNonRequiredUnqualified = true;
                }
            }
            paramResults.add(paramResult);
        }
        response.setParamResults(paramResults);
        response.setHasRequiredUnqualified(hasRequiredUnqualified);
        response.setHasNonRequiredUnqualified(hasNonRequiredUnqualified);
        response.setAllTextDescription(allTextDescription);
        // 确定整体判断结果
        if (allTextDescription) {
            response.setAutoJudgeResult(null);
        } else if (hasRequiredUnqualified) {
            response.setAutoJudgeResult("不合格");
        } else if (hasNonRequiredUnqualified) {
            // 必要参数都合格,但有非必要参数不合格 → 部分合格
            response.setAutoJudgeResult("部分合格");
        } else {
            // 所有需要自动判断的参数项都合格,整体为合格
            response.setAutoJudgeResult("合格");
        }
        // 更新质检主表的自动判断结果
        QualityInspect inspect = qualityInspectMapper.selectById(inspectId);
        if (inspect != null) {
            inspect.setAutoJudgeResult(response.getAutoJudgeResult());
            qualityInspectMapper.updateById(inspect);
        }
        return response;
    }
}