Bläddra i källkod

环境监测代码重构完成

zhuoning 3 år sedan
förälder
incheckning
7a9e680385
18 ändrade filer med 1478 tillägg och 38 borttagningar
  1. 52 0
      huimv-farm-environ/pom.xml
  2. 88 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/controller/AlarmController.java
  3. 137 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/dao/entity/BaseWarningInfoEntity.java
  4. 23 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/dao/repo/BaseWarningInfoRepo.java
  5. 58 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/controller/EnvironController.java
  6. 105 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/dao/entity/EnvDayEntity.java
  7. 300 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/dao/entity/EnvHourEntity.java
  8. 19 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/dao/repo/EnvDayRepo.java
  9. 15 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/dao/repo/EnvHourRepo.java
  10. 12 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/service/IEnviron.java
  11. 103 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/service/impl/EnvironImpl.java
  12. 19 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/service/IAlarm.java
  13. 307 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/service/impl/AlarmImpl.java
  14. 14 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/utils/Const.java
  15. 197 0
      huimv-farm-environ/src/main/java/com/huimv/environ/env/utils/DateUtil.java
  16. 10 21
      huimv-farm-environ/src/main/resources/application-dev.yml
  17. 19 0
      huimv-farm-environ/src/main/resources/application-prod.yml
  18. 0 17
      huimv-farm-environ/src/main/resources/application.properties

+ 52 - 0
huimv-farm-environ/pom.xml

@@ -11,5 +11,57 @@
 
     <artifactId>huimv-farm-environ</artifactId>
 
+    <dependencies>
+        <!--        <dependency>-->
+        <!--            <groupId>com.huimv</groupId>-->
+        <!--            <artifactId>huimv-common</artifactId>-->
+        <!--            <version>1.0-SNAPSHOT</version>-->
+        <!--        </dependency>-->
+        <!-- JPA -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <!-- mysql -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
 
+        <!--        <dependency>-->
+        <!--            <groupId>com.dahuatech.icc</groupId>-->
+        <!--            <artifactId>java-sdk-oauth</artifactId>-->
+        <!--            <version>1.0.8</version>-->
+        <!--            <scope>compile</scope>-->
+        <!--        </dependency>-->
+        <!--ICC-->
+        <dependency>
+            <groupId>com.dahuatech.icc</groupId>
+            <artifactId>java-sdk-oauth</artifactId>
+            <version>1.0.8</version>
+        </dependency>
+
+        <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.2.3</version>
+            <classifier>jdk15</classifier>
+            <!-- jdk版本 -->
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 88 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/controller/AlarmController.java

@@ -0,0 +1,88 @@
+package com.huimv.environ.env.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.dahuatech.icc.exception.ClientException;
+import com.huimv.common.utils.Result;
+import com.huimv.environ.env.service.IAlarm;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.ParseException;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@RestController
+@RequestMapping("/alarm")
+@Slf4j
+public class AlarmController {
+    @Autowired
+    private IAlarm iAlarm;
+
+    @RequestMapping(value = "/getAlarm",method = RequestMethod.GET)
+    public Result getAlarmByFarmIdAndDate(@RequestParam(value = "farmId",required = true) Integer farmId,
+                                          @RequestParam(value="alarmType",required=false) Integer alarmType,
+                                          @RequestParam(value = "alarmDate",required=false) String alarmDate,
+                                          @RequestParam(value = "pageSize",required=true) Integer pageSize,
+                                          @RequestParam(value = "pageNo",required=true) Integer pageNo) throws ParseException {
+        log.info("farmId>>"+farmId);
+        log.info("alarmType>>"+alarmType);
+        log.info("alarmDate>>"+alarmDate);
+        log.info("pageNo>>"+pageNo);
+        log.info("pageSize>>"+pageSize);
+        //
+        return iAlarm.getAlarm(farmId,alarmType,alarmDate,pageNo,pageSize);
+    }
+
+    @RequestMapping(value = "/getManyAlarm",method = RequestMethod.GET)
+    public Result getManyAlarmByFarmIdAndDate(@RequestParam(value = "farmId",required = true) Integer farmId,
+                                          @RequestParam(value="alarmType",required=false) Integer alarmType,
+                                          @RequestParam(value = "alarmDate",required=false) String alarmDate,
+                                               @RequestParam(value = "quantity",required=true) Integer quantity     ) throws ParseException {
+        log.info("farmId>>"+farmId);
+        log.info("alarmType>>"+alarmType);
+        log.info("alarmDate>>"+alarmDate);
+        log.info("quantity>>"+quantity);
+        //
+//        return iAlarm.getAlarm(farmId,alarmType,alarmDate,pageNo,pageSize);
+        return iAlarm.getAlarm(farmId,alarmType,alarmDate,quantity);
+    }
+
+    //查询今天的警报列表
+    @RequestMapping(value = "/getTodayAlarm",method = RequestMethod.GET)
+    public Result getTodayAlarmByFarmId(@RequestParam(value = "farmId",required = true) Integer farmId,
+                                        @RequestParam(value = "quantity",required=true) Integer quantity     ) throws ParseException {
+        log.info("farmId>>"+farmId);
+        log.info("quantity>>"+quantity);
+        //
+        return iAlarm.getAlarm(farmId,quantity);
+    }
+
+    //查询今日各类警报占比
+    @RequestMapping(value = "/getTodayAlarmRate",method = RequestMethod.GET)
+    public Result getTodayAlarmRate(@RequestParam(value = "farmId",required = true) Integer farmId) throws ParseException, ClientException {
+        log.info("farmId>>"+farmId);
+        //
+        return iAlarm.getAlarmRate(farmId);
+    }
+
+    //查询报警分布(一周数据)
+    @RequestMapping(value = "/getOneWeekAlarm",method = RequestMethod.GET)
+    public Result getOneWeekAlarm(@RequestParam(value = "farmId",required = true) Integer farmId) throws ParseException {
+        log.info("farmId>>"+farmId);
+        //
+        return iAlarm.getOneWeekAlarm(farmId);
+    }
+
+
+
+
+}

