Kaynağa Gözat

新建环保警报推送功能。

zhuoning 3 yıl önce
ebeveyn
işleme
3408014e23

+ 1 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/server/EnvironDataHandler.java

@@ -86,6 +86,7 @@ public class EnvironDataHandler {
 
                         //发送分钟测试数据(测试)
 //                        environ.sendHourEnviron(JSON.toJSON(envMinuteEntity).toString());
+
                         //处理分钟环保数据报警
                         environ.handleEnvironWarningInfo(JSON.toJSON(envMinuteEntity).toString());
                     }else  if(cn.trim().equalsIgnoreCase("2061")){

+ 2 - 1
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/IEnviron.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.huimv.environ.dao.entity.EnvMinuteEntity;
 
 import java.io.IOException;
+import java.text.ParseException;
 
 public interface IEnviron {
     
@@ -15,5 +16,5 @@ public interface IEnviron {
 
     JSONArray getEnvironData();
 
-    void handleEnvironWarningInfo(String data);
+    void handleEnvironWarningInfo(String data) throws ParseException;
 }

+ 73 - 28
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/impl/EnvironImpl.java

@@ -10,6 +10,8 @@ import com.huimv.environ.dao.repo.EnvHourRepo;
 import com.huimv.environ.dao.repo.EnvMinuteRepo;
 import com.huimv.environ.service.IEnviron;
 import com.huimv.environ.service.IThreshold;
+import com.huimv.environ.utils.Const;
+import com.huimv.environ.utils.DateUtil;
 import com.huimv.environ.utils.HttpTemplete;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +20,7 @@ import org.springframework.stereotype.Service;
 
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -48,18 +51,27 @@ public class EnvironImpl implements IEnviron {
     //牧场ID
     @Value("${local.farmID}")
     private Integer farmID;
+    //小时数据服务
+    @Value("${dataCenter.service.hourEnviron}")
+    private String hourEnvironService;
+    //实时数据服务
+    @Value("${dataCenter.service.realTimeEnviron}")
+    private String realTimeEnvironService;
+    //环境警报
+    @Value("${dataCenter.service.alarm}")
+    private String alarmService;
     @Autowired
     private IThreshold Threshold;
-
+    @Autowired
+    private DateUtil dateUtil;
 
     //本地测试地址
 //    String testLocalHttpIp = "http://192.168.1.49:10091";
 
-
-
     @Override
     public void sendEnviron() throws IOException {
-        String url = ipAddr + port + "/cloud/environ/putHourEnviron";
+//        String url = ipAddr + port + "/cloud/environ/putHourEnviron";
+        String url = ipAddr + port + hourEnvironService;
         log.info("推送地址:"+url);
         //
         Map<String,String> paramsMap = new HashMap<String,String>();
@@ -77,7 +89,28 @@ public class EnvironImpl implements IEnviron {
     //发送小时环保数据
     @Override
     public void sendHourEnviron(String data) {
-        String url = ipAddr + port + "/cloud/environ/putHourEnviron";
+//        String url = ipAddr + port + "/cloud/environ/putHourEnviron";
+        String url = ipAddr + port + hourEnvironService;
+        log.info("推送数据地址:"+url);
+        //
+        Map<String,String> paramsMap = new HashMap<String,String>();
+        paramsMap.put("data", data);
+        //
+        Map<String,Integer> timeoutMap = new HashMap<String,Integer>();
+        timeoutMap.put("connectTimeout", 5000);
+        timeoutMap.put("requestTimeout", 5000);
+        timeoutMap.put("socketTimeout", 5000);
+        try{
+            // 用Post方法推送接口数据
+            httpTemplete.doPost(url,paramsMap,timeoutMap);
+        } catch (IOException e) {
+            System.out.println("###错误信息:"+e.getMessage());
+        }
+    }
+
+    //发送简单数据
+    public void _doPostSimple(String service,String data){
+        String url = ipAddr + port + service;
         log.info("推送数据地址:"+url);
         //
         Map<String,String> paramsMap = new HashMap<String,String>();
@@ -98,7 +131,8 @@ public class EnvironImpl implements IEnviron {
     //发送实时数据
     @Override
     public void sendRealTimeEnviron(String data) {
-        String url = ipAddr + port + "/cloud/environ/putRealTimeEnviron";
+//        String url = ipAddr + port + "/cloud/environ/putRealTimeEnviron";
+        String url = ipAddr + port + realTimeEnvironService;
         log.info("推送数据地址:"+url);
         //
         Map<String,String> paramsMap = new HashMap<String,String>();
@@ -138,7 +172,7 @@ public class EnvironImpl implements IEnviron {
      * @Time        : 22:12
      */
     @Override
-    public void handleEnvironWarningInfo(String data) {
+    public void handleEnvironWarningInfo(String data) throws ParseException {
         JSONObject environJo = JSON.parseObject(data);
 //        System.out.println(">>>>>>>>>>>>>>>>报警信息 environJo>>"+environJo);
         //读取阈值记录
@@ -148,48 +182,59 @@ public class EnvironImpl implements IEnviron {
         }else{
             JSONObject thresholdJo = JSON.parseObject(thresholdData);
 //            System.out.println("所有阈值记录<<<<<<"+thresholdJo);
-            System.out.println(new BigDecimal(environJo.getString("adPj")) + " "+new BigDecimal(thresholdJo.getString("ammonia")));
-            System.out.println(new BigDecimal(environJo.getString("hxxylPj")) + " "+new BigDecimal(thresholdJo.getString("cOD")));
-            System.out.println(new BigDecimal(environJo.getString("phPj")) + " "+new BigDecimal(thresholdJo.getString("ph")));
-            System.out.println(new BigDecimal(environJo.getString("wsPj")) + " "+new BigDecimal(thresholdJo.getString("flow")));
+//            System.out.println(new BigDecimal(environJo.getString("adPj")) + " "+new BigDecimal(thresholdJo.getString("ammonia")));
+//            System.out.println(new BigDecimal(environJo.getString("hxxylPj")) + " "+new BigDecimal(thresholdJo.getString("cOD")));
+//            System.out.println(new BigDecimal(environJo.getString("phPj")) + " "+new BigDecimal(thresholdJo.getString("ph")));
+//            System.out.println(new BigDecimal(environJo.getString("wsPj")) + " "+new BigDecimal(thresholdJo.getString("flow")));
             //环保氨氮数据>=阈值氨氮数据
             if(new BigDecimal(environJo.getString("adPj")).compareTo(new BigDecimal(thresholdJo.getString("ammonia"))) > -1){
-                String warningInfo = "当前氨氮数据为"+environJo.getString("adPj")+"高于或等于阈值"+thresholdJo.getString("ammonia")+",特此警告.";
-                log.info(warningInfo);
-                //向数据中心发送报警信息
-                String url = ipAddr + port + "/cloud/environ/putWarningInfo";
+                String alarmInfo = "当前氨氮数据为"+environJo.getString("adPj")+"高于或等于阈值"+thresholdJo.getString("ammonia")+",特此警告.";
+                log.info(alarmInfo);
+                //向数据中心发送警报
+                String url = ipAddr + port + alarmService;
                 log.info("推送警告地址:"+url);
-                // farmID,warningInfo
+                // farmID,alarmInfo
+                JSONObject alarmJo = new JSONObject();
+                alarmJo.put("farmId",farmID);
+                alarmJo.put("info",alarmInfo);
+                alarmJo.put("level", Const.INFO_FIRST_LEVEL);
+                alarmJo.put("levelName",Const.INFO_FIRST_LEVEL_ALARM);
+                alarmJo.put("alarmType",8);
+                alarmJo.put("warningName","环境警报");
+                alarmJo.put("alarmTime",dateUtil.getTodayText());
+                //发送警报
+                _doPostSimple(alarmService,alarmJo.toJSONString());
                 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
             }
+
             //环保COD数据>=阈值COD数据
             if(new BigDecimal(environJo.getString("hxxylPj")).compareTo(new BigDecimal(thresholdJo.getString("cOD"))) > -1){
-                String warningInfo = "当前化学需氧量数据为"+environJo.getString("hxxylPj")+"高于或等于阈值"+thresholdJo.getString("cOD")+",特此警告.";
-                log.info(warningInfo);
-                //向数据中心发送报警信息
+                String alarmInfo = "当前化学需氧量数据为"+environJo.getString("hxxylPj")+"高于或等于阈值"+thresholdJo.getString("cOD")+",特此警告.";
+                log.info(alarmInfo);
+                //向数据中心发送警报
                 String url = ipAddr + port + "/cloud/environ/putWarningInfo";
                 log.info("推送警告地址:"+url);
-                // farmID,warningInfo
+                // farmID,alarmInfo
                 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
             }
             //环保PH数据>=阈值PH数据
             if(new BigDecimal(environJo.getString("phPj")).compareTo(new BigDecimal(thresholdJo.getString("ph"))) > -1){
-                String warningInfo = "当前PH值数据为"+environJo.getString("phPj")+"高于或等于阈值"+thresholdJo.getString("ph")+",特此警告.";
-                log.info(warningInfo);
-                //向数据中心发送报警信息
+                String alarmInfo = "当前PH值数据为"+environJo.getString("phPj")+"高于或等于阈值"+thresholdJo.getString("ph")+",特此警告.";
+                log.info(alarmInfo);
+                //向数据中心发送警报
                 String url = ipAddr + port + "/cloud/environ/putWarningInfo";
                 log.info("推送警告地址:"+url);
-                // farmID,warningInfo
+                // farmID,alarmInfo
                 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
             }
             //环保污水浓度数据>=阈值污水浓度数据
             if(new BigDecimal(environJo.getString("wsPj")).compareTo(new BigDecimal(thresholdJo.getString("flow"))) > -1){
-                String warningInfo = "当前污水浓度数据为"+environJo.getString("wsPj")+"高于或等于阈值"+thresholdJo.getString("flow")+",特此警告.";
-                log.info(warningInfo);
-                //向数据中心发送报警信息
+                String alarmInfo = "当前污水浓度数据为"+environJo.getString("wsPj")+"高于或等于阈值"+thresholdJo.getString("flow")+",特此警告.";
+                log.info(alarmInfo);
+                //向数据中心发送警报
                 String url = ipAddr + port + "/cloud/environ/putWarningInfo";
                 log.info("推送警告地址:"+url);
-                // farmID,warningInfo
+                // farmID,alarmInfo
                 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
             }
         }

+ 22 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/utils/Const.java

@@ -0,0 +1,22 @@
+package com.huimv.environ.utils;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+public class Const {
+//    public static final String INFO_FIRST_LEVEL="一级";
+    public static final String INFO_FIRST_LEVEL="1";
+    public static final String INFO_FIRST_LEVEL_ALARM="一级警报";
+
+    public static final String INFO_SECOND_LEVEL="二级";
+    public static final String INFO_SECOND_LEVEL_ALARM="二级警报";
+
+    public static final String INFO_THIRD_LEVEL="三级";
+    public static final String INFO_THIRD_LEVEL_ALARM="三级警报";
+
+}

+ 5 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/utils/DateUtil.java

@@ -76,6 +76,11 @@ public class DateUtil {
         return sdf.parse(sdf.format(new Date()));
     }
 
+    public Date getTodayDatetime() throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return sdf.parse(sdf.format(new Date()));
+    }
+
     public String getTodayDateText() throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         return sdf.format(new Date());

+ 9 - 3
huimv-farm-device/huimv-farm-cloud-environ/src/main/resources/application.properties

@@ -1,12 +1,18 @@
 #spring.profiles.active=dev
 spring.profiles.active=prod
 
-#时间格式配置
+# 时间格式配置
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
 spring.jackson.time-zone=GMT+8
 #spring.profiles.active=test
-#数据中心数据推送地址
+# 数据中心数据推送地址
 dataCenter.ipAddr=http://115.238.57.190
 dataCenter.port=:10091
-#部署牧场ID(base_farm.id)
+# 小时环境数据服务
+dataCenter.service.hourEnviron=/cloud/environ/putHourEnviron
+# 实时环境数据服务
+dataCenter.service.realTimeEnviron=/cloud/environ/putRealTimeEnviron
+# 环境警报服务
+dataCenter.service.alarm=/alarm/environ/putEnvironAlarm
+# 部署牧场ID(base_farm.id)
 local.farmID=1