Explorar o código

传感器推送病虫害数据定时任务

lchao %!s(int64=2) %!d(string=hai) anos
pai
achega
b6c328679c

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/monitorInterface/inserctpests/service/PlantDiseasesAndInsectPestsService.java

@@ -1,9 +1,12 @@
 package com.ruoyi.monitorInterface.inserctpests.service;
 
+import com.alibaba.fastjson.JSONArray;
 import com.ruoyi.common.core.domain.AjaxResult;
 
 public interface PlantDiseasesAndInsectPestsService {
 
     AjaxResult plantDiseasesAndInsectPestsMessageReceiver(String deviceNumber);
 
+    JSONArray getDevideCodeMapByType(String types);
+
 }

+ 23 - 0
ruoyi-admin/src/main/java/com/ruoyi/monitorInterface/inserctpests/service/impl/PlantDiseasesAndInsectPestsServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.monitorInterface.inserctpests.service.impl;
 
 import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.framework.web.service.ConfigService;
@@ -57,4 +58,26 @@ public class PlantDiseasesAndInsectPestsServiceImpl implements PlantDiseasesAndI
             return AjaxResult.error("数据推送失败!", result);
         }
     }
+
+    @Override
+    public JSONArray getDevideCodeMapByType(String types) {
+        //先请求
+        StringBuffer URI = new StringBuffer(configService.getKey("centerMonitorURL")+ "device/getDevideCodeMapByTypes");
+        URI.append("?types=").append(types);
+        String result = HttpRequest.get(URI.toString())
+                .header("Content-Type", "application/json")
+                .execute().body();
+        //后推送
+        JSONObject object;
+        try {
+            object = JSONObject.parseObject(result);
+            if(object.getInteger("code") == 200){
+                return object.getJSONArray("data");
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+            log.error("服务端数据校验失败! data ===> {} , result ===> {}",result, e.getMessage());
+        }
+        return new JSONArray();
+    }
 }

+ 17 - 0
ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/StaticScheduleTask.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.framework.web.service.ConfigService;
+import com.ruoyi.monitorInterface.inserctpests.service.PlantDiseasesAndInsectPestsService;
 import com.ruoyi.monitorInterface.sennor.service.SennorService;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.slf4j.Logger;
@@ -31,6 +32,9 @@ public class StaticScheduleTask {
     private SennorService sennorService;
 
     @Resource
+    private PlantDiseasesAndInsectPestsService plantDiseasesAndInsectPestsService;
+
+    @Resource
     private ConfigService configService;
 
     //添加定时任务 每三分钟执行
@@ -46,6 +50,19 @@ public class StaticScheduleTask {
         }
     }
 
+    //添加定时任务 每五分钟执行
+    @Scheduled(cron = "0 */5 * * * ?")
+    private void configureTask() {
+
+        logger.info("执行定时任务=>{}", DateUtils.dateTimeNow());
+        String types = configService.getKey("sennorDeviceType");
+        JSONArray jsonArray = plantDiseasesAndInsectPestsService.getDevideCodeMapByType(types);
+        for (Object object : jsonArray){
+            JSONObject jsonObject = JSONObject.parseObject(object.toString());
+            plantDiseasesAndInsectPestsService.plantDiseasesAndInsectPestsMessageReceiver(jsonObject.getString("device_code"));
+        }
+    }
+
 
     /**
      * 比较两个日期大小