+ 137 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/dao/entity/BaseWarningInfoEntity.java

@@ -0,0 +1,137 @@
+package com.huimv.environ.env.dao.entity;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "base_warning_info")
+public class BaseWarningInfoEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false)
+    private Integer id;
+
+    @Column(name = "farm_id")
+    private Integer farmId;
+
+    @Column(name = "level")
+    private Integer level;
+
+    @Column(name = "msg")
+    private String msg;
+
+    @Column(name = "level_name")
+    private String levelName;
+
+    @Column(name = "warning_name")
+    private String warningName;
+
+    @Column(name = "warning_time")
+    private Timestamp warningTime;
+
+    @Column(name = "upload_time")
+    private Timestamp uploadTime;
+
+    /**
+     * 警报类型
+     */
+    @Column(name = "alarm_type")
+    private Integer alarmType;
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setFarmId(Integer farmId) {
+        this.farmId = farmId;
+    }
+
+    public Integer getFarmId() {
+        return farmId;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setLevelName(String levelName) {
+        this.levelName = levelName;
+    }
+
+    public String getLevelName() {
+        return levelName;
+    }
+
+    public void setWarningName(String warningName) {
+        this.warningName = warningName;
+    }
+
+    public String getWarningName() {
+        return warningName;
+    }
+
+    public void setWarningTime(Timestamp warningTime) {
+        this.warningTime = warningTime;
+    }
+
+    public Timestamp getWarningTime() {
+        return warningTime;
+    }
+
+    public void setUploadTime(Timestamp uploadTime) {
+        this.uploadTime = uploadTime;
+    }
+
+    public Timestamp getUploadTime() {
+        return uploadTime;
+    }
+
+    /**
+     * 警报类型
+     */
+    public void setAlarmType(Integer alarmType) {
+        this.alarmType = alarmType;
+    }
+
+    /**
+     * 警报类型
+     */
+    public Integer getAlarmType() {
+        return alarmType;
+    }
+
+    @Override
+    public String toString() {
+        return "BaseWarningInfoEntity{" +
+                "id=" + id + '\'' +
+                "farmId=" + farmId + '\'' +
+                "level=" + level + '\'' +
+                "msg=" + msg + '\'' +
+                "levelName=" + levelName + '\'' +
+                "warningName=" + warningName + '\'' +
+                "warningTime=" + warningTime + '\'' +
+                "uploadTime=" + uploadTime + '\'' +
+                "alarmType=" + alarmType + '\'' +
+                '}';
+    }
+}

+ 23 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/dao/repo/BaseWarningInfoRepo.java

@@ -0,0 +1,23 @@
+package com.huimv.environ.env.dao.repo;
+
+import com.huimv.environ.env.dao.entity.BaseWarningInfoEntity;
+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 BaseWarningInfoRepo extends JpaRepository<BaseWarningInfoEntity, Integer>, JpaSpecificationExecutor<BaseWarningInfoEntity> {
+
+    //查询今天的N条记录列表
+    @Query(nativeQuery = true,value ="SELECT level_name,DATE_FORMAT(warning_time,'%T') warning_time,msg FROM base_warning_info where farm_id=?1 AND DATE_FORMAT(warning_time,'%Y-%m-%d')=DATE_FORMAT(?2,'%Y-%m-%d') ORDER BY id DESC LIMIT ?3")
+    List<Object[]> findTodayAlarm(Integer farmId, String today, Integer quantity);
+
+    //查询最近7天警报数据
+    @Query(nativeQuery = true,value ="SELECT * FROM base_warning_info where farm_id=?1 AND DATE_FORMAT(warning_time,'%Y-%m-%d')>=DATE_FORMAT(?2,'%Y-%m-%d') AND DATE_FORMAT(warning_time,'%Y-%m-%d')<=DATE_FORMAT(?3,'%Y-%m-%d')")
+    List<BaseWarningInfoEntity> findLastSevenDaysAlarm(Integer farmId, String startDate, String endDate);
+
+    //查询今天所有报警记录
+    @Query(nativeQuery = true,value ="SELECT * FROM base_warning_info where farm_id=?1 AND DATE_FORMAT(warning_time,'%Y-%m-%d')=DATE_FORMAT(?2,'%Y-%m-%d')")
+    List<BaseWarningInfoEntity> findTodayAllAlarm(Integer farmId, String todayText);
+}

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

