ESCC22500
This commit is contained in:
@@ -4,18 +4,23 @@
|
|||||||
*/
|
*/
|
||||||
package org.jeecg.modules.database.service.executor;
|
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.constant.ExperimentReviewProcessType;
|
||||||
import org.jeecg.modules.database.entity.*;
|
|
||||||
import org.jeecg.modules.database.constant.ExperimentReviewResultEnum;
|
import org.jeecg.modules.database.constant.ExperimentReviewResultEnum;
|
||||||
|
import org.jeecg.modules.database.entity.*;
|
||||||
import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor;
|
import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lise
|
* @author lise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ESCC225001Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
public class ESCC225001Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
||||||
@Override
|
@Override
|
||||||
public String getProcessType() {
|
public String getProcessType() {
|
||||||
return ExperimentReviewProcessType.ESCC22500;
|
return ExperimentReviewProcessType.ESCC22500;
|
||||||
@@ -26,8 +31,50 @@ public class ESCC225001Executor extends BaseExecutor implements IExperimentRev
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 质子退火过程中的偏置未采用无偏置条件
|
||||||
|
*
|
||||||
|
* 可能低估或高估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 不同偏置下产生不同数量、类型的辐射损伤缺陷
|
||||||
|
*
|
||||||
|
* 测试计划中另有规定
|
||||||
|
*
|
||||||
|
* 在试验信息中辐射源选择质子加速器,试验数据中的偏置条件选择了静态偏置或动态偏置,启动这条评定建议
|
||||||
|
*
|
||||||
|
* @param experiment
|
||||||
|
* @param sampleInfo
|
||||||
|
* @param experimentReview
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false;
|
||||||
|
|
||||||
|
List<ExperimentRadiationProcess> radiationProcessList = experimentRadiationProcessService.getByExperimentId(experiment.getId());
|
||||||
|
for (ExperimentRadiationProcess experimentRadiationProcess : radiationProcessList) {
|
||||||
|
String radiationSource = experimentRadiationProcess.getRadiationSource();
|
||||||
|
if (StringUtils.contains(radiationSource, "质子加速器")) {
|
||||||
|
condition1 = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<ExperimentAnnealProcess> 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,18 +4,24 @@
|
|||||||
*/
|
*/
|
||||||
package org.jeecg.modules.database.service.executor;
|
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.constant.ExperimentReviewProcessType;
|
||||||
import org.jeecg.modules.database.entity.*;
|
|
||||||
import org.jeecg.modules.database.constant.ExperimentReviewResultEnum;
|
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.jeecg.modules.database.service.IExperimentReviewRuleExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lise
|
* @author lise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ESCC225002Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
public class ESCC225002Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
||||||
@Override
|
@Override
|
||||||
public String getProcessType() {
|
public String getProcessType() {
|
||||||
return ExperimentReviewProcessType.ESCC22500;
|
return ExperimentReviewProcessType.ESCC22500;
|
||||||
@@ -26,8 +32,49 @@ public class ESCC225002Executor extends BaseExecutor implements IExperimentRev
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 质子辐照过程中的通量过高
|
||||||
|
*
|
||||||
|
* 可能高估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 通量过高可能导致器件温度上升,引起缺陷退火
|
||||||
|
*
|
||||||
|
* 考其他单位指定的质子测试指南
|
||||||
|
*
|
||||||
|
* 在试验信息中辐射源选择质子加速器,辐照过程中的实际注量率高于10E9 p/cm²/s,启动这条评定建议
|
||||||
|
*
|
||||||
|
* @param experiment
|
||||||
|
* @param sampleInfo
|
||||||
|
* @param experimentReview
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false;
|
||||||
|
|
||||||
|
List<ExperimentRadiationProcess> 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<RadiationDetailDTO> 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,17 +5,19 @@
|
|||||||
package org.jeecg.modules.database.service.executor;
|
package org.jeecg.modules.database.service.executor;
|
||||||
|
|
||||||
import org.jeecg.modules.database.constant.ExperimentReviewProcessType;
|
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.constant.ExperimentReviewResultEnum;
|
||||||
|
import org.jeecg.modules.database.entity.*;
|
||||||
import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor;
|
import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lise
|
* @author lise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ESCC225003Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
public class ESCC225003Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
||||||
@Override
|
@Override
|
||||||
public String getProcessType() {
|
public String getProcessType() {
|
||||||
return ExperimentReviewProcessType.ESCC22500;
|
return ExperimentReviewProcessType.ESCC22500;
|
||||||
@@ -26,8 +28,45 @@ public class ESCC225003Executor extends BaseExecutor implements IExperimentRev
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 质子退火过程中的环境温度
|
||||||
|
*
|
||||||
|
* 可能低估或高估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 退火温度偏高有利于器件的辐射感生缺陷退火,退火温度偏低不有利于器件的辐射感生缺陷退火
|
||||||
|
*
|
||||||
|
* 参考其他单位指定的质子测试指南
|
||||||
|
*
|
||||||
|
* 退火过程退火温度在10-30℃范围外,启动这条评定建议
|
||||||
|
*
|
||||||
|
* @param experiment
|
||||||
|
* @param sampleInfo
|
||||||
|
* @param experimentReview
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false;
|
||||||
|
List<ExperimentAnnealProcess> 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,17 +5,20 @@
|
|||||||
package org.jeecg.modules.database.service.executor;
|
package org.jeecg.modules.database.service.executor;
|
||||||
|
|
||||||
import org.jeecg.modules.database.constant.ExperimentReviewProcessType;
|
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.constant.ExperimentReviewResultEnum;
|
||||||
|
import org.jeecg.modules.database.entity.*;
|
||||||
import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor;
|
import org.jeecg.modules.database.service.IExperimentReviewRuleExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lise
|
* @author lise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ESCC225004Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
public class ESCC225004Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
||||||
@Override
|
@Override
|
||||||
public String getProcessType() {
|
public String getProcessType() {
|
||||||
return ExperimentReviewProcessType.ESCC22500;
|
return ExperimentReviewProcessType.ESCC22500;
|
||||||
@@ -26,8 +29,46 @@ public class ESCC225004Executor extends BaseExecutor implements IExperimentRev
|
|||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 质子辐照过程中的退火时长
|
||||||
|
*
|
||||||
|
* 可能低估或高估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 退火时长偏长有利于器件的辐射感生缺陷退火,退火时长偏短不有利于器件的辐射感生缺陷退火
|
||||||
|
*
|
||||||
|
* 参考其他单位指定的质子测试指南
|
||||||
|
*
|
||||||
|
* 退火过程中的退火时长在24小时至一个月的范围外,启动这条评定建议
|
||||||
|
*
|
||||||
|
* @param experiment
|
||||||
|
* @param sampleInfo
|
||||||
|
* @param experimentReview
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false;
|
||||||
|
List<ExperimentAnnealProcess> 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user