ESCC229000
This commit is contained in:
@@ -4,18 +4,26 @@
|
|||||||
*/
|
*/
|
||||||
package org.jeecg.modules.database.service.executor;
|
package org.jeecg.modules.database.service.executor;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
|
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
|
||||||
|
* @version GJB548C1Executor.java, v 0.1 2025年06月16日 20:57 lise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ESCC2290001Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
public class ESCC2290001Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getProcessType() {
|
public String getProcessType() {
|
||||||
return ExperimentReviewProcessType.ESCC229000;
|
return ExperimentReviewProcessType.ESCC229000;
|
||||||
@@ -26,8 +34,46 @@ public class ESCC2290001Executor extends BaseExecutor implements IExperimentRe
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1
|
||||||
|
*
|
||||||
|
* 模拟器件未进行ELDRS试验
|
||||||
|
*
|
||||||
|
* 可能高估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 参见附件二知识库中68条目《双极器件的低剂量率效应》的解释。
|
||||||
|
*
|
||||||
|
* a)已知器件设计不包含双极晶体管; b)已知器件设计不包含任何线性电路功能; c)业已证明,该器件类型或IC工艺,并未表现出器件参数ELDRS,而且也已证明影呴ELDRS 响应的变量对于特定的生产方工艺过程已处于受控状态
|
||||||
|
*
|
||||||
|
* 样片类型为模拟集成电路,样片名称中含有双极的字段。但是实际剂量率大于0.01 rad (Si) /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) {
|
||||||
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
List<ExperimentRadiationProcess> radiationProcessList = experimentRadiationProcessService.getByExperimentId(experiment.getId());
|
||||||
|
|
||||||
|
for (ExperimentRadiationProcess radiationProcess : radiationProcessList) {
|
||||||
|
if (!StringUtils.contains(radiationProcess.getSampleInfo(), sampleInfo.getId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String radiationDetailJson = radiationProcess.getRadiationDetail();
|
||||||
|
RadiationMapDTO radiationMap = JSON.parseObject(radiationDetailJson, RadiationMapDTO.class);
|
||||||
|
List<RadiationDetailDTO> detailDTOList = radiationMap.assembleDetails();
|
||||||
|
|
||||||
|
Double minRate = detailDTOList.stream().map(obj -> obj.getActualMeasurementRate()).filter(
|
||||||
|
point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")).mapToDouble(Double::parseDouble)
|
||||||
|
.min().orElse(0d);
|
||||||
|
if (sampleInfo.getSampleName().contains("双极") && sampleInfo.getSampleType().equals("模拟集成电路") && NumberUtil.compare(
|
||||||
|
minRate, 0.01d) > 0 && StringUtils.contains(radiationProcess.getComment(), "加速试验")) {
|
||||||
|
return ExperimentReviewResultEnum.HIGH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
return ExperimentReviewResultEnum.ITEM_PASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,18 +4,27 @@
|
|||||||
*/
|
*/
|
||||||
package org.jeecg.modules.database.service.executor;
|
package org.jeecg.modules.database.service.executor;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
|
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
|
||||||
|
* @version GJB548C1Executor.java, v 0.1 2025年06月16日 20:57 lise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ESCC2290002Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
public class ESCC2290002Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getProcessType() {
|
public String getProcessType() {
|
||||||
return ExperimentReviewProcessType.ESCC229000;
|
return ExperimentReviewProcessType.ESCC229000;
|
||||||
@@ -26,8 +35,44 @@ public class ESCC2290002Executor extends BaseExecutor implements IExperimentRe
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 2
|
||||||
|
*
|
||||||
|
* 选择剂量率低于规定剂量率进行辐照试验
|
||||||
|
*
|
||||||
|
* 可能低估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 参见附件二知识库中83条目《双极器件的辐射试验-辐照剂量率》的解释
|
||||||
|
*
|
||||||
|
* 可参考 QJ10004A-2018的相关规定,分析剂量率选择在QJ10004A-2018的适用性
|
||||||
|
*
|
||||||
|
* 样片类型非模拟集成电路,样片名称中不含有双极的字段。但是实际剂量率小于50 rad (Si) /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) {
|
||||||
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
List<ExperimentRadiationProcess> radiationProcessList = experimentRadiationProcessService.getByExperimentId(experiment.getId());
|
||||||
|
for (ExperimentRadiationProcess radiationProcess : radiationProcessList) {
|
||||||
|
if (!StringUtils.contains(radiationProcess.getSampleInfo(), sampleInfo.getId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String radiationDetailJson = radiationProcess.getRadiationDetail();
|
||||||
|
RadiationMapDTO radiationMap = JSON.parseObject(radiationDetailJson, RadiationMapDTO.class);
|
||||||
|
List<RadiationDetailDTO> detailDTOList = radiationMap.assembleDetails();
|
||||||
|
|
||||||
|
Double minRate = detailDTOList.stream().map(obj -> obj.getActualMeasurementRate()).filter(
|
||||||
|
point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")).mapToDouble(Double::parseDouble)
|
||||||
|
.max().orElse(0d);
|
||||||
|
if (!sampleInfo.getSampleName().contains("双极") && NumberUtil.compare(
|
||||||
|
minRate, 50d) < 0) {
|
||||||
|
return ExperimentReviewResultEnum.LOW;
|
||||||
|
}
|
||||||
|
}
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
return ExperimentReviewResultEnum.ITEM_PASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,18 +4,27 @@
|
|||||||
*/
|
*/
|
||||||
package org.jeecg.modules.database.service.executor;
|
package org.jeecg.modules.database.service.executor;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
|
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
|
||||||
|
* @version GJB548C1Executor.java, v 0.1 2025年06月16日 20:57 lise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ESCC2290003Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
public class ESCC2290003Executor extends BaseExecutor implements IExperimentReviewRuleExecutor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getProcessType() {
|
public String getProcessType() {
|
||||||
return ExperimentReviewProcessType.ESCC229000;
|
return ExperimentReviewProcessType.ESCC229000;
|
||||||
@@ -26,8 +35,46 @@ public class ESCC2290003Executor extends BaseExecutor implements IExperimentRe
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 3
|
||||||
|
*
|
||||||
|
* 选择剂量率高于规定剂量率进行辐照试验
|
||||||
|
*
|
||||||
|
* 可能高估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 参见附件二知识库中83条目《双极器件的辐射试验-辐照剂量率》的解释
|
||||||
|
*
|
||||||
|
* 可参考 QJ10004A-2018的相关规定,分析剂量率选择在QJ10004A-2018的适用性
|
||||||
|
*
|
||||||
|
* 样片类型非模拟集成电路,样片名称中不含有双极的字段。但是实际剂量率大于300 rad (Si) /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) {
|
||||||
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
List<ExperimentRadiationProcess> radiationProcessList = experimentRadiationProcessService.getByExperimentId(experiment.getId());
|
||||||
|
|
||||||
|
for (ExperimentRadiationProcess radiationProcess : radiationProcessList) {
|
||||||
|
if (!StringUtils.contains(radiationProcess.getSampleInfo(), sampleInfo.getId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String radiationDetailJson = radiationProcess.getRadiationDetail();
|
||||||
|
RadiationMapDTO radiationMap = JSON.parseObject(radiationDetailJson, RadiationMapDTO.class);
|
||||||
|
List<RadiationDetailDTO> detailDTOList = radiationMap.assembleDetails();
|
||||||
|
|
||||||
|
Double minRate = detailDTOList.stream().map(obj -> obj.getActualMeasurementRate()).filter(
|
||||||
|
point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")).mapToDouble(Double::parseDouble)
|
||||||
|
.max().orElse(0d);
|
||||||
|
if (!sampleInfo.getSampleName().contains("双极") && !sampleInfo.getSampleType().equals("模拟集成电路") && NumberUtil.compare(
|
||||||
|
minRate, 300d) > 0) {
|
||||||
|
return ExperimentReviewResultEnum.HIGH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
return ExperimentReviewResultEnum.ITEM_PASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,12 +4,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.jeecg.modules.database.service.executor;
|
package org.jeecg.modules.database.service.executor;
|
||||||
|
|
||||||
|
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
|
||||||
*/
|
*/
|
||||||
@@ -26,8 +29,44 @@ public class ESCC2290004Executor extends BaseExecutor implements IExperimentRe
|
|||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 6
|
||||||
|
*
|
||||||
|
* 需要进行加速退火而未进行加速退火的试验
|
||||||
|
*
|
||||||
|
* 可能高估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 界面态在退火过程中的后增长和氧化物陷阱电荷的退火
|
||||||
|
*
|
||||||
|
* 已知器件的电路设计中不包含MOS单元;已知应用环境的总剂量不超过50Gy(Si);已知器件在辐射环境服役的总寿命小于TDE时间;按预定应用环境的剂量率进行辐射试验
|
||||||
|
*
|
||||||
|
* 通过表征试验,业已证明,该器件类型或IC工艺,并未表现出器件参数TDE变化大于试验误差(或大于规定的上限),而且也已证明影响TDE响应的变量对于特定的生产方工艺过程已处于受控状态。作为起码要求,上述表征试验应包括评价TDE
|
||||||
|
* 对传输延迟、输出驱动、最小工作电压参数的影响、对影响TDE变量的连续工艺控制状态可通过MOS测试结构的辐射加固批取样试验得到证明
|
||||||
|
*
|
||||||
|
* 退火过程中没有高温退火(退火温度为100℃识别为高温退火)这个过程;同时在评定流程中询问用户是否需要加速退火,用户选是,启动这条评定建议
|
||||||
|
*
|
||||||
|
* @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) {
|
||||||
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false;
|
||||||
|
if (StringUtils.equals(experimentReview.getNeedAnneal(), "Y")) {
|
||||||
|
condition1 = true;
|
||||||
|
}
|
||||||
|
List<ExperimentAnnealProcess> experimentAnnealProcessList = experimentAnnealProcessService.getByExperimentId(experiment.getId());
|
||||||
|
for (ExperimentAnnealProcess experimentAnnealProcess : experimentAnnealProcessList) {
|
||||||
|
if (experimentAnnealProcess.getAnnealTemperature().equals("100")) {
|
||||||
|
condition2 = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (condition1 && !condition2) {
|
||||||
|
return ExperimentReviewResultEnum.HIGH;
|
||||||
|
}
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
return ExperimentReviewResultEnum.ITEM_PASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,12 +4,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.jeecg.modules.database.service.executor;
|
package org.jeecg.modules.database.service.executor;
|
||||||
|
|
||||||
|
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
|
||||||
*/
|
*/
|
||||||
@@ -26,8 +29,41 @@ public class ESCC2290005Executor extends BaseExecutor implements IExperimentRe
|
|||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 7
|
||||||
|
*
|
||||||
|
* 不需要进行加速退火但进行了加速退火的试验
|
||||||
|
*
|
||||||
|
* 可能低估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 退火过程中的界面态增长将可能导致元器件的后损伤
|
||||||
|
*
|
||||||
|
* 不包含MOS单元器件
|
||||||
|
*
|
||||||
|
* 退火过程中有高温退火(退火温度为100℃识别为室温退火)这个过程;同时在评定流程中询问用户是否需要加速退火,用户选否,启动这条评定建议
|
||||||
|
*
|
||||||
|
* @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) {
|
||||||
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false;
|
||||||
|
if (StringUtils.equals(experimentReview.getNeedAnneal(), "N")) {
|
||||||
|
condition1 = true;
|
||||||
|
}
|
||||||
|
List<ExperimentAnnealProcess> experimentAnnealProcessList = experimentAnnealProcessService.getByExperimentId(experiment.getId());
|
||||||
|
for (ExperimentAnnealProcess experimentAnnealProcess : experimentAnnealProcessList) {
|
||||||
|
if (experimentAnnealProcess.getAnnealTemperature().equals("100")) {
|
||||||
|
condition2 = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (condition1 && condition2) {
|
||||||
|
return ExperimentReviewResultEnum.LOW;
|
||||||
|
}
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
return ExperimentReviewResultEnum.ITEM_PASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,12 +4,17 @@
|
|||||||
*/
|
*/
|
||||||
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
|
||||||
*/
|
*/
|
||||||
@@ -26,8 +31,44 @@ public class ESCC2290006Executor extends BaseExecutor implements IExperimentRe
|
|||||||
return 6;
|
return 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 10
|
||||||
|
*
|
||||||
|
* 器件未使用最劣偏置
|
||||||
|
*
|
||||||
|
* 可能高估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 参见附件二知识库中84条目《辐射试验》的解释
|
||||||
|
*
|
||||||
|
* 采用应用偏置条件
|
||||||
|
*
|
||||||
|
* 试验数据中偏置条件选择动态偏置,启动这条评定建议
|
||||||
|
*
|
||||||
|
* @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) {
|
||||||
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false;
|
||||||
|
|
||||||
|
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")) {
|
||||||
|
condition1 = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (condition1) {
|
||||||
|
return ExperimentReviewResultEnum.HIGH;
|
||||||
|
}
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
return ExperimentReviewResultEnum.ITEM_PASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,11 +5,14 @@
|
|||||||
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
|
||||||
*/
|
*/
|
||||||
@@ -26,8 +29,43 @@ public class ESCC2290007Executor extends BaseExecutor implements IExperimentRe
|
|||||||
return 7;
|
return 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电学测试通过后未进行24小时的室温退火
|
||||||
|
*
|
||||||
|
* 可能高估器件的抗辐射性能
|
||||||
|
*
|
||||||
|
* 退火过程中的界面态增长将可能导致元器件的后损伤
|
||||||
|
*
|
||||||
|
* 可参考QJ10004A-2018 、GJB-548C,分析试验流程在两个标准的适用性
|
||||||
|
*
|
||||||
|
* 退火过程中的没有25℃ 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) {
|
||||||
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false;
|
||||||
|
|
||||||
|
List<ExperimentAnnealProcess> experimentAnnealProcessList = experimentAnnealProcessService.getByExperimentId(experiment.getId());
|
||||||
|
for (ExperimentAnnealProcess experimentAnnealProcess : experimentAnnealProcessList) {
|
||||||
|
if (experimentAnnealProcess.getAnnealTemperature().equals("25")) {
|
||||||
|
condition1 = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Date annealStartTime = experimentAnnealProcess.getAnnealStartTime();
|
||||||
|
Date annealEndTime = experimentAnnealProcess.getAnnealEndTime();
|
||||||
|
long diffInMillis = annealEndTime.getTime() - annealStartTime.getTime();
|
||||||
|
if (diffInMillis > 24 * 60 * 60 * 1000) {
|
||||||
|
condition2 = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!condition1 && condition2) {
|
||||||
|
return ExperimentReviewResultEnum.HIGH;
|
||||||
|
}
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
return ExperimentReviewResultEnum.ITEM_PASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,12 +4,17 @@
|
|||||||
*/
|
*/
|
||||||
package org.jeecg.modules.database.service.executor;
|
package org.jeecg.modules.database.service.executor;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
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.TestMeteringPointDTO;
|
||||||
|
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
|
||||||
*/
|
*/
|
||||||
@@ -26,8 +31,52 @@ public class ESCC2290008Executor extends BaseExecutor implements IExperimentRe
|
|||||||
return 8;
|
return 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 15
|
||||||
|
*
|
||||||
|
* 试验过程未缺失,并且都符合试验标准的要求,参数测试结果未超差
|
||||||
|
*
|
||||||
|
* 评定结果通过
|
||||||
|
*
|
||||||
|
* 辐照过程中备注栏有“已过辐照”字段;有100℃高温退火过程;最后一次测试通过,启动这条评定建议
|
||||||
|
*
|
||||||
|
* @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) {
|
||||||
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false, condition3 = false;
|
||||||
|
|
||||||
|
List<ExperimentRadiationProcess> experimentRadiationProcessList = experimentRadiationProcessService.getByExperimentId(
|
||||||
|
experiment.getId());
|
||||||
|
for (ExperimentRadiationProcess v : experimentRadiationProcessList) {
|
||||||
|
if (StringUtils.contains(v.getComment(), "已过辐照")) {
|
||||||
|
condition1 = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<ExperimentAnnealProcess> experimentAnnealProcessList = experimentAnnealProcessService.getByExperimentId(experiment.getId());
|
||||||
|
for (ExperimentAnnealProcess experimentAnnealProcess : experimentAnnealProcessList) {
|
||||||
|
if (StringUtils.contains(experimentAnnealProcess.getAnnealTemperature(), "100")) {
|
||||||
|
condition2 = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<ExperimentTestProcess> experimentTestProcessList = experimentTestProcessService.getByExperimentId(experiment.getId());
|
||||||
|
|
||||||
|
for (ExperimentTestProcess v : experimentTestProcessList) {
|
||||||
|
List<TestMeteringPointDTO> testMeteringPointList = v.getTestMeteringPointList();
|
||||||
|
TestMeteringPointDTO last = CollUtil.getLast(testMeteringPointList);
|
||||||
|
if (!StringUtils.equals(last.getResult(), "合格")) {
|
||||||
|
condition3 = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (condition1 && condition2 && condition3) {
|
||||||
|
return ExperimentReviewResultEnum.FINAL_PASS;
|
||||||
|
}
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
return ExperimentReviewResultEnum.ITEM_PASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,12 +4,17 @@
|
|||||||
*/
|
*/
|
||||||
package org.jeecg.modules.database.service.executor;
|
package org.jeecg.modules.database.service.executor;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
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.TestMeteringPointDTO;
|
||||||
|
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
|
||||||
*/
|
*/
|
||||||
@@ -28,6 +33,21 @@ public class ESCC2290009Executor extends BaseExecutor implements IExperimentRe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
public String execute(Experiment experiment, ExperimentSampleInfo sampleInfo, ExperimentReview experimentReview) {
|
||||||
|
experimentService.fetchExperimentDetail(experiment);
|
||||||
|
boolean condition1 = false, condition2 = false, condition3 = false;
|
||||||
|
List<ExperimentTestProcess> experimentTestProcessList = experimentTestProcessService.getByExperimentId(experiment.getId());
|
||||||
|
|
||||||
|
for (ExperimentTestProcess v : experimentTestProcessList) {
|
||||||
|
List<TestMeteringPointDTO> testMeteringPointList = v.getTestMeteringPointList();
|
||||||
|
TestMeteringPointDTO last = CollUtil.getLast(testMeteringPointList);
|
||||||
|
if (!StringUtils.equals(last.getResult(), "合格")) {
|
||||||
|
condition3 = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!condition3) {
|
||||||
|
return ExperimentReviewResultEnum.NOT_PASS;
|
||||||
|
}
|
||||||
return ExperimentReviewResultEnum.ITEM_PASS;
|
return ExperimentReviewResultEnum.ITEM_PASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user