소스 검색

新建环保数据推送警告功能。

zhuoning 3 년 전
부모
커밋
259b4d3905
23개의 변경된 파일1343개의 추가작업 그리고 391개의 파일을 삭제
  1. 1 1
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/test/EchoClient.java
  2. 1 1
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/test/EchoClientHandler.java
  3. 1 1
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/test/SocketClient.java
  4. 308 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/EnvDayEntity.java
  5. 34 23
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/EnvHourEntity.java
  6. 35 23
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/EnvMinuteEntity.java
  7. 33 20
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/EnvRealTimeEntity.java
  8. 264 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/SysThresholdEntity.java
  9. 9 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/repo/EnvDayRepo.java
  10. 14 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/repo/SysThresholdRepo.java
  11. 354 305
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/server/EnvironDataHandler.java
  12. 3 5
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/server/EnvironServerHandler.java
  13. 11 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/IEnviron.java
  14. 8 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/IThreshold.java
  15. 10 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/IWarningInfo.java
  16. 159 6
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/impl/EnvironImpl.java
  17. 45 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/impl/ThresholdImpl.java
  18. 31 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/impl/WarningInfoImpl.java
  19. 1 1
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/task/EnvironTask.java
  20. 5 0
      huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/utils/DateUtil.java
  21. 1 1
      huimv-farm-device/huimv-farm-cloud-environ/src/main/resources/application-dev.yml
  22. 5 2
      huimv-farm-device/huimv-farm-cloud-environ/src/main/resources/application.properties
  23. 10 2
      huimv-farm-device/huimv-farm-cloud-environ/src/test/java/com/huimv/environ/server/EnvironDataHandlerTest.java

+ 1 - 1
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/test/EchoClient.java

@@ -1,4 +1,4 @@
-package com.huimv.environ.test;
+package com.huimv.environ.client.test;
 
 
 import io.netty.bootstrap.Bootstrap;

+ 1 - 1
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/test/EchoClientHandler.java