@@ -0,0 +1,58 @@
+package com.huimv.environ.env.environ.controller;
+
+import com.huimv.common.utils.Result;
+import com.huimv.environ.env.environ.service.IEnviron;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.ParseException;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@RestController
+@RequestMapping(value = "/environ")
+public class EnvironController {
+    @Autowired
+    private IEnviron environ;
+
+    /**
+     * @Method      : getLastEnviron
+     * @Description : 返回最新环保记录
+     * @Params      : []
+     * @Return      : java.lang.String
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/12/2       
+     * @Time        : 22:25
+     */
+    @RequestMapping(value = "/getLastEnviron",method = RequestMethod.GET)
+    public Result getLastEnviron(@RequestParam(value = "farmId",required = true) Integer farmId){
+        //
+        return environ.getLastEnviron(farmId);
+    }
+
+    /**
+     * @Method      : getLastSevenDayEnviron
+     * @Description : 获取最近N天环保数据集合
+     * @Params      : [farmId,days]
+     * @Return      : com.huimv.common.result.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/12/3       
+     * @Time        : 20:51
+     */
+    @RequestMapping(value = "/getLastSevenDayEnviron",method = RequestMethod.GET)
+    public Result getLastSevenDayEnviron(@RequestParam(value = "farmId",required = true) Integer farmId,@RequestParam(value = "days",required = true) Integer days) throws ParseException {
+        if(days == null){
+            days = 7;
+        }
+        //
+        return environ.getLastSevenDayEnviron(farmId,days);
+    }
+}

+ 105 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/dao/entity/EnvDayEntity.java

@@ -0,0 +1,105 @@
+package com.huimv.environ.env.environ.dao.entity;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.Date;
+
+@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 = "farm_id")
+    private Integer farmId;
+
+    @Column(name = "add_date")
+    private Date addDate;
+
+    @Column(name = "cod")
+    private String cod;
+
+    @Column(name = "ad")
+    private String ad;
+
+    @Column(name = "ph")
+    private String ph;
+
+    @Column(name = "ws")
+    private String ws;
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setFarmId(Integer farmId) {
+        this.farmId = farmId;
+    }
+
+    public Integer getFarmId() {
+        return farmId;
+    }
+
+    public Date getAddDate() {
+        return addDate;
+    }
+
+    public void setAddDate(Date addDate) {
+        this.addDate = addDate;
+    }
+
+    public void setCod(String cod) {
+        this.cod = cod;
+    }
+
+    public String getCod() {
+        return cod;
+    }
+
+    public void setAd(String ad) {
+        this.ad = ad;
+    }
+
+    public String getAd() {
+        return ad;
+    }
+
+    public void setPh(String ph) {
+        this.ph = ph;
+    }
+
+    public String getPh() {
+        return ph;
+    }
+
+    public void setWs(String ws) {
+        this.ws = ws;
+    }
+
+    public String getWs() {
+        return ws;
+    }
+
+    @Override
+    public String toString() {
+        return "EnvDayEntity{" +
+                "id=" + id +
+                ", farmId=" + farmId +
+                ", addDate=" + addDate +
+                ", cod='" + cod + '\'' +
+                ", ad='" + ad + '\'' +
+                ", ph='" + ph + '\'' +
+                ", ws='" + ws + '\'' +
+                '}';
+    }
+}

+ 300 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/dao/entity/EnvHourEntity.java

@@ -0,0 +1,300 @@
+package com.huimv.environ.env.environ.dao.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Column;
+import javax.persistence.GenerationType;
+import javax.persistence.Table;
+import javax.persistence.GeneratedValue;
+import java.sql.Timestamp;
+import java.io.Serializable;
+import javax.persistence.Id;
+ 
+@Entity
+@Table(name = "env_hour")
+public class EnvHourEntity 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;
+
+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;
+}
+
+@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 + '\'' +
+    '}';
+}
+}

+ 19 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/dao/repo/EnvDayRepo.java

@@ -0,0 +1,19 @@
+package com.huimv.environ.env.environ.dao.repo;
+
+import com.huimv.environ.env.environ.dao.entity.EnvDayEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.Date;
+import java.util.List;
+
+public interface EnvDayRepo extends JpaRepository<EnvDayEntity, Integer>, JpaSpecificationExecutor<EnvDayEntity> {
+
+    //
+    @Query(nativeQuery = true,value ="SELECT * FROM env_day where farm_id=?1 AND  DATE_FORMAT(add_date,'%Y-%m-%d')<=DATE_FORMAT(?2,'%Y-%m-%d') ORDER BY add_date DESC LIMIT ?3")
+    List<EnvDayEntity> findByFarmIdAndAddDate_0(Integer farmId, Date todayDate, Integer days);
+
+    @Query(nativeQuery = true,value ="SELECT * FROM env_day where farm_id=?1 ORDER BY add_date DESC LIMIT ?2")
+    List<EnvDayEntity> findByFarmIdAndAddDate(Integer farmId, Integer days);
+}

+ 15 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/dao/repo/EnvHourRepo.java

@@ -0,0 +1,15 @@
+package com.huimv.environ.env.environ.dao.repo;
+
+import com.huimv.environ.env.environ.dao.entity.EnvHourEntity;
+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 EnvHourRepo extends JpaRepository<EnvHourEntity, Integer>, JpaSpecificationExecutor<EnvHourEntity> {
+
+    //
+    @Query(nativeQuery = true,value ="SELECT * FROM env_hour where farm_id=?1 ORDER BY id DESC LIMIT 1")
+    Optional<EnvHourEntity> findLastOne(Integer farmId);
+}

+ 12 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/environ/service/IEnviron.java

