瀏覽代碼

服务端增加环境排放报警功能

zhuoning 2 年之前
父節點
當前提交
c4c673022f

+ 40 - 0
huimv-farm-admin/src/main/java/com/huimv/admin/device/dao/entity/SysCameraAreaEntity.java

@@ -0,0 +1,40 @@
+package com.huimv.admin.device.dao.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Data
+@Table(name = "sys_camera_area")
+@Accessors(chain = true)
+public class SysCameraAreaEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false)
+    private Integer id;
+
+    /**
+     * 区域(单元)名称
+     */
+    @Column(name = "area_name")
+    private String areaName;
+
+    /**
+     * 不用管
+     */
+    @Column(name = "remark")
+    private String remark;
+
+    @Column(name = "farm_id", nullable = false)
+    private Integer farmId;
+
+    @Column(name = "public_url", nullable = false)
+    private String publicUrl;
+
+}

+ 15 - 0
huimv-farm-admin/src/main/java/com/huimv/admin/device/dao/repo/SysCameraAreaEntityRepo.java

@@ -0,0 +1,15 @@
+package com.huimv.admin.device.dao.repo;
+
+import com.huimv.admin.device.dao.entity.SysCameraAreaEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.List;
+
+public interface SysCameraAreaEntityRepo extends JpaRepository<SysCameraAreaEntity, Integer>, JpaSpecificationExecutor<SysCameraAreaEntity> {
+
+    //
+    @Query(nativeQuery = true,value = "SELECT * FROM sys_camera_area WHERE farm_id=?1")
+    SysCameraAreaEntity getCameraIP(Integer farmId);
+}

+ 0 - 1
huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/controller/EnvironController.java

