Browse Source

补充虫情告警日志

yf_zn 9 tháng trước cách đây
mục cha
commit
65fe85934b

+ 2 - 1
src/main/java/com/yunfeiyun/agmp/iots/warn/job/WarnJob.java

@@ -39,7 +39,8 @@ public class WarnJob {
     /**
      * 病虫害告警定时检查方法
      */
-    @Scheduled(cron = "* * * * * ?")
+    //@Scheduled(cron = "0 * * * * ?")
+    @Scheduled(cron = "0 0/20 * * * ?")
     public void pestWarnJob() {
         // 处理虫害
         warnService.processWarningPestData();

+ 53 - 36
src/main/java/com/yunfeiyun/agmp/iots/warn/service/WarnPestService.java

@@ -36,28 +36,32 @@ public class WarnPestService {
         //单个配置单个设备的处理逻辑,外层需要遍历
         List<IotWarnconfigCbdInfoVo> iotWarnconfigCbdInfoVoList = iotWarnBussinessService.selectIotWarnconfigCbdInfoList();
         for (IotWarnconfigCbdInfoVo iotWarnconfigCbdInfoVo : iotWarnconfigCbdInfoVoList) {
-            IotDevice iotDevice = iotWarnconfigCbdInfoVo.getIotDevice();
-            String devBid = iotDevice.getDevBid();
-            List<IotWarnindicator> iotWarnindicatorList = iotWarnconfigCbdInfoVo.getIotWarnindicatorList();
-            IotWarnconfig iotWarnconfig = new IotWarnconfig();
-            BeanUtils.copyProperties(iotWarnconfigCbdInfoVo, iotWarnconfig);
-
-            IotWarnindicator pestByTypeWarnindicator = new IotWarnindicator();
-            IotWarnindicator pestByCountWarnindicator = new IotWarnindicator();
-            IotWarnindicator designatePestWarnindicator = new IotWarnindicator();
-            for(IotWarnindicator iotWarnindicator : iotWarnindicatorList){
-                BeanUtils.copyProperties(iotDevice, iotWarnindicator);
-
-                if("pestType".equals(iotWarnindicator.getWiCode())){
-                    BeanUtils.copyProperties(iotWarnindicator, pestByTypeWarnindicator);
-                }else if("pestNum".equals(iotWarnindicator.getWiCode())){
-                    BeanUtils.copyProperties(iotWarnindicator, pestByCountWarnindicator);
-                }else if("pestDetail".equals(iotWarnindicator.getWiCode())){
-                    BeanUtils.copyProperties(iotWarnindicator, designatePestWarnindicator);
+            try {
+                IotDevice iotDevice = iotWarnconfigCbdInfoVo.getIotDevice();
+                String devBid = iotDevice.getDevBid();
+                List<IotWarnindicator> iotWarnindicatorList = iotWarnconfigCbdInfoVo.getIotWarnindicatorList();
+                IotWarnconfig iotWarnconfig = new IotWarnconfig();
+                BeanUtils.copyProperties(iotWarnconfigCbdInfoVo, iotWarnconfig);
+
+                IotWarnindicator pestByTypeWarnindicator = new IotWarnindicator();
+                IotWarnindicator pestByCountWarnindicator = new IotWarnindicator();
+                IotWarnindicator designatePestWarnindicator = new IotWarnindicator();
+                for (IotWarnindicator iotWarnindicator : iotWarnindicatorList) {
+                    BeanUtils.copyProperties(iotDevice, iotWarnindicator);
+
+                    if ("pestType".equals(iotWarnindicator.getWiCode())) {
+                        BeanUtils.copyProperties(iotWarnindicator, pestByTypeWarnindicator);
+                    } else if ("pestNum".equals(iotWarnindicator.getWiCode())) {
+                        BeanUtils.copyProperties(iotWarnindicator, pestByCountWarnindicator);
+                    } else if ("pestDetail".equals(iotWarnindicator.getWiCode())) {
+                        BeanUtils.copyProperties(iotWarnindicator, designatePestWarnindicator);
+                    }
                 }
+                //底层调用:统一处理一个虫情设备的三个要素
+                processPestIotWarnindicators(devBid, iotWarnconfig, pestByTypeWarnindicator, pestByCountWarnindicator, designatePestWarnindicator);
+            } catch (Exception e) {
+                log.error("{}", e);
             }
-            //底层调用:统一处理一个虫情设备的三个要素
-            processPestIotWarnindicators(devBid, iotWarnconfig, pestByTypeWarnindicator, pestByCountWarnindicator, designatePestWarnindicator);
         }
     }
 
@@ -155,14 +159,20 @@ public class WarnPestService {
      */
     private void handlerAllWarnLog(String devBid, IotWarnconfig iotWarnconfig, WarnStatusDto pestByType, WarnStatusDto pestByCount, WarnStatusDto designatePest) {
         if (StringUtils.isEmpty(devBid)) {
-            log.error("【设备预警】病虫害:设备id 不可为空");
+            log.error("【设备预警】病虫害:设备id 不可为空. 设备ID: {}, 配置ID: {}", devBid, iotWarnconfig.getWcBid());
             throw new BizException(ErrorCode.FAILURE.getCode(), "病虫害:设备id 不可为空");
         }
+        log.info("开始处理设备ID为 {}, 配置ID为 {} 的预警信息", devBid, iotWarnconfig.getWcBid());
+        log.info("开始处理设备ID为 {}, 配置ID为 {} 的预警信息:pestByType: {}", iotWarnconfig.getWcBid(), devBid, pestByType);
+        log.info("开始处理设备ID为 {}, 配置ID为 {} 的预警信息:pestByCount: {}", iotWarnconfig.getWcBid(), devBid, pestByCount);
+        log.info("开始处理设备ID为 {}, 配置ID为 {} 的预警信息:designatePest: {}", devBid, iotWarnconfig.getWcBid(), designatePest);
+
         String pestByTypeMessage = null;
         String pestByCountMessage = null;
         String designatePestMessage = null;
         boolean isWarn = false;
-        //构建消息
+
+        // 构建消息
         if (pestByType != null && pestByType.isWarn()) {
             pestByTypeMessage = WarnMessageBuilderUtil.buildWarningMessage(
                     pestByType.getDevType(),
@@ -173,9 +183,10 @@ public class WarnPestService {
                     pestByType.getOpt(),
                     pestByType.getIndicatorValue()
             );
+            log.info("根据类型生成警告消息: {}. 设备ID: {}, 配置ID: {}", pestByTypeMessage, devBid, iotWarnconfig.getWcBid());
             isWarn = true;
         }
-        //构建消息
+
         if (pestByCount != null && pestByCount.isWarn()) {
             pestByCountMessage = WarnMessageBuilderUtil.buildWarningMessage(
                     pestByCount.getDevType(),
@@ -186,25 +197,27 @@ public class WarnPestService {
                     pestByCount.getOpt(),
                     pestByCount.getIndicatorValue()
             );
+            log.info("根据数量生成警告消息: {}. 设备ID: {}, 配置ID: {}", pestByCountMessage, devBid, iotWarnconfig.getWcBid());
             isWarn = true;
         }
-        //构建消息
+
         if (designatePest != null && designatePest.isWarn()) {
             designatePestMessage = WarnMessageBuilderUtil.buildWarningMessage(
-                    pestByType.getDevType(),
-                    pestByType.getDevCode(),
-                    pestByType.getName(),
-                    pestByType.getValue(),
-                    pestByType.getUnit(),
-                    pestByType.getOpt(),
-                    pestByType.getIndicatorValue()
+                    designatePest.getDevType(),
+                    designatePest.getDevCode(),
+                    designatePest.getName(),
+                    designatePest.getValue(),
+                    designatePest.getUnit(),
+                    designatePest.getOpt(),
+                    designatePest.getIndicatorValue()
             );
+            log.info("针对指定病虫害生成警告消息: {}. 设备ID: {}, 配置ID: {}", designatePestMessage, devBid, iotWarnconfig.getWcBid());
             isWarn = true;
         }
 
         StringBuffer buffer = new StringBuffer();
         if (pestByTypeMessage != null) {
-            buffer.append(buffer);
+            buffer.append(pestByTypeMessage);
         }
         if (pestByCountMessage != null) {
             buffer.append(pestByCountMessage);
@@ -212,20 +225,24 @@ public class WarnPestService {
         if (designatePestMessage != null) {
             buffer.append(designatePestMessage);
         }
-        //构建发送消息的参数
+
+        // 构建发送消息的参数
         WarnResult warnResult = new WarnResult();
-        warnResult.setMessageId(warnResult.getUUId());
+        warnResult.setMessageId(warnResult.getUUId()); // 确保WarnResult中有getUUId方法
         warnResult.setDevId(devBid);
         warnResult.setTid(iotWarnconfig.getTid());
         warnResult.setConfigId(iotWarnconfig.getWcBid());
         warnResult.setReportData("-");
-        warnResult.setTargetReCount(iotWarnconfig.getWcRepeatnum());
+        warnResult.setTargetReCount(iotWarnconfig.getWcRepeatnum() == null ? 0 : iotWarnconfig.getWcRepeatnum());
         warnResult.setDevtypeBid(iotWarnconfig.getDevtypeBid());
         warnResult.setConfig(iotWarnconfig);
         warnResult.setTriggered(isWarn);
         warnResult.setMessage(buffer.toString());
-        //发送告警
+
+        log.info("准备发送告警信息: {}. 设备ID: {}, 配置ID: {}", warnResult.getMessage(), devBid, iotWarnconfig.getWcBid());
+        // 发送告警
         reCountService.handlerMessage(warnResult);
+        log.info("告警信息已发送完成. 设备ID: {}, 配置ID: {}", devBid, iotWarnconfig.getWcBid());
     }