@@ -0,0 +1,12 @@
+package com.huimv.environ.env.environ.service;
+
+import com.huimv.common.utils.Result;
+
+import java.text.ParseException;
+
+public interface IEnviron {
+    //
+    Result getLastEnviron(Integer farmId);
+
+    Result getLastSevenDayEnviron(Integer farmId, Integer days) throws ParseException;
+}

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

@@ -0,0 +1,103 @@
+package com.huimv.environ.env.environ.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.common.utils.Result;
+import com.huimv.common.utils.ResultCode;
+import com.huimv.environ.env.environ.dao.entity.EnvDayEntity;
+import com.huimv.environ.env.environ.dao.entity.EnvHourEntity;
+import com.huimv.environ.env.environ.dao.repo.EnvDayRepo;
+import com.huimv.environ.env.environ.dao.repo.EnvHourRepo;
+import com.huimv.environ.env.environ.service.IEnviron;
+import com.huimv.environ.env.utils.Const;
+import com.huimv.environ.env.utils.DateUtil;
+import org.hibernate.criterion.Example;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.util.List;
+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 EnvironImpl implements IEnviron {
+    @Autowired
+    private EnvHourRepo envHourRepo;
+    @Autowired
+    private EnvDayRepo envDayRepo;
+    @Autowired
+    private DateUtil dateUtil;
+    /**
+     * @Method      : getLastEnviron
+     * @Description : 读取最后一条记录
+     * @Params      : []
+     * @Return      : com.huimv.common.result.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/12/2       
+     * @Time        : 23:28
+     */
+    @Override
+    public Result getLastEnviron(Integer farmId){
+        Optional<EnvHourEntity> optional = envHourRepo.findLastOne(farmId);
+        if(optional.isPresent()){
+            EnvHourEntity envHourEntity = optional.get();
+            return new Result(ResultCode.SUCCESS,envHourEntity);
+//            return new Result(ResultCode.SUCCESS,JSON.toJSON(envHourEntity).toString());
+        }else{
+            return new Result(Const.ERROR_CODE_NOTEXIST,Const.ERROR_MSG_NOTEXIST,false);
+        }
+    }
+
+    /**
+     * @Method      : getLastSevenDayEnviron
+     * @Description : 
+     * @Params      : [farmId, days]
+     * @Return      : com.huimv.common.result.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/12/3       
+     * @Time        : 21:18
+     */
+    @Override
+    public Result getLastSevenDayEnviron(Integer farmId,Integer days) throws ParseException {
+        System.out.println(">>>>> dateUtil.getTodayDate()>>"+dateUtil.getTodayDate());
+        System.out.println(">>>>> days>>"+days);
+        //查询最近N天记录
+        List<EnvDayEntity> envDayEntityList = envDayRepo.findByFarmIdAndAddDate(farmId,days);
+        System.out.println(">>>>> envDayEntityList.size>>"+envDayEntityList.size());
+        if(envDayEntityList.size()>0){
+            JSONArray dateJa = new JSONArray();
+            JSONArray codJa = new JSONArray();
+            JSONArray adJa = new JSONArray();
+            JSONArray phJa = new JSONArray();
+            JSONArray wsJa = new JSONArray();
+            for(int a=envDayEntityList.size()-1;a>=0;a--){
+                EnvDayEntity envDayEntity = envDayEntityList.get(a);
+                dateJa.add(dateUtil.formatDate(envDayEntity.getAddDate()));
+                codJa.add(envDayEntity.getCod());
+                adJa.add(envDayEntity.getAd());
+                phJa.add(envDayEntity.getPh());
+                wsJa.add(envDayEntity.getWs());
+            }
+            JSONObject outJo = new JSONObject();
+            outJo.put("date",dateJa);
+            outJo.put("cod",codJa);
+            outJo.put("ad",adJa);
+            outJo.put("ph",phJa);
+            outJo.put("ws",wsJa);
+            return new Result(ResultCode.SUCCESS,outJo);
+        }else{
+            return new Result(Const.ERROR_CODE_NOTEXIST,Const.ERROR_MSG_NOTEXIST,false);
+        }
+    }
+}

+ 19 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/service/IAlarm.java

@@ -0,0 +1,19 @@
+package com.huimv.environ.env.service;
+
+import com.dahuatech.icc.exception.ClientException;
+import com.huimv.common.utils.Result;
+
+import java.text.ParseException;
+
+public interface IAlarm {
+    //
+    Result getAlarm(Integer farmId, Integer alarmType, String alarmDate, Integer pageSize, Integer pageNo) throws ParseException;
+
+    Result getAlarm(Integer farmId, Integer alarmType, String alarmDate, Integer quantity) throws ParseException;
+
+    Result getAlarm(Integer farmId, Integer quantity) throws ParseException;
+
+    Result getOneWeekAlarm(Integer farmId) throws ParseException;
+
+    Result getAlarmRate(Integer farmId) throws ParseException, ClientException;
+}

+ 307 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/service/impl/AlarmImpl.java

