Commit d48161c1 by 汪志阳

fix:bug fix

parent cb4d4438
......@@ -11,7 +11,6 @@ import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.enums.redis.RedisConst;
import com.makeit.service.platform.alarm.PlatAlarmConfigService;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.utils.AlarmConfigCacheUtil;
import com.makeit.utils.AlarmRedisDTO;
......@@ -20,7 +19,6 @@ import com.makeit.utils.redis.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
......@@ -38,8 +36,6 @@ public class OffBedAlarm implements IAlarm {
private final PlatAlarmConfigEnum.AlarmTypeEnum alarmTypeEnum = PlatAlarmConfigEnum.AlarmTypeEnum.OFF_BED;
@Resource
private AlarmConfigCacheUtil alarmConfigCacheUtil;
@Autowired
private PlatAlarmConfigService platAlarmConfigService;
@Override
public boolean support(String alarmType) {
......@@ -53,9 +49,6 @@ public class OffBedAlarm implements IAlarm {
*/
@Override
public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) {
if (1 == 1) {
return;
}
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
log.info("执行离床checkConfig方法:");
......@@ -65,7 +58,6 @@ public class OffBedAlarm implements IAlarm {
return;
}
PlatAlarmConfig config = alarmConfigCacheUtil.get(platDevice.getOrgId(), PlatAlarmConfigEnum.AlarmTypeEnum.OFF_BED.getValue());
// log.info("当前config:{},dto config:{}", config.getRuleConfig(), platAlarmCheckDTO.getPlatAlarmConfig().getRuleConfig());
offBedCheckAlarm(config, platAlarmCheckDTO, platDevice);
}
......@@ -114,7 +106,7 @@ public class OffBedAlarm implements IAlarm {
boolean isOffBed = "0".equals(personState);
// 1-有人 0-无人
AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId);
if (!isOffBed && alarmRedisDTO != null) {
if ("1".equals(personState)) {
log.info("deviceId:{},离床告警有人状态下,删除redis", deviceId);
RedisUtil.delete(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId);
return;
......@@ -126,7 +118,10 @@ public class OffBedAlarm implements IAlarm {
}
if (isOffBed) {
// 离床推送redis
sendToRedis(alarmRedisDTO, deviceId);
if (sendToRedis(alarmRedisDTO, deviceId)) {
//第一次离床
return;
}
alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId);
......@@ -168,12 +163,18 @@ public class OffBedAlarm implements IAlarm {
LocalTime firstTime = longToTime(firstOffBedLong).toLocalTime();
boolean isInTime = firstTime.isAfter(startTime) || firstTime.isBefore(endTime);
// LocalTime endTimeLimit = endTime.plusMinutes(-duration);
LocalTime endTimeLimit = endTime.plusMinutes(-duration);
// 离床时间在范围内
if (isInTime && isOverTime) {
// 离床时间为23:00-1:00 持续时间5分钟 ,第一次离床为0:55,满足条件的时间>1:00,不预警
if (firstTime.isAfter(endTimeLimit) && firstTime.isBefore(endTime)) {
log.info("deviceId:{},UnCrossDay第一次离床时间,{}+持续时间:{}将超过范围,{}", deviceId, firstTime, duration, endTime);
return;
}
platAlarmCheckDTO.setAbnormalValue(String.valueOf(currentTimeMillis - firstOffBedLong));
log.info("deviceId:{},cross离床告警离床时间在范围时间内,配置:{}", deviceId, config.getRuleConfig());
platAlarmCheckDTO.setPlatAlarmConfig(config);
// platAlarmCheckDTO.setAlarmRecordId(IdWorker.getIdStr(PlatAlarmRecord.class));
noticeAlarm(alarmRedisDTO, platAlarmCheckDTO, deviceId);
return;
}
......@@ -255,7 +256,7 @@ public class OffBedAlarm implements IAlarm {
}
}
private void sendToRedis(AlarmRedisDTO alarmRedisDTO, String deviceId) {
private boolean sendToRedis(AlarmRedisDTO alarmRedisDTO, String deviceId) {
Date now = toDate();
// 第一次上报
if (alarmRedisDTO == null) {
......@@ -264,9 +265,11 @@ public class OffBedAlarm implements IAlarm {
alarmRedisDTO.setStart(now);
alarmRedisDTO.setStartLong(currentLong());
RedisUtil.set(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId, alarmRedisDTO);
return true;
} else {
alarmRedisDTO.setStart(now);
RedisUtil.set(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId, alarmRedisDTO);
return false;
}
}
......
package com.makeit.mqtt;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -39,7 +37,6 @@ import java.util.List;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Component
......@@ -206,10 +203,6 @@ public class PushCallback implements MqttCallback {
logger.error("该设备没有告警配置,设备iot-id,iot_tenantId:" + deviceId+","+iot_tenantId);
return;
}
List<PlatAlarmConfig> configList = deviceAlarmConfigList.stream().filter(f -> "5".equals(f.getAlarmType())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(configList)) {
logger.info("离床预警config集合:{}", JSONUtil.toJsonStr(configList));
}
for (PlatAlarmConfig config : deviceAlarmConfigList) {
String alarmType = config.getAlarmType();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment