From 391dc78839ee44f405e0f4f012ab0ce510134a57 Mon Sep 17 00:00:00 2001 From: ls Date: Mon, 23 Jun 2025 15:58:41 +0800 Subject: [PATCH] ESCC22500 --- .../service/executor/ESCC225001Executor.java | 53 +++++++++++++++++-- .../service/executor/ESCC225002Executor.java | 53 +++++++++++++++++-- .../service/executor/ESCC225003Executor.java | 45 ++++++++++++++-- .../service/executor/ESCC225004Executor.java | 47 ++++++++++++++-- .../service/executor/ESCC225005Executor.java | 41 ++++++++++++++ 5 files changed, 227 insertions(+), 12 deletions(-) create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225005Executor.java diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225001Executor.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225001Executor.java index 953b5e1..f299513 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225001Executor.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225001Executor.java @@ -4,18 +4,23 @@ */ package org.jeecg.modules.database.service.executor; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.database.constant.ExperimentReviewProcessType; -import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.constant.ExperimentReviewResultEnum; +import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor; import org.springframework.stereotype.Component; +import java.util.List; + /** * @author lise */ @Component -public class ESCC225001Executor extends BaseExecutor implements IExperimentReviewRuleExecutor { +public class ESCC225001Executor extends BaseExecutor implements IExperimentReviewRuleExecutor { @Override public String getProcessType() { return ExperimentReviewProcessType.ESCC22500; @@ -26,8 +31,50 @@ public class ESCC225001Executor extends BaseExecutor implements IExperimentRev return 1; } + /** + * 质子退火过程中的偏置未采用无偏置条件 + * + * 可能低估或高估器件的抗辐射性能 + * + * 不同偏置下产生不同数量、类型的辐射损伤缺陷 + * + * 测试计划中另有规定 + * + * 在试验信息中辐射源选择质子加速器,试验数据中的偏置条件选择了静态偏置或动态偏置,启动这条评定建议 + * + * @param experiment + * @param sampleInfo + * @param experimentReview + * @return + */ @Override public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) { - return ExperimentReviewResultEnum.ITEM_PASS; + experimentService.fetchExperimentDetail(experiment); + boolean condition1 = false, condition2 = false; + + List radiationProcessList = experimentRadiationProcessService.getByExperimentId(experiment.getId()); + for (ExperimentRadiationProcess experimentRadiationProcess : radiationProcessList) { + String radiationSource = experimentRadiationProcess.getRadiationSource(); + if (StringUtils.contains(radiationSource, "质子加速器")) { + condition1 = true; + break; + } + } + List experimentAnnealProcessList = experimentAnnealProcessService.getByExperimentId(experiment.getId()); + for (ExperimentAnnealProcess experimentAnnealProcess : experimentAnnealProcessList) { + String deviationCondition = experimentAnnealProcess.getDeviationCondition(); + JSONObject jsonObject = JSON.parseObject(deviationCondition); + if (jsonObject.containsKey("offsetCondition")) { + String offsetCondition = jsonObject.getString("offsetCondition"); + if (StringUtils.contains(offsetCondition, "dtpz") || StringUtils.contains(offsetCondition, "jtpz")) { + condition2 = true; + break; + } + } + } + if (condition1 && condition2) { + return ExperimentReviewResultEnum.UNKNOWN; + } + return ExperimentReviewResultEnum.ITEM_PASS; } } \ No newline at end of file diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225002Executor.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225002Executor.java index cd5697e..e072320 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225002Executor.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225002Executor.java @@ -4,18 +4,24 @@ */ package org.jeecg.modules.database.service.executor; +import com.alibaba.fastjson.JSON; +import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.database.constant.ExperimentReviewProcessType; -import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.constant.ExperimentReviewResultEnum; +import org.jeecg.modules.database.dto.RadiationDetailDTO; +import org.jeecg.modules.database.dto.RadiationMapDTO; +import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor; import org.springframework.stereotype.Component; +import java.util.List; + /** * @author lise */ @Component -public class ESCC225002Executor extends BaseExecutor implements IExperimentReviewRuleExecutor { +public class ESCC225002Executor extends BaseExecutor implements IExperimentReviewRuleExecutor { @Override public String getProcessType() { return ExperimentReviewProcessType.ESCC22500; @@ -26,8 +32,49 @@ public class ESCC225002Executor extends BaseExecutor implements IExperimentRev return 2; } + /** + * 质子辐照过程中的通量过高 + * + * 可能高估器件的抗辐射性能 + * + * 通量过高可能导致器件温度上升,引起缺陷退火 + * + * 考其他单位指定的质子测试指南 + * + * 在试验信息中辐射源选择质子加速器,辐照过程中的实际注量率高于10E9 p/cm²/s,启动这条评定建议 + * + * @param experiment + * @param sampleInfo + * @param experimentReview + * @return + */ @Override public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) { - return ExperimentReviewResultEnum.ITEM_PASS; + experimentService.fetchExperimentDetail(experiment); + boolean condition1 = false, condition2 = false; + + List radiationProcessList = experimentRadiationProcessService.getByExperimentId(experiment.getId()); + for (ExperimentRadiationProcess radiationProcess : radiationProcessList) { + String radiationSource = radiationProcess.getRadiationSource(); + if (StringUtils.contains(radiationSource, "质子加速器")) { + condition1 = true; + } + String radiationDetail = radiationProcess.getRadiationDetail(); + RadiationMapDTO radiationMap = JSON.parseObject(radiationDetail, RadiationMapDTO.class); + List list = radiationMap.getProton(); + + Double maxMeasurementPoint = list.stream().map(obj -> obj.getActualInjectionRate()) // 获取point字段 + .filter(point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 + .mapToDouble(Double::parseDouble) // 转换为double + .max().getAsDouble(); + if (maxMeasurementPoint > 10E9) { + condition2 = true; + } + } + if (condition1 && condition2) { + return ExperimentReviewResultEnum.HIGH; + } + + return ExperimentReviewResultEnum.ITEM_PASS; } } \ No newline at end of file diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225003Executor.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225003Executor.java index e62e68b..80c00b7 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225003Executor.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225003Executor.java @@ -5,17 +5,19 @@ package org.jeecg.modules.database.service.executor; import org.jeecg.modules.database.constant.ExperimentReviewProcessType; -import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.constant.ExperimentReviewResultEnum; +import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor; import org.springframework.stereotype.Component; +import java.util.List; + /** * @author lise */ @Component -public class ESCC225003Executor extends BaseExecutor implements IExperimentReviewRuleExecutor { +public class ESCC225003Executor extends BaseExecutor implements IExperimentReviewRuleExecutor { @Override public String getProcessType() { return ExperimentReviewProcessType.ESCC22500; @@ -26,8 +28,45 @@ public class ESCC225003Executor extends BaseExecutor implements IExperimentRev return 3; } + /** + * 质子退火过程中的环境温度 + * + * 可能低估或高估器件的抗辐射性能 + * + * 退火温度偏高有利于器件的辐射感生缺陷退火,退火温度偏低不有利于器件的辐射感生缺陷退火 + * + * 参考其他单位指定的质子测试指南 + * + * 退火过程退火温度在10-30℃范围外,启动这条评定建议 + * + * @param experiment + * @param sampleInfo + * @param experimentReview + * @return + */ @Override public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) { - return ExperimentReviewResultEnum.ITEM_PASS; + experimentService.fetchExperimentDetail(experiment); + boolean condition1 = false, condition2 = false; + List experimentAnnealProcessList = experimentAnnealProcessService.getByExperimentId(experiment.getId()); + for (ExperimentAnnealProcess experimentAnnealProcess : experimentAnnealProcessList) { + String annealTemperature = experimentAnnealProcess.getAnnealTemperature(); + Integer temp = Integer.valueOf(annealTemperature); + if (temp < 10) { + condition1 = true; + break; + } + if (temp > 30) { + condition2 = true; + break; + } + } + if (condition1) { + return ExperimentReviewResultEnum.LOW; + } + if (condition2) { + return ExperimentReviewResultEnum.HIGH; + } + return ExperimentReviewResultEnum.ITEM_PASS; } } \ No newline at end of file diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225004Executor.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225004Executor.java index d9675a4..eb2d4a5 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225004Executor.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225004Executor.java @@ -5,17 +5,20 @@ package org.jeecg.modules.database.service.executor; import org.jeecg.modules.database.constant.ExperimentReviewProcessType; -import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.constant.ExperimentReviewResultEnum; +import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor; import org.springframework.stereotype.Component; +import java.util.Date; +import java.util.List; + /** * @author lise */ @Component -public class ESCC225004Executor extends BaseExecutor implements IExperimentReviewRuleExecutor { +public class ESCC225004Executor extends BaseExecutor implements IExperimentReviewRuleExecutor { @Override public String getProcessType() { return ExperimentReviewProcessType.ESCC22500; @@ -26,8 +29,46 @@ public class ESCC225004Executor extends BaseExecutor implements IExperimentRev return 4; } + /** + * 质子辐照过程中的退火时长 + * + * 可能低估或高估器件的抗辐射性能 + * + * 退火时长偏长有利于器件的辐射感生缺陷退火,退火时长偏短不有利于器件的辐射感生缺陷退火 + * + * 参考其他单位指定的质子测试指南 + * + * 退火过程中的退火时长在24小时至一个月的范围外,启动这条评定建议 + * + * @param experiment + * @param sampleInfo + * @param experimentReview + * @return + */ @Override public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) { - return ExperimentReviewResultEnum.ITEM_PASS; + experimentService.fetchExperimentDetail(experiment); + boolean condition1 = false, condition2 = false; + List experimentAnnealProcessList = experimentAnnealProcessService.getByExperimentId(experiment.getId()); + for (ExperimentAnnealProcess experimentAnnealProcess : experimentAnnealProcessList) { + Date startTime = experimentAnnealProcess.getAnnealStartTime(); + Date endTime = experimentAnnealProcess.getAnnealEndTime(); + long diffInMillis = endTime.getTime() - startTime.getTime(); + if (diffInMillis < 24 * 60 * 60 * 1000) { + condition1 = true; + break; + } + if (diffInMillis > 30 * 24 * 60 * 60 * 1000) { + condition2 = true; + break; + } + } + if (condition1) { + return ExperimentReviewResultEnum.LOW; + } + if (condition2) { + return ExperimentReviewResultEnum.HIGH; + } + return ExperimentReviewResultEnum.ITEM_PASS; } } \ No newline at end of file diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225005Executor.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225005Executor.java new file mode 100644 index 0000000..4f1b373 --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/executor/ESCC225005Executor.java @@ -0,0 +1,41 @@ +/* + * Ant Group + * Copyright (c) 2004-2025 All Rights Reserved. + */ +package org.jeecg.modules.database.service.executor; + +import org.jeecg.modules.database.constant.ExperimentReviewProcessType; +import org.jeecg.modules.database.constant.ExperimentReviewResultEnum; +import org.jeecg.modules.database.entity.*; +import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor; +import org.springframework.stereotype.Component; + +/** + * @author lise + */ + +@Component +public class ESCC225005Executor extends BaseExecutor implements IExperimentReviewRuleExecutor { + @Override + public String getProcessType() { + return ExperimentReviewProcessType.ESCC22500; + } + + @Override + public int getPriority() { + return 5; + } + + /** + * 评定通过 + * + * @param experiment + * @param sampleInfo + * @param experimentReview + * @return + */ + @Override + public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) { + return ExperimentReviewResultEnum.FINAL_PASS; + } +} \ No newline at end of file