From bc74b2e32ec958464bd4af005d0a46efbc51f3aa Mon Sep 17 00:00:00 2001 From: nieziyan Date: Mon, 29 Jul 2024 19:30:17 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E8=87=AA=E5=BB=BA=E5=8F=B0?= =?UTF-8?q?=E7=AB=99SaveToDB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/entity/rnauto/GardsAnalysisRoi.java | 2 +- .../base/entity/rnman/GardsAnalysisRoi.java | 3 +- .../modules/spectrum/Sample_C_Analysis.java | 212 +++++++++++------- .../modules/service/AnalysisManService.java | 3 + .../service/impl/AnalysisManServiceImpl.java | 126 ++++++----- .../impl/GardsAnalysisRoiManServiceImpl.java | 2 +- .../modules/entity/vo/SelfStationData.java | 5 + .../mapper/GardsAnalysesManMapper.java | 1 + .../mapper/xml/GardsAnalysesManMapper.xml | 10 + .../IGardsAnalysesSpectrumService.java | 1 + .../GardsAnalysesSpectrumServiceImpl.java | 19 +- .../service/impl/SelfStationServiceImpl.java | 98 +++++++- 12 files changed, 338 insertions(+), 144 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnauto/GardsAnalysisRoi.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnauto/GardsAnalysisRoi.java index 8cb64f78..4961a62f 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnauto/GardsAnalysisRoi.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnauto/GardsAnalysisRoi.java @@ -17,7 +17,7 @@ import org.springframework.format.annotation.DateTimeFormat; @Accessors(chain = true) public class GardsAnalysisRoi { - @TableId("IDANALYSIS") + @TableField("IDANALYSIS") private Integer idAnalysis; private Integer sampleId; diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnman/GardsAnalysisRoi.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnman/GardsAnalysisRoi.java index df27599b..328dca20 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnman/GardsAnalysisRoi.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnman/GardsAnalysisRoi.java @@ -1,5 +1,6 @@ package org.jeecg.modules.base.entity.rnman; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -10,7 +11,7 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class GardsAnalysisRoi { - @TableId("IDANALYSIS") + @TableField("IDANALYSIS") private Integer idAnalysis; private Integer sampleId; diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java index 65da6a12..5a070365 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java @@ -3,6 +3,7 @@ package org.jeecg.modules.spectrum; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.NumberUtil; @@ -21,6 +22,7 @@ import org.jeecg.common.constant.enums.SpectrumSystemType; import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.common.util.*; +import org.jeecg.modules.ErrorLogManager; import org.jeecg.modules.base.bizVo.AttributeItemVo; import org.jeecg.modules.base.dto.*; import org.jeecg.modules.base.entity.original.GardsSampleData; @@ -29,6 +31,7 @@ import org.jeecg.modules.base.enums.DSType; import org.jeecg.modules.base.enums.MiddleDataType; import org.jeecg.modules.base.enums.SpectrumType; import org.jeecg.modules.config.datasource.DataSourceSwitcher; +import org.jeecg.modules.eneity.event.SpectrumErrorEvent; import org.jeecg.modules.entity.vo.*; import org.jeecg.modules.exception.AnalySpectrumException; import org.jeecg.modules.exception.CAnalyseException; @@ -131,7 +134,7 @@ public class Sample_C_Analysis { private List phdFilePaths; - private Table middleDataTable; + private Map middleDataMap; public Sample_C_Analysis(AbstractS_D_Q_G_SpectrumHandler spectrumHandler, EnergySpectrumStruct sampleStruct, SpectrumServiceQuotes serviceQuotes, GardsSampleData sampleData) { @@ -202,33 +205,26 @@ public class Sample_C_Analysis { boolean analyFlag2 = gammaFileUtil.GetMiddleData(phdFile2, CommonConstant.REPORT_PREFIX_AUTO, nuclideLibs, middleData2, MiddleDataType.Auto.getType(), ""); boolean analyFlag3 = gammaFileUtil.GetMiddleData(phdFile3, CommonConstant.REPORT_PREFIX_AUTO, nuclideLibs, middleData3, MiddleDataType.Auto.getType(), ""); boolean analyFlag4 = gammaFileUtil.GetMiddleData(phdFile4, CommonConstant.REPORT_PREFIX_AUTO, nuclideLibs, middleData4, MiddleDataType.Auto.getType(), ""); - // 数据插入数据库 - this.storageDataToDatabase(mdcInfoMap, null, - middleData1, middleData2, middleData3, middleData4); - /*if (analyFlag) { + + boolean analyFlag = analyFlag1 && analyFlag2 && analyFlag3 && analyFlag4; + + if (analyFlag) { // 数据插入数据库 this.storageDataToDatabase(mdcInfoMap, null, middleData1, middleData2, middleData3, middleData4); // 生成日志文件 - writeLog(middleData.getAnalyses_LogPath(), middleData); + writeLog(middleData1, middleData2, middleData3, middleData4); // 生成报告文件 - spectrumPathProperties = SpringContextUtils.getBean(SpectrumPathProperties.class); - String reportContent = gammaFileUtil.GetReportContent(middleData); - String reportPath = StringUtils.substringBeforeLast(middleData.getAnalyses_ReportPath(), StringPool.SLASH); - String reportName = StringUtils.substringAfterLast(middleData.getAnalyses_ReportPath(), StringPool.SLASH) + ".txt"; - String savePath = spectrumPathProperties.getRootPath() + spectrumPathProperties.getSaveFilePath() + File.separator + reportPath + - File.separator + reportName; - // 保存文件 - FileOperation.saveOrAppendFile(savePath, reportContent, false); + writeReport(middleData1, middleData2, middleData3, middleData4); //发送数据到redis - middleData.setSample_id(String.valueOf(sampleId)); - pushToRedis(middleData); + // middleData.setSample_id(String.valueOf(sampleId)); + // pushToRedis(middleData); } else { - ErrorLogManager.getInstance().write(new SpectrumErrorEvent(new Date(), phdFile.getAnalyMessage(), this.sampleFilename)); - throw new AnalySpectrumException(phdFile.getAnalyMessage()); - }*/ + ErrorLogManager.getInstance().write(new SpectrumErrorEvent(new Date(), phdFile1.getAnalyMessage(), this.sampleFilename)); + throw new AnalySpectrumException(phdFile1.getAnalyMessage()); + } } catch (Exception e){ e.printStackTrace(); log.error("Sample_C_Analysis", e); @@ -287,29 +283,30 @@ public class Sample_C_Analysis { bChannels, gChannels, hCounts); // 根据ROI生成四个Gamma谱文件 文件命名格式为: 样品谱原名_ROI_x.PHD - String savePath = this.saveFullPath(); + String saveFullPath = this.saveFullPath(); String gammaOneName = StrUtil.subBefore(sampleFilename, ".PHD", true) + "_ROI_1.PHD"; - selfStationUtil.createGammaFile(savePath, gammaOneName, this.sampleStruct, roiOneCounts); + selfStationUtil.createGammaFile(saveFullPath, gammaOneName, this.sampleStruct, roiOneCounts); String gammaTwoName = StrUtil.subBefore(sampleFilename, ".PHD", true) + "_ROI_2.PHD"; - selfStationUtil.createGammaFile(savePath, gammaTwoName, this.sampleStruct, roiTwoCounts); + selfStationUtil.createGammaFile(saveFullPath, gammaTwoName, this.sampleStruct, roiTwoCounts); String gammaThreeName = StrUtil.subBefore(sampleFilename, ".PHD", true) + "_ROI_3.PHD"; - selfStationUtil.createGammaFile(savePath, gammaThreeName, this.sampleStruct, roiThreeCounts); + selfStationUtil.createGammaFile(saveFullPath, gammaThreeName, this.sampleStruct, roiThreeCounts); String gammaFourName = StrUtil.subBefore(sampleFilename, ".PHD", true) + "_ROI_4.PHD"; - selfStationUtil.createGammaFile(savePath, gammaFourName, this.sampleStruct, roiFourCounts); + selfStationUtil.createGammaFile(saveFullPath, gammaFourName, this.sampleStruct, roiFourCounts); // 将生成的GammaPHD文件转换为PHDFile对象 - this.phdFile1 = selfStationUtil.getGammaPHD(gammaOneName, savePath); + this.phdFile1 = selfStationUtil.getGammaPHD(gammaOneName, saveFullPath); this.phdFile1.setRoiSuffix("_ROI_1"); - this.phdFile2 = selfStationUtil.getGammaPHD(gammaTwoName, savePath); + this.phdFile2 = selfStationUtil.getGammaPHD(gammaTwoName, saveFullPath); this.phdFile2.setRoiSuffix("_ROI_2"); - this.phdFile3 = selfStationUtil.getGammaPHD(gammaThreeName, savePath); + this.phdFile3 = selfStationUtil.getGammaPHD(gammaThreeName, saveFullPath); this.phdFile3.setRoiSuffix("_ROI_3"); - this.phdFile4 = selfStationUtil.getGammaPHD(gammaFourName, savePath); + this.phdFile4 = selfStationUtil.getGammaPHD(gammaFourName, saveFullPath); this.phdFile4.setRoiSuffix("_ROI_4"); // 生成PHD的inputFileName - String saveRelativePath = this.spectrumHandler.getFileSaveRelativePath(); + // String saveRelativePath = this.spectrumHandler.getFileSaveRelativePath(); + String saveRelativePath = this.savePath(); gammaOneName = saveRelativePath + StrUtil.SLASH + gammaOneName; gammaTwoName = saveRelativePath + StrUtil.SLASH + gammaTwoName; gammaThreeName = saveRelativePath + StrUtil.SLASH + gammaThreeName; @@ -317,6 +314,23 @@ public class Sample_C_Analysis { phdFilePaths = ListUtil.toList(gammaOneName, gammaTwoName, gammaThreeName, gammaFourName); } + public String savePath(){ + //measurement_id切割后的字符数组 + String[] arr = this.sampleStruct.measurement_id.split(StringConstant.DASH); + //切割后第一个,元素是年,第二个是月 + final String[] yearMonth = arr[1].split(StringConstant.SLASH); + SpectrumPathProperties properties = this.spectrumPathProperties; + StringBuilder relativePath = new StringBuilder(); + relativePath.append(properties.getFilePathMap().get(this.sampleStruct.system_type)); + relativePath.append(StrUtil.SLASH); + relativePath.append(properties.getFilePathMap().get(this.sampleStruct.data_type)); + relativePath.append(StrUtil.SLASH); + relativePath.append(yearMonth[0]); + relativePath.append(StrUtil.SLASH); + relativePath.append(yearMonth[1]); + return relativePath.toString(); + } + /* * 获取savefile全路径 不包含文件名 * */ @@ -431,32 +445,36 @@ public class Sample_C_Analysis { public void storageDataToDatabase(Map mdcInfoMap, Map qcItems, GStoreMiddleProcessData... middleDatas){ // 如果数据已经存储 不再重复存储 - final Integer idAnalysisAny = serviceQuotes.getAnalysisRoiAutoService().getIdAnalysisAny(this.sampleData.getSampleId()); - if(Objects.nonNull(idAnalysisAny)) return; + Integer idAnalysis = serviceQuotes.getAnalysesService().getIdAnalysis(this.sampleData.getSampleId()); + if(ObjectUtil.isNotNull(idAnalysis)) return; DataSourceSwitcher.switchToOracle(); final TransactionStatus transactionStatus = serviceQuotes.getTransactionManager().getTransaction(serviceQuotes.getTransactionDefinition()); try { Integer sampleId = this.sampleData.getSampleId(); // 保存分析结果 ==> INSERT INTO RNAUTO.GARDS_ANALYSES - saveAnalysisROI(sampleId, middleDatas); + saveAnalysis(middleDatas[0], sampleId); + // 获取分析结果ID ==> SELECT IDANALYSIS + idAnalysis = serviceQuotes.getAnalysesService().getIdAnalysis(sampleId); + // 保存分析结果 ==> INSERT INTO RNAUTO.GARDS_ANALYSES + saveAnalysisROI(sampleId, idAnalysis, middleDatas); // 获取Table IdAnalysis:RoiId:GStoreMiddleProcessData middleDataTable(sampleId, middleDatas); // 修改保存结果状态 ==> UPDATE ORIGINAL.GARDS_SAMPLE_DATA // serviceQuotes.getSampleDataService().updateStatus(null,null); /* GARDS_CALIBRATION_PAIRS_ROI 数据表保存 */ - saveCalibrationPairsROI(sampleId); + saveCalibrationPairsROI(sampleId, idAnalysis); /* GARDS_CALIBRATION_ROI 数据表保存 */ - saveCalibrationROI(sampleId); + saveCalibrationROI(sampleId, idAnalysis); /* Gards_Peaks_ROI 数据表保存 */ - savePeaksROI(sampleId); + savePeaksROI(sampleId, idAnalysis); /* Gards_Nucl_Lines_Ided_ROI 数据表保存 */ - saveNuclLinesIdedROI(sampleId); + saveNuclLinesIdedROI(sampleId, idAnalysis); /* Gards_Nucl_Ided_ROI 数据表保存 */ - saveNuclIdedROI(sampleId); + saveNuclIdedROI(sampleId, idAnalysis); /* Gards_Qc_Check_ROI 数据表保存 */ // saveQcCheckROI(sampleId, qcItems); /* GARDS_MDC_ROI 数据表保存 */ - saveMDCROI(sampleId, mdcInfoMap); + saveMDCROI(sampleId, idAnalysis,mdcInfoMap); //提交事务 serviceQuotes.getTransactionManager().commit(transactionStatus); } catch (Exception e) { @@ -470,6 +488,26 @@ public class Sample_C_Analysis { } } + private void writeLog(GStoreMiddleProcessData... middleDatas) { + for (GStoreMiddleProcessData middleData : middleDatas) { + writeLog(middleData.getAnalyses_LogPath(), middleData); + } + } + + private void writeReport(GStoreMiddleProcessData... middleDatas) throws IOException { + spectrumPathProperties = SpringContextUtils.getBean(SpectrumPathProperties.class); + GammaFileUtil gammaFileUtil = ApplicationContextUtil.getContext().getBean(GammaFileUtil.class); + String prefix = spectrumPathProperties.getRootPath() + spectrumPathProperties.getSaveFilePath(); + for (GStoreMiddleProcessData middleData : middleDatas) { + String reportContent = gammaFileUtil.GetReportContent(middleData); + String reportPath = StringUtils.substringBeforeLast(middleData.getAnalyses_ReportPath(), StringPool.SLASH); + String reportName = StringUtils.substringAfterLast(middleData.getAnalyses_ReportPath(), StringPool.SLASH) + ".txt"; + String savePath = prefix + StrUtil.SLASH + reportPath + StrUtil.SLASH + reportName; + // 保存文件 + FileOperation.saveOrAppendFile(savePath, reportContent, false); + } + } + /** * 生成日志文件 * @param logFilePath @@ -745,12 +783,13 @@ public class Sample_C_Analysis { } } - public void saveAnalysisROI(Integer sampleId, GStoreMiddleProcessData... middleDatas){ + public void saveAnalysisROI(Integer sampleId, Integer idAnalysis, GStoreMiddleProcessData... middleDatas){ List analysisRois = new ArrayList<>(); for (int i = 0; i < middleDatas.length; i++) { GStoreMiddleProcessData middleData = middleDatas[i]; GardsAnalysisRoi analysisRoi = new GardsAnalysisRoi(); analysisRoi.setSampleId(sampleId); + analysisRoi.setIdAnalysis(idAnalysis); analysisRoi.setPhdPath(this.phdFilePaths.get(i)); analysisRoi.setBaselinePath(middleData.getAnalyses_baseline_filePath()); analysisRoi.setLcPath(middleData.getAnalyses_lc_filePath()); @@ -774,14 +813,13 @@ public class Sample_C_Analysis { public void middleDataTable(Integer sampleId, GStoreMiddleProcessData... middleDatas){ List analysisRois = serviceQuotes.getAnalysisRoiAutoService().analysisRoi(sampleId); - Table middleDataTable = HashBasedTable.create(); + Map middleDataMap = new LinkedHashMap<>(); for (int i = 0; i < analysisRois.size(); i++) { GardsAnalysisRoi analysisRoi = analysisRois.get(i); - Integer idAnalysis = analysisRoi.getIdAnalysis(); Integer roiId = analysisRoi.getRoiId(); - middleDataTable.put(idAnalysis, roiId, middleDatas[i]); + middleDataMap.put(roiId, middleDatas[i]); } - this.middleDataTable = middleDataTable; + this.middleDataMap = middleDataMap; } public List saveCalibrationPairsROI(Integer sampleId, Integer IdAnalysis, @@ -867,13 +905,12 @@ public class Sample_C_Analysis { return allPairs; } - public void saveCalibrationPairsROI(Integer sampleId){ + public void saveCalibrationPairsROI(Integer sampleId, Integer IdAnalysis){ List pairsRois = new ArrayList<>(); - Set> cells = this.middleDataTable.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); pairsRois.addAll(saveCalibrationPairsROI(sampleId, IdAnalysis, roiId, middleData)); } this.serviceQuotes.getCalibrationPairsRoiAutoService().saveBatch(pairsRois); @@ -972,13 +1009,12 @@ public class Sample_C_Analysis { return calibrations; } - public void saveCalibrationROI(Integer sampleId){ + public void saveCalibrationROI(Integer sampleId, Integer IdAnalysis){ List calibrationRois = new ArrayList<>(); - Set> cells = this.middleDataTable.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); calibrationRois.addAll(saveCalibrationROI(sampleId, IdAnalysis, roiId, middleData)); } this.serviceQuotes.getCalibrationRoiAutoService().createBatch(calibrationRois); @@ -1003,13 +1039,12 @@ public class Sample_C_Analysis { return peaks; } - public void savePeaksROI(Integer sampleId){ + public void savePeaksROI(Integer sampleId, Integer IdAnalysis){ List peaksRois = new ArrayList<>(); - Set> cells = this.middleDataTable.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); peaksRois.addAll(savePeaksROI(sampleId, IdAnalysis, roiId, middleData)); } this.serviceQuotes.getPeaksRoiAutoService().saveBatch(peaksRois); @@ -1039,13 +1074,12 @@ public class Sample_C_Analysis { return allNuclLinesIdeds; } - public void saveNuclLinesIdedROI(Integer sampleId){ + public void saveNuclLinesIdedROI(Integer sampleId, Integer IdAnalysis){ List linesIdedRois = new ArrayList<>(); - Set> cells = this.middleDataTable.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); linesIdedRois.addAll(saveNuclLinesIdedROI(sampleId, IdAnalysis, roiId, middleData)); } this.serviceQuotes.getNuclLinesIdedRoiAutoService().saveBatch(linesIdedRois); @@ -1070,13 +1104,12 @@ public class Sample_C_Analysis { return nuclIdedRois; } - public void saveNuclIdedROI(Integer sampleId){ + public void saveNuclIdedROI(Integer sampleId, Integer IdAnalysis){ List idedRois = new ArrayList<>(); - Set> cells = this.middleDataTable.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); idedRois.addAll(saveNuclIdedROI(sampleId, IdAnalysis, roiId, middleData)); } this.serviceQuotes.getNuclIdedRoiAutoService().saveBatch(idedRois); @@ -1133,12 +1166,10 @@ public class Sample_C_Analysis { return mdcRois; } - public void saveMDCROI(Integer sampleId, Map mdcInfoMap){ + public void saveMDCROI(Integer sampleId, Integer IdAnalysis, Map mdcInfoMap){ List mdcRois = new ArrayList<>(); - Set> cells = this.middleDataTable.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); + Set roiIds = this.middleDataMap.keySet(); + for (Integer roiId : roiIds) { mdcRois.addAll(saveMDCROI(sampleId, IdAnalysis, roiId, mdcInfoMap)); } this.serviceQuotes.getMdcRoiAutoService().saveBatch(mdcRois); @@ -1302,6 +1333,31 @@ public class Sample_C_Analysis { } } + public void saveAnalysis(GStoreMiddleProcessData middleData, Integer sampleId){ + GardsAnalyses analysis = toAnalysis(middleData); + analysis.setSampleId(sampleId); + serviceQuotes.getAnalysesService().save(analysis); + } + + private GardsAnalyses toAnalysis(GStoreMiddleProcessData middleData){ + GardsAnalyses gardsAnalyses = new GardsAnalyses(); + String dateTime = DateConstant.DATE_BIAS_TIME; + String analysisBegin = middleData.getAnalyses_analysisBegin(); + Date analysis_Begin = DateUtil.parse(analysisBegin, dateTime) + .toJdkDate(); + gardsAnalyses.setAnalysisBegin(analysis_Begin); + String analysisEnd = middleData.getAnalyses_analysisEnd(); + Date analysis_End = DateUtil.parse(analysisEnd, dateTime) + .toJdkDate(); + gardsAnalyses.setAnalysisEnd(analysis_End); + gardsAnalyses.setType(middleData.getAnalyses_type()); + gardsAnalyses.setSoftware(middleData.getAnalyses_software()); + gardsAnalyses.setSwVersion(middleData.getAnalyses_swVersion()); + gardsAnalyses.setAnalyst(middleData.getAnalyses_analyst()); + gardsAnalyses.setComments(middleData.getAnalyses_comments()); + return gardsAnalyses; + } + /* public List mapFields(T1 source, T2 tartget, String baseLine, Map fieldMap) { try { List result = new ArrayList<>(); diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/AnalysisManService.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/AnalysisManService.java index 56215855..a8af0937 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/AnalysisManService.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/AnalysisManService.java @@ -3,6 +3,7 @@ package org.jeecg.modules.service; import org.jeecg.modules.base.entity.rnman.GardsAnalyses; import org.jeecg.modules.entity.vo.CalMDCInfo; import org.jeecg.modules.entity.vo.GStoreMiddleProcessData; +import org.jeecg.modules.entity.vo.PHDFile; import org.jeecg.modules.entity.vo.QcCheckItem; import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct; @@ -47,4 +48,6 @@ public interface AnalysisManService { void saveQcCheckROI(Integer sampleId, Map qcItems, Integer idAnalysis); void saveMDCROI(Integer sampleId, Map mdcInfoMap, Integer idAnalysis); + + void saveAnalySettingROI(Integer sampleId, Integer idAnalysis, List phdFiles); } diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/AnalysisManServiceImpl.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/AnalysisManServiceImpl.java index 8e8471dd..90c58f29 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/AnalysisManServiceImpl.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/AnalysisManServiceImpl.java @@ -2,6 +2,7 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -11,10 +12,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Table; import org.jeecg.modules.base.dto.*; import org.jeecg.modules.base.entity.rnman.*; -import org.jeecg.modules.entity.vo.CalMDCInfo; -import org.jeecg.modules.entity.vo.GStoreMiddleProcessData; -import org.jeecg.modules.entity.vo.GStoreMiddleProcessDataNuclLinesIded; -import org.jeecg.modules.entity.vo.QcCheckItem; +import org.jeecg.modules.entity.vo.*; import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct; import org.jeecg.modules.service.*; import org.springframework.beans.factory.annotation.Autowired; @@ -57,7 +55,7 @@ public class AnalysisManServiceImpl implements AnalysisManService { @Override public void middleDataTable(Integer idAnalysis, List middleDatas) { List analysisRois = analysisRoiManService.analysisRoi(idAnalysis); - Map middleDataMap = new HashMap<>(); + Map middleDataMap = new LinkedHashMap<>(); for (int i = 0; i < analysisRois.size(); i++) { GardsAnalysisRoi analysisRoi = analysisRois.get(i); Integer roiId = analysisRoi.getRoiId(); @@ -109,69 +107,61 @@ public class AnalysisManServiceImpl implements AnalysisManService { @Override public void deleteCalibration(Integer idAnalysis) { - Set idAnalysisSet = middleDataMap.rowKeySet(); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.in(GardsCalibrationRoi::getIdAnalysis, idAnalysisSet); + wrapper.eq(GardsCalibrationRoi::getIdAnalysis, idAnalysis); calibrationRoiManService.remove(wrapper); } @Override public void deletePeaks(Integer idAnalysis) { - Set idAnalysisSet = middleDataMap.rowKeySet(); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.in(GardsPeaksRoi::getIdAnalysis, idAnalysisSet); + wrapper.eq(GardsPeaksRoi::getIdAnalysis, idAnalysis); peaksRoiManService.remove(wrapper); } @Override public void deleteNuclLines(Integer idAnalysis) { - Set idAnalysisSet = middleDataMap.rowKeySet(); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.in(GardsNuclLinesIdedRoi::getIdAnalysis, idAnalysisSet); + wrapper.eq(GardsNuclLinesIdedRoi::getIdAnalysis, idAnalysis); nuclLinesIdedRoiManService.remove(wrapper); } @Override public void deleteNucl(Integer idAnalysis) { - Set idAnalysisSet = middleDataMap.rowKeySet(); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.in(GardsNuclIdedRoi::getIdAnalysis, idAnalysisSet); + wrapper.eq(GardsNuclIdedRoi::getIdAnalysis, idAnalysis); nuclIdedRoiManService.remove(wrapper); } @Override public void deleteQCCheck(Integer idAnalysis) { - Set idAnalysisSet = middleDataMap.rowKeySet(); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.in(GardsQcCheckRoi::getIdAnalysis, idAnalysisSet); + wrapper.eq(GardsQcCheckRoi::getIdAnalysis, idAnalysis); qcCheckRoiManService.remove(wrapper); } @Override public void deleteMDC(Integer idAnalysis) { - Set idAnalysisSet = middleDataMap.rowKeySet(); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.in(GardsMDCRoi::getIdAnalysis, idAnalysisSet); + wrapper.eq(GardsMDCRoi::getIdAnalysis, idAnalysis); mdcRoiManService.remove(wrapper); } @Override public void deleteAnalySetting(Integer idAnalysis) { - Set idAnalysisSet = middleDataMap.rowKeySet(); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.in(GardsAnalySettingRoi::getIdanalysis, idAnalysisSet); + wrapper.eq(GardsAnalySettingRoi::getIdanalysis, idAnalysis); analySettingRoiService.remove(wrapper); } @Override public void saveCalibrationPairsROI(Integer sampleId, Integer idAnalysis) { List pairsRois = new ArrayList<>(); - Set> cells = this.middleDataMap.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); - pairsRois.addAll(saveCalibrationPairsROI(sampleId, IdAnalysis, roiId, middleData)); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); + pairsRois.addAll(saveCalibrationPairsROI(sampleId, idAnalysis, roiId, middleData)); } calibrationPairsRoiManService.saveBatch(pairsRois); } @@ -262,12 +252,11 @@ public class AnalysisManServiceImpl implements AnalysisManService { @Override public void saveCalibrationROI(Integer sampleId, Integer idAnalysis) { List calibrationRois = new ArrayList<>(); - Set> cells = this.middleDataMap.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); - calibrationRois.addAll(saveCalibrationROI(sampleId, IdAnalysis, roiId, middleData)); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); + calibrationRois.addAll(saveCalibrationROI(sampleId, idAnalysis, roiId, middleData)); } calibrationRoiManService.createBatch(calibrationRois); } @@ -368,12 +357,11 @@ public class AnalysisManServiceImpl implements AnalysisManService { @Override public void savePeaksROI(Integer sampleId, Integer idAnalysis) { List peaksRois = new ArrayList<>(); - Set> cells = this.middleDataMap.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); - peaksRois.addAll(savePeaksROI(sampleId, IdAnalysis, roiId, middleData)); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); + peaksRois.addAll(savePeaksROI(sampleId, idAnalysis, roiId, middleData)); } peaksRoiManService.saveBatch(peaksRois); } @@ -400,12 +388,11 @@ public class AnalysisManServiceImpl implements AnalysisManService { @Override public void saveNuclLinesIdedROI(Integer sampleId, Integer idAnalysis){ List linesIdedRois = new ArrayList<>(); - Set> cells = this.middleDataMap.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); - linesIdedRois.addAll(saveNuclLinesIdedROI(sampleId, IdAnalysis, roiId, middleData)); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); + linesIdedRois.addAll(saveNuclLinesIdedROI(sampleId, idAnalysis, roiId, middleData)); } nuclLinesIdedRoiManService.saveBatch(linesIdedRois); } @@ -455,12 +442,11 @@ public class AnalysisManServiceImpl implements AnalysisManService { @Override public void saveNuclIdedROI(Integer sampleId, Integer idAnalysis){ List idedRois = new ArrayList<>(); - Set> cells = this.middleDataMap.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - GStoreMiddleProcessData middleData = cell.getValue(); - idedRois.addAll(saveNuclIdedROI(sampleId, IdAnalysis, roiId, middleData)); + Set> entries = this.middleDataMap.entrySet(); + for (Map.Entry entry : entries) { + Integer roiId = entry.getKey(); + GStoreMiddleProcessData middleData = entry.getValue(); + idedRois.addAll(saveNuclIdedROI(sampleId, idAnalysis, roiId, middleData)); } nuclIdedRoiManService.saveBatch(idedRois); } @@ -505,15 +491,47 @@ public class AnalysisManServiceImpl implements AnalysisManService { @Override public void saveMDCROI(Integer sampleId, Map mdcInfoMap, Integer idAnalysis){ List mdcRois = new ArrayList<>(); - Set> cells = this.middleDataMap.cellSet(); - for (Table.Cell cell : cells) { - Integer IdAnalysis = cell.getRowKey(); - Integer roiId = cell.getColumnKey(); - mdcRois.addAll(saveMDCROI(sampleId, IdAnalysis, roiId, mdcInfoMap)); + Set roiIds = this.middleDataMap.keySet(); + for (Integer roiId : roiIds) { + mdcRois.addAll(saveMDCROI(sampleId, idAnalysis, roiId, mdcInfoMap)); } mdcRoiManService.saveBatch(mdcRois); } + public GardsAnalySettingRoi saveAnalySettingROI(Integer sampleId, Integer idAnalysis, + Integer roiId, PHDFile phd) { + GardsAnalySettingRoi analySettingRoi = new GardsAnalySettingRoi(); + analySettingRoi.setIdanalysis(idAnalysis); + analySettingRoi.setSampleId(sampleId); + analySettingRoi.setRoiId(roiId); + analySettingRoi.setEcutanalysisLow(phd.getUsedSetting().getECutAnalysis_Low()); + analySettingRoi.setEcutanalysisHigh(phd.getUsedSetting().getECutAnalysis_High()); + analySettingRoi.setEnergytolerance(phd.getUsedSetting().getEnergyTolerance()); + analySettingRoi.setCalibrationpssHigh(phd.getUsedSetting().getCalibrationPSS_high()); + analySettingRoi.setCalibrationpssLow(phd.getUsedSetting().getCalibrationPSS_low()); + analySettingRoi.setBaseimprovepss(phd.getUsedSetting().getBaseImprovePSS()); + analySettingRoi.setPssLow(phd.getUsedSetting().getPss_low()); + analySettingRoi.setKBack(phd.getUsedSetting().getK_back()); + analySettingRoi.setKAlpha(phd.getUsedSetting().getK_alpha()); + analySettingRoi.setKBeta(phd.getUsedSetting().getK_beta()); + analySettingRoi.setRisklevelk(phd.getUsedSetting().getRiskLevelK()); + analySettingRoi.setBupdatecal(phd.getUsedSetting().isBUpdateCal()?1:0); + analySettingRoi.setKeepcalpeakserchpeaks(phd.getUsedSetting().isKeepCalPeakSearchPeaks()?1:0); + analySettingRoi.setReftimeAct(phd.getUsedSetting().getRefTime_act()); + analySettingRoi.setReftimeConc(phd.getUsedSetting().getRefTime_conc()); + return analySettingRoi; + } + + @Override + public void saveAnalySettingROI(Integer sampleId, Integer idAnalysis, List phdFiles) { + List analySettingRois = new ArrayList<>(); + List roiIds = ListUtil.toList(this.middleDataMap.keySet()); + for (int i = 0; i < roiIds.size(); i++) { + analySettingRois.add(saveAnalySettingROI(sampleId, idAnalysis, roiIds.get(i), phdFiles.get(i))); + } + analySettingRoiService.saveBatch(analySettingRois); + } + public Map fieldMap(){ Map fieldMap = new HashMap<>(); // Gards_Nucl_Lines_Ided diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsAnalysisRoiManServiceImpl.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsAnalysisRoiManServiceImpl.java index 8fb3759b..16d8824e 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsAnalysisRoiManServiceImpl.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsAnalysisRoiManServiceImpl.java @@ -28,7 +28,7 @@ public class GardsAnalysisRoiManServiceImpl extends ServiceImpl analysisRoi(Integer idAnalysis) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(GardsAnalysisRoi::getIdAnalysis, idAnalysis); - wrapper.orderByAsc(GardsAnalysisRoi::getRoiNum); + wrapper.orderByAsc(GardsAnalysisRoi::getRoiId); return list(wrapper); } } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/entity/vo/SelfStationData.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/entity/vo/SelfStationData.java index b1d9a9df..392bca49 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/entity/vo/SelfStationData.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/entity/vo/SelfStationData.java @@ -111,6 +111,10 @@ public class SelfStationData implements Serializable { * 是否点击过Energy Calibration页面下Beta Detector Calibration的fitting按钮 */ private boolean bBetaEnergyValidDet; + /* + * 是否进行了重新分析 + * */ + private boolean bAnalyed; public SelfStationData() { @@ -137,6 +141,7 @@ public class SelfStationData implements Serializable { bBetaEnergyValidGas = false; bGammaEnergyValidDet = false; bBetaEnergyValidDet = false; + bAnalyed = false; gammaNewEnergyListNow = new LinkedList<>(); betaNewEnergyListNow = new LinkedList<>(); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsAnalysesManMapper.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsAnalysesManMapper.java index d85ce577..9582b200 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsAnalysesManMapper.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsAnalysesManMapper.java @@ -9,4 +9,5 @@ public interface GardsAnalysesManMapper extends BaseMapper { void updateEntity(@Param(value = "analyses") GardsAnalysesSpectrum analyses); + void updateAnalyses(@Param("analyses") GardsAnalysesSpectrum analyses); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsAnalysesManMapper.xml b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsAnalysesManMapper.xml index 5578527d..78095b98 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsAnalysesManMapper.xml +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsAnalysesManMapper.xml @@ -23,5 +23,15 @@ WHERE IDANALYSIS = #{analyses.idAnalysis} + + UPDATE + RNMAN.GARDS_ANALYSES + SET ANALYSISBEGIN = to_date(#{analyses.analysisBeginStr},'yyyy/MM/dd HH24:mi:ss'), + ANALYSISEND = to_date(#{analyses.analysisEndStr},'yyyy/MM/dd HH24:mi:ss'), + ANALYST = #{analyses.analyst}, + COMMENTS = #{analyses.comments} + WHERE + IDANALYSIS = #{analyses.idAnalysis} + \ No newline at end of file diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsAnalysesSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsAnalysesSpectrumService.java index 0793ca6d..e731d4d9 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsAnalysesSpectrumService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsAnalysesSpectrumService.java @@ -14,4 +14,5 @@ public interface IGardsAnalysesSpectrumService extends IService { Integer saveAnalyses(Integer sampleId, String startTime, String userName); + void updateAnalyses(String startTime, String userName, Integer idAnalysis); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesSpectrumServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesSpectrumServiceImpl.java index 31cb7d60..9631efcb 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesSpectrumServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesSpectrumServiceImpl.java @@ -1,14 +1,18 @@ package org.jeecg.modules.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.base.entity.rnman.GardsAnalyses; import org.jeecg.modules.entity.vo.GStoreMiddleProcessData; import org.jeecg.modules.entity.vo.PHDFile; import org.jeecg.modules.entity.GardsAnalysesSpectrum; import org.jeecg.modules.mapper.GardsAnalysesManMapper; +import org.jeecg.modules.mapper.SpectrumAnalysisMapper; import org.jeecg.modules.service.IGardsAnalysesSpectrumService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,6 +23,9 @@ import java.util.Date; @DS("ora") public class GardsAnalysesSpectrumServiceImpl extends ServiceImpl implements IGardsAnalysesSpectrumService { + @Autowired + private SpectrumAnalysisMapper spectrumAnalysisMapper; + @Override @Transactional public Integer insertEntity(GStoreMiddleProcessData middleData, PHDFile phd, String userName, String comments) { @@ -87,7 +94,17 @@ public class GardsAnalysesSpectrumServiceImpl extends ServiceImpl userStation = userTaskUtil.findUserStation(userName); boolean bAnalysisResultWriteAuthority = userStation.contains(String.valueOf(stationId)); // 获取Beta谱文件的inputFileName - String saveFileName = saveFileName(sampleStruct); String savePathName = savePathName(sampleStruct); + String saveFileName = saveFileName(sampleStruct); String sampleInputFileName = savePathName + StrUtil.SLASH + saveFileName; - //判断当前分析员是否有过历史分析当前文件 TODO RNMAN.GARDS_ANALYSIS_ROI表没有分析员字段 + //判断当前分析员是否有过历史分析当前文件 TODO Integer isExist = spectrumAnalysisMapper.SampleIsExist(sampleInputFileName, userName); // 如果用户没有权限操作 则查看当前用户是否是高级分析员/管理员 if (!bAnalysisResultWriteAuthority && Objects.isNull(isExist)) { @@ -4051,6 +4059,9 @@ public class SelfStationServiceImpl implements ISelfStationService { List middleDatas = ListUtil.toList(middleData1, middleData2, middleData3, middleData4); List phdFiles = create4PHD(sampleStruct); + //读取参数内容 + Map mdcInfoMap = readMDCParameter(phdFiles); + bRet = gammaFileUtil.GetInterMiddlData(phdFiles, userName, middleDatas, "save"); if (!bRet) { result.error500("Transform PHDFile into structGStoreMiddleProcessData failed."); @@ -4088,8 +4099,8 @@ public class SelfStationServiceImpl implements ISelfStationService { // 修改sample_data状态 spectrumAnalysisMapper.updateAnalysesStatus(sampleInputFileName); } else { - // 更新 RNMAN.GARDS_ANALYSES 表数据 TODO - + // 更新 RNMAN.GARDS_ANALYSES 表数据 + analysesSpectrumService.updateAnalyses(phd.getAnaly_start_time(), userName, idAnalysis); // 删除 RNMAN.GARDS_ANALYSES_ROI 表数据 analysisManService.deleteAnalysisROI(idAnalysis); // 删除GARDS_CALIBRATION_PAIRS_ROI表数据 @@ -4123,9 +4134,9 @@ public class SelfStationServiceImpl implements ISelfStationService { // 向 RNMAN.GARDS_QC_CHECK 表写入 QC 检查结果 //analysisManService.saveQcCheckROI(sampleId, null); // 向 RNMAN.GARDS_ANALY_SETTING 表写入 SpecSetup 分析参数设置 - analysisManService.saveAnalySettingGamma(phd, idAnalysis); - // 向 RNMAN.GARDS_MDC 表写入 MDC计算结果 TODO - analysisManService.saveMDCROI(sampleId, null, idAnalysis); + analysisManService.saveAnalySettingROI(sampleId, idAnalysis, phdFiles); + // 向 RNMAN.GARDS_MDC 表写入 MDC计算结果 + analysisManService.saveMDCROI(sampleId, mdcInfoMap, idAnalysis); if (bRet) { phd.setStatus("R"); //分析成功后存储日志文件和报告文件 @@ -4166,6 +4177,77 @@ public class SelfStationServiceImpl implements ISelfStationService { return result; } + public Map readMDCParameter(List phdFiles) { + //存储文件结果用的map + Map mdcInfoMap = new TreeMap<>(); + if (CollUtil.isEmpty(phdFiles)) return mdcInfoMap; + String systemType = phdFiles.get(0).getHeader().getSystem_type(); + //配置文件路径 + String filePath = parameterProperties.getFilePath()+ File.separator + "MDCParameter.xml"; + try { + //创建一个文档解析器工厂 + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + //创建文档解析器 + DocumentBuilder documentBuilder = factory.newDocumentBuilder(); + //读取xml文件生成一个文档 + Document document = documentBuilder.parse(filePath); + if (Objects.nonNull(document)){ + //获取文档的根元素 + Element element = document.getDocumentElement(); + //获取根元素的子节点 + NodeList docChildNodes = element.getChildNodes(); + //判断文件内的节点是否大于0 + if (Objects.nonNull(docChildNodes) && docChildNodes.getLength() > 0) { + //遍历文件节点读取内容 + for (int i=0; i 0) { + //遍历子节点信息 + for (int j=0; j< childNodes.getLength(); j++) { + //获取子节点信息 + Node childNode = childNodes.item(j); + //判断节点名称是否是item + if (childNode.getNodeName().equalsIgnoreCase("item")) { + //获取节点属性信息 + NamedNodeMap attributes = childNode.getAttributes(); + //判断节点属性信息是否为空 + if (Objects.nonNull(attributes)) { + CalMDCInfo info = new CalMDCInfo(); + //遍历属性信息 + for (int k=0; k