@@ -0,0 +1,307 @@
+package com.huimv.environ.env.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.dahuatech.hutool.http.Method;
+import com.dahuatech.icc.exception.ClientException;
+import com.dahuatech.icc.oauth.http.DefaultClient;
+import com.dahuatech.icc.oauth.http.IClient;
+import com.dahuatech.icc.oauth.model.v202010.GeneralRequest;
+import com.dahuatech.icc.oauth.model.v202010.GeneralResponse;
+import com.huimv.common.utils.Result;
+import com.huimv.common.utils.ResultCode;
+//import com.huimv.environ.env.dao.entity.BaseWarningInfoEntity;
+import com.huimv.environ.env.dao.entity.BaseWarningInfoEntity;
+import com.huimv.environ.env.dao.repo.BaseWarningInfoRepo;
+import com.huimv.environ.env.service.IAlarm;
+import com.huimv.environ.env.utils.Const;
+import com.huimv.environ.env.utils.DateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.*;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import javax.persistence.criteria.*;
+import java.text.ParseException;
+import java.util.*;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+@Slf4j
+public class AlarmImpl implements IAlarm {
+    @Autowired
+    private BaseWarningInfoRepo warningInfoRepo;
+    @Autowired
+    private DateUtil dateUtil;
+
+    @Override
+    public Result getAlarm(Integer farmId, Integer alarmType, String alarmDateText, Integer pageNo, Integer pageSize) throws ParseException {
+        //转换为日期才能比较
+        Date alarmDate = dateUtil.formatDate(alarmDateText);
+        Specification<BaseWarningInfoEntity> sf = (Specification<BaseWarningInfoEntity>) (root, criteriaQuery, criteriaBuilder) -> {
+            //
+            List<Predicate> predList = new ArrayList<>();
+            if (null != farmId) {
+                predList.add(criteriaBuilder.equal(root.get("farmId").as(Integer.class), farmId));
+            }
+            if (null != alarmType) {
+                predList.add(criteriaBuilder.equal(root.get("alarmType").as(Integer.class), alarmType));
+            }
+            if (null != alarmDate) {
+                predList.add(criteriaBuilder.equal(root.get("warningTime").as(Date.class), alarmDate));
+            }
+//            if (null != returnState) {
+//                predList.add(criteriaBuilder.equal(root.get("returnState").as(Integer.class), returnState));
+//            }
+//            if (null != deliverState) {
+//                predList.add(criteriaBuilder.equal(root.get("deliverState").as(Integer.class), deliverState));
+//            }
+            //
+            Predicate[] pred = new Predicate[predList.size()];
+            Predicate and = criteriaBuilder.and(predList.toArray(pred));
+            criteriaQuery.where(and);
+            //
+            List<Order> orders = new ArrayList<>();
+            orders.add(criteriaBuilder.desc(root.get("id")));
+            return criteriaQuery.orderBy(orders).getRestriction();
+        };
+        Pageable pageable = PageRequest.of( pageNo - 1, pageSize);
+//        return new Result(ResultCode.SUCCESS,applyRepo.listApply(pageable,applyId));
+        Page<BaseWarningInfoEntity>  warningInfoEntityPage = warningInfoRepo.findAll(sf, pageable);
+        //格式化日期
+//        List<BaseWarningInfoEntity> warningInfoEntityList = warningInfoEntityPage.getContent();
+//        for(BaseWarningInfoEntity warningInfoEntity:warningInfoEntityList){
+//            warningInfoEntity.setWarningTime(new Timestamp(dateUtil.formatDate(dateUtil.fromLongToDate(warningInfoEntity.getWarningTime().getTime(),"yyyy-MM-dd")).getTime()));
+//            warningInfoEntity.setUploadTime(new Timestamp(dateUtil.formatDate(dateUtil.fromLongToDate(warningInfoEntity.getUploadTime().getTime(),"yyyy-MM-dd")).getTime()));
+//        }
+        return new Result(ResultCode.SUCCESS, warningInfoEntityPage);
+    }
+
+    @Override
+    public Result getAlarm(Integer farmId, Integer alarmType, String alarmDateText,Integer quantity) throws ParseException {
+        Specification<BaseWarningInfoEntity> sf = (Specification<BaseWarningInfoEntity>) (root, criteriaQuery, criteriaBuilder) -> {
+            //
+            List<Predicate> predList = new ArrayList<>();
+            if (null != farmId) {
+                predList.add(criteriaBuilder.equal(root.get("farmId").as(Integer.class), farmId));
+            }
+            if (null != alarmType) {
+                predList.add(criteriaBuilder.equal(root.get("alarmType").as(Integer.class), alarmType));
+            }
+            if (null != alarmDateText) {
+                //转换为日期才能比较
+                Date alarmDate = null;
+                try {
+                    alarmDate = dateUtil.formatDate(alarmDateText);
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+                predList.add(criteriaBuilder.equal(root.get("warningTime").as(Date.class), alarmDate));
+            }
+//            if (null != returnState) {
+//                predList.add(criteriaBuilder.equal(root.get("returnState").as(Integer.class), returnState));
+//            }
+//            if (null != deliverState) {
+//                predList.add(criteriaBuilder.equal(root.get("deliverState").as(Integer.class), deliverState));
+//            }
+            //
+            Predicate[] pred = new Predicate[predList.size()];
+            Predicate and = criteriaBuilder.and(predList.toArray(pred));
+            criteriaQuery.where(and);
+            //
+            List<Order> orders = new ArrayList<>();
+            orders.add(criteriaBuilder.desc(root.get("id")));
+            return criteriaQuery.orderBy(orders).getRestriction();
+        };
+//        return new Result(ResultCode.SUCCESS,applyRepo.listApply(pageable,applyId));
+        List<BaseWarningInfoEntity>  warningInfoEntityList = warningInfoRepo.findAll(sf);
+        System.out.println("warningInfoEntityList.size="+warningInfoEntityList.size());
+        //格式化日期
+//        List<BaseWarningInfoEntity> warningInfoEntityList = warningInfoEntityPage.getContent();
+//        for(BaseWarningInfoEntity warningInfoEntity:warningInfoEntityList){
+//            warningInfoEntity.setWarningTime(new Timestamp(dateUtil.formatDate(dateUtil.fromLongToDate(warningInfoEntity.getWarningTime().getTime(),"yyyy-MM-dd")).getTime()));
+//            warningInfoEntity.setUploadTime(new Timestamp(dateUtil.formatDate(dateUtil.fromLongToDate(warningInfoEntity.getUploadTime().getTime(),"yyyy-MM-dd")).getTime()));
+//        }
+        return new Result(ResultCode.SUCCESS, warningInfoEntityList);
+    }
+
+    /**
+     * @Method      : getAlarm
+     * @Description : 查询今天的警报
+     * @Params      : [farmId, quantity]
+     * @Return      : com.huimv.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/12/5       
+     * @Time        : 14:54
+     */
+    @Override
+    public Result getAlarm(Integer farmId, Integer quantity) throws ParseException {
+        String today = dateUtil.getTodayDateText();
+        //
+        List<Object[]>  warningInfoEntityList = warningInfoRepo.findTodayAlarm(farmId,today,quantity);
+        if(warningInfoEntityList.size()>0){
+            JSONArray alarmJa = new JSONArray();
+            for(int a=0;a<warningInfoEntityList.size();a++){
+                Object[] alarmObj = (Object[]) warningInfoEntityList.get(a);
+                JSONObject alarmJo = new JSONObject();
+                alarmJa.add(alarmJo);
+                alarmJo.put("levelName",alarmObj[0]);
+                alarmJo.put("warningTime",alarmObj[1]);
+                alarmJo.put("msg",alarmObj[2]);
+            }
+            return new Result(ResultCode.SUCCESS,alarmJa);
+        }else{
+            return new Result(Const.ERROR_CODE_NOTEXIST,Const.ERROR_MSG_NOTEXIST,false);
+        }
+    }
+
+    /**
+     * @Method      : getOneWeekAlarm
+     * @Description : 报警级别分布
+     * @Params      : [farmId]
+     * @Return      : com.huimv.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/12/5       
+     * @Time        : 17:02
+     */
+    @Override
+    public Result getOneWeekAlarm(Integer farmId) throws ParseException {
+        //倒序查询最近7天警报数据
+        String startDate = dateUtil.getPastDate(6);
+        String endDate = dateUtil.getTodayDateText();
+        //
+        List<BaseWarningInfoEntity> warningInfoEntityList = warningInfoRepo.findLastSevenDaysAlarm(farmId,startDate,endDate);
+        JSONObject outJo = new JSONObject();
+        outJo.put("one",_countAlarmTotal("一级",warningInfoEntityList));
+        outJo.put("two",_countAlarmTotal("二级",warningInfoEntityList));
+        outJo.put("three",_countAlarmTotal("三级",warningInfoEntityList));
+        return new Result(ResultCode.SUCCESS,outJo);
+    }
+
+    //计算警报数量
+    public Integer _countAlarmTotal(String typeName,List<BaseWarningInfoEntity> warningInfoEntityList){
+        int count = 0;
+        for(int a=0;a<warningInfoEntityList.size();a++){
+            BaseWarningInfoEntity warningInfoEntity = warningInfoEntityList.get(a);
+            if(warningInfoEntity.getLevelName().indexOf(typeName) != -1){
+                count++;
+            }
+        }
+        return count;
+    }
+
+    /**
+     * @Method      : getAlarmRate
+     * @Description : 计算今日报警占比数量
+     * @Params      : [farmId]
+     * @Return      : com.huimv.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/12/5       
+     * @Time        : 18:29
+     */
+    @Override
+    public Result getAlarmRate(Integer farmId) throws ParseException, ClientException {
+        String todayText = dateUtil.getTodayDateText();
+        //查询今天所有报警记录
+        List<BaseWarningInfoEntity> warningInfoEntityList = warningInfoRepo.findTodayAllAlarm(farmId,todayText);
+        if(warningInfoEntityList.size()>0){
+            JSONArray outJa = new JSONArray();
+            //生态监测
+            int stjcQuantity = _countRateQuantity("7,8,9,10",warningInfoEntityList);
+            //环境监测
+            int hjjcQuantity = _countRateQuantity("15,16,17,18",warningInfoEntityList);
+            //人员违规
+            String startTime = dateUtil.getTodayDateText()+" 00:00:00";
+            System.out.println("开始时间>>"+startTime);
+            String endTime = dateUtil.getTodayDateText()+" 23:59:59";
+            System.out.println("结束时间>>"+endTime);
+            //
+            int rywgQuantity = Integer.parseInt(SendMassageGetPagePersonAlarm(startTime,endTime));
+            //报警总量
+//            int total = stjcQuantity + hjjcQuantity + rywgQuantity;
+            //
+            JSONObject dataJo1 = new JSONObject();
+            outJa.add(dataJo1);
+            dataJo1.put("name","生态监测");
+            dataJo1.put("value",stjcQuantity);
+            //
+            JSONObject dataJo2 = new JSONObject();
+            outJa.add(dataJo2);
+            dataJo2.put("name","环境监测");
+            dataJo2.put("value",hjjcQuantity);
+            //
+            JSONObject dataJo3 = new JSONObject();
+            outJa.add(dataJo3);
+            dataJo3.put("name","人员违规");
+            dataJo3.put("value",rywgQuantity);
+//            //
+//            JSONObject dataJo4 = new JSONObject();
+//            outJa.add(dataJo4);
+//            dataJo4.put("name","报警总量");
+//            dataJo4.put("value",total);
+            return new Result(ResultCode.SUCCESS,outJa);
+        }else{
+            return new Result(Const.ERROR_CODE_NOTEXIST,Const.ERROR_MSG_NOTEXIST,false);
+        }
+    }
+
+    //调用大华接口返回人脸门禁的数量
+    public String SendMassageGetPagePersonAlarm(String begin, String end  ) throws ClientException {
+        Map<String, Object> params = new HashMap<>();
+        params.put("startSwingTime",begin);
+        params.put("endSwingTime",end);
+        params.put("containDomain","1");
+        params.put("openResult",0);
+        String URL = "/evo-apigw/evo-accesscontrol/1.0.0/card/accessControl/swingCardRecord/bycondition/combinedCount?systime=";  //获取事件URL    post请求
+        IClient iClient = new DefaultClient();
+        String timestamp = String.valueOf((new Date()).getTime());
+        Long aLong = Long.valueOf(timestamp);
+        String NewUrl = URL + aLong;
+        System.out.println("开始执行");
+        //这种已经在配置文件里面安排了账号ip以及密码
+        GeneralRequest generalRequest = new GeneralRequest(NewUrl, Method.POST);
+        System.out.println(NewUrl);
+        generalRequest.header("Content-Type", " application/json");
+        System.out.println(JSON.toJSONString(params));
+        //里面是
+        generalRequest.body(JSON.toJSONString(params));
+        //发起请求处理应答
+        GeneralResponse generalResponse = iClient.doAction(generalRequest, generalRequest.getResponseClass());
+        System.out.println("执行结束");
+        net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(generalResponse.getResult());
+        Object data = jsonObject.get("data");
+        return data.toString();
+    }
+
+    //计算占比数量
+    public Integer _countRateQuantity(String alarmType,List<BaseWarningInfoEntity> warningInfoEntityList){
+        if(alarmType == null || alarmType.trim().length()==0){
+            log.error("警报类型alarmType不能为空或null.");
+        }
+        String[] alarmArray = alarmType.split(",");
+        int count=0;
+        for(int a=0;a<warningInfoEntityList.size();a++){
+            BaseWarningInfoEntity warningInfoEntity = warningInfoEntityList.get(a);
+            for(int b=0;b<alarmArray.length;b++){
+                if(warningInfoEntity.getAlarmType() == Integer.parseInt(alarmArray[b]))
+                {
+                    count++;
+                    break;
+                }
+            }
+        }
+        return count;
+    }
+
+}

+ 14 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/utils/Const.java

@@ -0,0 +1,14 @@
+package com.huimv.environ.env.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 Integer ERROR_CODE_NOTEXIST = 10001;
+    public static final String ERROR_MSG_NOTEXIST = "当前暂时未查询到任何数据.";
+}