@@ -1,4 +1,4 @@
-package com.huimv.environ.test;
+package com.huimv.environ.client.test;
 
 /**
  * @Project : huimv.shiwan

+ 1 - 1
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/test/SocketClient.java

@@ -1,4 +1,4 @@
-package com.huimv.environ.test;
+package com.huimv.environ.client.test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

+ 308 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/EnvDayEntity.java

@@ -0,0 +1,308 @@
+package com.huimv.environ.dao.entity;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "env_day")
+public class EnvDayEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false)
+    private Integer id;
+
+    @Column(name = "qn")
+    private String qn;
+
+    @Column(name = "st")
+    private String st;
+
+    @Column(name = "cn")
+    private String cn;
+
+    @Column(name = "mn")
+    private String mn;
+
+    @Column(name = "datetime")
+    private Timestamp datetime;
+
+    @Column(name = "hxxyl_zx")
+    private String hxxylZx;
+
+    @Column(name = "hxxyl_zd")
+    private String hxxylZd;
+
+    @Column(name = "hxxyl_pj")
+    private String hxxylPj;
+
+    @Column(name = "hxxylzt")
+    private String hxxylzt;
+
+    @Column(name = "ad_zx")
+    private String adZx;
+
+    @Column(name = "ad_zd")
+    private String adZd;
+
+    @Column(name = "ad_pj")
+    private String adPj;
+
+    @Column(name = "adzt")
+    private String adzt;
+
+    @Column(name = "ph_zx")
+    private String phZx;
+
+    @Column(name = "ph_zd")
+    private String phZd;
+
+    @Column(name = "ph_pj")
+    private String phPj;
+
+    @Column(name = "phzt")
+    private String phzt;
+
+    @Column(name = "ws_zx")
+    private String wsZx;
+
+    @Column(name = "ws_zd")
+    private String wsZd;
+
+    @Column(name = "ws_pj")
+    private String wsPj;
+
+    @Column(name = "wszt")
+    private String wszt;
+
+    @Column(name = "add_time")
+    private Timestamp addTime;
+
+    @Column(name = "farm_id")
+    private Integer farmId;
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setQn(String qn) {
+        this.qn = qn;
+    }
+
+    public String getQn() {
+        return qn;
+    }
+
+    public void setSt(String st) {
+        this.st = st;
+    }
+
+    public String getSt() {
+        return st;
+    }
+
+    public void setCn(String cn) {
+        this.cn = cn;
+    }
+
+    public String getCn() {
+        return cn;
+    }
+
+    public void setMn(String mn) {
+        this.mn = mn;
+    }
+
+    public String getMn() {
+        return mn;
+    }
+
+    public void setDatetime(Timestamp datetime) {
+        this.datetime = datetime;
+    }
+
+    public Timestamp getDatetime() {
+        return datetime;
+    }
+
+    public void setHxxylZx(String hxxylZx) {
+        this.hxxylZx = hxxylZx;
+    }
+
+    public String getHxxylZx() {
+        return hxxylZx;
+    }
+
+    public void setHxxylZd(String hxxylZd) {
+        this.hxxylZd = hxxylZd;
+    }
+
+    public String getHxxylZd() {
+        return hxxylZd;
+    }
+
+    public void setHxxylPj(String hxxylPj) {
+        this.hxxylPj = hxxylPj;
+    }
+
+    public String getHxxylPj() {
+        return hxxylPj;
+    }
+
+    public void setHxxylzt(String hxxylzt) {
+        this.hxxylzt = hxxylzt;
+    }
+
+    public String getHxxylzt() {
+        return hxxylzt;
+    }
+
+    public void setAdZx(String adZx) {
+        this.adZx = adZx;
+    }
+
+    public String getAdZx() {
+        return adZx;
+    }
+
+    public void setAdZd(String adZd) {
+        this.adZd = adZd;
+    }
+
+    public String getAdZd() {
+        return adZd;
+    }
+
+    public void setAdPj(String adPj) {
+        this.adPj = adPj;
+    }
+
+    public String getAdPj() {
+        return adPj;
+    }
+
+    public void setAdzt(String adzt) {
+        this.adzt = adzt;
+    }
+
+    public String getAdzt() {
+        return adzt;
+    }
+
+    public void setPhZx(String phZx) {
+        this.phZx = phZx;
+    }
+
+    public String getPhZx() {
+        return phZx;
+    }
+
+    public void setPhZd(String phZd) {
+        this.phZd = phZd;
+    }
+
+    public String getPhZd() {
+        return phZd;
+    }
+
+    public void setPhPj(String phPj) {
+        this.phPj = phPj;
+    }
+
+    public String getPhPj() {
+        return phPj;
+    }
+
+    public void setPhzt(String phzt) {
+        this.phzt = phzt;
+    }
+
+    public String getPhzt() {
+        return phzt;
+    }
+
+    public void setWsZx(String wsZx) {
+        this.wsZx = wsZx;
+    }
+
+    public String getWsZx() {
+        return wsZx;
+    }
+
+    public void setWsZd(String wsZd) {
+        this.wsZd = wsZd;
+    }
+
+    public String getWsZd() {
+        return wsZd;
+    }
+
+    public void setWsPj(String wsPj) {
+        this.wsPj = wsPj;
+    }
+
+    public String getWsPj() {
+        return wsPj;
+    }
+
+    public void setWszt(String wszt) {
+        this.wszt = wszt;
+    }
+
+    public String getWszt() {
+        return wszt;
+    }
+
+    public void setAddTime(Timestamp addTime) {
+        this.addTime = addTime;
+    }
+
+    public Timestamp getAddTime() {
+        return addTime;
+    }
+
+    public void setFarmId(Integer farmId) {
+        this.farmId = farmId;
+    }
+
+    public Integer getFarmId() {
+        return farmId;
+    }
+
+    @Override
+    public String toString() {
+        return "EnvDayEntity{" +
+                "id=" + id + '\'' +
+                "qn=" + qn + '\'' +
+                "st=" + st + '\'' +
+                "cn=" + cn + '\'' +
+                "mn=" + mn + '\'' +
+                "datetime=" + datetime + '\'' +
+                "hxxylZx=" + hxxylZx + '\'' +
+                "hxxylZd=" + hxxylZd + '\'' +
+                "hxxylPj=" + hxxylPj + '\'' +
+                "hxxylzt=" + hxxylzt + '\'' +
+                "adZx=" + adZx + '\'' +
+                "adZd=" + adZd + '\'' +
+                "adPj=" + adPj + '\'' +
+                "adzt=" + adzt + '\'' +
+                "phZx=" + phZx + '\'' +
+                "phZd=" + phZd + '\'' +
+                "phPj=" + phPj + '\'' +
+                "phzt=" + phzt + '\'' +
+                "wsZx=" + wsZx + '\'' +
+                "wsZd=" + wsZd + '\'' +
+                "wsPj=" + wsPj + '\'' +
+                "wszt=" + wszt + '\'' +
+                "addTime=" + addTime + '\'' +
+                "farmId=" + farmId + '\'' +
+                '}';
+    }
+}

+ 34 - 23
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/EnvHourEntity.java

@@ -81,6 +81,16 @@ public class EnvHourEntity implements Serializable {
     @Column(name = "add_time")
     private Timestamp addTime;
 
+    @Column(name = "farm_id")
+    private Integer farmId;
+
+    public Integer getFarmId() {
+        return farmId;
+    }
+
+    public void setFarmId(Integer farmId) {
+        this.farmId = farmId;
+    }
     public void setId(Integer id) {
         this.id = id;
     }
@@ -268,29 +278,30 @@ public class EnvHourEntity implements Serializable {
     @Override
     public String toString() {
         return "EnvHourEntity{" +
-                "id=" + id + '\'' +
-                "qn=" + qn + '\'' +
-                "st=" + st + '\'' +
-                "cn=" + cn + '\'' +
-                "mn=" + mn + '\'' +
-                "datetime=" + datetime + '\'' +
-                "hxxylZx=" + hxxylZx + '\'' +
-                "hxxylZd=" + hxxylZd + '\'' +
-                "hxxylPj=" + hxxylPj + '\'' +
-                "hxxylzt=" + hxxylzt + '\'' +
-                "adZx=" + adZx + '\'' +
-                "adZd=" + adZd + '\'' +
-                "adPj=" + adPj + '\'' +
-                "adzt=" + adzt + '\'' +
-                "phZx=" + phZx + '\'' +
-                "phZd=" + phZd + '\'' +
-                "phPj=" + phPj + '\'' +
-                "phzt=" + phzt + '\'' +
-                "wsZx=" + wsZx + '\'' +
-                "wsZd=" + wsZd + '\'' +
-                "wsPj=" + wsPj + '\'' +
-                "wszt=" + wszt + '\'' +
-                "addTime=" + addTime + '\'' +
+                "id=" + id +
+                ", qn='" + qn + '\'' +
+                ", st='" + st + '\'' +
+                ", cn='" + cn + '\'' +
+                ", mn='" + mn + '\'' +
+                ", datetime=" + datetime +
+                ", hxxylZx='" + hxxylZx + '\'' +
+                ", hxxylZd='" + hxxylZd + '\'' +
+                ", hxxylPj='" + hxxylPj + '\'' +
+                ", hxxylzt='" + hxxylzt + '\'' +
+                ", adZx='" + adZx + '\'' +
+                ", adZd='" + adZd + '\'' +
+                ", adPj='" + adPj + '\'' +
+                ", adzt='" + adzt + '\'' +
+                ", phZx='" + phZx + '\'' +
+                ", phZd='" + phZd + '\'' +
+                ", phPj='" + phPj + '\'' +
+                ", phzt='" + phzt + '\'' +
+                ", wsZx='" + wsZx + '\'' +
+                ", wsZd='" + wsZd + '\'' +
+                ", wsPj='" + wsPj + '\'' +
+                ", wszt='" + wszt + '\'' +
+                ", addTime=" + addTime +
+                ", farmId='" + farmId + '\'' +
                 '}';
     }
 }

+ 35 - 23
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/EnvMinuteEntity.java

@@ -81,6 +81,17 @@ public class EnvMinuteEntity implements Serializable {
     @Column(name = "add_time")
     private Timestamp addTime;
 
+    @Column(name = "farm_id")
+    private Integer farmId;
+
+    public Integer getFarmId() {
+        return farmId;
+    }
+
+    public void setFarmId(Integer farmId) {
+        this.farmId = farmId;
+    }
+
     public void setId(Integer id) {
         this.id = id;
     }
@@ -268,29 +279,30 @@ public class EnvMinuteEntity implements Serializable {
     @Override
     public String toString() {
         return "EnvMinuteEntity{" +
-                "id=" + id + '\'' +
-                "qn=" + qn + '\'' +
-                "st=" + st + '\'' +
-                "cn=" + cn + '\'' +
-                "mn=" + mn + '\'' +
-                "datetime=" + datetime + '\'' +
-                "hxxylZx=" + hxxylZx + '\'' +
-                "hxxylZd=" + hxxylZd + '\'' +
-                "hxxylPj=" + hxxylPj + '\'' +
-                "hxxylzt=" + hxxylzt + '\'' +
-                "adZx=" + adZx + '\'' +
-                "adZd=" + adZd + '\'' +
-                "adPj=" + adPj + '\'' +
-                "adzt=" + adzt + '\'' +
-                "phZx=" + phZx + '\'' +
-                "phZd=" + phZd + '\'' +
-                "phPj=" + phPj + '\'' +
-                "phzt=" + phzt + '\'' +
-                "wsZx=" + wsZx + '\'' +
-                "wsZd=" + wsZd + '\'' +
-                "wsPj=" + wsPj + '\'' +
-                "wszt=" + wszt + '\'' +
-                "addTime=" + addTime + '\'' +
+                "id=" + id +
+                ", qn='" + qn + '\'' +
+                ", st='" + st + '\'' +
+                ", cn='" + cn + '\'' +
+                ", mn='" + mn + '\'' +
+                ", datetime=" + datetime +
+                ", hxxylZx='" + hxxylZx + '\'' +
+                ", hxxylZd='" + hxxylZd + '\'' +
+                ", hxxylPj='" + hxxylPj + '\'' +
+                ", hxxylzt='" + hxxylzt + '\'' +
+                ", adZx='" + adZx + '\'' +
+                ", adZd='" + adZd + '\'' +
+                ", adPj='" + adPj + '\'' +
+                ", adzt='" + adzt + '\'' +
+                ", phZx='" + phZx + '\'' +
+                ", phZd='" + phZd + '\'' +
+                ", phPj='" + phPj + '\'' +
+                ", phzt='" + phzt + '\'' +
+                ", wsZx='" + wsZx + '\'' +
+                ", wsZd='" + wsZd + '\'' +
+                ", wsPj='" + wsPj + '\'' +
+                ", wszt='" + wszt + '\'' +
+                ", addTime=" + addTime +
+                ", farmId='" + farmId + '\'' +
                 '}';
     }
 }

+ 33 - 20
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/EnvRealTimeEntity.java

@@ -57,6 +57,39 @@ public class EnvRealTimeEntity implements Serializable {
     @Column(name = "add_time")
     private Timestamp addTime;
 
+    @Column(name = "farm_id")
+    private Integer farmId;
+
+    @Override
+    public String toString() {
+        return "EnvRealTimeEntity{" +
+                "id=" + id +
+                ", qn='" + qn + '\'' +
+                ", st='" + st + '\'' +
+                ", cn='" + cn + '\'' +
+                ", mn='" + mn + '\'' +
+                ", datetime=" + datetime +
+                ", hxxyl='" + hxxyl + '\'' +
+                ", hxxylzt='" + hxxylzt + '\'' +
+                ", ad='" + ad + '\'' +
+                ", adzt='" + adzt + '\'' +
+                ", ph='" + ph + '\'' +
+                ", phzt='" + phzt + '\'' +
+                ", ws='" + ws + '\'' +
+                ", wszt='" + wszt + '\'' +
+                ", addTime=" + addTime +
+                ", farmId='" + farmId + '\'' +
+                '}';
+    }
+
+    public Integer getFarmId() {
+        return farmId;
+    }
+
+    public void setFarmId(Integer farmId) {
+        this.farmId = farmId;
+    }
+
     public void setId(Integer id) {
         this.id = id;
     }
@@ -177,24 +210,4 @@ public class EnvRealTimeEntity implements Serializable {
         return addTime;
     }
 
-    @Override
-    public String toString() {
-        return "EnvRealTimeEntity{" +
-                "id=" + id + '\'' +
-                "qn=" + qn + '\'' +
-                "st=" + st + '\'' +
-                "cn=" + cn + '\'' +
-                "mn=" + mn + '\'' +
-                "datetime=" + datetime + '\'' +
-                "hxxyl=" + hxxyl + '\'' +
-                "hxxylzt=" + hxxylzt + '\'' +
-                "ad=" + ad + '\'' +
-                "adzt=" + adzt + '\'' +
-                "ph=" + ph + '\'' +
-                "phzt=" + phzt + '\'' +
-                "ws=" + ws + '\'' +
-                "wszt=" + wszt + '\'' +
-                "addTime=" + addTime + '\'' +
-                '}';
-    }
 }

+ 264 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/entity/SysThresholdEntity.java

@@ -0,0 +1,264 @@
+package com.huimv.environ.dao.entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "sys_threshold")
+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;
+
+    public void setFarmId(Integer farmId) {
+        this.farmId = farmId;
+    }
+
+    public Integer getFarmId() {
+        return farmId;
+    }
+
+    /**
+     * 高温
+     */
+    public void setMaxTem(String maxTem) {
+        this.maxTem = maxTem;
+    }
+
+    /**
+     * 高温
+     */
+    public String getMaxTem() {
+        return maxTem;
+    }
+
+    /**
+     * 低温
+     */
+    public void setMinTem(String minTem) {
+        this.minTem = minTem;
+    }
+
+    /**
+     * 低温
+     */
+    public String getMinTem() {
+        return minTem;
+    }
+
+    /**
+     * 高湿度
+     */
+    public void setMaxHum(String maxHum) {
+        this.maxHum = maxHum;
+    }
+
+    /**
+     * 高湿度
+     */
+    public String getMaxHum() {
+        return maxHum;
+    }
+
+    /**
+     * 低湿度
+     */
+    public void setMinHum(String minHum) {
+        this.minHum = minHum;
+    }
+
+    /**
+     * 低湿度
+     */
+    public String getMinHum() {
+        return minHum;
+    }
+
+    /**
+     * 累计流量
+     */
+    public void setTotalFlow(String totalFlow) {
+        this.totalFlow = totalFlow;
+    }
+
+    /**
+     * 累计流量
+     */
+    public String getTotalFlow() {
+        return totalFlow;
+    }
+
+    /**
+     * 化学需氧量
+     */
+    public void setCOD(String COD) {
+        this.COD = COD;
+    }
+
+    /**
+     * 化学需氧量
+     */
+    public String getCOD() {
+        return COD;
+    }
+
+    /**
+     * 氨氮
+     */
+    public void setAmmonia(String ammonia) {
+        this.ammonia = ammonia;
+    }
+
+    /**
+     * 氨氮
+     */
+    public String getAmmonia() {
+        return ammonia;
+    }
+
+    /**
+     * 氮
+     */
+    public void setNitrogen(String nitrogen) {
+        this.nitrogen = nitrogen;
+    }
+
+    /**
+     * 氮
+     */
+    public String getNitrogen() {
+        return nitrogen;
+    }
+
+    /**
+     * 磷
+     */
+    public void setPhosphorus(String phosphorus) {
+        this.phosphorus = phosphorus;
+    }
+
+    /**
+     * 磷
+     */
+    public String getPhosphorus() {
+        return phosphorus;
+    }
+
+    /**
+     * PH值
+     */
+    public void setPh(String ph) {
+        this.ph = ph;
+    }
+
+    /**
+     * PH值
+     */
+    public String getPh() {
+        return ph;
+    }
+
+    /**
+     * 瞬时流量
+     */
+    public void setFlow(String flow) {
+        this.flow = flow;
+    }
+
+    /**
+     * 瞬时流量
+     */
+    public String getFlow() {
+        return flow;
+    }
+
+    @Override
+    public String toString() {
+        return "SysThresholdEntity{" +
+                "farmId=" + farmId + '\'' +
+                "maxTem=" + maxTem + '\'' +
+                "minTem=" + minTem + '\'' +
+                "maxHum=" + maxHum + '\'' +
+                "minHum=" + minHum + '\'' +
+                "totalFlow=" + totalFlow + '\'' +
+                "COD=" + COD + '\'' +
+                "ammonia=" + ammonia + '\'' +
+                "nitrogen=" + nitrogen + '\'' +
+                "phosphorus=" + phosphorus + '\'' +
+                "ph=" + ph + '\'' +
+                "flow=" + flow + '\'' +
+                '}';
+    }
+}

