Переглянути джерело

对报警信息首页功能进行完善:今日报警,设备故障率,今日事件提醒,三级报警数量

zhuoning 3 роки тому
батько
коміт
5c5bb302dd

+ 18 - 5
huimv-farm-produce/pom.xml

@@ -21,6 +21,12 @@
 <!--            <artifactId>spring-boot-starter-test</artifactId>-->
 <!--            <scope>test</scope>-->
 <!--        </dependency>-->
+        <!--ICC-->
+        <dependency>
+            <groupId>com.dahuatech.icc</groupId>
+            <artifactId>java-sdk-oauth</artifactId>
+            <version>1.0.8</version>
+        </dependency>
         <dependency>
             <groupId>cn.dustlight.captcha</groupId>
             <artifactId>redis-store</artifactId>
@@ -96,11 +102,18 @@
 <!--            <version>2.3.0</version>-->
 <!--        </dependency>-->
         <!-- fastjson -->
-<!--        <dependency>-->
-<!--            <groupId>com.alibaba</groupId>-->
-<!--            <artifactId>fastjson</artifactId>-->
-<!--            <version>1.2.28</version>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.28</version>
+        </dependency>
+        <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.2.3</version>
+            <classifier>jdk15</classifier>
+            <!-- jdk版本 -->
+        </dependency>
 
     </dependencies>
 

+ 68 - 0
huimv-farm-produce/src/main/java/com/huimv/produce/utils/MathUtil.java

@@ -0,0 +1,68 @@
+package com.huimv.produce.utils;
+
+import org.springframework.stereotype.Component;
+
+import java.text.NumberFormat;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Component
+public class MathUtil {
+
+    public String formatBit(float num, int bit) {
+        // 创建一个数值格式化对象
+        NumberFormat numberFormat = NumberFormat.getInstance();
+        // 设置精确到小数点后2位
+        numberFormat.setMaximumFractionDigits(bit);
+        return numberFormat.format(num);
+    }
+
+    public String formatBit(float num) {
+        return String.valueOf(num);
+    }
+
+    //计算比率
+    public String countRate(float num, int bit) {
+        // 创建一个数值格式化对象
+        NumberFormat numberFormat = NumberFormat.getInstance();
+        // 设置精确到小数点后2位
+        numberFormat.setMaximumFractionDigits(bit);
+        return numberFormat.format(num * 100);//所占百分比
+    }
+
+    //计算占比
+    public String countRate(float num, float total,int bit) {
+        // 创建一个数值格式化对象
+        NumberFormat numberFormat = NumberFormat.getInstance();
+        // 设置精确到小数点后2位
+        numberFormat.setMaximumFractionDigits(bit);
+        //所占百分比
+        return numberFormat.format((float)  num/ (float)total* 100);
+    }
+
+    //格式化
+    public String format(float num, int bit) {
+        // 创建一个数值格式化对象
+        NumberFormat numberFormat = NumberFormat.getInstance();
+        // 设置精确到小数点后2位
+        numberFormat.setMaximumFractionDigits(bit);
+        return numberFormat.format(num * 100);//所占百分比
+    }
+
+    //格式化
+    public String format(float num, float total,int bit) {
+        // 创建一个数值格式化对象
+        NumberFormat numberFormat = NumberFormat.getInstance();
+        // 设置精确到小数点后2位
+        numberFormat.setMaximumFractionDigits(bit);
+        //所占百分比
+        return numberFormat.format((float)  num/ (float)total* 100);
+    }
+
+}

+ 6 - 2
huimv-farm-produce/src/main/java/com/huimv/produce/warning/controller/AlarmController.java

@@ -1,13 +1,17 @@
 package com.huimv.produce.warning.controller;
 
+import com.dahuatech.icc.exception.ClientException;
 import com.huimv.common.utils.Result;
 import com.huimv.produce.warning.service.IAlarmService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.ParseException;
