|
@@ -82,40 +82,33 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
//2、更新设备注册表(活动状态、活动更新时间,更新类型)
|
|
|
//3、更新在线统计表(心跳数,心跳最早上传时间,最后一次上传时间)
|
|
|
//4、更新总状态表表
|
|
|
+ //Step1:更新设备注册表[设置活动状态为1,设置活动状态更新时间]
|
|
|
+ //Step2:更新在线统计[心跳数+1,心跳第一次上传时间,心跳最后一次时间],预先判断该数据是否存在,如果不存在要先添加记录,如果存在就修改数据
|
|
|
+
|
|
|
|
|
|
- //1、{保存设备心跳记录}
|
|
|
- saveDeviceHeartbeat(dataJo);
|
|
|
- //2、{更新设备注册表}
|
|
|
-// updateDeviceRegister(dataJo);
|
|
|
- //3、{更新在线统计表}
|
|
|
-// updateDeviceOnline(dataJo);
|
|
|
- //4、{更新总状态表}
|
|
|
-// updateAllStatus(dataJo);
|
|
|
- //--------------------------------------------------------------------------------------------
|
|
|
System.out.println("dataJo>"+dataJo);
|
|
|
String deviceCode = dataJo.getString("device");
|
|
|
//{获取牧场id}
|
|
|
String farmId = getFarmIdByDeviceCode(deviceCode);
|
|
|
- System.out.println("## farmId>>"+farmId);
|
|
|
String todayDateText = new com.huimv.eartag2.common.utils.DateUtil().getTodayDateText();
|
|
|
java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
|
|
|
Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
|
|
|
|
|
|
- //Step1:更新设备注册表[设置活动状态为1,设置活动状态更新时间]
|
|
|
- //Step2:更新在线统计[心跳数+1,心跳第一次上传时间,心跳最后一次时间],预先判断该数据是否存在,如果不存在要先添加记录,如果存在就修改数据
|
|
|
- String updateType="设备心跳";
|
|
|
- //# 更新设备注册表 #
|
|
|
+ //1、{保存设备心跳记录}
|
|
|
+ saveDeviceHeartbeat(dataJo);
|
|
|
+
|
|
|
+ String updateType="设备心跳";
|
|
|
+ //2、{更新设备注册表}
|
|
|
updateDeviceRegister(farmId, deviceCode,nowTimestamp,updateType);
|
|
|
- //# 更新在线统计 #
|
|
|
- updateDeviceOnlineCount(farmId, deviceCode,todayDateText,nowTimestamp,todayDate);
|
|
|
+ //3、{更新在线统计表}
|
|
|
+ updateDeviceOnlineCountWithHeartbeat(farmId, deviceCode,todayDateText,nowTimestamp,todayDate);
|
|
|
|
|
|
//判断该设备编号是否存在缓存在线集合当中;
|
|
|
Boolean isExist = cacheService.isExistDeviceOnlineSet(farmId, deviceCode, todayDateText);
|
|
|
- System.out.println("# 处理心跳 isExist >>"+isExist);
|
|
|
if (!isExist) {
|
|
|
- System.out.println("## 心跳 2");
|
|
|
- //# 更新总状态表 #
|
|
|
- updateDeviceAllStatus(farmId, deviceCode,todayDateText,nowTimestamp,todayDate);
|
|
|
+ //4、{更新总状态表}
|
|
|
+// updateDeviceAllStatus(farmId, deviceCode,todayDateText,nowTimestamp,todayDate);
|
|
|
+ updateEnvtempOfDeviceAllStatus(farmId, todayDateText,todayDate,nowTimestamp);
|
|
|
|
|
|
//# 将新设备编号加入在线缓存 #
|
|
|
cacheService.putDeviceToOnlineSet(farmId, deviceCode,todayDateText);
|
|
@@ -221,15 +214,43 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
}
|
|
|
|
|
|
//更新在线状态
|
|
|
+ public void updateDeviceOnlineCountWithHeartbeat(String farmId, String deviceCode, String todayDateText, Timestamp nowTimestamp, java.sql.Date todayDate) throws ParseException {
|
|
|
+ String hashKey = BizConst.DEVICE_REGISTER_PREFIX+deviceCode;
|
|
|
+ //计算设备别名
|
|
|
+ String alias = (String)cacheService.getHashProperty(hashKey,"deviceAlias");
|
|
|
+ //读取在线日期
|
|
|
+ EartagDeviceOnlineEntity eartagDeviceOnlineEntity = eartagDeviceOnlineRepo.getDeviceOnline(deviceCode, todayDateText);
|
|
|
+ if (eartagDeviceOnlineEntity == null) {
|
|
|
+ Integer heartbeatTotal = 1;
|
|
|
+ Integer envtempTotal = 0;
|
|
|
+ Timestamp heartbeatFirstTime = nowTimestamp;
|
|
|
+ Timestamp heartbeatLastTime = nowTimestamp;
|
|
|
+ Timestamp envtempFirstTime = null;
|
|
|
+ Timestamp envtempLastTime = null;
|
|
|
+ //{计算耳标总数}
|
|
|
+// Integer eartagTotal = eartagService.getEartagRegTotalByFarmId(farmId);
|
|
|
+ Integer eartagTotal = 0;
|
|
|
+ //{新建设备在线统计并创建缓存}
|
|
|
+ newDeviceOnline(deviceCode,alias,heartbeatTotal,envtempTotal,eartagTotal,todayDate,farmId,heartbeatFirstTime,heartbeatLastTime,envtempFirstTime,envtempLastTime);
|
|
|
+ }else{
|
|
|
+ eartagDeviceOnlineEntity.setAlias(alias);
|
|
|
+ int heartbeatTotal = eartagDeviceOnlineEntity.getHeartbeatTotal();
|
|
|
+ eartagDeviceOnlineEntity.setHeartbeatTotal(++heartbeatTotal);
|
|
|
+ if(eartagDeviceOnlineEntity.getHeartbeatFirstTime() == null){
|
|
|
+ eartagDeviceOnlineEntity.setHeartbeatFirstTime(nowTimestamp);
|
|
|
+ }
|
|
|
+ eartagDeviceOnlineEntity.setHeartbeatLastTime(nowTimestamp);
|
|
|
+ eartagDeviceOnlineRepo.saveAndFlush(eartagDeviceOnlineEntity);
|
|
|
+ //更新设备在线缓存数据
|
|
|
+ cacheService.putDeviceInOnline(deviceCode,eartagDeviceOnlineEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新在线状态
|
|
|
public void updateDeviceOnlineCount(String farmId, String deviceCode, String todayDateText, Timestamp nowTimestamp, java.sql.Date todayDate) throws ParseException {
|
|
|
- //# 先判断今天在线记录是否存在 #
|
|
|
- //# 更新数据表 #
|
|
|
- //# 更新缓存 #
|
|
|
- System.out.println("## 心跳 1.2/2.2");
|
|
|
//
|
|
|
EartagDeviceOnlineEntity deviceOnlineEntity = deviceOnlineRepo.getDeviceOnline(deviceCode,todayDateText);
|
|
|
if(deviceOnlineEntity == null){
|
|
|
- System.out.println("## 心跳 1.2.1/2.2.1");
|
|
|
//不存在;
|
|
|
EartagDeviceOnlineEntity newDeviceOnlineEntity = new EartagDeviceOnlineEntity();
|
|
|
newDeviceOnlineEntity.setDeviceCode(deviceCode);
|
|
@@ -492,10 +513,6 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
* @Time : 14:27
|
|
|
*/
|
|
|
private void updateDeviceOnlineWithEnvtemp(String farmId, String deviceCode,String envtemp,java.sql.Date todayDate,Timestamp nowTimestamp) throws ParseException {
|
|
|
- ///////////////////////////////////////////////
|
|
|
- //Step1:更新数据库
|
|
|
- //Step2:更新在线缓存
|
|
|
- ///////////////////////////////////////////////
|
|
|
String todayDateText = new com.huimv.eartag2.common.utils.DateUtil().getTodayDateText();
|
|
|
String hashKey = BizConst.DEVICE_REGISTER_PREFIX+deviceCode;
|
|
|
//计算设备别名
|
|
@@ -510,14 +527,18 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
Timestamp envtempFirstTime = nowTimestamp;
|
|
|
Timestamp envtempLastTime = nowTimestamp;
|
|
|
//{计算耳标总数}
|
|
|
- Integer eartagTotal = eartagService.getEartagRegTotalByFarmId(farmId);
|
|
|
+// Integer eartagTotal = eartagService.getEartagRegTotalByFarmId(farmId);
|
|
|
+ Integer eartagTotal = 0;
|
|
|
//{新建设备在线统计并创建缓存}
|
|
|
newDeviceOnline(deviceCode,alias,heartbeatTotal,envtempTotal,eartagTotal,envtemp,todayDate,farmId,heartbeatFirstTime,heartbeatLastTime,envtempFirstTime,envtempLastTime);
|
|
|
}else{
|
|
|
- int envtempTotal = eartagDeviceOnlineEntity.getEnvtempTotal();
|
|
|
eartagDeviceOnlineEntity.setAlias(alias);
|
|
|
+ int envtempTotal = eartagDeviceOnlineEntity.getEnvtempTotal();
|
|
|
eartagDeviceOnlineEntity.setEnvtempTotal(++envtempTotal);
|
|
|
eartagDeviceOnlineEntity.setLastEnvtemp(envtemp);
|
|
|
+ if(eartagDeviceOnlineEntity.getEnvtempFirstTime() == null){
|
|
|
+ eartagDeviceOnlineEntity.setEnvtempFirstTime(nowTimestamp);
|
|
|
+ }
|
|
|
eartagDeviceOnlineEntity.setEnvtempLastTime(nowTimestamp);
|
|
|
eartagDeviceOnlineRepo.saveAndFlush(eartagDeviceOnlineEntity);
|
|
|
//更新设备在线缓存数据
|
|
@@ -527,6 +548,34 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
|
|
|
/**
|
|
|
* @Method : newDeviceOnline
|
|
|
+ * @Description : 通过心跳创建在线统计记录
|
|
|
+ * @Params : [deviceCode, alias, heartbeatTotal, envtempTotal, eartagTotal, todayDate, farmId, heartbeatFirstTime, heartbeatLastTime, envtempFirstTime, envtempLastTime]
|
|
|
+ * @Return : void
|
|
|
+ *
|
|
|
+ * @Author : ZhuoNing
|
|
|
+ * @Date : 2022/3/14
|
|
|
+ * @Time : 21:23
|
|
|
+ */
|
|
|
+ private void newDeviceOnline(String deviceCode, String alias, Integer heartbeatTotal, Integer envtempTotal, Integer eartagTotal, java.sql.Date todayDate, String farmId, Timestamp heartbeatFirstTime, Timestamp heartbeatLastTime, Timestamp envtempFirstTime, Timestamp envtempLastTime) {
|
|
|
+ EartagDeviceOnlineEntity newEartagDeviceOnlineEntity = new EartagDeviceOnlineEntity();
|
|
|
+ newEartagDeviceOnlineEntity.setDeviceCode(deviceCode);
|
|
|
+ newEartagDeviceOnlineEntity.setAlias(alias);
|
|
|
+ newEartagDeviceOnlineEntity.setHeartbeatTotal(heartbeatTotal);;
|
|
|
+ newEartagDeviceOnlineEntity.setEnvtempTotal(envtempTotal);
|
|
|
+ newEartagDeviceOnlineEntity.setEartagTotal(eartagTotal);
|
|
|
+ newEartagDeviceOnlineEntity.setAddDate(todayDate);
|
|
|
+ newEartagDeviceOnlineEntity.setFarmId(farmId);
|
|
|
+ newEartagDeviceOnlineEntity.setHeartbeatFirstTime(heartbeatFirstTime);
|
|
|
+ newEartagDeviceOnlineEntity.setHeartbeatLastTime(heartbeatLastTime);
|
|
|
+ newEartagDeviceOnlineEntity.setEnvtempFirstTime(envtempFirstTime);
|
|
|
+ newEartagDeviceOnlineEntity.setEnvtempLastTime(envtempLastTime);
|
|
|
+ eartagDeviceOnlineRepo.saveAndFlush(newEartagDeviceOnlineEntity);
|
|
|
+ //将新建的设备在线数据更新到设备在线缓存
|
|
|
+ cacheService.putDeviceInOnline(deviceCode,newEartagDeviceOnlineEntity);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Method : newDeviceOnline
|
|
|
* @Description : 创建设备在线
|
|
|
* @Params : [farmId, deviceCode]
|
|
|
* @Return : void
|