Commit 2b64171f by 李小龙

saas端 设备实时数据

parent 6fba620b
Showing with 425 additions and 49 deletions
...@@ -49,6 +49,14 @@ public class SwaggerSaasConfig { ...@@ -49,6 +49,14 @@ public class SwaggerSaasConfig {
} }
@Bean @Bean
public SwaggerModuleConfig deviceModule() {
SwaggerModuleConfig config = new SwaggerModuleConfig();
config.setPackageList(Arrays.asList("com.makeit.controller.device"));
config.setModuleName("设备管理");
return config;
}
@Bean
public Docket platApi() { public Docket platApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2) Docket docket = new Docket(DocumentationType.SWAGGER_2)
...@@ -91,6 +99,20 @@ public class SwaggerSaasConfig { ...@@ -91,6 +99,20 @@ public class SwaggerSaasConfig {
return builder.build(); return builder.build();
} }
@Bean
public Docket deviceApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("01-saas端设备管理");
ApiSelectorBuilder builder = docket.select();
//api过滤
builder = builder.apis(
RequestHandlerSelectors.basePackage("com.makeit.controller.device")
);
return builder.build();
}
private ApiInfo apiInfo() { private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("IOT文档") return new ApiInfoBuilder().title("IOT文档")
.description("服务端接口文档") .description("服务端接口文档")
......
package com.makeit.controller.saas; package com.makeit.controller.device;
import com.makeit.common.dto.BaseIdDTO; import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.page.PageReqDTO; import com.makeit.common.page.PageReqDTO;
...@@ -47,20 +47,4 @@ public class SaasDeviceController { ...@@ -47,20 +47,4 @@ public class SaasDeviceController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@ApiOperation("实时数据")
@PostMapping("realTimeDate")
@TenantIdIgnore
public ApiResponseEntity<PlatDevice> realTimeDate(@RequestBody PlatDevice platDevice) {
//todo
return null;
}
@ApiOperation("数据分析")
@PostMapping("dataAnalysis")
@TenantIdIgnore
public ApiResponseEntity<PlatDevice> dataAnalysis(@RequestBody PlatDevice platDevice) {
//todo
return null;
}
} }
package com.makeit.controller.device;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeBodyVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "租户管理-租户设备实时数据")
@RestController
@RequestMapping("/saas/device/realTime")
public class SaasDeviceRealTimeController {
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@ApiOperation("现在状态")
@PostMapping("nowStatus")
@TenantIdIgnore
public ApiResponseEntity<PlatElderRealTimeNowVO> nowStatus(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.nowStatus(platElderIdDTO));
}
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
@TenantIdIgnore
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.heartRespiratory(platElderIdDTO));
}
@ApiOperation("体动")
@PostMapping("body")
@TenantIdIgnore
public ApiResponseEntity<PlatElderRealTimeBodyVO> body(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.body(platElderIdDTO));
}
@ApiOperation("坐标")
@PostMapping("coordinate")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinate(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.coordinate(platElderIdDTO));
}
}
package com.makeit.controller.device;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderDayReportDayService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.report.day.PlatElderBehaviorDistributionVO;
import com.makeit.vo.platform.elder.report.day.PlatElderBehaviorExceptionRecordVO;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationRecordVO;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepDiagramVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* <p>
* 长者基本信息 前端控制器
* </p>
*
* @author eugene young
* @since 2023-08-29
*/
@Api(tags = "数据分析-日报")
@RestController
@RequestMapping("/saas/device/report/day")
public class SaasDeviceReportDayController {
@Autowired
private PlatElderDayReportDayService platElderDayReportDayService;
@ApiOperation("睡眠评价")
@PostMapping("sleepEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderSleepEvaluationVO> sleepEvaluation(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("睡眠图表")
@PostMapping("sleepDiagram")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderSleepDiagramVO>> sleepDiagram(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸评价")
@PostMapping("heartRespiratoryEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率异常记录")
@PostMapping("heartExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> heartExceptionRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("呼吸率异常记录")
@PostMapping("respiratoryExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> respiratoryExceptionRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderRealTimeHeartRespiratoryVO>> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.heartRespiratory(platElderIdDTO));
}
@ApiOperation("行为异常记录")
@PostMapping("behaviorExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderBehaviorExceptionRecordVO>> behaviorExceptionRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("跌倒记录")
@PostMapping("failRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<String>> failRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("坐标记录")
@PostMapping("coordinateList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinateList(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.coordinateList(platElderIdDTO));
}
@ApiOperation("行为辐射")
@PostMapping("behaviorDistribution")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderBehaviorDistributionVO>> behaviorDistribution(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
}
package com.makeit.controller.device;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationVO;
import com.makeit.vo.platform.elder.report.day.PlatElderReportMonthVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import com.makeit.vo.platform.elder.report.week.PlatElderComprehensiveEvaluationVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 长者基本信息 前端控制器
* </p>
*
* @author eugene young
* @since 2023-08-29
*/
@Api(tags = "数据分析-月报")
@RestController
@RequestMapping("/saas/device/report/month")
public class SaasDeviceReportMonthController {
@ApiOperation("综合评价")
@PostMapping("comprehensiveEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderComprehensiveEvaluationVO> comprehensiveEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("睡眠评价")
@PostMapping("sleepEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderSleepEvaluationVO> sleepEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸评价")
@PostMapping("heartRespiratoryEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("月报表")
@PostMapping("reportMonth")
@TenantIdIgnore
public ApiResponseEntity<PlatElderReportMonthVO> reportMonth(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
}
package com.makeit.controller.device;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderDayReportWeekService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.report.day.PlatElderBehaviorDistributionVO;
import com.makeit.vo.platform.elder.report.day.PlatElderBehaviorExceptionRecordVO;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationRecordVO;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import com.makeit.vo.platform.elder.report.week.PlatElderComprehensiveEvaluationVO;
import com.makeit.vo.platform.elder.report.week.PlatElderRealTimeHeartRespiratoryWeekVO;
import com.makeit.vo.platform.elder.report.week.PlatElderSleepDiagramWeekVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* <p>
* 长者基本信息 前端控制器
* </p>
*
* @author eugene young
* @since 2023-08-29
*/
@Api(tags = "数据分析-周报")
@RestController
@RequestMapping("/saas/device/report/week")
public class SaasDeviceReportWeekController {
@Autowired
private PlatElderDayReportWeekService platElderDayReportWeekService;
@ApiOperation("综合评价")
@PostMapping("comprehensiveEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderComprehensiveEvaluationVO> comprehensiveEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("睡眠评价")
@PostMapping("sleepEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderSleepEvaluationVO> sleepEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("睡眠图表")
@PostMapping("sleepDiagram")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderSleepDiagramWeekVO>> sleepDiagram(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸评价")
@PostMapping("heartRespiratoryEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率异常记录")
@PostMapping("heartExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> heartExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("呼吸率异常记录")
@PostMapping("respiratoryExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> respiratoryExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
@TenantIdIgnore
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryWeekVO> heartRespiratory(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("行为异常记录")
@PostMapping("behaviorExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderBehaviorExceptionRecordVO>> behaviorExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("跌倒记录")
@PostMapping("failRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<String>> failRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("坐标记录")
@PostMapping("coordinateList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinateList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportWeekService.coordinateList(platElderIdDTO));
}
@ApiOperation("行为辐射")
@PostMapping("behaviorDistribution")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderBehaviorDistributionVO>> behaviorDistribution(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
}
...@@ -102,6 +102,8 @@ public class RedisConst { ...@@ -102,6 +102,8 @@ public class RedisConst {
public static final String ELDER_DAY_DURATION_PREFIX = "plat:day:duration:device:"; public static final String ELDER_DAY_DURATION_PREFIX = "plat:day:duration:device:";
public static final String LOCK_ALARM = "lock:alarm:device:id:";
......
...@@ -17,10 +17,10 @@ public class MsgSendUtil { ...@@ -17,10 +17,10 @@ public class MsgSendUtil {
* 发送消息 * 发送消息
*/ */
public void send(MsgSendDTO msgSendDTO){ public void send(MsgSendDTO msgSendDTO){
for (IMsgSender msgSender : msgSenderList) { // for (IMsgSender msgSender : msgSenderList) {
if(msgSender.support(msgSendDTO.getSendTypeEnum())){ // if(msgSender.support(msgSendDTO.getSendTypeEnum())){
msgSender.send(msgSendDTO); // msgSender.send(msgSendDTO);
} // }
} // }
} }
} }
...@@ -40,7 +40,7 @@ public class MailMsgSender implements IMsgSender { ...@@ -40,7 +40,7 @@ public class MailMsgSender implements IMsgSender {
helper.setText(msgDTO.getOriContent(), false); helper.setText(msgDTO.getOriContent(), false);
mailSender.send(message); mailSender.send(message);
} catch (Exception e) { } catch (Exception e) {
log.error("发送邮箱异常:",e); log.error("发送邮箱异常:",msgDTO,e);
} }
} }
......
...@@ -69,7 +69,7 @@ public class SmsMsgSender implements IMsgSender{ ...@@ -69,7 +69,7 @@ public class SmsMsgSender implements IMsgSender{
log.info("发送短信成功"); log.info("发送短信成功");
} }
}catch (Exception e){ }catch (Exception e){
log.error("发送短信异常:",e); log.error("发送短信异常:",msgDTO,e);
} }
} }
......
...@@ -77,7 +77,7 @@ public class SmsVoiceSender implements IMsgSender{ ...@@ -77,7 +77,7 @@ public class SmsVoiceSender implements IMsgSender{
throw new BusinessException((String) jsonObject.get("status_code")); throw new BusinessException((String) jsonObject.get("status_code"));
} }
}catch (Exception e){ }catch (Exception e){
log.error("发送语音异常:",e); log.error("发送语音异常:",msgDTO,e);
} }
} }
} }
...@@ -70,7 +70,7 @@ public class BehaviorAlarm implements IAlarm { ...@@ -70,7 +70,7 @@ public class BehaviorAlarm implements IAlarm {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice(); PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId(); String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) { if (StringUtils.isBlank(ruleConfigStr)) {
log.info("行为告警配置未配置,告警配置id:" + config.getId()); log.error("行为告警配置未配置,告警配置id:" + config.getId());
return; return;
} }
String personState = Convert.toStr(properties.get("personState")); String personState = Convert.toStr(properties.get("personState"));
...@@ -78,7 +78,7 @@ public class BehaviorAlarm implements IAlarm { ...@@ -78,7 +78,7 @@ public class BehaviorAlarm implements IAlarm {
Integer duration = ruleConfig.getDuration();//分钟 Integer duration = ruleConfig.getDuration();//分钟
PlatDayDurationRecord platDayDurationRecord = dayDurationUtil.get(platDevice.getOriDeviceId()); PlatDayDurationRecord platDayDurationRecord = dayDurationUtil.get(platDevice.getOriDeviceId());
if (platDayDurationRecord == null) { if (platDayDurationRecord == null) {
log.info("行为告警未找到行为异常平均时长,设备id:" + platDevice.getId()); log.error("行为告警未找到行为异常平均时长,设备id:" + platDevice.getId());
return; return;
} }
Long duration1 = platDayDurationRecord.getDuration(); Long duration1 = platDayDurationRecord.getDuration();
...@@ -101,13 +101,13 @@ public class BehaviorAlarm implements IAlarm { ...@@ -101,13 +101,13 @@ public class BehaviorAlarm implements IAlarm {
alarmRedisDTO.setStartLong(endLong); alarmRedisDTO.setStartLong(endLong);
alarmRedisDTO.setStart(now); alarmRedisDTO.setStart(now);
RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO); RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO);
log.info("空间雷达上报进入房间,设备id:" + platDevice.getId()); log.error("空间雷达上报进入房间,设备id:" + platDevice.getId());
return; return;
} }
long count = endLong - startLong; long count = endLong - startLong;
//进入空间时间满足告警时长,判断是否已经告警过了 //进入空间时间满足告警时长,判断是否已经告警过了
if (count / 1000 >= duration && StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.NO.getValue())) { if (count / 1000 >= duration && StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.NO.getValue())) {
log.info("空间雷达发出告警,设备id:" + platDevice.getId()); log.error("空间雷达发出告警,设备id:" + platDevice.getId());
notice(platAlarmCheckDTO); notice(platAlarmCheckDTO);
alarmRedisDTO.setAlarm(CommonEnum.YES.getValue()); alarmRedisDTO.setAlarm(CommonEnum.YES.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO); RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO);
...@@ -146,7 +146,7 @@ public class BehaviorAlarm implements IAlarm { ...@@ -146,7 +146,7 @@ public class BehaviorAlarm implements IAlarm {
//save db //save db
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO); platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
if(CollectionUtils.isEmpty(platAlarmCheckDTO.getPlatElderList())){ if(CollectionUtils.isEmpty(platAlarmCheckDTO.getPlatElderList())){
log.info("未关联长者,设备id:"+platDevice.getId()); log.error("未关联长者,设备id:"+platDevice.getId());
return; return;
} }
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom(); PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
...@@ -171,11 +171,12 @@ public class BehaviorAlarm implements IAlarm { ...@@ -171,11 +171,12 @@ public class BehaviorAlarm implements IAlarm {
@Override @Override
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) { public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
//获取长者 空间信息 //获取长者 空间信息
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO); platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList(); List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) { if (CollectionUtils.isEmpty(platElderList)) {
log.info("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId()); log.error("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
return; return;
} }
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom(); PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
...@@ -197,6 +198,7 @@ public class BehaviorAlarm implements IAlarm { ...@@ -197,6 +198,7 @@ public class BehaviorAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId()); platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName()); platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord); platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者行为异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
} }
} }
} }
...@@ -56,7 +56,7 @@ public class BreathAlarm implements IAlarm { ...@@ -56,7 +56,7 @@ public class BreathAlarm implements IAlarm {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice(); PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId(); String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) { if (StringUtils.isBlank(ruleConfigStr)) {
log.info("呼吸告警配置未配置,告警配置id:" + config.getId()); log.error("呼吸告警配置未配置,告警配置id:" + config.getId());
return; return;
} }
String personState = Convert.toStr(properties.get("personState")); String personState = Convert.toStr(properties.get("personState"));
...@@ -85,14 +85,14 @@ public class BreathAlarm implements IAlarm { ...@@ -85,14 +85,14 @@ public class BreathAlarm implements IAlarm {
alarmRedisDTO.setStart(now); alarmRedisDTO.setStart(now);
alarmRedisDTO.setStartLong(endLong); alarmRedisDTO.setStartLong(endLong);
RedisUtil.set(RedisConst.ALARM_DEVICE_BR_ID + deviceId,alarmRedisDTO); RedisUtil.set(RedisConst.ALARM_DEVICE_BR_ID + deviceId,alarmRedisDTO);
log.info("发现长者呼吸异常,设备id:"+deviceId); log.error("发现长者呼吸异常,设备id:"+deviceId);
return; return;
} }
Long startLong = alarmRedisDTO.getStartLong(); Long startLong = alarmRedisDTO.getStartLong();
long count = endLong - startLong; long count = endLong - startLong;
if (count/1000 >= duration) { if (count/1000 >= duration) {
if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) { if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) {
log.info("呼吸已告警,设备id:" + platDevice.getId()); log.error("呼吸已告警,设备id:" + platDevice.getId());
return; return;
} }
fillRemark(platAlarmCheckDTO, br, start, end); fillRemark(platAlarmCheckDTO, br, start, end);
...@@ -127,9 +127,10 @@ public class BreathAlarm implements IAlarm { ...@@ -127,9 +127,10 @@ public class BreathAlarm implements IAlarm {
@Override @Override
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) { public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO); platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList(); List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) { if (CollectionUtils.isEmpty(platElderList)) {
log.info("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId()); log.error("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
return; return;
} }
for (PlatElder platElder : platElderList) { for (PlatElder platElder : platElderList) {
...@@ -141,6 +142,7 @@ public class BreathAlarm implements IAlarm { ...@@ -141,6 +142,7 @@ public class BreathAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId()); platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName()); platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord); platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者呼吸异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
} }
} }
} }
...@@ -48,6 +48,9 @@ public class FallAlarm implements IAlarm { ...@@ -48,6 +48,9 @@ public class FallAlarm implements IAlarm {
String personState = Convert.toStr(properties.get("personState")); String personState = Convert.toStr(properties.get("personState"));
AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_FALL_ID + deviceId); AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_FALL_ID + deviceId);
if (StringUtils.equals(personState, CommonEnum.YES.getValue())) { if (StringUtils.equals(personState, CommonEnum.YES.getValue())) {
if (StringUtils.equals(alarmRedisDTO.getAlarm(),CommonEnum.YES.getValue())){
log.error("长者跌倒,已告警过,设备iot_id:"+deviceId);
}
notice(platAlarmCheckDTO); notice(platAlarmCheckDTO);
alarmRedisDTO.setAlarm(CommonEnum.YES.getValue()); alarmRedisDTO.setAlarm(CommonEnum.YES.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_FALL_ID, alarmRedisDTO); RedisUtil.set(RedisConst.ALARM_DEVICE_FALL_ID, alarmRedisDTO);
...@@ -63,7 +66,7 @@ public class FallAlarm implements IAlarm { ...@@ -63,7 +66,7 @@ public class FallAlarm implements IAlarm {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO); platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList(); List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) { if (CollectionUtils.isEmpty(platElderList)) {
log.info("跌倒设备未关联长者,设备id:" + platDevice.getId()); log.error("跌倒设备未关联长者,设备id:" + platDevice.getId());
return; return;
} }
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom(); PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
...@@ -76,6 +79,7 @@ public class FallAlarm implements IAlarm { ...@@ -76,6 +79,7 @@ public class FallAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId()); platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName()); platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord); platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者跌倒,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
} }
} }
} }
...@@ -47,7 +47,7 @@ public class HeartAlarm implements IAlarm { ...@@ -47,7 +47,7 @@ public class HeartAlarm implements IAlarm {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice(); PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId(); String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) { if (StringUtils.isBlank(ruleConfigStr)) {
log.info("心率告警配置未配置,告警配置id:" + config.getId()); log.error("心率告警配置未配置,告警配置id:" + config.getId());
return; return;
} }
String personState = Convert.toStr(properties.get("personState")); String personState = Convert.toStr(properties.get("personState"));
...@@ -75,14 +75,16 @@ public class HeartAlarm implements IAlarm { ...@@ -75,14 +75,16 @@ public class HeartAlarm implements IAlarm {
alarmRedisDTO.setStart(now); alarmRedisDTO.setStart(now);
alarmRedisDTO.setStartLong(endLong); alarmRedisDTO.setStartLong(endLong);
RedisUtil.set(RedisConst.ALARM_DEVICE_HR_ID + deviceId,alarmRedisDTO); RedisUtil.set(RedisConst.ALARM_DEVICE_HR_ID + deviceId,alarmRedisDTO);
log.info("发现长者心率异常,设备id:"+deviceId); log.error("发现长者心率异常,设备id:"+deviceId);
return; return;
} }
Long startLong = alarmRedisDTO.getStartLong(); Long startLong = alarmRedisDTO.getStartLong();
long count = endLong - startLong; long count = endLong - startLong;
if (count/1000 >= duration) { if (count/1000 >= duration) {
//todo 如果每台服务器都能收到上报消息 加redis锁
//RLock lock = RedisLockUtil.lock(RedisConst.LOCK_ALARM + deviceId);
if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) { if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) {
log.info("心率已告警,设备id:" + platDevice.getId()); log.error("心率已告警,设备id:" + platDevice.getId());
return; return;
} }
fillRemark(platAlarmCheckDTO, hr, start, end); fillRemark(platAlarmCheckDTO, hr, start, end);
...@@ -110,9 +112,10 @@ public class HeartAlarm implements IAlarm { ...@@ -110,9 +112,10 @@ public class HeartAlarm implements IAlarm {
@Override @Override
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) { public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO); platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList(); List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) { if (CollectionUtils.isEmpty(platElderList)) {
log.info("跌倒设备未关联长者,设备id:" + platAlarmCheckDTO.getPlatDevice().getId()); log.error("心率设备未关联长者,设备id:" + platAlarmCheckDTO.getPlatDevice().getId());
return; return;
} }
for (PlatElder platElder : platElderList) { for (PlatElder platElder : platElderList) {
...@@ -124,6 +127,7 @@ public class HeartAlarm implements IAlarm { ...@@ -124,6 +127,7 @@ public class HeartAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId()); platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName()); platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord); platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者心率异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
} }
} }
} }
...@@ -13,7 +13,7 @@ public class DayDurationTask { ...@@ -13,7 +13,7 @@ public class DayDurationTask {
@Autowired @Autowired
private DayDurationUtil dayDurationUtil; private DayDurationUtil dayDurationUtil;
@Scheduled(cron = "0 */1 * * * ?") @Scheduled(cron = "0 10 * * * ?")
public void updateDayDuration() { public void updateDayDuration() {
dayDurationUtil.getAll(); dayDurationUtil.getAll();
} }
......
...@@ -18,6 +18,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; ...@@ -18,6 +18,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch; import org.springframework.util.StopWatch;
...@@ -62,7 +63,7 @@ public class PushCallback implements MqttCallback { ...@@ -62,7 +63,7 @@ public class PushCallback implements MqttCallback {
DeviceInfo device = JSON.parseObject(payload, DeviceInfo.class); DeviceInfo device = JSON.parseObject(payload, DeviceInfo.class);
// todo // todo
//checkAlarm(device); checkAlarm(device);
} }
@Override @Override
...@@ -76,28 +77,24 @@ public class PushCallback implements MqttCallback { ...@@ -76,28 +77,24 @@ public class PushCallback implements MqttCallback {
* @param device * @param device
*/ */
@TenantIdIgnore @TenantIdIgnore
@Async
public void checkAlarm(DeviceInfo device) { public void checkAlarm(DeviceInfo device) {
StopWatch stopWatch = new StopWatch(); StopWatch stopWatch = new StopWatch();
stopWatch.start("checkAlarm-1"); stopWatch.start("checkAlarm-1");
String deviceId = device.getDeviceId(); String deviceId = device.getDeviceId();
// String propertiesStr = device.getProperties();
// if (StringUtils.isBlank(propertiesStr)) {
// return;
// }
// JSONObject properties = JSON.parseObject(propertiesStr);
JSONObject properties = device.getProperties(); JSONObject properties = device.getProperties();
//iot设备id //iot设备id
PlatDevice platDevice = deviceCacheUtil.get(deviceId); PlatDevice platDevice = deviceCacheUtil.get(deviceId);
if(platDevice==null){ if(platDevice==null){
logger.info("设备信息异常,设备iot-id:"+deviceId); logger.error("设备信息异常,设备iot-id:"+deviceId);
return; return;
} }
List<PlatAlarmConfig> deviceAlarmConfigList = alarmConfigCacheUtil.getDeviceAlarmConfigMap(platDevice); List<PlatAlarmConfig> deviceAlarmConfigList = alarmConfigCacheUtil.getDeviceAlarmConfigMap(platDevice);
deviceAlarmConfigList.removeIf(Objects::isNull); deviceAlarmConfigList.removeIf(Objects::isNull);
if (CollectionUtils.isEmpty(deviceAlarmConfigList)) { if (CollectionUtils.isEmpty(deviceAlarmConfigList)) {
logger.info("该设备没有告警配置:"+deviceId); logger.error("该设备没有告警配置:"+deviceId);
return; return;
} }
for (PlatAlarmConfig config : deviceAlarmConfigList) { for (PlatAlarmConfig config : deviceAlarmConfigList) {
......
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