Ver Fonte

1、新增异常耳标温度报警和统计;
2、新增异常环境温度报警和统计;

zhuoning há 2 anos atrás
pai
commit
4dab7c70ec

+ 45 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartagAbnormalAlarmEntity.java

@@ -0,0 +1,45 @@
+package com.huimv.eartag2.common.dao.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Column;
+import javax.persistence.GenerationType;
+import lombok.experimental.Accessors;
+import javax.persistence.Table;
+import javax.persistence.GeneratedValue;
+import java.sql.Timestamp;
+import lombok.Data;
+import java.io.Serializable;
+import javax.persistence.Id;
+import java.sql.Date;
+ 
+@Entity
+@Data
+@Table(name = "eartag_abnormal_alarm")
+@Accessors(chain = true)
+public class EartagAbnormalAlarmEntity implements Serializable {
+
+private static final long serialVersionUID = 1L;
+
+@Id
+@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "id", nullable = false)
+private Integer id;
+
+@Column(name = "farm_code")
+private String farmCode;
+
+@Column(name = "add_date")
+private Date addDate;
+
+@Column(name = "add_time")
+private Timestamp addTime;
+
+@Column(name = "content")
+private String content;
+
+@Column(name = "alarm_from")
+private Integer alarmFrom;
+
+@Column(name = "alarm_type")
+private Integer alarmType;
+
+}

+ 57 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/entity/EartagAbnormalCountEntity.java

@@ -0,0 +1,57 @@
+package com.huimv.eartag2.common.dao.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Column;
+import javax.persistence.GenerationType;
+import lombok.experimental.Accessors;
+import javax.persistence.Table;
+import javax.persistence.GeneratedValue;
+import java.sql.Timestamp;
+import lombok.Data;
+import java.io.Serializable;
+import javax.persistence.Id;
+import java.sql.Date;
+ 
+@Entity
+@Table(name = "eartag_abnormal_count")
+@Data
+@Accessors(chain = true)
+public class EartagAbnormalCountEntity implements Serializable {
+
+private static final long serialVersionUID = 1L;
+
+@Id
+@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "id", nullable = false)
+private Integer id;
+
+@Column(name = "farm_code")
+private String farmCode;
+
+@Column(name = "station_data_count")
+private Integer stationDataCount;
+
+@Column(name = "station_data_upate_time")
+private Timestamp stationDataUpateTime;
+
+@Column(name = "station_status_count")
+private Integer stationStatusCount;
+
+@Column(name = "station_status_upate_time")
+private Timestamp stationStatusUpateTime;
+
+@Column(name = "eartag_data_count")
+private Integer eartagDataCount;
+
+@Column(name = "eartag_data_upate_time")
+private Timestamp eartagDataUpateTime;
+
+@Column(name = "eartag_status_count")
+private Integer eartagStatusCount;
+
+@Column(name = "eartag_status_upate_time")
+private Timestamp eartagStatusUpateTime;
+
+@Column(name = "add_date")
+private Date addDate;
+
+}

+ 9 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagAbnormalAlarmEntityRepo.java

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

+ 9 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagAbnormalCountEntityRepo.java

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

+ 4 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/SysBaseConfigEntityRepo.java

@@ -5,10 +5,14 @@ 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;
 import java.util.Optional;
 
 public interface SysBaseConfigEntityRepo extends JpaRepository<SysBaseConfigEntity, Integer>, JpaSpecificationExecutor<SysBaseConfigEntity> {
 
     @Query(nativeQuery = true,value = "SELECT * FROM sys_base_config WHERE config_key=?1")
     Optional<SysBaseConfigEntity> getConfigValue(String timeDifference);
+
+    @Query(nativeQuery = true,value = "SELECT b.* FROM sys_base_config a LEFT JOIN sys_base_config b ON a.row_id=b.row_id WHERE a.config_value=?2 AND b.config_key=?1")
+    List<SysBaseConfigEntity> getConfigValue(String eartagMaxTem, String farmCode);
 }

+ 3 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/BizConst.java

