|
|
|
@ -5,14 +5,14 @@ import cn.hutool.core.util.StrUtil; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
|
|
import digital.laboratory.platform.inspection.convert.TestSampleDataExpandConverter; |
|
|
|
|
import digital.laboratory.platform.inspection.dto.TestSampleDataExpandDTO; |
|
|
|
|
import digital.laboratory.platform.inspection.entity.TestRecordSampleData; |
|
|
|
|
import digital.laboratory.platform.inspection.enums.BusinessType; |
|
|
|
|
import digital.laboratory.platform.inspection.constant.TestRecordSampleDataConstant; |
|
|
|
|
import digital.laboratory.platform.inspection.convert.TestSampleDataExpandConverter; |
|
|
|
|
import digital.laboratory.platform.inspection.dto.HairSewageDataDto; |
|
|
|
|
import digital.laboratory.platform.inspection.dto.NPSCaseTestDataDto; |
|
|
|
|
import digital.laboratory.platform.inspection.dto.TestSampleDataExpandDTO; |
|
|
|
|
import digital.laboratory.platform.inspection.entity.TestRecordSampleData; |
|
|
|
|
import digital.laboratory.platform.inspection.entity.TestRecordSampleDataExpand; |
|
|
|
|
import digital.laboratory.platform.inspection.enums.BusinessType; |
|
|
|
|
import digital.laboratory.platform.inspection.mapper.TestRecordSampleDataExpandMapper; |
|
|
|
|
import digital.laboratory.platform.inspection.service.ProcessInspectDataService; |
|
|
|
|
import digital.laboratory.platform.inspection.service.TestRecordSampleDataService; |
|
|
|
@ -27,7 +27,6 @@ import org.springframework.stereotype.Service; |
|
|
|
|
import javax.annotation.Resource; |
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -259,13 +258,20 @@ public class TestRecordSampledataExpandServiceImpl extends ServiceImpl<TestRecor |
|
|
|
|
sampleDataExpand.setIonAbundanceRatio(sampleDataExpand.getPeakArea().divide(basePeakData.getPeakArea(), 5, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100))); |
|
|
|
|
if (CollUtil.isNotEmpty(finalStdDataExpandList)) { |
|
|
|
|
finalStdDataExpandList.forEach(stdDataExpand -> { |
|
|
|
|
if (stdDataExpand.getMassToChargeRatio().equals(sampleDataExpand.getMassToChargeRatio())) { |
|
|
|
|
boolean matched = false; // 匹配对应的标准物质数据
|
|
|
|
|
boolean isNPSCase = testRecord.getBusinessType().equals(BusinessType.NPS_CASE.getBusinessType()); // 是否是常规毒品案件
|
|
|
|
|
if (isNPSCase) { |
|
|
|
|
matched = stdDataExpand.getMassToChargeRatio().equals(sampleDataExpand.getMassToChargeRatio()); |
|
|
|
|
} else { |
|
|
|
|
matched = stdDataExpand.getQualitativeIonPair().equals(sampleDataExpand.getQualitativeIonPair()); |
|
|
|
|
} |
|
|
|
|
if (matched) { |
|
|
|
|
BigDecimal ionAbundanceRatioError = sampleDataExpand.getIonAbundanceRatio() |
|
|
|
|
.subtract(stdDataExpand.getIonAbundanceRatio()) |
|
|
|
|
.divide(stdDataExpand.getIonAbundanceRatio(), 5, BigDecimal.ROUND_HALF_UP) |
|
|
|
|
.multiply(BigDecimal.valueOf(100)); |
|
|
|
|
sampleDataExpand.setIonAbundanceRatioError(ionAbundanceRatioError); |
|
|
|
|
if (testRecord.getBusinessType().equals(BusinessType.NPS_CASE.getBusinessType())) { |
|
|
|
|
if (isNPSCase) { |
|
|
|
|
sampleDataExpand.setIonAbundanceRatioWithinError(processInspectDataService.getWithinErrorText(ionAbundanceRatioError, processInspectDataService.getErrorRange(sampleDataExpand.getIonAbundanceRatio()))); |
|
|
|
|
} else { |
|
|
|
|
sampleDataExpand.setIonAbundanceRatioWithinError(processInspectDataService.calculateHairCaseIonAbundanceRatioWithinError(ionAbundanceRatioError.doubleValue(), stdDataExpand.getIonAbundanceRatio().doubleValue())); |
|
|
|
|