+ 197 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/env/utils/DateUtil.java

@@ -0,0 +1,197 @@
+package com.huimv.environ.env.utils;
+
+import cn.hutool.core.date.DateTime;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Component
+@Slf4j
+public class DateUtil {
+
+    //Long转换为Date格式
+    public String fromLongToDate(Long time ,String format) {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        Date date = new Date(time);
+        return sdf.format(date);
+    }
+
+    //格式化本年
+    public String getThisYear(){
+        Calendar cal = Calendar.getInstance();
+        int year = cal.get(Calendar.YEAR);
+        return String.valueOf(year);
+    }
+
+    //格式化本月
+    public String getThisMonth(){
+        Calendar cal = Calendar.getInstance();
+        int month = cal.get(Calendar.MONTH) + 1;
+        if(String.valueOf(month).length()==1)
+        {
+            return "0"+String.valueOf(month);
+        }else{
+            return String.valueOf(month);
+        }
+    }
+
+    //格式化日期时间
+    public String formatDateTime(String dateText) throws ParseException {
+        if(dateText.indexOf("T") != -1){
+            dateText = dateText.replace("T"," ");
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = sdf.parse(dateText);
+        return sdf.format(date);
+    }
+
+    public Date parseDateTime(String dateText) throws ParseException {
+        if(dateText.indexOf("T") != -1){
+            dateText = dateText.replace("T"," ");
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return sdf.parse(dateText);
+    }
+
+    public Long parseDateTimeLong(String dateText) throws ParseException {
+        if(dateText.indexOf("T") != -1){
+            dateText = dateText.replace("T"," ");
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = sdf.parse(dateText);
+        return date.getTime();
+    }
+
+    public Date formatDate(String dateText) throws ParseException {
+        if(dateText.indexOf("T") != -1){
+            dateText = dateText.replace("T"," ");
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        return sdf.parse(dateText);
+    }
+
+    public Date parseDate(Date date) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String dateText = sdf.format(date);
+        if(dateText.indexOf("T") != -1){
+            dateText = dateText.replace("T"," ");
+        }
+        return sdf.parse(dateText);
+    }
+
+    public String formatDate(Date date) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String dateText = sdf.format(date);
+        if(dateText.indexOf("T") != -1){
+            String[] dateTextArray = dateText.split("T");
+            dateText = dateTextArray[0];
+        }
+        return dateText;
+    }
+
+    //
+    public Date getTodayDate() throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        return sdf.parse(sdf.format(new Date()));
+    }
+
+    public String getTodayDateText() throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        return sdf.format(new Date());
+    }
+
+    public String getTodayText() throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        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);
+    }
+
+    public String getEndDateInThisMonth(){
+        DateTime date = cn.hutool.core.date.DateUtil.date();
+        return (date + "").substring(0, 10);
+    }
+
+    /**
+     * 获取过去或者未来 任意天内的日期数组
+     * @param intervals      intervals天内
+     * @return              日期数组
+     */
+    public ArrayList<String> test(int intervals ) {
+        ArrayList<String> pastDaysList = new ArrayList<>();
+        ArrayList<String> fetureDaysList = new ArrayList<>();
+        for (int i = 0; i <intervals; i++) {
+            pastDaysList.add(getPastDate(i));
+            fetureDaysList.add(getFetureDate(i));
+        }
+        return pastDaysList;
+    }
+
+    /**
+     * 获取过去第几天的日期
+     *
+     * @param past
+     * @return
+     */
+    public String getPastDate(int past) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
+        Date today = calendar.getTime();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String result = format.format(today);
+        return result;
+    }
+
+    /**
+     * 获取未来 第 past 天的日期
+     * @param past
+     * @return
+     */
+    public String getFetureDate(int past) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + past);
+        Date today = calendar.getTime();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String result = format.format(today);
+        return result;
+    }
+
+    //重新构建日期
+    public String rebuildDateTime(String text){
+        return text.substring(0,4)+"-"+text.substring(4,6)+"-"+text.substring(6,8)+" "+text.substring(8,10)+":"+text.substring(10,12)+":"+text.substring(12,14);
+    }
+
+    public static void main(String[] args){
+        DateUtil du = new DateUtil();
+        //
+        du.test1();
+    }
+
+    private void test1() {
+        String text = "20211201104300";
+//        String text = "1234567890abcd";
+        String date = text.substring(0,4)+"-"+text.substring(4,6)+"-"+text.substring(6,8)+" "+text.substring(8,10)+":"+text.substring(10,12)+":"+text.substring(12,14);
+        System.out.println("date="+date);
+    }
+}

