Commit 1e94d1b7 by 汪志阳

fix:多租户offbed

parent 6d06b4bf
...@@ -3,7 +3,6 @@ package com.makeit.mapper.platform.alarm; ...@@ -3,7 +3,6 @@ package com.makeit.mapper.platform.alarm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.dto.platform.alarm.PlatHealthConfigDTO; import com.makeit.dto.platform.alarm.PlatHealthConfigDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig; import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -23,5 +22,4 @@ public interface PlatAlarmConfigMapper extends BaseMapper<PlatAlarmConfig> { ...@@ -23,5 +22,4 @@ public interface PlatAlarmConfigMapper extends BaseMapper<PlatAlarmConfig> {
*/ */
List<PlatHealthConfigDTO> getHealthConfigList(); List<PlatHealthConfigDTO> getHealthConfigList();
List<PlatAlarmConfig> listOffBed(@Param("deviceId") String deviceId);
} }
...@@ -43,5 +43,5 @@ public interface PlatAlarmConfigService extends IService<PlatAlarmConfig> { ...@@ -43,5 +43,5 @@ public interface PlatAlarmConfigService extends IService<PlatAlarmConfig> {
void initData(); void initData();
List<PlatAlarmConfig> listOfBed(String deviceId); List<PlatAlarmConfig> listOfBed(List<String> orgIds);
} }
...@@ -239,7 +239,7 @@ public class OffBedAlarm implements IAlarm { ...@@ -239,7 +239,7 @@ public class OffBedAlarm implements IAlarm {
} }
LocalDateTime now = currentTime(); LocalDateTime now = currentTime();
LocalTime localTime = LocalTime.now(); LocalTime localTime = LocalTime.now().plusHours(9);
if (!isInTime && localTime.isAfter(startTime) && localTime.isBefore(endTime)) { if (!isInTime && localTime.isAfter(startTime) && localTime.isBefore(endTime)) {
long mills = Duration.between(startLocalDteTime, now).toMillis() / 1000; long mills = Duration.between(startLocalDteTime, now).toMillis() / 1000;
boolean noInOverTime = mills >= duration * 60; boolean noInOverTime = mills >= duration * 60;
...@@ -326,7 +326,7 @@ public class OffBedAlarm implements IAlarm { ...@@ -326,7 +326,7 @@ public class OffBedAlarm implements IAlarm {
} }
private static LocalDateTime currentTime() { private static LocalDateTime currentTime() {
return LocalDateTime.now(); return LocalDateTime.now().plusHours(9);
// return LocalDateTime.now(); // return LocalDateTime.now();
} }
......
...@@ -15,6 +15,7 @@ import com.makeit.entity.platform.auth.PlatUser; ...@@ -15,6 +15,7 @@ import com.makeit.entity.platform.auth.PlatUser;
import com.makeit.enums.CodeMessageEnum; import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum; import com.makeit.enums.CommonEnum;
import com.makeit.enums.id.IdConst; import com.makeit.enums.id.IdConst;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.global.aspect.tenant.TenantIdIgnore; import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.global.aspect.tenant.TenantIdUtil; import com.makeit.global.aspect.tenant.TenantIdUtil;
...@@ -262,7 +263,8 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe ...@@ -262,7 +263,8 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe
@Override @Override
@TenantIdIgnore @TenantIdIgnore
public List<PlatAlarmConfig> listOfBed(String deviceId) { public List<PlatAlarmConfig> listOfBed(List<String> orgIds) {
return configMapper.listOffBed(deviceId); return list(Wrappers.<PlatAlarmConfig>lambdaQuery().in(PlatAlarmConfig::getOrgId, orgIds).eq(PlatAlarmConfig::getAlarmType,
PlatAlarmConfigEnum.AlarmTypeEnum.OFF_BED.getValue()));
} }
} }
...@@ -97,4 +97,6 @@ public interface PlatDeviceService extends IService<PlatDevice> { ...@@ -97,4 +97,6 @@ public interface PlatDeviceService extends IService<PlatDevice> {
void devicePushLog(MultipartFile multipartFile, String deviceId) throws IOException; void devicePushLog(MultipartFile multipartFile, String deviceId) throws IOException;
void syncIotProperties(String deviceId, JSONObject iotProperties); void syncIotProperties(String deviceId, JSONObject iotProperties);
List<PlatDevice> listOffBed(String oriDeviceId);
} }
...@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -20,7 +21,6 @@ import com.makeit.common.entity.BaseBusEntity; ...@@ -20,7 +21,6 @@ import com.makeit.common.entity.BaseBusEntity;
import com.makeit.common.entity.BaseEntity; import com.makeit.common.entity.BaseEntity;
import com.makeit.common.page.PageReqDTO; import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO; import com.makeit.common.page.PageVO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.config.ShengwangProperties; import com.makeit.config.ShengwangProperties;
import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO; import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO;
import com.makeit.dto.platform.device.*; import com.makeit.dto.platform.device.*;
...@@ -76,12 +76,10 @@ import com.makeit.utils.data.convert.StreamUtil; ...@@ -76,12 +76,10 @@ import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import com.makeit.utils.sql.join.JoinUtil; import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.vo.platform.device.PlatChildDeviceListVO; import com.makeit.vo.platform.device.PlatChildDeviceListVO;
import com.makeit.vo.platform.device.PlatDeviceActiveVO;
import com.makeit.vo.platform.device.PlatDeviceListVO; import com.makeit.vo.platform.device.PlatDeviceListVO;
import com.makeit.vo.platform.device.PlatDeviceViewVO; import com.makeit.vo.platform.device.PlatDeviceViewVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.aspectj.weaver.ast.Var;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -1122,4 +1120,9 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -1122,4 +1120,9 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
return platDeviceBaseAttrDTO; return platDeviceBaseAttrDTO;
} }
@Override
@TenantIdIgnore
public List<PlatDevice> listOffBed(String oriDeviceId) {
return list(Wrappers.<PlatDevice>lambdaQuery().eq(PlatDevice::getOriDeviceId, oriDeviceId));
}
} }
...@@ -23,11 +23,4 @@ ...@@ -23,11 +23,4 @@
</select> </select>
<select id="listOffBed" resultType="com.makeit.entity.platform.alarm.PlatAlarmConfig">
select *
from plat_alarm_config
where org_id in (
select org_id from plat_device where id = #{deviceId} and del_flag = 0)
and alarm_type = 5 and tenant_id != 0
</select>
</mapper> </mapper>
package com.makeit.mqtt; package com.makeit.mqtt;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -8,6 +9,7 @@ import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO; ...@@ -8,6 +9,7 @@ import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig; import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import com.makeit.entity.platform.device.PlatDevice; import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.saas.analysis.SaasSleepAnalysisModel; import com.makeit.entity.saas.analysis.SaasSleepAnalysisModel;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.global.aspect.tenant.TenantIdIgnore; import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.module.iot.enums.DeviceState; import com.makeit.module.iot.enums.DeviceState;
import com.makeit.module.iot.vo.DeviceInfo; import com.makeit.module.iot.vo.DeviceInfo;
...@@ -18,6 +20,7 @@ import com.makeit.service.platform.device.PlatDeviceService; ...@@ -18,6 +20,7 @@ import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.saas.SaasSleepAnalysisModelService; import com.makeit.service.saas.SaasSleepAnalysisModelService;
import com.makeit.utils.AlarmConfigCacheUtil; import com.makeit.utils.AlarmConfigCacheUtil;
import com.makeit.utils.DeviceCacheUtil; import com.makeit.utils.DeviceCacheUtil;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.redis.RedisUtil; import com.makeit.utils.redis.RedisUtil;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
...@@ -34,9 +37,11 @@ import org.springframework.stereotype.Component; ...@@ -34,9 +37,11 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Component @Component
...@@ -203,9 +208,14 @@ public class PushCallback implements MqttCallback { ...@@ -203,9 +208,14 @@ public class PushCallback implements MqttCallback {
logger.error("该设备没有告警配置,设备iot-id,iot_tenantId:" + deviceId+","+iot_tenantId); logger.error("该设备没有告警配置,设备iot-id,iot_tenantId:" + deviceId+","+iot_tenantId);
return; return;
} }
handleOffBed(platDevice,properties,messageType);
for (PlatAlarmConfig config : deviceAlarmConfigList) { for (PlatAlarmConfig config : deviceAlarmConfigList) {
String alarmType = config.getAlarmType(); String alarmType = config.getAlarmType();
if (PlatAlarmConfigEnum.AlarmTypeEnum.OFF_BED.getValue().equals(alarmType)) {
continue;
}
for (IAlarm alarm : alarmList) { for (IAlarm alarm : alarmList) {
if (alarm.support(alarmType)) { if (alarm.support(alarmType)) {
//防止呼吸心率的数据交叉 //防止呼吸心率的数据交叉
...@@ -230,6 +240,47 @@ public class PushCallback implements MqttCallback { ...@@ -230,6 +240,47 @@ public class PushCallback implements MqttCallback {
} }
/**
* 离床预警
* @param platDevice
* @param properties
* @param messageType
*/
private void handleOffBed(PlatDevice platDevice, JSONObject properties, String messageType) {
List<PlatDevice> platDeviceList = platDeviceService.listOffBed(platDevice.getOriDeviceId());
if (CollUtil.isEmpty(platDeviceList)) {
return;
}
List<String> orgIds = platDeviceList.stream().map(PlatDevice::getOrgId).collect(Collectors.toList());
List<PlatAlarmConfig> configList = alarmConfigService.listOfBed(orgIds);
Map<String, PlatAlarmConfig> configMap = StreamUtil.toMap(configList, PlatAlarmConfig::getOrgId);
String alarmType = PlatAlarmConfigEnum.AlarmTypeEnum.OFF_BED.getValue();
platDeviceList.forEach(device -> {
for (IAlarm alarm : alarmList) {
if (alarm.support(alarmType)) {
PlatAlarmConfig config = configMap.get(device.getOrgId());
if (config == null) {
logger.info("handleOffBed 未找到对应的config");
continue;
}
//防止呼吸心率的数据交叉
PlatAlarmCheckDTO platAlarmCheckDTO = new PlatAlarmCheckDTO();
//告警配置
platAlarmCheckDTO.setPlatAlarmConfig(config);
//设备信息
platAlarmCheckDTO.setPlatDevice(device);
//iot上报数据
platAlarmCheckDTO.setProperties(properties);
//设备状态
platAlarmCheckDTO.setMessageType(messageType);
alarm.checkConfig(platAlarmCheckDTO);
}
}
});
}
private void cacheSpaceFallDeviceData(String deviceSpaceTempData, DeviceInfo device, long currentSecond) { private void cacheSpaceFallDeviceData(String deviceSpaceTempData, DeviceInfo device, long currentSecond) {
long maxSize = 10L; long maxSize = 10L;
String key = deviceSpaceTempData + device.getDeviceId(); String key = deviceSpaceTempData + device.getDeviceId();
......
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