修改试验新增和编辑的校验,加偏设备可以在一个里面选多个样品。

This commit is contained in:
dengchun
2025-05-18 16:30:33 +08:00
parent abdeb52ecd
commit 782e453ad8

View File

@@ -150,7 +150,14 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
if (!StringUtils.startsWith(experimentNo, "KC")) {
return Result.error("实验编号格式不正确!");
}
List<ExperimentSampleInfo> sampleInfoList = experiment.getSampleInfoList();
//校验试验的基本信息
String result = validateSampleInfos(experiment);
if (StringUtils.isNotBlank(result)) {
return Result.error(result);
}
//TODO: 0518 暂时注释掉
/* List<ExperimentSampleInfo> sampleInfoList = experiment.getSampleInfoList();
List<ExperimentIrradiationBoard> irradiationBoardList = experiment.getIrradiationBoardList();
List<ExperimentDeviationCondition> deviationConditionList = experiment.getDeviationConditionList();
List<ExperimentDeviationEquipment> deviationEquipmentList = experiment.getDeviationEquipmentList();
@@ -166,7 +173,7 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
}
if (!sampleList.equals(equipmentList)) {
return Result.error("加偏设备信息不匹配!");
}
}*/
experiment.setStatus(ExperimentStatus.PRE_TEST);
experimentService.saveWithDetail(experiment);
@@ -181,6 +188,58 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
return Result.OK("添加成功!");
}
/**
* 新增和修改试验时 需要校验样例信息和辐照板信息、偏置条件信息、加偏设备信息是否一致。
* 检查方法是: 样品信息的ids = 辐照板信息、偏置条件信息、加偏设备信息的样品信息IDs
* @param experiment 试验信息
* @return 错误信息, 如果返回为空,则校验通过。
*/
private String validateSampleInfos(Experiment experiment) {
List<ExperimentSampleInfo> sampleInfoList = experiment.getSampleInfoList();
List<ExperimentIrradiationBoard> irradiationBoardList = experiment.getIrradiationBoardList();
List<ExperimentDeviationCondition> deviationConditionList = experiment.getDeviationConditionList();
List<ExperimentDeviationEquipment> deviationEquipmentList = experiment.getDeviationEquipmentList();
Set<String> sampleModelSet = sampleInfoList.stream()
.map(ExperimentSampleInfo::getSampleModel)
.collect(Collectors.toSet());
Set<String> irradiationBoardModels = irradiationBoardList.stream()
.map(ExperimentIrradiationBoard::getSampleModel)
.filter(sampleModel -> sampleModel != null && !sampleModel.isEmpty())
.flatMap(sampleModel -> Arrays.stream(sampleModel.split(",")))
.map(String::trim)
.collect(Collectors.toSet());
if (!sampleModelSet.equals(irradiationBoardModels)) {
return "辐照板信息不匹配!";
}
Set<String> deviationConditionModels = deviationConditionList.stream()
.map(ExperimentDeviationCondition::getSampleModel)
.filter(sampleModel -> sampleModel != null && !sampleModel.isEmpty())
.flatMap(sampleModel -> Arrays.stream(sampleModel.split(",")))
.map(String::trim)
.collect(Collectors.toSet());
if (!sampleModelSet.equals(deviationConditionModels)) {
return "偏置条件信息不匹配!";
}
Set<String> deviationEquipmentModels = deviationEquipmentList.stream()
.map(ExperimentDeviationEquipment::getSampleModel)
.filter(sampleModel -> sampleModel != null && !sampleModel.isEmpty())
.flatMap(sampleModel -> Arrays.stream(sampleModel.split(",")))
.map(String::trim)
.collect(Collectors.toSet());
if (!sampleModelSet.equals(deviationEquipmentModels)) {
return "加偏设备信息不匹配!";
}
return "";
}
@AutoLog(value = "试验管理-暂存")
@Operation(summary = "试验管理-暂存")
@RequiresPermissions("database:experiment:add")
@@ -235,23 +294,10 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
experiment.setIndexNo(dbExp.getIndexNo());
}
List<ExperimentSampleInfo> sampleInfoList = experiment.getSampleInfoList();
List<ExperimentIrradiationBoard> irradiationBoardList = experiment.getIrradiationBoardList();
List<ExperimentDeviationCondition> deviationConditionList = experiment.getDeviationConditionList();
List<ExperimentDeviationEquipment> deviationEquipmentList = experiment.getDeviationEquipmentList();
Set<String> sampleList = sampleInfoList.stream().map(v -> v.getSampleModel()).collect(Collectors.toUnmodifiableSet());
Set<String> boardList = irradiationBoardList.stream().map(v -> v.getSampleModel()).collect(Collectors.toUnmodifiableSet());
Set<String> conditionList = deviationConditionList.stream().map(v -> v.getSampleModel()).collect(Collectors.toUnmodifiableSet());
Set<String> equipmentList = deviationEquipmentList.stream().map(v -> v.getSampleModel()).collect(Collectors.toUnmodifiableSet());
if (!sampleList.equals(boardList)) {
return Result.error("辐照板信息不匹配!");
}
if (!sampleList.equals(conditionList)) {
return Result.error("偏置条件信息不匹配!");
}
if (!sampleList.equals(equipmentList)) {
return Result.error("加偏设备信息不匹配!");
//校验试验的基本信息
String result = validateSampleInfos(experiment);
if (StringUtils.isNotBlank(result)) {
return Result.error(result);
}
experimentService.saveWithDetail(experiment);