|
@@ -3,6 +3,7 @@ package com.huimv.eartag2.eartag.service.impl;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.huimv.eartag2.common.dao.entity.*;
|
|
|
import com.huimv.eartag2.common.dao.repo.*;
|
|
|
+import com.huimv.eartag2.common.service.IBaseConfigService;
|
|
|
import com.huimv.eartag2.common.utils.BizConst;
|
|
|
import com.huimv.eartag2.common.utils.DateUtil;
|
|
|
import com.huimv.eartag2.eartag.service.ICacheService;
|
|
@@ -81,10 +82,16 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
private EartagAbnormalAlarmEntityRepo eartagAbnormalAlarmEntityRepo;
|
|
|
@Autowired
|
|
|
private EartagAbnormalCountEntityRepo eartagAbnormalCountEntityRepo;
|
|
|
- @Value("${alarm.maxTemp}")
|
|
|
- private String defaultMaxTemp;
|
|
|
- @Value("${alarm.minTemp}")
|
|
|
- private String defaultMinTemp;
|
|
|
+// @Value("${alarm.maxTemp}")
|
|
|
+// private String defaultMaxTemp;
|
|
|
+// @Value("${alarm.minTemp}")
|
|
|
+// private String defaultMinTemp;
|
|
|
+ @Autowired
|
|
|
+ private IBaseConfigService iBaseConfigService;
|
|
|
+ @Autowired
|
|
|
+ private BasePigpenEntityRepo basePigpenRepo;
|
|
|
+ @Autowired
|
|
|
+ private BizBaseStageEntityRepo bizBaseStageRepo;
|
|
|
|
|
|
@Override
|
|
|
public void handleEartag(JSONObject dataJo) throws ParseException {
|
|
@@ -102,7 +109,7 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
//--设备和耳标总状态表
|
|
|
//获取牧场id
|
|
|
String farmId = deviceService.getFarmIdByDeviceCode(deviceCode);
|
|
|
- System.out.println("# farmId="+farmId);
|
|
|
+ System.out.println("####### farmId=" + farmId);
|
|
|
if (farmId != null) {
|
|
|
//{计算小时运动量}
|
|
|
countHourAct(dataJo, nowTimestamp, todayDate, farmId);
|
|
@@ -152,17 +159,21 @@ 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);
|
|
|
+ //处理异常-环境温度警报和统计;
|
|
|
+ handleEnvtempAlarmAndCount(dataJo, todayDate, nowTimestamp, farmCode);
|
|
|
}
|
|
|
|
|
|
//处理异常环境温度警报和统计;
|
|
|
private void handleEnvtempAlarmAndCount(JSONObject dataJo, java.sql.Date todayDate, Timestamp nowTimestamp, String farmCode) {
|
|
|
String earmark = dataJo.getString("earmark");
|
|
|
+ String device = dataJo.getString("device");
|
|
|
+ //{读取栋舍}
|
|
|
+ String pigpenName = getPigpenByDevice(device);
|
|
|
// 获取异常耳标阈值最大值或最小值
|
|
|
- Map maxAndMinMap = getMaxAndMinEnvtemp(farmCode);
|
|
|
+// Map maxAndMinMap = getMaxAndMinEnvtemp(farmCode);
|
|
|
+ Map maxAndMinMap = getMaxAndMin2(farmCode, "envMaxTem", "envMinTem");
|
|
|
BigDecimal configMaxTempBd = new BigDecimal(maxAndMinMap.get("envMaxTem").toString());
|
|
|
BigDecimal configMinTempBd = new BigDecimal(maxAndMinMap.get("envMinTem").toString());
|
|
|
BigDecimal envTemp1Bd = new BigDecimal(dataJo.getString("envTemp1"));
|
|
@@ -170,11 +181,12 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
// 保存耳标高温报警
|
|
|
EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
|
|
|
eartagAbnormalAlarmEntity.setFarmCode(farmCode);
|
|
|
- eartagAbnormalAlarmEntity.setContent("高温警报:耳标号[" + earmark + "]的环境温度为" + envTemp1Bd.toString() + "°,高于高温阈值" + configMaxTempBd.toString() + "°");
|
|
|
+ eartagAbnormalAlarmEntity.setContent("高温警报:["+pigpenName+"]的环境温度为" + envTemp1Bd.toString() + "°,高于高温阈值" + configMaxTempBd.toString() + "°");
|
|
|
eartagAbnormalAlarmEntity.setAlarmType(2);
|
|
|
eartagAbnormalAlarmEntity.setAlarmFrom(2);
|
|
|
eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
|
|
|
eartagAbnormalAlarmEntity.setAddDate(todayDate);
|
|
|
+ eartagAbnormalAlarmEntity.setAlarmSort(3);
|
|
|
eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
|
|
|
// 高温次数记录
|
|
|
saveEartagTempDataCount(todayDate, nowTimestamp, farmCode);
|
|
@@ -182,61 +194,82 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
// 保存耳标高温报警
|
|
|
EartagAbnormalAlarmEntity eartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
|
|
|
eartagAbnormalAlarmEntity.setFarmCode(farmCode);
|
|
|
- eartagAbnormalAlarmEntity.setContent("低温警报:耳标号[" + earmark + "]的环境温度为" + envTemp1Bd.toString() + "°,低于低温阈值" + configMinTempBd.toString() + "°");
|
|
|
+ eartagAbnormalAlarmEntity.setContent("低温警报:["+pigpenName+"]的环境温度为" + envTemp1Bd.toString() + "°,低于低温阈值" + configMinTempBd.toString() + "°");
|
|
|
eartagAbnormalAlarmEntity.setAlarmType(2);
|
|
|
eartagAbnormalAlarmEntity.setAlarmFrom(2);
|
|
|
eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
|
|
|
eartagAbnormalAlarmEntity.setAddDate(todayDate);
|
|
|
+ eartagAbnormalAlarmEntity.setAlarmSort(4);
|
|
|
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);
|
|
|
+
|
|
|
+ // 通过设备获取栋舍
|
|
|
+ private String getPigpenByDevice(String device) {
|
|
|
+ //根据设备读取栋舍
|
|
|
+ List<Object[]> pigpenList = basePigpenRepo.getPigpenByDevice(device);
|
|
|
+ if(pigpenList.size()==0){
|
|
|
+ return "";
|
|
|
+ }else{
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ for(int a=0;a<pigpenList.size();a++){
|
|
|
+ Object[] objArray = pigpenList.get(0);
|
|
|
+ if(sb.length()>0){
|
|
|
+ sb.append(",");
|
|
|
+ }
|
|
|
+ sb.append(objArray[0]).append(",").append(objArray[1]);
|
|
|
}
|
|
|
- configMap.put("envMinTem", minTem);
|
|
|
- cacheService.putHashKeyProperty(hashKey, "envMinTem", minTem);
|
|
|
+ return sb.toString();
|
|
|
}
|
|
|
- return configMap;
|
|
|
}
|
|
|
|
|
|
+ //获取最大值
|
|
|
+// 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");
|
|
|
+ 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"));
|
|
@@ -249,6 +282,7 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
eartagAbnormalAlarmEntity.setAlarmFrom(2);
|
|
|
eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
|
|
|
eartagAbnormalAlarmEntity.setAddDate(todayDate);
|
|
|
+ eartagAbnormalAlarmEntity.setAlarmSort(1);
|
|
|
eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
|
|
|
// 高温次数记录
|
|
|
saveEartagTempDataCount(todayDate, nowTimestamp, farmCode);
|
|
@@ -261,6 +295,7 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
eartagAbnormalAlarmEntity.setAlarmFrom(2);
|
|
|
eartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
|
|
|
eartagAbnormalAlarmEntity.setAddDate(todayDate);
|
|
|
+ eartagAbnormalAlarmEntity.setAlarmSort(2);
|
|
|
eartagAbnormalAlarmEntityRepo.saveAndFlush(eartagAbnormalAlarmEntity);
|
|
|
//低温次数记录
|
|
|
saveEartagTempDataCount(todayDate, nowTimestamp, farmCode);
|
|
@@ -286,85 +321,86 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- 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 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 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) {
|
|
|
+ // 获取最大最小数值
|
|
|
+ private Map getMaxAndMin2(String farmCode, String maxKeyName, String minKeyName) {
|
|
|
Map configMap = new HashMap();
|
|
|
String hashKey = BizConst.HASH_EARTEMP_TH_PREFIX + farmCode;
|
|
|
//获取耳标温度阈值:最大值
|
|
@@ -373,14 +409,15 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
// 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);
|
|
|
+ // 从属性配置表取值
|
|
|
+ String confMaxTem = getConfigValue(farmCode, maxKeyName);
|
|
|
+// System.out.println("配置属性 confMaxTem=" + confMaxTem);
|
|
|
+ if (confMaxTem == null) {
|
|
|
+// confMaxTem = defaultMaxTemp;
|
|
|
+// System.out.println("默认属性 defaultMaxTemp=" + defaultMaxTemp);
|
|
|
+ log.error("属性配置:"+maxKeyName+"未配置,请联系管理员进行配置.");
|
|
|
+ }
|
|
|
+ configMap.put(maxKeyName, confMaxTem);
|
|
|
// cacheService.putHashKeyProperty(hashKey, maxKeyName, confMaxTem);
|
|
|
// }
|
|
|
|
|
@@ -390,28 +427,37 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
// 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);
|
|
|
+ // 从属性配置表取值
|
|
|
+ String configMinTem = getConfigValue(farmCode, minKeyName);
|
|
|
+// System.out.println("配置属性 configMinTem=" + configMinTem);
|
|
|
+ if (configMinTem == null) {
|
|
|
+// configMinTem = defaultMinTemp;
|
|
|
+// System.out.println("默认属性 defaultMinTemp=" + defaultMinTemp);
|
|
|
+ log.error("属性配置:"+minKeyName+"未配置,请联系管理员进行配置.");
|
|
|
+ }
|
|
|
+ configMap.put(minKeyName, configMinTem);
|
|
|
// cacheService.putHashKeyProperty(hashKey, minKeyName, configMinTem);
|
|
|
// }
|
|
|
return configMap;
|
|
|
}
|
|
|
|
|
|
// 从属性配置表取值
|
|
|
- public String getConfigValue(String farmCode,String configKey) {
|
|
|
+ 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 {
|
|
|
+// List<SysBaseConfigEntity> configList = sysBaseConfigEntityRepo.getConfigValue(configKey, farmCode);
|
|
|
+// if (configList.size() > 0) {
|
|
|
+// SysBaseConfigEntity sysBaseConfigEntity = configList.get(0);
|
|
|
+// return sysBaseConfigEntity.getConfigValue();
|
|
|
+// } else {
|
|
|
+// return null;
|
|
|
+// }
|
|
|
+ Map configMap = iBaseConfigService.getConfigValue(configKey,farmCode,"0");
|
|
|
+// System.out.println("configMap >>>>>>>>>>>>>>>>>>>>> "+configMap.toString());
|
|
|
+ if(configMap == null){
|
|
|
+ log.error("耳标离线过程丢弃数据时长属性未配置.采用默认配置参数 configKey="+configKey);
|
|
|
return null;
|
|
|
+ }else{
|
|
|
+ return configMap.get("configValue")+"";
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -419,42 +465,58 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
private void countHourAct(JSONObject eartagJo, Timestamp nowTimestamp, java.sql.Date todayDate, String farmId) {
|
|
|
DateUtil du = new DateUtil();
|
|
|
int nowHour = du.getNowHour();
|
|
|
- int eartagOffLineTime = 24;
|
|
|
- Optional<SysBaseConfigEntity> optionalConfig = sysBaseConfigEntityRepo.getConfigValue("dropDataEartagOffLineTime");
|
|
|
- if (optionalConfig.isPresent()) {
|
|
|
- eartagOffLineTime = Integer.parseInt(optionalConfig.get().getConfigValue());
|
|
|
- log.info("耳标离线过程丢弃数据时长=" + eartagOffLineTime);
|
|
|
- } else {
|
|
|
- log.error("耳标离线过程丢弃数据时长属性未配置.");
|
|
|
+ // 小时
|
|
|
+ int eartagOfflineTime = 24;
|
|
|
+// Optional<SysBaseConfigEntity> optionalConfig = sysBaseConfigEntityRepo.getConfigValue("dropDataEartagOffLineTime");
|
|
|
+// if (optionalConfig.isPresent()) {
|
|
|
+// eartagOfflineTime = Integer.parseInt(optionalConfig.get().getConfigValue());
|
|
|
+// log.info("耳标离线过程丢弃数据时长=" + eartagOfflineTime);
|
|
|
+// } else {
|
|
|
+// log.error("耳标离线过程丢弃数据时长属性未配置.");
|
|
|
+// }
|
|
|
+ Map configMap = iBaseConfigService.getConfigValue("dropDataEartagOffLineTime",farmId,"0");
|
|
|
+ System.out.println("configMap >>>>>>>>>>>>>>>>>>>>> "+configMap.toString());
|
|
|
+ if(configMap == null){
|
|
|
+ log.error("耳标离线过程丢弃数据时长属性未配置.采用默认配置参数 eartagOfflineTime="+eartagOfflineTime);
|
|
|
+ }else{
|
|
|
+ eartagOfflineTime = Integer.parseInt(configMap.get("configValue")+"");
|
|
|
+ System.out.println("eartagOfflineTime >>>>>>>>>>>> "+eartagOfflineTime);
|
|
|
}
|
|
|
String earmark = eartagJo.getString("earmark");
|
|
|
Long act = Long.parseLong(eartagJo.getString("act"));
|
|
|
System.out.println("本次运动量=" + act);
|
|
|
+ System.out.println("earmark=" + earmark);
|
|
|
+ System.out.println("farmId=" + farmId);
|
|
|
//
|
|
|
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);
|
|
|
- Timestamp lastAddTime = eartagData2Entity.getAddTime();
|
|
|
- long timeDiff = nowTimestamp.getTime() - lastAddTime.getTime();
|
|
|
- if (timeDiff / (1000 * 60 * 60) < eartagOffLineTime) {
|
|
|
- long act1 = 0;
|
|
|
- boolean resetStatus = false;
|
|
|
- if (act < lastAct) {
|
|
|
- act1 = act;
|
|
|
- resetStatus = true;
|
|
|
- } else {
|
|
|
- act1 = act - lastAct;
|
|
|
+ System.out.println("optionEartagData.isPresent=" + optionEartagData.isPresent());
|
|
|
+ if (optionEartagData.isPresent()) {
|
|
|
+ // 上一次耳标运动量
|
|
|
+ EartagData2Entity eartagData2Entity = optionEartagData.get();
|
|
|
+ int lastId = eartagData2Entity.getId();
|
|
|
+ Long lastAct = eartagData2Entity.getAct();
|
|
|
+ System.out.println("上次运动量=" + lastAct);
|
|
|
+ Timestamp lastAddTime = eartagData2Entity.getAddTime();
|
|
|
+ long timeDiff = nowTimestamp.getTime() - lastAddTime.getTime();
|
|
|
+ if (timeDiff / (1000 * 60 * 60) < eartagOfflineTime) {
|
|
|
+ long act1 = 0;
|
|
|
+ boolean resetStatus = false;
|
|
|
+ if (act < lastAct) {
|
|
|
+ act1 = act;
|
|
|
+ resetStatus = true;
|
|
|
+ } else {
|
|
|
+ act1 = act - lastAct;
|
|
|
+ }
|
|
|
+ System.out.println("本次运动量增量=" + act1);
|
|
|
+ //{保存耳标小时运动量}
|
|
|
+ saveEartagHourAct(farmId, earmark, act1, nowHour, todayDate);
|
|
|
+ //{保存耳标复位记录}
|
|
|
+ saveEartagReset(resetStatus, farmId, earmark, nowTimestamp, todayDate, lastId, lastAct, act);
|
|
|
}
|
|
|
- System.out.println("本次运动量增量=" + act1);
|
|
|
+ } else {
|
|
|
+ log.info("该耳标号[" + earmark + "]无上一次耳标数据.");
|
|
|
//{保存耳标小时运动量}
|
|
|
- saveEartagHourAct(farmId, earmark, act1, nowHour, todayDate);
|
|
|
- //{保存耳标复位记录}
|
|
|
- saveEartagReset(resetStatus, farmId, earmark, nowTimestamp, todayDate, lastId, lastAct, act);
|
|
|
+ saveEartagHourAct(farmId, earmark, act, nowHour, todayDate);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -583,12 +645,20 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
long act = eartagData2Entity.getAct();
|
|
|
long timeDifference = nowTimestamp.getTime() - addTime.getTime();
|
|
|
int setTimeDiff = 5;
|
|
|
- Optional<SysBaseConfigEntity> optionConfig = sysBaseConfigEntityRepo.getConfigValue("timeDifference");
|
|
|
- if (optionConfig.isPresent()) {
|
|
|
- setTimeDiff = Integer.parseInt(optionConfig.get().getConfigValue());
|
|
|
- log.info("耳标数据过滤时间差=" + setTimeDiff);
|
|
|
- } else {
|
|
|
- log.error("耳标数据过滤时间差属性未配置.");
|
|
|
+// Optional<SysBaseConfigEntity> optionConfig = sysBaseConfigEntityRepo.getConfigValue("timeDifference");
|
|
|
+// if (optionConfig.isPresent()) {
|
|
|
+// setTimeDiff = Integer.parseInt(optionConfig.get().getConfigValue());
|
|
|
+// log.info("耳标数据过滤时间差=" + setTimeDiff);
|
|
|
+// } else {
|
|
|
+// log.error("耳标数据过滤时间差属性未配置.");
|
|
|
+// }
|
|
|
+ Map configMap = iBaseConfigService.getConfigValue("timeDifference",farmId,"0");
|
|
|
+ System.out.println("configMap >>>>>>>>>>>>>>>>>>>>> "+configMap.toString());
|
|
|
+ if(configMap == null){
|
|
|
+ log.error("耳标离线过程丢弃数据时长属性未配置.采用默认配置参数 setTimeDiff="+setTimeDiff);
|
|
|
+ }else{
|
|
|
+ setTimeDiff = Integer.parseInt(configMap.get("configValue")+"");
|
|
|
+ System.out.println("eartagOfflineTime >>>>>>>>>>>> "+setTimeDiff);
|
|
|
}
|
|
|
countMap.put("fisrtStatus", false);
|
|
|
if (timeDifference / 1000 < setTimeDiff) {
|
|
@@ -980,11 +1050,6 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Autowired
|
|
|
- private BasePigpenEntityRepo basePigpenRepo;
|
|
|
- @Autowired
|
|
|
- private BizBaseStageEntityRepo bizBaseStageRepo;
|
|
|
-
|
|
|
//更新耳标注册数据
|
|
|
public void updateEartagRegister(String earmark, String deviceCode, String bat, Timestamp nowTimestamp, java.sql.Date todayDate, String farmId) {
|
|
|
EartagDeviceRegisterEntity deviceRegisterEntity = deviceRegisterRepo.getByDeviceCode(deviceCode);
|
|
@@ -1324,18 +1389,15 @@ 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);
|
|
|
} else {
|
|
|
act = Integer.parseInt(eartagJo.getString("act"));
|
|
|
- System.out.println("2 act=" + act);
|
|
|
long lastAct = Long.parseLong(countMap.get("act").toString());
|
|
|
- System.out.println("3 lastAct=" + lastAct);
|
|
|
if (act > lastAct) {
|
|
|
act1 = act - lastAct;
|
|
|
+ }else{
|
|
|
+ act1 = act;
|
|
|
}
|
|
|
- System.out.println("3 act1=" + act1);
|
|
|
}
|
|
|
- System.out.println("4 act1=" + act1);
|
|
|
DateUtil dateUtil = new DateUtil();
|
|
|
EartagData2Entity dataEntity = new EartagData2Entity();
|
|
|
dataEntity.setCmdHeader(eartagJo.getString("cmdHeader"));
|
|
@@ -1356,15 +1418,15 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
dataEntity.setFarmId(farmId);
|
|
|
// dataEntity.setAskDate(new java.sql.Date(dateUtil.parseDate(getAskDate(eartagJo.getString("askTime"))).getTime()));
|
|
|
eartagData2EntityRepo.saveAndFlush(dataEntity);
|
|
|
-
|
|
|
//更新耳标注册表中的运动量数据
|
|
|
EartagEartagRegister2Entity eartagRegister2Entity = eartagEartagRegister2EntityRepo.getOneByEarmark(earmark, farmId);
|
|
|
if (eartagRegister2Entity != null) {
|
|
|
-// System.out.println("更新耳标=" + earmark + "," + act1);
|
|
|
eartagRegister2Entity.setAct(act1);
|
|
|
eartagEartagRegister2EntityRepo.saveAndFlush(eartagRegister2Entity);
|
|
|
}
|
|
|
- //最新的耳标数据覆盖老数据
|
|
|
+ //{异常统计和异常报警}
|
|
|
+ abnormalCountAndAlarm(eartagJo, todayDate, nowTimestamp, farmId);
|
|
|
+ //{最新的耳标数据覆盖老数据}
|
|
|
cacheService.putEartagFlowToCache(dataEntity.getEarmark(), dataEntity);
|
|
|
}
|
|
|
}
|