@@ -30,6 +30,9 @@ public class BizConst {
     //牧场所有耳标编号集合+牧场id(Set)
 //    public final static String SET_FARM_EARMARK_ALL_PREFIX = "farm_eartag_all_";
 
+    // 耳标温度阈值前缀
+    public final static String HASH_EARTEMP_TH_PREFIX = "hash:tempAlarm:farmCode:";
+
     //耳标注册缓存
 //    public final static String EARTAG_REGISTER_PREFIX = "eartag_register_";
     public final static String EARTAG_REGISTER_PREFIX = "hash:register:eartag:";

+ 1 - 0
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/listener/EartagListener.java

@@ -68,6 +68,7 @@ public class EartagListener {
         Map askMap = handleAskText(askText);
         String type = askMap.get("type").toString();
         JSONObject dataJo = (JSONObject) askMap.get("data");
+        System.out.println("## eartagJo="+dataJo);
         //
         String earmark = dataJo.getString("earmark");
 

+ 305 - 27
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java

@@ -14,6 +14,7 @@ import com.huimv.eartag2.eartag.service.IEartagService;
 import javafx.beans.binding.BooleanBinding;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Example;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -76,6 +77,14 @@ public class EartagServiceImpl implements IEartagService {
     private EartagResetEntityRepo eartagResetEntityRepo;
     @Autowired
     private EartagResetCountEntityRepo eartagResetCountEntityRepo;
+    @Autowired
+    private EartagAbnormalAlarmEntityRepo eartagAbnormalAlarmEntityRepo;
+    @Autowired
+    private EartagAbnormalCountEntityRepo eartagAbnormalCountEntityRepo;
+    @Value("${alarm.maxTemp}")
+    private String defaultMaxTemp;
+    @Value("${alarm.minTemp}")
+    private String defaultMinTemp;
 
     @Override
     public void handleEartag(JSONObject dataJo) throws ParseException {
@@ -93,9 +102,10 @@ public class EartagServiceImpl implements IEartagService {
         //--设备和耳标总状态表
         //获取牧场id
         String farmId = deviceService.getFarmIdByDeviceCode(deviceCode);
+        System.out.println("# farmId="+farmId);
         if (farmId != null) {
             //{计算小时运动量}
-            countHourAct(dataJo,nowTimestamp, todayDate, farmId);
+            countHourAct(dataJo, nowTimestamp, todayDate, farmId);
 
             //{保存耳标流水(所有耳标数据,可能重复上传)}
             saveEartagFlow(dataJo, nowTimestamp, todayDate, farmId);
@@ -124,6 +134,9 @@ public class EartagServiceImpl implements IEartagService {
             //{更新耳标设备在线关联统计}
             updateEartagDeviceOnlineCount(earmark, deviceCode, todayDateText, todayDate, nowTimestamp, farmId);
 
+            //{异常统计和异常报警}
+            abnormalCountAndAlarm(dataJo, todayDate, nowTimestamp, farmId);
+
             //判断该设备编号是否存在牧场缓存在线集合当中;
             if (!cacheService.isExistEartagOnlineSet(farmId, earmark, todayDateText)) {
                 //更新总状态数据
@@ -137,6 +150,271 @@ public class EartagServiceImpl implements IEartagService {
         }
     }
 
+    // 异常统计和报警
+    private void abnormalCountAndAlarm(JSONObject dataJo, java.sql.Date todayDate, Timestamp nowTimestamp, String farmCode) {
+        //处理异常耳标温度警报和统计;
+        handleEartempAlarmAndCount(dataJo, todayDate, nowTimestamp, farmCode);
+        //处理异常环境温度警报和统计;
+//        handleEnvtempAlarmAndCount(dataJo, todayDate, nowTimestamp, farmCode);
+    }
+
+    //处理异常环境温度警报和统计;
+    private void handleEnvtempAlarmAndCount(JSONObject dataJo, java.sql.Date todayDate, Timestamp nowTimestamp, String farmCode) {
+        String earmark = dataJo.getString("earmark");
+        // 获取异常耳标阈值最大值或最小值
+        Map maxAndMinMap = getMaxAndMinEnvtemp(farmCode);
+        BigDecimal configMaxTempBd = new BigDecimal(maxAndMinMap.get("envMaxTem").toString());
+        BigDecimal configMinTempBd = new BigDecimal(maxAndMinMap.get("envMinTem").toString());
+        BigDecimal envTemp1Bd = new BigDecimal(dataJo.getString("envTemp1"));
+        if (envTemp1Bd.compareTo(configMaxTempBd) >= 0) {
+            // 保存耳标高温报警
+            EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
+            eartagAbnormalAlarmEntity.setFarmCode(farmCode);
+            eartagAbnormalAlarmEntity.setContent("高温警报:耳标号[" + earmark + "]的环境温度为" + envTemp1Bd.toString() + "°,高于高温阈值" + configMaxTempBd.toString() + "°");
+            eartagAbnormalAlarmEntity.setAlarmType(2);
+            eartagAbnormalAlarmEntity.setAlarmFrom(2);
+            eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
+            eartagAbnormalAlarmEntity.setAddDate(todayDate);
+            eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
+            // 高温次数记录
+            saveEartagTempDataCount(todayDate, nowTimestamp, farmCode);
+        } else if (configMinTempBd.compareTo(envTemp1Bd) >= 0) {
+            // 保存耳标高温报警
+            EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
+            eartagAbnormalAlarmEntity.setFarmCode(farmCode);
+            eartagAbnormalAlarmEntity.setContent("低温警报:耳标号[" + earmark + "]的环境温度为" + envTemp1Bd.toString() + "°,低于低温阈值" + configMinTempBd.toString() + "°");
+            eartagAbnormalAlarmEntity.setAlarmType(2);
+            eartagAbnormalAlarmEntity.setAlarmFrom(2);
+            eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
+            eartagAbnormalAlarmEntity.setAddDate(todayDate);
+            eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
+            //低温次数记录
+            saveEartagTempDataCount(todayDate, nowTimestamp, farmCode);
+        }
+    }
+    //获取最大值
+    private Map getMaxAndMinEnvtemp(String farmCode) {
+        Map configMap = new HashMap();
+        String hashKey = BizConst.HASH_EARTEMP_TH_PREFIX + farmCode;
+        //获取耳标温度阈值:最大值
+        String maxTemp = (String) cacheService.getHashProperty(hashKey, "envMaxTem");
+        System.out.println("redis.maxTemp=" + maxTemp);
+        if (maxTemp != null) {
+            configMap.put("envMaxTem", maxTemp);
+        } else {
+            // 从属性配置表取值
+            String maxTem = getConfigValue(farmCode,"envMaxTem");
+            System.out.println("配置属性 maxTem="+maxTem);
+            if (maxTem == null) {
+                maxTem = defaultMaxTemp;
+                System.out.println("配置属性 defaultMaxTemp="+defaultMaxTemp);
+            }
+            configMap.put("envMaxTem", maxTem);
+            cacheService.putHashKeyProperty(hashKey, "envMaxTem", maxTem);
+        }
+        //获取耳标温度阈值:最小值
+        String minTemp = (String) cacheService.getHashProperty(hashKey, "envMinTem");
+        System.out.println("redis.minTem=" + minTemp);
+        if (minTemp != null) {
+            configMap.put("envMinTem", minTemp);
+        } else {
+            // 从属性配置表取值
+            String minTem = getConfigValue(farmCode,"envMinTem");
+            System.out.println("配置属性 minTem="+minTem);
+            if (minTem == null) {
+                minTem = defaultMinTemp;
+                System.out.println("配置属性 defaultMinTemp="+defaultMinTemp);
+            }
+            configMap.put("envMinTem", minTem);
+            cacheService.putHashKeyProperty(hashKey, "envMinTem", minTem);
+        }
+        return configMap;
+    }
+
+    //处理异常耳标温度警报和统计;
+    private void handleEartempAlarmAndCount(JSONObject dataJo, java.sql.Date todayDate, Timestamp nowTimestamp, String farmCode) {
+        String earmark = dataJo.getString("earmark");
+        // {获取异常耳标阈值最大值或最小值}
+//        Map maxAndMinMap = getMaxAndMinEartemp(farmCode);
+        Map maxAndMinMap = getMaxAndMin2(farmCode,"eartagMaxTem","eartagMinTem");
+        BigDecimal configMaxTempBd = new BigDecimal(maxAndMinMap.get("eartagMaxTem").toString());
+        BigDecimal configMinTempBd = new BigDecimal(maxAndMinMap.get("eartagMinTem").toString());
+        BigDecimal earTemp1Bd = new BigDecimal(dataJo.getString("earTemp1"));
+        if (earTemp1Bd.compareTo(configMaxTempBd) >= 0) {
+            // 保存耳标高温报警
+            EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
+            eartagAbnormalAlarmEntity.setFarmCode(farmCode);
+            eartagAbnormalAlarmEntity.setContent("高温警报:耳标号[" + earmark + "]的动物当前耳根温度为" + earTemp1Bd.toString() + "°,高于高温阈值" + configMaxTempBd.toString() + "°");
+            eartagAbnormalAlarmEntity.setAlarmType(2);
+            eartagAbnormalAlarmEntity.setAlarmFrom(2);
+            eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
+            eartagAbnormalAlarmEntity.setAddDate(todayDate);
+            eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
+            // 高温次数记录
+            saveEartagTempDataCount(todayDate, nowTimestamp, farmCode);
+        } else if (configMinTempBd.compareTo(earTemp1Bd) >= 0) {
+            // 保存耳标高温报警
+            EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
+            eartagAbnormalAlarmEntity.setFarmCode(farmCode);
+            eartagAbnormalAlarmEntity.setContent("低温警报:耳标号[" + earmark + "]的动物当前耳根温度为" + earTemp1Bd.toString() + "°,低于低温阈值" + configMinTempBd.toString() + "°");
+            eartagAbnormalAlarmEntity.setAlarmType(2);
+            eartagAbnormalAlarmEntity.setAlarmFrom(2);
+            eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
+            eartagAbnormalAlarmEntity.setAddDate(todayDate);
+            eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
+            //低温次数记录
+            saveEartagTempDataCount(todayDate, nowTimestamp, farmCode);
+        }
+    }
+
+    // 保存异常耳标温度计数
+    public void saveEartagTempDataCount(java.sql.Date todayDate, Timestamp nowTimestamp, String farmCode) {
+        EartagAbnormalCountEntity eartagAbnormalCountEntity = new EartagAbnormalCountEntity();
+        eartagAbnormalCountEntity.setFarmCode(farmCode);
+        eartagAbnormalCountEntity.setAddDate(todayDate);
+        Example<EartagAbnormalCountEntity> example = Example.of(eartagAbnormalCountEntity);
+        Optional<EartagAbnormalCountEntity> optional = eartagAbnormalCountEntityRepo.findOne(example);
+        if (!optional.isPresent()) {
+            eartagAbnormalCountEntity.setEartagDataCount(1);
+            eartagAbnormalCountEntity.setEartagDataUpateTime(nowTimestamp);
+            eartagAbnormalCountEntityRepo.saveAndFlush(eartagAbnormalCountEntity);
+        } else {
+            EartagAbnormalCountEntity existEartagAbnormalCountEntity = optional.get();
+            existEartagAbnormalCountEntity.setEartagDataCount(existEartagAbnormalCountEntity.getEartagDataCount() + 1);
+            existEartagAbnormalCountEntity.setEartagDataUpateTime(nowTimestamp);
+            eartagAbnormalCountEntityRepo.saveAndFlush(existEartagAbnormalCountEntity);
+        }
+    }
+
+    private Map getMaxAndMinEartemp(String farmCode) {
+        Map configMap = new HashMap();
+        String hashKey = BizConst.HASH_EARTEMP_TH_PREFIX + farmCode;
+        //获取耳标温度阈值:最大值
+        String maxTemp = (String) cacheService.getHashProperty(hashKey, "eartagMaxTem");
+        System.out.println("redis.eartagMaxTem=" + maxTemp);
+        if (maxTemp != null) {
+            configMap.put("eartagMaxTem", maxTemp);
+        } else {
+            // 从属性配置表取值
+            String eartagMaxTem = getConfigValue(farmCode,"eartagMaxTem");
+            System.out.println("配置属性 eartagMaxTem="+eartagMaxTem);
+            if (eartagMaxTem == null) {
+                eartagMaxTem = defaultMaxTemp;
+                System.out.println("默认属性 defaultMaxTemp="+defaultMaxTemp);
+            }
+            configMap.put("eartagMaxTem", eartagMaxTem);
+            cacheService.putHashKeyProperty(hashKey, "eartagMaxTem", eartagMaxTem);
+        }
+        //获取耳标温度阈值:最小值
+        String minTemp = (String) cacheService.getHashProperty(hashKey, "eartagMinTem");
+        System.out.println("redis.eartagMinTem=" + minTemp);
+        if (minTemp != null) {
+            configMap.put("eartagMinTem", minTemp);
+        } else {
+            // 从属性配置表取值
+            String eartagMinTem = getConfigValue(farmCode,"eartagMinTem");
+            System.out.println("配置属性 eartagMinTem="+eartagMinTem);
+            if (eartagMinTem == null) {
+                eartagMinTem = defaultMinTemp;
+                System.out.println("默认属性 defaultMinTemp="+defaultMinTemp);
+            }
+            configMap.put("eartagMinTem", eartagMinTem);
+            cacheService.putHashKeyProperty(hashKey, "eartagMinTem", eartagMinTem);
+        }
+        return configMap;
+    }
+
+    // 获取耳根最大最小数值
+    private Map getMaxAndMin(String farmCode,String maxKeyName,String minKeyName) {
+        Map configMap = new HashMap();
+        String hashKey = BizConst.HASH_EARTEMP_TH_PREFIX + farmCode;
+        //获取耳标温度阈值:最大值
+        String maxTemp = (String) cacheService.getHashProperty(hashKey, maxKeyName);
+        System.out.println("redis.eartagMaxTem=" + maxTemp);
+        if (maxTemp != null) {
+            configMap.put(maxKeyName, maxTemp);
+        } else {
+            // 从属性配置表取值
+            String confMaxTem = getConfigValue(farmCode,maxKeyName);
+            System.out.println("配置属性 confMaxTem="+confMaxTem);
+            if (confMaxTem == null) {
+                confMaxTem = defaultMaxTemp;
+                System.out.println("默认属性 defaultMaxTemp="+defaultMaxTemp);
+            }
+            configMap.put(maxKeyName, confMaxTem);
+            cacheService.putHashKeyProperty(hashKey, maxKeyName, confMaxTem);
+        }
+        //获取耳标温度阈值:最小值
+        String minTemp = (String) cacheService.getHashProperty(hashKey, minKeyName);
+        System.out.println("redis.eartagMinTem=" + minTemp);
+        if (minTemp != null) {
+            configMap.put(minKeyName, minTemp);
+        } else {
+            // 从属性配置表取值
+            String configMinTem = getConfigValue(farmCode,minKeyName);
+            System.out.println("配置属性 configMinTem="+configMinTem);
+            if (configMinTem == null) {
+                configMinTem = defaultMinTemp;
+                System.out.println("默认属性 defaultMinTemp="+defaultMinTemp);
+            }
+            configMap.put(minKeyName, configMinTem);
+            cacheService.putHashKeyProperty(hashKey, minKeyName, configMinTem);
+        }
+        return configMap;
+    }
+
+    //
+    private Map getMaxAndMin2(String farmCode,String maxKeyName,String minKeyName) {
+        Map configMap = new HashMap();
+        String hashKey = BizConst.HASH_EARTEMP_TH_PREFIX + farmCode;
+        //获取耳标温度阈值:最大值
+//        String maxTemp = (String) cacheService.getHashProperty(hashKey, maxKeyName);
+//        System.out.println("redis.eartagMaxTem=" + maxTemp);
+//        if (maxTemp != null) {
+//            configMap.put(maxKeyName, maxTemp);
+//        } else {
+            // 从属性配置表取值
+            String confMaxTem = getConfigValue(farmCode,maxKeyName);
+            System.out.println("配置属性 confMaxTem="+confMaxTem);
+            if (confMaxTem == null) {
+                confMaxTem = defaultMaxTemp;
+                System.out.println("默认属性 defaultMaxTemp="+defaultMaxTemp);
+            }
+            configMap.put(maxKeyName, confMaxTem);
+//            cacheService.putHashKeyProperty(hashKey, maxKeyName, confMaxTem);
+//        }
+
+        //获取耳标温度阈值:最小值
+//        String minTemp = (String) cacheService.getHashProperty(hashKey, minKeyName);
+//        System.out.println("redis.eartagMinTem=" + minTemp);
+//        if (minTemp != null) {
+//            configMap.put(minKeyName, minTemp);
+//        } else {
+            // 从属性配置表取值
+            String configMinTem = getConfigValue(farmCode,minKeyName);
+            System.out.println("配置属性 configMinTem="+configMinTem);
+            if (configMinTem == null) {
+                configMinTem = defaultMinTemp;
+                System.out.println("默认属性 defaultMinTemp="+defaultMinTemp);
+            }
+            configMap.put(minKeyName, configMinTem);
+//            cacheService.putHashKeyProperty(hashKey, minKeyName, configMinTem);
+//        }
+        return configMap;
+    }
+
+    // 从属性配置表取值
+    public String getConfigValue(String farmCode,String configKey) {
+        //从数据库读取温度阈值属性
+        List<SysBaseConfigEntity> configList = sysBaseConfigEntityRepo.getConfigValue(configKey, farmCode);
+        if (configList.size() > 0) {
+            SysBaseConfigEntity sysBaseConfigEntity = configList.get(0);
+            return sysBaseConfigEntity.getConfigValue();
+        } else {
+            return null;
+        }
+    }
+
     // 计算小时运动量
     private void countHourAct(JSONObject eartagJo, Timestamp nowTimestamp, java.sql.Date todayDate, String farmId) {
         DateUtil du = new DateUtil();
@@ -151,38 +429,38 @@ public class EartagServiceImpl implements IEartagService {
         }
         String earmark = eartagJo.getString("earmark");
         Long act = Long.parseLong(eartagJo.getString("act"));
-        System.out.println("本次运动量="+act);
+        System.out.println("本次运动量=" + act);
         //
-        Optional<EartagData2Entity> optionEartagData = eartagData2Repo.getLastByEarmark(earmark,farmId);
-        if(!optionEartagData.isPresent()){
-            log.info("该耳标号无相关数据.["+earmark+"]");
+        Optional<EartagData2Entity> optionEartagData = eartagData2Repo.getLastByEarmark(earmark, farmId);
+        if (!optionEartagData.isPresent()) {
+            log.info("该耳标号无相关数据.[" + earmark + "]");
         }
         EartagData2Entity eartagData2Entity = optionEartagData.get();
         int lastId = eartagData2Entity.getId();
         Long lastAct = eartagData2Entity.getAct();
-        System.out.println("上次运动量="+lastAct);
+        System.out.println("上次运动量=" + lastAct);
         Timestamp lastAddTime = eartagData2Entity.getAddTime();
         long timeDiff = nowTimestamp.getTime() - lastAddTime.getTime();
-        if(timeDiff/(1000*60*60) < eartagOffLineTime){
+        if (timeDiff / (1000 * 60 * 60) < eartagOffLineTime) {
             long act1 = 0;
             boolean resetStatus = false;
-            if(act < lastAct){
+            if (act < lastAct) {
                 act1 = act;
                 resetStatus = true;
-            }else{
+            } else {
                 act1 = act - lastAct;
             }
-            System.out.println("本次运动量增量="+act1);
+            System.out.println("本次运动量增量=" + act1);
             //{保存耳标小时运动量}
-            saveEartagHourAct(farmId,earmark,act1,nowHour,todayDate);
+            saveEartagHourAct(farmId, earmark, act1, nowHour, todayDate);
             //{保存耳标复位记录}
-            saveEartagReset(resetStatus,farmId,earmark,nowTimestamp,todayDate,lastId,lastAct,act);
+            saveEartagReset(resetStatus, farmId, earmark, nowTimestamp, todayDate, lastId, lastAct, act);
         }
     }
 
     //{保存耳标复位记录}
-    private void saveEartagReset(boolean resetStatus, String farmId, String earmark, Timestamp nowTimestamp, java.sql.Date todayDate, int lastId,Long lastAct,Long act) {
-        if(resetStatus){
+    private void saveEartagReset(boolean resetStatus, String farmId, String earmark, Timestamp nowTimestamp, java.sql.Date todayDate, int lastId, Long lastAct, Long act) {
+        if (resetStatus) {
             // 保存复位记录
             EartagResetEntity eartagResetEntity = new EartagResetEntity();
             eartagResetEntity.setEarmark(earmark);
@@ -194,19 +472,19 @@ public class EartagServiceImpl implements IEartagService {
             eartagResetEntity.setAct(act);
             eartagResetEntityRepo.save(eartagResetEntity);
 
-            // 泊村复位统计次数
+            // 复位统计次数
             EartagResetCountEntity eartagResetCountEntity = new EartagResetCountEntity();
             eartagResetCountEntity.setEarmark(earmark);
             eartagResetCountEntity.setFarmCode(farmId);
             eartagResetCountEntity.setAddDate(todayDate);
             Example<EartagResetCountEntity> example = Example.of(eartagResetCountEntity);
             Optional<EartagResetCountEntity> optionEartagResetCountEntity = eartagResetCountEntityRepo.findOne(example);
-            if(!optionEartagResetCountEntity.isPresent()){
+            if (!optionEartagResetCountEntity.isPresent()) {
                 eartagResetCountEntity.setTimes(1);
                 eartagResetCountEntityRepo.save(eartagResetCountEntity);
-            }else{
+            } else {
                 EartagResetCountEntity existEartagResetCountEntity = optionEartagResetCountEntity.get();
-                existEartagResetCountEntity.setTimes(existEartagResetCountEntity.getTimes()+1);
+                existEartagResetCountEntity.setTimes(existEartagResetCountEntity.getTimes() + 1);
                 eartagResetCountEntityRepo.save(existEartagResetCountEntity);
             }
         }
@@ -214,8 +492,8 @@ public class EartagServiceImpl implements IEartagService {
 
     // {保存耳标小时运动量}
     private void saveEartagHourAct(String farmId, String earmark, long act1, int nowHour, java.sql.Date todayDate) {
-        Optional<EartagHourActEntity> optionalHourAct = eartagHourActEntityRepo.findByFarmIdAndEarmarkAndHourAndDate(farmId,earmark,nowHour,todayDate);
-        if(!optionalHourAct.isPresent()){
+        Optional<EartagHourActEntity> optionalHourAct = eartagHourActEntityRepo.findByFarmIdAndEarmarkAndHourAndDate(farmId, earmark, nowHour, todayDate);
+        if (!optionalHourAct.isPresent()) {
             EartagHourActEntity newEartagHourActEntity = new EartagHourActEntity();
             newEartagHourActEntity.setFarmCode(farmId);
             newEartagHourActEntity.setEarmark(earmark);
@@ -223,9 +501,9 @@ public class EartagServiceImpl implements IEartagService {
             newEartagHourActEntity.setHour(nowHour);
             newEartagHourActEntity.setAct(act1);
             eartagHourActEntityRepo.save(newEartagHourActEntity);
-        }else{
+        } else {
             EartagHourActEntity eartagHourActEntity = optionalHourAct.get();
-            eartagHourActEntity.setAct(eartagHourActEntity.getAct()+act1);
+            eartagHourActEntity.setAct(eartagHourActEntity.getAct() + act1);
             eartagHourActEntityRepo.save(eartagHourActEntity);
         }
     }
@@ -1046,18 +1324,18 @@ public class EartagServiceImpl implements IEartagService {
             long act1 = 0;
             if (Boolean.parseBoolean(countMap.get("fisrtStatus").toString())) {
                 act = Integer.parseInt(eartagJo.getString("act"));
-                System.out.println("1 act="+act);
+                System.out.println("1 act=" + act);
             } else {
                 act = Integer.parseInt(eartagJo.getString("act"));
-                System.out.println("2 act="+act);
+                System.out.println("2 act=" + act);
                 long lastAct = Long.parseLong(countMap.get("act").toString());
-                System.out.println("3 lastAct="+lastAct);
+                System.out.println("3 lastAct=" + lastAct);
                 if (act > lastAct) {
                     act1 = act - lastAct;
                 }
-                System.out.println("3 act1="+act1);
+                System.out.println("3 act1=" + act1);
             }
-            System.out.println("4 act1="+act1);
+            System.out.println("4 act1=" + act1);
             DateUtil dateUtil = new DateUtil();
             EartagData2Entity dataEntity = new EartagData2Entity();
             dataEntity.setCmdHeader(eartagJo.getString("cmdHeader"));

+ 4 - 0
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/resources/application.properties

@@ -2,3 +2,7 @@ spring.profiles.active=test
 #spring.profiles.active=local
 device.register.prefix=device_register_
 redis.expire.eartag_online_set=25
+
+#
+alarm.maxTemp=40
+alarm.minTemp=30