diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/RuleDto.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/RuleDto.java index fdda7b53..acfba4cd 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/RuleDto.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/RuleDto.java @@ -7,7 +7,8 @@ import lombok.experimental.Accessors; import org.jeecg.modules.base.enums.SourceType; import java.io.Serializable; -import java.util.List; +import java.time.LocalDateTime; +import java.util.Date; import java.util.Map; @Data @@ -30,8 +31,14 @@ public class RuleDto implements Serializable{ // 谱id private String sampleId; + // 谱Name + private String sampleName; + + // 采样时间 + private LocalDateTime collectionDate; + // 数据源类型(ARMDARR=1|ARMDRRR=2|IDCARR=3|IDCRRR=4) - private String dataSourceType; + private String datasource; // 谱类型 (FULL|PREL) private String fullOrPrel; @@ -41,4 +48,11 @@ public class RuleDto implements Serializable{ // 核素名称-浓度值 private Map nuclides; + + /* 以下属性不需要传值 */ + private String ruleId; + + private String groupId; + + private String conditions; } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/postgre/AlarmAnalysisLog.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/postgre/AlarmAnalysisLog.java index 2f22c275..c7b29164 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/postgre/AlarmAnalysisLog.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/postgre/AlarmAnalysisLog.java @@ -49,6 +49,8 @@ public class AlarmAnalysisLog implements Serializable{ private String datasource; + private String sampleName; + @TableField(exist = false) private List nuclideInfoList; } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/postgre/AlarmAnalysisRule.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/postgre/AlarmAnalysisRule.java index 6a51d563..e8010650 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/postgre/AlarmAnalysisRule.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/postgre/AlarmAnalysisRule.java @@ -15,6 +15,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import org.jeecg.common.system.base.entity.JeecgEntity; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.scheduling.annotation.Scheduled; @Data @TableName("alarm_analysis_rule") 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 5f6763bd..3782299b 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 @@ -1,23 +1,19 @@ package org.jeecg.modules.redisStream; +import cn.hutool.core.bean.BeanUtil; 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.util.NumberUtil; import cn.hutool.core.util.StrUtil; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.config.mqtoken.UserTokenContext; import org.jeecg.common.constant.CommonConstant; -import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.util.RedisStreamUtil; -import org.jeecg.common.util.RedisUtil; import org.jeecg.common.util.SpringContextUtils; import org.jeecg.modules.base.dto.NuclideInfo; import org.jeecg.modules.base.dto.RuleDto; @@ -29,7 +25,6 @@ import org.jeecg.modules.service.AnalysisResultService; import org.jeecg.modules.service.IAlarmAnalysisLogService; import org.jeecg.modules.service.IAlarmAnalysisNuclideAvgService; import org.jeecg.modules.service.IAlarmAnalysisRuleService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.connection.stream.ObjectRecord; import org.springframework.data.redis.connection.stream.RecordId; import org.springframework.data.redis.stream.StreamListener; @@ -38,8 +33,6 @@ import static org.jeecg.common.constant.enums.MessageTypeEnum.*; import static org.jeecg.common.util.TokenUtils.getTempToken; import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -101,8 +94,7 @@ public class AnalysisConsumer implements StreamListener nuclides = ruleDto.getNuclides(); if (StrUtil.isBlank(stationId)) return; if (StrUtil.isBlank(sampleId)) return; @@ -118,7 +110,7 @@ public class AnalysisConsumer implements StreamListener cross.contains(entry.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); // 开始对交集中的核素进行条件判断 - List conditions = ListUtil.toList(conditionStr.split(comma)); - String ruleId = rule.getId(); - String groupId = rule.getContactGroup(); - judge(ruleId,groupId,sampleId,betaOrGamma,dataSourceType,conditions,nuclidesCross); + ruleDto.setRuleId(rule.getId()); + ruleDto.setGroupId(rule.getContactGroup()); + ruleDto.setConditions(rule.getConditions()); + judge(ruleDto,nuclidesCross); } } - private void judge(String ruleId, - String groupId, - String sampleId, - String betaOrGamma, - String dataSourceType, - List conditions, - Map nuclidesCross){ + private void judge(RuleDto ruleDto, Map nuclidesCross){ String ONE = "1";String TWO = "2";String THREE = "3"; Set nuclideNames = nuclidesCross.keySet(); String alarmInfo = ""; List firstDetected; List moreThanAvg = new ArrayList<>(); + String conditionStr = ruleDto.getConditions(); + String betaOrGamma = ruleDto.getBetaOrGamma(); + String datasource = ruleDto.getDatasource(); + List conditions = ListUtil.toList(conditionStr.split(comma)); for (String con : conditions) { if (ONE.equals(con)){ // 首次发现该元素 - firstDetected = firstDetected(betaOrGamma,dataSourceType,nuclideNames); + firstDetected = firstDetected(betaOrGamma,datasource,nuclideNames); if (CollUtil.isNotEmpty(firstDetected)){ String message = "核素"+StrUtil.join(comma,firstDetected)+"首次发现"; alarmInfo += message; } } else if (TWO.equals(con)) { // 元素浓度高于均值 - moreThanAvg = moreThanAvg(dataSourceType,nuclidesCross); + moreThanAvg = moreThanAvg(datasource,nuclidesCross); if (CollUtil.isNotEmpty(moreThanAvg)){ for (NuclideInfo nuclideInfo : moreThanAvg) { String nuclide = nuclideInfo.getNuclide(); @@ -182,8 +172,7 @@ public class AnalysisConsumer implements StreamListener nuclides = MapUtil.newHashMap(); nuclides.put("Be7","1000000"); nuclides.put("sss","1000000"); diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-xxljob/doc/db/tables_xxl_job.sql b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-xxljob/doc/tables_xxl_job.sql similarity index 100% rename from jeecg-server-cloud/jeecg-visual/jeecg-cloud-xxljob/doc/db/tables_xxl_job.sql rename to jeecg-server-cloud/jeecg-visual/jeecg-cloud-xxljob/doc/tables_xxl_job.sql