+ 9 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/repo/EnvDayRepo.java

@@ -0,0 +1,9 @@
+package com.huimv.environ.dao.repo;
+
+import com.huimv.environ.dao.entity.EnvDayEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface EnvDayRepo extends JpaRepository<EnvDayEntity, Integer>, JpaSpecificationExecutor<EnvDayEntity> {
+
+}

+ 14 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/dao/repo/SysThresholdRepo.java

@@ -0,0 +1,14 @@
+package com.huimv.environ.dao.repo;
+
+import com.huimv.environ.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 SysThresholdRepo extends JpaRepository<SysThresholdEntity, Integer>, JpaSpecificationExecutor<SysThresholdEntity> {
+
+    @Query(nativeQuery = true,value ="SELECT * FROM sys_threshold where farm_id=?1")
+    Optional<SysThresholdEntity> findByFarmId(Integer farmId);
+}

+ 354 - 305
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/server/EnvironDataHandler.java

@@ -1,5 +1,7 @@
 package com.huimv.environ.server;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.huimv.environ.dao.entity.EnvHourEntity;
 import com.huimv.environ.dao.entity.EnvMinuteEntity;
 import com.huimv.environ.dao.entity.EnvRealTimeEntity;
@@ -8,11 +10,14 @@ import com.huimv.environ.dao.repo.EnvHourRepo;
 import com.huimv.environ.dao.repo.EnvMinuteRepo;
 import com.huimv.environ.dao.repo.EnvRealTimeRepo;
 import com.huimv.environ.dao.repo.EnvironmentDataRepo;
+import com.huimv.environ.service.IEnviron;
 import com.huimv.environ.utils.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.sql.Timestamp;
 import java.text.ParseException;
 import java.util.Date;
