20250402 更新

1.优化计算保留时间的方法
master
陈江保 2 weeks ago
parent ccb7986375
commit ed1ff2e69d
  1. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/PushDataToLabsCareServiceImpl.java
  2. 34
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordSampleDataServiceImpl.java

@ -93,7 +93,7 @@ public class PushDataToLabsCareServiceImpl implements PushDataToLabsCareService
private final static String NON_INFRARED_GENERAL_QUALITATIVE_RECORD = "NonInfraredGeneralQualitativeRecord";
/**
* 做一个定时推送对于推送失败的委托进行重新推送 每天凌晨1点推送
* 做一个定时推送对于推送失败的委托进行重新推送 每天凌晨2点推送
*/
// @Scheduled(cron = "30 * * * * ?") // 测试
@Scheduled(cron = "0 0 2 * * ?") // 每天凌晨 2 点执行

@ -407,7 +407,7 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl
}
// 开启异步执行
// CompletableFuture.runAsync(() -> {
testRecordSampleDataList.forEach(item -> calculateInspectData(item.getId()));
calculateInspectData(testRecordSampleDataList.stream().map(TestRecordSampleData::getId).collect(Collectors.toList()), testRecord.getBusinessType());
// }).exceptionally(e -> {
// log.error("计算保留时间以及相对误差出错!");
// e.printStackTrace();
@ -1610,29 +1610,33 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl
/**
* 更新计算数据计算保留时间和保留时间误差
* @param dataId 检验数据id
*
* @param dataIds 检验数据id列表
* @param businessType 实验类型(业务类型)
* @return
*/
public Boolean calculateInspectData(String dataId) {
TestRecordSampleData testRecordSampleData = super.getById(dataId);
String compoundName = testRecordSampleData.getCompoundName();
public Boolean calculateInspectData(List<String> dataIds, String businessType) {
// 获取所有需要操作的列表
List<TestRecordSampleData> testRecordSampleDataList = super.listByIds(dataIds);
// 筛选出标准物质检验数据,并根据compoundName转map
Map<String, TestRecordSampleData> stdTestDataMap = testRecordSampleDataList
.stream()
.filter(testRecordSampleData -> testRecordSampleData.getSampleType().equals(TestRecordSampleDataConstant.SAMPLE_TYPE_STD))
.collect(Collectors.toMap(TestRecordSampleData::getCompoundName, Function.identity()));
TestRecordSampleData std = this.getOne(Wrappers.<TestRecordSampleData>lambdaQuery()
.eq(TestRecordSampleData::getCompoundName, compoundName)
.eq(TestRecordSampleData::getTestId, testRecordSampleData.getTestId())
.eq(TestRecordSampleData::getSampleType, "STD"));
testRecordSampleDataList.forEach(testRecordSampleData -> {
TestRecordSampleData std = stdTestDataMap.get(testRecordSampleData.getCompoundName());
if ( testRecordSampleData.getTargetRtTime() != null && std.getTargetRtTime() != null ) {
TestRecord testRecord = testRecordService.getById(testRecordSampleData.getTestId());
if (testRecord.getBusinessType().equals(BusinessType.BOINT_CASE.getBusinessType())) {
if ( std != null && testRecordSampleData.getTargetRtTime() != null && std.getTargetRtTime() != null ) {
testRecordSampleData.setRtTimeError(processInspectDataService.getHairCaseRtTimeError(testRecordSampleData.getTargetRtTime(), std.getTargetRtTime()));
if (businessType.equals(BusinessType.BOINT_CASE.getBusinessType())) {
testRecordSampleData.setRtTimeWithinError(
processInspectDataService.setHairCaseRtTimeWithinError(
testRecordSampleData.getRtTimeError().doubleValue()
)
);
} else {
testRecordSampleData.setRtTimeError(processInspectDataService.getHairCaseRtTimeError(testRecordSampleData.getTargetRtTime(), std.getTargetRtTime()));
testRecordSampleData.setRtTimeWithinError(
processInspectDataService.getRtWithinErrorText(
Math.abs(testRecordSampleData.getRtTimeError().doubleValue()),
@ -1641,7 +1645,9 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl
);
}
}
return this.updateById(testRecordSampleData);
});
return this.updateBatchById(testRecordSampleDataList);
}
@Override

Loading…
Cancel
Save