+
 /**
  * @Project : huimv.shiwan
  * @Package : com.huimv.biosafety.uface.controller
@@ -24,9 +28,9 @@ public class AlarmController {
     private IAlarmService iAlarmService;
 
     @RequestMapping(value = "/getMainPageWarning",method = RequestMethod.GET)
-    public Result getMainPage(){
+    public Result getMainPage(@RequestParam(value = "farmId",required = true) Integer farmId) throws ParseException, ClientException {
         //读取首页告警
-        return iAlarmService.getMainPageAlarm();
+        return iAlarmService.getMainPageAlarm(farmId);
     }
 
 }

+ 128 - 0
huimv-farm-produce/src/main/java/com/huimv/produce/warning/dao/entity/BaseWarningInfoEntity.java

@@ -0,0 +1,128 @@
+package com.huimv.produce.warning.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 + '\'' +
+                '}';
+    }
+}

+ 200 - 0
huimv-farm-produce/src/main/java/com/huimv/produce/warning/dao/entity/FarmDeviceEntity.java

@@ -0,0 +1,200 @@
+package com.huimv.produce.warning.dao.entity;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "farm_device")
+public class FarmDeviceEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false)
+    private Integer id;
+
+    @Column(name = "device_name")
+    private String deviceName;
+
+    @Column(name = "device_code")
+    private String deviceCode;
+
+    @Column(name = "device_type")
+    private String deviceType;
+
+    @Column(name = "factory")
+    private String factory;
+
+    @Column(name = "worker")
+    private String worker;
+
+    @Column(name = "main_params")
+    private String mainParams;
+
+    @Column(name = "state")
+    private Integer state;
+
+    @Column(name = "record")
+    private String record;
+
+    @Column(name = "last_time")
+    private Timestamp lastTime;
+
+    @Column(name = "up_time")
+    private Timestamp upTime;
+
+    @Column(name = "down_time")
+    private Timestamp downTime;
+
+    @Column(name = "lockin_state")
+    private Integer lockinState;
+
+    @Column(name = "farm_id")
+    private Integer farmId;
+
+    @Column(name = "data_id")
+    private Integer dataId;
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setDeviceName(String deviceName) {
+        this.deviceName = deviceName;
+    }
+
+    public String getDeviceName() {
+        return deviceName;
+    }
+
+    public void setDeviceCode(String deviceCode) {
+        this.deviceCode = deviceCode;
+    }
+
+    public String getDeviceCode() {
+        return deviceCode;
+    }
+
+    public void setDeviceType(String deviceType) {
+        this.deviceType = deviceType;
+    }
+
+    public String getDeviceType() {
+        return deviceType;
+    }
+
+    public void setFactory(String factory) {
+        this.factory = factory;
+    }
+
+    public String getFactory() {
+        return factory;
+    }
+
+    public void setWorker(String worker) {
+        this.worker = worker;
+    }
+
+    public String getWorker() {
+        return worker;
+    }
+
+    public void setMainParams(String mainParams) {
+        this.mainParams = mainParams;
+    }
+
+    public String getMainParams() {
+        return mainParams;
+    }
+
+    public void setState(Integer state) {
+        this.state = state;
+    }
+
+    public Integer getState() {
+        return state;
+    }
+
+    public void setRecord(String record) {
+        this.record = record;
+    }
+
+    public String getRecord() {
+        return record;
+    }
+
+    public void setLastTime(Timestamp lastTime) {
+        this.lastTime = lastTime;
+    }
+
+    public Timestamp getLastTime() {
+        return lastTime;
+    }
+
+    public void setUpTime(Timestamp upTime) {
+        this.upTime = upTime;
+    }
+
+    public Timestamp getUpTime() {
+        return upTime;
+    }
+
+    public void setDownTime(Timestamp downTime) {
+        this.downTime = downTime;
+    }
+
+    public Timestamp getDownTime() {
+        return downTime;
+    }
+
+    public void setLockinState(Integer lockinState) {
+        this.lockinState = lockinState;
+    }
+
+    public Integer getLockinState() {
+        return lockinState;
+    }
+
+    public void setFarmId(Integer farmId) {
+        this.farmId = farmId;
+    }
+
+    public Integer getFarmId() {
+        return farmId;
+    }
+
+    public void setDataId(Integer dataId) {
+        this.dataId = dataId;
+    }
+
+    public Integer getDataId() {
+        return dataId;
+    }
+
+    @Override
+    public String toString() {
+        return "FarmDeviceEntity{" +
+                "id=" + id + '\'' +
+                "deviceName=" + deviceName + '\'' +
+                "deviceCode=" + deviceCode + '\'' +
+                "deviceType=" + deviceType + '\'' +
+                "factory=" + factory + '\'' +
+                "worker=" + worker + '\'' +
+                "mainParams=" + mainParams + '\'' +
+                "state=" + state + '\'' +
+                "record=" + record + '\'' +
+                "lastTime=" + lastTime + '\'' +
+                "upTime=" + upTime + '\'' +
+                "downTime=" + downTime + '\'' +
+                "lockinState=" + lockinState + '\'' +
+                "farmId=" + farmId + '\'' +
+                "dataId=" + dataId + '\'' +
+                '}';
+    }
+}

+ 18 - 0
huimv-farm-produce/src/main/java/com/huimv/produce/warning/dao/repo/BaseWarningInfoRepo.java

@@ -0,0 +1,18 @@
+package com.huimv.produce.warning.dao.repo;
+
+import com.huimv.produce.warning.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> {
+
+    @Query(nativeQuery = true,value = "SELECT count(*) total FROM base_warning_info WHERE farm_id=?1 AND level=?2")
+    List<Object[]> countThirdClassAlarm(Integer farmId, Integer classInt);
+
+    //查询今天所有报警记录
+    @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);
+}

+ 19 - 0
huimv-farm-produce/src/main/java/com/huimv/produce/warning/dao/repo/FarmDeviceRepo.java

@@ -0,0 +1,19 @@
+package com.huimv.produce.warning.dao.repo;
+
+import com.huimv.produce.warning.dao.entity.FarmDeviceEntity;
+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 FarmDeviceRepo extends JpaRepository<FarmDeviceEntity, Integer>, JpaSpecificationExecutor<FarmDeviceEntity> {
+
+    //
+    @Query(nativeQuery = true,value = "SELECT COUNT(*) AS total FROM farm_device WHERE farm_id=?1")
+    List<Object[]> findDeviceTotal(Integer farmId);
+
+    //
+    @Query(nativeQuery = true,value = "SELECT COUNT(*) AS num FROM farm_device WHERE farm_id=?1 AND state=?2")
+    List<Object[]> findFailureDeviceTotal(Integer farmId, Integer failureState);
+}

+ 4 - 1
huimv-farm-produce/src/main/java/com/huimv/produce/warning/service/IAlarmService.java

@@ -1,7 +1,10 @@
 package com.huimv.produce.warning.service;
 
+import com.dahuatech.icc.exception.ClientException;
 import com.huimv.common.utils.Result;
 
+import java.text.ParseException;
+
 /**
  * @Project : huimv.shiwan
  * @Package : com.huimv.biosafety.uface.controller
@@ -12,5 +15,5 @@ import com.huimv.common.utils.Result;
  **/
 public interface IAlarmService {
     //获取首页报警信息
-    Result getMainPageAlarm();
+    Result getMainPageAlarm(Integer farmId) throws ParseException, ClientException;
 }

Різницю між файлами не показано, бо вона завелика
+ 241 - 6
huimv-farm-produce/src/main/java/com/huimv/produce/warning/service/impl/AlarmServiceImpl.java


+ 13 - 0
huimv-farm-produce/src/main/resources/config/iccSdk.properties

@@ -0,0 +1,13 @@
+# host
+icc.sdk.host=36.26.62.70:447
+# 客户端模式
+icc.sdk.clientId=huimv
+icc.sdk.clientSecret=1653d6c9-c611-4827-ac87-0bfd48deadd4
+# 1653d6c9-c611-4827-ac87-0bfd48deadd4
+# 密码校验模式
+icc.sdk.pwdClientId=huimv
+icc.sdk.pwdClientSecret=1653d6c9-c611-4827-ac87-0bfd48deadd4
+icc.sdk.username=system
+icc.sdk.password=admin123.
+# 使用授权类型password,client_credentials
+icc.sdk.grantType=password