@@ -37,10 +42,15 @@ public class EnvironDataHandler {
     private EnvRealTimeRepo envRealTimeRepo;
     @Autowired
     private DateUtil dateUtil;
+    @Autowired
+    private IEnviron environ;
+    @Value("${local.farmID}")
+    private Integer farmID;
 
     public void handleReceiveData1(String receiveData){
         System.out.println("test");
     }
+
     //
     public void handleReceiveData(String receiveData) throws ParseException {
 
@@ -61,315 +71,32 @@ public class EnvironDataHandler {
                     if(cn.trim().equalsIgnoreCase("2011"))
                     {
                         //实时采样数据
-                        System.out.println(dateUtil.getTodayText()+" -->当前处理实时采集数据.");
-                        EnvRealTimeEntity envRealTimeEntity = new EnvRealTimeEntity();
-                        envRealTimeEntity.setSt(st);
-                        envRealTimeEntity.setCn(cn);
-                        //qn
-                        String qnText = receiveDataArray[0];
-                        String qn = qnText.substring(qnText.indexOf("QN=")+3,qnText.length());
-                        envRealTimeEntity.setQn(qn);
-                        //mn
-                        String mnText = receiveDataArray[4];
-                        String mn = mnText.substring(mnText.indexOf("MN=")+3,mnText.length());
-                        envRealTimeEntity.setMn(mn);
-                        //flag
-//                        String flagText = receiveDataArray[5];
-//                        String flag = flagText.substring(flagText.indexOf("Flag=")+5,flagText.length());
-                        //datetime
-                        String datetimeText = receiveDataArray[6];
-                        String datetime = datetimeText.substring(datetimeText.indexOf("DataTime=")+9,datetimeText.length());
-                        envRealTimeEntity.setDatetime(new Timestamp(dateUtil.parseDateTimeLong(dateUtil.rebuildDateTime(datetime))));
-                        //w01018
-                        String w01018Text = receiveDataArray[7];
-                        String[] w01018TextArray = w01018Text.split(",");
-                        //value1
-                        String  w01018TextData = w01018TextArray[0];
-                        String[] w01018TextDataArray = w01018TextData.split("=");
-                        String value1 = w01018TextDataArray[1];
-                        envRealTimeEntity.setHxxyl(value1);
-                        //flag1
-                        String  w01018TextFlag = w01018TextArray[1];
-                        String[] w01018TextFlagArray = w01018TextFlag.split("=");
-                        String state1 = w01018TextFlagArray[1];
-                        envRealTimeEntity.setHxxylzt(state1);
-                        //w21003
-                        String w21003Text = receiveDataArray[8];
-                        String[] w21003TextArray = w21003Text.split(",");
-                        //value
-                        String  w21003TextData = w21003TextArray[0];
-                        String[] w21003TextDataArray = w21003TextData.split("=");
-                        String value2 = w21003TextDataArray[1];
-                        envRealTimeEntity.setAd(value2);
-                        //flag
-                        String  w21003TextFlag = w21003TextArray[1];
-                        String[] w21003TextFlagArray = w21003TextFlag.split("=");
-                        String state2 = w21003TextFlagArray[1];
-                        envRealTimeEntity.setAdzt(state2);
-                        //w01001
-                        String w01001Text = receiveDataArray[9];
-                        String[] w01001TextArray = w01001Text.split(",");
-                        //value
-                        String  w01001TextData = w01001TextArray[0];
-                        String[] w01001TextDataArray = w01001TextData.split("=");
-                        String value3 = w01001TextDataArray[1];
-                        envRealTimeEntity.setPh(value3);
-                        //flag
-                        String  w01001TextFlag = w01001TextArray[1];
-                        String[] w01001TextFlagArray = w01001TextFlag.split("=");
-                        String state3 = w01001TextFlagArray[1];
-                        envRealTimeEntity.setPhzt(state3);
-                        //w00000
-                        String w00000Text = receiveDataArray[10];
-                        String[] w00000TextArray = w00000Text.split(",");
-                        //value
-                        String  w00000TextData = w00000TextArray[0];
-                        String[] w00000TextDataArray = w00000TextData.split("=");
-                        String value4 = w00000TextDataArray[1];
-                        envRealTimeEntity.setWs(value4);
-                        //flag
-                        String  w00000TextFlag = w00000TextArray[1];
-                        String[] w00000TextFlagArray = w00000TextFlag.split("=");
-                        String state4 = w00000TextFlagArray[1];
-                        state4 = state4.substring(0,1);
-                        envRealTimeEntity.setWszt(state4);
-                        //add_time
-                        envRealTimeEntity.setAddTime(new Timestamp(new Date().getTime()));
-                        envRealTimeRepo.save(envRealTimeEntity);
+                        System.out.println(">>>>"+dateUtil.getTodayMissionText()+" -->当前处理实时采集数据.");
+
+                        //保存实时环保数据
+                        EnvRealTimeEntity envRealTimeEntity = handleRealTimeEnviron(farmID,st,cn,receiveDataArray);
+
+                        //发送实时数据到数据中心
+                        environ.sendRealTimeEnviron(JSON.toJSON(envRealTimeEntity).toString());
                     }else  if(cn.trim().equalsIgnoreCase("2051")){
                         //分钟采样数据
-                        System.out.println(dateUtil.getTodayText()+" -->当前处理分钟采集数据.");
-                        EnvMinuteEntity envMinuteEntity = new EnvMinuteEntity();
-                        envMinuteEntity.setSt(st);
-                        envMinuteEntity.setCn(cn);
-                        //qn
-                        String qnText = receiveDataArray[0];
-                        String qn = qnText.substring(qnText.indexOf("QN=")+3,qnText.length());
-                        envMinuteEntity.setQn(qn);
-                        //mn
-                        String mnText = receiveDataArray[4];
-                        String mn = mnText.substring(mnText.indexOf("MN=")+3,mnText.length());
-                        envMinuteEntity.setMn(mn);
-                        //flag
-//                        String flagText = receiveDataArray[5];
-//                        String flag = flagText.substring(flagText.indexOf("Flag=")+5,flagText.length());
-                        //datetime
-                        String datetimeText = receiveDataArray[6];
-                        String datetime = datetimeText.substring(datetimeText.indexOf("DataTime=")+9,datetimeText.length());
-                        envMinuteEntity.setDatetime(new Timestamp(dateUtil.parseDateTimeLong(dateUtil.rebuildDateTime(datetime))));
-                        //w01018
-                        String w01018Text = receiveDataArray[7];
-                        String[] w01018TextArray = w01018Text.split(",");
-                        //valueMin1
-                        String  w01018TextMin = w01018TextArray[0];
-                        String[] w01018TextMinArray = w01018TextMin.split("=");
-                        String valueMin1 = w01018TextMinArray[1];
-                        envMinuteEntity.setHxxylZx(valueMin1);
-                        //valueMin2
-                        String  w01018TextMax = w01018TextArray[1];
-                        String[] w01018TextMaxArray = w01018TextMax.split("=");
-                        String valueMax1 = w01018TextMaxArray[1];
-                        envMinuteEntity.setHxxylZd(valueMax1);
-                        //valueAvg1
-                        String  w01018TextAvg = w01018TextArray[2];
-                        String[] w01018TextAvgArray = w01018TextAvg.split("=");
-                        String valueAvg1 = w01018TextAvgArray[1];
-                        envMinuteEntity.setHxxylPj(valueAvg1);
-                        //flag1
-                        String  w01018TextFlag = w01018TextArray[4];
-                        String[] w01018TextFlagArray = w01018TextFlag.split("=");
-                        String state1 = w01018TextFlagArray[1];
-                        envMinuteEntity.setHxxylzt(state1);
-                        //w21003
-                        String w21003Text = receiveDataArray[8];
-                        String[] w21003TextArray = w21003Text.split(",");
-                        //valueMin2
-                        String  w21003TextMin = w21003TextArray[0];
-                        String[] w21003TextMinArray = w21003TextMin.split("=");
-                        String valueMin2 = w21003TextMinArray[1];
-                        envMinuteEntity.setAdZx(valueMin2);
-                        //valueMax2
-                        String  w21003TextMax = w21003TextArray[1];
-                        String[] w21003TextMaxArray = w21003TextMax.split("=");
-                        String valueMax2 = w21003TextMaxArray[1];
-                        envMinuteEntity.setAdZd(valueMax2);
-                        //valueAvg2
-                        String  w21003TextAvg = w21003TextArray[2];
-                        String[] w21003TextAvgArray = w21003TextAvg.split("=");
-                        String valueAvg2 = w21003TextAvgArray[1];
-                        envMinuteEntity.setAdPj(valueAvg2);
-                        //flag4
-                        String  w21003TextFlag = w21003TextArray[4];
-                        String[] w21003TextFlagArray = w21003TextFlag.split("=");
-                        String state2 = w21003TextFlagArray[1];
-                        envMinuteEntity.setAdzt(state2);
-                        //w01001
-                        String w01001Text = receiveDataArray[9];
-                        String[] w01001TextArray = w01001Text.split(",");
-                        //valueMin3
-                        String  w01001TextMin = w01001TextArray[0];
-                        String[] w01001TextMinArray = w01001TextMin.split("=");
-                        String valueMin3 = w01001TextMinArray[1];
-                        envMinuteEntity.setPhZx(valueMin3);
-                        //valueMax3
-                        String  w01001TextMax = w01001TextArray[1];
-                        String[] w01001TextMaxArray = w01001TextMax.split("=");
-                        String valueMax3 = w01001TextMaxArray[1];
-                        envMinuteEntity.setPhZd(valueMax3);
-                        //valueAvg3
-                        String  w01001TextAvg = w01001TextArray[2];
-                        String[] w01001TextAvgArray = w01001TextAvg.split("=");
-                        String valueAvg3 = w01001TextAvgArray[1];
-                        envMinuteEntity.setPhPj(valueAvg3);
-                        //flag3
-                        String  w01001TextFlag = w01001TextArray[3];
-                        String[] w01001TextFlagArray = w01001TextFlag.split("=");
-                        String state3 = w01001TextFlagArray[1];
-                        envMinuteEntity.setPhzt(state3);
-                        //w00000
-                        String w00000Text = receiveDataArray[10];
-                        String[] w00000TextArray = w00000Text.split(",");
-                        //valueMin4
-                        String  w00000TextMin = w00000TextArray[0];
-                        String[] w00000TextMinArray = w00000TextMin.split("=");
-                        String valueMin4 = w00000TextMinArray[1];
-                        envMinuteEntity.setWsZx(valueMin4);
-                        //valueMax4
-                        String  w00000TextMax = w00000TextArray[1];
-                        String[] w00000TextMaxArray = w00000TextMax.split("=");
-                        String valueMax4 = w00000TextMaxArray[1];
-                        envMinuteEntity.setWsZd(valueMax4);
-                        //valueAvg4
-                        String  w00000TextAvg = w00000TextArray[2];
-                        String[] w00000TextAvgArray = w00000TextAvg.split("=");
-                        String valueAvg4 = w00000TextAvgArray[1];
-                        envMinuteEntity.setWsPj(valueAvg4);
-                        //flag4
-                        String  w00000TextFlag = w00000TextArray[4];
-                        String[] w00000TextFlagArray = w00000TextFlag.split("=");
-                        String state4 = w00000TextFlagArray[1];
-                        state4 = state4.substring(0,1);
-                        envMinuteEntity.setWszt(state4);
-                        //add_time
-                        envMinuteEntity.setAddTime(new Timestamp(new Date().getTime()));
-                        EnvMinuteEntity addResult = envMinuteRepo.save(envMinuteEntity);
+                        System.out.println(">>>>"+dateUtil.getTodayMissionText()+" -->当前处理分钟采集数据.");
+                        //保存分钟环保数据
+                        EnvMinuteEntity envMinuteEntity = handleMinuteEnviron(farmID,st,cn,receiveDataArray);
+
+                        //发送分钟测试数据(测试)
+//                        environ.sendHourEnviron(JSON.toJSON(envMinuteEntity).toString());
+                        //处理分钟环保数据报警
+                        environ.handleEnvironWarningInfo(JSON.toJSON(envMinuteEntity).toString());
                     }else  if(cn.trim().equalsIgnoreCase("2061")){
                         //小时采样数据
-                        System.out.println(dateUtil.getTodayText()+" -->当前处理小时采集数据.");
-                        EnvHourEntity envHourEntity = new EnvHourEntity();
-                        envHourEntity.setSt(st);
-                        envHourEntity.setCn(cn);
-                        //qn
-                        String qnText = receiveDataArray[0];
-                        String qn = qnText.substring(qnText.indexOf("QN=")+3,qnText.length());
-                        envHourEntity.setQn(qn);
-                        //mn
-                        String mnText = receiveDataArray[4];
-                        String mn = mnText.substring(mnText.indexOf("MN=")+3,mnText.length());
-                        envHourEntity.setMn(mn);
-                        //flag
-//                        String flagText = receiveDataArray[5];
-//                        String flag = flagText.substring(flagText.indexOf("Flag=")+5,flagText.length());
-                        //datetime
-                        String datetimeText = receiveDataArray[6];
-                        String datetime = datetimeText.substring(datetimeText.indexOf("DataTime=")+9,datetimeText.length());
-                        envHourEntity.setDatetime(new Timestamp(dateUtil.parseDateTimeLong(dateUtil.rebuildDateTime(datetime))));
-                        //w01018
-                        String w01018Text = receiveDataArray[7];
-                        String[] w01018TextArray = w01018Text.split(",");
-                        //valueMin1
-                        String  w01018TextMin = w01018TextArray[0];
-                        String[] w01018TextMinArray = w01018TextMin.split("=");
-                        String valueMin1 = w01018TextMinArray[1];
-                        envHourEntity.setHxxylZx(valueMin1);
-                        //valueMin2
-                        String  w01018TextMax = w01018TextArray[1];
-                        String[] w01018TextMaxArray = w01018TextMax.split("=");
-                        String valueMax1 = w01018TextMaxArray[1];
-                        envHourEntity.setHxxylZd(valueMax1);
-                        //valueAvg1
-                        String  w01018TextAvg = w01018TextArray[2];
-                        String[] w01018TextAvgArray = w01018TextAvg.split("=");
-                        String valueAvg1 = w01018TextAvgArray[1];
-                        envHourEntity.setHxxylPj(valueAvg1);
-                        //flag1
-                        String  w01018TextFlag = w01018TextArray[4];
-                        String[] w01018TextFlagArray = w01018TextFlag.split("=");
-                        String state1 = w01018TextFlagArray[1];
-                        envHourEntity.setHxxylzt(state1);
-                        //w21003
-                        String w21003Text = receiveDataArray[8];
-                        String[] w21003TextArray = w21003Text.split(",");
-                        //valueMin2
-                        String  w21003TextMin = w21003TextArray[0];
-                        String[] w21003TextMinArray = w21003TextMin.split("=");
-                        String valueMin2 = w21003TextMinArray[1];
-                        envHourEntity.setAdZx(valueMin2);
-                        //valueMax2
-                        String  w21003TextMax = w21003TextArray[1];
-                        String[] w21003TextMaxArray = w21003TextMax.split("=");
-                        String valueMax2 = w21003TextMaxArray[1];
-                        envHourEntity.setAdZd(valueMax2);
-                        //valueAvg2
-                        String  w21003TextAvg = w21003TextArray[2];
-                        String[] w21003TextAvgArray = w21003TextAvg.split("=");
-                        String valueAvg2 = w21003TextAvgArray[1];
-                        envHourEntity.setAdPj(valueAvg2);
-                        //flag4
-                        String  w21003TextFlag = w21003TextArray[4];
-                        String[] w21003TextFlagArray = w21003TextFlag.split("=");
-                        String state2 = w21003TextFlagArray[1];
-                        envHourEntity.setAdzt(state2);
-                        //w01001
-                        String w01001Text = receiveDataArray[9];
-                        String[] w01001TextArray = w01001Text.split(",");
-                        //valueMin3
-                        String  w01001TextMin = w01001TextArray[0];
-                        String[] w01001TextMinArray = w01001TextMin.split("=");
-                        String valueMin3 = w01001TextMinArray[1];
-                        envHourEntity.setPhZx(valueMin3);
-                        //valueMax3
-                        String  w01001TextMax = w01001TextArray[1];
-                        String[] w01001TextMaxArray = w01001TextMax.split("=");
-                        String valueMax3 = w01001TextMaxArray[1];
-                        envHourEntity.setPhZd(valueMax3);
-                        //valueAvg3
-                        String  w01001TextAvg = w01001TextArray[2];
-                        String[] w01001TextAvgArray = w01001TextAvg.split("=");
-                        String valueAvg3 = w01001TextAvgArray[1];
-                        envHourEntity.setPhPj(valueAvg3);
-                        //flag3
-                        String  w01001TextFlag = w01001TextArray[3];
-                        String[] w01001TextFlagArray = w01001TextFlag.split("=");
-                        String state3 = w01001TextFlagArray[1];
-                        envHourEntity.setPhzt(state3);
-                        //w00000
-                        String w00000Text = receiveDataArray[10];
-                        String[] w00000TextArray = w00000Text.split(",");
-                        //valueMin4
-                        String  w00000TextMin = w00000TextArray[0];
-                        String[] w00000TextMinArray = w00000TextMin.split("=");
-                        String valueMin4 = w00000TextMinArray[1];
-                        envHourEntity.setWsZx(valueMin4);
-                        //valueMax4
-                        String  w00000TextMax = w00000TextArray[1];
-                        String[] w00000TextMaxArray = w00000TextMax.split("=");
-                        String valueMax4 = w00000TextMaxArray[1];
-                        envHourEntity.setWsZd(valueMax4);
-                        //valueAvg4
-                        String  w00000TextAvg = w00000TextArray[2];
-                        String[] w00000TextAvgArray = w00000TextAvg.split("=");
-                        String valueAvg4 = w00000TextAvgArray[1];
-                        envHourEntity.setWsPj(valueAvg4);
-                        //flag4
-                        String  w00000TextFlag = w00000TextArray[4];
-                        String[] w00000TextFlagArray = w00000TextFlag.split("=");
-                        String state4 = w00000TextFlagArray[1];
-                        state4 = state4.substring(0,1);
-                        envHourEntity.setWszt(state4);
-                        //add_time
-                        envHourEntity.setAddTime(new Timestamp(new Date().getTime()));
-                        envHourRepo.save(envHourEntity);
+                        System.out.println(">>>>"+dateUtil.getTodayMissionText()+" -->当前处理小时采集数据.");
+
+                        //保存小时环保数据
+                        EnvHourEntity envHourEntity = handleHourEnviron(farmID,st,cn,receiveDataArray);
+
+                        // 发送小时数据到数据中心
+                        environ.sendHourEnviron(JSON.toJSON(envHourEntity).toString());
                     }else  if(cn.trim().equalsIgnoreCase("2031")){
                         //日采样历史数据
                         System.out.println("日采样历史数据不处理!");
@@ -384,6 +111,328 @@ public class EnvironDataHandler {
         }
     }
 
+    //处理实时环保数据
+    private EnvRealTimeEntity handleRealTimeEnviron(Integer farmID,String st, String cn, String[] receiveDataArray) throws ParseException {
+        EnvRealTimeEntity envRealTimeEntity = new EnvRealTimeEntity();
+        envRealTimeEntity.setFarmId(farmID);
+        envRealTimeEntity.setSt(st);
+        envRealTimeEntity.setCn(cn);
+        //qn
+        String qnText = receiveDataArray[0];
+        String qn = qnText.substring(qnText.indexOf("QN=")+3,qnText.length());
+        envRealTimeEntity.setQn(qn);
+        //mn
+        String mnText = receiveDataArray[4];
+        String mn = mnText.substring(mnText.indexOf("MN=")+3,mnText.length());
+        envRealTimeEntity.setMn(mn);
+        //flag
+//                        String flagText = receiveDataArray[5];
+//                        String flag = flagText.substring(flagText.indexOf("Flag=")+5,flagText.length());
+        //datetime
+        String datetimeText = receiveDataArray[6];
+        String datetime = datetimeText.substring(datetimeText.indexOf("DataTime=")+9,datetimeText.length());
+        envRealTimeEntity.setDatetime(new Timestamp(dateUtil.parseDateTimeLong(dateUtil.rebuildDateTime(datetime))));
+        //w01018
+        String w01018Text = receiveDataArray[7];
+        String[] w01018TextArray = w01018Text.split(",");
+        //value1
+        String  w01018TextData = w01018TextArray[0];
+        String[] w01018TextDataArray = w01018TextData.split("=");
+        String value1 = w01018TextDataArray[1];
+        envRealTimeEntity.setHxxyl(value1);
+        //flag1
+        String  w01018TextFlag = w01018TextArray[1];
+        String[] w01018TextFlagArray = w01018TextFlag.split("=");
+        String state1 = w01018TextFlagArray[1];
+        envRealTimeEntity.setHxxylzt(state1);
+        //w21003
+        String w21003Text = receiveDataArray[8];
+        String[] w21003TextArray = w21003Text.split(",");
+        //value
+        String  w21003TextData = w21003TextArray[0];
+        String[] w21003TextDataArray = w21003TextData.split("=");
+        String value2 = w21003TextDataArray[1];
+        envRealTimeEntity.setAd(value2);
+        //flag
+        String  w21003TextFlag = w21003TextArray[1];
+        String[] w21003TextFlagArray = w21003TextFlag.split("=");
+        String state2 = w21003TextFlagArray[1];
+        envRealTimeEntity.setAdzt(state2);
+        //w01001
+        String w01001Text = receiveDataArray[9];
+        String[] w01001TextArray = w01001Text.split(",");
+        //value
+        String  w01001TextData = w01001TextArray[0];
+        String[] w01001TextDataArray = w01001TextData.split("=");
+        String value3 = w01001TextDataArray[1];
+        envRealTimeEntity.setPh(value3);
+        //flag
+        String  w01001TextFlag = w01001TextArray[1];
+        String[] w01001TextFlagArray = w01001TextFlag.split("=");
+        String state3 = w01001TextFlagArray[1];
+        envRealTimeEntity.setPhzt(state3);
+        //w00000
+        String w00000Text = receiveDataArray[10];
+        String[] w00000TextArray = w00000Text.split(",");
+        //value
+        String  w00000TextData = w00000TextArray[0];
+        String[] w00000TextDataArray = w00000TextData.split("=");
+        String value4 = w00000TextDataArray[1];
+        envRealTimeEntity.setWs(value4);
+        //flag
+        String  w00000TextFlag = w00000TextArray[1];
+        String[] w00000TextFlagArray = w00000TextFlag.split("=");
+        String state4 = w00000TextFlagArray[1];
+        state4 = state4.substring(0,1);
+        envRealTimeEntity.setWszt(state4);
+        //add_time
+        envRealTimeEntity.setAddTime(new Timestamp(new Date().getTime()));
+        //
+        return envRealTimeRepo.save(envRealTimeEntity);
+    }
+
+    //处理小时环保数据
+    private EnvHourEntity handleHourEnviron(Integer farmID,String st, String cn, String[] receiveDataArray) throws ParseException {
+        EnvHourEntity envHourEntity = new EnvHourEntity();
+        envHourEntity.setFarmId(farmID);
+        envHourEntity.setSt(st);
+        envHourEntity.setCn(cn);
+        //qn
+        String qnText = receiveDataArray[0];
+        String qn = qnText.substring(qnText.indexOf("QN=")+3,qnText.length());
+        envHourEntity.setQn(qn);
+        //mn
+        String mnText = receiveDataArray[4];
+        String mn = mnText.substring(mnText.indexOf("MN=")+3,mnText.length());
+        envHourEntity.setMn(mn);
+        //flag
+//                        String flagText = receiveDataArray[5];
+//                        String flag = flagText.substring(flagText.indexOf("Flag=")+5,flagText.length());
+        //datetime
+        String datetimeText = receiveDataArray[6];
+        String datetime = datetimeText.substring(datetimeText.indexOf("DataTime=")+9,datetimeText.length());
+        envHourEntity.setDatetime(new Timestamp(dateUtil.parseDateTimeLong(dateUtil.rebuildDateTime(datetime))));
+        //w01018
+        String w01018Text = receiveDataArray[7];
+        String[] w01018TextArray = w01018Text.split(",");
+        //valueMin1
+        String  w01018TextMin = w01018TextArray[0];
+        String[] w01018TextMinArray = w01018TextMin.split("=");
+        String valueMin1 = w01018TextMinArray[1];
+        envHourEntity.setHxxylZx(valueMin1);
+        //valueMin2
+        String  w01018TextMax = w01018TextArray[1];
+        String[] w01018TextMaxArray = w01018TextMax.split("=");
+        String valueMax1 = w01018TextMaxArray[1];
+        envHourEntity.setHxxylZd(valueMax1);
+        //valueAvg1
+        String  w01018TextAvg = w01018TextArray[2];
+        String[] w01018TextAvgArray = w01018TextAvg.split("=");
+        String valueAvg1 = w01018TextAvgArray[1];
+        envHourEntity.setHxxylPj(valueAvg1);
+        //flag1
+        String  w01018TextFlag = w01018TextArray[4];
+        String[] w01018TextFlagArray = w01018TextFlag.split("=");
+        String state1 = w01018TextFlagArray[1];
+        envHourEntity.setHxxylzt(state1);
+        //w21003
+        String w21003Text = receiveDataArray[8];
+        String[] w21003TextArray = w21003Text.split(",");
+        //valueMin2
+        String  w21003TextMin = w21003TextArray[0];
+        String[] w21003TextMinArray = w21003TextMin.split("=");
+        String valueMin2 = w21003TextMinArray[1];
+        envHourEntity.setAdZx(valueMin2);
+        //valueMax2
+        String  w21003TextMax = w21003TextArray[1];
+        String[] w21003TextMaxArray = w21003TextMax.split("=");
+        String valueMax2 = w21003TextMaxArray[1];
+        envHourEntity.setAdZd(valueMax2);
+        //valueAvg2
+        String  w21003TextAvg = w21003TextArray[2];
+        String[] w21003TextAvgArray = w21003TextAvg.split("=");
+        String valueAvg2 = w21003TextAvgArray[1];
+        envHourEntity.setAdPj(valueAvg2);
+        //flag4
+        String  w21003TextFlag = w21003TextArray[4];
+        String[] w21003TextFlagArray = w21003TextFlag.split("=");
+        String state2 = w21003TextFlagArray[1];
+        envHourEntity.setAdzt(state2);
+        //w01001
+        String w01001Text = receiveDataArray[9];
+        String[] w01001TextArray = w01001Text.split(",");
+        //valueMin3
+        String  w01001TextMin = w01001TextArray[0];
+        String[] w01001TextMinArray = w01001TextMin.split("=");
+        String valueMin3 = w01001TextMinArray[1];
+        envHourEntity.setPhZx(valueMin3);
+        //valueMax3
+        String  w01001TextMax = w01001TextArray[1];
+        String[] w01001TextMaxArray = w01001TextMax.split("=");
+        String valueMax3 = w01001TextMaxArray[1];
+        envHourEntity.setPhZd(valueMax3);
+        //valueAvg3
+        String  w01001TextAvg = w01001TextArray[2];
+        String[] w01001TextAvgArray = w01001TextAvg.split("=");
+        String valueAvg3 = w01001TextAvgArray[1];
+        envHourEntity.setPhPj(valueAvg3);
+        //flag3
+        String  w01001TextFlag = w01001TextArray[3];
+        String[] w01001TextFlagArray = w01001TextFlag.split("=");
+        String state3 = w01001TextFlagArray[1];
+        envHourEntity.setPhzt(state3);
+        //w00000
+        String w00000Text = receiveDataArray[10];
+        String[] w00000TextArray = w00000Text.split(",");
+        //valueMin4
+        String  w00000TextMin = w00000TextArray[0];
+        String[] w00000TextMinArray = w00000TextMin.split("=");
+        String valueMin4 = w00000TextMinArray[1];
+        envHourEntity.setWsZx(valueMin4);
+        //valueMax4
+        String  w00000TextMax = w00000TextArray[1];
+        String[] w00000TextMaxArray = w00000TextMax.split("=");
+        String valueMax4 = w00000TextMaxArray[1];
+        envHourEntity.setWsZd(valueMax4);
+        //valueAvg4
+        String  w00000TextAvg = w00000TextArray[2];
+        String[] w00000TextAvgArray = w00000TextAvg.split("=");
+        String valueAvg4 = w00000TextAvgArray[1];
+        envHourEntity.setWsPj(valueAvg4);
+        //flag4
+        String  w00000TextFlag = w00000TextArray[4];
+        String[] w00000TextFlagArray = w00000TextFlag.split("=");
+        String state4 = w00000TextFlagArray[1];
+        state4 = state4.substring(0,1);
+        envHourEntity.setWszt(state4);
+        //add_time
+        envHourEntity.setAddTime(new Timestamp(new Date().getTime()));
+        //
+        return envHourRepo.save(envHourEntity);
+    }
+
+    //处理分钟环保数据
+    private EnvMinuteEntity handleMinuteEnviron(Integer farmID,String st, String cn, String[] receiveDataArray) throws ParseException {
+        EnvMinuteEntity envMinuteEntity = new EnvMinuteEntity();
+        envMinuteEntity.setFarmId(farmID);
+        envMinuteEntity.setSt(st);
+        envMinuteEntity.setCn(cn);
+        //qn
+        String qnText = receiveDataArray[0];
+        String qn = qnText.substring(qnText.indexOf("QN=")+3,qnText.length());
+        envMinuteEntity.setQn(qn);
+        //mn
+        String mnText = receiveDataArray[4];
+        String mn = mnText.substring(mnText.indexOf("MN=")+3,mnText.length());
+        envMinuteEntity.setMn(mn);
+        //flag
+//                        String flagText = receiveDataArray[5];
+//                        String flag = flagText.substring(flagText.indexOf("Flag=")+5,flagText.length());
+        //datetime
+        String datetimeText = receiveDataArray[6];
+        String datetime = datetimeText.substring(datetimeText.indexOf("DataTime=")+9,datetimeText.length());
+        envMinuteEntity.setDatetime(new Timestamp(dateUtil.parseDateTimeLong(dateUtil.rebuildDateTime(datetime))));
+        //w01018
+        String w01018Text = receiveDataArray[7];
+        String[] w01018TextArray = w01018Text.split(",");
+        //valueMin1
+        String  w01018TextMin = w01018TextArray[0];
+        String[] w01018TextMinArray = w01018TextMin.split("=");
+        String valueMin1 = w01018TextMinArray[1];
+        envMinuteEntity.setHxxylZx(valueMin1);
+        //valueMin2
+        String  w01018TextMax = w01018TextArray[1];
+        String[] w01018TextMaxArray = w01018TextMax.split("=");
+        String valueMax1 = w01018TextMaxArray[1];
+        envMinuteEntity.setHxxylZd(valueMax1);
+        //valueAvg1
+        String  w01018TextAvg = w01018TextArray[2];
+        String[] w01018TextAvgArray = w01018TextAvg.split("=");
+        String valueAvg1 = w01018TextAvgArray[1];
+        envMinuteEntity.setHxxylPj(valueAvg1);
+        //flag1
+        String  w01018TextFlag = w01018TextArray[4];
+        String[] w01018TextFlagArray = w01018TextFlag.split("=");
+        String state1 = w01018TextFlagArray[1];
+        envMinuteEntity.setHxxylzt(state1);
+        //w21003
+        String w21003Text = receiveDataArray[8];
+        String[] w21003TextArray = w21003Text.split(",");
+        //valueMin2
+        String  w21003TextMin = w21003TextArray[0];
+        String[] w21003TextMinArray = w21003TextMin.split("=");
+        String valueMin2 = w21003TextMinArray[1];
+        envMinuteEntity.setAdZx(valueMin2);
+        //valueMax2
+        String  w21003TextMax = w21003TextArray[1];
+        String[] w21003TextMaxArray = w21003TextMax.split("=");
+        String valueMax2 = w21003TextMaxArray[1];
+        envMinuteEntity.setAdZd(valueMax2);
+        //valueAvg2
+        String  w21003TextAvg = w21003TextArray[2];
+        String[] w21003TextAvgArray = w21003TextAvg.split("=");
+        String valueAvg2 = w21003TextAvgArray[1];
+        envMinuteEntity.setAdPj(valueAvg2);
+        //flag4
+        String  w21003TextFlag = w21003TextArray[4];
+        String[] w21003TextFlagArray = w21003TextFlag.split("=");
+        String state2 = w21003TextFlagArray[1];
+        envMinuteEntity.setAdzt(state2);
+        //w01001
+        String w01001Text = receiveDataArray[9];
+        String[] w01001TextArray = w01001Text.split(",");
+        //valueMin3
+        String  w01001TextMin = w01001TextArray[0];
+        String[] w01001TextMinArray = w01001TextMin.split("=");
+        String valueMin3 = w01001TextMinArray[1];
+        envMinuteEntity.setPhZx(valueMin3);
+        //valueMax3
+        String  w01001TextMax = w01001TextArray[1];
+        String[] w01001TextMaxArray = w01001TextMax.split("=");
+        String valueMax3 = w01001TextMaxArray[1];
+        envMinuteEntity.setPhZd(valueMax3);
+        //valueAvg3
+        String  w01001TextAvg = w01001TextArray[2];
+        String[] w01001TextAvgArray = w01001TextAvg.split("=");
+        String valueAvg3 = w01001TextAvgArray[1];
+        envMinuteEntity.setPhPj(valueAvg3);
+        //flag3
+        String  w01001TextFlag = w01001TextArray[3];
+        String[] w01001TextFlagArray = w01001TextFlag.split("=");
+        String state3 = w01001TextFlagArray[1];
+        envMinuteEntity.setPhzt(state3);
+        //w00000
+        String w00000Text = receiveDataArray[10];
+        String[] w00000TextArray = w00000Text.split(",");
+        //valueMin4
+        String  w00000TextMin = w00000TextArray[0];
+        String[] w00000TextMinArray = w00000TextMin.split("=");
+        String valueMin4 = w00000TextMinArray[1];
+        envMinuteEntity.setWsZx(valueMin4);
+        //valueMax4
+        String  w00000TextMax = w00000TextArray[1];
+        String[] w00000TextMaxArray = w00000TextMax.split("=");
+        String valueMax4 = w00000TextMaxArray[1];
+        envMinuteEntity.setWsZd(valueMax4);
+        //valueAvg4
+        String  w00000TextAvg = w00000TextArray[2];
+        String[] w00000TextAvgArray = w00000TextAvg.split("=");
+        String valueAvg4 = w00000TextAvgArray[1];
+        envMinuteEntity.setWsPj(valueAvg4);
+        //flag4
+        String  w00000TextFlag = w00000TextArray[4];
+        String[] w00000TextFlagArray = w00000TextFlag.split("=");
+        String state4 = w00000TextFlagArray[1];
+        state4 = state4.substring(0,1);
+        envMinuteEntity.setWszt(state4);
+        //add_time
+        envMinuteEntity.setAddTime(new Timestamp(new Date().getTime()));
+        //
+         EnvMinuteEntity outEnvMinuteEntity = envMinuteRepo.save(envMinuteEntity);
+//        System.out.println("分钟数据入库结果>>"+outEnvMinuteEntity.toString());
+         return outEnvMinuteEntity;
+    }
+
 
 //    public void handleReceiveData(String receiveData) {
 //        EnvironmentDataEntity environmentDataEntity = new EnvironmentDataEntity();

+ 3 - 5
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/server/EnvironServerHandler.java

@@ -39,17 +39,15 @@ public class EnvironServerHandler extends ChannelInboundHandlerAdapter{
     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
         //将客户端传入的消息转换为Netty的ByteBuf类型
         ByteBuf in = (ByteBuf) msg;
-        String receive = in.toString(CharsetUtil.UTF_8);
+        String receiveData = in.toString(CharsetUtil.UTF_8);
 
         // 在控制台打印传入的消息
 //        System.out.println(
 //                "Server received: " + in.toString(CharsetUtil.UTF_8)
 //        );
-//        System.out.println("接收到数据>>"+receive);
+        System.out.println("接收到数据>>>>"+receiveData.trim());
         //处理接收环保实时数据
-//
-//        EnvironDataHandler environDataHandler = new EnvironDataHandler();
-        environDataHandler.handleReceiveData(receive);
+        environDataHandler.handleReceiveData(receiveData);
 //        handleReceiveData(receive);
 
         //将接收到的消息写给发送者,而不冲刷出站消息 (应答)

+ 11 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/IEnviron.java

@@ -1,8 +1,19 @@
 package com.huimv.environ.service;
 
+import com.alibaba.fastjson.JSONArray;
+import com.huimv.environ.dao.entity.EnvMinuteEntity;
+
 import java.io.IOException;
 
 public interface IEnviron {
     
     void sendEnviron() throws IOException;
+
+    void sendHourEnviron(String data);
+
+    void sendRealTimeEnviron(String data);
+
+    JSONArray getEnvironData();
+
+    void handleEnvironWarningInfo(String data);
 }

+ 8 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/IThreshold.java

@@ -0,0 +1,8 @@
+package com.huimv.environ.service;
+
+import com.huimv.environ.dao.entity.SysThresholdEntity;
+
+public interface IThreshold {
+    //
+    String getThreshold(Integer farmId);
+}

+ 10 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/IWarningInfo.java

@@ -0,0 +1,10 @@
+package com.huimv.environ.service;
+
+
+import java.util.Map;
+
+public interface IWarningInfo {
+
+    //处理报警信息
+    void handleWarningEnvironInfo(Map environMap);
+}

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

@@ -1,12 +1,25 @@
 package com.huimv.environ.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.environ.dao.entity.EnvHourEntity;
+import com.huimv.environ.dao.entity.EnvMinuteEntity;
+import com.huimv.environ.dao.entity.SysThresholdEntity;
+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.HttpTemplete;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -18,22 +31,39 @@ import java.util.Map;
  * @Create : 2020-12-25
  **/
 @Service
+@Slf4j
 public class EnvironImpl implements IEnviron {
     @Autowired
     private HttpTemplete httpTemplete;
+    @Autowired
+    private EnvHourRepo envHourRepo;
+    @Autowired
+    private EnvMinuteRepo envMinuteRepo;
+    //数据中心地址
+    @Value("${dataCenter.ipAddr}")
+    private String ipAddr ;
+    //数据中心地址
+    @Value("${dataCenter.port}")
+    private String port ;
+    //牧场ID
+    @Value("${local.farmID}")
+    private Integer farmID;
+    @Autowired
+    private IThreshold Threshold;
+
 
     //本地测试地址
-    String testLocalHttpIp = "http://192.168.1.49:10091";
-    //远程测试地址
-    String testRemoteHttpIp = "http://121.40.221.149:9100";
+//    String testLocalHttpIp = "http://192.168.1.49:10091";
+
+
 
     @Override
     public void sendEnviron() throws IOException {
-        String url = testLocalHttpIp + "/cloud/environ/getEnviron";
-        System.out.println("测试推送地址:"+url);
+        String url = ipAddr + port + "/cloud/environ/putHourEnviron";
+        log.info("推送地址:"+url);
         //
         Map<String,String> paramsMap = new HashMap<String,String>();
-        paramsMap.put("data", "This is 环控数据");
+        paramsMap.put("data", getEnvironData().toJSONString());
         //
         Map<String,Integer> timeoutMap = new HashMap<String,Integer>();
         timeoutMap.put("connectTimeout", 5000);
@@ -43,4 +73,127 @@ public class EnvironImpl implements IEnviron {
         httpTemplete.doPost(url,paramsMap,timeoutMap);
 //        System.out.println("测试结果="+outJo);
     }
+
+    //发送小时环保数据
+    @Override
+    public void sendHourEnviron(String data) {
+        String url = ipAddr + port + "/cloud/environ/putHourEnviron";
+        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());
+        }
+    }
+
+    //发送实时数据
+    @Override
+    public void sendRealTimeEnviron(String data) {
+        String url = ipAddr + port + "/cloud/environ/putRealTimeEnviron";
+        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) {
+//            e.printStackTrace();
+            System.out.println("###错误信息:"+e.getMessage());
+        }
+    }
+
+    @Override
+    public JSONArray getEnvironData(){
+//        EnvMinuteEntity envMinuteEntity = new EnvMinuteEntity();
+//        EnvHourEntity envHourEntity = new EnvHourEntity();
+        List<EnvMinuteEntity> envMinuteEntityList = envMinuteRepo.findAll();
+        JSONArray  envMinuteJa = (JSONArray) JSONArray.toJSON(envMinuteEntityList);
+        log.info("本次上传记录数据:"+envMinuteJa.size());
+        return envMinuteJa;
+    }
+
+    /**
+     * @Method      : handleEnvironWarningInfo
+     * @Description : 处理分钟环保数据进行报警
+     * @Params      : [data]
+     * @Return      : void
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/12/3       
+     * @Time        : 22:12
+     */
+    @Override
+    public void handleEnvironWarningInfo(String data) {
+        JSONObject environJo = JSON.parseObject(data);
+//        System.out.println(">>>>>>>>>>>>>>>>报警信息 environJo>>"+environJo);
+        //读取阈值记录
+        String thresholdData = Threshold.getThreshold(farmID);
+        if(thresholdData == null){
+            log.info("阈值记录为空.");
+        }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")));
+            //环保氨氮数据>=阈值氨氮数据
+            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";
+                log.info("推送警告地址:"+url);
+                // farmID,warningInfo
+                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+            }
+            //环保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 url = ipAddr + port + "/cloud/environ/putWarningInfo";
+                log.info("推送警告地址:"+url);
+                // farmID,warningInfo
+                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+            }
+            //环保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 url = ipAddr + port + "/cloud/environ/putWarningInfo";
+                log.info("推送警告地址:"+url);
+                // farmID,warningInfo
+                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+            }
+            //环保污水浓度数据>=阈值污水浓度数据
+            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 url = ipAddr + port + "/cloud/environ/putWarningInfo";
+                log.info("推送警告地址:"+url);
+                // farmID,warningInfo
+                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+            }
+        }
+
+
+    }
 }

