|
|
|
@ -51,7 +51,6 @@ import java.time.LocalDate; |
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean; |
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger; |
|
|
|
|
import java.util.concurrent.atomic.AtomicReference; |
|
|
|
|
import java.util.function.Function; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
@ -1562,6 +1561,7 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private RemoteDictDataService remoteDictDataService; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 根据化合物名称找出基峰的对应的数据 |
|
|
|
|
* |
|
|
|
@ -1912,4 +1912,100 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl |
|
|
|
|
return StrUtil.isBlank(existingResult) ? newResult : existingResult + "、" + newResult; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 自动创建测试记录样本数据 |
|
|
|
|
* |
|
|
|
|
* @param testId 测试记录的ID |
|
|
|
|
* @param compoundName 化合物名称 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public void autoCreateData(String testId, String compoundName) { |
|
|
|
|
// 根据测试记录ID获取测试记录对象
|
|
|
|
|
TestRecord testRecord = testRecordService.getById(testId); |
|
|
|
|
|
|
|
|
|
// 从测试记录中获取样本测试ID列表
|
|
|
|
|
List<String> sampleIdList = testRecord.getSampleTestList(); |
|
|
|
|
|
|
|
|
|
// 根据样本ID列表查询样本信息列表
|
|
|
|
|
List<SampleInfo> sampleInfos = sampleInfoService.list(Wrappers.<SampleInfo>lambdaQuery() |
|
|
|
|
.in(SampleInfo::getId, sampleIdList)); |
|
|
|
|
|
|
|
|
|
// 用于存储生成的测试记录样本数据的列表
|
|
|
|
|
ArrayList<TestRecordSampleData> sampleDataList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
// 创建一个标准样本数据对象
|
|
|
|
|
TestRecordSampleData data = new TestRecordSampleData(); |
|
|
|
|
// 设置化合物名称
|
|
|
|
|
data.setCompoundName(compoundName); |
|
|
|
|
// 设置样本编号,格式为 "STD-" 加上化合物名称
|
|
|
|
|
data.setSampleNo("STD-" + compoundName); |
|
|
|
|
// 设置样本类型为 "STD"
|
|
|
|
|
data.setSampleType("STD"); |
|
|
|
|
// 设置样本名称,格式为 "STD-" 加上化合物名称
|
|
|
|
|
data.setName("STD-" + compoundName); |
|
|
|
|
// 设置样本状态为 0
|
|
|
|
|
data.setStatus(0); |
|
|
|
|
// 生成一个32位的大写UUID作为样本数据ID
|
|
|
|
|
data.setId(IdWorker.get32UUID().toUpperCase()); |
|
|
|
|
|
|
|
|
|
// 将标准样本数据添加到样本数据列表中
|
|
|
|
|
sampleDataList.add(data); |
|
|
|
|
|
|
|
|
|
// 遍历样本信息列表,为每个样本创建对应的测试记录样本数据
|
|
|
|
|
sampleInfos.forEach(item -> { |
|
|
|
|
TestRecordSampleData sampleData = new TestRecordSampleData(); |
|
|
|
|
// 设置化合物名称
|
|
|
|
|
data.setCompoundName(compoundName); |
|
|
|
|
// 设置样本编号为样本的受理编号
|
|
|
|
|
data.setSampleNo(item.getAcceptNo()); |
|
|
|
|
// 设置样本类型为 "Analyte"
|
|
|
|
|
data.setSampleType("Analyte"); |
|
|
|
|
// 设置样本名称为样本的受理编号
|
|
|
|
|
data.setName(item.getAcceptNo()); |
|
|
|
|
// 设置样本状态为 0
|
|
|
|
|
data.setStatus(0); |
|
|
|
|
// 生成一个32位的大写UUID作为样本数据ID
|
|
|
|
|
data.setId(IdWorker.get32UUID().toUpperCase()); |
|
|
|
|
// 将样本数据添加到样本数据列表中
|
|
|
|
|
sampleDataList.add(data); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 自动删除指定测试记录和化合物名称对应的测试记录样本数据 |
|
|
|
|
* |
|
|
|
|
* @param testId 测试记录的ID |
|
|
|
|
* @param compoundName 化合物名称 |
|
|
|
|
* @return 如果删除成功返回 true,否则返回 false |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean autoDelData(String testId, String compoundName) { |
|
|
|
|
// 根据测试记录ID和化合物名称删除对应的测试记录样本数据
|
|
|
|
|
return this.remove(Wrappers.<TestRecordSampleData>lambdaQuery() |
|
|
|
|
.eq(TestRecordSampleData::getTestId, testId) |
|
|
|
|
.eq(TestRecordSampleData::getCompoundName, compoundName)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public TestRecordSampleData updateData(TestRecordSampleData data) { |
|
|
|
|
if (this.getById(data.getId()) == null) { |
|
|
|
|
throw new RuntimeException("数据不存在"); |
|
|
|
|
} |
|
|
|
|
String compoundName = data.getCompoundName(); |
|
|
|
|
|
|
|
|
|
TestRecordSampleData std = this.getOne(Wrappers.<TestRecordSampleData>lambdaQuery() |
|
|
|
|
.eq(TestRecordSampleData::getCompoundName, compoundName) |
|
|
|
|
.eq(TestRecordSampleData::getTestId, data.getTestId()) |
|
|
|
|
.eq(TestRecordSampleData::getSampleType, "STD")); |
|
|
|
|
|
|
|
|
|
if (data.getMainArea() != null && |
|
|
|
|
data.getMinorArea() != null && |
|
|
|
|
data.getTargetRtTime() != null && |
|
|
|
|
std.getMainArea() != null && |
|
|
|
|
std.getMinorArea() != null && |
|
|
|
|
std.getTargetRtTime() != null) { |
|
|
|
|
System.out.println("所有属性都不为 null"); |
|
|
|
|
} |
|
|
|
|
return this.updateById(data) ? data : null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|