+ 10 - 21
huimv-farm-environ/src/main/resources/application-dev.yml

@@ -1,32 +1,21 @@
 server:
-  port: 8097
+  port: 8092
+
 spring:
   application:
-    name: pigfarm-local-device
-  #------DataSource-----
+    name: huimv-farm-environ
   datasource:
-    url: jdbc:mysql://192.168.1.7:3306/huimv-farm-device?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    #本地测试数据库
+    url: jdbc:mysql://192.168.1.7/huimv-farm-center?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
     username: root
     password: hm123456
     driver-class-name: com.mysql.cj.jdbc.Driver
-#    driver-class-name: com.mysql.jdbc.Driver
   jpa:
     hibernate:
       ddl-auto: update
     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
-
-# Socket配置
-socket:
-  # 监听端口 9001
-#  listen:
-#    #ip: 192.168.16.3
-#    ip: 192.168.1.49
-#    port: 10020
-  # 线程池 - 保持线程数 20
-  #pool-keep: 20
-  # 线程池 - 核心线程数 10
-  #pool-core: 10
-  # 线程池 - 最大线程数 20
-  #pool-max: 30
-  # 线程队列容量 10
-  #pool-queue-init: 10
+    show-sql: true
+#  redis:
+#    host: 122.112.224.199
+#    port: 6379
+#    password: hm123456