+ 45 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/impl/ThresholdImpl.java

@@ -0,0 +1,45 @@
+package com.huimv.environ.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.huimv.environ.dao.entity.SysThresholdEntity;
+import com.huimv.environ.dao.repo.SysThresholdRepo;
+import com.huimv.environ.service.IThreshold;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Optional;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class ThresholdImpl implements IThreshold {
+    @Autowired
+    private SysThresholdRepo thresholdRepo;
+
+    /**
+     * @Method      : getThreshold
+     * @Description : 读取阈值记录
+     * @Params      : [farmId]
+     * @Return      : com.huimv.environ.dao.entity.SysThresholdEntity
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/12/3       
+     * @Time        : 22:34
+     */
+    @Override
+    public String getThreshold(Integer farmId){
+        //
+        Optional<SysThresholdEntity> option = thresholdRepo.findByFarmId(farmId);
+        if(option.isPresent()){
+            return JSON.toJSON(option.get()).toString();
+        }else{
+            return null;
+        }
+    }
+}

+ 31 - 0
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/service/impl/WarningInfoImpl.java

@@ -0,0 +1,31 @@
+package com.huimv.environ.service.impl;
+
+import com.huimv.environ.service.IWarningInfo;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class WarningInfoImpl implements IWarningInfo {
+
+    //处理报警信息
+    @Override
+    public void handleWarningEnvironInfo(Map environMap) {
+
+        //氨氮
+
+        //化学需氧量
+
+        //PH
+
+        //瞬时流量
+    }
+}