@@ -33,7 +33,6 @@ public class EnvironController {
      */
     @RequestMapping(value = "/getLastEnviron",method = RequestMethod.GET)
     public Result getLastEnviron(@RequestParam(value = "farmId",required = true) Integer farmId){
-        System.out.println("-------------------------------------------------------");
         //
         return environ.getLastEnviron(farmId);
     }

+ 0 - 1
huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/service/impl/EnvironImpl.java

@@ -52,7 +52,6 @@ public class EnvironImpl implements IEnviron {
         System.out.println("optional.isPresent()>>"+optional.isPresent());
         if(optional.isPresent()){
             EnvHourEntity envHourEntity = optional.get();
-            System.out.println("envHourEntity>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+envHourEntity.toString());
             return new Result(ResultCode.SUCCESS,envHourEntity);
 //            return new Result(ResultCode.SUCCESS,JSON.toJSON(envHourEntity).toString());
         }else{

+ 1 - 1
huimv-farm-receiver/src/main/java/com/huimv/receiver/cloud/controller/EnvironController.java

@@ -36,7 +36,7 @@ public class EnvironController {
 
     //接收分钟环保数据
     @RequestMapping(value = "/putMinuteEnviron",method = RequestMethod.POST)
-    public void putMinuteEnviron(@RequestParam(value = "data",required = true) String data){
+    public void putMinuteEnviron(@RequestParam(value = "data",required = true) String data) throws ParseException {
         System.out.println("接收并处理分钟环保数据:"+data);
         //
         environ.handleMinuteJSONObject(data);

+ 108 - 0
huimv-farm-receiver/src/main/java/com/huimv/receiver/cloud/dao/entity/SysThresholdEntity.java

@@ -0,0 +1,108 @@
+package com.huimv.receiver.cloud.dao.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Entity
+@Data
+@Table(name = "sys_threshold")
+@Accessors(chain = true)
+public class SysThresholdEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @Column(name = "farm_id", nullable = false)
+    private Integer farmId;
+
+    /**
+     * 高温
+     */
+    @Column(name = "max_tem")
+    private String maxTem;
+
+    /**
+     * 低温
+     */
+    @Column(name = "min_tem")
+    private String minTem;
+
+    /**
+     * 高湿度
+     */
+    @Column(name = "max_hum")
+    private String maxHum;
+
+    /**
+     * 低湿度
+     */
+    @Column(name = "min_hum")
+    private String minHum;
+
+    /**
+     * 累计流量
+     */
+    @Column(name = "total_flow")
+    private String totalFlow;
+
+    /**
+     * 化学需氧量
+     */
+    @Column(name = "COD")
+    private String COD;
+
+    /**
+     * 氨氮
+     */
+    @Column(name = "ammonia")
+    private String ammonia;
+
+    /**
+     * 氮
+     */
+    @Column(name = "nitrogen")
+    private String nitrogen;
+
+    /**
+     * 磷
+     */
+    @Column(name = "phosphorus")
+    private String phosphorus;
+
+    /**
+     * PH值
+     */
+    @Column(name = "ph")
+    private String ph;
+
+    /**
+     * 瞬时流量
+     */
+    @Column(name = "flow")
+    private String flow;
+
+    /**
+     * 天气高温
+     */
+    @Column(name = "weather_max_tem")
+    private String weatherMaxTem;
+
+    /**
+     * 天气低温
+     */
+    @Column(name = "weather_min_tem")
+    private String weatherMinTem;
+
+    @Column(name = "bencon_value")
+    private String benconValue;
+
+    @Column(name = "bencon_time")
+    private String benconTime;
+
+}

+ 14 - 0
huimv-farm-receiver/src/main/java/com/huimv/receiver/cloud/dao/repo/SysThresholdEntityRepo.java

@@ -0,0 +1,14 @@
+package com.huimv.receiver.cloud.dao.repo;
+
+import com.huimv.receiver.cloud.dao.entity.SysThresholdEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.Optional;
+
+public interface SysThresholdEntityRepo extends JpaRepository<SysThresholdEntity, Integer>, JpaSpecificationExecutor<SysThresholdEntity> {
+
+    @Query(nativeQuery = true,value ="SELECT * FROM sys_threshold where farm_id=?1")
+    Optional<SysThresholdEntity> findByFarmId(String farmId);
+}

+ 1 - 1
huimv-farm-receiver/src/main/java/com/huimv/receiver/cloud/service/IEnviron.java

@@ -11,5 +11,5 @@ public interface IEnviron {
 
     void countDayAvgEnviron(Integer farmId, String todayDateText) throws ParseException;
 
-    void handleMinuteJSONObject(String data);
+    void handleMinuteJSONObject(String data) throws ParseException;
 }

+ 61 - 2
huimv-farm-receiver/src/main/java/com/huimv/receiver/cloud/service/impl/EnvironImpl.java

@@ -5,11 +5,16 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.huimv.receiver.cloud.dao.entity.EnvDayEntity;
 import com.huimv.receiver.cloud.dao.entity.EnvHourEntity;
+import com.huimv.receiver.cloud.dao.entity.SysThresholdEntity;
 import com.huimv.receiver.cloud.dao.repo.EnvDayRepo;
 import com.huimv.receiver.cloud.dao.repo.EnvHourRepo;
+import com.huimv.receiver.cloud.dao.repo.SysThresholdEntityRepo;
 import com.huimv.receiver.cloud.service.IEnviron;
 import com.huimv.receiver.cloud.service.IWarningInfo;
+import com.huimv.receiver.farm.service.IAlarm;
+import com.huimv.receiver.utils.Const;
 import com.huimv.receiver.utils.DateUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -29,6 +34,7 @@ import java.util.Optional;
  * @Create : 2020-12-25
  **/
 @Service
+@Slf4j
 public class EnvironImpl implements IEnviron {
     @Autowired
     private EnvHourRepo envHourRepo;
@@ -38,6 +44,10 @@ public class EnvironImpl implements IEnviron {
     private IWarningInfo warningInfo;
     @Autowired
     private DateUtil dateUtil;
+    @Autowired
+    private com.huimv.receiver.cloud.dao.repo.SysThresholdEntityRepo thresholdRepo;
+    @Autowired
+    private IAlarm iAlarm;
 
     @Override
     public void handleEnvironJSONArray(String data) {
@@ -200,9 +210,47 @@ public class EnvironImpl implements IEnviron {
     }
 
     @Override
-    public void handleMinuteJSONObject(String data) {
+    public void handleMinuteJSONObject(String data) throws ParseException {
         System.out.println("data>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+data);
-//        JSONObject deviceJo = JSON.parseObject(data);
+        JSONObject environJo = JSON.parseObject(data);
+        System.out.println("environJo="+environJo);
+        String farmId = environJo.getString("farmId");
+        System.out.println("farmId="+farmId);
+        //读取阈值
+        String thresholdData = getThreshold(farmId);
+        if(thresholdData == null) {
+            log.info("阈值记录为空.");
+        }else{
+            JSONObject thresholdJo = JSON.parseObject(thresholdData);
+            System.out.println("阈值="+thresholdJo);
+            //环保氨氮数据>=阈值氨氮数据
+            if(new BigDecimal(environJo.getString("adPj")).compareTo(new BigDecimal(thresholdJo.getString("ammonia"))) > -1){
+                String alarmInfo = "当前氨氮数据为"+environJo.getString("adPj")+"高于或等于阈值"+thresholdJo.getString("ammonia")+".";
+                //报警数据直接入库
+                iAlarm.handleEnvironAlarm(alarmInfo,Const.TYPE_ALARM_AD,farmId);
+            }
+
+            //环保COD数据>=阈值COD数据
+            if(new BigDecimal(environJo.getString("hxxylPj")).compareTo(new BigDecimal(thresholdJo.getString("cOD"))) > -1){
+                String alarmInfo = "当前化学需氧量数据为"+environJo.getString("hxxylPj")+"高于或等于阈值"+thresholdJo.getString("cOD")+".";
+                //报警数据直接入库
+                iAlarm.handleEnvironAlarm(alarmInfo,Const.TYPE_ALARM_COD,farmId);
+            }
+            //环保PH数据>=阈值PH数据
+            if(new BigDecimal(environJo.getString("phPj")).compareTo(new BigDecimal(thresholdJo.getString("ph"))) > -1){
+                String alarmInfo = "当前PH值数据为"+environJo.getString("phPj")+"高于或等于阈值"+thresholdJo.getString("ph")+".";
+                //报警数据直接入库
+                iAlarm.handleEnvironAlarm(alarmInfo,Const.TYPE_ALARM_PH,farmId);
+            }
+            //环保污水浓度数据>=阈值污水浓度数据
+            if(new BigDecimal(environJo.getString("wsPj")).compareTo(new BigDecimal(thresholdJo.getString("flow"))) > -1){
+                String alarmInfo = "当前污水浓度数据为"+environJo.getString("wsPj")+"高于或等于阈值"+thresholdJo.getString("flow")+".";
+                //报警数据直接入库
+                iAlarm.handleEnvironAlarm(alarmInfo,Const.TYPE_ALARM_WS,farmId);
+            }
+        }
+
+
 //        EnvHourEntity envHourEntity = JSON.parseObject(data, EnvHourEntity.class);
 //        envHourRepo.save(envHourEntity);
 
@@ -214,6 +262,17 @@ public class EnvironImpl implements IEnviron {
 //        countDayAvgEnviron2(farmId, todayDateText);
     }
 
+    //读取阈值
+    private String getThreshold(String farmId) {
+        //
+        Optional<SysThresholdEntity> option = thresholdRepo.findByFarmId(farmId);
+        if(option.isPresent()){
+            return JSON.toJSON(option.get()).toString();
+        }else{
+            return null;
+        }
+    }
+
     public void countDayAvgEnviron_old1(Integer farmId, String todayDateText) {
         System.out.println("farmId=" + farmId);
         System.out.println("todayDateText=" + todayDateText);

+ 11 - 0
huimv-farm-receiver/src/main/java/com/huimv/receiver/farm/dao/repo/BaseWarningInfoEntityRepo.java

@@ -0,0 +1,11 @@
+package com.huimv.receiver.farm.dao.repo;
+
+import com.huimv.receiver.farm.dao.entity.BaseWarningInfoEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface BaseWarningInfoEntityRepo extends JpaRepository<BaseWarningInfoEntity, Integer>, JpaSpecificationExecutor<BaseWarningInfoEntity> {
+
+    //sout
+
+}

+ 4 - 0
huimv-farm-receiver/src/main/java/com/huimv/receiver/farm/service/IAlarm.java

@@ -1,5 +1,9 @@
 package com.huimv.receiver.farm.service;
 
+import java.text.ParseException;
+
 public interface IAlarm {
     void handleEnvironAlarm(String alarmInfo);
+
+    void handleEnvironAlarm(String alarmInfo, Integer typeAlarmAd, String farmId) throws ParseException;
 }

+ 17 - 0
huimv-farm-receiver/src/main/java/com/huimv/receiver/farm/service/impl/AlarmImpl.java

@@ -5,11 +5,13 @@ import com.alibaba.fastjson.JSONObject;
 import com.huimv.receiver.farm.dao.entity.BaseWarningInfoEntity;
 import com.huimv.receiver.farm.dao.repo.BaseWarningInfoRepo;
 import com.huimv.receiver.farm.service.IAlarm;
+import com.huimv.receiver.utils.Const;
 import com.huimv.receiver.utils.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.sql.Timestamp;
+import java.text.ParseException;
 import java.util.Date;
 
 /**
@@ -42,4 +44,19 @@ public class AlarmImpl implements IAlarm {
         //
         warningInfoRepo.saveAndFlush(warningInfoEntity);
     }
+
+    @Override
+    public void handleEnvironAlarm(String alarmInfo, Integer typeAlarm,String farmId) throws ParseException {
+        BaseWarningInfoEntity warningInfoEntity  = new BaseWarningInfoEntity();
+        warningInfoEntity.setFarmId(Integer.parseInt(farmId));
+        warningInfoEntity.setAlarmType(typeAlarm);
+        warningInfoEntity.setMsg(alarmInfo);
+        warningInfoEntity.setLevel(Integer.parseInt(Const.INFO_FIRST_LEVEL));
+        warningInfoEntity.setLevelName(Const.INFO_FIRST_LEVEL_ALARM);
+        warningInfoEntity.setWarningName(Const.INFO_ALARM_TYPE_NAME);
+        warningInfoEntity.setWarningTime(new Timestamp(dateUtil.parseDateTimeLong(dateUtil.getTodayText())));
+        warningInfoEntity.setUploadTime(new Timestamp(new Date().getTime()));
+        //
+        warningInfoRepo.saveAndFlush(warningInfoEntity);
+    }
 }

+ 28 - 0
huimv-farm-receiver/src/main/java/com/huimv/receiver/utils/Const.java

@@ -0,0 +1,28 @@
+package com.huimv.receiver.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="三级警报";
+
+    public static final Integer TYPE_ALARM_AD = 17;
+    public static final Integer TYPE_ALARM_COD = 15;
+    public static final Integer TYPE_ALARM_PH = 16;
+    public static final Integer TYPE_ALARM_WS = 18;
+    public static final String INFO_ALARM_TYPE_NAME = "环境监测";
+
+}