This commit is contained in:
ls
2025-06-17 10:25:44 +08:00
parent d2da906b80
commit 9a214a210b
4 changed files with 39 additions and 162 deletions

View File

@@ -1,5 +1,8 @@
package org.jeecg.modules.database.constant; package org.jeecg.modules.database.constant;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "试验流程标准")
public interface ExperimentReviewProcessType { public interface ExperimentReviewProcessType {
String GJB548C = "GJB548C"; String GJB548C = "GJB548C";

View File

@@ -1,18 +1,18 @@
package org.jeecg.modules.database.entity; package org.jeecg.modules.database.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/** /**
* @Description: 试验评定结果 * @Description: 试验评定结果
* @Author: jeecg-boot * @Author: jeecg-boot
@@ -78,29 +78,29 @@ public class ExperimentReview implements Serializable {
* 试验流程标准 * 试验流程标准
*/ */
@Excel(name = "试验流程标准", width = 15) @Excel(name = "试验流程标准", width = 15)
@Schema(description = "试验流程标准") @Schema(description = "试验流程标准", allowableValues = {"GJB548C", "ESCC229000", "ESCC22500", "QJ10004"})
private String processType; private String processType;
/** /**
* 是否需要退火 * 是否需要退火
*/ */
@Excel(name = "是否需要退火", width = 15) @Excel(name = "是否需要退火", width = 15)
@Schema(description = "是否需要退火(Y/N)") @Schema(description = "是否需要退火", allowableValues = {"Y", "N"})
private String need_anneal; private String needAnneal;
/** /**
* 是否需要辐照 * 是否需要辐照
*/ */
@Excel(name = "是否需要辐照", width = 15) @Excel(name = "是否需要辐照", width = 15)
@Schema(description = "是否需要辐照(Y/N)") @Schema(description = "是否需要辐照", allowableValues = {"Y", "N"})
private String need_radiation; private String needRadiation;
/** /**
* 是否需要老练 * 是否需要老练
*/ */
@Excel(name = "是否需要老练", width = 15) @Excel(name = "是否需要老练", width = 15)
@Schema(description = "是否需要老练(Y/N)") @Schema(description = "是否需要老练", allowableValues = {"Y", "N"})
private String need_burnin; private String needBurnin;
/** /**
* 评定结果 * 评定结果

View File

@@ -1,164 +1,27 @@
package org.jeecg.modules.database.service.executor; package org.jeecg.modules.database.service.executor;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import org.jeecg.modules.database.constant.ExperimentReviewProcessType;
import org.jeecg.modules.database.entity.Experiment; import org.jeecg.modules.database.entity.Experiment;
import org.jeecg.modules.database.entity.ExperimentSampleInfo; import org.jeecg.modules.database.entity.ExperimentSampleInfo;
import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor; import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.*;
import java.util.Map;
@Component @Component
public class ExecutorHolder { public class ExecutorHolder {
private Map<String, IExperimentReviewRuleExecutor> executors = new HashMap<>(); private Map<String, IExperimentReviewRuleExecutor> executorMap = new HashMap<>();
@Resource @Autowired
private ESCC225001Executor eSCC225001Executor; private List<IExperimentReviewRuleExecutor> executorList;
@Resource
private ESCC225002Executor eSCC225002Executor;
@Resource
private ESCC225003Executor eSCC225003Executor;
@Resource
private ESCC225004Executor eSCC225004Executor;
@Resource
private ESCC2290001Executor eSCC2290001Executor;
@Resource
private ESCC2290002Executor eSCC2290002Executor;
@Resource
private ESCC2290003Executor eSCC2290003Executor;
@Resource
private ESCC2290004Executor eSCC2290004Executor;
@Resource
private ESCC2290005Executor eSCC2290005Executor;
@Resource
private ESCC2290006Executor eSCC2290006Executor;
@Resource
private ESCC2290007Executor eSCC2290007Executor;
@Resource
private ESCC2290008Executor eSCC2290008Executor;
@Resource
private ESCC2290009Executor eSCC2290009Executor;
@Resource
private GJB548C1Executor gjb548C1Executor;
@Resource
private GJB548C2Executor gJB548C2Executor;
@Resource
private GJB548C3Executor gJB548C3Executor;
@Resource
private GJB548C4Executor gJB548C4Executor;
@Resource
private GJB548C5Executor gJB548C5Executor;
@Resource
private GJB548C6Executor gJB548C6Executor;
@Resource
private GJB548C7Executor gJB548C7Executor;
@Resource
private GJB548C8Executor gJB548C8Executor;
@Resource
private GJB548C9Executor gJB548C9Executor;
@Resource
private GJB548C10Executor gJB548C10Executor;
@Resource
private GJB548C11Executor gJB548C11Executor;
@Resource
private GJB548C12Executor gJB548C12Executor;
@Resource
private GJB548C13Executor gJB548C13Executor;
@Resource
private GJB548C14Executor gJB548C14Executor;
@Resource
private GJB548C15Executor gJB548C15Executor;
@Resource
private GJB548C16Executor gJB548C16Executor;
@Resource
private QJ100041Executor qJ100041Executor;
@Resource
private QJ100042Executor qJ100042Executor;
@Resource
private QJ100043Executor qJ100043Executor;
@Resource
private QJ100044Executor qJ100044Executor;
@Resource
private QJ100045Executor qJ100045Executor;
@Resource
private QJ100046Executor qJ100046Executor;
@Resource
private QJ100047Executor qJ100047Executor;
@Resource
private QJ100048Executor qJ100048Executor;
@Resource
private QJ100049Executor qJ100049Executor;
@Resource
private QJ1000410Executor qJ1000410Executor;
@Resource
private QJ1000411Executor qJ1000411Executor;
@Resource
private QJ1000412Executor qJ1000412Executor;
@Resource
private QJ1000413Executor qJ1000413Executor;
@Resource
private QJ1000414Executor qJ1000414Executor;
@Resource
private QJ1000415Executor qJ1000415Executor;
@Resource
private QJ1000416Executor qJ1000416Executor;
@Resource
private QJ1000417Executor qJ1000417Executor;
@PostConstruct @PostConstruct
public void init() { public void init() {
executors.put(ExperimentReviewProcessType.ESCC22500 + "1", eSCC225001Executor); executorList.forEach(executor -> executorMap.put(executor.getProcessType() + executor.getPriority(), executor));
executors.put(ExperimentReviewProcessType.ESCC22500 + "2", eSCC225002Executor);
executors.put(ExperimentReviewProcessType.ESCC22500 + "3", eSCC225003Executor);
executors.put(ExperimentReviewProcessType.ESCC22500 + "4", eSCC225004Executor);
executors.put(ExperimentReviewProcessType.ESCC229000 + "1", eSCC2290001Executor);
executors.put(ExperimentReviewProcessType.ESCC229000 + "2", eSCC2290002Executor);
executors.put(ExperimentReviewProcessType.ESCC229000 + "3", eSCC2290003Executor);
executors.put(ExperimentReviewProcessType.ESCC229000 + "4", eSCC2290004Executor);
executors.put(ExperimentReviewProcessType.ESCC229000 + "5", eSCC2290005Executor);
executors.put(ExperimentReviewProcessType.ESCC229000 + "6", eSCC2290006Executor);
executors.put(ExperimentReviewProcessType.ESCC229000 + "7", eSCC2290007Executor);
executors.put(ExperimentReviewProcessType.ESCC229000 + "8", eSCC2290008Executor);
executors.put(ExperimentReviewProcessType.ESCC229000 + "9", eSCC2290009Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "1", gjb548C1Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "2", gJB548C2Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "3", gJB548C3Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "4", gJB548C4Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "5", gJB548C5Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "6", gJB548C6Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "7", gJB548C7Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "8", gJB548C8Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "9", gJB548C9Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "10", gJB548C10Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "11", gJB548C11Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "12", gJB548C12Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "13", gJB548C13Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "14", gJB548C14Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "15", gJB548C15Executor);
executors.put(ExperimentReviewProcessType.GJB548C + "16", gJB548C16Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "1", qJ100041Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "2", qJ100042Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "3", qJ100043Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "4", qJ100044Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "5", qJ100045Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "6", qJ100046Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "7", qJ100047Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "8", qJ100048Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "9", qJ100049Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "10", qJ1000410Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "11", qJ1000411Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "12", qJ1000412Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "13", qJ1000413Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "14", qJ1000414Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "15", qJ1000415Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "16", qJ1000416Executor);
executors.put(ExperimentReviewProcessType.QJ10004 + "17", qJ1000417Executor);
} }
public String execute(String processType, Experiment experiment, ExperimentSampleInfo sampleInfo) { public String execute(String processType, Experiment experiment, ExperimentSampleInfo sampleInfo) {
IExperimentReviewRuleExecutor executor = executors.get(processType); IExperimentReviewRuleExecutor executor = executorMap.get(processType);
if (executor == null) { if (executor == null) {
return null; return null;
} }

View File

@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @Description: 试验评定结果 * @Description: 试验评定结果
@@ -60,12 +61,19 @@ public class ExperimentReviewServiceImpl extends ServiceImpl<ExperimentReviewRes
if (i == 0) { if (i == 0) {
continue; continue;
} }
String reviewResult = adjustResult(experiment.getId(), sampleInfo.getId());
String reviewResult = adjustResult(experiment.getId(), sampleInfo.getId(), result);
if (StringUtils.isNotBlank(reviewResult)) { if (StringUtils.isNotBlank(reviewResult)) {
result.setResult(reviewResult); result.setResult(reviewResult);
return result; return result;
} }
} }
String reviewResult = adjustResult(experiment.getId(), sampleInfo.getId(), result);
if (StringUtils.isNotBlank(reviewResult)) {
result.setResult(reviewResult);
} else {
result.setResult(ExperimentReviewResultEnum.UNKNOWN);
}
return result; return result;
} }
@@ -96,8 +104,11 @@ public class ExperimentReviewServiceImpl extends ServiceImpl<ExperimentReviewRes
return result; return result;
} }
private String adjustResult(String experimentId, String sampleId) { private String adjustResult(String experimentId, String sampleId, ExperimentReview result) {
List<ExperimentReviewDetail> detailList = experimentReviewDetailService.getBySample(experimentId, sampleId); List<ExperimentReviewDetail> detailList = experimentReviewDetailService.getBySample(experimentId, sampleId);
List<ExperimentReviewRule> matchedRuleList = detailList.stream().map(v -> experimentReviewRuleService.getById(v.getRuleId()))
.filter(v -> v != null).collect(Collectors.toList());
result.setMatchedRuleList(matchedRuleList);
ExperimentReviewDetail first = CollUtil.getFirst(detailList); ExperimentReviewDetail first = CollUtil.getFirst(detailList);
ExperimentReviewDetail last = CollUtil.getLast(detailList); ExperimentReviewDetail last = CollUtil.getLast(detailList);
if (detailList.size() > 1 && !StrUtil.equals(first.getResult(), last.getResult())) { if (detailList.size() > 1 && !StrUtil.equals(first.getResult(), last.getResult())) {