+ 19 - 0
huimv-farm-environ/src/main/resources/application-prod.yml

@@ -0,0 +1,19 @@
+server:
+  port: 8092
+
+spring:
+  application:
+    name: huimv-farm-environ
+  datasource:
+    #    url: jdbc:mysql://47.96.4.54:10052/huimv_farm_v2?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    #    username: root
+    #    password: hm123456789
+    url: jdbc:mysql://192.168.1.68:3308/huimv-farm-center?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: hm123456789
+    driver-class-name: com.mysql.cj.jdbc.Driver
+  jpa:
+    hibernate:
+      ddl-auto: update
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+    show-sql: true

+ 0 - 17
huimv-farm-environ/src/main/resources/application.properties

@@ -1,20 +1,3 @@
 spring.profiles.active=dev
 #spring.profiles.active=prod
 
-#时间格式配置
-spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-spring.jackson.time-zone=GMT+8
-
-# 数据中心数据推送地址
-dataCenter.ipAddr=http://115.238.57.190
-dataCenter.port=:10091
-# 日总称重数据服务
-dataCenter.service.dayWeight=/receiver/farm/weight/putDayWeight
-# 批次称重数据服务
-dataCenter.service.batchWeight=/receiver/farm/weight/putBatchWeight
-# 部署牧场ID(base_farm.id)
-local.farmID=1
-# 批次计算间隔
-weight.batch_interval=4
-weight.batch.prefix=W
-weight.batchCode.spacemark=-