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 9e1d514e..3e2d9249 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 @@ -19,6 +19,7 @@ import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.modules.base.abstracts.AbstractLogOrReport; import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib; +import org.jeecg.modules.base.entity.configuration.GardsStations; import org.jeecg.modules.base.enums.CalName; import org.jeecg.modules.base.enums.CalType; import org.jeecg.modules.base.enums.MiddleDataType; @@ -231,7 +232,7 @@ public class GammaFileUtil extends AbstractLogOrReport { } // 初始化默认分析设置 - if(phd.getHeader().getSystem_type().equalsIgnoreCase("P")) { + if (phd.getHeader().getSystem_type().equalsIgnoreCase("P")) { phd.getSetting().setECutAnalysis_Low(35.0); phd.getSetting().setBUpdateCal(true); } @@ -248,7 +249,7 @@ public class GammaFileUtil extends AbstractLogOrReport { phd.setBAnalyed(false); phd.setAnaly_start_time(DateUtils.formatDate(new Date(), "yyyy/MM/dd HH:mm:ss")); - }catch (ParseException e) { + } catch (ParseException e) { throw new RuntimeException(e); } return true; @@ -259,12 +260,12 @@ public class GammaFileUtil extends AbstractLogOrReport { String fileName = phd.getFilename(); //文件名称需要加上自动处理的前缀以及修改不同的文件后缀名 String subFileName = fileName.substring(0, fileName.lastIndexOf(StringPool.DOT)); - if(StringUtils.isNotBlank(subFileName)){ + if (StringUtils.isNotBlank(subFileName)) { File lcFile = null; File scacFile = null; InputStream inputStreamBase = null; try { - String lcFileName = prefixName+"_"+subFileName + ".lc"; + String lcFileName = prefixName + "_" + subFileName + ".lc"; String fromPathLc = pathName + StringPool.SLASH + lcFileName; lcFile = ftpUtil.downloadFile(fromPathLc); if (Objects.nonNull(lcFile)) { @@ -274,7 +275,7 @@ public class GammaFileUtil extends AbstractLogOrReport { //将数据结果赋值给 phdFile的vLc phd.setVLc(vDataLc); } - String scacFileName = prefixName+"_"+subFileName + ".scac"; + String scacFileName = prefixName + "_" + subFileName + ".scac"; String fromPathScac = pathName + StringPool.SLASH + scacFileName; scacFile = ftpUtil.downloadFile(fromPathScac); if (Objects.nonNull(scacFile)) { @@ -284,7 +285,7 @@ public class GammaFileUtil extends AbstractLogOrReport { //将数据结果赋值给 phdFile的vLc phd.setVScac(vDataScac); } - String baselineFileName = prefixName+"_"+subFileName + ".baseline"; + String baselineFileName = prefixName + "_" + subFileName + ".baseline"; String fromPathBase = pathName + StringPool.SLASH + baselineFileName; inputStreamBase = ftpUtil.downloadFileStream(fromPathBase); if (Objects.nonNull(inputStreamBase)) { @@ -293,7 +294,7 @@ public class GammaFileUtil extends AbstractLogOrReport { // 将phdFile的BaseCtrls的BaseLine部分数据 赋值给 phdFile的vBase phd.setVBase(phd.getBaseCtrls().getBaseline()); } - }catch (IOException e){ + } catch (IOException e) { e.printStackTrace(); } finally { try { @@ -310,28 +311,28 @@ public class GammaFileUtil extends AbstractLogOrReport { //声明一个结果集合 List vData = new LinkedList<>(); //遍历行数据 - for (int i=0; i< readLines.size(); i++){ + for (int i = 0; i < readLines.size(); i++) { //读取当前行数据 String line = readLines.get(i); //判断当前行是否包含# 如果包含则进入 - if (line.contains("#")){ + if (line.contains("#")) { //声明下一行的下标 - int j=i+1; + int j = i + 1; //读取当前行的下一行的数据 line = readLines.get(j); //将下一行的数据赋给一个 新的行数据 String line1 = line; //遍历判断 下标不是行数据的最后一行 且 行数据不为空 - while (j != readLines.size()-1 && StringUtils.isNotBlank(line) ){ + while (j != readLines.size() - 1 && StringUtils.isNotBlank(line)) { //行下标+1 j++; //读取下一行数据 line = readLines.get(j); //判断下一行数据是否包含# - if (!line.contains("#")){ + if (!line.contains("#")) { //不包含#则将当前行数据 拼接到 行数据 line1 += StringPool.SPACE + line; - }else {//否则结束循环 + } else {//否则结束循环 break; } } @@ -340,13 +341,13 @@ public class GammaFileUtil extends AbstractLogOrReport { //行数据根据任意形式空格切割成数组 List strList = Arrays.asList(line1.split("\\s+")); //如果数据量小于2 跳过本次循环 继续下一行读取 - if(strList.size() < 2){ + if (strList.size() < 2) { continue; } //遍历行数据数组 - for(int k=1; k vTemp = map.get("#AnalyseRange"); //如果集合大小等于2 - if(vTemp.size() == 2) { + if (vTemp.size() == 2) { //集合中第一个赋值给 phdFile的baseCtrls的rg_low phd.getBaseCtrls().setRg_low(vTemp.get(0).intValue()); //集合中第二个赋值给 phdFile的baseCtrls的rg_high @@ -411,28 +412,28 @@ public class GammaFileUtil extends AbstractLogOrReport { } } //判断map是否含有#XCtrl - if(map.containsKey("#XCtrl")) { + if (map.containsKey("#XCtrl")) { //根据#XCtrl获取对应的集合信息 List vTemp = map.get("#XCtrl"); //将集合数据 赋值给 phdFile的BaseCtrls的xCtrl phd.getBaseCtrls().setXCtrl(vTemp); } //判断map是否含有#YCtrl - if(map.containsKey("#YCtrl")) { + if (map.containsKey("#YCtrl")) { //根据#YCtrl获取集合信息 List vTemp = map.get("#YCtrl"); //将集合信息赋值给 phdFile的BaseCtrls的yCtrl phd.getBaseCtrls().setYCtrl(vTemp); } //判断map是否含有#YSlope - if(map.containsKey("#YSlope")) { + if (map.containsKey("#YSlope")) { //根据#YSlope获取集合信息 List vTemp = map.get("#YSlope"); //将集合信息赋值给 phdFile的BaseCtrls的ySlope phd.getBaseCtrls().setYSlope(vTemp); } //判断map是否含有#Baseline - if(map.containsKey("#Baseline")) { + if (map.containsKey("#Baseline")) { //根据#Baseline获取集合数据 List vTemp = map.get("#Baseline"); //截取集合 下标1到末尾的数据 @@ -441,7 +442,7 @@ public class GammaFileUtil extends AbstractLogOrReport { phd.getBaseCtrls().setBaseline(list); } //判断map是否含有#StepCounts - if(map.containsKey("#StepCounts")) { + if (map.containsKey("#StepCounts")) { //根据#StepCounts获取集合数据 List vTemp = map.get("#StepCounts"); //截取集合 下标1到末尾的数据 @@ -458,40 +459,40 @@ public class GammaFileUtil extends AbstractLogOrReport { // Collection Time、 Acq Time、 Decay Time、 SampVol、 Be7-FWHM、 Ba140-MDC、 Xe133-MDC List qcState = new LinkedList<>(); //初始化七个状态颜色为 灰色 - for (int i=0;i<7; i++){ + for (int i = 0; i < 7; i++) { qcState.add("GRAY"); } //判断 phdFile下QcItems大小是否小于等于5 - if(phd.getQcItems().size() <= 5) { + if (phd.getQcItems().size() <= 5) { //执行判断QC状态方法 RunQC(phd); } //判断 QcItems的col_time的BPass状态 如果是true 则颜色赋值为BLUE 如果是false 则颜色赋值为 RED - qcState.set(0, phd.getQcItems().get("col_time").isBPass()?"BLUE":"RED"); + qcState.set(0, phd.getQcItems().get("col_time").isBPass() ? "BLUE" : "RED"); //判断 QcItems的acq_time的BPass状态 如果是true 则颜色赋值为BLUE 如果是false 则颜色赋值为 RED - qcState.set(1, phd.getQcItems().get("acq_time").isBPass()?"BLUE":"RED"); + qcState.set(1, phd.getQcItems().get("acq_time").isBPass() ? "BLUE" : "RED"); //判断 QcItems的decay_time的BPass状态 如果是true 则颜色赋值为BLUE 如果是false 则颜色赋值为 RED - qcState.set(2, phd.getQcItems().get("decay_time").isBPass()?"BLUE":"RED"); + qcState.set(2, phd.getQcItems().get("decay_time").isBPass() ? "BLUE" : "RED"); //判断 QcItems的samp_vol的BPass状态 如果是true 则颜色赋值为BLUE 如果是false 则颜色赋值为 RED - qcState.set(3, phd.getQcItems().get("samp_vol").isBPass()?"BLUE":"RED"); + qcState.set(3, phd.getQcItems().get("samp_vol").isBPass() ? "BLUE" : "RED"); //判断当前文件系统类型是否匹配 P - if(phd.getHeader().getSystem_type().equalsIgnoreCase("P")) { + if (phd.getHeader().getSystem_type().equalsIgnoreCase("P")) { //如果匹配P 判断 QcItems的Be7-FWHM数据是否为空 - if(Objects.nonNull(phd.getQcItems().get("Be7-FWHM"))) { + if (Objects.nonNull(phd.getQcItems().get("Be7-FWHM"))) { //不为空 判断 QcItems的Be7-FWHM的BPass状态 如果是true 则颜色赋值为BLUE 如果是false则颜色赋值为RED - qcState.set(4, phd.getQcItems().get("Be7-FWHM").isBPass()?"BLUE":"RED"); + qcState.set(4, phd.getQcItems().get("Be7-FWHM").isBPass() ? "BLUE" : "RED"); } //如果匹配P 判断 QcItems的Ba140-MDC数据是否为空 - if(Objects.nonNull(phd.getQcItems().get("Ba140-MDC"))) { + if (Objects.nonNull(phd.getQcItems().get("Ba140-MDC"))) { //不为空 判断 QcItems的Ba140-MDC的BPass状态 如果是true 则颜色赋值为BLUE 如果是false则颜色赋值为RED - qcState.set(5, phd.getQcItems().get("Ba140-MDC").isBPass()?"BLUE":"RED"); + qcState.set(5, phd.getQcItems().get("Ba140-MDC").isBPass() ? "BLUE" : "RED"); } - } else if(phd.getHeader().getSystem_type().equalsIgnoreCase("G")) { + } else if (phd.getHeader().getSystem_type().equalsIgnoreCase("G")) { //判断当前文件系统类型是否匹配 G //如果匹配G 判断 QcItems的Xe133-MDC数据是否为空 - if(Objects.nonNull(phd.getQcItems().get("Xe133-MDC"))) { + if (Objects.nonNull(phd.getQcItems().get("Xe133-MDC"))) { //不为空 判断 QcItems的Xe133-MDC的BPass状态 如果是true 则颜色赋值为BLUE 如果是false则颜色赋值为RED - qcState.set(6, phd.getQcItems().get("Xe133-MDC").isBPass()?"BLUE":"RED"); + qcState.set(6, phd.getQcItems().get("Xe133-MDC").isBPass() ? "BLUE" : "RED"); } } return qcState; @@ -517,17 +518,17 @@ public class GammaFileUtil extends AbstractLogOrReport { //计算得到采集耗时 double collect_hour = 0.0; if (Objects.nonNull(end) && Objects.nonNull(start)) { - collect_hour = ((end.getTime() - start.getTime())/1000) / 3600.0; + collect_hour = ((end.getTime() - start.getTime()) / 1000) / 3600.0; } //获取 实际分析时长 double acq_hour = phd.getAcq().getAcquisition_real_time() / 3600.0; //计算得到衰减耗时 double Decay_hour = 0.0; if (Objects.nonNull(acq) && Objects.nonNull(end)) { - Decay_hour = ((acq.getTime() - end.getTime())/1000) / 3600.0; + Decay_hour = ((acq.getTime() - end.getTime()) / 1000) / 3600.0; } //声明一个double数据 - List Be7Value = new LinkedList<>(); + List Be7Value = new LinkedList<>(); //声明一个map用于存储计算数据 Map vMdcInfoMap = new HashMap<>(); //声明一个数组存储计算数据 @@ -535,9 +536,16 @@ public class GammaFileUtil extends AbstractLogOrReport { //声明一个数组存储QcItems数据 Map qcItems = new TreeMap<>(); //调用方法 读取文件信息 判断QC数据 - if(!ReadQCLimit(qcItems, vMdcInfoMap, Be7Value, phd.getHeader().getSystem_type().toUpperCase())) { + //if (!ReadQCLimit(qcItems, vMdcInfoMap, Be7Value, phd.getHeader().getSystem_type().toUpperCase())) { + // String WARNING = "Read QC Flags from SystemManager.xml Failed!"; + //} + String stationCode = phd.getHeader().getSite_code(); + GardsStations stationInfo = getStationInfo(stationCode); + String stationType = stationInfo.getEfficCalculType(); + if (!ReadQCLimitByStationType(qcItems, vMdcInfoMap, Be7Value, stationType, stationCode)) { String WARNING = "Read QC Flags from SystemManager.xml Failed!"; } + //判断map是否为空 if (CollectionUtils.isNotEmpty(vMdcInfoMap)) { //根据键值按顺序向数组中插入数据 @@ -575,9 +583,9 @@ public class GammaFileUtil extends AbstractLogOrReport { //将数据存入QcItems的map中 qcItems.put("airFlow", airFlow); //判断phdFile的valid参数是否为true phdFile的vBase集合大小是否等于phdFile的Spec的num_g_channel数据 - if(phd.isValid() && phd.getVBase().size() == phd.getSpec().getNum_g_channel()) { + if (phd.isValid() && phd.getVBase().size() == phd.getSpec().getNum_g_channel()) { //判断system_type是否匹配P - if(phd.getHeader().getSystem_type().equalsIgnoreCase("P")) { + if (phd.getHeader().getSystem_type().equalsIgnoreCase("P")) { //调用算法计算 CalValuesOut calValuesOut = CalValuesHandler.calFcnEval(Be7Value, phd.getUsedResoPara().getP()); //获取计算结果的counts赋值给 fwhm集合 @@ -604,9 +612,9 @@ public class GammaFileUtil extends AbstractLogOrReport { } } //遍历QcItems - for(Map.Entry iter:qcItems.entrySet()){ + for (Map.Entry iter : qcItems.entrySet()) { //判断 QcItems的Standard是否为空 - if(iter.getValue().getStandard().isEmpty()){ + if (iter.getValue().getStandard().isEmpty()) { continue; } //根据英文,分割standard数据 @@ -614,31 +622,31 @@ public class GammaFileUtil extends AbstractLogOrReport { //声明一个boolean类型 记录是否符合要求 boolean bSatisfy = true; //遍历标准数据 - for(String str : lists) { + for (String str : lists) { //判断标准数据是否含有 / 如果含有跳过本次循环 - if(str.contains(StringPool.DASH)){ + if (str.contains(StringPool.DASH)) { continue; - } else if(str.contains(StringPool.LEFT_BRACKET)) {//判断标准数据是否包含( + } else if (str.contains(StringPool.LEFT_BRACKET)) {//判断标准数据是否包含( //判断当前QcItem的值 是否 小于等于 去掉(后的标准值 - if(iter.getValue().getValue() <= Double.valueOf(str.replace(StringPool.LEFT_BRACKET,""))) { + if (iter.getValue().getValue() <= Double.valueOf(str.replace(StringPool.LEFT_BRACKET, ""))) { bSatisfy = false; break; } - } else if(str.contains(StringPool.RIGHT_BRACKET)) {//判断标准数据是否包含) + } else if (str.contains(StringPool.RIGHT_BRACKET)) {//判断标准数据是否包含) //判断当前QcItem的值 是否 大于等于 去掉)后的标准值 - if(iter.getValue().getValue() >= Double.valueOf(str.replace(StringPool.RIGHT_BRACKET,""))) { + if (iter.getValue().getValue() >= Double.valueOf(str.replace(StringPool.RIGHT_BRACKET, ""))) { bSatisfy = false; break; } - } else if(str.contains(StringPool.LEFT_SQ_BRACKET)) {//判断标准数据是否包含[ + } else if (str.contains(StringPool.LEFT_SQ_BRACKET)) {//判断标准数据是否包含[ //判断当前QcItem的值 是否 小于 去掉[后的标准值 - if(iter.getValue().getValue() < Double.valueOf(str.replace(StringPool.LEFT_SQ_BRACKET,""))) { + if (iter.getValue().getValue() < Double.valueOf(str.replace(StringPool.LEFT_SQ_BRACKET, ""))) { bSatisfy = false; break; } - } else if(str.contains(StringPool.RIGHT_SQ_BRACKET)) {//判断标准数据是否包含] + } else if (str.contains(StringPool.RIGHT_SQ_BRACKET)) {//判断标准数据是否包含] //判断当前QcItem的值 是否 大于 去掉]后的标准值 - if(iter.getValue().getValue() > Double.valueOf(str.replace(StringPool.RIGHT_SQ_BRACKET,""))) { + if (iter.getValue().getValue() > Double.valueOf(str.replace(StringPool.RIGHT_SQ_BRACKET, ""))) { bSatisfy = false; break; } @@ -655,7 +663,7 @@ public class GammaFileUtil extends AbstractLogOrReport { public Double CalculateMDC(PHDFile phd, List vMdcInfo, Double CCF) { try { //判断用于计算的数据大小是否小于3 判断集合中最后一个数值是否等于0 - if(vMdcInfo.size() < 3 || vMdcInfo.get(2) == 0) { + if (vMdcInfo.size() < 3 || vMdcInfo.get(2) == 0) { return 0.0; } @@ -677,12 +685,12 @@ public class GammaFileUtil extends AbstractLogOrReport { //计算采样时间 double Ts = 0.0; if (Objects.nonNull(collectStop) && Objects.nonNull(collectStart)) { - Ts = ((collectStop.getTime() - collectStart.getTime())/1000); + Ts = ((collectStop.getTime() - collectStart.getTime()) / 1000); } //计算衰变时间 double Td = 0.0; if (Objects.nonNull(acqStart) && Objects.nonNull(collectStop)) { - Td = ((acqStart.getTime() - collectStop.getTime())/1000); + Td = ((acqStart.getTime() - collectStop.getTime()) / 1000); } //获取能谱获取实时间 double Ta = phd.getAcq().getAcquisition_real_time(); @@ -695,25 +703,25 @@ public class GammaFileUtil extends AbstractLogOrReport { double DCF3 = 0; //计算得到lamda计算值 double lambda = Math.log(2.0) / (vMdcInfo.get(2) * 86400); - if ( Ts == 0 ) { + if (Ts == 0) { DCF1 = 1; } else { - DCF1 = lambda * Ts / (1-Math.exp(-lambda * Ts)); + DCF1 = lambda * Ts / (1 - Math.exp(-lambda * Ts)); } - if ( Td == 0 ) { + if (Td == 0) { DCF2 = 1; } else { - DCF2 = Math.exp(lambda*Td); + DCF2 = Math.exp(lambda * Td); } - if ( Ta == 0 ) { + if (Ta == 0) { DCF3 = 1; } else { - DCF3 = lambda * Ta / (1-Math.exp(-lambda*Ta)); + DCF3 = lambda * Ta / (1 - Math.exp(-lambda * Ta)); } //计算得到DCF_conc double DCF_conc = Double.POSITIVE_INFINITY; if (Objects.nonNull(collectStart) && Objects.nonNull(phd.getUsedSetting().getRefTime_conc())) { - DCF_conc = Math.exp(lambda * ((collectStart.getTime() - phd.getUsedSetting().getRefTime_conc().getTime())/1000)); + DCF_conc = Math.exp(lambda * ((collectStart.getTime() - phd.getUsedSetting().getRefTime_conc().getTime()) / 1000)); } //声明一个集合 List energy = new LinkedList<>(); @@ -742,18 +750,18 @@ public class GammaFileUtil extends AbstractLogOrReport { List counts = calFcnEval.counts; double effi = counts.get(0); int index = 0; - for(int i=1; i= vMdcInfo.get(0)) { + for (int i = 1; i < phd.getVEnergy().size(); i++) { + if (phd.getVEnergy().get(i) >= vMdcInfo.get(0)) { index = i; - if( (phd.getVEnergy().get(i) - vMdcInfo.get(0)) > (vMdcInfo.get(0) - phd.getVEnergy().get(i-1)) ){ - index = i-1; + if ((phd.getVEnergy().get(i) - vMdcInfo.get(0)) > (vMdcInfo.get(0) - phd.getVEnergy().get(i - 1))) { + index = i - 1; } break; } } double lcc = phd.getVLc().get(index); double baseline = phd.getVBase().get(index); - double mdc = (2 * fwhmc * (lcc - baseline) / 0.8591 ) * CCF*DCF1*DCF2*DCF3*DCF_conc / ( vMdcInfo.get(1) * effi * Tl ) *1e6 / Svol; + double mdc = (2 * fwhmc * (lcc - baseline) / 0.8591) * CCF * DCF1 * DCF2 * DCF3 * DCF_conc / (vMdcInfo.get(1) * effi * Tl) * 1e6 / Svol; return mdc; } catch (ParseException e) { throw new RuntimeException(e); @@ -762,81 +770,81 @@ public class GammaFileUtil extends AbstractLogOrReport { public boolean ReadQCLimit(Map qcItems, Map vMdcInfoMap, List Be7Value, String systemType) { try { - String filePath = parameterProperties.getFilePath()+ File.separator +"SystemManager.xml"; + String filePath = parameterProperties.getFilePath() + File.separator + "SystemManager.xml"; //创建一个文档解析器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //创建文档解析器 DocumentBuilder documentBuilder = factory.newDocumentBuilder(); //读取xml文件生成一个文档 Document document = documentBuilder.parse(filePath); - if (Objects.isNull(document)){ + if (Objects.isNull(document)) { return false; } //获取文档的根元素 Element element = document.getDocumentElement(); //获取根元素的子节点 NodeList docChildNodes = element.getChildNodes(); - if (Objects.nonNull(docChildNodes) && docChildNodes.getLength()>0){ + if (Objects.nonNull(docChildNodes) && docChildNodes.getLength() > 0) { //遍历子节点信息 - for(int i = 0; i < docChildNodes.getLength(); i++) { + for (int i = 0; i < docChildNodes.getLength(); i++) { //根据下标获取对应的节点信息 Node n = docChildNodes.item(i); //判断节点名称是否是 QCFlags-P 并且当前解析文件的系统类型是否是 P - if(n.getNodeName().equals("QCFlags-P") && systemType.equalsIgnoreCase("P")) { + if (n.getNodeName().equals("QCFlags-P") && systemType.equalsIgnoreCase("P")) { // 获取节点的第一个子节点 Node childNode = n.getFirstChild(); //如果节点信息不为空 - while(Objects.nonNull(childNode)) { + while (Objects.nonNull(childNode)) { String nodeName = childNode.getNodeName(); //判断节点名称是否是 item - if(nodeName.equals("col_time") || nodeName.equals("acq_time") || nodeName.equals("decay_time") || nodeName.equals("samp_vol") + if (nodeName.equals("col_time") || nodeName.equals("acq_time") || nodeName.equals("decay_time") || nodeName.equals("samp_vol") || nodeName.equals("airFlow") || nodeName.equals("Be7-FWHM") || nodeName.equals("Ba140-MDC")) { QcCheckItem qcCheckItem = new QcCheckItem(); // 获取节点的属性信息 NamedNodeMap attributes = childNode.getAttributes(); // 如果属性信息不为空 - if (Objects.nonNull(attributes)){ + if (Objects.nonNull(attributes)) { // 遍历获取属性值 - for (int j=0; j< attributes.getLength(); j++){ + for (int j = 0; j < attributes.getLength(); j++) { // 获取属性 Node item = attributes.item(j); //判断属性名称是否是 number - if(item.getNodeName().equals("green")) { + if (item.getNodeName().equals("green")) { qcCheckItem.setStandard(item.getNodeValue()); qcItems.put(nodeName, qcCheckItem); } } } - }else if(nodeName.equals("Be7")) { + } else if (nodeName.equals("Be7")) { // 获取节点的属性信息 NamedNodeMap attributes = childNode.getAttributes(); // 如果属性信息不为空 - if (Objects.nonNull(attributes)){ + if (Objects.nonNull(attributes)) { // 遍历获取属性值 - for (int j=0; j< attributes.getLength(); j++){ + for (int j = 0; j < attributes.getLength(); j++) { // 获取属性 Node item = attributes.item(j); //判断属性名称是否是 number - if(item.getNodeName().equals(CalType.ENERGY_CAL.getType())) { + if (item.getNodeName().equals(CalType.ENERGY_CAL.getType())) { Be7Value.add(Double.valueOf(item.getNodeValue())); } } } - } else if(nodeName.equals("Ba140")) { + } else if (nodeName.equals("Ba140")) { // 获取节点的属性信息 NamedNodeMap attributes = childNode.getAttributes(); // 如果属性信息不为空 - if (Objects.nonNull(attributes)){ + if (Objects.nonNull(attributes)) { // 遍历获取属性值 - for (int j=0; j< attributes.getLength(); j++){ + for (int j = 0; j < attributes.getLength(); j++) { // 获取属性 Node item = attributes.item(j); //判断属性名称是否是 number - if(item.getNodeName().equals(CalType.ENERGY_CAL.getType())) { + if (item.getNodeName().equals(CalType.ENERGY_CAL.getType())) { vMdcInfoMap.put("0", Double.valueOf(item.getNodeValue())); - }else if (item.getNodeName().equals("yield")){ + } else if (item.getNodeName().equals("yield")) { vMdcInfoMap.put("1", Double.valueOf(item.getNodeValue())); - }else if (item.getNodeName().equals("halflife")){ + } else if (item.getNodeName().equals("halflife")) { vMdcInfoMap.put("2", Double.valueOf(item.getNodeValue())); } } @@ -845,46 +853,46 @@ public class GammaFileUtil extends AbstractLogOrReport { // 获取下一个节点 childNode = childNode.getNextSibling(); } - }else if(n.getNodeName().equals("QCFlags-G") && systemType.equalsIgnoreCase("G")) { + } else if (n.getNodeName().equals("QCFlags-G") && systemType.equalsIgnoreCase("G")) { // 获取节点的第一个子节点 Node childNode = n.getFirstChild(); //如果节点信息不为空 - while(Objects.nonNull(childNode)) { + while (Objects.nonNull(childNode)) { String nodeName = childNode.getNodeName(); //判断节点名称是否是 item - if(nodeName.equals("col_time") || nodeName.equals("acq_time") || nodeName.equals("decay_time") || nodeName.equals("samp_vol") + if (nodeName.equals("col_time") || nodeName.equals("acq_time") || nodeName.equals("decay_time") || nodeName.equals("samp_vol") || nodeName.equals("airFlow") || nodeName.equals("Xe133-MDC")) { QcCheckItem qcCheckItem = new QcCheckItem(); // 获取节点的属性信息 NamedNodeMap attributes = childNode.getAttributes(); // 如果属性信息不为空 - if (Objects.nonNull(attributes)){ + if (Objects.nonNull(attributes)) { // 遍历获取属性值 - for (int j=0; j< attributes.getLength(); j++){ + for (int j = 0; j < attributes.getLength(); j++) { // 获取属性 Node item = attributes.item(j); //判断属性名称是否是 number - if(item.getNodeName().equals("green")) { + if (item.getNodeName().equals("green")) { qcCheckItem.setStandard(item.getNodeValue()); qcItems.put(nodeName, qcCheckItem); } } } - }else if(nodeName.equals("Xe133")) { + } else if (nodeName.equals("Xe133")) { // 获取节点的属性信息 NamedNodeMap attributes = childNode.getAttributes(); // 如果属性信息不为空 - if (Objects.nonNull(attributes)){ + if (Objects.nonNull(attributes)) { // 遍历获取属性值 - for (int j=0; j< attributes.getLength(); j++){ + for (int j = 0; j < attributes.getLength(); j++) { // 获取属性 Node item = attributes.item(j); //判断属性名称是否是 number - if(item.getNodeName().equals(CalType.ENERGY_CAL.getType())) { + if (item.getNodeName().equals(CalType.ENERGY_CAL.getType())) { vMdcInfoMap.put("0", Double.valueOf(item.getNodeValue())); - }else if (item.getNodeName().equals("yield")){ + } else if (item.getNodeName().equals("yield")) { vMdcInfoMap.put("1", Double.valueOf(item.getNodeValue())); - }else if (item.getNodeName().equals("halflife")){ + } else if (item.getNodeName().equals("halflife")) { vMdcInfoMap.put("2", Double.valueOf(item.getNodeValue())); } } @@ -906,6 +914,129 @@ public class GammaFileUtil extends AbstractLogOrReport { return true; } + //region 添加根据台站类型获取QC参数 + public boolean ReadQCLimitByStationType(Map qcItems, Map vMdcInfoMap, + List Be7Value, String systemType, String stationCode) { + try { + + String filePath = parameterProperties.getFilePath() + File.separator + "parameter.xml"; + log.info("filePath:" + filePath); + //创建一个文档解析器工厂 + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + //创建文档解析器 + DocumentBuilder documentBuilder = factory.newDocumentBuilder(); + //读取xml文件生成一个文档 + Document document = documentBuilder.parse(filePath); + log.info("stationCode:" + stationCode); + log.info("document:" + document); + log.info("systemType:" + systemType); + if (StringUtils.isBlank(stationCode) || Objects.isNull(document)) { + return false; + } + //获取文档的根元素 + Element element = document.getDocumentElement(); + log.info("获取文档的根元素:" + element); + if (stationCode.charAt(2) == 'X' && systemType.equals("SPALAX")) { + //切割台站编码 如果 第三个字符是 X 并且 EFFIC_CALCUL_TYPE类型是 SPALAX + NodeList nodes = element.getElementsByTagName("QCFlags-SPALAX"); + log.info("第三个字符是 X 并且 EFFIC_CALCUL_TYPE类型是 QCFlags-SPALAX:" + nodes); + for (int i = 0; i < nodes.getLength(); i++) { + parseQCFlags(nodes.item(i), qcItems, vMdcInfoMap, Be7Value); + } + } else if (stationCode.charAt(2) == 'X' && systemType.equals("SPALAX_PLC")) { + //切割台站编码 如果 第三个字符是 X 并且 EFFIC_CALCUL_TYPE类型是 SPALAX-PLC + NodeList nodes = element.getElementsByTagName("QCFlags-SPALAX-PLC"); + log.info("第三个字符是 X 并且 EFFIC_CALCUL_TYPE类型是 QCFlags-SPALAX-PLC:" + nodes); + for (int i = 0; i < nodes.getLength(); i++) { + parseQCFlags(nodes.item(i), qcItems, vMdcInfoMap, Be7Value); + } + } else if (stationCode.charAt(2) == 'P') { + //切割台站编码 如果 第三个字符是 P + NodeList nodes = element.getElementsByTagName("QCFlags-P"); + log.info("第三个字符是 X 并且 EFFIC_CALCUL_TYPE类型是 QCFlags-P:" + nodes); + for (int i = 0; i < nodes.getLength(); i++) { + parseQCFlags(nodes.item(i), qcItems, vMdcInfoMap, Be7Value); + } + } + log.info("col_time:" + qcItems.get("col_time")); + } catch (ParserConfigurationException | IOException | SAXException e) { + throw new RuntimeException(e); + } + return true; + } + + private static void parseQCFlags(Node node, Map qcItems, Map vMdcInfoMap, List Be7Value) { + Node childNode = node.getFirstChild(); + QcCheckItem qcCheckItem = new QcCheckItem(); + while (Objects.nonNull(childNode)) { + String nodeName = childNode.getNodeName(); + switch (nodeName) { + case "col_time": + case "acq_time": + case "decay_time": + case "samp_vol": + case "Xe133-MDC": + case "airFlow": + case "Be7-FWHM": + case "Ba140-MDC": + qcCheckItem = new QcCheckItem(); + setAttributeSetter(childNode, "green", qcCheckItem::setStandard); + qcItems.put(nodeName, qcCheckItem); + log.info(nodeName + ":" + qcCheckItem.getStandard()); + break; + case "Be7": + setAttributeSetter(childNode, CalType.ENERGY_CAL.getType(), value -> Be7Value.add(Double.valueOf(value))); + log.info(nodeName + ":" + Be7Value); + break; + case "Ba140": + setAttributeSetter(childNode, CalType.ENERGY_CAL.getType(), value -> vMdcInfoMap.put("0", Double.valueOf(value))); + setAttributeSetter(childNode, "yield", value -> vMdcInfoMap.put("1", Double.valueOf(value))); + setAttributeSetter(childNode, "halflife", value -> vMdcInfoMap.put("2", Double.valueOf(value))); + log.info(nodeName + ":" + vMdcInfoMap.get("0") + vMdcInfoMap.get("1") + vMdcInfoMap.get("2")); + break; + case "Xe133": + setAttributeSetter(childNode, CalType.ENERGY_CAL.getType(), value -> vMdcInfoMap.put("0", Double.valueOf(value))); + setAttributeSetter(childNode, "yield", value -> vMdcInfoMap.put("1", Double.valueOf(value))); + setAttributeSetter(childNode, "halflife", value -> vMdcInfoMap.put("2", Double.valueOf(value))); + log.info(nodeName + ":" + vMdcInfoMap.get("0") + vMdcInfoMap.get("1") + vMdcInfoMap.get("2")); + break; + } + childNode = childNode.getNextSibling(); + } + } + + //根据map的value获取map的key + private GardsStations getStationInfo(String value) { + Map stationMap = (Map) redisUtil.get("stationMap"); + Map stations = (Map) redisUtil.get("stationInfoMap"); + GardsStations station = new GardsStations(); + if (Objects.nonNull(stationMap)) { + for (Map.Entry entry : stationMap.entrySet()) { + if (value.equals(entry.getValue())) { + station = stations.get(entry.getKey()); + } + } + } + return station; + } + + private static void setAttributeSetter(Node node, String attributeName, AttributeSetter setter) { + NamedNodeMap attributes = node.getAttributes(); + if (Objects.nonNull(attributes)) { + for (int i = 0; i < attributes.getLength(); i++) { + Node item = attributes.item(i); + if (attributeName.equals(item.getNodeName())) { + setter.setValue(item.getNodeValue()); + } + } + } + } + + @FunctionalInterface + private interface AttributeSetter { + void setValue(String value); + } + public List DetailedInfo(String sampleId, PHDFile phd) { try { // Sample_Id, Station_Code, Detector_Code, System_Type, Data_Type, Spectral_Qualifier, @@ -913,11 +1044,11 @@ public class GammaFileUtil extends AbstractLogOrReport { // Acq_Start, Acq_Real, Acq_Live, Decay_Time, Auto_Cat, Category List detailInfo = new LinkedList<>(); //Detail Info的所有数据初始化为“” - for (int i=0; i<18; i++){ + for (int i = 0; i < 18; i++) { detailInfo.add(""); } //读取phdFile的数据 修改detailInfo的数据 - detailInfo.set(0, StringUtils.isNotBlank(sampleId)?sampleId:""); // Sample_Id + detailInfo.set(0, StringUtils.isNotBlank(sampleId) ? sampleId : ""); // Sample_Id detailInfo.set(1, phd.getHeader().getSite_code()); // Station_Code detailInfo.set(2, phd.getHeader().getDetector_code()); // Detector_Code detailInfo.set(3, phd.getHeader().getSystem_type().toUpperCase()); // System_Type @@ -929,7 +1060,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Date collect_stop_dt = null; if (StringUtils.isNotBlank(phd.getCollect().getCollection_stop_date()) && StringUtils.isNotBlank(phd.getCollect().getCollection_stop_time())) { collect_stop = phd.getCollect().getCollection_stop_date() + StringPool.SPACE + phd.getCollect().getCollection_stop_time(); - collect_stop_dt = DateUtils.parseDate(collect_stop,"yyyy/MM/dd HH:mm:ss"); + collect_stop_dt = DateUtils.parseDate(collect_stop, "yyyy/MM/dd HH:mm:ss"); } String collect_start = ""; Date collect_start_dt = null; @@ -940,12 +1071,12 @@ public class GammaFileUtil extends AbstractLogOrReport { detailInfo.set(8, collect_start); double timeSpan = 0.0; if (Objects.nonNull(collect_start_dt) && Objects.nonNull(collect_stop_dt)) { - timeSpan = (collect_stop_dt.getTime()/1000 - collect_start_dt.getTime()/1000) / 3600.0; + timeSpan = (collect_stop_dt.getTime() / 1000 - collect_start_dt.getTime() / 1000) / 3600.0; } detailInfo.set(9, String.format("%.2f", timeSpan));// Sampling_Time detailInfo.set(10, String.format("%.2f", phd.getCollect().getAir_volume())); - if(timeSpan != 0){ - detailInfo.set(11, String.format("%.2f", phd.getCollect().getAir_volume()/timeSpan)); + if (timeSpan != 0) { + detailInfo.set(11, String.format("%.2f", phd.getCollect().getAir_volume() / timeSpan)); } String acq_start = ""; Date start_date = null; @@ -958,7 +1089,7 @@ public class GammaFileUtil extends AbstractLogOrReport { detailInfo.set(14, String.format("%.2f", phd.getAcq().getAcquisition_live_time())); double timespan = 0.0; if (Objects.nonNull(start_date) && Objects.nonNull(collect_start_dt)) { - timespan = (start_date.getTime()/1000 - collect_stop_dt.getTime()/1000); + timespan = (start_date.getTime() / 1000 - collect_stop_dt.getTime() / 1000); } detailInfo.set(15, String.format("%.2f", timespan / 3600.0)); detailInfo.set(17, phd.getCategory()); @@ -989,13 +1120,13 @@ public class GammaFileUtil extends AbstractLogOrReport { long m_nSChan = phd.getSpec().getBegin_channel(); // 确保绘制曲线时所有谱都是从1道开始 int i = 0; - if(m_nSChan == 0){ + if (m_nSChan == 0) { i = 1; } - for(; i 1 && phd.getVEnergy().size() == m_nCount) { - if(start < 1) { + if (m_nCount > 1 && phd.getVEnergy().size() == m_nCount) { + if (start < 1) { start = 1; } - if(end < 1 || end > m_nCount){ + if (end < 1 || end > m_nCount) { end = m_nCount; } - for(int j=start-1; j 1) { - if(start < 1){ + if (m_nCount > 1) { + if (start < 1) { start = 1; } - if(end < 1 || end > m_nCount){ + if (end < 1 || end > m_nCount) { end = m_nCount; } - for(int j=start-1; j datalist = new LinkedList<>(); int start = 0; long end = -1; - if(m_nCount > 1 && phd.getVEnergy().size() == m_nCount && phd.getVLc().size() == m_nCount + if (m_nCount > 1 && phd.getVEnergy().size() == m_nCount && phd.getVLc().size() == m_nCount && phd.getVScac().size() == m_nCount && phd.getVBase().size() == m_nCount) { - if(start < 1) { + if (start < 1) { start = 1; } - if(end < 1 || end > m_nCount) { + if (end < 1 || end > m_nCount) { end = m_nCount; } @@ -1082,9 +1213,9 @@ public class GammaFileUtil extends AbstractLogOrReport { ChartData data6 = new ChartData(); ChartData data7 = new ChartData(); ChartData data8 = new ChartData(); - for(int i=start-1; i PeakSet(List vPeak, List vBase, String color, long m_nCount, List p, boolean bEnergy) { List datalist = new LinkedList<>(); int peakNum = vPeak.size(); - if(peakNum < 1 || vBase.size() != m_nCount){ + if (peakNum < 1 || vBase.size() != m_nCount) { return datalist; } int start = 0; long end = -1; - if(start < 1){ + if (start < 1) { start = 1; } - if(end > m_nCount || end < 1){ + if (end > m_nCount || end < 1) { end = m_nCount; } // 找出在所给范围的第一道拟合峰和最后一道拟合峰的索引下标 - int index = 0, startPeak = -1, endPeak = peakNum-1; - while(index < peakNum && start > vPeak.get(index).right){ + int index = 0, startPeak = -1, endPeak = peakNum - 1; + while (index < peakNum && start > vPeak.get(index).right) { index++; } - if(index < peakNum) { + if (index < peakNum) { startPeak = index; - while(index < peakNum && vPeak.get(index).left < end){ + while (index < peakNum && vPeak.get(index).left < end) { index++; } - endPeak = index-1; + endPeak = index - 1; } - if(startPeak < 0 || startPeak > endPeak){ + if (startPeak < 0 || startPeak > endPeak) { return datalist; } - for(int i=startPeak; i<=endPeak; i++) { + for (int i = startPeak; i <= endPeak; i++) { PeakInfo peak = vPeak.get(i); ChartData cData = new ChartData(); cData.setColor(color); @@ -1223,19 +1354,19 @@ public class GammaFileUtil extends AbstractLogOrReport { List regChan = new LinkedList<>(); double d = peak.left; - while(d <= peak.right) { + while (d <= peak.right) { regChan.add(d); d += 0.25; } - List t_base = vBase.subList(peak.left-1, peak.right); + List t_base = vBase.subList(peak.left - 1, peak.right); List regPeak = CalValuesHandler.interp1(peak, t_base, regChan); - if(bEnergy) { + if (bEnergy) { cData.setGroup("energy"); CalValuesOut calValuesOut = CalValuesHandler.calFcnEval(regChan, p); List regEnergy = calValuesOut.counts; - for(int ii=0; ii end){ + for (int ii = 0; ii < regChan.size(); ii++) { + if (regChan.get(ii) < start || regChan.get(ii) > end) { continue; } SeriseData seriseData = new SeriseData(); @@ -1245,13 +1376,13 @@ public class GammaFileUtil extends AbstractLogOrReport { } } else { cData.setGroup("channel"); - for(int ii=0; ii end){ + for (int ii = 0; ii < regChan.size(); ii++) { + if (regChan.get(ii) < start || regChan.get(ii) > end) { continue; } SeriseData seriseData = new SeriseData(); seriseData.setX(regChan.get(ii)); - seriseData.setY(regPeak.get(ii).isNaN()?0:regPeak.get(ii)); + seriseData.setY(regPeak.get(ii).isNaN() ? 0 : regPeak.get(ii)); cData.getPointlist().add(seriseData); } } @@ -1264,10 +1395,10 @@ public class GammaFileUtil extends AbstractLogOrReport { List shapes = new LinkedList<>(); CalValuesOut calValuesOut = CalValuesHandler.calFcnEval(phd.getBaseCtrls().getXCtrl(), phd.getUsedEnerPara().getP()); List vEner = calValuesOut.counts; - if(phd.getBaseCtrls().getXCtrl().size() == phd.getBaseCtrls().getYCtrl().size()) { - for(int i=0; i Channel_BaseCP(PHDFile phd) { List shapes = new LinkedList<>(); int num = phd.getBaseCtrls().getXCtrl().size(); - if(num == phd.getBaseCtrls().getYCtrl().size()) { - for(int i=0; i 0) { + if (change == 0 && phd.getVPeak().size() > 0) { return change; - } else if(change == -1) { + } else if (change == -1) { phd.setUsedEffi(phd.getNewEffi()); phd.setUsedEffiKD(phd.getMapEffiKD().get(phd.getNewEffi())); phd.setUsedEffiPara(phd.getMapEffiPara().get(phd.getNewEffi())); @@ -1322,12 +1453,12 @@ public class GammaFileUtil extends AbstractLogOrReport { return change; } - public boolean AnalyseSpectrum(PHDFile phd, Map mapLines){ + public boolean AnalyseSpectrum(PHDFile phd, Map mapLines) { ObjectMapper mapper = new ObjectMapper(); try { String phdStr = mapper.writeValueAsString(phd); String nuclideLinesMap = mapper.writeValueAsString(mapLines); - if (ObjectUtil.isNull(analysisProcess)){ + if (ObjectUtil.isNull(analysisProcess)) { analysisProcess = ApplicationContextUtil.getContext().getBean(AnalysisProcess.class); } String strValue = CalValuesHandler.analyseSpectrum(phdStr, nuclideLinesMap, phd.getTmpFilePath(), analysisProcess); @@ -1337,7 +1468,7 @@ public class GammaFileUtil extends AbstractLogOrReport { String analyMessage = JSON.parseObject(JSON.toJSONString(parseMap.get("analyMessage")), String.class); phd.setAnalyMessage(analyMessage); if (analyFlag) { - for (Map.Entry entry:parseMap.entrySet()) { + for (Map.Entry entry : parseMap.entrySet()) { if (entry.getKey().equalsIgnoreCase("bAnalyed")) { boolean value = JSON.parseObject(JSON.toJSONString(entry.getValue()), Boolean.class); phd.setBAnalyed(value); @@ -1345,7 +1476,7 @@ public class GammaFileUtil extends AbstractLogOrReport { if (entry.getKey().equalsIgnoreCase("mapEnerPara")) { HashMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), HashMap.class); Map value = new HashMap<>(); - for (Map.Entry objectEntry:jsonMap.entrySet()) { + for (Map.Entry objectEntry : jsonMap.entrySet()) { String key = objectEntry.getKey(); ParameterInfo entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), ParameterInfo.class); value.put(key, entryValue); @@ -1355,7 +1486,7 @@ public class GammaFileUtil extends AbstractLogOrReport { if (entry.getKey().equalsIgnoreCase("mapResoPara")) { HashMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), HashMap.class); Map value = new HashMap<>(); - for (Map.Entry objectEntry:jsonMap.entrySet()) { + for (Map.Entry objectEntry : jsonMap.entrySet()) { String key = objectEntry.getKey(); ParameterInfo entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), ParameterInfo.class); value.put(key, entryValue); @@ -1365,7 +1496,7 @@ public class GammaFileUtil extends AbstractLogOrReport { if (entry.getKey().equalsIgnoreCase("mapEffiPara")) { HashMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), HashMap.class); Map value = new HashMap<>(); - for (Map.Entry objectEntry:jsonMap.entrySet()) { + for (Map.Entry objectEntry : jsonMap.entrySet()) { String key = objectEntry.getKey(); ParameterInfo entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), ParameterInfo.class); value.put(key, entryValue); @@ -1375,7 +1506,7 @@ public class GammaFileUtil extends AbstractLogOrReport { if (entry.getKey().equalsIgnoreCase("mapTotEPara")) { HashMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), HashMap.class); Map value = new HashMap<>(); - for (Map.Entry objectEntry:jsonMap.entrySet()) { + for (Map.Entry objectEntry : jsonMap.entrySet()) { String key = objectEntry.getKey(); ParameterInfo entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), ParameterInfo.class); value.put(key, entryValue); @@ -1413,7 +1544,7 @@ public class GammaFileUtil extends AbstractLogOrReport { if (entry.getKey().equalsIgnoreCase("mapEnerKD")) { HashMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), HashMap.class); Map value = new HashMap<>(); - for (Map.Entry objectEntry:jsonMap.entrySet()) { + for (Map.Entry objectEntry : jsonMap.entrySet()) { String key = objectEntry.getKey(); GEnergyBlock entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), GEnergyBlock.class); value.put(key, entryValue); @@ -1423,7 +1554,7 @@ public class GammaFileUtil extends AbstractLogOrReport { if (entry.getKey().equalsIgnoreCase("mapResoKD")) { HashMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), HashMap.class); Map value = new HashMap<>(); - for (Map.Entry objectEntry:jsonMap.entrySet()) { + for (Map.Entry objectEntry : jsonMap.entrySet()) { String key = objectEntry.getKey(); GResolutionBlock entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), GResolutionBlock.class); value.put(key, entryValue); @@ -1505,7 +1636,7 @@ public class GammaFileUtil extends AbstractLogOrReport { if (entry.getKey().equalsIgnoreCase("mapNucActMda")) { TreeMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), TreeMap.class); Map value = new TreeMap<>(); - for (Map.Entry objectEntry:jsonMap.entrySet()) { + for (Map.Entry objectEntry : jsonMap.entrySet()) { String key = objectEntry.getKey(); NuclideActMda entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), NuclideActMda.class); value.put(key, entryValue); @@ -1515,7 +1646,7 @@ public class GammaFileUtil extends AbstractLogOrReport { } BeanUtils.copyProperties(phd.getSetting(), phd.getUsedSetting()); - for (PeakInfo peak:phd.getVPeak()) { + for (PeakInfo peak : phd.getVPeak()) { if (StringUtils.isBlank(peak.recoilBetaChan)) { peak.recoilBetaChan = "nan"; } @@ -1527,7 +1658,7 @@ public class GammaFileUtil extends AbstractLogOrReport { log.error("AnalyseSpectrum(): {}", analyMessage); return false; } - } catch (JsonProcessingException e){ + } catch (JsonProcessingException e) { e.printStackTrace(); log.error("AnalyseSpectrum(): {}", e.getMessage()); } catch (RuntimeException e) { @@ -1541,7 +1672,7 @@ public class GammaFileUtil extends AbstractLogOrReport { SpecSetup newSets = phd.getSetting(); SpecSetup oldSets = phd.getUsedSetting(); - if(newSets.getECutAnalysis_Low() != oldSets.getECutAnalysis_Low() + if (newSets.getECutAnalysis_Low() != oldSets.getECutAnalysis_Low() || newSets.getECutAnalysis_High() != oldSets.getECutAnalysis_High() || newSets.getEnergyTolerance() != oldSets.getEnergyTolerance() || newSets.getPss_low() != oldSets.getPss_low() @@ -1551,40 +1682,39 @@ public class GammaFileUtil extends AbstractLogOrReport { || newSets.getK_beta() != oldSets.getK_beta() || newSets.getRiskLevelK() != oldSets.getRiskLevelK() || !newSets.getRefTime_act().equals(oldSets.getRefTime_act()) - || !newSets.getRefTime_conc().equals(oldSets.getRefTime_conc())) - { + || !newSets.getRefTime_conc().equals(oldSets.getRefTime_conc())) { return 1; } List old_ener = phd.getUsedEnerPara().getP(); - List new_ener = Objects.nonNull(phd.getMapEnerPara().get(phd.getNewEner()))?(CollectionUtils.isNotEmpty(phd.getMapEnerPara().get(phd.getNewEner()).getP())?phd.getMapEnerPara().get(phd.getNewEner()).getP():new LinkedList<>()):new LinkedList<>(); - if(old_ener.size() != new_ener.size()) { + List new_ener = Objects.nonNull(phd.getMapEnerPara().get(phd.getNewEner())) ? (CollectionUtils.isNotEmpty(phd.getMapEnerPara().get(phd.getNewEner()).getP()) ? phd.getMapEnerPara().get(phd.getNewEner()).getP() : new LinkedList<>()) : new LinkedList<>(); + if (old_ener.size() != new_ener.size()) { return 1; } - for(int i=0; i 1E-6){ + for (int i = 0; i < old_ener.size(); i++) { + if (Math.abs(old_ener.get(i) - new_ener.get(i)) > 1E-6) { return 1; } } List old_reso = phd.getUsedResoPara().getP(); - List new_reso = Objects.nonNull(phd.getMapResoPara().get(phd.getNewReso()))?(CollectionUtils.isNotEmpty(phd.getMapResoPara().get(phd.getNewReso()).getP())?phd.getMapResoPara().get(phd.getNewReso()).getP():new LinkedList<>()):new LinkedList<>(); - if(old_reso.size() != new_reso.size()) { + List new_reso = Objects.nonNull(phd.getMapResoPara().get(phd.getNewReso())) ? (CollectionUtils.isNotEmpty(phd.getMapResoPara().get(phd.getNewReso()).getP()) ? phd.getMapResoPara().get(phd.getNewReso()).getP() : new LinkedList<>()) : new LinkedList<>(); + if (old_reso.size() != new_reso.size()) { return 1; } - for(int i=0; i 1E-6){ + for (int i = 0; i < old_reso.size(); i++) { + if (Math.abs(old_reso.get(i) - new_reso.get(i)) > 1E-6) { return 1; } } List old_effi = phd.getUsedEffiPara().getP(); - List new_effi = Objects.nonNull(phd.getMapEffiPara().get(phd.getNewEffi()))?(CollectionUtils.isNotEmpty(phd.getMapEffiPara().get(phd.getNewEffi()).getP())?phd.getMapEffiPara().get(phd.getNewEffi()).getP():new LinkedList<>()):new LinkedList<>(); - if(old_effi.size() != new_effi.size()) { + List new_effi = Objects.nonNull(phd.getMapEffiPara().get(phd.getNewEffi())) ? (CollectionUtils.isNotEmpty(phd.getMapEffiPara().get(phd.getNewEffi()).getP()) ? phd.getMapEffiPara().get(phd.getNewEffi()).getP() : new LinkedList<>()) : new LinkedList<>(); + if (old_effi.size() != new_effi.size()) { return -1; } - for(int i=0; i 1E-6){ + for (int i = 0; i < old_effi.size(); i++) { + if (Math.abs(old_effi.get(i) - new_effi.get(i)) > 1E-6) { return -1; } } @@ -1594,12 +1724,12 @@ public class GammaFileUtil extends AbstractLogOrReport { public void UpdateEfficiency(PHDFile phd) { int peakNum = phd.getVPeak().size(); List vEner = new LinkedList<>(); - for (int i=0; i vEffi = calValuesOut.counts; - for (int i=0; i map) { // 当重新分析时先清除上一次的分析结果 phd.getMapNucActMda().clear(); - for(int i=0; i iter: map.entrySet()){ - if(iter.getValue().halflife <= 0){ + for (Map.Entry iter : map.entrySet()) { + if (iter.getValue().halflife <= 0) { continue; } FilterNuclideLine(iter.getValue(), phd.getUsedSetting().getECutAnalysis_Low()); // 过滤核素能量小于ECutAnalysis_Low的射线 @@ -1628,23 +1758,23 @@ public class GammaFileUtil extends AbstractLogOrReport { List vYield = iter.getValue().vyield; List vEffi = CalValuesHandler.calFcnEval(vEnergy, phd.getUsedEffiPara().getP()).counts; // 该核素所有γ射线能量处的探测效率 List vFit = new LinkedList<>(); // γ射线能量与峰中心道能量匹配标识 - for (int i=0; i= 510 && phd.getVPeak().get(j).energy <= 512) { + for (int i = 0, j = 0; i < vEnergy.size(); i++) { + for (; j < peakNum; j++) { + if (phd.getVPeak().get(j).energy >= 510 && phd.getVPeak().get(j).energy <= 512) { continue; // 峰中心道能量为511的峰不进行核素识别 } - if(vEnergy.get(i) < phd.getVPeak().get(j).energy - energyWidth){ + if (vEnergy.get(i) < phd.getVPeak().get(j).energy - energyWidth) { break; - } else if(vEnergy.get(i) <= phd.getVPeak().get(j).energy + energyWidth) { + } else if (vEnergy.get(i) <= phd.getVPeak().get(j).energy + energyWidth) { sum_found += vEffi.get(i) * vYield.get(i); vFit.set(i, j); - if(iter.getValue().maxYeildIdx == i){ + if (iter.getValue().maxYeildIdx == i) { mainPeakIdx = j; } break; @@ -1654,34 +1784,33 @@ public class GammaFileUtil extends AbstractLogOrReport { } // 核素匹配到峰 - if(sum_total > 0) { + if (sum_total > 0) { // 如果该核素属特殊核素,则用“特殊核素配置文件”中指明的其他核素的半衰期 - double halflife = (Objects.isNull(mapHalflife.get(iter.getKey()))?iter.getValue().halflife:mapHalflife.get(iter.getKey())); + double halflife = (Objects.isNull(mapHalflife.get(iter.getKey())) ? iter.getValue().halflife : mapHalflife.get(iter.getKey())); double lambda = Math.log(2.0) / halflife; double rate = sum_found / sum_total; - if(rate > 0.5) { + if (rate > 0.5) { // 获取用于计算Activity、MDC的主γ峰和最大分支比 double maxFoundYield = vYield.get(iter.getValue().maxYeildIdx); - if(mainPeakIdx < 0) - { + if (mainPeakIdx < 0) { maxFoundYield = 0; - for(int ii=0; ii= 0 && vYield.get(ii) > maxFoundYield) { + for (int ii = 0; ii < vFit.size(); ii++) { + if (vFit.get(ii) >= 0 && vYield.get(ii) > maxFoundYield) { mainPeakIdx = vFit.get(ii); maxFoundYield = vYield.get(ii); } } - if(mainPeakIdx < 0) continue; + if (mainPeakIdx < 0) continue; } NuclideActMda ActMda = new NuclideActMda(); boolean bActBigger = CalculateMDCs(phd, ActMda, mainPeakIdx, lambda, maxFoundYield, 1.0); - if(rate > 0.8 || bActBigger) { + if (rate > 0.8 || bActBigger) { ActMda.setHalflife(halflife); ActMda.setKey_flag(-1); // 需要计算活度浓度的核素 - if(!vNuclides.contains(iter.getKey())) { + if (!vNuclides.contains(iter.getKey())) { ActMda.setBCalculateMDA(true); } else { ActMda.setActivity(0); @@ -1694,21 +1823,21 @@ public class GammaFileUtil extends AbstractLogOrReport { } int fitLineNum = 0, peakIdx = -1; - for(int ii=0; ii= 0) { + for (int ii = 0; ii < vFit.size(); ii++) { + if (vFit.get(ii) >= 0) { // 向峰信息表中添加识别到的核素 - if(vFit.get(ii) != peakIdx) { + if (vFit.get(ii) != peakIdx) { phd.getVPeak().get(vFit.get(ii)).nuclides.add(iter.getKey()); peakIdx = vFit.get(ii); } // 添加匹配的γ射线的信息 - if(vFit.get(ii) == mainPeakIdx){ + if (vFit.get(ii) == mainPeakIdx) { ActMda.setCalculateIdx(fitLineNum); } - if(iter.getValue().maxYeildIdx == ii && iter.getValue().key_flag >= 0){ + if (iter.getValue().maxYeildIdx == ii && iter.getValue().key_flag >= 0) { ActMda.setKey_flag(fitLineNum); } - ActMda.getVPeakIdx().add(peakIdx+1); + ActMda.getVPeakIdx().add(peakIdx + 1); ActMda.getFullNames().add(iter.getValue().fullNames.get(ii)); ActMda.getVEnergy().add(vEnergy.get(ii)); ActMda.getVUncertE().add(iter.getValue().vuncertE.get(ii)); @@ -1726,27 +1855,27 @@ public class GammaFileUtil extends AbstractLogOrReport { private void ReadSpecialNuclides(Map mapHalflife, List vNuclides) { try { - String fileName = parameterProperties.getFilePath() + StringPool.SLASH +"nuclide_ActMdc.txt"; + String fileName = parameterProperties.getFilePath() + StringPool.SLASH + "nuclide_ActMdc.txt"; File t_file = new File(fileName); List readLines = FileUtils.readLines(t_file, "UTF-8"); - for (int i=0;i< readLines.size();i++){ + for (int i = 0; i < readLines.size(); i++) { String line = readLines.get(i); - if(line.contains("#MDA")) { - for (int j=i+1; j strList = Arrays.asList(line.split("\\s+")); - if(strList.size() == 3) { + if (strList.size() == 3) { mapHalflife.put(strList.get(0), Double.valueOf(strList.get(2)) * 86400); } } else { - i=j; + i = j; break; } } } - if(line.contains("#Identify")) { - for (int j=i+1; j strList = Arrays.asList(line.split("\\s+")); @@ -1764,35 +1893,35 @@ public class GammaFileUtil extends AbstractLogOrReport { //获取energy的数组数据 List vE = lines.venergy; //遍历数组 - for(int i=0, j=0; i 0) { + if (lines.key_flag < 0 && lines.venergy.size() > 0) { List vY = lines.vyield; lines.maxYeildIdx = 0; double maxYield = vY.get(0); - for(int ii=1; ii maxYield) { + for (int ii = 1; ii < vY.size(); ii++) { + if (vY.get(ii) > maxYield) { maxYield = vY.get(ii); lines.maxYeildIdx = ii; } } - } else{ + } else { lines.maxYeildIdx = lines.key_flag; } } @@ -1814,26 +1943,26 @@ public class GammaFileUtil extends AbstractLogOrReport { } double Ts = 0.0; if (Objects.nonNull(collectStop) && Objects.nonNull(collectStart)) { - Ts = collectStop.getTime()/1000 - collectStart.getTime()/1000; // 采样时间 + Ts = collectStop.getTime() / 1000 - collectStart.getTime() / 1000; // 采样时间 } double Td = 0.0; if (Objects.nonNull(acqStart) && Objects.nonNull(collectStop)) { - Td = acqStart.getTime()/1000 - collectStop.getTime()/1000; // 衰变时间 + Td = acqStart.getTime() / 1000 - collectStop.getTime() / 1000; // 衰变时间 } double Ta = phd.getAcq().getAcquisition_real_time(); // 能谱获取实时间 double Tl = phd.getAcq().getAcquisition_live_time(); // 能谱获取活时间 double Svol = phd.getCollect().getAir_volume(); // 样品采样体积 double DCF1, DCF2, DCF3; - if ( Ts == 0 ) DCF1 = 1; - else DCF1 = lambda * Ts / (1-Math.exp(-lambda*Ts)); - if ( Td == 0 ) DCF2 = 1; - else DCF2 = Math.exp(lambda*Td); - if ( Ta == 0 ) DCF3 = 1; - else DCF3 = lambda * Ta / (1-Math.exp(-lambda*Ta)); + if (Ts == 0) DCF1 = 1; + else DCF1 = lambda * Ts / (1 - Math.exp(-lambda * Ts)); + if (Td == 0) DCF2 = 1; + else DCF2 = Math.exp(lambda * Td); + if (Ta == 0) DCF3 = 1; + else DCF3 = lambda * Ta / (1 - Math.exp(-lambda * Ta)); - double DCF_act = Math.exp(lambda * (acqStart.getTime()/1000 - phd.getUsedSetting().getRefTime_act().getTime()/1000)); - double DCF_conc = Math.exp(lambda * (collectStart.getTime()/1000 - phd.getUsedSetting().getRefTime_conc().getTime()/1000)); + double DCF_act = Math.exp(lambda * (acqStart.getTime() / 1000 - phd.getUsedSetting().getRefTime_act().getTime() / 1000)); + double DCF_conc = Math.exp(lambda * (collectStart.getTime() / 1000 - phd.getUsedSetting().getRefTime_conc().getTime() / 1000)); PeakInfo peak = phd.getVPeak().get(mainPeakIdx); double netKeyPeakArea = peak.area; @@ -1842,21 +1971,21 @@ public class GammaFileUtil extends AbstractLogOrReport { double detectorEfficiency = peak.efficiency; double detectorEfficiencyError = 0.01 * peak.efficiency; double fwhmc = peak.fwhmc; - int index = (int)(peak.peakCentroid + 0.5) - 1; + int index = (int) (peak.peakCentroid + 0.5) - 1; double lcc = phd.getVLc().get(index); double baseline = phd.getVBase().get(index); double activity, mda; - if ( keyLineYield == 0 ) { + if (keyLineYield == 0) { activity = 0; mda = 0; } else { - activity = ( netKeyPeakArea * CCF * DCF3*DCF_act ) / ( keyLineYield * detectorEfficiency * Tl ) ;//Bq,参考时间为referenceTimeActivity - mda = (2 * fwhmc * (lcc - baseline) / 0.8591 ) * CCF * DCF3*DCF_act / ( keyLineYield * detectorEfficiency * Tl ) ;//Bq,参考时间为referenceTimeActivity + activity = (netKeyPeakArea * CCF * DCF3 * DCF_act) / (keyLineYield * detectorEfficiency * Tl);//Bq,参考时间为referenceTimeActivity + mda = (2 * fwhmc * (lcc - baseline) / 0.8591) * CCF * DCF3 * DCF_act / (keyLineYield * detectorEfficiency * Tl);//Bq,参考时间为referenceTimeActivity } - double concentration = ( netKeyPeakArea * CCF*DCF1*DCF2*DCF3*DCF_conc ) / ( keyLineYield * detectorEfficiency * Tl ) *1e6/ Svol;//mBq/m3,参考时间为referenceTimeConc - double mdc = (2 * fwhmc * (lcc - baseline) / 0.8591 ) * CCF*DCF1*DCF2*DCF3*DCF_conc / ( keyLineYield * detectorEfficiency * Tl ) *1e6 / Svol; - double activityErr = Math.sqrt( Math.pow(linePeakAreaErr/netKeyPeakArea, 2) + Math.pow(detectorEfficiencyError/detectorEfficiency, 2) ) * activity; + double concentration = (netKeyPeakArea * CCF * DCF1 * DCF2 * DCF3 * DCF_conc) / (keyLineYield * detectorEfficiency * Tl) * 1e6 / Svol;//mBq/m3,参考时间为referenceTimeConc + double mdc = (2 * fwhmc * (lcc - baseline) / 0.8591) * CCF * DCF1 * DCF2 * DCF3 * DCF_conc / (keyLineYield * detectorEfficiency * Tl) * 1e6 / Svol; + double activityErr = Math.sqrt(Math.pow(linePeakAreaErr / netKeyPeakArea, 2) + Math.pow(detectorEfficiencyError / detectorEfficiency, 2)) * activity; nucActMda.setActivity(activity); nucActMda.setAct_err(activityErr); @@ -1872,22 +2001,22 @@ public class GammaFileUtil extends AbstractLogOrReport { } } - public ChartData Channel_BaseLine(PHDFile phd, String color) { + public ChartData Channel_BaseLine(PHDFile phd, String color) { long m_nCount = phd.getSpec().getNum_g_channel(); ChartData cData = new ChartData(); - int start =0; + int start = 0; long end = -1; - if(m_nCount > 1 && phd.getVBase().size() == m_nCount) { - if(start < 1){ + if (m_nCount > 1 && phd.getVBase().size() == m_nCount) { + if (start < 1) { start = 1; } - if(end > m_nCount || end < 1){ + if (end > m_nCount || end < 1) { end = m_nCount; } - for(int i=start-1; i pointlist = new LinkedList<>(); - int start =0; + int start = 0; long end = -1; int peakNum = vecPeak.size(); - if(peakNum < 1 || phd.getVBase().size() != m_nCount){ + if (peakNum < 1 || phd.getVBase().size() != m_nCount) { return pointlist; } - if(start < 1){ + if (start < 1) { start = 1; } - if(end > m_nCount || end < 1){ + if (end > m_nCount || end < 1) { end = m_nCount; } // 找出在所给范围的第一道拟合峰和最后一道拟合峰的索引下标 int index = 0; int startPeak = -1; - int endPeak = peakNum-1; - while(index < peakNum && start > vecPeak.get(index).right){ + int endPeak = peakNum - 1; + while (index < peakNum && start > vecPeak.get(index).right) { index++; } - if(index < peakNum) { + if (index < peakNum) { startPeak = index; - while(index < peakNum && vecPeak.get(index).left < end){ + while (index < peakNum && vecPeak.get(index).left < end) { index++; } - endPeak = index-1; + endPeak = index - 1; } - if(startPeak < 0 || startPeak > endPeak){ + if (startPeak < 0 || startPeak > endPeak) { return pointlist; } List regPeak = new LinkedList<>(); int channel = 1; - for(int j=start-1; j= peak.left && channel <= peak.right) { - if(CollectionUtils.isEmpty(regPeak)) { + if (channel >= peak.left && channel <= peak.right) { + if (CollectionUtils.isEmpty(regPeak)) { List regChan = new LinkedList<>(); - for(double d=peak.left; d<=peak.right; d+=1.0){ + for (double d = peak.left; d <= peak.right; d += 1.0) { regChan.add(d); } List vBase = phd.getVBase(); - List t_base = vBase.subList(peak.left-1, peak.right); + List t_base = vBase.subList(peak.left - 1, peak.right); regPeak = CalValuesHandler.interp1(peak, t_base, regChan); } // 差值 = 原谱值 - 峰面积 SeriseData seriseData = new SeriseData(); seriseData.setX(channel); - seriseData.setY(m_vCount.get(j) - regPeak.get(channel-peak.left)); + seriseData.setY(m_vCount.get(j) - regPeak.get(channel - peak.left)); pointlist.add(seriseData); - } else if(m_vCount.get(j) > 0 && phd.getVBase().get(j) > 0) { + } else if (m_vCount.get(j) > 0 && phd.getVBase().get(j) > 0) { SeriseData seriseData = new SeriseData(); seriseData.setX(channel); seriseData.setY(m_vCount.get(j) - phd.getVBase().get(j)); pointlist.add(seriseData); - } else{ + } else { SeriseData seriseData = new SeriseData(); seriseData.setX(channel); seriseData.setY(0); pointlist.add(seriseData); } - if(vecPeak.get(startPeak).right < channel) { + if (vecPeak.get(startPeak).right < channel) { ++startPeak; regPeak.clear(); } - if(startPeak > endPeak){ + if (startPeak > endPeak) { break; } } - for(int j=channel; j 0 && phd.getVBase().get(j) > 0) { + for (int j = channel; j < end; j++) { + if (m_vCount.get(j) > 0 && phd.getVBase().get(j) > 0) { SeriseData seriseData = new SeriseData(); - seriseData.setX(j+1); + seriseData.setX(j + 1); seriseData.setY(m_vCount.get(j) - phd.getVBase().get(j)); pointlist.add(seriseData); } else { SeriseData seriseData = new SeriseData(); - seriseData.setX(j+1); + seriseData.setX(j + 1); seriseData.setY(0); pointlist.add(seriseData); } @@ -2007,29 +2136,29 @@ public class GammaFileUtil extends AbstractLogOrReport { public void ReadData(List m_vEnergy, List m_vNuclide) { try { - String filePath = parameterProperties.getFilePath() +File.separator+"Energy_Nuclide.txt"; + String filePath = parameterProperties.getFilePath() + File.separator + "Energy_Nuclide.txt"; File file = new File(filePath); List readLines = FileUtils.readLines(file, "UTF-8"); - for (int i=0; i= 2 && m_curParam.getP().get(2) > 0) { + String equation = ""; + int p_size = m_curParam.getP().size() - 1; + if (p_size >= 2 && m_curParam.getP().get(2) > 0) { // Polynomial: y=a0+a1*x+a2*x^2+a3*x^3 - equation +="Energy = "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1)))+" + C * "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))); - for(int i=3; i<=p_size; i++) { - equation += " + C" + (i-1) +" * "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i)))+""; + equation += "Energy = " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1))) + " + C * " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))); + for (int i = 3; i <= p_size; i++) { + equation += " + C" + (i - 1) + " * " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i))) + ""; } - } else if(p_size == 1) { - equation = "Energy = "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1)))+" * C"; + } else if (p_size == 1) { + equation = "Energy = " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1))) + " * C"; } return equation; } public void UpdateChartEnergy(List m_vCurEnergy, ParameterInfo m_curParam, List m_vCurCentroid, PHDFile phd, Double width, Map map) { int num = m_vCurEnergy.size(); - if(num < 1){ + if (num < 1) { return; } List datalist = new LinkedList<>(); - if(CollectionUtils.isNotEmpty(m_curParam.getP())) { + if (CollectionUtils.isNotEmpty(m_curParam.getP())) { // 拟合曲线 ChartData lData = new ChartData(); lData.setColor("rgb(255, 255, 0)"); @@ -2068,22 +2197,22 @@ public class GammaFileUtil extends AbstractLogOrReport { double MaxChan = Double.valueOf(phd.getSpec().getNum_g_channel()); double d = 1; double dStep = MaxChan / width * 2; - while(d < MaxChan) { + while (d < MaxChan) { vChan.add(d); - d+= dStep; + d += dStep; } vChan.add(MaxChan); List vFit = CalValuesHandler.calFcnEval(vChan, m_curParam.getP()).counts; - for(int i=0; i 0){ + for (int i = 0; i < vChan.size(); i++) { + if (vFit.get(i) > 0) { SeriseData seriseData = new SeriseData(); seriseData.setX(vChan.get(i)); seriseData.setY(vFit.get(i)); lData.getPointlist().add(seriseData); } } - if(lData.getPointlist().size() > 1){ + if (lData.getPointlist().size() > 1) { datalist.add(lData); } } @@ -2092,7 +2221,7 @@ public class GammaFileUtil extends AbstractLogOrReport { ChartData pData = new ChartData(); pData.setColor("red"); pData.setType("Scatter"); - for(int i=0; i= 2 && m_curParam.getP().get(1) > 0 && m_curParam.getP().get(2) > 0) { + int p_size = m_curParam.getP().size() - 1; + if (p_size >= 2 && m_curParam.getP().get(1) > 0 && m_curParam.getP().get(2) > 0) { // Square root of polynomial: y = sqrt(a0+a1*x+a2*x^2+a3*x^3 ) - equation += "FWHM = ("+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1)))+" + E * "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))); - for(int i=3; i<=p_size; i++) { - equation += " + E"+(i-1)+" * "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i))); + equation += "FWHM = (" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1))) + " + E * " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))); + for (int i = 3; i <= p_size; i++) { + equation += " + E" + (i - 1) + " * " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i))); } - equation += ")"+1+"/"+2+""; + equation += ")" + 1 + "/" + 2 + ""; } return equation; } public void UpdateChartResolution(List m_vCurEnergy, ParameterInfo m_curParam, List m_vCurReso, PHDFile phd, Double width, Map map) { int num = m_vCurEnergy.size(); - if(num < 1) return; + if (num < 1) return; List datalist = new LinkedList<>(); - if(CollectionUtils.isNotEmpty(m_curParam.getP())) { + if (CollectionUtils.isNotEmpty(m_curParam.getP())) { // 拟合曲线 ChartData lData = new ChartData(); lData.setColor("rgb(255, 255, 0)"); @@ -2135,23 +2264,23 @@ public class GammaFileUtil extends AbstractLogOrReport { double d = vEner.get(0), maxE = vEner.get(1); double dStep = maxE / width * 2; - vEner.remove(vEner.size()-1); - while(d < maxE) { + vEner.remove(vEner.size() - 1); + while (d < maxE) { vEner.add(d); d += dStep; } vEner.add(maxE); List vFit = CalValuesHandler.calFcnEval(vEner, m_curParam.getP()).counts; - for(int i=0; i 0){ + for (int i = 0; i < vEner.size(); i++) { + if (vFit.get(i) > 0) { SeriseData seriseData = new SeriseData(); seriseData.setX(vEner.get(i)); seriseData.setY(vFit.get(i)); lData.getPointlist().add(seriseData); } } - if(lData.getPointlist().size() > 1){ + if (lData.getPointlist().size() > 1) { datalist.add(lData); } } @@ -2160,7 +2289,7 @@ public class GammaFileUtil extends AbstractLogOrReport { ChartData pData = new ChartData(); pData.setColor("red"); pData.setType("Scatter"); - for(int i=0; i m_vCurEnergy, ParameterInfo m_curParam, Integer curRow, Integer funId) { String equation = ""; - if(m_curParam.getP().size() > 2) { - int p_size = m_curParam.getP().size()-1; + if (m_curParam.getP().size() > 2) { + int p_size = m_curParam.getP().size() - 1; int e_size = m_vCurEnergy.size(); if (Objects.isNull(funId)) { funId = m_curParam.getP().get(0).intValue(); } - switch(funId) { + switch (funId) { case 1: // Interpolation: y=yi+(y(i+1)-yi)*(x-xi)/(x(i+1)-xi) for xi<=x= 4) { + if (p_size == 2 * e_size && p_size >= 4) { int i = curRow; - if(i < 0 || i >= e_size) break; + if (i < 0 || i >= e_size) break; double y1, y0, x1, x0; - if(i < e_size - 1) - { - y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2+3)))); - y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2+1)))); - x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2+2)))); - x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2)))); + if (i < e_size - 1) { + y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i * 2 + 3)))); + y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i * 2 + 1)))); + x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i * 2 + 2)))); + x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i * 2)))); } else { - y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2+1)))); - y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2-1)))); - x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2)))); - x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2-2)))); + y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i * 2 + 1)))); + y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i * 2 - 1)))); + x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i * 2)))); + x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i * 2 - 2)))); } - equation += "Efficiency = "+y0+" + ("+y1+"-"+y0+") * (E - "+x0+") / ("+x1+" - "+x0+")"; + equation += "Efficiency = " + y0 + " + (" + y1 + "-" + y0 + ") * (E - " + x0 + ") / (" + x1 + " - " + x0 + ")"; } break; case 5: // HT Efficiency: y = A*exp(-(E1/x)^k)*(1-exp(-(E2/x)^n)) - if(p_size == 5) { - for(int i=1; i<=p_size; i++) { - if(m_curParam.getP().get(i) <= 0) break; + if (p_size == 5) { + for (int i = 1; i <= p_size; i++) { + if (m_curParam.getP().get(i) <= 0) break; } - equation += "Efficiency = "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1)))+" * exp(-("+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2)))+" / E)"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(3)))+") * "+ - "(1-exp(-("+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4)))+" / E)"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(5)))+"))"; + equation += "Efficiency = " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1))) + " * exp(-(" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))) + " / E)" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(3))) + ") * " + + "(1-exp(-(" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4))) + " / E)" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(5))) + "))"; } break; case 6: // Polynomial in log(y) against log(x): log(y) = a0 + a1*log(x) +a2*log(x)^2+ a3*log(x)^3 - if(p_size >= 2) { - equation += "log(Efficiency) = "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1)))+" + "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2)))+" * log(E)"; - for(int i=3; i<=p_size; i++) { - equation += " + "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i)))+" * log(E)"+(i-1)+""; + if (p_size >= 2) { + equation += "log(Efficiency) = " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1))) + " + " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))) + " * log(E)"; + for (int i = 3; i <= p_size; i++) { + equation += " + " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i))) + " * log(E)" + (i - 1) + ""; } } break; case 8: // Polynomial in log(y) against log(1/x): log(y) = a0 + a1*log(c/x) + a2*log(c/x)^2 + a3*log(c/x)^3 + a4*log(c/x)^4 - if(p_size >= 3) { - equation += "log(Efficiency) = "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1)))+" + "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2)))+" * log(C/E)"; - for(int i=3; i<=p_size; i++) { - equation += " + "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i)))+" * log(C/E)"+(i-1)+""; + if (p_size >= 3) { + equation += "log(Efficiency) = " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1))) + " + " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))) + " * log(C/E)"; + for (int i = 3; i <= p_size; i++) { + equation += " + " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i))) + " * log(C/E)" + (i - 1) + ""; } } break; case 93: // HAE Efficiency (1-3): y=S*exp(-(E1/x)^k)*(1- exp(-(2*E3/(x-E3))^n)) - if(p_size == 5) { - equation += "Efficiency = "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1)))+" * exp(-("+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2)))+" / E)"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(3)))+") * "+ - "(1 - exp(-(2 * "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4)))+" / (E - "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4)))+"))"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(5)))+"))"; + if (p_size == 5) { + equation += "Efficiency = " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1))) + " * exp(-(" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))) + " / E)" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(3))) + ") * " + + "(1 - exp(-(2 * " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4))) + " / (E - " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4))) + "))" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(5))) + "))"; } break; case 94: // HAE Efficiency (1-2): y=S*exp(-(E1/x)^k)*(1- exp(-b*(1/(x-E2))^m)) - if(p_size == 6) { - equation += "Efficiency = "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1)))+" * exp(-("+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2)))+" / E)"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(3)))+") * "+ - "(1 - exp(-"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4)))+" * (1 / (E - "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(5)))+"))"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(6)))+"))"; + if (p_size == 6) { + equation += "Efficiency = " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1))) + " * exp(-(" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))) + " / E)" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(3))) + ") * " + + "(1 - exp(-" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4))) + " * (1 / (E - " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(5))) + "))" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(6))) + "))"; } break; case 95: // HAE Efficiency (1-2-3): y = S * exp(-(E1/x)^k) * (1- exp(-b*(1/(x-E2))^m)) *(1 - exp(-(2*E3/(E-E3))^n)) - if(p_size == 8) { - equation += "Efficiency = "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1)))+" * exp(-("+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2)))+" / E)"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(3)))+") * "+ - "(1 - exp(-"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4)))+" * (1 / (E - "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(5)))+"))"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(6)))+")) * "+ - "(1 - exp(-(2 * "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(7)))+" / (E - "+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(7)))+"))"+NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(8)))+"))"; + if (p_size == 8) { + equation += "Efficiency = " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(1))) + " * exp(-(" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(2))) + " / E)" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(3))) + ") * " + + "(1 - exp(-" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(4))) + " * (1 / (E - " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(5))) + "))" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(6))) + ")) * " + + "(1 - exp(-(2 * " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(7))) + " / (E - " + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(7))) + "))" + NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(8))) + "))"; } break; } @@ -2251,10 +2379,10 @@ public class GammaFileUtil extends AbstractLogOrReport { public void UpdateChartEfficiency(List m_vCurEnergy, ParameterInfo m_curParam, List m_vCurEffi, PHDFile phd, Double width, Map map) { int num = m_vCurEnergy.size(); - if(num < 1) return; + if (num < 1) return; List datalist = new LinkedList<>(); - if(CollectionUtils.isNotEmpty(m_curParam.getP())) { + if (CollectionUtils.isNotEmpty(m_curParam.getP())) { // 拟合曲线 ChartData lData = new ChartData(); lData.setColor("rgb(255, 255, 0)"); @@ -2269,23 +2397,23 @@ public class GammaFileUtil extends AbstractLogOrReport { double maxE = vEner.get(1); double dStep = maxE / width * 2; - vEner.remove(vEner.size()-1); - while(d < maxE) { + vEner.remove(vEner.size() - 1); + while (d < maxE) { vEner.add(d); d += dStep; } vEner.add(maxE); List vFit = CalValuesHandler.calFcnEval(vEner, m_curParam.getP()).counts; - for(int i=0; i 0){ + for (int i = 0; i < vEner.size(); i++) { + if (vFit.get(i) > 0) { SeriseData seriseData = new SeriseData(); seriseData.setX(vEner.get(i)); seriseData.setY(vFit.get(i)); lData.getPointlist().add(seriseData); } } - if(lData.getPointlist().size() > 1){ + if (lData.getPointlist().size() > 1) { datalist.add(lData); } } @@ -2294,7 +2422,7 @@ public class GammaFileUtil extends AbstractLogOrReport { ChartData pData = new ChartData(); pData.setColor("red"); pData.setType("Scatter"); - for(int i=0; i temp = new HashMap<>(); try { - bRet = GetMiddleData(phd, userName, temp,middleData, MiddleDataType.InterAction.getType(), flag); - middleData.analyses_type ="Interactive"; + bRet = GetMiddleData(phd, userName, temp, middleData, MiddleDataType.InterAction.getType(), flag); + middleData.analyses_type = "Interactive"; } catch (ParseException e) { throw new RuntimeException(e); } return bRet; } + public boolean GetInterMiddlData(List phds, String userName, List middleDatas, String flag) { boolean bRet = true; try { @@ -2338,8 +2467,8 @@ public class GammaFileUtil extends AbstractLogOrReport { Map temp = new HashMap<>(); PHDFile phd = phds.get(i); GStoreMiddleProcessData middleData = middleDatas.get(i); - bRet = GetMiddleData(phd, userName, temp,middleData, MiddleDataType.InterAction.getType(), flag); - middleData.analyses_type ="Interactive"; + bRet = GetMiddleData(phd, userName, temp, middleData, MiddleDataType.InterAction.getType(), flag); + middleData.analyses_type = "Interactive"; } } catch (ParseException e) { throw new RuntimeException(e); @@ -2372,7 +2501,7 @@ public class GammaFileUtil extends AbstractLogOrReport { strBuffer.append(System.lineSeparator()); String calibration = "Channel : %-12s Energy : %s keV Error : %-10s"; //日志文本内容第一部分数据 - for (int i=0;i0) { + if (middleData.calibration_pairs_E_idCalPoint.size() > 0) { String title = String.format("Energy Calibration [%s ]", middleData.calibration_pairs_E_Input); strBuffer.append(title); strBuffer.append(System.lineSeparator()); @@ -2466,7 +2595,7 @@ public class GammaFileUtil extends AbstractLogOrReport { strBuffer.append(System.lineSeparator()); } //文本日志内容第七部分数据 - if(middleData.calibration_pairs_R_idCalPoint.size()>0) { + if (middleData.calibration_pairs_R_idCalPoint.size() > 0) { String title = String.format("Resolution Calibration [%s ]", middleData.calibration_pairs_R_Input); strBuffer.append(title); strBuffer.append(System.lineSeparator()); @@ -2482,7 +2611,7 @@ public class GammaFileUtil extends AbstractLogOrReport { strBuffer.append(System.lineSeparator()); } //文本日志内容第八部分数据 - if(middleData.calibration_pairs_EF_idCalPoint.size()>0) { + if (middleData.calibration_pairs_EF_idCalPoint.size() > 0) { String title = String.format("Efficiency Calibration [%s ]", middleData.calibration_pairs_EF_Input); strBuffer.append(title); strBuffer.append(System.lineSeparator()); @@ -2498,7 +2627,7 @@ public class GammaFileUtil extends AbstractLogOrReport { strBuffer.append(System.lineSeparator()); } //文本日志内容第九部分数据 - if(middleData.calibration_pairs_T_idCalPoint.size()>0) { + if (middleData.calibration_pairs_T_idCalPoint.size() > 0) { String title = String.format("Tot_efficiency Calibration [%s ]", middleData.calibration_pairs_T_Input); strBuffer.append(title); strBuffer.append(System.lineSeparator()); @@ -2536,7 +2665,7 @@ public class GammaFileUtil extends AbstractLogOrReport { strBuffer.append(System.lineSeparator()); //文本内容第十部分数据 String[] dataTitles10 = new String[]{"ECutAnalysis_Low", "ECutAnalysis_High", "EnergyTolerance", "BaseImprovePSS", "PSS_low", "k_back", "k_alpha", "k_beta", "RiskLevelK", "refTime_act", "refTime_conc"}; - String[] dataContent10 = new String[]{String.valueOf(middleData.setting_specSetup.getECutAnalysis_Low()), middleData.setting_specSetup.getECutAnalysis_High()==-9999?"inf":String.valueOf(middleData.setting_specSetup.getECutAnalysis_High()), + String[] dataContent10 = new String[]{String.valueOf(middleData.setting_specSetup.getECutAnalysis_Low()), middleData.setting_specSetup.getECutAnalysis_High() == -9999 ? "inf" : String.valueOf(middleData.setting_specSetup.getECutAnalysis_High()), String.valueOf(middleData.setting_specSetup.getEnergyTolerance()), String.valueOf(middleData.setting_specSetup.getBaseImprovePSS()), String.valueOf(middleData.setting_specSetup.getPss_low()), String.valueOf(middleData.setting_specSetup.getK_back()), String.valueOf(middleData.setting_specSetup.getK_alpha()), String.valueOf(middleData.setting_specSetup.getK_beta()), String.valueOf(middleData.setting_specSetup.getRiskLevelK()), @@ -2551,12 +2680,12 @@ public class GammaFileUtil extends AbstractLogOrReport { strBuffer.append(System.lineSeparator()); //文本内容第十一部分数据 String[] dataTitle11 = new String[]{"CalibrationPSS_low", "CalibrationPSS_high", "bUpdateCal", "KeepCalPeakSearchPeaks"}; - String[] dataContent11 = new String[]{String.valueOf(middleData.setting_specSetup.getCalibrationPSS_low()), String.valueOf(middleData.setting_specSetup.getCalibrationPSS_high()), (middleData.setting_specSetup.isBUpdateCal()?"1":"0"), (middleData.setting_specSetup.isKeepCalPeakSearchPeaks()?"1":"0")}; + String[] dataContent11 = new String[]{String.valueOf(middleData.setting_specSetup.getCalibrationPSS_low()), String.valueOf(middleData.setting_specSetup.getCalibrationPSS_high()), (middleData.setting_specSetup.isBUpdateCal() ? "1" : "0"), (middleData.setting_specSetup.isKeepCalPeakSearchPeaks() ? "1" : "0")}; strBuffer.append(attributeFormat(dataTitle11, dataContent11)); //获取peak的数据 int peaksUsed = 0; - for(int m=0;m0?StringUtils.join(middleData.peaks_Nuclide_name.get(i), StringPool.SEMICOLON):""; + String nuclide = middleData.peaks_Nuclide_name.get(i).length() > 0 ? StringUtils.join(middleData.peaks_Nuclide_name.get(i), StringPool.SEMICOLON) : ""; strBuffer.append(rowFormat(data14, idPeak, energy, peakCentroid, fwhm, area, areaErr, signif, sensit, nuclide)); //换行 strBuffer.append(System.lineSeparator()); @@ -2594,12 +2723,12 @@ public class GammaFileUtil extends AbstractLogOrReport { } //获取当前正在使用的核素信息 String qsNuclidesName = ""; - for(int m=0;m1) { - qsNuclidesName = qsNuclidesName+middleData.nucl_ided_Nuclidename.get(middleData.nucl_ided_Nuclidename.size()-1); + if (middleData.nucl_ided_Nuclidename.size() > 1) { + qsNuclidesName = qsNuclidesName + middleData.nucl_ided_Nuclidename.get(middleData.nucl_ided_Nuclidename.size() - 1); } //文本内容第十六部分头部信息 String logHead16 = "Nuclide Identified%s"; @@ -2618,7 +2747,7 @@ public class GammaFileUtil extends AbstractLogOrReport { strBuffer.append(System.lineSeparator()); //文本内容第十五部分数据 String data15 = "Nuclide : %-11s Halflife : %-20s Activity : %-14s RelErr : %-12s Conc : %-24s MDC : %-17s"; - for (int i=0;i> reportMap1 = GetReportFixedWidth(cells1, datas1, 30); List title1 = reportMap1.get("title"); List content1 = reportMap1.get("content"); - for (int i=0; i< title1.size(); i++) { + for (int i = 0; i < title1.size(); i++) { String title = title1.get(i); String content = content1.get(i); strBuffer.append(String.format("%s:%-8s%s", title, StringPool.SPACE, content)); @@ -2764,7 +2893,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMap2 = GetReportFixedWidth(cell2, datas2, 30); List title2 = reportMap2.get("title"); List content2 = reportMap2.get("content"); - for (int i=0; i< title2.size(); i++) { + for (int i = 0; i < title2.size(); i++) { String title = title2.get(i); String content = content2.get(i); strBuffer.append(String.format("%s:%-10s%s", title, StringPool.SPACE, content)); @@ -2775,11 +2904,11 @@ public class GammaFileUtil extends AbstractLogOrReport { strBuffer.append(System.lineSeparator()); //获取核素信息 String qsNuclidesName = ""; - for(int m=0;m1) { - qsNuclidesName = qsNuclidesName+middleData.nucl_ided_Nuclidename.get(middleData.nucl_ided_Nuclidename.size()-1); + if (middleData.nucl_ided_Nuclidename.size() > 1) { + qsNuclidesName = qsNuclidesName + middleData.nucl_ided_Nuclidename.get(middleData.nucl_ided_Nuclidename.size() - 1); } strBuffer.append("#ACTIVITY SUMMARY"); //换行 @@ -2793,7 +2922,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMap3 = GetReportFixedWidth(cells3, datas3, 30); List title3 = reportMap3.get("title"); List content3 = reportMap3.get("content"); - for (int i=0; i< title3.size(); i++) { + for (int i = 0; i < title3.size(); i++) { String title = title3.get(i); String content = content3.get(i); strBuffer.append(String.format("%s:%-16s%s", title, StringPool.SPACE, content)); @@ -2820,9 +2949,9 @@ public class GammaFileUtil extends AbstractLogOrReport { String[] nuclideData = new String[]{" Nuclide", "Halflife(s)", "Activity(Bq)", "RelErr%", "MDA(Bq)", "Conc(uBq/m^3)", "MDC"}; strBuffer.append(rowFormat(nuclideTitle, nuclideData)); strBuffer.append(System.lineSeparator()); - for (int i=0; i0) { + if (middleData.calibration_pairs_E_idCalPoint.size() > 0) { strBuffer.append("#Calibration"); //换行 strBuffer.append(System.lineSeparator()); - strBuffer.append(" Energy Calibration ["+middleData.calibration_pairs_E_Input+" ]"); + strBuffer.append(" Energy Calibration [" + middleData.calibration_pairs_E_Input + " ]"); //换行 strBuffer.append(System.lineSeparator()); strBuffer.append(rowFormat("%sFunction:%-27s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_E_functionTypeDef)); @@ -2941,7 +3070,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMapE4 = GetReportFixedWidth(cellsE4, datasE4, 30); List titleE4 = reportMapE4.get("title"); List contentE4 = reportMapE4.get("content"); - for (int i=0; i< titleE4.size(); i++) { + for (int i = 0; i < titleE4.size(); i++) { String title = titleE4.get(i); String content = contentE4.get(i); strBuffer.append(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content)); @@ -2954,7 +3083,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMap4 = GetReportFixedWidth(cells4, datas4, 30); List title4 = reportMap4.get("title"); List content4 = reportMap4.get("content"); - for (int i=0; i< title4.size(); i++) { + for (int i = 0; i < title4.size(); i++) { String title = title4.get(i); String content = content4.get(i); strBuffer.append(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content)); @@ -2974,8 +3103,8 @@ public class GammaFileUtil extends AbstractLogOrReport { //换行 strBuffer.append(System.lineSeparator()); } - if(middleData.calibration_pairs_R_idCalPoint.size()>0) { - strBuffer.append(" Resolution Calibration ["+middleData.calibration_pairs_R_Input+" ]"); + if (middleData.calibration_pairs_R_idCalPoint.size() > 0) { + strBuffer.append(" Resolution Calibration [" + middleData.calibration_pairs_R_Input + " ]"); //换行 strBuffer.append(System.lineSeparator()); strBuffer.append(rowFormat("%sFunction:%-27s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_R_functionTypeDef)); @@ -2987,7 +3116,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMapE5 = GetReportFixedWidth(cellsE5, datasE5, 30); List titleE5 = reportMapE5.get("title"); List contentE5 = reportMapE5.get("content"); - for (int i=0; i< titleE5.size(); i++) { + for (int i = 0; i < titleE5.size(); i++) { String title = titleE5.get(i); String content = contentE5.get(i); strBuffer.append(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content)); @@ -3000,7 +3129,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMap5 = GetReportFixedWidth(cells5, datas5, 30); List title5 = reportMap5.get("title"); List content5 = reportMap5.get("content"); - for (int i=0; i< title5.size(); i++) { + for (int i = 0; i < title5.size(); i++) { String title = title5.get(i); String content = content5.get(i); strBuffer.append(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content)); @@ -3016,8 +3145,8 @@ public class GammaFileUtil extends AbstractLogOrReport { //换行 strBuffer.append(System.lineSeparator()); } - if(middleData.calibration_pairs_EF_idCalPoint.size()>0) { - strBuffer.append(" Efficiency Calibration ["+middleData.calibration_pairs_EF_Input+" ]"); + if (middleData.calibration_pairs_EF_idCalPoint.size() > 0) { + strBuffer.append(" Efficiency Calibration [" + middleData.calibration_pairs_EF_Input + " ]"); //换行 strBuffer.append(System.lineSeparator()); strBuffer.append(rowFormat("%sFunction:%-27s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_EF_functionTypeDef)); @@ -3029,7 +3158,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMapE6 = GetReportFixedWidth(cellsE6, datasE6, 30); List titleE6 = reportMapE6.get("title"); List contentE6 = reportMapE6.get("content"); - for (int i=0; i< titleE6.size(); i++) { + for (int i = 0; i < titleE6.size(); i++) { String title = titleE6.get(i); String content = contentE6.get(i); strBuffer.append(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content)); @@ -3042,7 +3171,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMap6 = GetReportFixedWidth(cells6, datas6, 30); List title6 = reportMap6.get("title"); List content6 = reportMap6.get("content"); - for (int i=0; i< title6.size(); i++) { + for (int i = 0; i < title6.size(); i++) { String title = title6.get(i); String content = content6.get(i); strBuffer.append(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content)); @@ -3058,8 +3187,8 @@ public class GammaFileUtil extends AbstractLogOrReport { //换行 strBuffer.append(System.lineSeparator()); } - if(middleData.calibration_pairs_T_idCalPoint.size()>0) { - strBuffer.append(" Tot_efficiency Calibration ["+middleData.calibration_pairs_T_Input+" ]"); + if (middleData.calibration_pairs_T_idCalPoint.size() > 0) { + strBuffer.append(" Tot_efficiency Calibration [" + middleData.calibration_pairs_T_Input + " ]"); //换行 strBuffer.append(System.lineSeparator()); strBuffer.append(rowFormat("%sFunction:%-27s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_T_functionTypeDef)); @@ -3071,7 +3200,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMapE7 = GetReportFixedWidth(cellsE7, datasE7, 30); List titleE7 = reportMapE7.get("title"); List contentE7 = reportMapE7.get("content"); - for (int i=0; i< titleE7.size(); i++) { + for (int i = 0; i < titleE7.size(); i++) { String title = titleE7.get(i); String content = contentE7.get(i); strBuffer.append(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content)); @@ -3084,7 +3213,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map> reportMap7 = GetReportFixedWidth(cells7, datas7, 30); List title7 = reportMap7.get("title"); List content7 = reportMap7.get("content"); - for (int i=0; i< title7.size(); i++) { + for (int i = 0; i < title7.size(); i++) { String title = title7.get(i); String content = content7.get(i); strBuffer.append(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content)); @@ -3109,14 +3238,14 @@ public class GammaFileUtil extends AbstractLogOrReport { strBuffer.append(rowFormat(qualityTitle, " Name", "Pass/Fail", "Value", "Test")); //换行 strBuffer.append(System.lineSeparator()); - for (int i=0;i DoubleLimit(List data) { List rData = new LinkedList<>(); - for(int pos=0;pos DoubleLimit_G(List _data) { List rdata = new LinkedList<>(); - for(int pos=0;pos<_data.size();pos++) { + for (int pos = 0; pos < _data.size(); pos++) { Double value = _data.get(pos); - if(Objects.isNull(value)) { + if (Objects.isNull(value)) { rdata.add(null); } else { rdata.add(String.format("%.10g", value)); @@ -3435,62 +3564,128 @@ public class GammaFileUtil extends AbstractLogOrReport { public String EquationDescription(int funcId) { String desc = ""; - switch (funcId) - { - case 1: desc = "y=yi+(y(i+1)-yi)*(x-xi)/(x(i+1)-xi) for xi<=x nucline,GStoreMiddleProcessData middleData, String type, String flag) throws ParseException { - boolean bRet=true; + public boolean GetMiddleData(PHDFile fileAnlyse, String userName, Map nucline, GStoreMiddleProcessData middleData, String type, String flag) throws ParseException { + boolean bRet = true; //标准名称规范化 String dataType = fileAnlyse.getMsgInfo().getData_type(); String systemType = fileAnlyse.getHeader().getSystem_type(); String subDirSavePath = ""; - subDirSavePath+=nameStandUtil.GetSysTemSubdir(systemType); - subDirSavePath+=nameStandUtil.GetDateTypeSubdir(dataType); + subDirSavePath += nameStandUtil.GetSysTemSubdir(systemType); + subDirSavePath += nameStandUtil.GetDateTypeSubdir(dataType); Map fileNames = nameStandUtil.NameStandard(fileAnlyse); String lcName = fileNames.get("lc"); String scacName = fileNames.get("scac"); @@ -3499,16 +3694,16 @@ public class GammaFileUtil extends AbstractLogOrReport { String rptName = fileNames.get("rpt"); String saveFileName = fileNames.get("saveFile"); String path = nameStandUtil.SetFileDir(subDirSavePath, saveFileName); - middleData.analyses_analyst=userName; - String qsSaveFile = path+StringPool.SLASH+saveFileName; + middleData.analyses_analyst = userName; + String qsSaveFile = path + StringPool.SLASH + saveFileName; qsSaveFile = qsSaveFile.replace(StringPool.BACK_SLASH, StringPool.SLASH); - String qsLogPath= path+StringPool.SLASH+middleData.analyses_analyst+"_"+logName; + String qsLogPath = path + StringPool.SLASH + middleData.analyses_analyst + "_" + logName; qsLogPath = qsLogPath.replace(StringPool.BACK_SLASH, StringPool.SLASH); - String qsReportPath= ""; - if(type.equals(MiddleDataType.Auto.getType())) { - qsReportPath="Arr"+StringPool.SLASH+path+StringPool.SLASH+middleData.analyses_analyst+"_"+rptName; - } else if (type.equals(MiddleDataType.InterAction.getType()) && flag.equalsIgnoreCase("save")){ - qsReportPath="Rrr"+StringPool.SLASH+path+StringPool.SLASH+middleData.analyses_analyst+"_"+rptName; + String qsReportPath = ""; + if (type.equals(MiddleDataType.Auto.getType())) { + qsReportPath = "Arr" + StringPool.SLASH + path + StringPool.SLASH + middleData.analyses_analyst + "_" + rptName; + } else if (type.equals(MiddleDataType.InterAction.getType()) && flag.equalsIgnoreCase("save")) { + qsReportPath = "Rrr" + StringPool.SLASH + path + StringPool.SLASH + middleData.analyses_analyst + "_" + rptName; } qsReportPath = qsReportPath.replace(StringPool.BACK_SLASH, StringPool.SLASH); @@ -3516,11 +3711,11 @@ public class GammaFileUtil extends AbstractLogOrReport { middleData.analyses_LogPath = qsLogPath; middleData.analyses_ReportPath = qsReportPath; //获取算法数据 - if(type.equals(MiddleDataType.Auto.getType())) { + if (type.equals(MiddleDataType.Auto.getType())) { String anylseBegin; String anylseEnd; anylseBegin = DateUtils.formatDate(new Date(), "yyyy/MM/dd HH:mm:ss"); - bRet = AnalyseSpectrum(fileAnlyse,nucline); + bRet = AnalyseSpectrum(fileAnlyse, nucline); if (bRet) { if (!StrUtil.equals(systemType, SystemType.SELFSTATION.getType())) RunQC(fileAnlyse); @@ -3536,7 +3731,7 @@ public class GammaFileUtil extends AbstractLogOrReport { } else { return bRet; } - } else if (type.equals(MiddleDataType.InterAction.getType()) && flag.equalsIgnoreCase("save")){ //如果是人工交互分析 则先上传phd对应文件信息 + } else if (type.equals(MiddleDataType.InterAction.getType()) && flag.equalsIgnoreCase("save")) { //如果是人工交互分析 则先上传phd对应文件信息 //上传本次文件到ftp人工交互存储路径下 File sampleTmp = null; try { @@ -3552,12 +3747,12 @@ public class GammaFileUtil extends AbstractLogOrReport { } //gards_analyses - String qsBaseLinePath = path+StringPool.SLASH+middleData.analyses_analyst+"_"+baselineName; + String qsBaseLinePath = path + StringPool.SLASH + middleData.analyses_analyst + "_" + baselineName; qsBaseLinePath = qsBaseLinePath.replace(StringPool.BACK_SLASH, StringPool.SLASH); // m_baseLineFileName; - String qsLcPath= path+StringPool.SLASH+middleData.analyses_analyst+"_"+lcName; + String qsLcPath = path + StringPool.SLASH + middleData.analyses_analyst + "_" + lcName; qsLcPath = qsLcPath.replace(StringPool.BACK_SLASH, StringPool.SLASH); - String qsScacPath= path+StringPool.SLASH+middleData.analyses_analyst+"_"+scacName; + String qsScacPath = path + StringPool.SLASH + middleData.analyses_analyst + "_" + scacName; qsScacPath = qsScacPath.replace(StringPool.BACK_SLASH, StringPool.SLASH); @@ -3567,7 +3762,7 @@ public class GammaFileUtil extends AbstractLogOrReport { String qsSaveBaseLine = savePath + StringPool.SLASH + qsBaseLinePath; String qsSaveLc = savePath + StringPool.SLASH + qsLcPath; String qsSaveScac = savePath + StringPool.SLASH + qsScacPath; - if((type.equals(MiddleDataType.Auto.getType())) || (type.equals(MiddleDataType.InterAction.getType()) && flag.equalsIgnoreCase("save")) ) { + if ((type.equals(MiddleDataType.Auto.getType())) || (type.equals(MiddleDataType.InterAction.getType()) && flag.equalsIgnoreCase("save"))) { //判断生成baseline,lc,scac文件的目录是否存在 如果不存在则创建目录 String fileSavePath = rootPath + qsSaveBaseLine.substring(0, qsSaveBaseLine.lastIndexOf(StringPool.SLASH)); File fileSave = new File(fileSavePath); @@ -3580,10 +3775,10 @@ public class GammaFileUtil extends AbstractLogOrReport { } double totalNumber = 0.0; - for(int m=0;m temp = new LinkedList<>(); - for(int pos=0;pos temp = new LinkedList<>(); - for(int pos=0;pos temp = new LinkedList<>(); - for(int pos=0;pos temp = new LinkedList<>(); - for(int pos=0;pos0) { + if (coeffNumber > 0) { funcType = fileAnlyse.getUsedEnerPara().getP().get(0).intValue(); } - for(int m=1;m0) { - coeffEnergy+=String.format("%e", fileAnlyse.getUsedEnerPara().getP().get(coeffNumber-1)); + if (coeffNumber > 0) { + coeffEnergy += String.format("%e", fileAnlyse.getUsedEnerPara().getP().get(coeffNumber - 1)); } uncerNumber = fileAnlyse.getUsedEnerPara().getPerr().size(); - for(int m=0;m0) { - uncerEnergy+=String.format("%e", fileAnlyse.getUsedEnerPara().getPerr().get(uncerNumber-1)); + if (uncerNumber > 0) { + uncerEnergy += String.format("%e", fileAnlyse.getUsedEnerPara().getPerr().get(uncerNumber - 1)); } funcDefEnergy = EquationDescription(funcType); funcTypeDefEnergy = EquationName(funcType); @@ -3743,22 +3937,22 @@ public class GammaFileUtil extends AbstractLogOrReport { String funcDefEffi = ""; String funcTypeDefEffi = ""; coeffNumber = fileAnlyse.getUsedEffiPara().getP().size(); - if(coeffNumber>0) { + if (coeffNumber > 0) { funcType = fileAnlyse.getUsedEffiPara().getP().get(0).intValue(); } - for(int m=1;m0) { - coeffEffi+=String.format("%e", fileAnlyse.getUsedEffiPara().getP().get(coeffNumber-1)); + if (coeffNumber > 0) { + coeffEffi += String.format("%e", fileAnlyse.getUsedEffiPara().getP().get(coeffNumber - 1)); } uncerNumber = fileAnlyse.getUsedEffiPara().getPerr().size(); - for(int m=0;m0) { - uncerEffi+= String.format("%e", fileAnlyse.getUsedEffiPara().getPerr().get(uncerNumber-1)); + if (uncerNumber > 0) { + uncerEffi += String.format("%e", fileAnlyse.getUsedEffiPara().getPerr().get(uncerNumber - 1)); } funcDefEffi = EquationDescription(funcType); funcTypeDefEffi = EquationName(funcType); @@ -3775,22 +3969,22 @@ public class GammaFileUtil extends AbstractLogOrReport { String funcDefReso = ""; String funcTypeDefReso = ""; coeffNumber = fileAnlyse.getUsedResoPara().getP().size(); - if(coeffNumber>0) { + if (coeffNumber > 0) { funcType = fileAnlyse.getUsedResoPara().getP().get(0).intValue(); } - for(int m=1;m0) { - coeffReso+= String.format("%e", fileAnlyse.getUsedResoPara().getP().get(coeffNumber-1)); + if (coeffNumber > 0) { + coeffReso += String.format("%e", fileAnlyse.getUsedResoPara().getP().get(coeffNumber - 1)); } uncerNumber = fileAnlyse.getUsedResoPara().getPerr().size(); - for(int m=0;m0) { - uncerReso+= String.format("%e", fileAnlyse.getUsedResoPara().getPerr().get(uncerNumber-1)); + if (uncerNumber > 0) { + uncerReso += String.format("%e", fileAnlyse.getUsedResoPara().getPerr().get(uncerNumber - 1)); } funcDefReso = EquationDescription(funcType); funcTypeDefReso = EquationName(funcType); @@ -3807,22 +4001,22 @@ public class GammaFileUtil extends AbstractLogOrReport { String funcDefTotE = ""; String funcTypeDefTotE = ""; coeffNumber = fileAnlyse.getUsedTotEPara().getP().size(); - if(coeffNumber>0) { + if (coeffNumber > 0) { funcType = fileAnlyse.getUsedTotEPara().getP().get(0).intValue(); } - for(int m=1;m0) { - coeffTotE+= String.format("%e", fileAnlyse.getUsedTotEPara().getP().get(coeffNumber-1)); + if (coeffNumber > 0) { + coeffTotE += String.format("%e", fileAnlyse.getUsedTotEPara().getP().get(coeffNumber - 1)); } uncerNumber = fileAnlyse.getUsedTotEPara().getPerr().size(); - for(int m=0;m0) { - uncerTotE+= String.format("%e", fileAnlyse.getUsedTotEPara().getPerr().get(uncerNumber-1)); + if (uncerNumber > 0) { + uncerTotE += String.format("%e", fileAnlyse.getUsedTotEPara().getPerr().get(uncerNumber - 1)); } funcDefTotE = EquationDescription(funcType); funcTypeDefTotE = EquationName(funcType); @@ -3836,7 +4030,7 @@ public class GammaFileUtil extends AbstractLogOrReport { //gards_ peaks数据表 - if(fileAnlyse.getVPeak().size() != 0) { + if (fileAnlyse.getVPeak().size() != 0) { List dvctIDPEAK = new LinkedList<>(); List dvctCENTROIDCHANNEL = new LinkedList<>(); List dvctUNCCENTROIDCHANNEL = new LinkedList<>(); @@ -3869,18 +4063,18 @@ public class GammaFileUtil extends AbstractLogOrReport { List dvctLD = new LinkedList<>(); List dvctNuclide_name = new LinkedList<>(); List dvctComments = new LinkedList<>(); - for(int m=0; m 1024){ + String t_comment = fileAnlyse.getVPeak().get(m).comments == null ? "" : fileAnlyse.getVPeak().get(m).comments.replace("\'", "\'\'").trim(); + if (t_comment.length() > 1024) { t_comment = t_comment.substring(0, 1025); } dvctComments.add(t_comment); dvctNuclide_name.add(StringUtils.join(fileAnlyse.getVPeak().get(m).nuclides, ";")); } - middleData.peaks_idPeak =dvctIDPEAK; - middleData.peaks_peakCentroid =DoubleLimit_G(dvctCENTROIDCHANNEL); - middleData.peaks_uncpeakCentroid =DoubleLimit_G(dvctUNCCENTROIDCHANNEL); - middleData.peaks_Energy =DoubleLimit_G(dvctENERGY); - middleData.peaks_uncEnergy =DoubleLimit_G(dvctUNCENERGY); - middleData.peaks_Area =DoubleLimit_G(dvctAREA); - middleData.peaks_areaErr =DoubleLimit_G(dvctUNCAREA); - middleData.peaks_Efficiency =DoubleLimit_G(dvctEFFICIENCY); - middleData.peaks_Uncefficiency =DoubleLimit_G(dvctUNCEFFICIENCY); - middleData.peaks_Fwhm =DoubleLimit_G(dvctFWHM); + middleData.peaks_idPeak = dvctIDPEAK; + middleData.peaks_peakCentroid = DoubleLimit_G(dvctCENTROIDCHANNEL); + middleData.peaks_uncpeakCentroid = DoubleLimit_G(dvctUNCCENTROIDCHANNEL); + middleData.peaks_Energy = DoubleLimit_G(dvctENERGY); + middleData.peaks_uncEnergy = DoubleLimit_G(dvctUNCENERGY); + middleData.peaks_Area = DoubleLimit_G(dvctAREA); + middleData.peaks_areaErr = DoubleLimit_G(dvctUNCAREA); + middleData.peaks_Efficiency = DoubleLimit_G(dvctEFFICIENCY); + middleData.peaks_Uncefficiency = DoubleLimit_G(dvctUNCEFFICIENCY); + middleData.peaks_Fwhm = DoubleLimit_G(dvctFWHM); middleData.peaks_Fwhmc = DoubleLimit_G(dvctFWTM); - middleData.peaks_Significance =DoubleLimit_G(dvctSIGNIFICANCE); - middleData.peaks_Sensitivity =DoubleLimit_G(dvctSENSITIVITY); - middleData.peaks_multiIndex =DoubleLimit_G(dvctMULTIINDEX); - middleData.peaks_ROIstart =DoubleLimit_G(dvctROISTART); - middleData.peaks_ROIend =DoubleLimit_G(dvctROIEND); - middleData.peaks_tail =DoubleLimit_G(dvctTAIL); - middleData.peaks_tailAlpha =DoubleLimit_G(dvctTAILALPHA); - middleData.peaks_upperTail =DoubleLimit_G(dvctUPPERTAIL); - middleData.peaks_upperTailAlpha =DoubleLimit_G(dvctUPPERTAILALPHA); - middleData.peaks_BWWidthChan =DoubleLimit_G(dvctBWWIDTHCHAN); + middleData.peaks_Significance = DoubleLimit_G(dvctSIGNIFICANCE); + middleData.peaks_Sensitivity = DoubleLimit_G(dvctSENSITIVITY); + middleData.peaks_multiIndex = DoubleLimit_G(dvctMULTIINDEX); + middleData.peaks_ROIstart = DoubleLimit_G(dvctROISTART); + middleData.peaks_ROIend = DoubleLimit_G(dvctROIEND); + middleData.peaks_tail = DoubleLimit_G(dvctTAIL); + middleData.peaks_tailAlpha = DoubleLimit_G(dvctTAILALPHA); + middleData.peaks_upperTail = DoubleLimit_G(dvctUPPERTAIL); + middleData.peaks_upperTailAlpha = DoubleLimit_G(dvctUPPERTAILALPHA); + middleData.peaks_BWWidthChan = DoubleLimit_G(dvctBWWIDTHCHAN); middleData.peaks_recoilBetaChan = DoubleLimit_G(dvctRECOILBETACHAN); - middleData.peaks_recoilDeltaChan =DoubleLimit_G(dvctRECOILDELTACHAN); - middleData.peaks_stepRatio =DoubleLimit_G(dvctSTEPRAIO); - middleData.peaks_backgroundArea =DoubleLimit_G(dvctBACKGROUNDAREA); - middleData.peaks_meanBackCount =DoubleLimit_G(dvctMEANBACKCOUNT); - middleData.peaks_Lc =DoubleLimit_G(dvctLC); - middleData.peaks_Ld =DoubleLimit_G(dvctLD); + middleData.peaks_recoilDeltaChan = DoubleLimit_G(dvctRECOILDELTACHAN); + middleData.peaks_stepRatio = DoubleLimit_G(dvctSTEPRAIO); + middleData.peaks_backgroundArea = DoubleLimit_G(dvctBACKGROUNDAREA); + middleData.peaks_meanBackCount = DoubleLimit_G(dvctMEANBACKCOUNT); + middleData.peaks_Lc = DoubleLimit_G(dvctLC); + middleData.peaks_Ld = DoubleLimit_G(dvctLD); middleData.peaks_comments = dvctComments; middleData.peaks_Nuclide_name = dvctNuclide_name; } // gards_ nucl_lines_ided数据表 - for(Map.Entry itor:fileAnlyse.getMapNucActMda().entrySet()) { + for (Map.Entry itor : fileAnlyse.getMapNucActMda().entrySet()) { GStoreMiddleProcessDataNuclLinesIded nucl_lines_ided_data = new GStoreMiddleProcessDataNuclLinesIded(); List svctNUCLIDEFULLNAME = new LinkedList<>(); List dvctIDPEAK = new LinkedList<>(); @@ -3955,19 +4149,19 @@ public class GammaFileUtil extends AbstractLogOrReport { List dvctCSC_MOD_FLAG = new LinkedList<>(); List dvctMDC = new LinkedList<>(); List dvctCONCENTRATION = new LinkedList<>(); - int first=itor.getValue().getFullNames().size(); - int second=itor.getValue().getVPeakIdx().size(); - first = first0?String.format("%e", itor.getValue().getMda()):"0.0"); + dvctMDA.add(itor.getValue().getMda() > 0 ? String.format("%e", itor.getValue().getMda()) : "0.0"); // dvctKEY_FLAG.add(itor.value().vYield.get(m)); dvctCSC_RATIO.add(1.0); dvctCSC_RATIO_ERR.add(0.0); dvctCSC_MOD_FLAG.add(0.0); - if(itor.getValue().getKey_flag() == m) { + if (itor.getValue().getKey_flag() == m) { dvctKEY_FLAG.add(1.0); } else { dvctKEY_FLAG.add(0.0); @@ -3991,26 +4185,26 @@ public class GammaFileUtil extends AbstractLogOrReport { dvctCONCENTRATION.add(String.format("%e", itor.getValue().getConcentration())); } nucl_lines_ided_data.nuclideFullname = svctNUCLIDEFULLNAME; - nucl_lines_ided_data.idPeak =dvctIDPEAK; - nucl_lines_ided_data.Energy =DoubleLimit_G(dvctENERGY); - nucl_lines_ided_data.uncEnergy =DoubleLimit_G(dvctUNCENERGY); - nucl_lines_ided_data.Abundance =DoubleLimit_G(dvctABUNDANCE); - nucl_lines_ided_data.uncAbundance =DoubleLimit_G(dvctUNCABUNDANCE); + nucl_lines_ided_data.idPeak = dvctIDPEAK; + nucl_lines_ided_data.Energy = DoubleLimit_G(dvctENERGY); + nucl_lines_ided_data.uncEnergy = DoubleLimit_G(dvctUNCENERGY); + nucl_lines_ided_data.Abundance = DoubleLimit_G(dvctABUNDANCE); + nucl_lines_ided_data.uncAbundance = DoubleLimit_G(dvctUNCABUNDANCE); nucl_lines_ided_data.Activity = dvctACTIVITY; - nucl_lines_ided_data.uncActivity =DoubleLimit_G(dvctUNCACTIVITY); - nucl_lines_ided_data.Effic =DoubleLimit_G(dvctEFFIC); - nucl_lines_ided_data.uncEffic =DoubleLimit_G(dvctUNEFFIC); + nucl_lines_ided_data.uncActivity = DoubleLimit_G(dvctUNCACTIVITY); + nucl_lines_ided_data.Effic = DoubleLimit_G(dvctEFFIC); + nucl_lines_ided_data.uncEffic = DoubleLimit_G(dvctUNEFFIC); nucl_lines_ided_data.Mda = dvctMDA; - nucl_lines_ided_data.key_flag =DoubleLimit_G(dvctKEY_FLAG); - nucl_lines_ided_data.csc_ratio =DoubleLimit_G(dvctCSC_RATIO); - nucl_lines_ided_data.csc_ratio_err =DoubleLimit_G(dvctCSC_RATIO_ERR); - nucl_lines_ided_data.csc_mod_flag =DoubleLimit_G(dvctCSC_MOD_FLAG); + nucl_lines_ided_data.key_flag = DoubleLimit_G(dvctKEY_FLAG); + nucl_lines_ided_data.csc_ratio = DoubleLimit_G(dvctCSC_RATIO); + nucl_lines_ided_data.csc_ratio_err = DoubleLimit_G(dvctCSC_RATIO_ERR); + nucl_lines_ided_data.csc_mod_flag = DoubleLimit_G(dvctCSC_MOD_FLAG); nucl_lines_ided_data.MDC = dvctMDC; nucl_lines_ided_data.Concentration = dvctCONCENTRATION; middleData.getNucl_lines_ided_data().put(itor.getKey(), nucl_lines_ided_data); } // gards_ nucl_ided数据表 - if( fileAnlyse.getMapNucActMda().size() != 0) { + if (fileAnlyse.getMapNucActMda().size() != 0) { List svctNUCLIDEFULLNAME = new LinkedList<>(); List svctTYPE = new LinkedList<>(); List dvctHALFLIFE = new LinkedList<>(); @@ -4028,79 +4222,79 @@ public class GammaFileUtil extends AbstractLogOrReport { List dvctCONCENTRATION = new LinkedList<>(); List dvctKey_Energy = new LinkedList<>(); List dvctKey_Yield = new LinkedList<>(); - for(Map.Entry itor_v: fileAnlyse.getMapNucActMda().entrySet()) { - String nuclideName = itor_v.getKey(); + for (Map.Entry itor_v : fileAnlyse.getMapNucActMda().entrySet()) { + String nuclideName = itor_v.getKey(); svctNUCLIDEFULLNAME.add(nuclideName); dvctHALFLIFE.add(itor_v.getValue().getHalflife()); dvctACTIV_KEY.add(itor_v.getValue().getActivity()); dvctACTIV_KEY_ERR.add(itor_v.getValue().getAct_err()); dvctMDA.add(String.format("%e", itor_v.getValue().getMda())); - dvctMDC.add(Objects.isNull(itor_v.getValue().getMdc())?null:(itor_v.getValue().getMdc().isInfinite()?"inf":(itor_v.getValue().getMdc()>0?String.format("%e", itor_v.getValue().getMdc()):"0.0"))); - dvctCONCENTRATION.add(Objects.isNull(itor_v.getValue().getConcentration())?null:itor_v.getValue().getConcentration().isInfinite()?"inf":String.format("%e", itor_v.getValue().getConcentration())); + dvctMDC.add(Objects.isNull(itor_v.getValue().getMdc()) ? null : (itor_v.getValue().getMdc().isInfinite() ? "inf" : (itor_v.getValue().getMdc() > 0 ? String.format("%e", itor_v.getValue().getMdc()) : "0.0"))); + dvctCONCENTRATION.add(Objects.isNull(itor_v.getValue().getConcentration()) ? null : itor_v.getValue().getConcentration().isInfinite() ? "inf" : String.format("%e", itor_v.getValue().getConcentration())); dvctCSC_RATIO.add(1.0); dvctCSC_RATIO_ERR.add(0.0); - if(itor_v.getValue().getCalculateIdx() >= 0 && itor_v.getValue().getCalculateIdx()= 0 && itor_v.getValue().getCalculateIdx() < itor_v.getValue().getVEnergy().size()) { dvctKey_Energy.add(itor_v.getValue().getVEnergy().get(itor_v.getValue().getCalculateIdx())); } - if(itor_v.getValue().getCalculateIdx() >= 0 && itor_v.getValue().getCalculateIdx()= 0 && itor_v.getValue().getCalculateIdx() < itor_v.getValue().getVYield().size()) { dvctKey_Yield.add(itor_v.getValue().getVYield().get(itor_v.getValue().getCalculateIdx())); } } middleData.nucl_ided_Nuclidename = svctNUCLIDEFULLNAME; - middleData.nucl_ided_Type= svctTYPE; - middleData.nucl_ided_Halflife =DoubleLimit_G(dvctHALFLIFE); + middleData.nucl_ided_Type = svctTYPE; + middleData.nucl_ided_Halflife = DoubleLimit_G(dvctHALFLIFE); middleData.nucl_ided_ave_activ = dvctAVE_ACTIV; - middleData.nucl_ided_ave_activ_err =DoubleLimit_G(dvctAVE_ACTIV_ERR); - middleData.nucl_ided_activ_key =DoubleLimit_G(dvctACTIV_KEY); - middleData.nucl_ided_activ_key_err =DoubleLimit_G(dvctACTIV_KEY_ERR); + middleData.nucl_ided_ave_activ_err = DoubleLimit_G(dvctAVE_ACTIV_ERR); + middleData.nucl_ided_activ_key = DoubleLimit_G(dvctACTIV_KEY); + middleData.nucl_ided_activ_key_err = DoubleLimit_G(dvctACTIV_KEY_ERR); middleData.nucl_ided_mda = dvctMDA; - middleData.nucl_ided_mda_err =DoubleLimit_G(dvctMDA_ERR); - middleData.nucl_ided_nid_flag =DoubleLimit_G(dvctNID_FLAG); - middleData.nucl_ided_csc_ratio =DoubleLimit_G(dvctCSC_RATIO); - middleData.nucl_ided_csc_ratio_err =DoubleLimit_G(dvctCSC_RATIO_ERR); - middleData.nucl_ided_csc_mod_flag =DoubleLimit_G(dvctCSC_MOD_FLAG); + middleData.nucl_ided_mda_err = DoubleLimit_G(dvctMDA_ERR); + middleData.nucl_ided_nid_flag = DoubleLimit_G(dvctNID_FLAG); + middleData.nucl_ided_csc_ratio = DoubleLimit_G(dvctCSC_RATIO); + middleData.nucl_ided_csc_ratio_err = DoubleLimit_G(dvctCSC_RATIO_ERR); + middleData.nucl_ided_csc_mod_flag = DoubleLimit_G(dvctCSC_MOD_FLAG); middleData.nucl_ided_MDC = dvctMDC; middleData.nucl_ided_Concentration = dvctCONCENTRATION; middleData.nucl_ided_Key_Energy = DoubleLimit_G(dvctKey_Energy); middleData.nucl_ided_Key_Yield = DoubleLimit_G(dvctKey_Yield); } // GARDS_QC_CHECK数据表 - if( fileAnlyse.getQcItems().size() != 0) { + if (fileAnlyse.getQcItems().size() != 0) { List qvctQC_NAME = new LinkedList<>(); List dvctQC_VALUE = new LinkedList<>(); List qvctQC_STANDARD = new LinkedList<>(); List dvctQC_RESULT = new LinkedList<>(); - for(Map.Entry itor_q:fileAnlyse.getQcItems().entrySet()) { - String nuclideName = itor_q.getKey(); + for (Map.Entry itor_q : fileAnlyse.getQcItems().entrySet()) { + String nuclideName = itor_q.getKey(); qvctQC_NAME.add(nuclideName); - dvctQC_VALUE.add(Double.isFinite(itor_q.getValue().getValue())?itor_q.getValue().getValue():null); + dvctQC_VALUE.add(Double.isFinite(itor_q.getValue().getValue()) ? itor_q.getValue().getValue() : null); qvctQC_STANDARD.add(itor_q.getValue().getStandard()); - dvctQC_RESULT.add(itor_q.getValue().isBPass()?1.0:0.0); + dvctQC_RESULT.add(itor_q.getValue().isBPass() ? 1.0 : 0.0); } - middleData.QC_CHECK_QC_NAME=qvctQC_NAME; - middleData.QC_CHECK_QC_RESULT=DoubleLimit_G(dvctQC_RESULT); - middleData.QC_CHECK_QC_STANDARD=qvctQC_STANDARD; - middleData.QC_CHECK_QC_VALUE=DoubleLimit_G(dvctQC_VALUE); + middleData.QC_CHECK_QC_NAME = qvctQC_NAME; + middleData.QC_CHECK_QC_RESULT = DoubleLimit_G(dvctQC_RESULT); + middleData.QC_CHECK_QC_STANDARD = qvctQC_STANDARD; + middleData.QC_CHECK_QC_VALUE = DoubleLimit_G(dvctQC_VALUE); } //sample info middleData.sample_collection_start = ""; if (StringUtils.isNotBlank(fileAnlyse.getCollect().getCollection_start_date()) && StringUtils.isNotBlank(fileAnlyse.getCollect().getCollection_start_time())) { - middleData.sample_collection_start = fileAnlyse.getCollect().getCollection_start_date()+StringPool.SPACE+fileAnlyse.getCollect().getCollection_start_time(); + middleData.sample_collection_start = fileAnlyse.getCollect().getCollection_start_date() + StringPool.SPACE + fileAnlyse.getCollect().getCollection_start_time(); } middleData.sample_collection_stop = ""; if (StringUtils.isNotBlank(fileAnlyse.getCollect().getCollection_stop_date()) && StringUtils.isNotBlank(fileAnlyse.getCollect().getCollection_stop_time())) { - middleData.sample_collection_stop = fileAnlyse.getCollect().getCollection_stop_date()+StringPool.SPACE+fileAnlyse.getCollect().getCollection_stop_time(); + middleData.sample_collection_stop = fileAnlyse.getCollect().getCollection_stop_date() + StringPool.SPACE + fileAnlyse.getCollect().getCollection_stop_time(); } - if(Objects.nonNull(fileAnlyse.getQcItems().get("col_time"))) { + if (Objects.nonNull(fileAnlyse.getQcItems().get("col_time"))) { middleData.sample_time = String.format("%.4f", fileAnlyse.getQcItems().get("col_time").getValue()); - if(fileAnlyse.getQcItems().get("col_time").getValue()!=0) { - middleData.sample_Avg_Flow_Rate = String.format("%.5f", fileAnlyse.getCollect().getAir_volume()/fileAnlyse.getQcItems().get("col_time").getValue()); + if (fileAnlyse.getQcItems().get("col_time").getValue() != 0) { + middleData.sample_Avg_Flow_Rate = String.format("%.5f", fileAnlyse.getCollect().getAir_volume() / fileAnlyse.getQcItems().get("col_time").getValue()); } } - if(Objects.nonNull(fileAnlyse.getQcItems().get("decay_time"))) { + if (Objects.nonNull(fileAnlyse.getQcItems().get("decay_time"))) { middleData.sample_decay_time = String.format("%.5f", fileAnlyse.getQcItems().get("decay_time").getValue()); } - if(Objects.nonNull(fileAnlyse.getQcItems().get("acq_time"))) { + if (Objects.nonNull(fileAnlyse.getQcItems().get("acq_time"))) { middleData.sample_acquistion_time = String.format("%.5f", fileAnlyse.getQcItems().get("acq_time").getValue()); } middleData.sample_quantity = String.format("%.4f", fileAnlyse.getCollect().getAir_volume()); @@ -4108,56 +4302,53 @@ public class GammaFileUtil extends AbstractLogOrReport { Date dataTime = null; middleData.sample_acquistion_stop = ""; if (StringUtils.isNotBlank(fileAnlyse.getAcq().getAcquisition_start_date()) && StringUtils.isNotBlank(fileAnlyse.getAcq().getAcquisition_start_time())) { - middleData.sample_acquisiton_start = fileAnlyse.getAcq().getAcquisition_start_date()+StringPool.SPACE+fileAnlyse.getAcq().getAcquisition_start_time(); + middleData.sample_acquisiton_start = fileAnlyse.getAcq().getAcquisition_start_date() + StringPool.SPACE + fileAnlyse.getAcq().getAcquisition_start_time(); dataTime = DateUtils.parseDate(middleData.sample_acquisiton_start); - middleData.sample_acquistion_stop = DateUtils.formatDate(new Date((long) (dataTime.getTime() + fileAnlyse.getAcq().getAcquisition_real_time()*1000)), "yyyy/MM/dd HH:mm:ss"); + middleData.sample_acquistion_stop = DateUtils.formatDate(new Date((long) (dataTime.getTime() + fileAnlyse.getAcq().getAcquisition_real_time() * 1000)), "yyyy/MM/dd HH:mm:ss"); } - middleData.sample_acquistion_time = String.format("%.2f", fileAnlyse.getAcq().getAcquisition_real_time()) ; + middleData.sample_acquistion_time = String.format("%.2f", fileAnlyse.getAcq().getAcquisition_real_time()); middleData.sample_stationID = fileAnlyse.getHeader().getSite_code(); middleData.sample_detectID = fileAnlyse.getHeader().getDetector_code(); middleData.sample_Geometry = fileAnlyse.getHeader().getSample_geometry(); middleData.sample_Type = systemType; middleData.setting_specSetup = fileAnlyse.getUsedSetting(); - middleData.Collection_Station_Comments = StringUtils.isNotBlank(fileAnlyse.getOriTotalCmt())?fileAnlyse.getOriTotalCmt():""; - middleData.NDC_Analysis_General_Comments = StringUtils.isNotBlank(fileAnlyse.getTotalCmt())?fileAnlyse.getTotalCmt():""; + middleData.Collection_Station_Comments = StringUtils.isNotBlank(fileAnlyse.getOriTotalCmt()) ? fileAnlyse.getOriTotalCmt() : ""; + middleData.NDC_Analysis_General_Comments = StringUtils.isNotBlank(fileAnlyse.getTotalCmt()) ? fileAnlyse.getTotalCmt() : ""; return bRet; } - public Map UpdateDatasNuclideActivity(Map mapNucAct, Date act_ref, Date con_ref) { - Map map = new HashMap<>(); + public Map UpdateDatasNuclideActivity(Map mapNucAct, Date act_ref, Date con_ref) { + Map map = new HashMap<>(); map.put("dateTime_act_ref", act_ref); map.put("dateTime_con_ref", con_ref); //m_mapAct = mapNucAct; int size_map = mapNucAct.size(); - if(size_map < 1){ + if (size_map < 1) { return map; } List nuclideActivityList = new LinkedList<>(); - for(Map.Entry iter:mapNucAct.entrySet()){ + for (Map.Entry iter : mapNucAct.entrySet()) { TableNuclideActivity tableNuclideActivity = new TableNuclideActivity(); NuclideActMda nuc = iter.getValue(); tableNuclideActivity.setNuclide(iter.getKey()); char units = 'S'; double halflife = nuc.getHalflife(); - if(halflife >= 31556736) // 1年 = 365.24 * 24 * 60 * 60 = 31556736s + if (halflife >= 31556736) // 1年 = 365.24 * 24 * 60 * 60 = 31556736s { halflife /= 31556736; units = 'A'; - } - else if(halflife >= 86400) // 1天 = 24 * 60 * 60 = 86400s + } else if (halflife >= 86400) // 1天 = 24 * 60 * 60 = 86400s { halflife /= 86400; units = 'D'; - } - else if(halflife >= 3600) - { + } else if (halflife >= 3600) { halflife /= 3600; units = 'H'; } - tableNuclideActivity.setHalfLife(NumberFormatUtil.numberFormat(String.valueOf(halflife))+StringPool.SPACE+units); + tableNuclideActivity.setHalfLife(NumberFormatUtil.numberFormat(String.valueOf(halflife)) + StringPool.SPACE + units); tableNuclideActivity.setEnergy(NumberFormatUtil.numberFormat(String.valueOf(nuc.getVEnergy().get(nuc.getCalculateIdx())))); - tableNuclideActivity.setYield(NumberFormatUtil.numberFormat(String.valueOf(nuc.getVYield().get(nuc.getCalculateIdx())*100))); + tableNuclideActivity.setYield(NumberFormatUtil.numberFormat(String.valueOf(nuc.getVYield().get(nuc.getCalculateIdx()) * 100))); String str_effi = (nuc.getEfficiency() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getEfficiency()))); tableNuclideActivity.setEfficiency(str_effi); @@ -4170,9 +4361,9 @@ public class GammaFileUtil extends AbstractLogOrReport { String str_mda = (nuc.getMda() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getMda()))); tableNuclideActivity.setMda(str_mda); - String str_con = (Objects.nonNull(nuc.getConcentration())?(Double.isFinite(nuc.getConcentration())? (nuc.getConcentration() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getConcentration()))) : (Double.isInfinite(nuc.getConcentration())? "inf": "nan")):"null"); + String str_con = (Objects.nonNull(nuc.getConcentration()) ? (Double.isFinite(nuc.getConcentration()) ? (nuc.getConcentration() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getConcentration()))) : (Double.isInfinite(nuc.getConcentration()) ? "inf" : "nan")) : "null"); tableNuclideActivity.setConc(str_con); - String str_mdc = (Objects.nonNull(nuc.getMdc())?(Double.isFinite(nuc.getMdc())? (nuc.getMdc() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getMdc()))) : (Double.isInfinite(nuc.getMdc())? "inf" : "nan")):"null"); + String str_mdc = (Objects.nonNull(nuc.getMdc()) ? (Double.isFinite(nuc.getMdc()) ? (nuc.getMdc() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getMdc()))) : (Double.isInfinite(nuc.getMdc()) ? "inf" : "nan")) : "null"); tableNuclideActivity.setMdc(str_mdc); nuclideActivityList.add(tableNuclideActivity); } @@ -4184,8 +4375,8 @@ public class GammaFileUtil extends AbstractLogOrReport { public String RightFill(String str, int fieldWidth) { String fillChar = StringPool.SPACE; int fillNum = fieldWidth - str.length(); - while(fillNum > 0) { - str+=fillChar; + while (fillNum > 0) { + str += fillChar; --fillNum; } return str; @@ -4195,10 +4386,10 @@ public class GammaFileUtil extends AbstractLogOrReport { // 算法描述:取指定点附近的两点,根据 y=ax+b 方程求指定点处的能量 double y = 0.0; long m_nCount = phd.getSpec().getNum_g_channel(); - int index = channel > 0 ? channel-1 : channel; // 确保索引大于等于0 - if(phd.getVEnergy().size() == m_nCount && index < m_nCount) // 确保索引有效 + int index = channel > 0 ? channel - 1 : channel; // 确保索引大于等于0 + if (phd.getVEnergy().size() == m_nCount && index < m_nCount) // 确保索引有效 { - int index2 = (index < m_nCount-1 ? index + 1 : index - 1); + int index2 = (index < m_nCount - 1 ? index + 1 : index - 1); double y1 = phd.getVEnergy().get(index); double y2 = phd.getVEnergy().get(index2); y = y1 + (y2 - y1) / (index2 - index) * (channel - index); @@ -4208,14 +4399,14 @@ public class GammaFileUtil extends AbstractLogOrReport { public void InitChart(List nuclideTableList, PHDFile phd, Map map, Map colorMap) { List> chartList = new LinkedList<>(); - for (int i=0; i < nuclideTableList.size(); i++){ + for (int i = 0; i < nuclideTableList.size(); i++) { Map chartMap = new HashMap<>(); GardsNuclLinesLib item = nuclideTableList.get(i); double energy = item.getEnergy(); List chartData = Energy_Count_Base(energy, 30, phd, colorMap); - String title = "Line" + (i+1); + String title = "Line" + (i + 1); String bottom = "Abundance:" + item.getYield(); - String selPos = energy+""; + String selPos = energy + ""; String cursorText = energy + " keV"; chartMap.put("chartData", chartData); chartMap.put("title", title); @@ -4230,11 +4421,11 @@ public class GammaFileUtil extends AbstractLogOrReport { public List Energy_Count_Base(double energy, int chanNum, PHDFile phd, Map colorMap) { List datalist = new LinkedList<>(); int channel = GetChannelByEnergy(energy, 0, phd); - int start = channel-chanNum/2, end = channel+chanNum/2; - if(start < 1) { + int start = channel - chanNum / 2, end = channel + chanNum / 2; + if (start < 1) { start = 1; end = start + chanNum; - } else if(end > phd.getSpec().getNum_g_channel()) { + } else if (end > phd.getSpec().getNum_g_channel()) { end = (int) phd.getSpec().getNum_g_channel(); start = end - chanNum; } @@ -4245,14 +4436,14 @@ public class GammaFileUtil extends AbstractLogOrReport { public ChartData Energy_CountChart(int start, int end, PHDFile phd, String color) { ChartData data1 = new ChartData(); - if(phd.getSpec().getNum_g_channel() > 1 && phd.getVEnergy().size() == phd.getSpec().getNum_g_channel()) { - if(start < 1){ + if (phd.getSpec().getNum_g_channel() > 1 && phd.getVEnergy().size() == phd.getSpec().getNum_g_channel()) { + if (start < 1) { start = 1; } - if(end < 1 || end > phd.getSpec().getNum_g_channel()){ + if (end < 1 || end > phd.getSpec().getNum_g_channel()) { end = (int) phd.getSpec().getNum_g_channel(); } - for(int i=start-1; i 1 && phd.getVEnergy().size() == phd.getSpec().getNum_g_channel() && phd.getVBase().size() == phd.getSpec().getNum_g_channel()) { - if(start < 1){ + if (phd.getSpec().getNum_g_channel() > 1 && phd.getVEnergy().size() == phd.getSpec().getNum_g_channel() && phd.getVBase().size() == phd.getSpec().getNum_g_channel()) { + if (start < 1) { start = 1; } - if(end > phd.getSpec().getNum_g_channel() || end < 1){ + if (end > phd.getSpec().getNum_g_channel() || end < 1) { end = (int) phd.getSpec().getNum_g_channel(); } - for(int i=start-1; i= energy) { - if(phd.getVEnergy().get(i) - energy > energy - phd.getVEnergy().get(i-1)){ + if (phd.getVEnergy().get(i) >= energy) { + if (phd.getVEnergy().get(i) - energy > energy - phd.getVEnergy().get(i - 1)) { channel = i; // 道在索引(i-1)处 - } else{ - channel = i+1; // 道在索引(i)处 + } else { + channel = i + 1; // 道在索引(i)处 } break; } @@ -4338,7 +4529,7 @@ public class GammaFileUtil extends AbstractLogOrReport { List vFwhmCh = new LinkedList<>(); List vTail = new LinkedList<>(); List vUpperTail = new LinkedList<>(); - for (PeakInfo peak: phd.getVPeak()) { + for (PeakInfo peak : phd.getVPeak()) { vCentroid.add(peak.peakCentroid); vFwhmCh.add(peak.fwhmc); vTail.add(peak.tail); @@ -4348,7 +4539,7 @@ public class GammaFileUtil extends AbstractLogOrReport { StructInsertOutput structInsertOutput = CalValuesHandler.ComputePeakRange(phd.getVPeak().size(), (int) phd.getSpec().getNum_g_channel(), vCentroid, vFwhmCh, vTail, vUpperTail); if (CollectionUtils.isNotEmpty(structInsertOutput.vLeft) && CollectionUtils.isNotEmpty(structInsertOutput.vRight) && CollectionUtils.isNotEmpty(structInsertOutput.multiIndex)) { - for (int i=0; i vPeak, int channel, boolean bFind) { boolean t_bFind = false; - int i=0, peakNum = vPeak.size(); - for(; i= peak.left && channel <= peak.right) { + if (channel >= peak.left && channel <= peak.right) { // 如果 channel 在峰的左右边界内 - if(peak.multiIndex > 0 && channel > peak.peakCentroid) { + if (peak.multiIndex > 0 && channel > peak.peakCentroid) { // 如果是重峰,且 channel 在重峰的第一个峰的中心道右侧 int j = i; double temp = channel - peak.peakCentroid; - while(++j < peakNum && vPeak.get(j).multiIndex == peak.multiIndex) { + while (++j < peakNum && vPeak.get(j).multiIndex == peak.multiIndex) { // 找出重峰中峰中心道离 channel 最近的峰 - if(Math.abs(vPeak.get(j).peakCentroid - channel) < temp) { + if (Math.abs(vPeak.get(j).peakCentroid - channel) < temp) { temp = Math.abs(vPeak.get(j).peakCentroid - channel); i = j; } @@ -4379,14 +4570,14 @@ public class GammaFileUtil extends AbstractLogOrReport { // channel 在索引(i)对应的峰内 t_bFind = true; break; - } else if(peak.left > channel) { + } else if (peak.left > channel) { // channel 不在任何峰内,找离它最近的峰 - if(i>0 && channel-vPeak.get(i-1).peakCentroid < peak.peakCentroid-channel) i -= 1; + if (i > 0 && channel - vPeak.get(i - 1).peakCentroid < peak.peakCentroid - channel) i -= 1; break; } } - if(i >= peakNum) i -= 1; - if(bFind) { + if (i >= peakNum) i -= 1; + if (bFind) { bFind = t_bFind; } return i; @@ -4394,7 +4585,7 @@ public class GammaFileUtil extends AbstractLogOrReport { public List InitPeakTable(List vPeak) { //遍历vPeak - for (PeakInfo info:vPeak) { + for (PeakInfo info : vPeak) { if (Objects.isNull(info.recoilBetaChan)) { info.recoilBetaChan = "nan"; } @@ -4403,9 +4594,9 @@ public class GammaFileUtil extends AbstractLogOrReport { } } List result = new LinkedList<>(); - for(int i=0; i vPeakIdx) { - if(lines.halflife <= 0) { + if (lines.halflife <= 0) { return; } // 过滤核素能量小于ECutAnalysis_Low的射线 @@ -4454,39 +4645,39 @@ public class GammaFileUtil extends AbstractLogOrReport { int mainPeakIdx = -1; // 记录核素主γ峰的索引下标 NuclideActMda ActMda = new NuclideActMda(); - ActMda.setHalflife(Objects.isNull(mapHalflife.get(nucName))?lines.halflife : mapHalflife.get(nucName)); - for (int i=0, j=0; i maxYield) { + for (int i = 0; i < ActMda.getVYield().size(); i++) { + if (ActMda.getVYield().get(i) > maxYield) { maxYield = ActMda.getVYield().get(i); - mainPeakIdx = ActMda.getVPeakIdx().get(i)-1; + mainPeakIdx = ActMda.getVPeakIdx().get(i) - 1; ActMda.setCalculateIdx(i); } } - if(mainPeakIdx < 0) { + if (mainPeakIdx < 0) { return; } // 如果该核素属特殊核素,则用“特殊核素配置文件”中指明的其他核素的半衰期 - double halflife = Objects.isNull(mapHalflife.get(nucName))?lines.halflife : mapHalflife.get(nucName); + double halflife = Objects.isNull(mapHalflife.get(nucName)) ? lines.halflife : mapHalflife.get(nucName); double lambda = Math.log(2.0) / halflife; CalculateMDCs(phd, ActMda, mainPeakIdx, lambda, maxYield, 1.0); @@ -4497,54 +4688,54 @@ public class GammaFileUtil extends AbstractLogOrReport { public void ReCalcMdaMdc(PHDFile phd, String nuclide, int removePeakIdx) { NuclideActMda it = phd.getMapNucActMda().get(nuclide); - if(Objects.isNull(it)) { + if (Objects.isNull(it)) { return; } NuclideActMda nuc = it; // 如果该核素只与一个峰对应则直接删除该核素的 MDA 信息 - if(nuc.getVPeakIdx().size() == 1) { + if (nuc.getVPeakIdx().size() == 1) { phd.getMapNucActMda().remove(nuclide); return; } // 否则删除该核素与该峰所有关联的射线信息 boolean needReCalc = false; - for(int i=nuc.getVPeakIdx().size()-1; i>=0; i--) { + for (int i = nuc.getVPeakIdx().size() - 1; i >= 0; i--) { //判断当前下标对应的核素下标是否是需要删除的下标 - if(nuc.getVPeakIdx().get(i) == removePeakIdx) { + if (nuc.getVPeakIdx().get(i) == removePeakIdx) { nuc.getVEnergy().remove(i); nuc.getVUncertE().remove(i); nuc.getVYield().remove(i); nuc.getVUncertY().remove(i); nuc.getFullNames().remove(i); //判断主峰核素下标是否与当前下标一致 且 BCalculateMDA是true - if(nuc.getCalculateIdx() == i && nuc.isBCalculateMDA()) { + if (nuc.getCalculateIdx() == i && nuc.isBCalculateMDA()) { needReCalc = true; } - nuc.setCalculateIdx(nuc.getVEnergy().size()-1); + nuc.setCalculateIdx(nuc.getVEnergy().size() - 1); nuc.getVPeakIdx().remove(i); } } // 如果该核素只与一个峰对应则直接删除该核素的 MDA 信息 - if(nuc.getVPeakIdx().size() < 1) { + if (nuc.getVPeakIdx().size() < 1) { phd.getMapNucActMda().remove(nuclide); return; } - if(needReCalc) { + if (needReCalc) { double maxYield = 0; int mainPeakIdx = -1; - for(int j=0; j maxYield) { + for (int j = 0; j < nuc.getVYield().size(); j++) { + if (nuc.getVYield().get(j) > maxYield) { nuc.setCalculateIdx(j); maxYield = nuc.getVYield().get(j); - mainPeakIdx = nuc.getVPeakIdx().get(j)-1; + mainPeakIdx = nuc.getVPeakIdx().get(j) - 1; } } - if(mainPeakIdx < 0) { + if (mainPeakIdx < 0) { return; } - CalculateMDCs(phd, nuc, mainPeakIdx, Math.log(2.0)/nuc.getHalflife(), maxYield, 1.0); + CalculateMDCs(phd, nuc, mainPeakIdx, Math.log(2.0) / nuc.getHalflife(), maxYield, 1.0); } } @@ -4568,26 +4759,26 @@ public class GammaFileUtil extends AbstractLogOrReport { public List CompareData(List m_vecCompare, long m_nCount, Map colorMap, List vEnergy) { List datalist = new LinkedList<>(); int size = m_vecCompare.size(); - if(size == m_nCount) { + if (size == m_nCount) { ChartData data1 = new ChartData(); data1.setName("Compare"); data1.setGroup("channel"); data1.setColor(colorMap.get("Color_Compare")); // Compare two Spectrum in Channel - for(int i=0; i ReferenceData(List m_vecCompare, long m_nCount, Map colorMap, List vEnergy) { List datalist = new LinkedList<>(); int size = m_vecCompare.size(); - if(size == m_nCount) { + if (size == m_nCount) { ChartData data1 = new ChartData(); data1.setName("Compare"); data1.setGroup("channel"); data1.setColor(colorMap.get("Color_Reference")); // Compare two Spectrum in Channel - for(int i=0; i StripData(List m_vecCompare, List m_vCount, long m_nCount, Map colorMap, List vEnergy, Double ratioRate) { List datalist = new LinkedList<>(); int size = m_vecCompare.size(); - if(size == m_nCount) { + if (size == m_nCount) { ChartData data1 = new ChartData(); data1.setName("Compare"); data1.setGroup("channel"); - if (ratioRate<0) { + if (ratioRate < 0) { data1.setColor(colorMap.get("Color_SpecCut")); } else { data1.setColor(colorMap.get("Color_SpecSum")); } // type: 1 Add a Spectrum in Channel; -1 Cut a Spectrum in Channel - for(int i=0; i 0) { + if (phd.getProcess().getSample_volume_of_Xe() > 0) { spectrum.append("#Processing"); spectrum.append(System.lineSeparator()); String processing = "%s %s"; @@ -4820,7 +5011,7 @@ public class GammaFileUtil extends AbstractLogOrReport { } // #Sample - if(phd.getSampleBlock().getDimension_1() > 0) { + if (phd.getSampleBlock().getDimension_1() > 0) { spectrum.append("#Sample"); //换行 spectrum.append(System.lineSeparator()); @@ -4833,7 +5024,7 @@ public class GammaFileUtil extends AbstractLogOrReport { // Certificate CertificateBlock phdCertificate = phd.getCertificate(); if (Objects.nonNull(phdCertificate)) { - if(CollectionUtils.isNotEmpty(phd.getCertificate().getG_energy())) { + if (CollectionUtils.isNotEmpty(phd.getCertificate().getG_energy())) { spectrum.append("#Certificate"); //换行 spectrum.append(System.lineSeparator()); @@ -4844,7 +5035,7 @@ public class GammaFileUtil extends AbstractLogOrReport { //换行 spectrum.append(System.lineSeparator()); String certificate = "%-12s %-12s %-12s %-12s %-12s %-12s %-12s %-12s %-12s %-12s"; - for(int i=0; i 0) { + if (g_totE.getG_energy().size() > 0) { spectrum.append("#TotalEff"); //换行 spectrum.append(System.lineSeparator()); - for(int i=0; i CreateShapeCP(BaseControls baseControls) { List shapes = new LinkedList<>(); - for(int i=0; i mdcInfoMap, Map nuclideLinesMap) { //遍历峰核素信息 - for (Map.Entry entry: nuclideLinesMap.entrySet()) { + for (Map.Entry entry : nuclideLinesMap.entrySet()) { //获取核素名称 String nuclideName = entry.getKey(); NuclideLines nuclideLines = entry.getValue(); @@ -5045,11 +5236,11 @@ public class GammaFileUtil extends AbstractLogOrReport { int funId = phd.getEfficiencyParam().get(0).intValue(); int p_size = phd.getEfficiencyParam().size() - 1; int e_size = phd.getEfficiencyEnergy().size(); - switch(funId) { + switch (funId) { case 1: // Interpolation: y=yi+(y(i+1)-yi)*(x-xi)/(x(i+1)-xi) for xi<=x= 4) { + if (p_size == 2 * e_size && p_size >= 4) { List effList = CalValuesHandler.calFcnEval(nuclideLines.venergy, phd.getEfficiencyParam()).counts; - for (int j=0; j= 2) { - for (int j=0; j= 2) { + for (int j = 0; j < nuclideLines.fullNames.size(); j++) { //获取峰核素能量值 Double energy = nuclideLines.venergy.get(j); Double yield = nuclideLines.vyield.get(j); @@ -5110,12 +5301,12 @@ public class GammaFileUtil extends AbstractLogOrReport { paramB = 0; } double param = paramA + paramB; - for(int i=3; i<=p_size; i++) { - double paramC = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i)))) * Math.pow(Math.log(energy), (i -1)); + for (int i = 3; i <= p_size; i++) { + double paramC = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i)))) * Math.pow(Math.log(energy), (i - 1)); if (Double.isNaN(paramC)) { paramC = 0; } - param+=paramC; + param += paramC; } double eff = Math.pow(Math.E, param); if (Double.isFinite(eff)) { @@ -5127,9 +5318,9 @@ public class GammaFileUtil extends AbstractLogOrReport { } break; case 8: // Polynomial in log(y) against log(1/x): log(y) = a0 + a1*log(c/x) + a2*log(c/x)^2 + a3*log(c/x)^3 + a4*log(c/x)^4 - if(p_size >= 3) { + if (p_size >= 3) { List effList = CalValuesHandler.calFcnEval(nuclideLines.venergy, phd.getEfficiencyParam()).counts; - for (int j=0; j