From 71a4860c639def5a7ae6df377447db1a20b5f5bc Mon Sep 17 00:00:00 2001 From: nieziyan Date: Thu, 14 Mar 2024 09:14:46 +0800 Subject: [PATCH 01/26] =?UTF-8?q?fix=EF=BC=9AEamil=20Send?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/email/EmailServiceManager.java | 5 +- .../jeecg/modules/base/dto/NuclideInfo.java | 8 +++ .../modules/redisStream/AnalysisConsumer.java | 11 ++-- .../impl/AlarmAnalysisLogServiceImpl.java | 1 + .../jeecg/modules/feignclient/ManageUtil.java | 34 ++++++++----- .../jeecg/modules/message/SendMessage.java | 50 +++++++++++-------- .../jeecg/modules/quartz/job/DatabaseJob.java | 10 +++- .../jeecg/modules/quartz/job/ServerJob.java | 8 ++- .../modules/quartz/jobs/DatabaseJob.java | 9 +++- .../jeecg/modules/quartz/jobs/EmailJob.java | 1 - .../jeecg/modules/quartz/jobs/ServerJob.java | 9 ++-- .../modules/quartz/jobs/TableSpaceJob.java | 3 +- 12 files changed, 101 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 45018aca..2ac1db5d 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 @@ -328,8 +328,9 @@ public class EmailServiceManager { props.put("mail.smtp.host", email.getEmailServerAddress()); props.put("mail.smtp.port", email.getPort()); props.put("mail.smtp.auth", "true"); - /*props.put("mail.smtp.socketFactory.port", email.getPort()); - props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");*/ + props.put("mail.smtp.starttls.enable", "true"); + props.put("mail.smtp.socketFactory.port", email.getPort()); + props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); Session session = Session.getInstance(props); diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/NuclideInfo.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/NuclideInfo.java index 77a23fac..cac153bc 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/NuclideInfo.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/NuclideInfo.java @@ -3,8 +3,12 @@ package org.jeecg.modules.base.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import org.jeecg.common.util.NumUtil; + import java.io.Serializable; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; @Data @JsonIgnoreProperties(ignoreUnknown = true) @@ -17,4 +21,8 @@ public class NuclideInfo implements Serializable { private String datasource; private String value; + + public void keepSix(){ + this.value = NumUtil.keepStr(this.value, 6); + } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java index 1165b97e..bf52a64a 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java @@ -150,14 +150,17 @@ public class AnalysisConsumer implements StreamListener conditions = ListUtil.toList(conditionStr.split(COMMA)); + List first = new ArrayList<>(); + List average = new ArrayList<>(); + List meanwhile = new ArrayList<>(); for (String con : conditions) { Condition condition = Condition.valueOf1(con); if (ObjectUtil.isNotNull(condition)){ switch (condition){ case FIRST_FOUND: // 首次发现该元素 - firstDetected = firstDetected(betaOrGamma,datasource,nuclideNames); + firstDetected = firstDetected(betaOrGamma, datasource, nuclideNames); if (CollUtil.isNotEmpty(firstDetected)){ - String message = "First discovery of nuclides: [" + StrUtil.join(COMMA,firstDetected) + "]"; + String message = "First discovery of nuclides: [" + StrUtil.join(COMMA, firstDetected) + "]"; alarmInfo.append(message); } break; @@ -167,14 +170,14 @@ public class AnalysisConsumer implements StreamListener= 2){ - String message = "Simultaneously detecting nuclides: [" + StrUtil.join(COMMA,nuclideNames) + "]"; + String message = "Simultaneously detecting nuclides: [" + StrUtil.join(COMMA, nuclideNames) + "]"; alarmInfo.append(COMMA).append(message); } break; diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisLogServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisLogServiceImpl.java index af13f2a3..47f34b54 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisLogServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisLogServiceImpl.java @@ -75,6 +75,7 @@ public class AlarmAnalysisLogServiceImpl extends ServiceImpl nuclideInfos = mapper.readValue(nuclideInfo, new TypeReference>() {}); + nuclideInfos.forEach(NuclideInfo::keepSix); logDto.setNuclideList(nuclideInfos); } catch (JsonProcessingException e) { log.error("NuclideInfo解析异常: {}", e.getMessage()); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java index 17b8ed10..7f68d45c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java @@ -1,5 +1,6 @@ package org.jeecg.modules.feignclient; +import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.system.util.JwtUtil; @@ -9,6 +10,7 @@ import org.jeecg.modules.base.dto.LoginResult; import org.jeecg.modules.base.dto.LoginVo; import org.springframework.core.env.Environment; +@Slf4j public class ManageUtil { private static RedisUtil redisUtil; @@ -31,20 +33,28 @@ public class ManageUtil { * 登录运管系统 获取Token * */ public static String getToken(){ - if (redisUtil.hasKey(RedisConstant.MANAGE_TOKEN)) - return (String) redisUtil.get(RedisConstant.MANAGE_TOKEN); - - LoginVo loginVo = new LoginVo(username, password); - Result loginRes = monitorSystem.login(loginVo); - String token = loginRes.getResult().getToken(); - redisUtil.set(RedisConstant.MANAGE_TOKEN, token, JwtUtil.EXPIRE_TIME / 1000 - 10); - return token; + String token = null; + try { + if (redisUtil.hasKey(RedisConstant.MANAGE_TOKEN)) + return (String) redisUtil.get(RedisConstant.MANAGE_TOKEN); + LoginVo loginVo = new LoginVo(username, password); + Result loginRes = monitorSystem.login(loginVo); + token = loginRes.getResult().getToken(); + redisUtil.set(RedisConstant.MANAGE_TOKEN, token, JwtUtil.EXPIRE_TIME / 1000 - 10); + return token; + }catch (RuntimeException e){ + return token; + } } public static void refreshToken(){ - LoginVo loginVo = new LoginVo(username, password); - Result loginRes = monitorSystem.login(loginVo); - String token = loginRes.getResult().getToken(); - redisUtil.set(RedisConstant.MANAGE_TOKEN, token, JwtUtil.EXPIRE_TIME / 1000 - 10); + try { + LoginVo loginVo = new LoginVo(username, password); + Result loginRes = monitorSystem.login(loginVo); + String token = loginRes.getResult().getToken(); + redisUtil.set(RedisConstant.MANAGE_TOKEN, token, JwtUtil.EXPIRE_TIME / 1000 - 10); + }catch (RuntimeException e){ + log.error("运管系统登录异常, Token刷新失败: {}", e.getMessage()); + } } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/SendMessage.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/SendMessage.java index 698fa427..d3e39205 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/SendMessage.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/SendMessage.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.ListUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.constant.enums.MessageTypeEnum; @@ -27,6 +28,7 @@ import static org.jeecg.common.constant.enums.MessageTypeEnum.*; * @author nieziyan * @date 2023-06-21 */ +@Slf4j @Component public class SendMessage { @@ -50,6 +52,7 @@ public class SendMessage { */ public void send(MessageDTO messageDTO, String groupId, String notific){ Map contact = getContact(groupId); + if (MapUtil.isEmpty(contact)) return; if (StrUtil.isBlank(notific)) return; List ways = ListUtil.toList(StrUtil.split(notific, COMMA)); if (ways.contains(ALL.getValue())) @@ -96,26 +99,33 @@ public class SendMessage { * @param groupId */ private Map getContact(String groupId){ - List userIds = abnormalAlarmClient.userIds(groupId).getResult(); - // 查询用户信息 - List sysUsers = sysUserService.listByIds(userIds); - // 用户名 - String usernameList = sysUsers.stream().map(SysUser::getUsername).filter(StrUtil::isNotBlank) - .collect(Collectors.joining(COMMA)); - // 邮箱 - String emailList = sysUsers.stream().map(SysUser::getEmail).filter(StrUtil::isNotBlank) - .collect(Collectors.joining(COMMA)); - // 用户名-邮箱Map - Map userEmail = sysUsers.stream() - .collect(Collectors.toMap(SysUser::getUsername, SysUser::getEmail)); - // 手机号码 - String phoneList = sysUsers.stream().map(SysUser::getPhone).filter(StrUtil::isNotBlank) - .collect(Collectors.joining(COMMA)); Map result = new HashMap<>(); - result.put(SYSTEM, usernameList); - result.put(EMAIL, emailList); - result.put(SMS, phoneList); - result.putAll(userEmail); - return result; + try { + List userIds = abnormalAlarmClient.userIds(groupId).getResult(); + // 查询用户信息 + List sysUsers = sysUserService.listByIds(userIds); + // 用户名 + String usernameList = sysUsers.stream().map(SysUser::getUsername).filter(StrUtil::isNotBlank) + .collect(Collectors.joining(COMMA)); + // 邮箱 + String emailList = sysUsers.stream().map(SysUser::getEmail).filter(StrUtil::isNotBlank) + .collect(Collectors.joining(COMMA)); + // 用户名-邮箱Map + Map userEmail = sysUsers.stream() + .filter(item -> StrUtil.isNotBlank(item.getEmail())) + .collect(Collectors.toMap(SysUser::getUsername, SysUser::getEmail)); + // 手机号码 + String phoneList = sysUsers.stream().map(SysUser::getPhone).filter(StrUtil::isNotBlank) + .collect(Collectors.joining(COMMA)); + + result.put(SYSTEM, usernameList); + result.put(EMAIL, emailList); + result.put(SMS, phoneList); + result.putAll(userEmail); + return result; + }catch (Exception e) { + log.error("获取收件人联系信息异常: {}", e.getMessage()); + return result; + } } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java index 9753f15a..5da9a25a 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import feign.FeignException; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; @@ -102,6 +103,10 @@ public class DatabaseJob extends Monitor implements Job{ }*/ // 向运管查询监控项数据 String token = ManageUtil.getToken(); + if(StrUtil.isBlank(token)){ + log.error("运管系统登录异常, Token获取失败"); + continue; + } Result result = getMonitorSystem().itemBack(itemId, itemType, start, end, token); ItemHistory itemHistory = result.getResult(); if (ObjectUtil.isNull(itemHistory)){ @@ -141,9 +146,12 @@ public class DatabaseJob extends Monitor implements Job{ getSendMessage().send(messageDTO, groupId, notific); getPushAppUtil().pushToSingle(messageDTO, groupId); } + } catch (FeignException.Unauthorized e){ + ManageUtil.refreshToken(); + log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); } catch (JsonProcessingException e) { log.error("Database预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); - }catch (Exception e){ + } catch (Exception e){ log.error("Database监控异常: {}", e.getMessage()); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/ServerJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/ServerJob.java index 5d5c8a89..2c544195 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/ServerJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/ServerJob.java @@ -85,6 +85,10 @@ public class ServerJob extends Monitor implements Job { // 向运管查询监控项数据 String token = ManageUtil.getToken(); + if(StrUtil.isBlank(token)){ + log.error("运管系统登录异常, Token获取失败"); + continue; + } Result result = getMonitorSystem().itemBack(itemId, itemType, start, end, token); ItemHistory itemHistory = result.getResult(); if (ObjectUtil.isNull(itemHistory)){ @@ -124,12 +128,12 @@ public class ServerJob extends Monitor implements Job { getSendMessage().send(messageDTO, groupId, notific); getPushAppUtil().pushToSingle(messageDTO, groupId); } - }catch (FeignException.Unauthorized e){ + } catch (FeignException.Unauthorized e){ ManageUtil.refreshToken(); log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); } catch (JsonProcessingException e) { log.error("Server预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); - }catch (Exception e){ + } catch (Exception e){ log.error("Server监控异常: {}", e.getMessage()); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java index 2c8d7036..5f76098c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import feign.FeignException; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; @@ -86,6 +87,10 @@ public class DatabaseJob extends Monitor { // 向运管查询监控项数据 String token = ManageUtil.getToken(); + if(StrUtil.isBlank(token)){ + log.error("运管系统登录异常, Token获取失败"); + continue; + } Result result = getMonitorSystem().itemBack(itemId, itemType, start, end, token); ItemHistory itemHistory = result.getResult(); if (ObjectUtil.isNull(itemHistory)){ @@ -125,11 +130,13 @@ public class DatabaseJob extends Monitor { getSendMessage().send(messageDTO, groupId, notific); getPushAppUtil().pushToSingle(messageDTO, groupId); } + }catch (FeignException.Unauthorized e){ + ManageUtil.refreshToken(); + log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); } catch (JsonProcessingException e) { log.error("Database预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); }catch (Exception e){ log.error("Database监控异常: {}", e.getMessage()); - e.printStackTrace(); } } destroy(); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java index 2259aa4c..ef51c991 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java @@ -111,7 +111,6 @@ public class EmailJob extends Monitor{ log.error("Email预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); }catch (Exception e){ log.error("Email监控异常: {}", e.getMessage()); - e.printStackTrace(); } } destroy(); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java index 9bfe5b86..42182ba7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java @@ -84,6 +84,10 @@ public class ServerJob extends Monitor{ // 向运管查询监控项数据 String token = ManageUtil.getToken(); + if(StrUtil.isBlank(token)){ + log.error("运管系统登录异常, Token获取失败"); + continue; + } Result result = getMonitorSystem().itemBack(itemId, itemType, start, end, token); ItemHistory itemHistory = result.getResult(); if (ObjectUtil.isNull(itemHistory)){ @@ -123,14 +127,13 @@ public class ServerJob extends Monitor{ getSendMessage().send(messageDTO, groupId, notific); getPushAppUtil().pushToSingle(messageDTO, groupId); } - }catch (FeignException.Unauthorized e){ + } catch (FeignException.Unauthorized e){ ManageUtil.refreshToken(); log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); } catch (JsonProcessingException e) { log.error("Server预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); - }catch (Exception e){ + } catch (Exception e){ log.error("Server监控异常: {}", e.getMessage()); - e.printStackTrace(); } } destroy(); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java index 441b344f..9705aceb 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java @@ -44,7 +44,7 @@ public class TableSpaceJob extends Monitor { /** * 解析Oracle 表空间预警规则 **/ - @Scheduled(cron = "${task.period-space:0 0 */1 * * ?}") + @Scheduled(cron = "${task.period-space:0 0/1 * * * ?}") public void execute(){ init(); @@ -124,7 +124,6 @@ public class TableSpaceJob extends Monitor { log.error("Database-TableSpace预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); }catch (Exception e){ log.error("Database-TableSpace监控异常: {}", e.getMessage()); - e.printStackTrace(); } } destroy(); From 73f1dea4e0edb646e94d68446471bf752c178aef Mon Sep 17 00:00:00 2001 From: nieziyan Date: Thu, 14 Mar 2024 16:29:27 +0800 Subject: [PATCH 02/26] =?UTF-8?q?feat=EF=BC=9AAnalysis=20Warn=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/common/util/TemplateUtil.java | 55 ++++++++++++ .../modules/redisStream/AnalysisConsumer.java | 84 +++++++++---------- 2 files changed, 96 insertions(+), 43 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TemplateUtil.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TemplateUtil.java index d61f655c..f3a902c0 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TemplateUtil.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TemplateUtil.java @@ -1,13 +1,20 @@ package org.jeecg.common.util; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.util.dynamic.db.FreemarkerParseFactory; import org.jeecg.modules.base.entity.postgre.SysMessageTemplate; import org.jeecg.modules.base.service.ISysMessageTemplateService; + +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /* * 模板工具类 @@ -37,6 +44,30 @@ public class TemplateUtil { return messageDTO; } + public static MessageDTO parse1(String code, Map data){ + MessageDTO messageDTO = new MessageDTO(); + SysMessageTemplate template = templateService.getOne(code); + // 如果没有消息模板 + if(ObjectUtil.isNull(template)) + return messageDTO; + String templateName = template.getTemplateName(); + String templateContent = template.getTemplateContent(); + messageDTO.setTitle(templateName); + if (MapUtil.isEmpty(data)) + return messageDTO; + Set keys = data.keySet(); + String pattern = "\\<([^<>]*{}[^<>]*)\\>"; + List contents = new ArrayList<>(); + for (String key : keys) { + contents.add(ReUtil.getGroup1(StrUtil.format(pattern, key), templateContent)); + } + templateContent = CollUtil.join(contents, "#"); + String content = FreemarkerParseFactory + .parseTemplateContent(templateContent, data, true); + messageDTO.setContent(content); + return messageDTO; + } + public static MessageDTO parse(String title, String code, Map data) { MessageDTO messageDTO = new MessageDTO(); SysMessageTemplate template = templateService.getOne(code); @@ -53,4 +84,28 @@ public class TemplateUtil { messageDTO.setContent(content); return messageDTO; } + + public static MessageDTO parse1(String title, String code, Map data) { + MessageDTO messageDTO = new MessageDTO(); + SysMessageTemplate template = templateService.getOne(code); + // 如果没有消息模板 + if(ObjectUtil.isNull(template)) + return messageDTO; + String templateName = template.getTemplateName(); + String templateContent = template.getTemplateContent(); + messageDTO.setTitle(StrUtil.isBlank(title) ? templateName : title); + if (MapUtil.isEmpty(data)) + return messageDTO; + Set keys = data.keySet(); + String pattern = "\\<([^<>]*{}[^<>]*)\\>"; + List contents = new ArrayList<>(); + for (String key : keys) { + contents.add(ReUtil.getGroup1(StrUtil.format(pattern, key), templateContent)); + } + templateContent = CollUtil.join(contents, "#"); + String content = FreemarkerParseFactory + .parseTemplateContent(templateContent, data, true); + messageDTO.setContent(content); + return messageDTO; + } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java index bf52a64a..14077b2b 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java @@ -5,8 +5,10 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import lombok.Data; import lombok.NoArgsConstructor; @@ -16,8 +18,10 @@ import org.jeecg.common.config.mqtoken.UserTokenContext; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.constant.enums.SampleType; +import org.jeecg.common.util.DataTool; import org.jeecg.common.util.RedisStreamUtil; import org.jeecg.common.util.SpringContextUtils; +import org.jeecg.common.util.TemplateUtil; import org.jeecg.modules.base.dto.NuclideInfo; import org.jeecg.modules.base.dto.Info; import org.jeecg.modules.base.entity.postgre.AlarmAnalysisLog; @@ -36,9 +40,13 @@ import org.springframework.stereotype.Component; import static org.jeecg.common.constant.enums.MessageTypeEnum.*; import static org.jeecg.common.util.TokenUtils.getTempToken; +import static org.jeecg.modules.base.enums.Template.ANALYSIS_NUCLIDE; +import static org.jeecg.modules.base.enums.Template.MONITOR_EMAIL; import java.math.BigDecimal; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; @Data @@ -143,71 +151,61 @@ public class AnalysisConsumer implements StreamListener nuclidesCross){ Set nuclideNames = nuclidesCross.keySet(); - StringBuilder alarmInfo = new StringBuilder(); - List firstDetected; - List moreThanAvg = new ArrayList<>(); String conditionStr = info.getConditions(); String betaOrGamma = info.getBetaOrGamma(); String datasource = info.getDatasource(); List conditions = ListUtil.toList(conditionStr.split(COMMA)); - List first = new ArrayList<>(); - List average = new ArrayList<>(); - List meanwhile = new ArrayList<>(); + List firstDetected = new ArrayList<>(); // 首次发现 + List moreThanAvg = new ArrayList<>(); // 超浓度均值 + List meanwhile = new ArrayList<>(); // 同时出现两种及以上核素 for (String con : conditions) { Condition condition = Condition.valueOf1(con); if (ObjectUtil.isNotNull(condition)){ switch (condition){ case FIRST_FOUND: // 首次发现该元素 firstDetected = firstDetected(betaOrGamma, datasource, nuclideNames); - if (CollUtil.isNotEmpty(firstDetected)){ - String message = "First discovery of nuclides: [" + StrUtil.join(COMMA, firstDetected) + "]"; - alarmInfo.append(message); - } break; case ABOVE_AVERAGE: // 元素浓度高于均值 moreThanAvg = moreThanAvg(datasource,nuclidesCross); - if (CollUtil.isNotEmpty(moreThanAvg)){ - for (NuclideInfo nuclideInfo : moreThanAvg) { - String nuclide = nuclideInfo.getNuclide(); - String threshold = nuclideInfo.getThreshold(); - String message = "Nuclide " + nuclide + " is above average: " + threshold; - alarmInfo.append(COMMA).append(message); - } - } break; case MEANWHILE: // 同时出现两种及以上核素 - if (nuclideNames.size() >= 2){ - String message = "Simultaneously detecting nuclides: [" + StrUtil.join(COMMA, nuclideNames) + "]"; - alarmInfo.append(COMMA).append(message); - } + if (CollUtil.isNotEmpty(nuclideNames) && nuclideNames.size() >= 2) + meanwhile.addAll(nuclideNames); break; default: break; } } } - if (StrUtil.isNotBlank(alarmInfo.toString())){ - // 保存报警日志 - AlarmAnalysisLog logInfo = new AlarmAnalysisLog(); - BeanUtil.copyProperties(info,logInfo); - SampleType sampleType = SampleType.typeOf(betaOrGamma); - if (ObjectUtil.isNotNull(sampleType)) - logInfo.setSampleType(sampleType.getValue()); - if (alarmInfo.toString().startsWith(COMMA)) - alarmInfo = new StringBuilder(StrUtil.sub(alarmInfo.toString(), 1, alarmInfo.length())); - logInfo.setAlarmInfo(alarmInfo.toString()); - if (CollUtil.isNotEmpty(moreThanAvg)) - logInfo.setNuclideInfoList(moreThanAvg); - logService.saveLog(logInfo); - // 发送报警信息 - String groupId = info.getGroupId(); - MessageDTO messageDTO = new MessageDTO(); - messageDTO.setTitle("Nuclied Warn Info").setContent(alarmInfo.toString()); - if (StrUtil.isNotBlank(groupId)) { - systemClient.sendMessage(messageDTO, groupId, ALL.getValue()); - systemClient.pushMessageToSingle(messageDTO, groupId); - } + // 构建预警信息 + DataTool dataTool = DataTool.getInstance(); + if (CollUtil.isNotEmpty(firstDetected)) + dataTool.put("firstDetected", CollUtil.join(firstDetected, StrUtil.COMMA + StrUtil.SPACE)); + if (CollUtil.isNotEmpty(moreThanAvg)){ + String above = moreThanAvg.stream() + .map(item -> item.getNuclide() + "(" + item.getValue() + ")" + " > " + item.getThreshold()) + .collect(Collectors.joining(StrUtil.COMMA + StrUtil.SPACE)); + dataTool.put("moreThanAvg", above); } + if (CollUtil.isNotEmpty(meanwhile)) + dataTool.put("meanwhile", CollUtil.join(meanwhile, StrUtil.COMMA + StrUtil.SPACE)); + // 如果报警数据为空 则不需要发送报警信息和生成报警日志 + if (MapUtil.isEmpty(dataTool.get())) return; + MessageDTO messageDTO = TemplateUtil.parse1(ANALYSIS_NUCLIDE.getCode(), dataTool.get()); + // 保存报警日志 + AlarmAnalysisLog logInfo = new AlarmAnalysisLog(); + BeanUtil.copyProperties(info, logInfo); + SampleType sampleType = SampleType.typeOf(betaOrGamma); + if (ObjectUtil.isNotNull(sampleType)) + logInfo.setSampleType(sampleType.getValue()); + logInfo.setAlarmInfo(messageDTO.getContent()); + if (CollUtil.isNotEmpty(moreThanAvg)) + logInfo.setNuclideInfoList(moreThanAvg); + logService.saveLog(logInfo); + // 发送报警信息 + String groupId = info.getGroupId(); + systemClient.sendMessage(messageDTO, groupId, ALL.getValue()); + systemClient.pushMessageToSingle(messageDTO, groupId); } /** From 4601af9974e9ba489c3f91a9a17df19e2d2475a8 Mon Sep 17 00:00:00 2001 From: nieziyan Date: Fri, 15 Mar 2024 10:17:56 +0800 Subject: [PATCH 03/26] =?UTF-8?q?fix=EF=BC=9A=E4=BD=BF=E7=94=A8=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/modules/base/enums/DSType.java | 16 ++++++++++++---- .../modules/redisStream/AnalysisConsumer.java | 18 ++---------------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/DSType.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/DSType.java index 25ac6382..de9f309d 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/DSType.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/DSType.java @@ -1,10 +1,14 @@ package org.jeecg.modules.base.enums; +import cn.hutool.core.util.StrUtil; +import lombok.Getter; + /** * @author nieziyan * 数据源类型 */ +@Getter public enum DSType { /* ARMD自动处理库 */ ARMDARR("1"), @@ -15,13 +19,17 @@ public enum DSType { /* IDC人工交互库 */ IDCRRR("4"); - DSType(java.lang.String type) { + DSType(String type) { this.type = type; } - private String type; + private final String type; - public String getType() { - return type; + public static String typeOf(String type){ + for (DSType dsType : DSType.values()) { + if (StrUtil.equals(type, dsType.getType())) + return dsType.name(); + } + return null; } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java index 14077b2b..576588e2 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java @@ -28,6 +28,7 @@ import org.jeecg.modules.base.entity.postgre.AlarmAnalysisLog; import org.jeecg.modules.base.entity.postgre.AlarmAnalysisNuclideAvg; import org.jeecg.modules.base.entity.postgre.AlarmAnalysisRule; import org.jeecg.modules.base.enums.Condition; +import org.jeecg.modules.base.enums.DSType; import org.jeecg.modules.feignclient.SystemClient; import org.jeecg.modules.service.AnalysisResultService; import org.jeecg.modules.service.IAlarmAnalysisLogService; @@ -247,28 +248,13 @@ public class AnalysisConsumer implements StreamListener Date: Fri, 15 Mar 2024 10:55:00 +0800 Subject: [PATCH 04/26] =?UTF-8?q?=E4=BA=BA=E5=B7=A5=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E6=A8=A1=E5=9D=97Beta=E5=88=86=E6=9E=90=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=86=85=E5=AE=B9=E5=A2=9E=E5=8A=A0message?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jeecg/common/util/PHDFileUtil.java | 2 ++ .../impl/SpectrumAnalysisServiceImpl.java | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/PHDFileUtil.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/PHDFileUtil.java index d7ae8bf9..94876f3e 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/PHDFileUtil.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/PHDFileUtil.java @@ -1008,6 +1008,7 @@ public class PHDFileUtil extends AbstractLogOrReport { } map.put("DetBoundary", boundaryList); } + map.put("message", analyseResult.error_log); bRet = false; return bRet; } else { @@ -1094,6 +1095,7 @@ public class PHDFileUtil extends AbstractLogOrReport { } map.put("DetBoundary", boundaryList); } + map.put("message", "analyse Success."); return bRet; } } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index 5b7bc57d..5c42e009 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -3831,7 +3831,22 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements map.put("savedAnalysisResult", true); } } else { - map.clear(); + List sampleBoundary = (List) map.get("SampleBoundary"); + if(CollectionUtils.isNotEmpty(sampleBoundary)) { + betaDataFile.setSampleBoundary(sampleBoundary); + } + List gasBoundary = (List) map.get("GasBoundary"); + if(CollectionUtils.isNotEmpty(gasBoundary)) { + betaDataFile.setGasBoundary(gasBoundary); + } + List detBoundary = (List) map.get("DetBoundary"); + if(CollectionUtils.isNotEmpty(detBoundary)) { + betaDataFile.setDetBoundary(detBoundary); + } + List qcBoundary = (List) map.get("QCBoundary"); + if(CollectionUtils.isNotEmpty(qcBoundary)) { + betaDataFile.setQcBoundary(qcBoundary); + } map.put("XeData", Collections.EMPTY_LIST); } } catch (Exception e) { From 797552ea9c547a21f232bc313af64310ff8ac265 Mon Sep 17 00:00:00 2001 From: xiaoguangbin Date: Fri, 15 Mar 2024 11:57:33 +0800 Subject: [PATCH 05/26] =?UTF-8?q?fix:=20=E4=BA=BA=E5=B7=A5=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E6=A8=A1=E5=9D=97Beta=E5=88=86=E6=9E=90=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E4=BF=AE=E6=94=B9=20=E4=BA=BA=E5=B7=A5?= =?UTF-8?q?=E4=BA=A4=E4=BA=92=E6=A8=A1=E5=9D=97Gamma=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=97=A0=E6=95=88=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/controller/GammaController.java | 6 - .../jeecg/modules/service/IGammaService.java | 2 - .../service/impl/GammaServiceImpl.java | 213 ------------------ .../impl/SpectrumAnalysisServiceImpl.java | 26 ++- 4 files changed, 20 insertions(+), 227 deletions(-) diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java index 2fd05653..0baccfa7 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java @@ -33,12 +33,6 @@ public class GammaController { gammaService.initValue(sampleId, dbName, analyst, fileName, request); } - - @GetMapping("testFun") - public Result testFun(String fileName,HttpServletRequest request){ - return gammaService.testFun(fileName, request); - } - @GetMapping("gammaByDB") @ApiOperation(value = "gamma页面loadFromDB加载数据", notes = "gamma页面loadFromDB加载数据") public Result gammaByDB(Integer sampleId, String dbName, String analyst, HttpServletRequest request){ diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java index 205d57ec..642e9145 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java @@ -17,8 +17,6 @@ public interface IGammaService{ void initValue(Integer sampleId, String dbName, String analyst, String fileName, HttpServletRequest request); - Result testFun(String fileName, HttpServletRequest request); - Result gammaByDB(String dbName, Integer sampleId, String analyst, HttpServletRequest request); Result gammaByFile(String fileName, HttpServletRequest request); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java index 54f6cd89..761ca62a 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java @@ -164,219 +164,6 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } } - @Override - public Result testFun(String fileName, HttpServletRequest request) { - Result result = new Result(); - String userName = JwtUtil.getUserNameByToken(request); - Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); - phd.setUserId("1"); - phd.setXmlFilePath(parameterProperties.getFilePath()); - String systemType = fileName.substring(2, 3); - if (Objects.isNull(phd)) { - result.error500("Please select the parse file first!"); - return result; - } - Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); - // 解析获取临时文件信息 - File tmpFile = gammaFileUtil.analyzeFile(ftpUtil.getFtpRootPath() + spectrumPathProperties.getUploadPath() + StringPool.SLASH + userName, fileName); - ObjectMapper mapper = new ObjectMapper(); - try { - String phdStr = mapper.writeValueAsString(phd); - String mapLines = mapper.writeValueAsString(nuclideLinesMap); - String strValue = CalValuesHandler.analyseSpectrum(phdStr, mapLines, tmpFile.getAbsolutePath(), new AnalysisProcess()); - Map parseMap = JSON.parseObject(strValue, Map.class); - for (Map.Entry entry : parseMap.entrySet()) { - if (entry.getKey().equalsIgnoreCase("bAnalyed")) { - boolean value = JSON.parseObject(JSON.toJSONString(entry.getValue()), Boolean.class); - phd.setBAnalyed(value); - } - 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()) { - String key = objectEntry.getKey(); - ParameterInfo entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), ParameterInfo.class); - value.put(key, entryValue); - } - phd.setMapEnerPara(value); - } - 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()) { - String key = objectEntry.getKey(); - ParameterInfo entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), ParameterInfo.class); - value.put(key, entryValue); - } - phd.setMapResoPara(value); - } - 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()) { - String key = objectEntry.getKey(); - ParameterInfo entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), ParameterInfo.class); - value.put(key, entryValue); - } - phd.setMapEffiPara(value); - } - 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()) { - String key = objectEntry.getKey(); - ParameterInfo entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), ParameterInfo.class); - value.put(key, entryValue); - } - phd.setMapTotEPara(value); - } - if (entry.getKey().equalsIgnoreCase("para_stepRatio")) { - ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); - phd.setPara_stepRatio(value); - } - if (entry.getKey().equalsIgnoreCase("para_tail")) { - ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); - phd.setPara_tail(value); - } - if (entry.getKey().equalsIgnoreCase("para_tailAlpha")) { - ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); - phd.setPara_tailAlpha(value); - } - if (entry.getKey().equalsIgnoreCase("para_tailRight")) { - ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); - phd.setPara_tailRight(value); - } - if (entry.getKey().equalsIgnoreCase("para_tailRightAlpha")) { - ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); - phd.setPara_tailRightAlpha(value); - } - if (entry.getKey().equalsIgnoreCase("newEner")) { - String value = JSON.parseObject(JSON.toJSONString(entry.getValue()), String.class); - phd.setNewEner(value); - } - if (entry.getKey().equalsIgnoreCase("newReso")) { - String value = JSON.parseObject(JSON.toJSONString(entry.getValue()), String.class); - phd.setNewReso(value); - } - 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()) { - String key = objectEntry.getKey(); - GEnergyBlock entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), GEnergyBlock.class); - value.put(key, entryValue); - } - phd.setMapEnerKD(value); - } - 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()) { - String key = objectEntry.getKey(); - GResolutionBlock entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), GResolutionBlock.class); - value.put(key, entryValue); - } - phd.setMapResoKD(value); - } - if (entry.getKey().equalsIgnoreCase("vEnergy")) { - List value = JSON.parseArray(JSON.toJSONString(entry.getValue()), Double.class); - phd.setVEnergy(value); - } - if (entry.getKey().equalsIgnoreCase("vBase")) { - List value = JSON.parseArray(JSON.toJSONString(entry.getValue()), Double.class); - phd.setVBase(value); - } - if (entry.getKey().equalsIgnoreCase("vLc")) { - List value = JSON.parseArray(JSON.toJSONString(entry.getValue()), Double.class); - phd.setVLc(value); - } - if (entry.getKey().equalsIgnoreCase("vScac")) { - List value = JSON.parseArray(JSON.toJSONString(entry.getValue()), Double.class); - phd.setVScac(value); - } - if (entry.getKey().equalsIgnoreCase("vPeak")) { - List value = JSON.parseArray(JSON.toJSONString(entry.getValue()), PeakInfo.class); - phd.setVPeak(value); - } - if (entry.getKey().equalsIgnoreCase("baseCtrls")) { - BaseControls value = JSON.parseObject(JSON.toJSONString(entry.getValue()), BaseControls.class); - phd.setBaseCtrls(value); - } - if (entry.getKey().equalsIgnoreCase("usedEner")) { - String value = JSON.parseObject(JSON.toJSONString(entry.getValue()), String.class); - phd.setUsedEner(value); - } - if (entry.getKey().equalsIgnoreCase("usedEnerKD")) { - GEnergyBlock value = JSON.parseObject(JSON.toJSONString(entry.getValue()), GEnergyBlock.class); - phd.setUsedEnerKD(value); - } - if (entry.getKey().equalsIgnoreCase("usedEnerPara")) { - ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); - phd.setUsedEnerPara(value); - } - if (entry.getKey().equalsIgnoreCase("usedReso")) { - String value = JSON.parseObject(JSON.toJSONString(entry.getValue()), String.class); - phd.setUsedReso(value); - } - if (entry.getKey().equalsIgnoreCase("usedResoKD")) { - GResolutionBlock value = JSON.parseObject(JSON.toJSONString(entry.getValue()), GResolutionBlock.class); - phd.setUsedResoKD(value); - } - if (entry.getKey().equalsIgnoreCase("usedResoPara")) { - ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); - phd.setUsedResoPara(value); - } - if (entry.getKey().equalsIgnoreCase("usedEffi")) { - String value = JSON.parseObject(JSON.toJSONString(entry.getValue()), String.class); - phd.setUsedEffi(value); - } - if (entry.getKey().equalsIgnoreCase("usedEffiKD")) { - GEfficiencyBlock value = JSON.parseObject(JSON.toJSONString(entry.getValue()), GEfficiencyBlock.class); - phd.setUsedEffiKD(value); - } - if (entry.getKey().equalsIgnoreCase("usedEffiPara")) { - ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); - phd.setUsedEffiPara(value); - } - if (entry.getKey().equalsIgnoreCase("usedTotE")) { - String value = JSON.parseObject(JSON.toJSONString(entry.getValue()), String.class); - phd.setUsedTotE(value); - } - if (entry.getKey().equalsIgnoreCase("usedTotEKD")) { - TotaleffBlock value = JSON.parseObject(JSON.toJSONString(entry.getValue()), TotaleffBlock.class); - phd.setUsedTotEKD(value); - } - if (entry.getKey().equalsIgnoreCase("usedTotEPara")) { - ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); - phd.setUsedTotEPara(value); - } - } - BeanUtils.copyProperties(phd.getSetting(), phd.getUsedSetting()); - - for (PeakInfo info:phd.getVPeak()) { - if (Objects.isNull(info.recoilBetaChan)) { - info.recoilBetaChan = "nan"; - } - if (Objects.isNull(info.recoilDeltaChan)) { - info.recoilDeltaChan = "nan"; - } - } - // 重新分析各峰值对应的核素信息 - gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap); - gammaFileUtil.RunQC(phd); - result.setResult(phd); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } finally { - if (Objects.nonNull(tmpFile)) { - tmpFile.delete(); - } - } - result.setSuccess(true); - return result; - } - @Override public Result gammaByDB(String dbName, Integer sampleId, String analyst, HttpServletRequest request) { Result result = new Result(); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index 5c42e009..6aae26ee 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -3268,17 +3268,11 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements return result; } map = BetaGammaAnalyzeCurrentProcess(analyseData, betaDataFile); - map.put("bProcessed", true); - map.put("savedAnalysisResult", true); result.setSuccess(true); result.setResult(map); } else if ("AllSpectrum".equals(analyseData.getApplyType())) { //获取当前选中的文件名称 map = BetaGammaAnalyzeAllProcess(analyseData, userName, currentFileName); - if (CollectionUtils.isNotEmpty(map)) { - map.put("bProcessed", true); - map.put("savedAnalysisResult", true); - } result.setSuccess(true); result.setResult(map); } @@ -3473,6 +3467,8 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements betaDataFile.setSaveAnalysisResult(true); betaDataFile.setBgPara(spectrum_group.BgCalPara); } + xeMap.put("bProcessed", true); + xeMap.put("savedAnalysisResult", true); } else { List sampleBoundary = (List) xeMap.get("SampleBoundary"); if(CollectionUtils.isNotEmpty(sampleBoundary)) { @@ -3490,7 +3486,11 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements if(CollectionUtils.isNotEmpty(qcBoundary)) { betaDataFile.setQcBoundary(qcBoundary); } + betaDataFile.setBProcessed(false); + betaDataFile.setSaveAnalysisResult(false); xeMap.put("XeData", Collections.EMPTY_LIST); + xeMap.put("bProcessed", false); + xeMap.put("savedAnalysisResult", false); } } } catch (Exception e) { @@ -3704,6 +3704,8 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements sampleBetaData.setSaveAnalysisResult(true); sampleBetaData.setBgPara(spectrum_group.BgCalPara); } + xeMap.put("bProcessed", true); + xeMap.put("savedAnalysisResult", true); analyseResultMap.put(sampleFileName, xeMap); } else { List sampleBoundary = (List) xeMap.get("SampleBoundary"); @@ -3722,7 +3724,11 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements if(CollectionUtils.isNotEmpty(qcBoundary)) { sampleBetaData.setQcBoundary(qcBoundary); } + sampleBetaData.setBProcessed(false); + sampleBetaData.setSaveAnalysisResult(false); xeMap.put("XeData", Collections.EMPTY_LIST); + xeMap.put("bProcessed", false); + xeMap.put("savedAnalysisResult", false); analyseResultMap.put(sampleFileName, xeMap); } } @@ -3848,6 +3854,10 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements betaDataFile.setQcBoundary(qcBoundary); } map.put("XeData", Collections.EMPTY_LIST); + betaDataFile.setBProcessed(false); + betaDataFile.setSaveAnalysisResult(false); + map.put("bProcessed", false); + map.put("savedAnalysisResult", false); } } catch (Exception e) { e.printStackTrace(); @@ -3969,6 +3979,10 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements betaDataFile.setQcBoundary(qcBoundary); } map.put("XeData", Collections.EMPTY_LIST); + betaDataFile.setBProcessed(false); + betaDataFile.setSaveAnalysisResult(false); + map.put("bProcessed", false); + map.put("savedAnalysisResult", false); mapList.put(sampleFileName, map); } } From 9e115f1469dc115ffe913e6a191382a8738d80ed Mon Sep 17 00:00:00 2001 From: xiaoguangbin Date: Fri, 15 Mar 2024 15:57:43 +0800 Subject: [PATCH 06/26] =?UTF-8?q?fix:=20=E4=BA=BA=E5=B7=A5=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E6=A8=A1=E5=9D=97Beta=E5=88=86=E6=9E=90=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=8E=A5=E5=8F=A3=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=AD=97=E6=AE=B5=E6=98=AF=E5=90=A6=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/service/impl/SpectrumAnalysisServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index 6aae26ee..3ba9b3f8 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -4086,6 +4086,11 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements //从本地缓存获取beta gamma的数组 Cache cache = betaCache.getBetaCache(); BetaDataFile betaDataFile = cache.getIfPresent(anlyseResultIn.getSampleFileName() + "-" + userName); + //判断保存分析结果标识 + if (!betaDataFile.isSaveAnalysisResult()) { + result.error500("Please first Analyse File!"); + return result; + } List betaList = new LinkedList<>(); List betaFittingPara = new LinkedList<>(); List gammaList = new LinkedList<>(); From 74bc9be6f14b2d37dd06df1fb4e43eb9dafd2eb0 Mon Sep 17 00:00:00 2001 From: xiaoguangbin Date: Fri, 15 Mar 2024 16:00:17 +0800 Subject: [PATCH 07/26] =?UTF-8?q?fix:=20=E4=BA=BA=E5=B7=A5=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E6=A8=A1=E5=9D=97Beta=E5=88=86=E6=9E=90=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=8E=A5=E5=8F=A3=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=AD=97=E6=AE=B5=E6=98=AF=E5=90=A6=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index 3ba9b3f8..63dd3cae 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -4087,7 +4087,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements Cache cache = betaCache.getBetaCache(); BetaDataFile betaDataFile = cache.getIfPresent(anlyseResultIn.getSampleFileName() + "-" + userName); //判断保存分析结果标识 - if (!betaDataFile.isSaveAnalysisResult()) { + if (Objects.nonNull(betaDataFile) && !betaDataFile.isSaveAnalysisResult()) { result.error500("Please first Analyse File!"); return result; } From ae61227d1a624d96d3aa5cef4d4f69c34c765606 Mon Sep 17 00:00:00 2001 From: xiaoguangbin Date: Fri, 15 Mar 2024 17:38:10 +0800 Subject: [PATCH 08/26] =?UTF-8?q?fix:=20=E4=BA=BA=E5=B7=A5=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E6=A8=A1=E5=9D=97Beta=E5=AD=98=E5=82=A8=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=96=87=E4=BB=B6=E6=9F=A5=E6=89=BE=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D=E7=A7=B0=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/service/impl/SpectrumAnalysisServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index 63dd3cae..e1482439 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -4336,12 +4336,13 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements String logFileName = analyses_absolute_LogPath.substring(analyses_absolute_LogPath.lastIndexOf(StringPool.SLASH)+1); //获取日志的文件存放路径 String logFilePath = parameterProperties.getLogFilePath() + File.separator + DateUtils.formatDate(new Date(), "yyyy-MM-dd"); + String localLogName = betaDataFile.getSampleFileName().replace("PHD", "log"); //判断文件路径是否存在 File logPath = new File(logFilePath); if (!logPath.exists()) { logPath.mkdirs(); } - File logFile = new File(logFilePath + File.separator +logFileName); + File logFile = new File(logFilePath + File.separator +localLogName); try { //判断日志文件是否存在 如果不存在创建一个空的文件 上传到ftp if (!logFile.exists()) { From 2eb2e52e514f6e3cfdce4dcffd697cb02ec3574f Mon Sep 17 00:00:00 2001 From: qiaoqinzheng Date: Tue, 19 Mar 2024 16:55:15 +0800 Subject: [PATCH 09/26] =?UTF-8?q?=E4=BA=BA=E5=B7=A5=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E5=88=86=E6=9E=90=E6=A8=A1=E5=9D=97Beta=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E5=89=8D=E7=9A=84=E5=88=86=E6=9E=90=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E7=A7=BB=E9=99=A4=EF=BC=8C=E6=A0=B9=E6=8D=AE=E5=88=86?= =?UTF-8?q?=E6=9E=90=E7=BB=93=E6=9E=9C=E6=95=B0=E6=8D=AE=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GardsCalibrationSpectrumMapper.java | 3 + .../xml/GardsCalibrationSpectrumMapper.xml | 28 + ...IGardsCalibrationPairsSpectrumService.java | 3 +- .../IGardsCalibrationSpectrumService.java | 3 +- .../IGardsROIChannelsSpectrumService.java | 3 +- .../IGardsROIResultsSpectrumService.java | 3 +- .../IGardsXeResultsSpectrumService.java | 3 +- ...dsCalibrationPairsSpectrumServiceImpl.java | 91 +- .../GardsCalibrationSpectrumServiceImpl.java | 121 ++- .../GardsROIChannelsSpectrumServiceImpl.java | 50 +- .../GardsROIResultsSpectrumServiceImpl.java | 26 +- .../GardsXeResultsSpectrumServiceImpl.java | 8 +- .../impl/SpectrumAnalysisServiceImpl.java | 994 +++++------------- 13 files changed, 589 insertions(+), 747 deletions(-) diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsCalibrationSpectrumMapper.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsCalibrationSpectrumMapper.java index 3f24e6f8..a411196d 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsCalibrationSpectrumMapper.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsCalibrationSpectrumMapper.java @@ -7,6 +7,9 @@ import org.jeecg.modules.base.entity.rnman.GardsCalibration; public interface GardsCalibrationSpectrumMapper extends BaseMapper { + @InterceptorIgnore(tenantLine = "true") + void insertCalibration(@Param(value = "calibration") GardsCalibration calibration); + @InterceptorIgnore(tenantLine = "true") void insertCalibrationGamma(@Param(value = "calibration") GardsCalibration calibration); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsCalibrationSpectrumMapper.xml b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsCalibrationSpectrumMapper.xml index 5f18eb40..58da4e85 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsCalibrationSpectrumMapper.xml +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsCalibrationSpectrumMapper.xml @@ -2,6 +2,34 @@ + + INSERT INTO + RNMAN.GARDS_CALIBRATION( + SAMPLE_ID, + IDANALYSIS, + SAMPLE_TYPE, + CALTYPE, + FUNCTION, + FUNCTIONDEF, + STARTOFRANGE, + ENDOFRANGE, + COEFF1, + COEFF2, + COEFF3) + VALUES(#{calibration.sampleId}, + #{calibration.idAnalysis}, + #{calibration.sampleType}, + #{calibration.calType}, + #{calibration.function}, + #{calibration.functionDef}, + #{calibration.startOfRange}, + #{calibration.endOfRange}, + #{calibration.coeff1}, + #{calibration.coeff2}, + #{calibration.coeff3}) + + + INSERT INTO RNMAN.GARDS_CALIBRATION( diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsCalibrationPairsSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsCalibrationPairsSpectrumService.java index 508e5d9b..69a96631 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsCalibrationPairsSpectrumService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsCalibrationPairsSpectrumService.java @@ -2,6 +2,7 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.base.entity.rnman.GardsCalibrationPairs; +import org.jeecg.modules.entity.vo.BgDataAnlyseResultIn; import org.jeecg.modules.entity.vo.GStoreMiddleProcessData; import org.jeecg.modules.entity.vo.PHDFile; @@ -9,7 +10,7 @@ import java.util.List; public interface IGardsCalibrationPairsSpectrumService extends IService { - int saveGardsCalibrationPairs(List calibrationPairsList); + int saveGardsCalibrationPairs(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer gasId, Integer detId, Integer idAnalysis); int saveGardsCalibrationPairsGamma(GStoreMiddleProcessData middleData, Integer sampleId, String idAnalysis); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsCalibrationSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsCalibrationSpectrumService.java index c76067b0..f4e2a2f7 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsCalibrationSpectrumService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsCalibrationSpectrumService.java @@ -2,13 +2,14 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.base.entity.rnman.GardsCalibration; +import org.jeecg.modules.entity.vo.BgDataAnlyseResultIn; import org.jeecg.modules.entity.vo.GStoreMiddleProcessData; import java.util.List; public interface IGardsCalibrationSpectrumService extends IService { - int saveGardsCalibration(List calibrationPairsList); + int saveGardsCalibration(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer gasId, Integer detId, Integer idAnalysis); int saveCalibrationGamma(GStoreMiddleProcessData middleData, Integer sampleId, String idAnalysis); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsROIChannelsSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsROIChannelsSpectrumService.java index 90b781d4..a94e6f63 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsROIChannelsSpectrumService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsROIChannelsSpectrumService.java @@ -2,11 +2,12 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.base.entity.rnman.GardsRoiChannels; +import org.jeecg.modules.entity.vo.BgDataAnlyseResultIn; import java.util.List; public interface IGardsROIChannelsSpectrumService extends IService { - int saveGardsROIChannels(List roiChannelsList); + int saveGardsROIChannels(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer gasId, Integer detId, Integer idAnalysis); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsROIResultsSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsROIResultsSpectrumService.java index eed0f3d2..9a583e07 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsROIResultsSpectrumService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsROIResultsSpectrumService.java @@ -2,11 +2,12 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.base.entity.rnman.GardsRoiResults; +import org.jeecg.modules.entity.vo.BgDataAnlyseResultIn; import java.util.List; public interface IGardsROIResultsSpectrumService extends IService { - int saveGardsROIResults(List roiResultsList); + int saveGardsROIResults(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer idAnalysis); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsXeResultsSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsXeResultsSpectrumService.java index 800d3726..a6cfecae 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsXeResultsSpectrumService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsXeResultsSpectrumService.java @@ -2,11 +2,12 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.base.entity.rnman.GardsXeResults; +import org.jeecg.modules.entity.vo.BgDataAnlyseResultIn; import java.util.List; public interface IGardsXeResultsSpectrumService extends IService { - int saveGardsXeResults(List xeResultsList); + int saveGardsXeResults(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer idAnalysis); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationPairsSpectrumServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationPairsSpectrumServiceImpl.java index 0f70be56..210e7cc2 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationPairsSpectrumServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationPairsSpectrumServiceImpl.java @@ -4,6 +4,10 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.base.entity.rnman.GardsCalibrationPairs; +import org.jeecg.modules.base.enums.CalName; +import org.jeecg.modules.base.enums.CalType; +import org.jeecg.modules.base.enums.SystemType; +import org.jeecg.modules.entity.vo.BgDataAnlyseResultIn; import org.jeecg.modules.entity.vo.GStoreMiddleProcessData; import org.jeecg.modules.entity.vo.PHDFile; import org.jeecg.modules.entity.GardsCalibrationPairsSpectrum; @@ -22,7 +26,92 @@ public class GardsCalibrationPairsSpectrumServiceImpl extends ServiceImpl calibrationPairsList) { + public int saveGardsCalibrationPairs(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer gasId, Integer detId, Integer idAnalysis) { + List calibrationPairsList = new LinkedList<>(); + if (CollectionUtils.isNotEmpty(anlyseResultIn.getB_channel_sample())) { + for (int i=0; i< anlyseResultIn.getB_channel_sample().size(); i++){ + GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); + calibrationPairs.setSampleId(sampleId); + calibrationPairs.setIdAnalysis(idAnalysis); + calibrationPairs.setSampleType(SystemType.BETA.getType()); + calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); + calibrationPairs.setInput(CalName.CalPHD.getType()); + calibrationPairs.setIdCalPoint(i); + calibrationPairs.setXValue(anlyseResultIn.getB_channel_sample().get(i)); + calibrationPairs.setYValue(anlyseResultIn.getB_energy_sample().get(i)); + calibrationPairsList.add(calibrationPairs); + } + } + if (CollectionUtils.isNotEmpty(anlyseResultIn.getG_channel_sample())) { + for (int i=0; i< anlyseResultIn.getG_channel_sample().size(); i++){ + GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); + calibrationPairs.setSampleId(sampleId); + calibrationPairs.setIdAnalysis(idAnalysis); + calibrationPairs.setSampleType(SystemType.GAMMA.getType()); + calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); + calibrationPairs.setInput(CalName.CalPHD.getType()); + calibrationPairs.setIdCalPoint(i); + calibrationPairs.setXValue(anlyseResultIn.getG_channel_sample().get(i)); + calibrationPairs.setYValue(anlyseResultIn.getG_energy_sample().get(i)); + calibrationPairsList.add(calibrationPairs); + } + } + if (CollectionUtils.isNotEmpty(anlyseResultIn.getB_channel_gas())) { + for (int i=0; i< anlyseResultIn.getB_channel_gas().size(); i++){ + GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); + calibrationPairs.setSampleId(gasId); + calibrationPairs.setIdAnalysis(idAnalysis); + calibrationPairs.setSampleType(SystemType.BETA.getType()); + calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); + calibrationPairs.setInput(CalName.CalPHD.getType()); + calibrationPairs.setIdCalPoint(i); + calibrationPairs.setXValue(anlyseResultIn.getB_channel_gas().get(i)); + calibrationPairs.setYValue(anlyseResultIn.getB_energy_gas().get(i)); + calibrationPairsList.add(calibrationPairs); + } + } + if (CollectionUtils.isNotEmpty(anlyseResultIn.getG_channel_gas())) { + for (int i=0; i< anlyseResultIn.getG_channel_gas().size(); i++){ + GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); + calibrationPairs.setSampleId(gasId); + calibrationPairs.setIdAnalysis(idAnalysis); + calibrationPairs.setSampleType(SystemType.GAMMA.getType()); + calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); + calibrationPairs.setInput(CalName.CalPHD.getType()); + calibrationPairs.setIdCalPoint(i); + calibrationPairs.setXValue(anlyseResultIn.getG_channel_gas().get(i)); + calibrationPairs.setYValue(anlyseResultIn.getG_energy_gas().get(i)); + calibrationPairsList.add(calibrationPairs); + } + } + if (CollectionUtils.isNotEmpty(anlyseResultIn.getB_channel_det())) { + for (int i=0; i< anlyseResultIn.getB_channel_det().size(); i++){ + GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); + calibrationPairs.setSampleId(detId); + calibrationPairs.setIdAnalysis(idAnalysis); + calibrationPairs.setSampleType(SystemType.BETA.getType()); + calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); + calibrationPairs.setInput(CalName.CalPHD.getType()); + calibrationPairs.setIdCalPoint(i); + calibrationPairs.setXValue(anlyseResultIn.getB_channel_det().get(i)); + calibrationPairs.setYValue(anlyseResultIn.getB_energy_det().get(i)); + calibrationPairsList.add(calibrationPairs); + } + } + if (CollectionUtils.isNotEmpty(anlyseResultIn.getG_channel_det())) { + for (int i=0; i< anlyseResultIn.getG_channel_det().size(); i++){ + GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); + calibrationPairs.setSampleId(detId); + calibrationPairs.setIdAnalysis(idAnalysis); + calibrationPairs.setSampleType(SystemType.GAMMA.getType()); + calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); + calibrationPairs.setInput(CalName.CalPHD.getType()); + calibrationPairs.setIdCalPoint(i); + calibrationPairs.setXValue(anlyseResultIn.getG_channel_det().get(i)); + calibrationPairs.setYValue(anlyseResultIn.getG_energy_det().get(i)); + calibrationPairsList.add(calibrationPairs); + } + } if (CollectionUtils.isNotEmpty(calibrationPairsList)) { this.saveBatch(calibrationPairsList); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationSpectrumServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationSpectrumServiceImpl.java index ba21ac82..dd4f6f30 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationSpectrumServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationSpectrumServiceImpl.java @@ -4,6 +4,12 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.base.entity.rnman.GardsCalibration; +import org.jeecg.modules.base.enums.CalType; +import org.jeecg.modules.base.enums.DataTypeAbbr; +import org.jeecg.modules.base.enums.FittingType; +import org.jeecg.modules.base.enums.SystemType; +import org.jeecg.modules.entity.GardsCalibrationSpectrum; +import org.jeecg.modules.entity.vo.BgDataAnlyseResultIn; import org.jeecg.modules.entity.vo.GStoreMiddleProcessData; import org.jeecg.modules.mapper.GardsCalibrationSpectrumMapper; import org.jeecg.modules.service.IGardsCalibrationSpectrumService; @@ -12,6 +18,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.LinkedList; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; @Service("gardsCalibrationSpectrumService") @DS("ora") @@ -20,11 +28,116 @@ public class GardsCalibrationSpectrumServiceImpl extends ServiceImpl calibrationPairsList) { - if (CollectionUtils.isNotEmpty(calibrationPairsList)) { - this.saveBatch(calibrationPairsList); + public int saveGardsCalibration(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer gasId, Integer detId, Integer idAnalysis) { + List calibrationSpectrumList = new LinkedList<>(); + if (Objects.nonNull(sampleId)) { + GardsCalibration calibrationB = new GardsCalibration(); + calibrationB.setSampleId(sampleId); + calibrationB.setIdAnalysis(idAnalysis); + calibrationB.setSampleType(SystemType.BETA.getType()); + calibrationB.setCalType(CalType.ENERGY_CAL.getType()); + calibrationB.setFunction(FittingType.POLY2.getCode()); + calibrationB.setFunctionDef(FittingType.POLY2.getDescription()); + calibrationB.setStartOfRange(0); + calibrationB.setEndOfRange(1); + List betaCollect = anlyseResultIn.getBetaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.SAMPLEPHD.getType())).collect(Collectors.toList()); + GardsCalibrationSpectrum betaCalibrationSpectrum = betaCollect.get(0); + calibrationB.setCoeff1(Double.valueOf(betaCalibrationSpectrum.getCoeff1())); + calibrationB.setCoeff2(Double.valueOf(betaCalibrationSpectrum.getCoeff2())); + calibrationB.setCoeff3(Double.valueOf(betaCalibrationSpectrum.getCoeff3())); + calibrationSpectrumList.add(calibrationB); + + GardsCalibration calibrationG = new GardsCalibration(); + calibrationG.setSampleId(sampleId); + calibrationG.setIdAnalysis(idAnalysis); + calibrationG.setSampleType(SystemType.GAMMA.getType()); + calibrationG.setCalType(CalType.ENERGY_CAL.getType()); + calibrationG.setFunction(FittingType.POLY2.getCode()); + calibrationG.setFunctionDef(FittingType.POLY2.getDescription()); + calibrationG.setStartOfRange(0); + calibrationG.setEndOfRange(1); + List gammaCollect = anlyseResultIn.getGammaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.SAMPLEPHD.getType())).collect(Collectors.toList()); + GardsCalibrationSpectrum gammaCalibrationSpectrum = gammaCollect.get(0); + calibrationG.setCoeff1(Double.valueOf(gammaCalibrationSpectrum.getCoeff1())); + calibrationG.setCoeff2(Double.valueOf(gammaCalibrationSpectrum.getCoeff2())); + calibrationG.setCoeff3(Double.valueOf(gammaCalibrationSpectrum.getCoeff3())); + calibrationSpectrumList.add(calibrationG); } - return calibrationPairsList.size(); + + if (Objects.nonNull(gasId)) { + //gas文件 Beta部分 + GardsCalibration calibrationB = new GardsCalibration(); + calibrationB.setSampleId(gasId); + calibrationB.setIdAnalysis(idAnalysis); + calibrationB.setSampleType(SystemType.BETA.getType()); + calibrationB.setCalType(CalType.ENERGY_CAL.getType()); + calibrationB.setFunction(FittingType.POLY2.getCode()); + calibrationB.setFunctionDef(FittingType.POLY2.getDescription()); + calibrationB.setStartOfRange(0); + calibrationB.setEndOfRange(1); + List betaCollect = anlyseResultIn.getBetaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.GASBKPHD.getType())).collect(Collectors.toList()); + GardsCalibrationSpectrum betaCalibrationSpectrum = betaCollect.get(0); + calibrationB.setCoeff1(Double.valueOf(betaCalibrationSpectrum.getCoeff1())); + calibrationB.setCoeff2(Double.valueOf(betaCalibrationSpectrum.getCoeff2())); + calibrationB.setCoeff3(Double.valueOf(betaCalibrationSpectrum.getCoeff3())); + calibrationSpectrumList.add(calibrationB); + //gas文件 gamma部分 + GardsCalibration calibrationG = new GardsCalibration(); + calibrationG.setSampleId(gasId); + calibrationG.setIdAnalysis(idAnalysis); + calibrationG.setSampleType(SystemType.GAMMA.getType()); + calibrationG.setCalType(CalType.ENERGY_CAL.getType()); + calibrationG.setFunction(FittingType.POLY2.getCode()); + calibrationG.setFunctionDef(FittingType.POLY2.getDescription()); + calibrationG.setStartOfRange(0); + calibrationG.setEndOfRange(1); + List gammaCollect = anlyseResultIn.getGammaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.GASBKPHD.getType())).collect(Collectors.toList()); + GardsCalibrationSpectrum gammaCalibrationSpectrum = gammaCollect.get(0); + calibrationG.setCoeff1(Double.valueOf(gammaCalibrationSpectrum.getCoeff1())); + calibrationG.setCoeff2(Double.valueOf(gammaCalibrationSpectrum.getCoeff2())); + calibrationG.setCoeff3(Double.valueOf(gammaCalibrationSpectrum.getCoeff3())); + calibrationSpectrumList.add(calibrationG); + } + + if (Objects.nonNull(detId)) { + GardsCalibration calibrationB = new GardsCalibration(); + calibrationB.setSampleId(detId); + calibrationB.setIdAnalysis(idAnalysis); + calibrationB.setSampleType(SystemType.BETA.getType()); + calibrationB.setCalType(CalType.ENERGY_CAL.getType()); + calibrationB.setFunction(FittingType.POLY2.getCode()); + calibrationB.setFunctionDef(FittingType.POLY2.getDescription()); + calibrationB.setStartOfRange(0); + calibrationB.setEndOfRange(1); + List betaCollect = anlyseResultIn.getBetaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.DETBKPHD.getType())).collect(Collectors.toList()); + GardsCalibrationSpectrum betaCalibrationSpectrum = betaCollect.get(0); + calibrationB.setCoeff1(Double.valueOf(betaCalibrationSpectrum.getCoeff1())); + calibrationB.setCoeff2(Double.valueOf(betaCalibrationSpectrum.getCoeff2())); + calibrationB.setCoeff3(Double.valueOf(betaCalibrationSpectrum.getCoeff3())); + calibrationSpectrumList.add(calibrationB); + GardsCalibration calibrationG = new GardsCalibration(); + calibrationG.setSampleId(detId); + calibrationG.setIdAnalysis(idAnalysis); + calibrationG.setSampleType(SystemType.GAMMA.getType()); + calibrationG.setCalType(CalType.ENERGY_CAL.getType()); + calibrationG.setFunction(FittingType.POLY2.getCode()); + calibrationG.setFunctionDef(FittingType.POLY2.getDescription()); + calibrationG.setStartOfRange(0); + calibrationG.setEndOfRange(1); + List gammaCollect = anlyseResultIn.getGammaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.DETBKPHD.getType())).collect(Collectors.toList()); + GardsCalibrationSpectrum gammaCalibrationSpectrum = gammaCollect.get(0); + calibrationG.setCoeff1(Double.valueOf(gammaCalibrationSpectrum.getCoeff1())); + calibrationG.setCoeff2(Double.valueOf(gammaCalibrationSpectrum.getCoeff2())); + calibrationG.setCoeff3(Double.valueOf(gammaCalibrationSpectrum.getCoeff3())); + calibrationSpectrumList.add(calibrationG); + } + + if (CollectionUtils.isNotEmpty(calibrationSpectrumList)) { + for (GardsCalibration calibration:calibrationSpectrumList) { + this.baseMapper.insertCalibration(calibration); + } + } + return calibrationSpectrumList.size(); } @Override diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsROIChannelsSpectrumServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsROIChannelsSpectrumServiceImpl.java index 3ef84935..6cf29d63 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsROIChannelsSpectrumServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsROIChannelsSpectrumServiceImpl.java @@ -4,12 +4,18 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.base.entity.rnman.GardsRoiChannels; +import org.jeecg.modules.base.enums.DataType; +import org.jeecg.modules.base.enums.DataTypeAbbr; +import org.jeecg.modules.entity.GardsROIChannelsSpectrum; +import org.jeecg.modules.entity.vo.BgDataAnlyseResultIn; import org.jeecg.modules.mapper.GardsROIChannelsSpectrumMapper; import org.jeecg.modules.service.IGardsROIChannelsSpectrumService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; @Service("roiChannelsService") @DS("ora") @@ -17,7 +23,49 @@ public class GardsROIChannelsSpectrumServiceImpl extends ServiceImpl roiChannelsList) { + public int saveGardsROIChannels(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer gasId, Integer detId, Integer idAnalysis) { + List roiChannelsList = new LinkedList<>(); + List roiChannelsSpectrumList = anlyseResultIn.getRoiChannelsSpectrumList(); + //过滤出sample相关的数据 + List sampleRoiChannelsSpectrumList = roiChannelsSpectrumList.stream().filter(item-> item.getDataType().equals(DataTypeAbbr.SAMPLEPHD.getType())).collect(Collectors.toList()); + for (int i=0; i gasRoiChannelsSpectrumList = roiChannelsSpectrumList.stream().filter(item-> item.getDataType().equals(DataTypeAbbr.GASBKPHD.getType())).collect(Collectors.toList()); + for (int i=0; i detRoiChannelsSpectrumList = roiChannelsSpectrumList.stream().filter(item-> item.getDataType().equals(DataTypeAbbr.DETBKPHD.getType())).collect(Collectors.toList()); + for (int i=0; i implements IGardsROIResultsSpectrumService { @Override - public int saveGardsROIResults(List roiResultsList) { + public int saveGardsROIResults(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer idAnalysis) { + List roiResultsList = new LinkedList<>(); + List roiResultsSpectrumList = anlyseResultIn.getRoiResultsSpectrumList(); + for (int i=0; i xeResultsList) { + public int saveGardsXeResults(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer idAnalysis) { + List xeResultsList = anlyseResultIn.getXeData(); + for (GardsXeResults xeResults:xeResultsList) { + xeResults.setIdAnalysis(idAnalysis); + xeResults.setSampleId(sampleId); + } if (CollectionUtils.isNotEmpty(xeResultsList)) { this.saveBatch(xeResultsList); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index e1482439..1c92197c 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.cache.Cache; import com.google.common.collect.Maps; -import io.swagger.models.auth.In; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.shiro.SecurityUtils; @@ -44,7 +43,6 @@ import org.jeecg.modules.native_jni.struct.BgAnalyseResult; import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct; import org.jeecg.modules.service.*; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.thymeleaf.TemplateEngine; @@ -122,6 +120,17 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements private NameStandUtil nameStandUtil; @Autowired private IDataService dataService; + @Autowired + private IGardsCalibrationPairsSpectrumService gardsCalibrationPairsSpectrumService; + @Autowired + private IGardsCalibrationSpectrumService gardsCalibrationSpectrumService; + @Autowired + private IGardsROIChannelsSpectrumService gardsROIChannelsSpectrumService; + @Autowired + private IGardsXeResultsSpectrumService gardsXeResultsSpectrumService; + @Autowired + private IGardsROIResultsSpectrumService gardsROIResultsSpectrumService; + @Override @@ -4068,6 +4077,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements @Override @Transactional(rollbackFor = Exception.class) public Result saveToDB(BgDataAnlyseResultIn anlyseResultIn, HttpServletRequest request) { + long startTime = System.currentTimeMillis(); Result result = new Result(); Map map = new HashMap<>(); //根据请求体获取用户名 @@ -4122,8 +4132,6 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements if (userStation.contains(String.valueOf(stationId))) { bAnalysisResultWriteAuthority = true; } - //获取ROI Limit数据 -// getROILimit(anlyseResultIn); //根据sample文件名称模糊查询sampleId if (StringUtils.isNotBlank(betaDataFile.getSampleFilePathName())) { anlyseResultIn.setSampleFilePath(betaDataFile.getSampleFilePathName().substring(0, betaDataFile.getSampleFilePathName().lastIndexOf(StringPool.SLASH))); @@ -4164,7 +4172,8 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements //处理数据 获取对应的channel/energy值 getChannelAndEnergy(anlyseResultIn, betaList, gammaList, betaDataFile); //分析文件内容 - analyzePHDFile(anlyseResultIn, BgCalPara, betaFittingPara, gammaFittingPara, betaDataFile); + analyzePHDFile(anlyseResultIn, betaDataFile); + long saveStartTime = System.currentTimeMillis(); //判断文件是否存储过 如果没有则解析文件并进行存储 if ( !OriginalDataStore(betaDataFile, "gas", gasFilePathName) ){ result.error500("gasFile save failed"); @@ -4232,87 +4241,61 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements GardsAnalysesSpectrum analysis = spectrumAnalysisMapper.getAnalysis("RNMAN.GARDS_ANALYSES", sampleId, userName); Integer idAnalysis = analysis.getIdAnalysis(); //获取sample,gas,det三个文件分别对应的beta,gamma数据集合 - List calibrationPairsList = getCalibrationPairs(anlyseResultIn, sampleId, gasId, detId, idAnalysis); //如果分析过--删除GARDS_CALIBRATION_PAIRS表数据 新增GARDS_CALIBRATION_PAIRS表数据 if (Objects.nonNull(isExist)){ //根据idAnalysis删除GARDS_CALIBRATION_PAIRS表数据 spectrumAnalysisMapper.deleteCalibrationPairs(idAnalysis); //遍历新增GARDS_CALIBRATION_PAIRS表数据 - for (GardsCalibrationPairs calibrationPairs:calibrationPairsList) { - spectrumAnalysisMapper.insertCalibrationPairs(calibrationPairs); - } + gardsCalibrationPairsSpectrumService.saveGardsCalibrationPairs(anlyseResultIn, sampleId, gasId, detId, idAnalysis); }else {//如果没有分析过--新增GARDS_CALIBRATION_PAIRS表数据 //遍历新增GARDS_CALIBRATION_PAIRS表数据 - for (GardsCalibrationPairs calibrationPairs:calibrationPairsList) { - spectrumAnalysisMapper.insertCalibrationPairs(calibrationPairs); - } + gardsCalibrationPairsSpectrumService.saveGardsCalibrationPairs(anlyseResultIn, sampleId, gasId, detId, idAnalysis); } //gards_calibration 数据表 - List calibrationList = getCalibration(anlyseResultIn, sampleId, gasId, detId, idAnalysis); //判断是否分析过 - if (Objects.nonNull(isExist)) { + if (Objects.nonNull(isExist)) { //删除Gards_Calibration表数据 spectrumAnalysisMapper.deleteCalibration(idAnalysis); //新增Gards_Calibration表数据数据 - for (GardsCalibration calibration:calibrationList) { - spectrumAnalysisMapper.insertCalibration(calibration); - } + gardsCalibrationSpectrumService.saveGardsCalibration(anlyseResultIn, sampleId, gasId, detId, idAnalysis); } else { //新增Gards_Calibration表数据数据 - for (GardsCalibration calibration:calibrationList) { - spectrumAnalysisMapper.insertCalibration(calibration); - } + gardsCalibrationSpectrumService.saveGardsCalibration(anlyseResultIn, sampleId, gasId, detId, idAnalysis); } //gards_roi_channels数据表 - List roiChannelsList = new LinkedList<>(); - getROIChannel(sampleId, idAnalysis, anlyseResultIn.getRoiChannelsSpectrumList(), roiChannelsList, DataTypeAbbr.SAMPLEPHD.getType()); - getROIChannel(gasId, idAnalysis, anlyseResultIn.getRoiChannelsSpectrumList(), roiChannelsList, DataTypeAbbr.GASBKPHD.getType()); - getROIChannel(detId, idAnalysis, anlyseResultIn.getRoiChannelsSpectrumList(), roiChannelsList, DataTypeAbbr.DETBKPHD.getType()); //如果分析过数据 if (Objects.nonNull(isExist)){ //删除gards_roi_channels数据表数据 spectrumAnalysisMapper.deleteROIChannels(idAnalysis); //新增gards_roi_channels数据表数据 - for (GardsRoiChannels roiChannels:roiChannelsList) { - spectrumAnalysisMapper.insertROIChannels(roiChannels); - } + gardsROIChannelsSpectrumService.saveGardsROIChannels(anlyseResultIn, sampleId, gasId, detId, idAnalysis); }else {//没有分析过 //新增gards_roi_channels数据表数据 - for (GardsRoiChannels roiChannels:roiChannelsList) { - spectrumAnalysisMapper.insertROIChannels(roiChannels); - } + gardsROIChannelsSpectrumService.saveGardsROIChannels(anlyseResultIn, sampleId, gasId, detId, idAnalysis); } //gards_Xe_results数据表 - List xeResultsList = getXeResults(anlyseResultIn, sampleId, idAnalysis); if(Objects.nonNull(isExist)) { //删除gards_Xe_results数据表数据 spectrumAnalysisMapper.deleteXeResult(idAnalysis); //新增gards_Xe_results数据表数据 - for (GardsXeResults xeResults:xeResultsList) { - spectrumAnalysisMapper.insertXeResult(xeResults); - } + gardsXeResultsSpectrumService.saveGardsXeResults(anlyseResultIn, sampleId, idAnalysis); } else { //新增gards_Xe_results数据表数据 - for (GardsXeResults xeResults:xeResultsList) { - spectrumAnalysisMapper.insertXeResult(xeResults); - } + gardsXeResultsSpectrumService.saveGardsXeResults(anlyseResultIn, sampleId, idAnalysis); } //gards_roi_results数据表 - List roiResultsSpectrumList = getROIResult(anlyseResultIn.getRoiResultsSpectrumList(), sampleId, idAnalysis); if(Objects.nonNull(isExist)) { //删除gards_roi_results数据表数据 spectrumAnalysisMapper.deleteROIResults(idAnalysis); //新增gards_roi_results数据表数据 - for (GardsRoiResults roiResults:roiResultsSpectrumList) { - spectrumAnalysisMapper.insertROIResults(roiResults); - } + gardsROIResultsSpectrumService.saveGardsROIResults(anlyseResultIn, sampleId, idAnalysis); } else { //新增gards_roi_results数据表数据 - for (GardsRoiResults roiResults:roiResultsSpectrumList) { - spectrumAnalysisMapper.insertROIResults(roiResults); - } + gardsROIResultsSpectrumService.saveGardsROIResults(anlyseResultIn, sampleId, idAnalysis); } + System.out.println("数据库存储总时长:"+ (System.currentTimeMillis() - saveStartTime)); //上传本次文件到ftp人工交互存储路径下 + long uploadStartTime = System.currentTimeMillis(); try { if (StringUtils.isNotBlank(betaDataFile.getSampleTmpPath())) { File sampleTmp = new File(betaDataFile.getSampleTmpPath()); @@ -4372,6 +4355,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements } catch (FileNotFoundException e) { throw new RuntimeException(e); } + System.out.println("ftp上传总时长:"+ (System.currentTimeMillis() - uploadStartTime)); if (Objects.nonNull(sampleId)) { SpectrumData sampleData = getSpectrumData(sampleId, betaDataFile, "sample"); betaDataFile.setSampleSpectrumData(sampleData); @@ -4396,9 +4380,195 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements pushToRedis(betaDataFile, userName); result.setSuccess(true); result.setResult(map); + System.out.println("总时长:"+ (System.currentTimeMillis() - startTime)); return result; } + @Transactional + public boolean OriginalDataStore(BetaDataFile betaDataFile, String type, String filePathName) { + //根据新的文件路径名称查询数据是否存在 + GardsSampleData isExist = spectrumAnalysisMapper.findSampleByFile(filePathName); + //如果数据已经存入过数据库 则 修改状态后返回 + if (Objects.nonNull(isExist)){ + //如果文件已经存入过数据库则修改状态 + spectrumAnalysisMapper.updateAnalysesStatus(filePathName); + return true; + } + //读取文件内容 + EnergySpectrumStruct sourceData = null; + File file = null; + try { + if (Objects.nonNull(betaDataFile)){ + + if (type.equalsIgnoreCase("sample")) { + file = new File(betaDataFile.getSampleTmpPath()); + sourceData = betaDataFile.getSampleStruct(); + } else if (type.equalsIgnoreCase("gas")) { + file = new File(betaDataFile.getGasTmpPath()); + sourceData = betaDataFile.getGasStruct(); + } else if (type.equalsIgnoreCase("det")) { + file = new File(betaDataFile.getDetTmpPath()); + sourceData = betaDataFile.getDetStruct(); + } else if (type.equalsIgnoreCase("qc")) { + file = new File(betaDataFile.getQcTmpPath()); + sourceData = betaDataFile.getQcStruct(); + } + //获取文件中块名信息 + List readLines = getFileBlockList(file); + //查询台站id + Integer stationId = spectrumAnalysisMapper.getStationId(sourceData.site_code); + Integer detectorId = spectrumAnalysisMapper.getDetectorId(sourceData.detector_code); + if(Objects.isNull(stationId) || Objects.isNull(detectorId)) { + String error = "get station_id or detect_id error"; + return false; + } + //新增Gards_Sample_Data表数据 + sampleDataSpectrumService.saveSampleData(sourceData, stationId, detectorId, filePathName, readLines); + //获取sampleId + Integer sampleId = spectrumAnalysisMapper.getSampleId(filePathName); + //存储Gards_Sample_Aux表数据 + sampleAuxSpectrumService.saveSampleAux(sourceData, sampleId, readLines); + //判断文件是否包含Comment块 新增Gards_Description数据 + if (readLines.contains(SampleFileHeader.COMMENT.getMessage())){ + sampleDescriptionSpectrumService.saveSampleDescription(sourceData, sampleId); + } + //判断文件是否包含Certificate块 新增Gards_Sample_Cert数据 + if (readLines.contains(SampleFileHeader.CERTIFICATE.getMessage())){ + sampleCertSpectrumService.saveSampleCert(sourceData, sampleId); + sampleCertLineSpectrumService.saveSampleCertLine(sourceData, sampleId); + } + //新增Gards_Calibration_Pairs_Orig数据 + calibrationPairsOrigSpectrumService.saveGardsCalibrationPairsOrig(sourceData, sampleId, readLines); + //判断文件是否包含b-gEfficiency块 新增Gards_Sample_Cert数据 + if (readLines.contains(SampleFileHeader.BGEFFICIENCY.getMessage())){ + bgEfficiencyPairsSpectrumService.saveBgEfficiencyPairs(sourceData, sampleId); + } + //判断文件是否包含TotalEff块 新增Gards_Sample_Cert数据 + if (readLines.contains(SampleFileHeader.TOTALEFF.getMessage())){ + totalEfficiencyPairsSpectrumService.saveTotalEfficiencyPairs(sourceData, sampleId); + } + //判断文件是否包含Ratios块 新增Gards_Sample_Ratios数据 + if (readLines.contains(SampleFileHeader.RATIOS.getMessage())){ + sampleRatiosSpectrumService.saveSampleRatios(sourceData, sampleId); + } + //判断是否包含ROI_Limits块 新增Gards_ROI_Limits数据 + if (readLines.contains(SampleFileHeader.ROILIMITS.getMessage())){ + roiLimitsSpectrumService.saveRoiLimits(sourceData, sampleId); + } + //新增Gards_Spectrum数据 + spectrumService.saveSpectrum(sourceData, sampleId, readLines, filePathName); + //判断是否包含Histogram块 新增Gards_Histogram数据 + if (readLines.contains(SampleFileHeader.HISTOGRAM.getMessage())){ + histogramService.saveHistogram(sourceData, sampleId, filePathName); + } + } + return true; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public List getFileBlockList(File file) { + List readLines = new LinkedList<>(); + try { + List allLines = FileUtils.readLines(file, "UTF-8"); + for (String line:allLines) { + if (line.contains("#")){ + readLines.add(line); + } + } + } catch (IOException e) { + throw new RuntimeException(e); + } + return readLines; + } + + public SpectrumData getSpectrumData(Integer sampleId, BetaDataFile betaDataFile, String type) { + //根据 sampleId获取sampleData的数据内容 + GardsSampleDataSpectrum sampleData = spectrumAnalysisMapper.getSampleData(sampleId); + File file = null; + EnergySpectrumStruct struct = null; + if (type.equalsIgnoreCase("sample")) { + file = new File(betaDataFile.getSampleTmpPath()); + struct = betaDataFile.getSampleStruct(); + } else if (type.equalsIgnoreCase("gas")) { + file = new File(betaDataFile.getGasTmpPath()); + struct = betaDataFile.getGasStruct(); + } else if (type.equalsIgnoreCase("det")) { + file = new File(betaDataFile.getDetTmpPath()); + struct = betaDataFile.getDetStruct(); + } else if (type.equalsIgnoreCase("qc")) { + file = new File(betaDataFile.getQcTmpPath()); + struct = betaDataFile.getQcStruct(); + } + SpectrumData spectrumData = new SpectrumData(); + try { + //封装散点图下的基础数据信息 + //Station Code + String stationCode = struct.site_code; + //Detector Code + String detectorCode = struct.detector_code; + //Data Type + String dataType = struct.data_type; + //Collection Start + Date CollectionStart = null; + if ( StringUtils.isNotBlank(struct.collection_start_date) && StringUtils.isNotBlank(struct.collection_start_time) ){ + CollectionStart = DateUtils.parseDate(struct.collection_start_date + StringPool.SPACE + struct.collection_start_time); + } + //Collection Stop + Date CollectionStop = null; + if ( StringUtils.isNotBlank(struct.collection_stop_date) && StringUtils.isNotBlank(struct.collection_stop_time) ){ + CollectionStop = DateUtils.parseDate(struct.collection_stop_date + StringPool.SPACE + struct.collection_stop_time); + } + //Collection Time + String CollectionTime = ""; + if ( Objects.nonNull(CollectionStart) && Objects.nonNull(CollectionStop) ){ + CollectionTime = String.format ("%.2f",Double.valueOf(CollectionStop.getTime()/1000 - CollectionStart.getTime()/ 1000)); + } + //Acquisition Start + Date AcquisitionStart = null; + if ( StringUtils.isNotBlank(struct.collection_start_date) && StringUtils.isNotBlank(struct.collection_start_time) ){ + AcquisitionStart = DateUtils.parseDate(struct.acquisition_start_date + StringPool.SPACE + struct.acquisition_start_time); + } + //Acq Real Time + double AcquisitionRealTime = struct.acquisition_real_time; + //Acq live Time + double AcquisitionLiveTime = struct.acquisition_live_time; + //Air Volume[m3] + double airVolume = struct.air_volume; + //Xe Volume[m3] + double xeVolume = struct.sample_volume_of_Xe; + //xeCollectionYield + double xeCollectionYield = struct.Xe_collection_yield; + //gasBkMeasurementId + String gasBkMeasurementId = struct.gas_bk_measurement_id; + //detectorBkMeasurementId + String detectorBkMeasurementId = struct.detector_bk_measurement_id; + //measurementId + String measurementId = struct.measurement_id; + spectrumData.setSampleId(sampleId); + spectrumData.setStatus(sampleData.getStatus()); + spectrumData.setStationCode(stationCode); + spectrumData.setDetectorCode(detectorCode); + spectrumData.setDataType(dataType); + spectrumData.setCollectionStart(CollectionStart); + spectrumData.setCollectionStop(CollectionStop); + spectrumData.setCollectionTime(CollectionTime); + spectrumData.setAcquisitionStart(AcquisitionStart); + spectrumData.setAcquisitionRealTime(String.format("%.2f", AcquisitionRealTime)); + spectrumData.setAcquisitionLiveTime(String.format("%.2f", AcquisitionLiveTime)); + spectrumData.setAirVolume(String.format("%.5f", airVolume)); + spectrumData.setXeVolume(String.format("%.5f", xeVolume)); + spectrumData.setYield(xeCollectionYield); + spectrumData.setGasBkMeasurementId(gasBkMeasurementId); + spectrumData.setDetectorBkMeasurementId(detectorBkMeasurementId); + spectrumData.setMeasurementId(measurementId); + } catch (ParseException e) { + throw new RuntimeException(e); + } + return spectrumData; + } + /** * 分析成功数据发送到Redis */ @@ -5045,7 +5215,6 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements ExportUtil.exportXls(response, template, analyze, export); } - public void saveToTxtOld(BgDataAnlyseResultIn anlyseResultIn, HttpServletRequest request, HttpServletResponse response) { String userName = JwtUtil.getUserNameByToken(request); // 解析文件,生成导出数据 @@ -5617,701 +5786,58 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements } } - public void analyzePHDFile(BgDataAnlyseResultIn anlyseResultIn, BgCalibratePara BgCalPara, List betaFittingPara, List gammaFittingPara, BetaDataFile betaDataFile) { - File sampleTmp = null; - File gasTmp = null; - File detTmp = null; - try { - //根据文件路径 文件名称获取对应的临时文件 - sampleTmp = new File(betaDataFile.getSampleTmpPath()); - gasTmp = new File(betaDataFile.getGasTmpPath()); - detTmp = new File(betaDataFile.getDetTmpPath()); - //调用动态库解析文件 - //Gamma Energy Calibration页面 如果点击过fitting使BGammaEnergyValid并且有勾选 - //如果三个sampleData,GasData,DetData数据都是被勾选状态 则需要传递新的参数重新分析 否则不需要改变数据分析当前文件内容 - BgAnalyseResult bgAnalyseResult = null; - if (Objects.nonNull(sampleTmp) && Objects.nonNull(gasTmp) && Objects.nonNull(detTmp)) { - if (Objects.isNull(BgCalPara)) { - bgAnalyseResult = EnergySpectrumHandler.bgAnalyse(sampleTmp.getAbsolutePath(), gasTmp.getAbsolutePath(), detTmp.getAbsolutePath()); - } else { - bgAnalyseResult = EnergySpectrumHandler.bgReAnalyse(sampleTmp.getAbsolutePath(), gasTmp.getAbsolutePath(), detTmp.getAbsolutePath(), BgCalPara); - } - if (StringUtils.isBlank(bgAnalyseResult.error_log) || bgAnalyseResult.error_log.equalsIgnoreCase("no error.")) { - //处理XeData的数据 - List xeResultsSpectrumList = new LinkedList<>(); - GardsXeResults xe131m = new GardsXeResults(); - xe131m.setNuclideName(XeNuclideName.XE_131m.getType()); - xe131m.setConc(bgAnalyseResult.Xe131m_con); - xe131m.setConcErr(bgAnalyseResult.Xe131m_uncer); - xe131m.setLc(bgAnalyseResult.LC_Xe131m); - xe131m.setMdc(bgAnalyseResult.MDC_Xe131m); - xe131m.setNidFlag(anlyseResultIn.getXe131mFlag()); - xeResultsSpectrumList.add(xe131m); - GardsXeResults xe133 = new GardsXeResults(); - xe133.setNuclideName(XeNuclideName.XE_133.getType()); - xe133.setConc(bgAnalyseResult.Xe133_con); - xe133.setConcErr(bgAnalyseResult.Xe133_uncer); - xe133.setLc(bgAnalyseResult.LC_Xe133); - xe133.setMdc(bgAnalyseResult.MDC_Xe133); - xe133.setNidFlag(anlyseResultIn.getXe133Flag()); - xeResultsSpectrumList.add(xe133); - GardsXeResults xe133m = new GardsXeResults(); - xe133m.setNuclideName(XeNuclideName.XE_133m.getType()); - xe133m.setConc(bgAnalyseResult.Xe133m_con); - xe133m.setConcErr(bgAnalyseResult.Xe133m_uncer); - xe133m.setLc(bgAnalyseResult.LC_Xe133m); - xe133m.setMdc(bgAnalyseResult.MDC_Xe133m); - xe133m.setNidFlag(anlyseResultIn.getXe133mFlag()); - xeResultsSpectrumList.add(xe133m); - GardsXeResults xe135 = new GardsXeResults(); - xe135.setNuclideName(XeNuclideName.XE_135.getType()); - xe135.setConc(bgAnalyseResult.Xe135_con); - xe135.setConcErr(bgAnalyseResult.Xe135_uncer); - xe135.setLc(bgAnalyseResult.LC_Xe135); - xe135.setMdc(bgAnalyseResult.MDC_Xe135); - xe135.setNidFlag(anlyseResultIn.getXe135Flag()); - xeResultsSpectrumList.add(xe135); - anlyseResultIn.setXeData(xeResultsSpectrumList); - //处理GammaCalibration的数据 - List gammaCalibrationSpectrumList = new LinkedList<>(); - if (anlyseResultIn.isBGammaEnergyValidSample()) { - GardsCalibrationSpectrum gammaCalibrationS = new GardsCalibrationSpectrum(); - gammaCalibrationS.setDataType(DataTypeAbbr.SAMPLEPHD.getType()); - gammaCalibrationS.setCoeff1(Double.valueOf(gammaFittingPara.get(0))); - gammaCalibrationS.setCoeff2(Double.valueOf(gammaFittingPara.get(1))); - gammaCalibrationS.setCoeff3(Double.valueOf(gammaFittingPara.get(2))); - gammaCalibrationSpectrumList.add(gammaCalibrationS); - } else { - GardsCalibrationSpectrum gammaCalibrationS = new GardsCalibrationSpectrum(); - gammaCalibrationS.setDataType(DataTypeAbbr.SAMPLEPHD.getType()); - gammaCalibrationS.setCoeff1(bgAnalyseResult.s_g_fitting_e_c.get(0)); - gammaCalibrationS.setCoeff2(bgAnalyseResult.s_g_fitting_e_c.get(1)); - gammaCalibrationS.setCoeff3(bgAnalyseResult.s_g_fitting_e_c.get(2)); - gammaCalibrationSpectrumList.add(gammaCalibrationS); - } - if (anlyseResultIn.isBGammaEnergyValidGas()) { - GardsCalibrationSpectrum gammaCalibrationG = new GardsCalibrationSpectrum(); - gammaCalibrationG.setDataType(DataTypeAbbr.GASBKPHD.getType()); - gammaCalibrationG.setCoeff1(Double.valueOf(gammaFittingPara.get(0))); - gammaCalibrationG.setCoeff2(Double.valueOf(gammaFittingPara.get(1))); - gammaCalibrationG.setCoeff3(Double.valueOf(gammaFittingPara.get(2))); - gammaCalibrationSpectrumList.add(gammaCalibrationG); - } else { - GardsCalibrationSpectrum gammaCalibrationG = new GardsCalibrationSpectrum(); - gammaCalibrationG.setDataType(DataTypeAbbr.GASBKPHD.getType()); - gammaCalibrationG.setCoeff1(bgAnalyseResult.g_g_fitting_e_c.get(0)); - gammaCalibrationG.setCoeff2(bgAnalyseResult.g_g_fitting_e_c.get(1)); - gammaCalibrationG.setCoeff3(bgAnalyseResult.g_g_fitting_e_c.get(2)); - gammaCalibrationSpectrumList.add(gammaCalibrationG); - } - if (anlyseResultIn.isBGammaEnergyValidDet()) { - GardsCalibrationSpectrum gammaCalibrationD = new GardsCalibrationSpectrum(); - gammaCalibrationD.setDataType(DataTypeAbbr.DETBKPHD.getType()); - gammaCalibrationD.setCoeff1(Double.valueOf(gammaFittingPara.get(0))); - gammaCalibrationD.setCoeff2(Double.valueOf(gammaFittingPara.get(1))); - gammaCalibrationD.setCoeff3(Double.valueOf(gammaFittingPara.get(2))); - gammaCalibrationSpectrumList.add(gammaCalibrationD); - } else { - GardsCalibrationSpectrum gammaCalibrationD = new GardsCalibrationSpectrum(); - gammaCalibrationD.setDataType(DataTypeAbbr.DETBKPHD.getType()); - gammaCalibrationD.setCoeff1(bgAnalyseResult.d_g_fitting_e_c.get(0)); - gammaCalibrationD.setCoeff2(bgAnalyseResult.d_g_fitting_e_c.get(1)); - gammaCalibrationD.setCoeff3(bgAnalyseResult.d_g_fitting_e_c.get(2)); - gammaCalibrationSpectrumList.add(gammaCalibrationD); - } - anlyseResultIn.setGammaCalibrationSpectrumList(gammaCalibrationSpectrumList); - //处理BetaCalibration数据 - List betaCalibrationSpectrumList = new LinkedList<>(); - if (anlyseResultIn.isBBetaEnergyValidSample()) { - GardsCalibrationSpectrum betaCalibrationS = new GardsCalibrationSpectrum(); - betaCalibrationS.setDataType(DataTypeAbbr.SAMPLEPHD.getType()); - betaCalibrationS.setCoeff1(Double.valueOf(betaFittingPara.get(0))); - betaCalibrationS.setCoeff2(Double.valueOf(betaFittingPara.get(1))); - betaCalibrationS.setCoeff3(Double.valueOf(betaFittingPara.get(2))); - betaCalibrationSpectrumList.add(betaCalibrationS); - } else { - GardsCalibrationSpectrum betaCalibrationS = new GardsCalibrationSpectrum(); - betaCalibrationS.setDataType(DataTypeAbbr.SAMPLEPHD.getType()); - betaCalibrationS.setCoeff1(bgAnalyseResult.s_b_fitting_e_c.get(0)); - betaCalibrationS.setCoeff2(bgAnalyseResult.s_b_fitting_e_c.get(1)); - betaCalibrationS.setCoeff3(bgAnalyseResult.s_b_fitting_e_c.get(2)); - betaCalibrationSpectrumList.add(betaCalibrationS); - } - if (anlyseResultIn.isBBetaEnergyValidGas()) { - GardsCalibrationSpectrum betaCalibrationG = new GardsCalibrationSpectrum(); - betaCalibrationG.setDataType(DataTypeAbbr.GASBKPHD.getType()); - betaCalibrationG.setCoeff1(Double.valueOf(betaFittingPara.get(0))); - betaCalibrationG.setCoeff2(Double.valueOf(betaFittingPara.get(1))); - betaCalibrationG.setCoeff3(Double.valueOf(betaFittingPara.get(2))); - betaCalibrationSpectrumList.add(betaCalibrationG); - } else { - GardsCalibrationSpectrum betaCalibrationG = new GardsCalibrationSpectrum(); - betaCalibrationG.setDataType(DataTypeAbbr.GASBKPHD.getType()); - betaCalibrationG.setCoeff1(bgAnalyseResult.g_b_fitting_e_c.get(0)); - betaCalibrationG.setCoeff2(bgAnalyseResult.g_b_fitting_e_c.get(1)); - betaCalibrationG.setCoeff3(bgAnalyseResult.g_b_fitting_e_c.get(2)); - betaCalibrationSpectrumList.add(betaCalibrationG); - } - if (anlyseResultIn.isBBetaEnergyValidDet()) { - GardsCalibrationSpectrum betaCalibrationD = new GardsCalibrationSpectrum(); - betaCalibrationD.setDataType(DataTypeAbbr.DETBKPHD.getType()); - betaCalibrationD.setCoeff1(Double.valueOf(betaFittingPara.get(0))); - betaCalibrationD.setCoeff2(Double.valueOf(betaFittingPara.get(1))); - betaCalibrationD.setCoeff3(Double.valueOf(betaFittingPara.get(2))); - betaCalibrationSpectrumList.add(betaCalibrationD); - } else { - GardsCalibrationSpectrum betaCalibrationD = new GardsCalibrationSpectrum(); - betaCalibrationD.setDataType(DataTypeAbbr.DETBKPHD.getType()); - betaCalibrationD.setCoeff1(bgAnalyseResult.d_b_fitting_e_c.get(0)); - betaCalibrationD.setCoeff2(bgAnalyseResult.d_b_fitting_e_c.get(1)); - betaCalibrationD.setCoeff3(bgAnalyseResult.d_b_fitting_e_c.get(2)); - betaCalibrationSpectrumList.add(betaCalibrationD); - } - anlyseResultIn.setBetaCalibrationSpectrumList(betaCalibrationSpectrumList); - //存储roiChannel数据 - List roiChannelsSpectrumList = new LinkedList<>(); - for (int i=0; i roiResultsSpectrumList = new LinkedList<>(); - for (int i=0; ibgAnalyseResult.MDC.get(i)) { - roiResults.setNidFlag(1); - } else { - roiResults.setNidFlag(0); - } - roiResultsSpectrumList.add(roiResults); - } - anlyseResultIn.setRoiResultsSpectrumList(roiResultsSpectrumList); - betaDataFile.getXeResultsSpectrumList().forEach(item -> { - if (item.getNuclideName().equals(XeNuclideName.XE_131m.getType())) { - item.setNidFlag(anlyseResultIn.getXe131mFlag()); - } else if (item.getNuclideName().equals(XeNuclideName.XE_133.getType())) { - item.setNidFlag(anlyseResultIn.getXe133Flag()); - } else if (item.getNuclideName().equals(XeNuclideName.XE_133m.getType())) { - item.setNidFlag(anlyseResultIn.getXe133mFlag()); - } else if (item.getNuclideName().equals(XeNuclideName.XE_135.getType())) { - item.setNidFlag(anlyseResultIn.getXe135Flag()); - } - }); - } + public void analyzePHDFile(BgDataAnlyseResultIn anlyseResultIn, BetaDataFile betaDataFile) { + //处理XeData表数据 + List xeDataList = betaDataFile.getXeDataList(); + if (CollectionUtils.isEmpty(xeDataList)) { + List xeResultsSpectrumList = betaDataFile.getXeResultsSpectrumList(); + xeDataList = getXeDataList(xeResultsSpectrumList); + } + for (GardsXeResults xeData :xeDataList) { + if (xeData.getNuclideName().equals(XeNuclideName.XE_131m)) { + xeData.setNidFlag(anlyseResultIn.getXe131mFlag()); + } else if (xeData.getNuclideName().equals(XeNuclideName.XE_133)) { + xeData.setNidFlag(anlyseResultIn.getXe133Flag()); + } else if (xeData.getNuclideName().equals(XeNuclideName.XE_133m)) { + xeData.setNidFlag(anlyseResultIn.getXe133mFlag()); + } else if (xeData.getNuclideName().equals(XeNuclideName.XE_135)) { + xeData.setNidFlag(anlyseResultIn.getXe135Flag()); } - } catch (Exception e) { - e.printStackTrace(); } - } - - public List getCalibrationPairs(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer gasId, Integer detId, Integer idAnalysis) { - List calibrationPairsList = new LinkedList<>(); - for (int i=0; i< anlyseResultIn.getB_channel_sample().size(); i++){ - GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); - calibrationPairs.setSampleId(sampleId); - calibrationPairs.setIdAnalysis(idAnalysis); - calibrationPairs.setSampleType(SystemType.BETA.getType()); - calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); - calibrationPairs.setInput(CalName.CalPHD.getType()); - calibrationPairs.setIdCalPoint(i); - calibrationPairs.setXValue(anlyseResultIn.getB_channel_sample().get(i)); - calibrationPairs.setYValue(anlyseResultIn.getB_energy_sample().get(i)); - calibrationPairsList.add(calibrationPairs); - } - for (int i=0; i< anlyseResultIn.getG_channel_sample().size(); i++){ - GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); - calibrationPairs.setSampleId(sampleId); - calibrationPairs.setIdAnalysis(idAnalysis); - calibrationPairs.setSampleType(SystemType.GAMMA.getType()); - calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); - calibrationPairs.setInput(CalName.CalPHD.getType()); - calibrationPairs.setIdCalPoint(i); - calibrationPairs.setXValue(anlyseResultIn.getG_channel_sample().get(i)); - calibrationPairs.setYValue(anlyseResultIn.getG_energy_sample().get(i)); - calibrationPairsList.add(calibrationPairs); - } - - for (int i=0; i< anlyseResultIn.getB_channel_gas().size(); i++){ - GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); - calibrationPairs.setSampleId(gasId); - calibrationPairs.setIdAnalysis(idAnalysis); - calibrationPairs.setSampleType(SystemType.BETA.getType()); - calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); - calibrationPairs.setInput(CalName.CalPHD.getType()); - calibrationPairs.setIdCalPoint(i); - calibrationPairs.setXValue(anlyseResultIn.getB_channel_gas().get(i)); - calibrationPairs.setYValue(anlyseResultIn.getB_energy_gas().get(i)); - calibrationPairsList.add(calibrationPairs); - } - - for (int i=0; i< anlyseResultIn.getG_channel_gas().size(); i++){ - GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); - calibrationPairs.setSampleId(gasId); - calibrationPairs.setIdAnalysis(idAnalysis); - calibrationPairs.setSampleType(SystemType.GAMMA.getType()); - calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); - calibrationPairs.setInput(CalName.CalPHD.getType()); - calibrationPairs.setIdCalPoint(i); - calibrationPairs.setXValue(anlyseResultIn.getG_channel_gas().get(i)); - calibrationPairs.setYValue(anlyseResultIn.getG_energy_gas().get(i)); - calibrationPairsList.add(calibrationPairs); - } - - for (int i=0; i< anlyseResultIn.getB_channel_det().size(); i++){ - GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); - calibrationPairs.setSampleId(detId); - calibrationPairs.setIdAnalysis(idAnalysis); - calibrationPairs.setSampleType(SystemType.BETA.getType()); - calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); - calibrationPairs.setInput(CalName.CalPHD.getType()); - calibrationPairs.setIdCalPoint(i); - calibrationPairs.setXValue(anlyseResultIn.getB_channel_det().get(i)); - calibrationPairs.setYValue(anlyseResultIn.getB_energy_det().get(i)); - calibrationPairsList.add(calibrationPairs); - } - - for (int i=0; i< anlyseResultIn.getG_channel_det().size(); i++){ - GardsCalibrationPairs calibrationPairs = new GardsCalibrationPairs(); - calibrationPairs.setSampleId(detId); - calibrationPairs.setIdAnalysis(idAnalysis); - calibrationPairs.setSampleType(SystemType.GAMMA.getType()); - calibrationPairs.setCaltype(CalType.ENERGY_CAL.getType()); - calibrationPairs.setInput(CalName.CalPHD.getType()); - calibrationPairs.setIdCalPoint(i); - calibrationPairs.setXValue(anlyseResultIn.getG_channel_det().get(i)); - calibrationPairs.setYValue(anlyseResultIn.getG_energy_det().get(i)); - calibrationPairsList.add(calibrationPairs); - } - return calibrationPairsList; - } - - public List getCalibration(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer gasId, Integer detId, Integer idAnalysis) { - List calibrationSpectrumList = new LinkedList<>(); - if (Objects.nonNull(sampleId)) { - GardsCalibration calibrationB = new GardsCalibration(); - calibrationB.setSampleId(sampleId); - calibrationB.setIdAnalysis(idAnalysis); - calibrationB.setSampleType(SystemType.BETA.getType()); - calibrationB.setCalType(CalType.ENERGY_CAL.getType()); - calibrationB.setFunction(FittingType.POLY2.getCode()); - calibrationB.setFunctionDef(FittingType.POLY2.getDescription()); - calibrationB.setStartOfRange(0); - calibrationB.setEndOfRange(1); - List betaCollect = anlyseResultIn.getBetaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.SAMPLEPHD.getType())).collect(Collectors.toList()); - GardsCalibrationSpectrum betaCalibrationSpectrum = betaCollect.get(0); - calibrationB.setCoeff1(Double.valueOf(betaCalibrationSpectrum.getCoeff1())); - calibrationB.setCoeff2(Double.valueOf(betaCalibrationSpectrum.getCoeff2())); - calibrationB.setCoeff3(Double.valueOf(betaCalibrationSpectrum.getCoeff3())); - calibrationSpectrumList.add(calibrationB); - - GardsCalibration calibrationG = new GardsCalibration(); - calibrationG.setSampleId(sampleId); - calibrationG.setIdAnalysis(idAnalysis); - calibrationG.setSampleType(SystemType.GAMMA.getType()); - calibrationG.setCalType(CalType.ENERGY_CAL.getType()); - calibrationG.setFunction(FittingType.POLY2.getCode()); - calibrationG.setFunctionDef(FittingType.POLY2.getDescription()); - calibrationG.setStartOfRange(0); - calibrationG.setEndOfRange(1); - List gammaCollect = anlyseResultIn.getGammaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.SAMPLEPHD.getType())).collect(Collectors.toList()); - GardsCalibrationSpectrum gammaCalibrationSpectrum = gammaCollect.get(0); - calibrationG.setCoeff1(Double.valueOf(gammaCalibrationSpectrum.getCoeff1())); - calibrationG.setCoeff2(Double.valueOf(gammaCalibrationSpectrum.getCoeff2())); - calibrationG.setCoeff3(Double.valueOf(gammaCalibrationSpectrum.getCoeff3())); - calibrationSpectrumList.add(calibrationG); - } - - if (Objects.nonNull(gasId)) { - //gas文件 Beta部分 - GardsCalibration calibrationB = new GardsCalibration(); - calibrationB.setSampleId(gasId); - calibrationB.setIdAnalysis(idAnalysis); - calibrationB.setSampleType(SystemType.BETA.getType()); - calibrationB.setCalType(CalType.ENERGY_CAL.getType()); - calibrationB.setFunction(FittingType.POLY2.getCode()); - calibrationB.setFunctionDef(FittingType.POLY2.getDescription()); - calibrationB.setStartOfRange(0); - calibrationB.setEndOfRange(1); - List betaCollect = anlyseResultIn.getBetaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.GASBKPHD.getType())).collect(Collectors.toList()); - GardsCalibrationSpectrum betaCalibrationSpectrum = betaCollect.get(0); - calibrationB.setCoeff1(Double.valueOf(betaCalibrationSpectrum.getCoeff1())); - calibrationB.setCoeff2(Double.valueOf(betaCalibrationSpectrum.getCoeff2())); - calibrationB.setCoeff3(Double.valueOf(betaCalibrationSpectrum.getCoeff3())); - calibrationSpectrumList.add(calibrationB); - //gas文件 gamma部分 - GardsCalibration calibrationG = new GardsCalibration(); - calibrationG.setSampleId(gasId); - calibrationG.setIdAnalysis(idAnalysis); - calibrationG.setSampleType(SystemType.GAMMA.getType()); - calibrationG.setCalType(CalType.ENERGY_CAL.getType()); - calibrationG.setFunction(FittingType.POLY2.getCode()); - calibrationG.setFunctionDef(FittingType.POLY2.getDescription()); - calibrationG.setStartOfRange(0); - calibrationG.setEndOfRange(1); - List gammaCollect = anlyseResultIn.getGammaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.GASBKPHD.getType())).collect(Collectors.toList()); - GardsCalibrationSpectrum gammaCalibrationSpectrum = gammaCollect.get(0); - calibrationG.setCoeff1(Double.valueOf(gammaCalibrationSpectrum.getCoeff1())); - calibrationG.setCoeff2(Double.valueOf(gammaCalibrationSpectrum.getCoeff2())); - calibrationG.setCoeff3(Double.valueOf(gammaCalibrationSpectrum.getCoeff3())); - calibrationSpectrumList.add(calibrationG); - } - - if (Objects.nonNull(detId)) { - GardsCalibration calibrationB = new GardsCalibration(); - calibrationB.setSampleId(detId); - calibrationB.setIdAnalysis(idAnalysis); - calibrationB.setSampleType(SystemType.BETA.getType()); - calibrationB.setCalType(CalType.ENERGY_CAL.getType()); - calibrationB.setFunction(FittingType.POLY2.getCode()); - calibrationB.setFunctionDef(FittingType.POLY2.getDescription()); - calibrationB.setStartOfRange(0); - calibrationB.setEndOfRange(1); - List betaCollect = anlyseResultIn.getBetaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.DETBKPHD.getType())).collect(Collectors.toList()); - GardsCalibrationSpectrum betaCalibrationSpectrum = betaCollect.get(0); - calibrationB.setCoeff1(Double.valueOf(betaCalibrationSpectrum.getCoeff1())); - calibrationB.setCoeff2(Double.valueOf(betaCalibrationSpectrum.getCoeff2())); - calibrationB.setCoeff3(Double.valueOf(betaCalibrationSpectrum.getCoeff3())); - calibrationSpectrumList.add(calibrationB); - GardsCalibration calibrationG = new GardsCalibration(); - calibrationG.setSampleId(detId); - calibrationG.setIdAnalysis(idAnalysis); - calibrationG.setSampleType(SystemType.GAMMA.getType()); - calibrationG.setCalType(CalType.ENERGY_CAL.getType()); - calibrationG.setFunction(FittingType.POLY2.getCode()); - calibrationG.setFunctionDef(FittingType.POLY2.getDescription()); - calibrationG.setStartOfRange(0); - calibrationG.setEndOfRange(1); - List gammaCollect = anlyseResultIn.getGammaCalibrationSpectrumList().stream().filter(item -> item.getDataType().equals(DataTypeAbbr.DETBKPHD.getType())).collect(Collectors.toList()); - GardsCalibrationSpectrum gammaCalibrationSpectrum = gammaCollect.get(0); - calibrationG.setCoeff1(Double.valueOf(gammaCalibrationSpectrum.getCoeff1())); - calibrationG.setCoeff2(Double.valueOf(gammaCalibrationSpectrum.getCoeff2())); - calibrationG.setCoeff3(Double.valueOf(gammaCalibrationSpectrum.getCoeff3())); - calibrationSpectrumList.add(calibrationG); - } - return calibrationSpectrumList; - } - - public void getROIChannel(Integer sampleId, Integer idAnalysis, List roiChannelsSpectrumList, List roiChannelsList, String dataType) { - roiChannelsSpectrumList = roiChannelsSpectrumList.stream().filter(item-> item.getDataType().equals(dataType)).collect(Collectors.toList()); - for (int i=0; i getXeDataList(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer idAnalysis) { - List xeResultsList = new LinkedList<>(); - //Xe131m - GardsXeResultsSpectrum xe131m = new GardsXeResultsSpectrum(); - xe131m.setSampleId(sampleId); - xe131m.setIdAnalysis(idAnalysis); - xe131m.setNuclideName(XeNuclideName.XE_131m.getType()); - xe131m.setConc(anlyseResultIn.getXe131m_con()); - xe131m.setConcErr(anlyseResultIn.getXe131m_uncer()); - xe131m.setMdc(anlyseResultIn.getMdc_Xe131m()); - xe131m.setLc(anlyseResultIn.getLc_Xe131m()); - xe131m.setNidFlag(anlyseResultIn.getXe131mFlag()); - xeResultsList.add(xe131m); - //Xe133 - GardsXeResultsSpectrum xe133 = new GardsXeResultsSpectrum(); - xe133.setSampleId(sampleId); - xe133.setIdAnalysis(idAnalysis); - xe133.setNuclideName(XeNuclideName.XE_133.getType()); - xe133.setConc(anlyseResultIn.getXe133_con()); - xe133.setConcErr(anlyseResultIn.getXe133_uncer()); - xe133.setMdc(anlyseResultIn.getMdc_Xe133()); - xe133.setLc(anlyseResultIn.getLc_Xe133()); - xe133.setNidFlag(anlyseResultIn.getXe133Flag()); - xeResultsList.add(xe133); - //Xe133m - GardsXeResultsSpectrum xe133m = new GardsXeResultsSpectrum(); - xe133m.setSampleId(sampleId); - xe133m.setIdAnalysis(idAnalysis); - xe133m.setNuclideName(XeNuclideName.XE_133m.getType()); - xe133m.setConc(anlyseResultIn.getXe133m_con()); - xe133m.setConcErr(anlyseResultIn.getXe133m_uncer()); - xe133m.setMdc(anlyseResultIn.getMdc_Xe133m()); - xe133m.setLc(anlyseResultIn.getLc_Xe133m()); - xe133m.setNidFlag(anlyseResultIn.getXe133mFlag()); - xeResultsList.add(xe133m); - //Xe135 - GardsXeResultsSpectrum xe135 = new GardsXeResultsSpectrum(); - xe135.setSampleId(sampleId); - xe135.setIdAnalysis(idAnalysis); - xe135.setNuclideName(XeNuclideName.XE_135.getType()); - xe135.setConc(anlyseResultIn.getXe135_con()); - xe135.setConcErr(anlyseResultIn.getXe135_uncer()); - xe135.setMdc(anlyseResultIn.getMdc_Xe135()); - xe135.setLc(anlyseResultIn.getLc_Xe135()); - xe135.setNidFlag(anlyseResultIn.getXe135Flag()); - xeResultsList.add(xe135); - return xeResultsList; - } - - public List getXeResults(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer idAnalysis) { - List xeResultsList = anlyseResultIn.getXeData(); - for (GardsXeResults xeResults:xeResultsList) { - xeResults.setIdAnalysis(idAnalysis); - xeResults.setSampleId(sampleId); - } - return xeResultsList; - } - - @Transactional - public boolean OriginalDataStore(BetaDataFile betaDataFile, String type, String filePathName) { - //根据新的文件路径名称查询数据是否存在 - GardsSampleData isExist = spectrumAnalysisMapper.findSampleByFile(filePathName); - //如果数据已经存入过数据库 则 修改状态后返回 - if (Objects.nonNull(isExist)){ - //如果文件已经存入过数据库则修改状态 - spectrumAnalysisMapper.updateAnalysesStatus(filePathName); - return true; - } - //读取文件内容 - EnergySpectrumStruct sourceData = null; - File file = null; - try { - if (Objects.nonNull(betaDataFile)){ - - if (type.equalsIgnoreCase("sample")) { - file = new File(betaDataFile.getSampleTmpPath()); - sourceData = betaDataFile.getSampleStruct(); - } else if (type.equalsIgnoreCase("gas")) { - file = new File(betaDataFile.getGasTmpPath()); - sourceData = betaDataFile.getGasStruct(); - } else if (type.equalsIgnoreCase("det")) { - file = new File(betaDataFile.getDetTmpPath()); - sourceData = betaDataFile.getDetStruct(); - } else if (type.equalsIgnoreCase("qc")) { - file = new File(betaDataFile.getQcTmpPath()); - sourceData = betaDataFile.getQcStruct(); - } - //获取文件中块名信息 - List readLines = getFileBlockList(file); - //查询台站id - Integer stationId = spectrumAnalysisMapper.getStationId(sourceData.site_code); - Integer detectorId = spectrumAnalysisMapper.getDetectorId(sourceData.detector_code); - if(Objects.isNull(stationId) || Objects.isNull(detectorId)) { - String error = "get station_id or detect_id error"; - return false; - } - //新增Gards_Sample_Data表数据 - sampleDataSpectrumService.saveSampleData(sourceData, stationId, detectorId, filePathName, readLines); - //获取sampleId - Integer sampleId = spectrumAnalysisMapper.getSampleId(filePathName); - //存储Gards_Sample_Aux表数据 - sampleAuxSpectrumService.saveSampleAux(sourceData, sampleId, readLines); - //判断文件是否包含Comment块 新增Gards_Description数据 - if (readLines.contains(SampleFileHeader.COMMENT.getMessage())){ - sampleDescriptionSpectrumService.saveSampleDescription(sourceData, sampleId); - } - //判断文件是否包含Certificate块 新增Gards_Sample_Cert数据 - if (readLines.contains(SampleFileHeader.CERTIFICATE.getMessage())){ - sampleCertSpectrumService.saveSampleCert(sourceData, sampleId); - sampleCertLineSpectrumService.saveSampleCertLine(sourceData, sampleId); - } - //新增Gards_Calibration_Pairs_Orig数据 - calibrationPairsOrigSpectrumService.saveGardsCalibrationPairsOrig(sourceData, sampleId, readLines); - //判断文件是否包含b-gEfficiency块 新增Gards_Sample_Cert数据 - if (readLines.contains(SampleFileHeader.BGEFFICIENCY.getMessage())){ - bgEfficiencyPairsSpectrumService.saveBgEfficiencyPairs(sourceData, sampleId); - } - //判断文件是否包含TotalEff块 新增Gards_Sample_Cert数据 - if (readLines.contains(SampleFileHeader.TOTALEFF.getMessage())){ - totalEfficiencyPairsSpectrumService.saveTotalEfficiencyPairs(sourceData, sampleId); - } - //判断文件是否包含Ratios块 新增Gards_Sample_Ratios数据 - if (readLines.contains(SampleFileHeader.RATIOS.getMessage())){ - sampleRatiosSpectrumService.saveSampleRatios(sourceData, sampleId); - } - //判断是否包含ROI_Limits块 新增Gards_ROI_Limits数据 - if (readLines.contains(SampleFileHeader.ROILIMITS.getMessage())){ - roiLimitsSpectrumService.saveRoiLimits(sourceData, sampleId); - } - //新增Gards_Spectrum数据 - spectrumService.saveSpectrum(sourceData, sampleId, readLines, filePathName); - //判断是否包含Histogram块 新增Gards_Histogram数据 - if (readLines.contains(SampleFileHeader.HISTOGRAM.getMessage())){ - histogramService.saveHistogram(sourceData, sampleId, filePathName); - } + anlyseResultIn.setXeData(xeDataList); + betaDataFile.getXeResultsSpectrumList().forEach(item -> { + if (item.getNuclideName().equals(XeNuclideName.XE_131m.getType())) { + item.setNidFlag(anlyseResultIn.getXe131mFlag()); + } else if (item.getNuclideName().equals(XeNuclideName.XE_133.getType())) { + item.setNidFlag(anlyseResultIn.getXe133Flag()); + } else if (item.getNuclideName().equals(XeNuclideName.XE_133m.getType())) { + item.setNidFlag(anlyseResultIn.getXe133mFlag()); + } else if (item.getNuclideName().equals(XeNuclideName.XE_135.getType())) { + item.setNidFlag(anlyseResultIn.getXe135Flag()); } - return true; - } catch (Exception e) { - throw new RuntimeException(e); - } + }); + //处理GammaCalibration的数据 + List gammaCalibrationSpectrumList = betaDataFile.getGammaCalibrationSpectrumEList(); + anlyseResultIn.setGammaCalibrationSpectrumList(gammaCalibrationSpectrumList); + //处理BetaCalibration数据 + List betaCalibrationSpectrumList = betaDataFile.getBetaCalibrationSpectrumEList(); + anlyseResultIn.setBetaCalibrationSpectrumList(betaCalibrationSpectrumList); + //存储roiChannel数据 + List roiChannelsSpectrumList = betaDataFile.getRoiChannelsSpectrumList(); + anlyseResultIn.setRoiChannelsSpectrumList(roiChannelsSpectrumList); + //存储roiResult的数据 + List roiResultsSpectrumList = betaDataFile.getRoiResultsSpectrumList(); + anlyseResultIn.setRoiResultsSpectrumList(roiResultsSpectrumList); } - public List getFileBlockList(File file) { - List readLines = new LinkedList<>(); - try { - List allLines = FileUtils.readLines(file, "UTF-8"); - for (String line:allLines) { - if (line.contains("#")){ - readLines.add(line); - } - } - } catch (IOException e) { - throw new RuntimeException(e); + public List getXeDataList(List xeResultsSpectrumList) { + List xeDataList = new LinkedList<>(); + for (GardsXeResultsSpectrum xeResultsSpectrum:xeResultsSpectrumList) { + GardsXeResults xeResults = new GardsXeResults(); + BeanUtil.copyProperties(xeResultsSpectrum, xeResults); + xeDataList.add(xeResults); } - return readLines; - } - - public List getROIResult(List roiResultsSpectrumList, Integer sampleId, Integer idAnalysis) { - List roiResultsList = new LinkedList<>(); - for (int i=0; i Date: Tue, 19 Mar 2024 17:13:43 +0800 Subject: [PATCH 10/26] =?UTF-8?q?=E4=BA=BA=E5=B7=A5=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E5=88=86=E6=9E=90=E6=A8=A1=E5=9D=97Beta=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=BE=93=E5=87=BA=E8=AF=AD=E5=8F=A5=E7=A7=BB?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/service/impl/SpectrumAnalysisServiceImpl.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index 1c92197c..8ebe7032 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -4077,7 +4077,6 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements @Override @Transactional(rollbackFor = Exception.class) public Result saveToDB(BgDataAnlyseResultIn anlyseResultIn, HttpServletRequest request) { - long startTime = System.currentTimeMillis(); Result result = new Result(); Map map = new HashMap<>(); //根据请求体获取用户名 @@ -4173,7 +4172,6 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements getChannelAndEnergy(anlyseResultIn, betaList, gammaList, betaDataFile); //分析文件内容 analyzePHDFile(anlyseResultIn, betaDataFile); - long saveStartTime = System.currentTimeMillis(); //判断文件是否存储过 如果没有则解析文件并进行存储 if ( !OriginalDataStore(betaDataFile, "gas", gasFilePathName) ){ result.error500("gasFile save failed"); @@ -4293,9 +4291,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements //新增gards_roi_results数据表数据 gardsROIResultsSpectrumService.saveGardsROIResults(anlyseResultIn, sampleId, idAnalysis); } - System.out.println("数据库存储总时长:"+ (System.currentTimeMillis() - saveStartTime)); //上传本次文件到ftp人工交互存储路径下 - long uploadStartTime = System.currentTimeMillis(); try { if (StringUtils.isNotBlank(betaDataFile.getSampleTmpPath())) { File sampleTmp = new File(betaDataFile.getSampleTmpPath()); @@ -4355,7 +4351,6 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements } catch (FileNotFoundException e) { throw new RuntimeException(e); } - System.out.println("ftp上传总时长:"+ (System.currentTimeMillis() - uploadStartTime)); if (Objects.nonNull(sampleId)) { SpectrumData sampleData = getSpectrumData(sampleId, betaDataFile, "sample"); betaDataFile.setSampleSpectrumData(sampleData); @@ -4380,7 +4375,6 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements pushToRedis(betaDataFile, userName); result.setSuccess(true); result.setResult(map); - System.out.println("总时长:"+ (System.currentTimeMillis() - startTime)); return result; } From aa4c2b93d8135354f65d5e8216b758619df46d47 Mon Sep 17 00:00:00 2001 From: qiaoqinzheng Date: Fri, 22 Mar 2024 09:23:48 +0800 Subject: [PATCH 11/26] =?UTF-8?q?=E4=BA=BA=E5=B7=A5=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E5=88=86=E6=9E=90beta=E9=83=A8=E5=88=86=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E6=95=B0=E6=8D=AE=E6=97=B6=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=9A=84=E5=B1=9E=E4=BA=8E=E5=9B=A0=E4=B8=BA?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E5=B7=B2=E7=BB=8F=E5=AD=98=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=E5=AF=BC=E8=87=B4=E6=95=B0=E6=8D=AE=E8=A2=AB?= =?UTF-8?q?=E9=87=8D=E7=BD=AE=EF=BC=8C=E5=AD=98=E5=82=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E6=97=B6=E4=B8=8B=E6=A0=87=E8=B6=8A=E7=95=8C=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SpectrumAnalysisServiceImpl.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index 8ebe7032..be6b9420 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -605,6 +605,13 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements } //更新缓存数据对应的缓存数据 phdFileUtil.createBgCalPara(betaDataFile, gammaCalibrationSpectrumList, betaCalibrationSpectrumList, gammaCalibrationPairsList, betaCalibrationPairsList); + //第一次加载时初始化数据库数据 + betaDataFile.setGammaCalibrationSpectrumEList(gammaCalibrationSpectrumList); + betaDataFile.setBetaCalibrationSpectrumEList(betaCalibrationSpectrumList); + betaDataFile.setRoiChannelsSpectrumList(roiChannelsSpectrumList); + betaDataFile.setRoiResultsSpectrumList(roiResultsSpectrumList); + betaDataFile.setGammaCalibrationPairsList(gammaCalibrationPairsList); + betaDataFile.setBetaCalibrationPairsList(betaCalibrationPairsList); } else { xeResultsSpectrumList = betaDataFile.getXeResultsSpectrumList(); sampleMap = loadData("sample", betaDataFile); @@ -639,12 +646,6 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements xeData.setConcErr(Double.valueOf(NumberFormatUtil.numberSixLen(String.valueOf(xeData.getConcErr())))); } } - betaDataFile.setGammaCalibrationSpectrumEList(gammaCalibrationSpectrumList); - betaDataFile.setBetaCalibrationSpectrumEList(betaCalibrationSpectrumList); - betaDataFile.setRoiChannelsSpectrumList(roiChannelsSpectrumList); - betaDataFile.setRoiResultsSpectrumList(roiResultsSpectrumList); - betaDataFile.setGammaCalibrationPairsList(gammaCalibrationPairsList); - betaDataFile.setBetaCalibrationPairsList(betaCalibrationPairsList); betaDataFile.setXeResultsSpectrumList(xeResultsSpectrumList); betaDataFile.setSaveAnalysisResult(true); resultMap.put("XeData", phdFileUtil.viewXeData(xeResultsSpectrumList)); From d5f40c9023c79d63c683b4520b3132a575d662cb Mon Sep 17 00:00:00 2001 From: qiaoqinzheng Date: Mon, 1 Apr 2024 10:02:38 +0800 Subject: [PATCH 12/26] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=96=B0=E5=A2=9E=E5=8A=A0=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E9=82=AE=E7=AE=B1=E9=82=AE=E4=BB=B6=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=89=8D=E8=B0=83=E7=94=A8=E6=A3=80=E6=9F=A5=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E9=82=AE=E4=BB=B6=E5=A4=B1=E8=B4=A5=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=A4=9A=E6=AC=A1=E5=88=99=E5=B0=86=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E4=BB=8E=E9=82=AE=E7=AE=B1=E4=B8=AD=E7=A7=BB=E9=99=A4=E4=B8=8D?= =?UTF-8?q?=E5=BD=B1=E5=93=8D=E5=90=8E=E7=BB=AD=E9=82=AE=E4=BB=B6=E6=93=8D?= =?UTF-8?q?=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/email/EmailServiceManager.java | 22 +++++++++++------ .../common/properties/TaskProperties.java | 5 ++++ .../jeecg/modules/EmailParsingActuator.java | 24 ++++++++++--------- .../spectrum/SpectrumParsingActuator.java | 9 ++++--- 4 files changed, 39 insertions(+), 21 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 2ac1db5d..3b3c2f39 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 @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import com.google.common.collect.Lists; import com.sun.mail.imap.IMAPStore; import com.sun.mail.smtp.SMTPAddressFailedException; +import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.dto.message.MessageDTO; @@ -16,6 +17,7 @@ import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.email.emuns.MailContentType; import org.jeecg.common.exception.DownloadEmailException; import org.jeecg.common.properties.SpectrumPathProperties; +import org.jeecg.common.properties.TaskProperties; import org.jeecg.common.util.DateUtils; import org.jeecg.common.util.Md5Util; import org.jeecg.common.util.RedisUtil; @@ -47,6 +49,8 @@ public class EmailServiceManager { private SysEmail email; private SpectrumPathProperties spectrumPathProperties; + + private TaskProperties taskProperties; /** * 系统启动时间 */ @@ -80,13 +84,14 @@ public class EmailServiceManager { * @param email 邮件属性 */ public void init(SysEmail email, Integer receiveNum, String temporaryStoragePath, - Date systemStartupTime, SpectrumPathProperties pathProperties, + Date systemStartupTime, SpectrumPathProperties pathProperties,TaskProperties taskProperties, RedisUtil redisUtil){ this.email = email; this.receiveNum = receiveNum; this.temporaryStoragePath = temporaryStoragePath; this.systemStartupTime = systemStartupTime; this.spectrumPathProperties = pathProperties; + this.taskProperties = taskProperties; this.redisUtil = redisUtil; } @@ -630,10 +635,10 @@ public class EmailServiceManager { if(null != store){ store.close(); } - for(String messageId : messageIds){ - String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId; - redisUtil.del(key); - } +// for(String messageId : messageIds){ +// String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId; +// redisUtil.del(key); +// } } catch (MessagingException e) { log.error("Email closure failed, email address is: {}, reason is: {}",email.getUsername(),e.getMessage()); e.printStackTrace(); @@ -649,10 +654,13 @@ public class EmailServiceManager { boolean exist = false; try { String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId; - exist = redisUtil.hasKey(key); - if(exist){ + int numberKey = redisUtil.get(key) != null? (int) redisUtil.get(key):0; +// exist = redisUtil.hasKey(key); + if(numberKey > taskProperties.getForceDeletedNumber()){ + exist = true; log.info("Check: Remove Email:{},receiveTime:{}",message.getSubject(), DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss")); message.setFlag(Flags.Flag.DELETED,true); + redisUtil.del(key); } return exist; } catch (MessagingException e) { diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/TaskProperties.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/TaskProperties.java index 34f9e294..3a9122b7 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/TaskProperties.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/TaskProperties.java @@ -41,6 +41,11 @@ public class TaskProperties implements Serializable { */ private Integer mailThreadExecCycle; + /** + * 线程获取失败邮件次数 + */ + private Integer forceDeletedNumber; + /** * 监测需删除的邮件线程执行周期(毫秒) */ 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 8abbeb06..737b53c8 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 @@ -74,23 +74,23 @@ public class EmailParsingActuator extends Thread{ long start = System.currentTimeMillis(); final EmailServiceManager emailServiceManager = EmailServiceManager.getInstance(); emailServiceManager.init(this.emailProperties,this.taskProperties.getReceiveNum(),this.taskProperties.getTemporaryStoragePath(), - this.systemStartupTime, spectrumServiceQuotes.getSpectrumPathProperties(),spectrumServiceQuotes.getRedisUtil()); + this.systemStartupTime, spectrumServiceQuotes.getSpectrumPathProperties(), spectrumServiceQuotes.getTaskProperties(), spectrumServiceQuotes.getRedisUtil()); List messageIds = new ArrayList<>(); try { Message[] messages = emailServiceManager.receiveMail(); if(ArrayUtils.isNotEmpty(messages)){ log.info("EmailParsingActuator本次获取邮件数量为:{}",messages.length); //检验获取的邮件是否在之前删除失败列表中,若在直接调用邮件API删除,并且此次数组里元素也删除 -// for(int i=messages.length-1;i>=0;i--){ -// if (!messages[i].isExpunged()){ -// String messageId = ((MimeMessage) messages[i]).getMessageID(); -// final boolean exist = emailServiceManager.check(messages[i],messageId); -// messageIds.add(messageId); -// if(exist){ -// messages = ArrayUtils.remove(messages,i); -// } -// } -// } + for(int i=messages.length-1;i>=0;i--){ + if (!messages[i].isExpunged()){ + String messageId = ((MimeMessage) messages[i]).getMessageID(); + final boolean exist = emailServiceManager.check(messages[i],messageId); + messageIds.add(messageId); + if(exist){ + messages = ArrayUtils.remove(messages,i); + } + } + } log.info("EmailParsingActuator本次真实执行邮件数量为:{}",messages.length); if(messages.length > 0){ //本批次邮件号 @@ -107,6 +107,8 @@ public class EmailParsingActuator extends Thread{ } }catch (InterruptedException e) { e.printStackTrace(); + } catch (MessagingException e) { + throw new RuntimeException(e); } finally { //清除本批次邮件日志缓存 EmailLogManager.getInstance().clear(); 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 53f17107..a88f07ad 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 @@ -96,7 +96,10 @@ public class SpectrumParsingActuator implements Runnable{ 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; - spectrumServiceQuotes.getRedisUtil().set(key,emlName,expiryTime); +// spectrumServiceQuotes.getRedisUtil().set(key,emlName,expiryTime); + //判断当前key的下载次数是否超过限制次数 + spectrumServiceQuotes.getRedisUtil().incr(key, 1L); + spectrumServiceQuotes.getRedisUtil().expire(key, expiryTime); //线程开始初始化时,初始本线程负责的能谱日志事件 SpectrumLogManager.mailSpectrumLogManager.offer(Thread.currentThread().getId(),null); @@ -123,6 +126,7 @@ public class SpectrumParsingActuator implements Runnable{ try { //开始解析 spectrumHandler.handler(); + spectrumServiceQuotes.getRedisUtil().del(key); } catch (Exception e) { //如果是gamma谱的分析异常 if (e instanceof AnalySpectrumException) { @@ -136,7 +140,6 @@ public class SpectrumParsingActuator implements Runnable{ throw e; } } - }else{ log.warn("This email {} parsing failed and is not listed in the Met, Alert, SOH, Sample, Detbkphd, QC, Gasbkphd spectra.",subject); } @@ -204,7 +207,7 @@ public class SpectrumParsingActuator implements Runnable{ final String finalPath = rootPath+emlErrorPath; FileOperation.moveFile(emlFile,finalPath,true); // 删除 key,防止下次线程执行删除邮件 - spectrumServiceQuotes.getRedisUtil().del(key); +// spectrumServiceQuotes.getRedisUtil().del(key); } } From 22b31b5daf39fc93041735af6f115edb2808ac3b Mon Sep 17 00:00:00 2001 From: nieziyan Date: Mon, 15 Apr 2024 18:37:10 +0800 Subject: [PATCH 13/26] =?UTF-8?q?fix=EF=BC=9A=E6=B6=88=E6=81=AF=E9=98=9F?= =?UTF-8?q?=E5=88=97=E6=B6=88=E8=B4=B9=E6=A8=A1=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg/common/constant/RedisConstant.java | 6 -- .../jeecg/modules/base/enums/Condition.java | 2 +- .../modules/redisStream/AnalysisConsumer.java | 69 ++++++++++--------- .../redisStream/RedisStreamConfig.java | 36 +++++----- .../IAlarmAnalysisNuclideAvgService.java | 4 +- .../AlarmAnalysisNuclideAvgServiceImpl.java | 13 ++-- 6 files changed, 67 insertions(+), 63 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java index 8a1fa80f..2e885a34 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java @@ -13,16 +13,10 @@ public interface RedisConstant { */ String PREFIX_SILENCE = "SilenceCycle:"; - String STREAM_ALARM = "Stream:Alarm"; - String STREAM_ANALYSIS = "Stream:Analysis"; - String GROUP_ALARM = "Group_Alarm"; - String GROUP_ANALYSIS = "Group_Analysis"; - String CONSUMER_ALARM = "Consumer_Alarm"; - String CONSUMER_ANALYSIS = "Consumer_Analysis"; String NUCLIDE_LINES_LIB = "Nuclide_Lines_Lib:"; diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Condition.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Condition.java index 7ce3278a..587c8923 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Condition.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Condition.java @@ -9,7 +9,7 @@ import lombok.Getter; public enum Condition { FIRST_FOUND("1"), ABOVE_AVERAGE("2"), MEANWHILE("3"); - private String value; + private final String value; public static Condition valueOf1(String value){ for (Condition condition : Condition.values()) { diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java index 576588e2..7bf3492c 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java @@ -18,10 +18,8 @@ import org.jeecg.common.config.mqtoken.UserTokenContext; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.constant.enums.SampleType; -import org.jeecg.common.util.DataTool; -import org.jeecg.common.util.RedisStreamUtil; -import org.jeecg.common.util.SpringContextUtils; -import org.jeecg.common.util.TemplateUtil; +import org.jeecg.common.util.*; +import org.jeecg.common.util.dynamic.db.FreemarkerParseFactory; import org.jeecg.modules.base.dto.NuclideInfo; import org.jeecg.modules.base.dto.Info; import org.jeecg.modules.base.entity.postgre.AlarmAnalysisLog; @@ -45,6 +43,7 @@ import static org.jeecg.modules.base.enums.Template.ANALYSIS_NUCLIDE; import static org.jeecg.modules.base.enums.Template.MONITOR_EMAIL; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -80,7 +79,7 @@ public class AnalysisConsumer implements StreamListener conditions = ListUtil.toList(conditionStr.split(COMMA)); List firstDetected = new ArrayList<>(); // 首次发现 List moreThanAvg = new ArrayList<>(); // 超浓度均值 List meanwhile = new ArrayList<>(); // 同时出现两种及以上核素 for (String con : conditions) { Condition condition = Condition.valueOf1(con); - if (ObjectUtil.isNotNull(condition)){ - switch (condition){ - case FIRST_FOUND: // 首次发现该元素 - firstDetected = firstDetected(betaOrGamma, datasource, nuclideNames); - break; - case ABOVE_AVERAGE: // 元素浓度高于均值 - moreThanAvg = moreThanAvg(datasource,nuclidesCross); - break; - case MEANWHILE: // 同时出现两种及以上核素 - if (CollUtil.isNotEmpty(nuclideNames) && nuclideNames.size() >= 2) - meanwhile.addAll(nuclideNames); - break; - default: - break; - } + if (ObjectUtil.isNull(condition)) continue; + switch (condition){ + case FIRST_FOUND: // 首次发现该元素 + firstDetected = firstDetected(betaOrGamma, datasource, nuclideNames); + break; + case ABOVE_AVERAGE: // 元素浓度高于均值 + moreThanAvg = moreThanAvg(datasource, stationId, collDate, nuclidesCross); + break; + case MEANWHILE: // 同时出现两种及以上核素 + if (CollUtil.isNotEmpty(nuclideNames) && nuclideNames.size() >= 2) + meanwhile.addAll(nuclideNames); + break; + default: + break; } } // 构建预警信息 @@ -224,12 +228,12 @@ public class AnalysisConsumer implements StreamListener moreThanAvg(String dataSourceType, - Map nuclidesCross){ + private List moreThanAvg(String dataSourceType, String stationId, + LocalDate collDate, Map nuclidesCross){ List nuclideInfos = new ArrayList<>(); Set nuclideNames = nuclidesCross.keySet(); Map nuclideAvgs = nuclideAvgService - .list(nuclideNames, dataSourceType).stream() + .list(nuclideNames, dataSourceType, stationId, collDate).stream() .collect(Collectors.toMap(AlarmAnalysisNuclideAvg::getNuclide, AlarmAnalysisNuclideAvg::getVal)); for (Map.Entry nuclide : nuclidesCross.entrySet()) { @@ -249,25 +253,26 @@ public class AnalysisConsumer implements StreamListener readA1 = StreamMessageListenerContainer + /* 1.需要手动确认消费消息 */ + // 1.1 使用 register 方式 + StreamMessageListenerContainer.ConsumerStreamReadRequest readRequest = StreamMessageListenerContainer .StreamReadRequest - .builder(StreamOffset.create(warnKey, ReadOffset.lastConsumed())) - .consumer(Consumer.from(groupWarnA, consumerWarnA1)) + .builder(StreamOffset.create(analysisKey, ReadOffset.lastConsumed())) + .consumer(Consumer.from(analysisGroup, analysisConsumer)) + // 手动确认消费了消息 默认为自动确认消息 .autoAcknowledge(false) - // 如果消费者发生了异常,是否禁止消费者消费 + // 如果消费者发生了异常 不禁止消费者消费 默认为禁止 .cancelOnError(throwable -> false) .build(); - ConsumeA1 consumeA1 = new ConsumeA1(groupWarnA, consumerWarnA1); - streamMessageListenerContainer.register(readA1, consumeA1);*/ - AnalysisConsumer analysis = new AnalysisConsumer(analysisGroup,analysisConsumer); + AnalysisConsumer analysis = new AnalysisConsumer(analysisGroup, analysisConsumer); + streamMessageListenerContainer.register(readRequest, analysis); + // 1.2 使用 receive 方式 + /*AnalysisConsumer analysis = new AnalysisConsumer(analysisGroup, analysisConsumer); streamMessageListenerContainer.receive(Consumer.from(analysisGroup, analysisConsumer), - StreamOffset.create(analysisKey, ReadOffset.lastConsumed()), analysis); - // 创建消费组A中的消费者A2,自动ACK - /* ConsumeA2 consumeA2 = new ConsumeA2(consumerWarnA2); - streamMessageListenerContainer.receiveAutoAck(Consumer.from(groupWarnA, consumerWarnA2), - StreamOffset.create(warnKey, ReadOffset.lastConsumed()), consumeA2);*/ + StreamOffset.create(analysisKey, ReadOffset.lastConsumed()), analysis);*/ + /* 2.自动确认消费消息 */ + // 2.1 使用 receive 方式 + /*AnalysisConsumer analysis = new AnalysisConsumer(analysisGroup,analysisConsumer); + streamMessageListenerContainer.receiveAutoAck(Consumer.from(analysisGroup, analysisConsumer), + StreamOffset.create(analysisKey, ReadOffset.lastConsumed()), analysis);*/ return streamMessageListenerContainer; } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IAlarmAnalysisNuclideAvgService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IAlarmAnalysisNuclideAvgService.java index 70199b04..a9afd7a9 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IAlarmAnalysisNuclideAvgService.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IAlarmAnalysisNuclideAvgService.java @@ -6,12 +6,14 @@ import org.jeecg.modules.base.entity.postgre.AlarmAnalysisNuclideAvg; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.base.bizVo.NuclideAvgVo; +import java.time.LocalDate; import java.util.List; import java.util.Set; public interface IAlarmAnalysisNuclideAvgService extends IService { - List list(Set nuclideNames,String dataSourceType); + List list(Set nuclideNames, String dataSourceType, + String stationId, LocalDate collDate); Page findPage(NuclideAvgVo nuclideAvgVo); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisNuclideAvgServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisNuclideAvgServiceImpl.java index 2659c56d..71d23713 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisNuclideAvgServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisNuclideAvgServiceImpl.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; import java.util.Set; @@ -27,13 +28,15 @@ public class AlarmAnalysisNuclideAvgServiceImpl extends ServiceImpl list(Set nuclideNames,String dataSourceType) { - LocalDate dayAgo = LocalDate.now().minusDays(1); + public List list(Set nuclideNames, String dataSourceType, + String stationId, LocalDate collDate) { + LocalDate dayAgo = collDate.minusDays(1); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(AlarmAnalysisNuclideAvg::getDataSourceType,dataSourceType); - wrapper.eq(AlarmAnalysisNuclideAvg::getCaclDate,dayAgo); + wrapper.eq(AlarmAnalysisNuclideAvg::getStationId, stationId); + wrapper.eq(AlarmAnalysisNuclideAvg::getDataSourceType, dataSourceType); + wrapper.eq(AlarmAnalysisNuclideAvg::getCaclDate, dayAgo); wrapper.in(AlarmAnalysisNuclideAvg::getNuclide,nuclideNames); - return list(wrapper); + return this.list(wrapper); } @Override From a8c32e43bda9a7b19946e9ec93cb225d4883bc7a Mon Sep 17 00:00:00 2001 From: qiaoqinzheng Date: Wed, 17 Apr 2024 09:12:32 +0800 Subject: [PATCH 14/26] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GammaServiceImpl.java | 9 +++- .../impl/SpectrumAnalysisServiceImpl.java | 50 +++++++++++-------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java index 761ca62a..89f863a3 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java @@ -1312,7 +1312,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi HashMap map = new HashMap<>(); // 根据boolean 决定是否保留本次数据 如果保留则不需要操作vPeak 并重新拟合线 if (accept) { - Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideLinesMap = phd.getPhdNuclideMap();//(Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); if (flag.equalsIgnoreCase("insert")) {// 如果传递的flag标识 是 Insert则进行峰值的插入 //重新赋值index for (int k=0; k peakNuclides = phd.getVPeak().get(curRow).nuclides; + if (peakNuclides.indexOf(nuclideName) < 0 ) { + peakNuclides.add(nuclideName); + } // 查询当前用户所关心的核素名称 Map mapNucLines = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); //用户当前缓存的核素信息 @@ -1714,8 +1717,10 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } t_idx++; } + //重新计算核素的MDA值 gammaFileUtil.CalcNuclideMDA(phd, it_line, nuclideName, vPeakIdx); map.put("identify", list_identify); + //格式化核素表单内容 List vPeak = gammaFileUtil.InitPeakTable(phd.getVPeak()); map.put("table", vPeak); //如果当前缓存的谱核素信息不包含当前核素 diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index be6b9420..602eb352 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -3498,6 +3498,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements } betaDataFile.setBProcessed(false); betaDataFile.setSaveAnalysisResult(false); + betaDataFile.setXeResultsSpectrumList(Collections.EMPTY_LIST); xeMap.put("XeData", Collections.EMPTY_LIST); xeMap.put("bProcessed", false); xeMap.put("savedAnalysisResult", false); @@ -3523,10 +3524,12 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements List betaList = new LinkedList<>(); List betaFittingPara = new LinkedList<>(); List betaFittingParaToUi = new LinkedList<>(); + List> betaNewEnergyListNow = new LinkedList<>(); List gammaList = new LinkedList<>(); List gammaFittingPara = new LinkedList<>(); List gammaFittingParaToUi = new LinkedList<>(); - //根据sample文件名称获取当前文件的缓存信息 + List> gammaNewEnergyListNow = new LinkedList<>(); + //根据sample文件名称获取当前文件的缓存信息 BetaDataFile sampleBetaData = cache.getIfPresent(sampleFileName + "-" + userName); //存储重新分析字段的实体类 SpectrumGroup spectrum_group = new SpectrumGroup(); @@ -3541,15 +3544,16 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements betaDataFile.setBetaFittingPara(betaDataFile.getBetaFittingParaNow()); betaDataFile.setBetaFittingParaToUi(betaDataFile.getBetaFittingParaToUiNow()); betaDataFile.setBetaNewEnergyList(betaDataFile.getBetaNewEnergyListNow()); - //将当前文件用到的计算数据同步到需要计算的文件缓存 - sampleBetaData.setBetaList(betaList); - sampleBetaData.setBetaFittingPara(betaFittingPara); - sampleBetaData.setBetaFittingParaToUi(betaFittingParaToUi); - sampleBetaData.setBetaNewEnergyList(betaDataFile.getBetaNewEnergyListNow()); //将新的数组封装到各自的数组中 betaList = betaDataFile.getBetaList(); betaFittingPara = betaDataFile.getBetaFittingPara(); betaFittingParaToUi = betaDataFile.getBetaFittingParaToUi(); + betaNewEnergyListNow = betaDataFile.getBetaNewEnergyListNow(); + //将当前文件用到的计算数据同步到需要计算的文件缓存 + sampleBetaData.setBetaList(betaList); + sampleBetaData.setBetaFittingPara(betaFittingPara); + sampleBetaData.setBetaFittingParaToUi(betaFittingParaToUi); + sampleBetaData.setBetaNewEnergyList(betaNewEnergyListNow); } List beCal = new LinkedList<>(); beCal.add(Double.valueOf(betaFittingParaToUi.get(0))); @@ -3598,15 +3602,16 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements betaDataFile.setGammaFittingPara(betaDataFile.getGammaFittingParaNow()); betaDataFile.setGammaFittingParaToUi(betaDataFile.getGammaFittingParaToUiNow()); betaDataFile.setGammaNewEnergyList(betaDataFile.getGammaNewEnergyListNow()); - //将当前文件用到的计算数据同步到需要计算的文件缓存 - sampleBetaData.setGammaList(gammaList); - sampleBetaData.setGammaFittingPara(gammaFittingPara); - sampleBetaData.setGammaFittingParaToUi(gammaFittingParaToUi); - sampleBetaData.setGammaNewEnergyList(betaDataFile.getGammaNewEnergyListNow()); //将新的数组封装到各自的数组中 gammaList = betaDataFile.getGammaList(); gammaFittingPara = betaDataFile.getGammaFittingPara(); gammaFittingParaToUi = betaDataFile.getGammaFittingParaToUi(); + gammaNewEnergyListNow = betaDataFile.getGammaNewEnergyListNow(); + //将当前文件用到的计算数据同步到需要计算的文件缓存 + sampleBetaData.setGammaList(gammaList); + sampleBetaData.setGammaFittingPara(gammaFittingPara); + sampleBetaData.setGammaFittingParaToUi(gammaFittingParaToUi); + sampleBetaData.setGammaNewEnergyList(gammaNewEnergyListNow); } List geCal = new LinkedList<>(); geCal.add(Double.valueOf(gammaFittingParaToUi.get(0))); @@ -3736,6 +3741,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements } sampleBetaData.setBProcessed(false); sampleBetaData.setSaveAnalysisResult(false); + sampleBetaData.setXeResultsSpectrumList(Collections.EMPTY_LIST); xeMap.put("XeData", Collections.EMPTY_LIST); xeMap.put("bProcessed", false); xeMap.put("savedAnalysisResult", false); @@ -3866,6 +3872,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements map.put("XeData", Collections.EMPTY_LIST); betaDataFile.setBProcessed(false); betaDataFile.setSaveAnalysisResult(false); + betaDataFile.setXeResultsSpectrumList(Collections.EMPTY_LIST); map.put("bProcessed", false); map.put("savedAnalysisResult", false); } @@ -3991,6 +3998,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements map.put("XeData", Collections.EMPTY_LIST); betaDataFile.setBProcessed(false); betaDataFile.setSaveAnalysisResult(false); + betaDataFile.setXeResultsSpectrumList(Collections.EMPTY_LIST); map.put("bProcessed", false); map.put("savedAnalysisResult", false); mapList.put(sampleFileName, map); @@ -4002,7 +4010,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements e.printStackTrace(); } result.setSuccess(true); - result.setResult(mapList.get(currentFileName)); + result.setResult(mapList); return result; } @@ -5789,13 +5797,13 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements xeDataList = getXeDataList(xeResultsSpectrumList); } for (GardsXeResults xeData :xeDataList) { - if (xeData.getNuclideName().equals(XeNuclideName.XE_131m)) { + if (xeData.getNuclideName().equals(XeNuclideName.XE_131m.getType())) { xeData.setNidFlag(anlyseResultIn.getXe131mFlag()); - } else if (xeData.getNuclideName().equals(XeNuclideName.XE_133)) { + } else if (xeData.getNuclideName().equals(XeNuclideName.XE_133.getType())) { xeData.setNidFlag(anlyseResultIn.getXe133Flag()); - } else if (xeData.getNuclideName().equals(XeNuclideName.XE_133m)) { + } else if (xeData.getNuclideName().equals(XeNuclideName.XE_133m.getType())) { xeData.setNidFlag(anlyseResultIn.getXe133mFlag()); - } else if (xeData.getNuclideName().equals(XeNuclideName.XE_135)) { + } else if (xeData.getNuclideName().equals(XeNuclideName.XE_135.getType())) { xeData.setNidFlag(anlyseResultIn.getXe135Flag()); } } @@ -5827,10 +5835,12 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements public List getXeDataList(List xeResultsSpectrumList) { List xeDataList = new LinkedList<>(); - for (GardsXeResultsSpectrum xeResultsSpectrum:xeResultsSpectrumList) { - GardsXeResults xeResults = new GardsXeResults(); - BeanUtil.copyProperties(xeResultsSpectrum, xeResults); - xeDataList.add(xeResults); + if (CollectionUtils.isNotEmpty(xeResultsSpectrumList)) { + for (GardsXeResultsSpectrum xeResultsSpectrum:xeResultsSpectrumList) { + GardsXeResults xeResults = new GardsXeResults(); + BeanUtil.copyProperties(xeResultsSpectrum, xeResults); + xeDataList.add(xeResults); + } } return xeDataList; } From 99f74539d23541ef79c2edba8db9ab4c04799977 Mon Sep 17 00:00:00 2001 From: qiaoqinzheng Date: Fri, 19 Apr 2024 16:36:46 +0800 Subject: [PATCH 15/26] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=94=81=E9=81=BF=E5=85=8D=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E5=AF=BC=E8=87=B4=E9=82=AE=E4=BB=B6=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E4=B8=8B=E8=BD=BD=E4=B8=B2=E6=96=87=E4=BB=B6=20?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=96=87=E4=BB=B6=E8=BE=93=E5=87=BA=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/email/EmailServiceManager.java | 117 ++++++++++-------- 1 file changed, 65 insertions(+), 52 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 3b3c2f39..f4f8b334 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 @@ -66,6 +66,8 @@ public class EmailServiceManager { private RedisUtil redisUtil; + private Object downloadEmlLocal = new Object(); + @NotNull public static EmailServiceManager getInstance(){ return new EmailServiceManager(); @@ -525,44 +527,47 @@ public class EmailServiceManager { * 当计数大于10000后从0开始,服务重启后也从0开始 */ public File downloadEmailToEmlDir(@NotNull Message message,Integer emailCounter,Integer batchesCounter) throws MessagingException { - String subject = ""; - File emlFile = null; - String status = EmailLogManager.STATUS_SUCCESS; - Date receivedDate = null; - try { - //获取发件人 - final String address = ((InternetAddress) message.getFrom()[0]).getAddress(); - final String from = address.substring(0,address.indexOf(StringConstant.AT)); - //获取主题 - subject = MimeUtility.decodeText(message.getSubject()); - if(subject.indexOf(StringConstant.SLASH) != -1){ - subject = StringUtils.replace(subject,StringConstant.SLASH,""); - } - if(subject.indexOf(StringConstant.COLON) != -1){ - subject = StringUtils.replace(subject,StringConstant.COLON,""); - } - receivedDate = message.getReceivedDate(); - StringBuilder fileName = new StringBuilder(); - fileName.append(from); - fileName.append(StringConstant.UNDER_LINE); - fileName.append(subject); - fileName.append(StringConstant.UNDER_LINE); - fileName.append(DateUtils.formatDate(new Date(),"YYMMdd")); - fileName.append(StringConstant.UNDER_LINE); - fileName.append(DateUtils.formatDate(new Date(),"HHmmssSSS")); - fileName.append(StringConstant.UNDER_LINE); - fileName.append("receive"); - fileName.append(StringConstant.UNDER_LINE); - fileName.append(DateUtils.formatDate(receivedDate,"YYMMdd")); - fileName.append(StringConstant.UNDER_LINE); - fileName.append(DateUtils.formatDate(receivedDate,"HHmmssSSS")); - fileName.append(StringConstant.UNDER_LINE); - fileName.append(emailCounter); - fileName.append(SAVE_EML_SUFFIX); - final String rootPath = spectrumPathProperties.getRootPath(); - final String emlPath = spectrumPathProperties.getEmlPath(); - emlFile = new File(rootPath+emlPath+File.separator+fileName); - message.writeTo(new FileOutputStream(emlFile)); + synchronized (downloadEmlLocal) { + String subject = ""; + File emlFile = null; + String status = EmailLogManager.STATUS_SUCCESS; + Date receivedDate = null; + FileOutputStream outputStream = null; + try { + //获取发件人 + final String address = ((InternetAddress) message.getFrom()[0]).getAddress(); + final String from = address.substring(0,address.indexOf(StringConstant.AT)); + //获取主题 + subject = MimeUtility.decodeText(message.getSubject()); + if(subject.indexOf(StringConstant.SLASH) != -1){ + subject = StringUtils.replace(subject,StringConstant.SLASH,""); + } + if(subject.indexOf(StringConstant.COLON) != -1){ + subject = StringUtils.replace(subject,StringConstant.COLON,""); + } + receivedDate = message.getReceivedDate(); + StringBuilder fileName = new StringBuilder(); + fileName.append(from); + fileName.append(StringConstant.UNDER_LINE); + fileName.append(subject); + fileName.append(StringConstant.UNDER_LINE); + fileName.append(DateUtils.formatDate(new Date(),"YYMMdd")); + fileName.append(StringConstant.UNDER_LINE); + fileName.append(DateUtils.formatDate(new Date(),"HHmmssSSS")); + fileName.append(StringConstant.UNDER_LINE); + fileName.append("receive"); + fileName.append(StringConstant.UNDER_LINE); + fileName.append(DateUtils.formatDate(receivedDate,"YYMMdd")); + fileName.append(StringConstant.UNDER_LINE); + fileName.append(DateUtils.formatDate(receivedDate,"HHmmssSSS")); + fileName.append(StringConstant.UNDER_LINE); + fileName.append(emailCounter); + fileName.append(SAVE_EML_SUFFIX); + final String rootPath = spectrumPathProperties.getRootPath(); + final String emlPath = spectrumPathProperties.getEmlPath(); + emlFile = new File(rootPath+emlPath+File.separator+fileName); + outputStream = new FileOutputStream(emlFile); + message.writeTo(outputStream); // int bufferSize = 1024 * 1024; // 1M // InputStream inputStream = message.getInputStream(); @@ -580,20 +585,28 @@ public class EmailServiceManager { // // 关闭流 // bufferedInputStream.close(); // bufferedOutputStream.close(); - } catch (MessagingException | IOException e) { - // 下载邮件失败 抛出自定义邮件下载异常 - status = EmailLogManager.STATUS_ERROR; - String errorMsg = StrUtil.format("The email download failed, the subject of the email is {}, the reason is {}.", subject, e.getMessage()); - log.error(errorMsg); - throw new DownloadEmailException(errorMsg); - }catch (Exception e) { - log.error("",e); - }finally { - EmailLogEvent event = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDEML,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS"), - (Objects.isNull(emlFile)?" ":emlFile.getAbsolutePath())); - EmailLogManager.getInstance().offer(Thread.currentThread().getId(),event); + } catch (MessagingException | IOException e) { + // 下载邮件失败 抛出自定义邮件下载异常 + status = EmailLogManager.STATUS_ERROR; + String errorMsg = StrUtil.format("The email download failed, the subject of the email is {}, the reason is {}.", subject, e.getMessage()); + log.error(errorMsg); + throw new DownloadEmailException(errorMsg); + }catch (Exception e) { + log.error("",e); + }finally { + EmailLogEvent event = new EmailLogEvent(batchesCounter,Thread.currentThread().getId(),EmailLogManager.GS_TYPE_GET,status,EmailLogManager.GETIDEML,subject,DateUtils.formatDate(receivedDate,"yyyy-MM-dd HH:mm:ss:SSS"), + (Objects.isNull(emlFile)?" ":emlFile.getAbsolutePath())); + EmailLogManager.getInstance().offer(Thread.currentThread().getId(),event); + try { + if (Objects.nonNull(outputStream)) { + outputStream.close(); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + return emlFile; } - return emlFile; } /** @@ -656,7 +669,7 @@ public class EmailServiceManager { String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId; int numberKey = redisUtil.get(key) != null? (int) redisUtil.get(key):0; // exist = redisUtil.hasKey(key); - if(numberKey > taskProperties.getForceDeletedNumber()){ + if(numberKey >= taskProperties.getForceDeletedNumber()){ exist = true; log.info("Check: Remove Email:{},receiveTime:{}",message.getSubject(), DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss")); message.setFlag(Flags.Flag.DELETED,true); From fc978d459eb4dac4bab43ba0254e9b817494a6f5 Mon Sep 17 00:00:00 2001 From: nieziyan Date: Mon, 29 Apr 2024 17:12:07 +0800 Subject: [PATCH 16/26] =?UTF-8?q?feat=EF=BC=9A=E5=A2=9E=E5=8A=A0=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=A4=84=E7=90=86=E9=82=AE=E7=AE=B1=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/modules/base/enums/Item.java | 9 ++- .../controller/SysEmailLogController.java | 11 ++- .../modules/service/ISysEmailLogService.java | 3 + .../service/impl/SysEmailLogServiceImpl.java | 8 ++ .../feignclient/AbnormalAlarmClient.java | 5 ++ .../modules/quartz/jobs/DatabaseJob.java | 43 +++++----- .../jeecg/modules/quartz/jobs/EmailJob.java | 78 ++++++++++++------- .../jeecg/modules/quartz/jobs/ServerJob.java | 43 +++++----- .../modules/quartz/jobs/TableSpaceJob.java | 43 +++++----- 9 files changed, 145 insertions(+), 98 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Item.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Item.java index 32214f11..a7e28ec2 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Item.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Item.java @@ -7,12 +7,13 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum Item { - EMAIL_CONN("1", "Connection Status"), - TABLESPACE_USAGE("2", "TableSpace Usage"); + EMAIL_CONN("1", "Email Connection Status"), + TABLESPACE_USAGE("2", "TableSpace Usage"), + EMAIL_PROCESS("3", "Email Process"); - private String value; + private final String value; - private String name; + private final String name; public static Item of(String value){ for (Item item : Item.values()) { diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailLogController.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailLogController.java index 56c2fd8d..a79a1801 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailLogController.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailLogController.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; +import java.util.List; import java.util.Map; @RestController @@ -63,8 +64,14 @@ public class SysEmailLogController { @GetMapping("analysis") @ApiOperation("根据日期统计-折线图") public Result analysis(@RequestParam("emailId") String emailId, - @RequestParam("startDate") String startDate, - @RequestParam("endDate") String endDate){ + @RequestParam("startDate") String startDate, + @RequestParam("endDate") String endDate){ return sysEmailLogService.analysis(emailId, startDate, endDate); } + + @GetMapping("hoursAgo") + public Boolean hoursAgo(@RequestParam("emailId") String emailId, + @RequestParam("hoursAgo") String hoursAgo){ + return sysEmailLogService.hoursAgo(emailId, hoursAgo); + } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailLogService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailLogService.java index aec848c3..b6d4e843 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailLogService.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailLogService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.base.entity.postgre.SysEmailLog; +import java.util.List; import java.util.Map; public interface ISysEmailLogService extends IService { @@ -16,4 +17,6 @@ public interface ISysEmailLogService extends IService { Result todayMin(String emailId); Result analysis(String emailId, String startDate, String endDate); + + Boolean hoursAgo(String emailId, String hoursAgo); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java index 3649d851..3ec9edb0 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java @@ -227,4 +227,12 @@ public class SysEmailLogServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysEmailLog::getEmailId, emailId); + wrapper.gt(SysEmailLog::getCreateTime, hoursAgo); + return CollUtil.isEmpty(this.list(wrapper)); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java index 8f8e5e73..55005eed 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java @@ -43,4 +43,9 @@ public interface AbnormalAlarmClient { /* SysServerController下相关接口 */ @GetMapping("/sysServer/getNameById") String getServerName(@RequestParam String id); + + /* SysEmailLogController下相关接口 */ + @GetMapping("/sysEmailLog/hoursAgo") + Boolean hoursAgo(@RequestParam String emailId, + @RequestParam String hoursAgo); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java index 5f76098c..573b63f5 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java @@ -105,31 +105,30 @@ public class DatabaseJob extends Monitor { String op = rule.getOperator(); Double threshold = rule.getThreshold(); boolean needWarn = NumUtil.compare(current, threshold, op); - if (needWarn){ - // 记录报警日志 - AlarmLog alarmLog = new AlarmLog(); - alarmLog.setRuleId(ruleId); - alarmLog.setOperator(operator); - alarmLog.setAlarmValue(StrUtil.toString(current)); + if (!needWarn) continue; + // 记录报警日志 + AlarmLog alarmLog = new AlarmLog(); + alarmLog.setRuleId(ruleId); + alarmLog.setOperator(operator); + alarmLog.setAlarmValue(StrUtil.toString(current)); - String ruleName = alarmRule.getName(); - Map data = DataTool.getInstance(). - put(databaseName).put(ruleName).put(rule.joint()).put(current).get(); - MessageDTO messageDTO = TemplateUtil.parse(MONITOR_DATABASE.getCode(), data); + String ruleName = alarmRule.getName(); + Map data = DataTool.getInstance(). + put(databaseName).put(ruleName).put(rule.joint()).put(current).get(); + MessageDTO messageDTO = TemplateUtil.parse(MONITOR_DATABASE.getCode(), data); - alarmLog.setAlarmInfo(messageDTO.getContent()); - getAlarmClient().create(alarmLog); - // 规则触发报警后,设置该规则的沉默周期(如果有) - // 沉默周期失效之前,该规则不会再次被触发 - Long silenceCycle = alarmRule.getSilenceCycle(); - ruleSilence(silenceKey, silenceCycle); + alarmLog.setAlarmInfo(messageDTO.getContent()); + getAlarmClient().create(alarmLog); + // 规则触发报警后,设置该规则的沉默周期(如果有) + // 沉默周期失效之前,该规则不会再次被触发 + Long silenceCycle = alarmRule.getSilenceCycle(); + ruleSilence(silenceKey, silenceCycle); - // 发送报警信息 - String groupId = alarmRule.getContactId(); - String notific = alarmRule.getNotification(); - getSendMessage().send(messageDTO, groupId, notific); - getPushAppUtil().pushToSingle(messageDTO, groupId); - } + // 发送报警信息 + String groupId = alarmRule.getContactId(); + String notific = alarmRule.getNotification(); + getSendMessage().send(messageDTO, groupId, notific); + getPushAppUtil().pushToSingle(messageDTO, groupId); }catch (FeignException.Unauthorized e){ ManageUtil.refreshToken(); log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java index ef51c991..e5c50850 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java @@ -1,6 +1,7 @@ package org.jeecg.modules.quartz.jobs; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.JsonProcessingException; @@ -8,6 +9,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; +import org.jeecg.common.constant.DateConstant; +import org.jeecg.common.constant.FillRuleConstant; import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.util.DataTool; import org.jeecg.common.util.NumUtil; @@ -19,9 +22,12 @@ import org.jeecg.modules.base.entity.postgre.AlarmRule; import org.jeecg.modules.base.enums.Item; import org.jeecg.modules.quartz.entity.Monitor; import org.quartz.*; +import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -32,6 +38,10 @@ import static org.jeecg.modules.base.enums.Template.MONITOR_EMAIL; @Slf4j @Component public class EmailJob extends Monitor{ + + @Value("${task.undealHours:2}") + private Integer undealHours; // 邮箱邮件未处理时长 单位: h 默认: 2h + /** * 解析Email预警规则 **/ @@ -69,8 +79,11 @@ public class EmailJob extends Monitor{ if (ObjectUtil.isNull(item)) continue; Number current = null; switch (item){ - case EMAIL_CONN: // 监控项-1: 测试邮箱服务是否可以连接成功 - current = isConnection(sourceId); + case EMAIL_CONN: // 监控项id 1: 测试邮箱服务是否可以连接成功 + current = connectionStatus(sourceId); + break; + case EMAIL_PROCESS: // 监控项id 3: 邮箱邮件是否被自动处理程序处理 + current = process(sourceId); break; // 追加的监控项... default: @@ -82,31 +95,30 @@ public class EmailJob extends Monitor{ String op = rule.getOperator(); Double threshold = rule.getThreshold(); boolean needWarn = NumUtil.compare(current, threshold, op); - if (needWarn){ - // 记录报警日志 - AlarmLog alarmLog = new AlarmLog(); - alarmLog.setRuleId(ruleId); - alarmLog.setOperator(operator); - alarmLog.setAlarmValue(StrUtil.toString(current)); + if (!needWarn) continue; + // 记录报警日志 + AlarmLog alarmLog = new AlarmLog(); + alarmLog.setRuleId(ruleId); + alarmLog.setOperator(operator); + alarmLog.setAlarmValue(StrUtil.toString(current)); - String ruleName = alarmRule.getName(); - Map data = DataTool.getInstance(). - put(emailName).put(ruleName).put(rule.joint()).put(current).get(); - MessageDTO messageDTO = TemplateUtil.parse(MONITOR_EMAIL.getCode(), data); + String ruleName = alarmRule.getName(); + Map data = DataTool.getInstance(). + put(emailName).put(ruleName).put(rule.joint()).put(current).get(); + MessageDTO messageDTO = TemplateUtil.parse(MONITOR_EMAIL.getCode(), data); - alarmLog.setAlarmInfo(messageDTO.getContent()); - getAlarmClient().create(alarmLog); - // 规则触发报警后,设置该规则的沉默周期(如果有) - // 沉默周期失效之前,该规则不会再次被触发 - Long silenceCycle = alarmRule.getSilenceCycle(); - ruleSilence(silenceKey, silenceCycle); + alarmLog.setAlarmInfo(messageDTO.getContent()); + getAlarmClient().create(alarmLog); + // 规则触发报警后,设置该规则的沉默周期(如果有) + // 沉默周期失效之前,该规则不会再次被触发 + Long silenceCycle = alarmRule.getSilenceCycle(); + ruleSilence(silenceKey, silenceCycle); - // 发送报警信息 - String groupId = alarmRule.getContactId(); - String notific = alarmRule.getNotification(); - getSendMessage().send(messageDTO, groupId, notific); - getPushAppUtil().pushToSingle(messageDTO, groupId); - } + // 发送报警信息 + String groupId = alarmRule.getContactId(); + String notific = alarmRule.getNotification(); + getSendMessage().send(messageDTO, groupId, notific); + getPushAppUtil().pushToSingle(messageDTO, groupId); } catch (JsonProcessingException e) { log.error("Email预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); }catch (Exception e){ @@ -117,9 +129,9 @@ public class EmailJob extends Monitor{ } /* - * 监控项-1: 测试邮箱服务是否可以连接成功 (0:失败 1:成功) + * 监控项id: 1 测试邮箱服务是否可以连接成功 (预警值: 0 非0值则不需要报警) * */ - private Integer isConnection(String emailId){ + private Integer connectionStatus(String emailId){ int res = 1; String statusKey = RedisConstant.EMAIL_STATUS; NameValue nameValue = (NameValue)getRedisUtil().hget(statusKey, emailId); @@ -127,4 +139,18 @@ public class EmailJob extends Monitor{ res = 0; return res; } + + /* + * 监控项id: 3 邮箱邮件在一定时间内是否被处理 (预警值: 0 非0值则不需要报警) + * */ + private Integer process(String emailId){ + int res = 1; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateConstant.DATE_TIME); + LocalDateTime minusHours = LocalDateTime.now().minusHours(undealHours); + String hoursAgo = minusHours.format(formatter); + Boolean result = getAlarmClient().hoursAgo(emailId, hoursAgo); + if (ObjectUtil.isNotNull(result) && result) + res = 0; + return res; + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java index 42182ba7..a8069b36 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java @@ -102,31 +102,30 @@ public class ServerJob extends Monitor{ String op = rule.getOperator(); Double threshold = rule.getThreshold(); boolean needWarn = NumUtil.compare(current, threshold, op); - if (needWarn){ - // 记录报警日志 - AlarmLog alarmLog = new AlarmLog(); - alarmLog.setRuleId(ruleId); - alarmLog.setOperator(operator); - alarmLog.setAlarmValue(StrUtil.toString(current)); + if (!needWarn) continue; + // 记录报警日志 + AlarmLog alarmLog = new AlarmLog(); + alarmLog.setRuleId(ruleId); + alarmLog.setOperator(operator); + alarmLog.setAlarmValue(StrUtil.toString(current)); - String ruleName = alarmRule.getName(); - Map data = DataTool.getInstance(). - put(serverName).put(ruleName).put(rule.joint()).put(current).get(); - MessageDTO messageDTO = TemplateUtil.parse(MONITOR_SERVER.getCode(), data); + String ruleName = alarmRule.getName(); + Map data = DataTool.getInstance(). + put(serverName).put(ruleName).put(rule.joint()).put(current).get(); + MessageDTO messageDTO = TemplateUtil.parse(MONITOR_SERVER.getCode(), data); - alarmLog.setAlarmInfo(messageDTO.getContent()); - getAlarmClient().create(alarmLog); - // 规则触发报警后,设置该规则的沉默周期(如果有) - // 沉默周期失效之前,该规则不会再次被触发 - Long silenceCycle = alarmRule.getSilenceCycle(); - ruleSilence(silenceKey, silenceCycle); + alarmLog.setAlarmInfo(messageDTO.getContent()); + getAlarmClient().create(alarmLog); + // 规则触发报警后,设置该规则的沉默周期(如果有) + // 沉默周期失效之前,该规则不会再次被触发 + Long silenceCycle = alarmRule.getSilenceCycle(); + ruleSilence(silenceKey, silenceCycle); - // 发送报警信息 - String groupId = alarmRule.getContactId(); - String notific = alarmRule.getNotification(); - getSendMessage().send(messageDTO, groupId, notific); - getPushAppUtil().pushToSingle(messageDTO, groupId); - } + // 发送报警信息 + String groupId = alarmRule.getContactId(); + String notific = alarmRule.getNotification(); + getSendMessage().send(messageDTO, groupId, notific); + getPushAppUtil().pushToSingle(messageDTO, groupId); } catch (FeignException.Unauthorized e){ ManageUtil.refreshToken(); log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java index 9705aceb..fc652610 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java @@ -95,31 +95,30 @@ public class TableSpaceJob extends Monitor { } // 如果当前值超过阈值 则需要发送报警信息 - if (needWarn){ - // 记录报警日志 - AlarmLog alarmLog = new AlarmLog(); - alarmLog.setRuleId(ruleId); - alarmLog.setOperator(operator); - alarmLog.setAlarmValue(value(spaceMap, result)); + if (!needWarn) continue; + // 记录报警日志 + AlarmLog alarmLog = new AlarmLog(); + alarmLog.setRuleId(ruleId); + alarmLog.setOperator(operator); + alarmLog.setAlarmValue(value(spaceMap, result)); - String ruleName = alarmRule.getName(); - Map data = DataTool.getInstance(). - put(databaseName).put(ruleName).put(rule.joint()).put(info(spaceMap, result)).get(); - MessageDTO messageDTO = TemplateUtil.parse(MONITOR_DATABASE.getCode(), data); + String ruleName = alarmRule.getName(); + Map data = DataTool.getInstance(). + put(databaseName).put(ruleName).put(rule.joint()).put(info(spaceMap, result)).get(); + MessageDTO messageDTO = TemplateUtil.parse(MONITOR_DATABASE.getCode(), data); - alarmLog.setAlarmInfo(messageDTO.getContent()); - getAlarmClient().create(alarmLog); - // 规则触发报警后,设置该规则的沉默周期(如果有) - // 沉默周期失效之前,该规则不会再次被触发 - Long silenceCycle = alarmRule.getSilenceCycle(); - ruleSilence(silenceKey, silenceCycle); + alarmLog.setAlarmInfo(messageDTO.getContent()); + getAlarmClient().create(alarmLog); + // 规则触发报警后,设置该规则的沉默周期(如果有) + // 沉默周期失效之前,该规则不会再次被触发 + Long silenceCycle = alarmRule.getSilenceCycle(); + ruleSilence(silenceKey, silenceCycle); - // 发送报警信息 - String groupId = alarmRule.getContactId(); - String notific = alarmRule.getNotification(); - getSendMessage().send(messageDTO, groupId, notific); - getPushAppUtil().pushToSingle(messageDTO, groupId); - } + // 发送报警信息 + String groupId = alarmRule.getContactId(); + String notific = alarmRule.getNotification(); + getSendMessage().send(messageDTO, groupId, notific); + getPushAppUtil().pushToSingle(messageDTO, groupId); } catch (JsonProcessingException e) { log.error("Database-TableSpace预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); }catch (Exception e){ From ebf8958f60a8c881cd8c75d52da674c577c934c5 Mon Sep 17 00:00:00 2001 From: nieziyan Date: Mon, 6 May 2024 09:50:46 +0800 Subject: [PATCH 17/26] =?UTF-8?q?feat=EF=BC=9A=E8=87=AA=E5=8A=A8=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=82=AE=E7=AE=B1=E9=82=AE=E4=BB=B6=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java index e5c50850..0ea5f8bf 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java @@ -147,8 +147,10 @@ public class EmailJob extends Monitor{ int res = 1; DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateConstant.DATE_TIME); LocalDateTime minusHours = LocalDateTime.now().minusHours(undealHours); + LocalDateTime minusMinutes = LocalDateTime.now().minusMinutes(undealHours); String hoursAgo = minusHours.format(formatter); - Boolean result = getAlarmClient().hoursAgo(emailId, hoursAgo); + String minutesAgo = minusMinutes.format(formatter); + Boolean result = getAlarmClient().hoursAgo(emailId, minutesAgo); if (ObjectUtil.isNotNull(result) && result) res = 0; return res; From 035e842240f579ca71857607dc03d75becc6bf0f Mon Sep 17 00:00:00 2001 From: nieziyan Date: Mon, 6 May 2024 18:11:29 +0800 Subject: [PATCH 18/26] =?UTF-8?q?feat=EF=BC=9A=E8=87=AA=E5=8A=A8=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=82=AE=E7=AE=B1=E9=82=AE=E4=BB=B6=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/modules/base/enums/Item.java | 2 +- .../controller/SysEmailLogController.java | 7 ++--- .../modules/service/ISysEmailLogService.java | 2 +- .../service/impl/SysEmailLogServiceImpl.java | 17 ++++++++-- .../feignclient/AbnormalAlarmClient.java | 5 ++- .../jeecg/modules/quartz/jobs/EmailJob.java | 31 +++---------------- 6 files changed, 26 insertions(+), 38 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Item.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Item.java index a7e28ec2..ac3c8279 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Item.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Item.java @@ -9,7 +9,7 @@ import lombok.Getter; public enum Item { EMAIL_CONN("1", "Email Connection Status"), TABLESPACE_USAGE("2", "TableSpace Usage"), - EMAIL_PROCESS("3", "Email Process"); + EMAIL_UNPROCESSED("3", "Email Unprocessed"); private final String value; diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailLogController.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailLogController.java index a79a1801..f9427cea 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailLogController.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailLogController.java @@ -69,9 +69,8 @@ public class SysEmailLogController { return sysEmailLogService.analysis(emailId, startDate, endDate); } - @GetMapping("hoursAgo") - public Boolean hoursAgo(@RequestParam("emailId") String emailId, - @RequestParam("hoursAgo") String hoursAgo){ - return sysEmailLogService.hoursAgo(emailId, hoursAgo); + @GetMapping("getMinus") + public Integer getMinus(@RequestParam("emailId") String emailId){ + return sysEmailLogService.getMinus(emailId); } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailLogService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailLogService.java index b6d4e843..f23491fe 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailLogService.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailLogService.java @@ -18,5 +18,5 @@ public interface ISysEmailLogService extends IService { Result analysis(String emailId, String startDate, String endDate); - Boolean hoursAgo(String emailId, String hoursAgo); + Integer getMinus(String emailId); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java index 3ec9edb0..ef71e437 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java @@ -1,6 +1,9 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; @@ -229,10 +232,18 @@ public class SysEmailLogServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysEmailLog::getEmailId, emailId); - wrapper.gt(SysEmailLog::getCreateTime, hoursAgo); - return CollUtil.isEmpty(this.list(wrapper)); + wrapper.orderByDesc(SysEmailLog::getCreateTime); + wrapper.last("limit 1"); + SysEmailLog emailLog = getOne(wrapper, false); + if (ObjectUtil.isNull(emailLog)) + return -1; + Date createTime = emailLog.getCreateTime(); + if (ObjectUtil.isNull(createTime)) + return -1; + // 获取最新一条数据和当前时间所间隔的分钟数 + return Math.toIntExact(DateUtil.between(createTime, new Date(), DateUnit.MINUTE)); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java index 55005eed..4ae04ee8 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/AbnormalAlarmClient.java @@ -45,7 +45,6 @@ public interface AbnormalAlarmClient { String getServerName(@RequestParam String id); /* SysEmailLogController下相关接口 */ - @GetMapping("/sysEmailLog/hoursAgo") - Boolean hoursAgo(@RequestParam String emailId, - @RequestParam String hoursAgo); + @GetMapping("/sysEmailLog/getMinus") + Integer getMinus(@RequestParam String emailId); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java index 0ea5f8bf..49db39aa 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java @@ -1,16 +1,12 @@ package org.jeecg.modules.quartz.jobs; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; -import org.jeecg.common.constant.DateConstant; -import org.jeecg.common.constant.FillRuleConstant; import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.util.DataTool; import org.jeecg.common.util.NumUtil; @@ -21,16 +17,11 @@ import org.jeecg.modules.base.entity.postgre.AlarmLog; import org.jeecg.modules.base.entity.postgre.AlarmRule; import org.jeecg.modules.base.enums.Item; import org.jeecg.modules.quartz.entity.Monitor; -import org.quartz.*; -import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.Map; import java.util.Set; -import java.util.concurrent.TimeUnit; import static org.jeecg.modules.base.enums.SourceType.EMAIL; import static org.jeecg.modules.base.enums.Template.MONITOR_EMAIL; @@ -39,9 +30,6 @@ import static org.jeecg.modules.base.enums.Template.MONITOR_EMAIL; @Component public class EmailJob extends Monitor{ - @Value("${task.undealHours:2}") - private Integer undealHours; // 邮箱邮件未处理时长 单位: h 默认: 2h - /** * 解析Email预警规则 **/ @@ -82,8 +70,8 @@ public class EmailJob extends Monitor{ case EMAIL_CONN: // 监控项id 1: 测试邮箱服务是否可以连接成功 current = connectionStatus(sourceId); break; - case EMAIL_PROCESS: // 监控项id 3: 邮箱邮件是否被自动处理程序处理 - current = process(sourceId); + case EMAIL_UNPROCESSED: // 监控项id 3: 邮箱邮件是否被自动处理程序处理 + current = unProcess(sourceId); break; // 追加的监控项... default: @@ -141,18 +129,9 @@ public class EmailJob extends Monitor{ } /* - * 监控项id: 3 邮箱邮件在一定时间内是否被处理 (预警值: 0 非0值则不需要报警) + * 监控项id: 3 邮箱邮件在一定时间内是否被自动处理程序处理 * */ - private Integer process(String emailId){ - int res = 1; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateConstant.DATE_TIME); - LocalDateTime minusHours = LocalDateTime.now().minusHours(undealHours); - LocalDateTime minusMinutes = LocalDateTime.now().minusMinutes(undealHours); - String hoursAgo = minusHours.format(formatter); - String minutesAgo = minusMinutes.format(formatter); - Boolean result = getAlarmClient().hoursAgo(emailId, minutesAgo); - if (ObjectUtil.isNotNull(result) && result) - res = 0; - return res; + private Integer unProcess(String emailId){ + return getAlarmClient().getMinus(emailId); } } From 95a150122cc2f5bfe5dffc4561a41ed921886061 Mon Sep 17 00:00:00 2001 From: nieziyan Date: Wed, 8 May 2024 15:37:52 +0800 Subject: [PATCH 19/26] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E5=88=86?= =?UTF-8?q?=E6=9E=90=E7=BB=93=E6=9E=9C=E6=8A=A5=E8=AD=A6=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jeecg/common/util/DataTool.java | 3 +- .../jeecg/modules/base/enums/SourceType.java | 8 ++--- .../mapper/GardsNuclIdedAutoMapper.java | 2 -- .../mapper/GardsNuclIdedManMapper.java | 2 -- .../mapper/GardsXeResultsAutoMapper.java | 2 -- .../mapper/GardsXeResultsManMapper.java | 2 -- .../mapper/xml/GardsNuclIdedAutoMapper.xml | 14 -------- .../mapper/xml/GardsNuclIdedManMapper.xml | 14 -------- .../mapper/xml/GardsXeResultsAutoMapper.xml | 14 -------- .../mapper/xml/GardsXeResultsManMapper.xml | 14 -------- .../modules/redisStream/AnalysisConsumer.java | 32 +++++++++++++------ .../impl/AnalysisResultServiceImpl.java | 6 ++-- .../impl/GardsNuclIdedAutoServiceImpl.java | 15 ++++++++- .../impl/GardsNuclIdedManServiceImpl.java | 16 ++++++++-- .../impl/GardsXeResultsAutoServiceImpl.java | 12 ++++++- .../impl/GardsXeResultsManServiceImpl.java | 12 ++++++- 16 files changed, 81 insertions(+), 87 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DataTool.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DataTool.java index a4d64593..dd879352 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DataTool.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DataTool.java @@ -1,13 +1,14 @@ package org.jeecg.common.util; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; public class DataTool { private int counter = 1; - private final Map data = new HashMap<>(); + private final Map data = new LinkedHashMap<>(); public DataTool put(Object value) { data.put(String.format("p%d", counter), value); diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/SourceType.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/SourceType.java index 10a104b5..49c30bee 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/SourceType.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/SourceType.java @@ -2,6 +2,7 @@ package org.jeecg.modules.base.enums; import cn.hutool.core.util.StrUtil; +import lombok.Getter; /** * 资源类型 @@ -9,22 +10,19 @@ import cn.hutool.core.util.StrUtil; * @author nieziyan * @date 2023-06-30 */ +@Getter public enum SourceType { EMAIL("Email"), DATABASE("Database"), SERVER("Server"); - private String type; + private final String type; SourceType(String type) { this.type = type; } - public String getType() { - return type; - } - public static SourceType typeOf(String type){ for (SourceType sourceType : SourceType.values()) { if (StrUtil.equals(sourceType.getType(),type)) diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedAutoMapper.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedAutoMapper.java index 38ea7d56..2a6ad8c7 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedAutoMapper.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedAutoMapper.java @@ -14,6 +14,4 @@ import java.util.Set; public interface GardsNuclIdedAutoMapper extends BaseMapper { List getConc(Map param); - - List nuclideNames(Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedManMapper.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedManMapper.java index 44891d11..b4548985 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedManMapper.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedManMapper.java @@ -13,6 +13,4 @@ import java.util.Set; public interface GardsNuclIdedManMapper extends BaseMapper { List getConc(Map param); - - List nuclideNames(Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsAutoMapper.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsAutoMapper.java index 4f2107cc..fb154cda 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsAutoMapper.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsAutoMapper.java @@ -14,6 +14,4 @@ import java.util.Set; public interface GardsXeResultsAutoMapper extends BaseMapper { List getConc(Map params); - - List nuclideNames(Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsManMapper.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsManMapper.java index 0fc80607..05562c0f 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsManMapper.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsManMapper.java @@ -14,6 +14,4 @@ import java.util.Set; public interface GardsXeResultsManMapper extends BaseMapper { List getConc(Map params); - - List nuclideNames(Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml index 744b8b74..8861fb11 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml @@ -23,18 +23,4 @@ - - \ No newline at end of file diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml index 4433c6fa..ea6b1be5 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml @@ -23,18 +23,4 @@ - - \ No newline at end of file diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsAutoMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsAutoMapper.xml index 6f75f1cb..f934166b 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsAutoMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsAutoMapper.xml @@ -23,18 +23,4 @@ - - \ No newline at end of file diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsManMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsManMapper.xml index 9d36d7dd..6fb31422 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsManMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsManMapper.xml @@ -23,18 +23,4 @@ - - \ No newline at end of file diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java index 7bf3492c..c7a76fe5 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java @@ -156,6 +156,8 @@ public class AnalysisConsumer implements StreamListener conditions = ListUtil.toList(conditionStr.split(COMMA)); List firstDetected = new ArrayList<>(); // 首次发现 List moreThanAvg = new ArrayList<>(); // 超浓度均值 - List meanwhile = new ArrayList<>(); // 同时出现两种及以上核素 + List meanWhile = new ArrayList<>(); // 同时出现两种及以上核素 for (String con : conditions) { Condition condition = Condition.valueOf1(con); if (ObjectUtil.isNull(condition)) continue; @@ -175,8 +177,8 @@ public class AnalysisConsumer implements StreamListener= 2) - meanwhile.addAll(nuclideNames); + meanWhile = meanWhile(betaOrGamma, datasource, nuclideNames); + if (meanWhile.size() < 2) meanWhile = ListUtil.empty(); break; default: break; @@ -192,10 +194,13 @@ public class AnalysisConsumer implements StreamListener firstDetected(String betaOrGamma, - String dataSourceType, - Set nuclideNames){ + private List firstDetected(String betaOrGamma, String dataSourceType, Set nuclideNames){ + // 查询用户关注的核素是否存在 如果不存在则为首次发现该核素 + // 判断核素是否存在的条件: 该核素的Conc值是否大于MDC值 List existNames = analysisResultService .nuclideNames(betaOrGamma, dataSourceType, nuclideNames); - // 两个集合元素相减 + // 两个集合元素相减则为不存在的核素 即为首次出现的核素 return CollUtil.subtractToList(nuclideNames, existNames); } @@ -260,6 +265,15 @@ public class AnalysisConsumer implements StreamListener meanWhile(String betaOrGamma, String dataSourceType, Set nuclideNames){ + // 查询用户关注的核素是否存在 如果不存在则为首次发现该核素 + // 判断核素是否存在的条件: 该核素的Conc值是否大于MDC值 + return analysisResultService.nuclideNames(betaOrGamma, dataSourceType, nuclideNames); + } + private void init() { // start 生成临时Token到线程中 UserTokenContext.setToken(getTempToken()); diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java index 06cb4679..24e040c9 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java @@ -33,7 +33,7 @@ public class AnalysisResultServiceImpl implements AnalysisResultService { }else if (CommonConstant.GAMMA.equals(betaOrGamma)){ return nuclIdedAutoService.nuclideNames(nuclideNames); }else { - return ListUtil.toList(nuclideNames); + return ListUtil.empty(); } } else if (CommonConstant.ARMDRRR.equals(dataSourceType)) { if (CommonConstant.BETA.equals(betaOrGamma)){ @@ -41,10 +41,10 @@ public class AnalysisResultServiceImpl implements AnalysisResultService { }else if (CommonConstant.GAMMA.equals(betaOrGamma)){ return nuclIdedManService.nuclideNames(nuclideNames); }else { - return ListUtil.toList(nuclideNames); + return ListUtil.empty(); } }else { - return ListUtil.toList(nuclideNames); + return ListUtil.empty(); } } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedAutoServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedAutoServiceImpl.java index b2b0b706..c9b29678 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedAutoServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedAutoServiceImpl.java @@ -1,5 +1,7 @@ package org.jeecg.modules.service.impl; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.NumberUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.jeecg.common.constant.DateConstant; @@ -13,6 +15,7 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; @@ -31,6 +34,16 @@ public class GardsNuclIdedAutoServiceImpl extends ServiceImpl nuclideNames(Set nuclideNames) { - return baseMapper.nuclideNames(nuclideNames); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(GardsNuclIded::getNuclideName, nuclideNames); + List nuclIdeds = this.list(wrapper); + // 判断核素是否存在的条件: 该核素Conc值是否大于MDC值 + Set existNuclides = nuclIdeds.stream() + .filter(item -> NumberUtil.isNumber(item.getConcentration())) + .filter(item -> NumberUtil.isNumber(item.getMdc())) + .filter(item ->NumberUtil.isGreater(new BigDecimal(item.getConcentration()), new BigDecimal(item.getMdc()))) + .map(GardsNuclIded::getNuclideName) + .collect(Collectors.toSet()); + return ListUtil.toList(existNuclides); } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedManServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedManServiceImpl.java index fdcd2a2c..99bb996c 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedManServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedManServiceImpl.java @@ -1,16 +1,18 @@ package org.jeecg.modules.service.impl; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.NumberUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.constant.DateConstant; import org.jeecg.modules.base.dto.ConcDto; -import org.jeecg.modules.base.entity.rnauto.GardsXeResults; import org.jeecg.modules.base.entity.rnman.GardsNuclIded; import org.jeecg.modules.mapper.GardsNuclIdedManMapper; import org.jeecg.modules.service.IGardsNuclIdedManService; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; @@ -29,6 +31,16 @@ public class GardsNuclIdedManServiceImpl extends ServiceImpl nuclideNames(Set nuclideNames) { - return baseMapper.nuclideNames(nuclideNames); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(GardsNuclIded::getNuclideName, nuclideNames); + List nuclIdeds = this.list(wrapper); + // 判断核素是否存在的条件: 该核素Conc值是否大于MDC值 + Set existNuclides = nuclIdeds.stream() + .filter(item -> NumberUtil.isNumber(item.getConcentration())) + .filter(item -> NumberUtil.isNumber(item.getMdc())) + .filter(item ->NumberUtil.isGreater(new BigDecimal(item.getConcentration()), new BigDecimal(item.getMdc()))) + .map(GardsNuclIded::getNuclideName) + .collect(Collectors.toSet()); + return ListUtil.toList(existNuclides); } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsAutoServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsAutoServiceImpl.java index ec1b8314..1e72ec0d 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsAutoServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsAutoServiceImpl.java @@ -2,6 +2,7 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -52,6 +53,15 @@ public class GardsXeResultsAutoServiceImpl extends ServiceImpl nuclideNames(Set nuclideNames) { - return baseMapper.nuclideNames(nuclideNames); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(GardsXeResults::getNuclideName, nuclideNames); + List xeResults = this.list(wrapper); + // 判断核素是否存在的条件: 该核素NidFlag值是否为1 + Set existNuclides = xeResults.stream() + .filter(item -> ObjectUtil.isNotNull(item.getNidFlag())) + .filter(item -> item.getNidFlag() == 1) + .map(GardsXeResults::getNuclideName) + .collect(Collectors.toSet()); + return ListUtil.toList(existNuclides); } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsManServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsManServiceImpl.java index 6406d07b..460c7371 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsManServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsManServiceImpl.java @@ -2,6 +2,7 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -52,6 +53,15 @@ public class GardsXeResultsManServiceImpl extends ServiceImpl nuclideNames(Set nuclideNames) { - return baseMapper.nuclideNames(nuclideNames); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(GardsXeResults::getNuclideName, nuclideNames); + List xeResults = this.list(wrapper); + // 判断核素是否存在的条件: 该核素NidFlag值是否为1 + Set existNuclides = xeResults.stream() + .filter(item -> ObjectUtil.isNotNull(item.getNidFlag())) + .filter(item -> item.getNidFlag() == 1) + .map(GardsXeResults::getNuclideName) + .collect(Collectors.toSet()); + return ListUtil.toList(existNuclides); } } From 09a23b371ba15de40e181e74a79cb5d3c3eb09cb Mon Sep 17 00:00:00 2001 From: nieziyan Date: Sat, 11 May 2024 15:39:05 +0800 Subject: [PATCH 20/26] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E5=88=86?= =?UTF-8?q?=E6=9E=90=E7=BB=93=E6=9E=9C=E6=8A=A5=E8=AD=A6[=E6=A0=B8?= =?UTF-8?q?=E7=B4=A0=E9=A6=96=E6=AC=A1=E5=8F=91=E7=8E=B0|=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E4=B8=A4=E7=A7=8D=E5=8F=8A=E4=BB=A5=E4=B8=8A]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jeecg/modules/base/dto/Info.java | 3 + .../org/jeecg/modules/base/dto/SampNucl.java | 11 +++ .../mapper/GardsNuclIdedAutoMapper.java | 3 + .../mapper/GardsNuclIdedManMapper.java | 5 +- .../mapper/GardsXeResultsAutoMapper.java | 3 + .../mapper/GardsXeResultsManMapper.java | 3 + .../mapper/xml/GardsNuclIdedAutoMapper.xml | 16 +++++ .../mapper/xml/GardsNuclIdedManMapper.xml | 16 +++++ .../mapper/xml/GardsXeResultsAutoMapper.xml | 16 +++++ .../mapper/xml/GardsXeResultsManMapper.xml | 16 +++++ .../modules/redisStream/AnalysisConsumer.java | 45 ++++++------ .../service/AnalysisResultService.java | 9 ++- .../service/IGardsNuclIdedAutoService.java | 6 +- .../service/IGardsNuclIdedManService.java | 7 +- .../service/IGardsXeResultsAutoService.java | 6 +- .../service/IGardsXeResultsManService.java | 6 +- .../impl/AnalysisResultServiceImpl.java | 36 ++++++++-- .../impl/GardsNuclIdedAutoServiceImpl.java | 24 ++++++- .../impl/GardsNuclIdedManServiceImpl.java | 24 ++++++- .../impl/GardsXeResultsAutoServiceImpl.java | 20 +++++- .../impl/GardsXeResultsManServiceImpl.java | 20 +++++- .../quartz/controller/TestController.java | 70 ------------------- 22 files changed, 248 insertions(+), 117 deletions(-) create mode 100644 jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/SampNucl.java delete mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/controller/TestController.java diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/Info.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/Info.java index cba0cc14..b617fa1a 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/Info.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/Info.java @@ -18,6 +18,9 @@ public class Info implements Serializable{ // 台站id private String stationId; + // 探测器id + private String detectorId; + // 谱id private String sampleId; diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/SampNucl.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/SampNucl.java new file mode 100644 index 00000000..afb06760 --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/SampNucl.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.base.dto; + +import lombok.Data; + +@Data +public class SampNucl { + + private String sampleId; + + private String nuclideName; +} diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedAutoMapper.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedAutoMapper.java index 2a6ad8c7..36eb8f3c 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedAutoMapper.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedAutoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.jeecg.modules.base.dto.ConcDto; import org.jeecg.modules.base.dto.ConcDtoXe; +import org.jeecg.modules.base.dto.SampNucl; import org.jeecg.modules.base.entity.rnauto.GardsNuclIded; import java.util.List; @@ -14,4 +15,6 @@ import java.util.Set; public interface GardsNuclIdedAutoMapper extends BaseMapper { List getConc(Map param); + + List sampNucl(String stationId, String detectorId, Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedManMapper.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedManMapper.java index b4548985..cfb5c1b6 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedManMapper.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsNuclIdedManMapper.java @@ -3,6 +3,7 @@ package org.jeecg.modules.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.jeecg.modules.base.dto.ConcDto; +import org.jeecg.modules.base.dto.SampNucl; import org.jeecg.modules.base.entity.rnman.GardsNuclIded; import java.util.List; @@ -12,5 +13,7 @@ import java.util.Set; @Mapper public interface GardsNuclIdedManMapper extends BaseMapper { - List getConc(Map param); + List getConc(Map param); + + List sampNucl(String stationId, String detectorId, Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsAutoMapper.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsAutoMapper.java index fb154cda..1cc60251 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsAutoMapper.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsAutoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.jeecg.modules.base.dto.ConcDto; import org.jeecg.modules.base.dto.ConcDtoXe; +import org.jeecg.modules.base.dto.SampNucl; import org.jeecg.modules.base.entity.rnauto.GardsXeResults; import java.util.List; @@ -14,4 +15,6 @@ import java.util.Set; public interface GardsXeResultsAutoMapper extends BaseMapper { List getConc(Map params); + + List sampNucl(String stationId, String detectorId, Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsManMapper.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsManMapper.java index 05562c0f..5b74bb57 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsManMapper.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/GardsXeResultsManMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.jeecg.modules.base.dto.ConcDto; import org.jeecg.modules.base.dto.ConcDtoXe; +import org.jeecg.modules.base.dto.SampNucl; import org.jeecg.modules.base.entity.rnman.GardsXeResults; import java.util.List; @@ -14,4 +15,6 @@ import java.util.Set; public interface GardsXeResultsManMapper extends BaseMapper { List getConc(Map params); + + List sampNucl(String stationId, String detectorId, Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml index 8861fb11..e5fe6f26 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml @@ -23,4 +23,20 @@ + \ No newline at end of file diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml index ea6b1be5..cdca5254 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml @@ -23,4 +23,20 @@ + \ No newline at end of file diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsAutoMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsAutoMapper.xml index f934166b..097238fc 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsAutoMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsAutoMapper.xml @@ -23,4 +23,20 @@ + \ No newline at end of file diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsManMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsManMapper.xml index 6fb31422..b2c107af 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsManMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsXeResultsManMapper.xml @@ -23,4 +23,20 @@ + \ No newline at end of file diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java index c7a76fe5..9eedcd29 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java @@ -5,21 +5,18 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.hwpf.sprm.SprmIterator; import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.config.mqtoken.UserTokenContext; -import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.constant.enums.SampleType; import org.jeecg.common.util.*; -import org.jeecg.common.util.dynamic.db.FreemarkerParseFactory; import org.jeecg.modules.base.dto.NuclideInfo; import org.jeecg.modules.base.dto.Info; import org.jeecg.modules.base.entity.postgre.AlarmAnalysisLog; @@ -40,13 +37,10 @@ import org.springframework.stereotype.Component; import static org.jeecg.common.constant.enums.MessageTypeEnum.*; import static org.jeecg.common.util.TokenUtils.getTempToken; import static org.jeecg.modules.base.enums.Template.ANALYSIS_NUCLIDE; -import static org.jeecg.modules.base.enums.Template.MONITOR_EMAIL; import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.util.stream.Collectors; @Data @@ -156,6 +150,7 @@ public class AnalysisConsumer implements StreamListener firstDetected(String betaOrGamma, String dataSourceType, Set nuclideNames){ - // 查询用户关注的核素是否存在 如果不存在则为首次发现该核素 - // 判断核素是否存在的条件: 该核素的Conc值是否大于MDC值 - List existNames = analysisResultService - .nuclideNames(betaOrGamma, dataSourceType, nuclideNames); - // 两个集合元素相减则为不存在的核素 即为首次出现的核素 - return CollUtil.subtractToList(nuclideNames, existNames); + private List firstDetected(String betaOrGamma, String dataSourceType, + String stationId, String detectorId, + String sampleId, Set nuclideNames){ + /* 查询用户关注的核素是否存在 如果不存在则为首次发现该核素 + 判断核素是否存在的条件: 该核素的Conc值是否大于MDC值 + */ + return analysisResultService.nuclideFirst(betaOrGamma, dataSourceType, stationId, + detectorId, sampleId, nuclideNames); } /** @@ -245,8 +242,6 @@ public class AnalysisConsumer implements StreamListener meanWhile(String betaOrGamma, String dataSourceType, Set nuclideNames){ - // 查询用户关注的核素是否存在 如果不存在则为首次发现该核素 - // 判断核素是否存在的条件: 该核素的Conc值是否大于MDC值 - return analysisResultService.nuclideNames(betaOrGamma, dataSourceType, nuclideNames); + private List meanWhile(String betaOrGamma, String dataSourceType, + String sampleId, Set nuclideNames){ + /* 查询用户关注的核素中 该谱中是否存在两种及以上核素 + 判断核素是否存在的条件: 该核素的Conc值是否大于MDC值 + */ + return analysisResultService.nuclideExist(betaOrGamma, dataSourceType, sampleId, nuclideNames); } private void init() { diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/AnalysisResultService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/AnalysisResultService.java index 475d5504..930777a2 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/AnalysisResultService.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/AnalysisResultService.java @@ -5,7 +5,10 @@ import java.util.Set; public interface AnalysisResultService { - List nuclideNames(String betaOrGamma, - String dataSourceType, - Set nuclideNames); + List nuclideExist(String betaOrGamma, String dataSourceType, + String sampleId, Set nuclideNames); + + List nuclideFirst(String betaOrGamma, String dataSourceType, + String stationId, String detectorId, + String sampleId, Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsNuclIdedAutoService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsNuclIdedAutoService.java index 7d950222..f3b61bb0 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsNuclIdedAutoService.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsNuclIdedAutoService.java @@ -2,7 +2,6 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.base.dto.ConcDto; -import org.jeecg.modules.base.dto.ConcDtoXe; import org.jeecg.modules.base.entity.rnauto.GardsNuclIded; import java.util.List; @@ -13,5 +12,8 @@ public interface IGardsNuclIdedAutoService extends IService { List getConc(Map params); - List nuclideNames(Set nuclideNames); + List nuclideExist(String sampleId, Set nuclideNames); + + List nuclideFirst(String stationId, String detectorId, + String sampleId, Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsNuclIdedManService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsNuclIdedManService.java index cccde05e..8543ccfc 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsNuclIdedManService.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsNuclIdedManService.java @@ -10,7 +10,10 @@ import java.util.Set; public interface IGardsNuclIdedManService extends IService { - List getConc(Map params); + List getConc(Map params); - List nuclideNames(Set nuclideNames); + List nuclideExist(String sampleId, Set nuclideNames); + + List nuclideFirst(String stationId, String detectorId, + String sampleId, Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsXeResultsAutoService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsXeResultsAutoService.java index e66886e2..c468d3e3 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsXeResultsAutoService.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsXeResultsAutoService.java @@ -1,7 +1,6 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; -import org.jeecg.modules.base.dto.ConcDto; import org.jeecg.modules.base.dto.ConcDtoXe; import org.jeecg.modules.base.entity.rnauto.GardsXeResults; @@ -13,5 +12,8 @@ public interface IGardsXeResultsAutoService extends IService { List getConc(Map params, Set nuclides); - List nuclideNames(Set nuclideNames); + List nuclideExist(String sampleId, Set nuclideNames); + + List nuclideFirst(String stationId, String detectorId, + String sampleId, Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsXeResultsManService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsXeResultsManService.java index 34997d5d..7eb3032e 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsXeResultsManService.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/IGardsXeResultsManService.java @@ -1,7 +1,6 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; -import org.jeecg.modules.base.dto.ConcDto; import org.jeecg.modules.base.dto.ConcDtoXe; import org.jeecg.modules.base.entity.rnman.GardsXeResults; @@ -13,5 +12,8 @@ public interface IGardsXeResultsManService extends IService { List getConc(Map params, Set nuclides); - List nuclideNames(Set nuclideNames); + List nuclideExist(String sampleId, Set nuclideNames); + + List nuclideFirst(String stationId, String detectorId, + String sampleId, Set nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java index 24e040c9..858fa2cd 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java @@ -26,20 +26,46 @@ public class AnalysisResultServiceImpl implements AnalysisResultService { @Override - public List nuclideNames(String betaOrGamma, String dataSourceType, Set nuclideNames) { + public List nuclideExist(String betaOrGamma, String dataSourceType, + String sampleId, Set nuclideNames) { if (CommonConstant.ARMDARR.equals(dataSourceType)){ if (CommonConstant.BETA.equals(betaOrGamma)){ - return xeResultsAutoService.nuclideNames(nuclideNames); + return xeResultsAutoService.nuclideExist(sampleId, nuclideNames); }else if (CommonConstant.GAMMA.equals(betaOrGamma)){ - return nuclIdedAutoService.nuclideNames(nuclideNames); + return nuclIdedAutoService.nuclideExist(sampleId, nuclideNames); }else { return ListUtil.empty(); } } else if (CommonConstant.ARMDRRR.equals(dataSourceType)) { if (CommonConstant.BETA.equals(betaOrGamma)){ - return xeResultsManService.nuclideNames(nuclideNames); + return xeResultsManService.nuclideExist(sampleId, nuclideNames); }else if (CommonConstant.GAMMA.equals(betaOrGamma)){ - return nuclIdedManService.nuclideNames(nuclideNames); + return nuclIdedManService.nuclideExist(sampleId, nuclideNames); + }else { + return ListUtil.empty(); + } + }else { + return ListUtil.empty(); + } + } + + @Override + public List nuclideFirst(String betaOrGamma, String dataSourceType, + String stationId, String detectorId, + String sampleId, Set nuclideNames) { + if (CommonConstant.ARMDARR.equals(dataSourceType)){ + if (CommonConstant.BETA.equals(betaOrGamma)){ + return xeResultsAutoService.nuclideFirst(stationId, detectorId, sampleId, nuclideNames); + }else if (CommonConstant.GAMMA.equals(betaOrGamma)){ + return nuclIdedAutoService.nuclideFirst(stationId, detectorId, sampleId, nuclideNames); + }else { + return ListUtil.empty(); + } + } else if (CommonConstant.ARMDRRR.equals(dataSourceType)) { + if (CommonConstant.BETA.equals(betaOrGamma)){ + return xeResultsManService.nuclideFirst(stationId, detectorId, sampleId, nuclideNames); + }else if (CommonConstant.GAMMA.equals(betaOrGamma)){ + return nuclIdedManService.nuclideFirst(stationId, detectorId, sampleId, nuclideNames); }else { return ListUtil.empty(); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedAutoServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedAutoServiceImpl.java index c9b29678..45118424 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedAutoServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedAutoServiceImpl.java @@ -1,12 +1,15 @@ package org.jeecg.modules.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.jeecg.common.constant.DateConstant; import org.jeecg.modules.base.dto.ConcDto; import org.jeecg.modules.base.dto.ConcDtoXe; +import org.jeecg.modules.base.dto.SampNucl; import org.jeecg.modules.base.entity.rnauto.GardsNuclIded; import org.jeecg.modules.base.entity.rnauto.GardsXeResults; import org.jeecg.modules.mapper.GardsNuclIdedAutoMapper; @@ -33,17 +36,34 @@ public class GardsNuclIdedAutoServiceImpl extends ServiceImpl nuclideNames(Set nuclideNames) { + public List nuclideExist(String sampleId, Set nuclideNames) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(GardsNuclIded::getSampleId, sampleId); wrapper.in(GardsNuclIded::getNuclideName, nuclideNames); List nuclIdeds = this.list(wrapper); // 判断核素是否存在的条件: 该核素Conc值是否大于MDC值 Set existNuclides = nuclIdeds.stream() .filter(item -> NumberUtil.isNumber(item.getConcentration())) .filter(item -> NumberUtil.isNumber(item.getMdc())) - .filter(item ->NumberUtil.isGreater(new BigDecimal(item.getConcentration()), new BigDecimal(item.getMdc()))) + .filter(item -> NumberUtil.isGreater(new BigDecimal(item.getConcentration()), new BigDecimal(item.getMdc()))) .map(GardsNuclIded::getNuclideName) .collect(Collectors.toSet()); return ListUtil.toList(existNuclides); } + + @Override + public List nuclideFirst(String stationId, String detectorId, + String sampleId, Set nuclideNames) { + List sampNucls = this.baseMapper.sampNucl(stationId, detectorId, nuclideNames); + // 获取除了当前谱的所有存在的核素 + Set notCurrent = sampNucls.stream() + .filter(item -> !StrUtil.equals(item.getSampleId(), sampleId)) + .map(SampNucl::getNuclideName).collect(Collectors.toSet()); + // 获取当前谱的所有存在的核素 + Set current = sampNucls.stream() + .filter(item -> StrUtil.equals(item.getSampleId(), sampleId)) + .map(SampNucl::getNuclideName).collect(Collectors.toSet()); + // 两集合相减即为当前谱中的首次在当前台站当前探测器中出现的核素 + return CollUtil.subtractToList(current, notCurrent); + } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedManServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedManServiceImpl.java index 99bb996c..69150fd2 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedManServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedManServiceImpl.java @@ -1,12 +1,15 @@ package org.jeecg.modules.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.constant.DateConstant; import org.jeecg.modules.base.dto.ConcDto; +import org.jeecg.modules.base.dto.SampNucl; import org.jeecg.modules.base.entity.rnman.GardsNuclIded; import org.jeecg.modules.mapper.GardsNuclIdedManMapper; import org.jeecg.modules.service.IGardsNuclIdedManService; @@ -30,17 +33,34 @@ public class GardsNuclIdedManServiceImpl extends ServiceImpl nuclideNames(Set nuclideNames) { + public List nuclideExist(String sampleId, Set nuclideNames) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(GardsNuclIded::getSampleId, sampleId); wrapper.in(GardsNuclIded::getNuclideName, nuclideNames); List nuclIdeds = this.list(wrapper); // 判断核素是否存在的条件: 该核素Conc值是否大于MDC值 Set existNuclides = nuclIdeds.stream() .filter(item -> NumberUtil.isNumber(item.getConcentration())) .filter(item -> NumberUtil.isNumber(item.getMdc())) - .filter(item ->NumberUtil.isGreater(new BigDecimal(item.getConcentration()), new BigDecimal(item.getMdc()))) + .filter(item -> NumberUtil.isGreater(new BigDecimal(item.getConcentration()), new BigDecimal(item.getMdc()))) .map(GardsNuclIded::getNuclideName) .collect(Collectors.toSet()); return ListUtil.toList(existNuclides); } + + @Override + public List nuclideFirst(String stationId, String detectorId, + String sampleId, Set nuclideNames) { + List sampNucls = this.baseMapper.sampNucl(stationId, detectorId, nuclideNames); + // 获取除了当前谱的所有存在的核素 + Set notCurrent = sampNucls.stream() + .filter(item -> !StrUtil.equals(item.getSampleId(), sampleId)) + .map(SampNucl::getNuclideName).collect(Collectors.toSet()); + // 获取当前谱的所有存在的核素 + Set current = sampNucls.stream() + .filter(item -> StrUtil.equals(item.getSampleId(), sampleId)) + .map(SampNucl::getNuclideName).collect(Collectors.toSet()); + // 两集合相减即为当前谱中的首次在当前台站当前探测器中出现的核素 + return CollUtil.subtractToList(current, notCurrent); + } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsAutoServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsAutoServiceImpl.java index 1e72ec0d..d538c25f 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsAutoServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsAutoServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.jeecg.common.constant.DateConstant; import org.jeecg.modules.base.dto.ConcDto; import org.jeecg.modules.base.dto.ConcDtoXe; +import org.jeecg.modules.base.dto.SampNucl; import org.jeecg.modules.base.entity.rnauto.GardsXeResults; import org.jeecg.modules.mapper.GardsXeResultsAutoMapper; import org.jeecg.modules.service.IGardsXeResultsAutoService; @@ -52,8 +53,9 @@ public class GardsXeResultsAutoServiceImpl extends ServiceImpl nuclideNames(Set nuclideNames) { + public List nuclideExist(String sampleId, Set nuclideNames) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(GardsXeResults::getSampleId, sampleId); wrapper.in(GardsXeResults::getNuclideName, nuclideNames); List xeResults = this.list(wrapper); // 判断核素是否存在的条件: 该核素NidFlag值是否为1 @@ -64,4 +66,20 @@ public class GardsXeResultsAutoServiceImpl extends ServiceImpl nuclideFirst(String stationId, String detectorId, + String sampleId, Set nuclideNames) { + List sampNucls = this.baseMapper.sampNucl(stationId, detectorId, nuclideNames); + // 获取除了当前谱的所有存在的核素 + Set notCurrent = sampNucls.stream() + .filter(item -> !StrUtil.equals(item.getSampleId(), sampleId)) + .map(SampNucl::getNuclideName).collect(Collectors.toSet()); + // 获取当前谱的所有存在的核素 + Set current = sampNucls.stream() + .filter(item -> StrUtil.equals(item.getSampleId(), sampleId)) + .map(SampNucl::getNuclideName).collect(Collectors.toSet()); + // 两集合相减即为当前谱中的首次在当前台站当前探测器中出现的核素 + return CollUtil.subtractToList(current, notCurrent); + } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsManServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsManServiceImpl.java index 460c7371..6a02bcee 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsManServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/GardsXeResultsManServiceImpl.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.constant.DateConstant; import org.jeecg.modules.base.dto.ConcDto; import org.jeecg.modules.base.dto.ConcDtoXe; +import org.jeecg.modules.base.dto.SampNucl; import org.jeecg.modules.base.entity.rnman.GardsXeResults; import org.jeecg.modules.mapper.GardsXeResultsManMapper; import org.jeecg.modules.service.IGardsXeResultsManService; @@ -52,8 +53,9 @@ public class GardsXeResultsManServiceImpl extends ServiceImpl nuclideNames(Set nuclideNames) { + public List nuclideExist(String sampleId, Set nuclideNames) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(GardsXeResults::getSampleId, sampleId); wrapper.in(GardsXeResults::getNuclideName, nuclideNames); List xeResults = this.list(wrapper); // 判断核素是否存在的条件: 该核素NidFlag值是否为1 @@ -64,4 +66,20 @@ public class GardsXeResultsManServiceImpl extends ServiceImpl nuclideFirst(String stationId, String detectorId, + String sampleId, Set nuclideNames) { + List sampNucls = this.baseMapper.sampNucl(stationId, detectorId, nuclideNames); + // 获取除了当前谱的所有存在的核素 + Set notCurrent = sampNucls.stream() + .filter(item -> !StrUtil.equals(item.getSampleId(), sampleId)) + .map(SampNucl::getNuclideName).collect(Collectors.toSet()); + // 获取当前谱的所有存在的核素 + Set current = sampNucls.stream() + .filter(item -> StrUtil.equals(item.getSampleId(), sampleId)) + .map(SampNucl::getNuclideName).collect(Collectors.toSet()); + // 两集合相减即为当前谱中的首次在当前台站当前探测器中出现的核素 + return CollUtil.subtractToList(current, notCurrent); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/controller/TestController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/controller/TestController.java deleted file mode 100644 index c350e0a8..00000000 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/controller/TestController.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.jeecg.modules.quartz.controller; - -import cn.hutool.core.map.MapUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.SecurityUtils; -import org.jeecg.common.api.vo.Result; -import org.jeecg.common.constant.CommonConstant; -import org.jeecg.common.constant.Prompt; -import org.jeecg.common.constant.SymbolConstant; -import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.common.util.ImportExcelUtil; -import org.jeecg.common.util.RedisStreamUtil; -import org.jeecg.modules.base.dto.Info; -import org.jeecg.modules.quartz.entity.QuartzJob; -import org.jeecg.modules.quartz.service.IQuartzJobService; -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.def.NormalExcelConstants; -import org.jeecgframework.poi.excel.entity.ExportParams; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -@RestController -@RequestMapping("sys/testana") -@Slf4j -@Api(tags = "定时任务接口") -public class TestController { - - @Autowired - private RedisStreamUtil redisStreamUtil; - - @GetMapping("test") - public void test(){ - Info info = new Info(); - info.setStationId("205"); - info.setSampleId("425496"); - info.setBetaOrGamma("Gamma"); - info.setFullOrPrel("FULL"); - info.setDatasource("1"); - info.setSampleName("CAX05_001-20230624_0220_Q_FULL_299.3.PHD"); - info.setCollectionDate(LocalDateTime.now()); - Map nuclides = MapUtil.newHashMap(); - nuclides.put("Be7","1000000"); - nuclides.put("sss","1000000"); - nuclides.put("Tl208","10"); - info.setNuclides(nuclides); - redisStreamUtil.pushAnalysis(info); - } -} From f309792c0d58411ec4294f0c84ea6559a3bd1d3e Mon Sep 17 00:00:00 2001 From: nieziyan Date: Sat, 11 May 2024 16:02:33 +0800 Subject: [PATCH 21/26] =?UTF-8?q?fix=EF=BC=9A=E7=BA=A0=E6=AD=A3=E5=BA=93?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml index cdca5254..320524d1 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml @@ -29,7 +29,7 @@ n.NUCLIDENAME AS nuclideName FROM ORIGINAL.GARDS_SAMPLE_DATA s - INNER JOIN RNAUTO.GARDS_NUCL_IDED n ON s.SAMPLE_ID = n.SAMPLE_ID + INNER JOIN RNMAN.GARDS_NUCL_IDED n ON s.SAMPLE_ID = n.SAMPLE_ID WHERE s.STATION_ID = #{stationId} AND s.DETECTOR_ID = #{detectorId} AND n.NUCLIDENAME IN From cbe8ef9bb01a260daa752785c4707368f5e87af0 Mon Sep 17 00:00:00 2001 From: nieziyan Date: Mon, 13 May 2024 09:27:23 +0800 Subject: [PATCH 22/26] =?UTF-8?q?fix=EF=BC=9ASQL=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml | 2 +- .../org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml index e5fe6f26..671cf586 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedAutoMapper.xml @@ -37,6 +37,6 @@ #{item} - AND TO_NUMBER(n.CONCENTRATION) > TO_NUMBER(n.MDC) + AND TO_NUMBER(n.CONCENTRATION) > TO_NUMBER(n.MDC) \ No newline at end of file diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml index 320524d1..5f408b1f 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/GardsNuclIdedManMapper.xml @@ -37,6 +37,6 @@ #{item} - AND TO_NUMBER(n.CONCENTRATION) > TO_NUMBER(n.MDC) + AND TO_NUMBER(n.CONCENTRATION) > TO_NUMBER(n.MDC) \ No newline at end of file From 7b5e167eb219457eb41bea43920a2372d2e8d144 Mon Sep 17 00:00:00 2001 From: qiaoqinzheng Date: Mon, 13 May 2024 14:10:59 +0800 Subject: [PATCH 23/26] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E4=B8=8B=E8=BD=BD=E9=82=AE=E4=BB=B6=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/email/EmailServiceManager.java | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 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 f4f8b334..9c52eb09 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 @@ -532,7 +532,8 @@ public class EmailServiceManager { File emlFile = null; String status = EmailLogManager.STATUS_SUCCESS; Date receivedDate = null; - FileOutputStream outputStream = null; + InputStream inputStream = null; + BufferedOutputStream outputStream = null; try { //获取发件人 final String address = ((InternetAddress) message.getFrom()[0]).getAddress(); @@ -566,25 +567,19 @@ public class EmailServiceManager { final String rootPath = spectrumPathProperties.getRootPath(); final String emlPath = spectrumPathProperties.getEmlPath(); emlFile = new File(rootPath+emlPath+File.separator+fileName); - outputStream = new FileOutputStream(emlFile); - message.writeTo(outputStream); +// outputStream = new FileOutputStream(emlFile); +// message.writeTo(outputStream); + + int bufferSize = 1024 * 1024; // 1M + inputStream = message.getInputStream(); + outputStream = new BufferedOutputStream(new FileOutputStream(emlFile), bufferSize); + // 从邮件的输入流读取内容,并写入到本地文件 + byte[] buffer = new byte[bufferSize]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } -// int bufferSize = 1024 * 1024; // 1M -// InputStream inputStream = message.getInputStream(); -// BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream, bufferSize); -// // 或者使用 BufferedOutputStream -// OutputStream outputStream = new FileOutputStream(emlFile); -// BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream, bufferSize); -// // 从邮件的输入流读取内容,并写入到本地文件 -// byte[] buffer = new byte[bufferSize]; -// int bytesRead; -// while ((bytesRead = bufferedInputStream.read(buffer)) != -1) { -// bufferedOutputStream.write(buffer, 0, bytesRead); -// } -// -// // 关闭流 -// bufferedInputStream.close(); -// bufferedOutputStream.close(); } catch (MessagingException | IOException e) { // 下载邮件失败 抛出自定义邮件下载异常 status = EmailLogManager.STATUS_ERROR; @@ -598,7 +593,11 @@ public class EmailServiceManager { (Objects.isNull(emlFile)?" ":emlFile.getAbsolutePath())); EmailLogManager.getInstance().offer(Thread.currentThread().getId(),event); try { + if (Objects.nonNull(inputStream)) { + inputStream.close(); + } if (Objects.nonNull(outputStream)) { + outputStream.flush(); outputStream.close(); } } catch (IOException e) { From c5ffa77954f4cab11771127b1f8894852fe9cac5 Mon Sep 17 00:00:00 2001 From: qiaoqinzheng Date: Mon, 13 May 2024 14:15:05 +0800 Subject: [PATCH 24/26] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=A8=A1=E5=9D=97=E5=90=8C=E6=AD=A5=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/email/EmailServiceManager.java | 11 +++++----- .../org/jeecg/modules/AutoProcessManager.java | 11 ++++++++-- .../jeecg/modules/EmailParsingActuator.java | 20 ++++++++++++------- .../spectrum/SpectrumParsingActuator.java | 8 ++++---- 4 files changed, 32 insertions(+), 18 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 9c52eb09..a3ac56f3 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 @@ -9,6 +9,8 @@ import com.sun.mail.imap.IMAPStore; import com.sun.mail.smtp.SMTPAddressFailedException; import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.Charsets; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.constant.RedisConstant; @@ -124,7 +126,7 @@ public class EmailServiceManager { /** * 接收邮件 */ - public Message[] receiveMail() { + public Message[] receiveMail() throws MessagingException { String status = EmailLogManager.STATUS_SUCCESS; try{ //配置邮件服务属性 @@ -183,12 +185,11 @@ public class EmailServiceManager { return Arrays.copyOfRange(messages,0,this.receiveNum-1); } } - }catch (MessagingException e){ + } catch (MessagingException e){ status = EmailLogManager.STATUS_ERROR; log.error("Email connection is abnormal, account is {}, service is {},the reason is {}.",email.getName(),email.getEmailServerAddress(),e.getMessage()); - e.printStackTrace(); - return null; - }finally { + throw e; + } finally { EmailLogEvent connectEvent = new EmailLogEvent(EmailLogManager.GS_TYPE_GET,email,status,EmailLogManager.CONNECT); EmailLogManager.getInstance().setConnectLogEvent(connectEvent); //GetAllId C++原业务是把远程邮箱邮件同步到C++,本次java编写没有这一步,所以和Connect绑定,若Connect成功则GetAllId成功 diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/AutoProcessManager.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/AutoProcessManager.java index 3a0880dd..9460d44d 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/AutoProcessManager.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/AutoProcessManager.java @@ -233,9 +233,15 @@ public class AutoProcessManager{ if(databaseEmail.getEnabled().equals(SysMailEnableType.ENABLE.getMailEnableType())){ final boolean testFlag = testConnectEmailServer(databaseEmail); if(testFlag){ - databaseEmail.setNewEmailFlag(true); + if (emailExecThreadMap.containsKey(databaseEmail.getId())) { + EmailParsingActuator actuator = emailExecThreadMap.get(databaseEmail.getId()); + actuator.setStop(false); + log.info("{}邮箱重新加入监测队列",databaseEmail.getUsername()); + } else { + databaseEmail.setNewEmailFlag(true); + log.info("{}邮箱加入监测队列,设置新增标记",databaseEmail.getUsername()); + } emailMap.put(databaseEmail.getId(),databaseEmail); - log.info("{}邮箱加入监测队列,设置新增标记",databaseEmail.getUsername()); } } } @@ -279,6 +285,7 @@ public class AutoProcessManager{ if(next.getValue().getState() == State.TERMINATED){ log.info("{}邮箱执行线程已停止,emailExecThreadMap删除此邮箱数据",next.getValue().getEmailProperties().getUsername()); checkStopThreads.remove(); + emailMap.remove(next.getKey()); } } 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 737b53c8..2f85fe4f 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 @@ -17,10 +17,7 @@ import org.springframework.scheduling.concurrent.CustomizableThreadFactory; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.concurrent.*; /** @@ -79,11 +76,17 @@ public class EmailParsingActuator extends Thread{ try { Message[] messages = emailServiceManager.receiveMail(); if(ArrayUtils.isNotEmpty(messages)){ - log.info("EmailParsingActuator本次获取邮件数量为:{}",messages.length); + log.info("EmailParsingActuator本次{}获取邮件数量为:{}", Thread.currentThread().getName(), messages.length); //检验获取的邮件是否在之前删除失败列表中,若在直接调用邮件API删除,并且此次数组里元素也删除 for(int i=messages.length-1;i>=0;i--){ + if (null == messages[i].getHeader("Message-ID")) { + System.out.println("Message ID是空值信息!!!!!!!"); + messages = ArrayUtils.remove(messages, i); + continue; + } if (!messages[i].isExpunged()){ String messageId = ((MimeMessage) messages[i]).getMessageID(); + System.out.println("正常获取到的Message ID是:"+messageId); final boolean exist = emailServiceManager.check(messages[i],messageId); messageIds.add(messageId); if(exist){ @@ -105,10 +108,13 @@ public class EmailParsingActuator extends Thread{ taskLatch.await(); } } - }catch (InterruptedException e) { - e.printStackTrace(); } catch (MessagingException e) { + System.out.println("捕获MessagingException!!!!!!!!"); + closeResource(); throw new RuntimeException(e); + } catch (Exception e) { + closeResource(); + log.error(""+e); } finally { //清除本批次邮件日志缓存 EmailLogManager.getInstance().clear(); 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 a88f07ad..5548ba1e 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 @@ -97,9 +97,6 @@ public class SpectrumParsingActuator implements Runnable{ String emlName = subject+ StringConstant.UNDER_LINE+ receiveDate; String key = RedisConstant.EMAIL_MSG_ID+StringConstant.COLON+messageId; // spectrumServiceQuotes.getRedisUtil().set(key,emlName,expiryTime); - //判断当前key的下载次数是否超过限制次数 - spectrumServiceQuotes.getRedisUtil().incr(key, 1L); - spectrumServiceQuotes.getRedisUtil().expire(key, expiryTime); //线程开始初始化时,初始本线程负责的能谱日志事件 SpectrumLogManager.mailSpectrumLogManager.offer(Thread.currentThread().getId(),null); @@ -144,7 +141,10 @@ public class SpectrumParsingActuator implements Runnable{ log.warn("This email {} parsing failed and is not listed in the Met, Alert, SOH, Sample, Detbkphd, QC, Gasbkphd spectra.",subject); } emailServiceManager.removeMail(message,batchesCounter); - }else { + } else { + //判断当前key的下载次数是否超过限制次数 + spectrumServiceQuotes.getRedisUtil().incr(key, 1L); + spectrumServiceQuotes.getRedisUtil().expire(key, expiryTime); // 如果邮件内容校验失败(邮件内容不完整) 将错误邮件从eml移动到emlError if (Objects.nonNull(emlFile) && emlFile.exists()){ moveEmail(emlFile, key); From 4bb2518d36c52cb960f3b4b86a11485b939e370f Mon Sep 17 00:00:00 2001 From: nieziyan Date: Mon, 13 May 2024 16:25:44 +0800 Subject: [PATCH 25/26] =?UTF-8?q?feat=EF=BC=9A=E8=8E=B7=E5=8F=96=E6=8E=A2?= =?UTF-8?q?=E6=B5=8B=E5=99=A8Id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/jeecg/modules/base/dto/Info.java | 3 --- .../org/jeecg/modules/feignclient/SystemClient.java | 4 +++- .../jeecg/modules/redisStream/AnalysisConsumer.java | 8 +++----- .../service/impl/AnalysisResultServiceImpl.java | 1 + .../system/controller/GardsSampleDataController.java | 10 +++++++--- .../system/service/IGardsSampleDataService.java | 2 ++ .../service/impl/GardsSampleDataServiceImpl.java | 11 +++++++++++ 7 files changed, 27 insertions(+), 12 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/Info.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/Info.java index b617fa1a..cba0cc14 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/Info.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/Info.java @@ -18,9 +18,6 @@ public class Info implements Serializable{ // 台站id private String stationId; - // 探测器id - private String detectorId; - // 谱id private String sampleId; diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/SystemClient.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/SystemClient.java index ccd00db5..312486f8 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/SystemClient.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/SystemClient.java @@ -43,5 +43,7 @@ public interface SystemClient { @PostMapping("/sys/appMessage/pushMessageToSingle") void pushMessageToSingle(@RequestBody MessageDTO messageDTO, @RequestParam String groupId); - + /* GardsSampleDataController下相关接口 */ + @GetMapping("/gardsSampleData/getDetectorId") + String getDetectorId(@RequestParam String sampleId); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java index 9eedcd29..cd617ed1 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java @@ -150,7 +150,6 @@ public class AnalysisConsumer implements StreamListener firstDetected(String betaOrGamma, String dataSourceType, - String stationId, String detectorId, - String sampleId, Set nuclideNames){ + String stationId, String sampleId, Set nuclideNames){ /* 查询用户关注的核素是否存在 如果不存在则为首次发现该核素 判断核素是否存在的条件: 该核素的Conc值是否大于MDC值 */ + String detectorId = systemClient.getDetectorId(sampleId); return analysisResultService.nuclideFirst(betaOrGamma, dataSourceType, stationId, detectorId, sampleId, nuclideNames); } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java index 858fa2cd..f1453a0c 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AnalysisResultServiceImpl.java @@ -2,6 +2,7 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.collection.ListUtil; import org.jeecg.common.constant.CommonConstant; +import org.jeecg.modules.feignclient.SystemClient; import org.jeecg.modules.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/GardsSampleDataController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/GardsSampleDataController.java index ddfa3bb0..789806b5 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/GardsSampleDataController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/GardsSampleDataController.java @@ -19,7 +19,7 @@ import java.util.Map; public class GardsSampleDataController { @Autowired - private IGardsSampleDataService gardsSampleDataService; + private IGardsSampleDataService sampleDataService; @Autowired private RedisUtil redisUtil; @@ -28,7 +28,7 @@ public class GardsSampleDataController { public Result> findPage(QueryRequest queryRequest, GardsSampleDataSystem gardsSampleData, boolean collectStopCheck, boolean acqDotStartCheck){ - return gardsSampleDataService.findPage(queryRequest, gardsSampleData, collectStopCheck, acqDotStartCheck); + return sampleDataService.findPage(queryRequest, gardsSampleData, collectStopCheck, acqDotStartCheck); } @GetMapping("findStations") @@ -49,7 +49,11 @@ public class GardsSampleDataController { @ApiOperation(value = "删除DATA_BASE数据", notes = "删除DATA_BASE数据") public Result deleteById(@RequestParam Integer sampleId, boolean sampleData, boolean rnAuto, boolean rnMan){ - return gardsSampleDataService.deleteById(sampleId, sampleData, rnAuto, rnMan); + return sampleDataService.deleteById(sampleId, sampleData, rnAuto, rnMan); } + @GetMapping("getDetectorId") + public String getDetectorId(@RequestParam String sampleId){ + return sampleDataService.getDetectorId(sampleId); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/IGardsSampleDataService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/IGardsSampleDataService.java index 61fd98f8..48d335f6 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/IGardsSampleDataService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/IGardsSampleDataService.java @@ -31,4 +31,6 @@ public interface IGardsSampleDataService extends IService GardsSampleDataSystem getOne(Integer sampleId); void delTables(List tableNames, Integer sampleId); + + String getDetectorId(String sampleId); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/GardsSampleDataServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/GardsSampleDataServiceImpl.java index 22984ab2..cd70b9c0 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/GardsSampleDataServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/GardsSampleDataServiceImpl.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.toolkit.SqlRunner; @@ -22,6 +23,7 @@ import org.jeecg.common.util.FTPUtil; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.base.dto.AnalysesDto; import org.jeecg.modules.base.dto.OwnerDto; +import org.jeecg.modules.base.entity.original.GardsSampleData; import org.jeecg.modules.base.entity.rnauto.GardsAnalyses; import org.jeecg.modules.system.entity.GardsSampleDataSystem; import org.jeecg.modules.system.mapper.GardsSampleDataMapper; @@ -203,6 +205,15 @@ public class GardsSampleDataServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(GardsSampleDataSystem::getSampleId, sampleId); + Integer detectorId = Optional.of(this.getOne(wrapper, false)) + .orElse(new GardsSampleDataSystem()).getDetectorId(); + return ObjectUtil.isNull(detectorId) ? null : detectorId.toString(); + } + private String samplePath(String savePath, Integer sampleId){ GardsSampleDataSystem sampleData = getOne(sampleId); String inputFileName = sampleData.getInputFileName(); From ff2f73eb416132ff5d01fdd20d6ed004d890836b Mon Sep 17 00:00:00 2001 From: nieziyan Date: Wed, 15 May 2024 09:13:54 +0800 Subject: [PATCH 26/26] =?UTF-8?q?fix=EF=BC=9A=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/jeecg/common/util/TemplateUtil.java | 6 ++++-- .../src/main/java/org/jeecg/common/util/TokenUtils.java | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TemplateUtil.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TemplateUtil.java index f3a902c0..f3fb479b 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TemplateUtil.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TemplateUtil.java @@ -61,7 +61,8 @@ public class TemplateUtil { for (String key : keys) { contents.add(ReUtil.getGroup1(StrUtil.format(pattern, key), templateContent)); } - templateContent = CollUtil.join(contents, "#"); + String join = StrUtil.SPACE + "#" + StrUtil.SPACE; + templateContent = CollUtil.join(contents, join); String content = FreemarkerParseFactory .parseTemplateContent(templateContent, data, true); messageDTO.setContent(content); @@ -102,7 +103,8 @@ public class TemplateUtil { for (String key : keys) { contents.add(ReUtil.getGroup1(StrUtil.format(pattern, key), templateContent)); } - templateContent = CollUtil.join(contents, "#"); + String join = StrUtil.SPACE + "#" + StrUtil.SPACE; + templateContent = CollUtil.join(contents, join); String content = FreemarkerParseFactory .parseTemplateContent(templateContent, data, true); messageDTO.setContent(content); diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java index eb58f6d9..bafe618e 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java @@ -164,8 +164,8 @@ public class TokenUtils { String secret = CommonConstant.TEMP_TOKEN_SECRET; // 模拟登录生成Token String token = JwtUtil.sign(username, secret); - // 设置Token缓存有效时间为 3 分钟 - redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token, 3 * 60); + // 设置Token缓存有效时间为 60 秒 + redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token, 60); return token; } }