+ 1 - 1
huimv-farm-device/huimv-farm-cloud-environ/src/main/java/com/huimv/environ/task/EnvironTask.java

@@ -26,7 +26,7 @@ public class EnvironTask {
     private IEnviron environ;
 
 //    @Scheduled(cron = "0 0/60 * * * ?")
-    @Scheduled(cron = "0/2 * * * * ?")
+//    @Scheduled(cron = "0/10 * * * * ?")
     private void sendEnviron() throws IOException {
         //
 //        environ.sendEnviron();

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

@@ -86,6 +86,11 @@ public class DateUtil {
         return sdf.format(new Date());
     }
 
+    public String getTodayMissionText() throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+        return sdf.format(new Date());
+    }
+
     public String getStartDateInThisMonth(){
         DateTime date = cn.hutool.core.date.DateUtil.date();
         return (cn.hutool.core.date.DateUtil.beginOfMonth(date) + "").substring(0, 10);

+ 1 - 1
huimv-farm-device/huimv-farm-cloud-environ/src/main/resources/application-dev.yml

@@ -2,7 +2,7 @@ server:
   port: 8096
 spring:
   application:
-    name: pigfarm-local-device
+    name: huimv-farm-cloud-environ
   #------DataSource-----
   datasource:
     url: jdbc:mysql://192.168.1.7:3306/huimv-farm-device?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai

+ 5 - 2
huimv-farm-device/huimv-farm-cloud-environ/src/main/resources/application.properties

@@ -5,5 +5,8 @@ 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)
+local.farmID=1

+ 10 - 2
huimv-farm-device/huimv-farm-cloud-environ/src/test/java/com/huimv/environ/server/EnvironDataHandlerTest.java

@@ -1,10 +1,12 @@
 package com.huimv.environ.server;
 
 import com.huimv.environ.dao.repo.EnvironmentDataRepo;
+import com.huimv.environ.service.IEnviron;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.io.IOException;
 import java.text.ParseException;
 
 /**
@@ -21,9 +23,11 @@ public class EnvironDataHandlerTest {
     private EnvironmentDataRepo environmentDataRepo;
     @Autowired
     private EnvironDataHandler environDataHandler;
+    @Autowired
+    private IEnviron environ;
 
     @Test
-    public void testHandleReceiveData() throws ParseException {
+    public void testHandleReceiveData() throws ParseException, IOException {
         //实时数据
 //        String data = "##0226QN=20211201104310148;ST=32;CN=2011;PW=123456;MN=33330424001391;Flag=4;CP=&&DataTime=20211201104300;w01018-Rtd=210.105,w01018-Flag=N;w21003-Rtd=0.034,w21003-Flag=N;w01001-Rtd=8.442,w01001-Flag=N;w00000-Rtd=9.894,w00000-Flag=N&&C901";
         String data = "##0226QN=20211201214410175;ST=32;CN=2011;PW=123456;MN=33330424001391;Flag=4;CP=&&DataTime=20211201214400;w01018-Rtd=238.962,w01018-Flag=N;w21003-Rtd=0.048,w21003-Flag=N;w01001-Rtd=8.658,w01001-Flag=N;w00000-Rtd=0.000,w00000-Flag=N&&3240";
@@ -34,9 +38,13 @@ public class EnvironDataHandlerTest {
         //空数据
 //        String data = "Server received: ##0077QN=20211201140216001;ST=91;CN=9021;PW=123456;MN=33330424001391;Flag=4;CP=&&&&D801";
 
-
         environDataHandler.handleReceiveData(data);
     }
 
+    @Test
+    public void testGetEnvironData() throws IOException {
+        environ.getEnvironData();
+    }
+
 
 }