From 6f2a66a83b1604efdf2d248229e7f73026eff6d1 Mon Sep 17 00:00:00 2001 From: orgin Date: Fri, 13 Sep 2024 10:55:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:1=E3=80=81=E6=96=B0=20beta=20=E8=B0=B1=20?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A4=84=E7=90=86=E5=88=A0=E9=99=A4=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=20qc=20=E5=92=8C=20det=20=E7=9B=B8=E5=85=B3=E5=86=85?= =?UTF-8?q?=E5=AE=B9=EF=BC=9B=202=E3=80=81=E8=A7=A3=E5=86=B3=20readPHDFile?= =?UTF-8?q?=20=E8=AF=BB#histogram=20=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/email/EmailServiceManager.java | 2 +- .../jeecg/modules/EmailParsingActuator.java | 17 +++++-- .../AbstractS_D_Q_G_SpectrumHandler.java | 5 ++- .../modules/spectrum/Sample_C_Analysis.java | 14 +++--- .../spectrum/SpectrumParsingActuator.java | 7 +++ .../jeecg/common/util/SelfStationUtil.java | 45 ++++++++++++++++--- .../java/org/jeecg/common/util/SelfUtil.java | 27 ----------- 7 files changed, 69 insertions(+), 48 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java index 222d5ffb..a12ce067 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java @@ -766,7 +766,7 @@ public class EmailServiceManager { * 若此次获取的邮件是上次删除失败的邮件直接删除 * @param message */ - public boolean check(Message message,String messageId){ + public boolean check(Message message, String messageId){ boolean exist = false; try { String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId; diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/EmailParsingActuator.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/EmailParsingActuator.java index 93ec8fa4..f07985ea 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/EmailParsingActuator.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/EmailParsingActuator.java @@ -1,9 +1,12 @@ package org.jeecg.modules; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ArrayUtils; +import org.jeecg.common.constant.StringConstant; import org.jeecg.common.email.EmailLogManager; import org.jeecg.common.email.EmailServiceManager; import org.jeecg.common.properties.TaskProperties; @@ -90,13 +93,19 @@ public class EmailParsingActuator extends Thread{ if(ArrayUtils.isNotEmpty(messages)){ //检验获取的邮件是否在之前删除失败列表中,若在直接调用邮件API删除,并且此次数组里元素也删除 for(int i=messages.length-1;i>=0;i--){ + String messageId = null; if (null == messages[i].getHeader("Message-ID")) { - messages = ArrayUtils.remove(messages, i); - continue; + // 有些邮箱拿不到 message-ID,换成主题+接收时间 + String subject = messages[i].getSubject().replace(" ", StringConstant.UNDER_LINE); + String receivedStr = DateUtil.format(messages[i].getReceivedDate(), DatePattern.NORM_DATETIME_MINUTE_PATTERN); + messageId = subject + StringConstant.UNDER_LINE + receivedStr; +// messages = ArrayUtils.remove(messages, i); +// continue; + } else { + messageId = ((MimeMessage) messages[i]).getMessageID(); } if (!messages[i].isExpunged()){ - String messageId = ((MimeMessage) messages[i]).getMessageID(); - final boolean exist = emailServiceManager.check(messages[i],messageId); + final boolean exist = emailServiceManager.check(messages[i], messageId); messageIds.add(messageId); if(exist){ messages = ArrayUtils.remove(messages,i); diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractS_D_Q_G_SpectrumHandler.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractS_D_Q_G_SpectrumHandler.java index 6f08c026..cf071b36 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractS_D_Q_G_SpectrumHandler.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractS_D_Q_G_SpectrumHandler.java @@ -9,6 +9,7 @@ import org.apache.logging.log4j.util.Strings; import org.jeecg.common.constant.StringConstant; import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.common.util.DateUtils; +import org.jeecg.common.util.SelfStationUtil; import org.jeecg.common.util.SelfUtil; import org.jeecg.modules.ErrorLogManager; import org.jeecg.modules.base.entity.original.GardsSampleData; @@ -92,7 +93,7 @@ public abstract class AbstractS_D_Q_G_SpectrumHandler extends AbstractSpectrumHa // 如果是自建台站能谱,需要单独处理Histogram数据,避免性能问题 EnergySpectrumStruct sourceData = null; if (super.spectrumFile.length() > (1024 * 1024 * 4L)) { - sourceData = SelfUtil.getSourceDataNotHis(super.spectrumFile.getAbsolutePath()); + sourceData = SelfStationUtil.getSourceDataNotHis(super.spectrumFile.getAbsolutePath()); } else { sourceData = EnergySpectrumHandler.getSourceData(super.spectrumFile.getAbsolutePath()); } @@ -329,4 +330,4 @@ public abstract class AbstractS_D_Q_G_SpectrumHandler extends AbstractSpectrumHa } return Strings.EMPTY; } -} \ No newline at end of file +} diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java index 965b1e95..929fb92e 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java @@ -172,10 +172,10 @@ public class Sample_C_Analysis { // parsingProcessLog.setSample_C_Analysis(this); //查询det数据(sampleId,inputFileName) sample数据在构造函数已经传过来 - this.queryPHDFile(); +// this.queryPHDFile(); //查找det谱PHD文件 sample谱PHD文件位置在构造函数已经传过来 - this.getPHDFile(); +// this.getPHDFile(); // Beta谱进行分析 TODO Analysis @@ -197,7 +197,7 @@ public class Sample_C_Analysis { GStoreMiddleProcessData middleData4 = new GStoreMiddleProcessData(this.sampleInputFilename); // 读取文件内容并附值 - this.setPHDFile(phdFile1, phdFile2, phdFile3, phdFile4); +// this.setPHDFile(phdFile1, phdFile2, phdFile3, phdFile4); // 获取数据库 Gamma 默认参数 getSettingFromDB(phdFile1, phdFile2, phdFile3, phdFile4); @@ -430,9 +430,10 @@ public class Sample_C_Analysis { ErrorLogManager.getInstance().write(new SpectrumErrorEvent(new Date(), ErrorType.GAS_OR_DET_ERROR,this.sampleFilename)); throw new FileNotExistException("gas or det file is no exist or is error.."); } - this.detStruct = EnergySpectrumHandler.getSourceData(this.detFileFinalPath); +// this.detStruct = EnergySpectrumHandler.getSourceData(this.detFileFinalPath); + this.detStruct = SelfStationUtil.getSourceDataNotHis(this.detFileFinalPath); } - + /** * 读取计算MDC参数文件方法 */ @@ -543,8 +544,7 @@ public class Sample_C_Analysis { try { Integer sampleId = this.sampleData.getSampleId(); // 保存分析结果 ==> INSERT INTO RNAUTO.GARDS_ANALYSES TODO 填充Beta分析产生的报告和日志地址 - saveAnalysis(sampleId, this.detSampleData, this.startAnalysisTime, - this.endAnalysisTime, null, null); + saveAnalysis(sampleId, this.detSampleData, this.startAnalysisTime, this.endAnalysisTime, null, null); // 获取分析结果ID ==> SELECT IDANALYSIS idAnalysis = serviceQuotes.getAnalysesService().getIdAnalysis(sampleId); // 保存分析结果 ==> INSERT INTO RNAUTO.GARDS_ANALYSES diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumParsingActuator.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumParsingActuator.java index 5548ba1e..49fe15ca 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumParsingActuator.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumParsingActuator.java @@ -1,5 +1,7 @@ package org.jeecg.modules.spectrum; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -93,6 +95,11 @@ public class SpectrumParsingActuator implements Runnable{ //解析之前先把邮件唯一信息存储到redis String messageId = ((MimeMessage) message).getMessageID(); + if (StrUtil.isEmpty(messageId)) { + String subjectStr = message.getSubject().replace(" ", "_"); + String receivedStr = DateUtil.format(message.getReceivedDate(), DatePattern.NORM_DATETIME_MINUTE_PATTERN); + messageId = subjectStr + StringConstant.UNDER_LINE + receivedStr; + } receiveDate = DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss"); String emlName = subject+ StringConstant.UNDER_LINE+ receiveDate; String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId; diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/SelfStationUtil.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/SelfStationUtil.java index 1902a8ac..b1c67581 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/SelfStationUtil.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/SelfStationUtil.java @@ -48,7 +48,7 @@ public class SelfStationUtil extends AbstractLogOrReport { * @param phdPath 文件地址 * @return */ - public HashMap readPHDFile(String phdPath) { + public static HashMap readPHDFile(String phdPath) { try { File file = new File(phdPath); HashMap result = Maps.newHashMap(); @@ -65,12 +65,14 @@ public class SelfStationUtil extends AbstractLogOrReport { currentName = line; // 首行 String s = reader.readLine(); - String[] split = s.split(" "); - hCountArr = new long[Integer.parseInt(split[0])][Integer.parseInt(split[1])]; - result.put("g_channels", Long.parseLong(split[0])); - result.put("b_channels", Long.parseLong(split[1])); - result.put("g_energy_span", Long.parseLong(split[2])); - result.put("b_energy_span", Long.parseLong(split[3])); + String[] split = s.split(" "); + long[] array = Arrays.stream(split).filter(StrUtil::isNotEmpty).mapToLong(Long::parseLong).toArray(); + // todo 暂时反着写,邮件中是错误的,正确的为 0 1 + hCountArr = new long[(int)array[1]][(int)array[0]]; + result.put("g_channels", array[1]); + result.put("b_channels", array[0]); + result.put("g_energy_span", array[2]); + result.put("b_energy_span", array[3]); Console.log(s); continue; } @@ -142,6 +144,35 @@ public class SelfStationUtil extends AbstractLogOrReport { return map; } + /** + * 调用dll解析phd文件,dll不解析histogram块数据 + * @param filePathName 文件地址 + * @return + */ + public static EnergySpectrumStruct getSourceDataNotHis(String filePathName) { + EnergySpectrumStruct struct = null; + try { + if (Objects.nonNull(filePathName)) { + //解析文件内容 + long start = System.currentTimeMillis(); + struct = EnergySpectrumHandler.getSourceDataNotHis(filePathName); + Console.log("getsource:{}", (System.currentTimeMillis() - start)); + start = System.currentTimeMillis(); + HashMap hisMap = readPHDFile(filePathName); + Console.log("readPHDFile:{}", (System.currentTimeMillis() - start)); + struct.setH_count_arr((long[][]) hisMap.get("h_count")); + struct.setG_channels((long) hisMap.get("g_channels")); + struct.setB_channels((long) hisMap.get("b_channels")); + struct.setG_energy_span((long) hisMap.get("g_energy_span")); + struct.setB_energy_span((long) hisMap.get("b_energy_span")); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("getSourceDataNotHis Error:{}", e.getMessage()); + } + return struct; + } + public List roiList(Integer startChannel, Integer endChannel, long betaChannels, long gammaChannels, List h_counts) { // g_counts diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/SelfUtil.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/SelfUtil.java index 3debd2c8..e19606cc 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/SelfUtil.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/SelfUtil.java @@ -344,33 +344,6 @@ public class SelfUtil { return phd; } - /** - * 调用dll解析phd文件,dll不解析histogram块数据 - * @param filePathName 文件地址 - * @return - */ - public static EnergySpectrumStruct getSourceDataNotHis(String filePathName) { - EnergySpectrumStruct struct = null; - try { - if (Objects.nonNull(filePathName)) { - //解析文件内容 - long start = System.currentTimeMillis(); - struct = EnergySpectrumHandler.getSourceDataNotHis(filePathName); - Console.log("getsource:{}", (System.currentTimeMillis() - start)); - start = System.currentTimeMillis(); - HashMap hisMap = readPHDFile(filePathName); - Console.log("readPHDFile:{}", (System.currentTimeMillis() - start)); - struct.setH_count_arr((long[][]) hisMap.get("h_count")); - struct.setG_channels((long) hisMap.get("g_channels")); - struct.setB_channels((long) hisMap.get("b_channels")); - struct.setG_energy_span((long) hisMap.get("g_energy_span")); - struct.setB_energy_span((long) hisMap.get("b_energy_span")); - } - } catch (Exception e) { - log.error("getSourceDataNotHis Error:{}", e.getMessage()); - } - return struct; - } /** * 解析 #histogram块数据