diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsMDCAutoMapper.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsMDCAutoMapper.java new file mode 100644 index 00000000..4ca39ca1 --- /dev/null +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsMDCAutoMapper.java @@ -0,0 +1,9 @@ +package org.jeecg.modules.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.jeecg.modules.base.entity.rnauto.GardsMDC; + +@Mapper +public interface GardsMDCAutoMapper extends BaseMapper { +} diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsMDCAutoService.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsMDCAutoService.java new file mode 100644 index 00000000..ef241cd5 --- /dev/null +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsMDCAutoService.java @@ -0,0 +1,7 @@ +package org.jeecg.modules.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.base.entity.rnauto.GardsMDC; + +public interface GardsMDCAutoService extends IService { +} diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsMDCAutoServiceImpl.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsMDCAutoServiceImpl.java new file mode 100644 index 00000000..53e9faa7 --- /dev/null +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsMDCAutoServiceImpl.java @@ -0,0 +1,13 @@ +package org.jeecg.modules.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.base.entity.rnauto.GardsMDC; +import org.jeecg.modules.mapper.GardsMDCAutoMapper; +import org.jeecg.modules.service.GardsMDCAutoService; +import org.springframework.stereotype.Service; + +@Service +@DS("ora") +public class GardsMDCAutoServiceImpl extends ServiceImpl implements GardsMDCAutoService { +} diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java index c491aaf7..e8df9a33 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java @@ -7,6 +7,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -33,6 +34,12 @@ import org.jeecg.modules.file.FileOperation; import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct; import org.jeecgframework.core.util.ApplicationContextUtil; import org.springframework.transaction.TransactionStatus; +import org.w3c.dom.*; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; @@ -158,12 +165,13 @@ public class Sample_G_Analysis { if (this.systemType.equals(SpectrumSystemType.G.name())) { nuclideLibs = this.getNuclideLinesG(); } - + //读取参数内容 + readMDCParameter(phdFile); // 执行分析业务代码 gammaFileUtil.GetMiddleData(phdFile, CommonConstant.REPORT_PREFIX_AUTO, nuclideLibs, middleData, MiddleDataType.Auto.getType(), ""); // 数据插入数据库 - this.storageDataToDatabase(middleData, phdFile.getQcItems()); + this.storageDataToDatabase(phdFile, middleData, phdFile.getQcItems()); // 生成日志文件 writeLog(middleData.getAnalyses_LogPath(), middleData); @@ -196,6 +204,69 @@ public class Sample_G_Analysis { log.info("Gamma自动处理分析--End"); } + /** + * 读取计算MDC参数文件方法 + */ + public void readMDCParameter(PHDFile phd) { + //存储文件结果用的map + Map mdcInfoMap = new TreeMap<>(); + //配置文件路径 + 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 qcItems){ + private void storageDataToDatabase(PHDFile phdFile, GStoreMiddleProcessData middleData, Map qcItems){ //如果数据已经存储,不在重复存储 final Integer idAnalysis = serviceQuotes.getAnalysesService().getIdAnalysis(this.sampleData.getSampleId()); if(Objects.nonNull(idAnalysis)){ @@ -251,6 +322,8 @@ public class Sample_G_Analysis { saveNuclIded(middleData, sampleId, IdAnalysis); /* Gards_Qc_Check 数据表保存 */ saveQcCheck(middleData, sampleId, IdAnalysis, qcItems); + /* GARDS_MDC 数据表保存 */ + saveMDC(sampleId, idAnalysis, phdFile.getMdcInfoMap()); //提交事务 serviceQuotes.getTransactionManager().commit(transactionStatus); } catch (Exception e) { @@ -796,6 +869,31 @@ public class Sample_G_Analysis { } } + public void saveMDC(Integer sampleId, Integer IdAnalysis, Map mdcInfoMap) { + List mdcList = new LinkedList<>(); + if (CollectionUtils.isNotEmpty(mdcInfoMap)) { + for (CalMDCInfo mdcInfo :mdcInfoMap.values()) { + GardsMDC mdc = new GardsMDC(); + mdc.setIdAnalysis(IdAnalysis); + mdc.setSampleId(sampleId); + mdc.setNuclideName(mdcInfo.getNuclideName()); + mdc.setEnergy(mdcInfo.getEnergy()); + mdc.setYield(mdcInfo.getYield()); + mdc.setEfficiency(mdcInfo.getEfficiency()); + if (Objects.nonNull(mdcInfo.getMdc()) && Double.isFinite(mdcInfo.getMdc())) { + mdc.setMdc(mdcInfo.getMdc()); + } else { + mdc.setMdc(null); + } + mdc.setMdcErr(null); + mdcList.add(mdc); + } + } + if (CollectionUtils.isNotEmpty(mdcList)) { + serviceQuotes.getGardsMDCAutoService().saveBatch(mdcList); + } + } + public Map getNuclideLinesG() { redisUtil = ApplicationContextUtil.getContext().getBean(RedisUtil.class); Object nuclideLibs = redisUtil.get(RedisConstant.NUCLIDE_LINES_LIB + "G"); diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumServiceQuotes.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumServiceQuotes.java index f62a115e..ea4dc666 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumServiceQuotes.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumServiceQuotes.java @@ -63,6 +63,8 @@ public class SpectrumServiceQuotes { private final GardsQcCheckAutoService gardsQcCheckAutoService; + private final GardsMDCAutoService gardsMDCAutoService; + private final GardsXeResultsService xeResultsService; private final GardsRoiResultsService roiResultsService; diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java index 3e5a80df..65765ffb 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java @@ -3116,6 +3116,16 @@ public class GammaFileUtil extends AbstractLogOrReport { String anylseEnd; anylseBegin = DateUtils.formatDate(new Date(), "yyyy/MM/dd HH:mm:ss"); bRet = AnalyseSpectrum(fileAnlyse,nucline); + if (CollectionUtils.isEmpty(fileAnlyse.getEfficiencyParam())) { + fileAnlyse.setEfficiencyParam(fileAnlyse.getUsedEffiPara().getP()); + } + if (CollectionUtils.isEmpty(fileAnlyse.getEfficiencyEnergy())) { + fileAnlyse.setEfficiencyEnergy(fileAnlyse.getUsedEffiKD().getG_energy()); + } + if (Objects.isNull(fileAnlyse.getEfficiencyCurRow())) { + fileAnlyse.setEfficiencyCurRow(0); + } + getNuclideMDCValue(fileAnlyse, fileAnlyse.getMdcInfoMap(), nucline); anylseEnd = DateUtils.formatDate(new Date(), "yyyy/MM/dd HH:mm:ss"); middleData.analyses_analysisBegin = anylseBegin; middleData.analyses_analysisEnd = anylseEnd; @@ -4609,34 +4619,45 @@ public class GammaFileUtil extends AbstractLogOrReport { switch(funId) { case 1: // Interpolation: y=yi+(y(i+1)-yi)*(x-xi)/(x(i+1)-xi) for xi<=x= 4) { - int i = phd.getEfficiencyCurRow(); - if(i < 0 || i >= e_size) break; - - double y1, y0, x1, x0; - if(i < e_size - 1) { - y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+3)))); - y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+1)))); - x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+2)))); - x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2)))); - } else { - y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+1)))); - y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2-1)))); - x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2)))); - x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2-2)))); - } - for (int j=0; j effList = CalValuesHandler.calFcnEval(nuclideLines.venergy, phd.getEfficiencyParam()).counts; + for (int j=0; j= e_size) break; +// +// double y1, y0, x1, x0; +// if(i < e_size - 1) { +// y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+3)))); +// y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+1)))); +// x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+2)))); +// x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2)))); +// } else { +// y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+1)))); +// y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2-1)))); +// x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2)))); +// x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2-2)))); +// } +// for (int j=0; j= 3) { - for (int j=0; j effList = CalValuesHandler.calFcnEval(nuclideLines.venergy, phd.getEfficiencyParam()).counts; + for (int j=0; j"+(i-1)+"";