Commit 983ba2cd by 朱淼
parents e9ce61da bdd948b9
Showing with 670 additions and 54 deletions
......@@ -49,6 +49,14 @@ public class SwaggerSaasConfig {
}
@Bean
public SwaggerModuleConfig deviceModule() {
SwaggerModuleConfig config = new SwaggerModuleConfig();
config.setPackageList(Arrays.asList("com.makeit.controller.device"));
config.setModuleName("设备管理");
return config;
}
@Bean
public Docket platApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
......@@ -91,6 +99,20 @@ public class SwaggerSaasConfig {
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() {
return new ApiInfoBuilder().title("IOT文档")
.description("服务端接口文档")
......
package com.makeit.controller.saas;
package com.makeit.controller.device;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.page.PageReqDTO;
......@@ -47,20 +47,4 @@ public class SaasDeviceController {
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 {
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 {
* 发送消息
*/
public void send(MsgSendDTO msgSendDTO){
for (IMsgSender msgSender : msgSenderList) {
if(msgSender.support(msgSendDTO.getSendTypeEnum())){
msgSender.send(msgSendDTO);
}
}
// for (IMsgSender msgSender : msgSenderList) {
// if(msgSender.support(msgSendDTO.getSendTypeEnum())){
// msgSender.send(msgSendDTO);
// }
// }
}
}
......@@ -40,7 +40,7 @@ public class MailMsgSender implements IMsgSender {
helper.setText(msgDTO.getOriContent(), false);
mailSender.send(message);
} catch (Exception e) {
log.error("发送邮箱异常:",e);
log.error("发送邮箱异常:",msgDTO,e);
}
}
......
......@@ -69,7 +69,7 @@ public class SmsMsgSender implements IMsgSender{
log.info("发送短信成功");
}
}catch (Exception e){
log.error("发送短信异常:",e);
log.error("发送短信异常:",msgDTO,e);
}
}
......
......@@ -77,7 +77,7 @@ public class SmsVoiceSender implements IMsgSender{
throw new BusinessException((String) jsonObject.get("status_code"));
}
}catch (Exception e){
log.error("发送语音异常:",e);
log.error("发送语音异常:",msgDTO,e);
}
}
}
......@@ -2,18 +2,23 @@ package com.makeit.module.controller.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.service.platform.elder.PlatElderReportMonthService;
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.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>
* 长者基本信息 前端控制器
......@@ -27,6 +32,9 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/plat/elder/report/month")
public class PlatElderReportMonthController {
@Autowired
private PlatElderReportMonthService platElderReportMonthService;
@ApiOperation("综合评价")
@PostMapping("comprehensiveEvaluation")
public ApiResponseEntity<PlatElderComprehensiveEvaluationVO> comprehensiveEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
......@@ -48,8 +56,8 @@ public class PlatElderReportMonthController {
@ApiOperation("月报表")
@PostMapping("reportMonth")
public ApiResponseEntity<PlatElderReportMonthVO> reportMonth(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
public ApiResponseEntity<List<PlatElderReportMonthVO>> reportMonth(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderReportMonthService.reportMonth(platElderIdDTO));
}
......
......@@ -11,7 +11,7 @@ import java.time.LocalDateTime;
/**
* <p>
* 长者基本信息server-service/src/main/java/com/makeit/server/platform/elder/PlatElderPhysicalReportService.java
* 长者基本信息
* </p>
*
* @author eugene young
......@@ -20,12 +20,18 @@ import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Elder对象", description = "长者基本信息")
public class PlatElderReportDTO extends PlatElderIdDTO{
public class PlatElderReportDTO extends PlatElderIdDTO {
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("日期")
private LocalDate now;
@ApiModelProperty("月份")
private Integer year;
@ApiModelProperty("月份")
private Integer month;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("开始时间")
private LocalDateTime startTime;
......
package com.makeit.entity.platform.elder;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* <p>
* 长者每天呼吸异常
* </p>
*
* @author eugene young
* @since 2023-09-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="PlatElderBreatheAbnormal对象", description="长者每天呼吸异常")
public class PlatElderBreatheAbnormal extends BaseBusEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "长者id")
private String elderId;
@ApiModelProperty(value = "呼吸分析id")
private String breatheAnalysisId;
@ApiModelProperty(value = "发生时间")
private LocalDateTime happenTime;
@ApiModelProperty(value = "异常类型")
private String type;
@ApiModelProperty(value = "值")
private String value;
}
package com.makeit.entity.platform.elder;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 长者每天呼吸分析
* </p>
*
* @author eugene young
* @since 2023-09-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="PlatElderBreatheAnalysis对象", description="长者每天呼吸分析")
public class PlatElderBreatheAnalysis extends BaseBusEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "长者id")
private String elderId;
@ApiModelProperty(value = "睡眠评分")
private String breatheScore;
@ApiModelProperty(value = "睡眠结果")
private String breatheResult;
@ApiModelProperty(value = "评价")
private String breatheEvaluate;
@ApiModelProperty(value = "平均心率")
private String avgHeartRate;
@ApiModelProperty(value = "平均呼吸率")
private String avgBreatheRate;
@ApiModelProperty(value = "当前日期 yyyy-mm-dd")
private String currentDate;
}
package com.makeit.mapper.platform.elder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.elder.PlatElderBreatheAbnormal;
/**
* <p>
* 长者每天呼吸异常 Mapper 接口
* </p>
*
* @author eugene young
* @since 2023-09-15
*/
public interface PlatElderBreatheAbnormalMapper extends BaseMapper<PlatElderBreatheAbnormal> {
}
package com.makeit.mapper.platform.elder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis;
/**
* <p>
* 长者每天呼吸分析 Mapper 接口
* </p>
*
* @author eugene young
* @since 2023-09-15
*/
public interface PlatElderBreatheAnalysisMapper extends BaseMapper<PlatElderBreatheAnalysis> {
}
......@@ -70,7 +70,7 @@ public class BehaviorAlarm implements IAlarm {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) {
log.info("行为告警配置未配置,告警配置id:" + config.getId());
log.error("行为告警配置未配置,告警配置id:" + config.getId());
return;
}
String personState = Convert.toStr(properties.get("personState"));
......@@ -78,7 +78,7 @@ public class BehaviorAlarm implements IAlarm {
Integer duration = ruleConfig.getDuration();//分钟
PlatDayDurationRecord platDayDurationRecord = dayDurationUtil.get(platDevice.getOriDeviceId());
if (platDayDurationRecord == null) {
log.info("行为告警未找到行为异常平均时长,设备id:" + platDevice.getId());
log.error("行为告警未找到行为异常平均时长,设备id:" + platDevice.getId());
return;
}
Long duration1 = platDayDurationRecord.getDuration();
......@@ -101,13 +101,13 @@ public class BehaviorAlarm implements IAlarm {
alarmRedisDTO.setStartLong(endLong);
alarmRedisDTO.setStart(now);
RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO);
log.info("空间雷达上报进入房间,设备id:" + platDevice.getId());
log.error("空间雷达上报进入房间,设备id:" + platDevice.getId());
return;
}
long count = endLong - startLong;
//进入空间时间满足告警时长,判断是否已经告警过了
if (count / 1000 >= duration && StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.NO.getValue())) {
log.info("空间雷达发出告警,设备id:" + platDevice.getId());
log.error("空间雷达发出告警,设备id:" + platDevice.getId());
notice(platAlarmCheckDTO);
alarmRedisDTO.setAlarm(CommonEnum.YES.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO);
......@@ -146,7 +146,7 @@ public class BehaviorAlarm implements IAlarm {
//save db
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
if(CollectionUtils.isEmpty(platAlarmCheckDTO.getPlatElderList())){
log.info("未关联长者,设备id:"+platDevice.getId());
log.error("未关联长者,设备id:"+platDevice.getId());
return;
}
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
......@@ -171,11 +171,12 @@ public class BehaviorAlarm implements IAlarm {
@Override
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
//获取长者 空间信息
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) {
log.info("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
log.error("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
return;
}
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
......@@ -197,6 +198,7 @@ public class BehaviorAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者行为异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
}
}
}
......@@ -56,7 +56,7 @@ public class BreathAlarm implements IAlarm {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) {
log.info("呼吸告警配置未配置,告警配置id:" + config.getId());
log.error("呼吸告警配置未配置,告警配置id:" + config.getId());
return;
}
String personState = Convert.toStr(properties.get("personState"));
......@@ -85,14 +85,14 @@ public class BreathAlarm implements IAlarm {
alarmRedisDTO.setStart(now);
alarmRedisDTO.setStartLong(endLong);
RedisUtil.set(RedisConst.ALARM_DEVICE_BR_ID + deviceId,alarmRedisDTO);
log.info("发现长者呼吸异常,设备id:"+deviceId);
log.error("发现长者呼吸异常,设备id:"+deviceId);
return;
}
Long startLong = alarmRedisDTO.getStartLong();
long count = endLong - startLong;
if (count/1000 >= duration) {
if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) {
log.info("呼吸已告警,设备id:" + platDevice.getId());
log.error("呼吸已告警,设备id:" + platDevice.getId());
return;
}
fillRemark(platAlarmCheckDTO, br, start, end);
......@@ -127,9 +127,10 @@ public class BreathAlarm implements IAlarm {
@Override
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) {
log.info("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
log.error("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
return;
}
for (PlatElder platElder : platElderList) {
......@@ -141,6 +142,7 @@ public class BreathAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者呼吸异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
}
}
}
......@@ -48,6 +48,9 @@ public class FallAlarm implements IAlarm {
String personState = Convert.toStr(properties.get("personState"));
AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_FALL_ID + deviceId);
if (StringUtils.equals(personState, CommonEnum.YES.getValue())) {
if (StringUtils.equals(alarmRedisDTO.getAlarm(),CommonEnum.YES.getValue())){
log.error("长者跌倒,已告警过,设备iot_id:"+deviceId);
}
notice(platAlarmCheckDTO);
alarmRedisDTO.setAlarm(CommonEnum.YES.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_FALL_ID, alarmRedisDTO);
......@@ -63,7 +66,7 @@ public class FallAlarm implements IAlarm {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) {
log.info("跌倒设备未关联长者,设备id:" + platDevice.getId());
log.error("跌倒设备未关联长者,设备id:" + platDevice.getId());
return;
}
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
......@@ -76,6 +79,7 @@ public class FallAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者跌倒,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
}
}
}
......@@ -47,7 +47,7 @@ public class HeartAlarm implements IAlarm {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) {
log.info("心率告警配置未配置,告警配置id:" + config.getId());
log.error("心率告警配置未配置,告警配置id:" + config.getId());
return;
}
String personState = Convert.toStr(properties.get("personState"));
......@@ -75,14 +75,16 @@ public class HeartAlarm implements IAlarm {
alarmRedisDTO.setStart(now);
alarmRedisDTO.setStartLong(endLong);
RedisUtil.set(RedisConst.ALARM_DEVICE_HR_ID + deviceId,alarmRedisDTO);
log.info("发现长者心率异常,设备id:"+deviceId);
log.error("发现长者心率异常,设备id:"+deviceId);
return;
}
Long startLong = alarmRedisDTO.getStartLong();
long count = endLong - startLong;
if (count/1000 >= duration) {
//todo 如果每台服务器都能收到上报消息 加redis锁
//RLock lock = RedisLockUtil.lock(RedisConst.LOCK_ALARM + deviceId);
if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) {
log.info("心率已告警,设备id:" + platDevice.getId());
log.error("心率已告警,设备id:" + platDevice.getId());
return;
}
fillRemark(platAlarmCheckDTO, hr, start, end);
......@@ -110,9 +112,10 @@ public class HeartAlarm implements IAlarm {
@Override
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) {
log.info("跌倒设备未关联长者,设备id:" + platAlarmCheckDTO.getPlatDevice().getId());
log.error("心率设备未关联长者,设备id:" + platAlarmCheckDTO.getPlatDevice().getId());
return;
}
for (PlatElder platElder : platElderList) {
......@@ -124,6 +127,7 @@ public class HeartAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者心率异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
}
}
}
package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.elder.PlatElderBreatheAbnormal;
/**
* <p>
* 长者每天呼吸异常 服务类
* </p>
*
* @author eugene young
* @since 2023-09-15
*/
public interface PlatElderBreatheAbnormalService extends IService<PlatElderBreatheAbnormal> {
}
package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis;
/**
* <p>
* 长者每天呼吸分析 服务类
* </p>
*
* @author eugene young
* @since 2023-09-15
*/
public interface PlatElderBreatheAnalysisService extends IService<PlatElderBreatheAnalysis> {
}
package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.entity.platform.elder.PlatElderReportMonth;
import com.makeit.vo.platform.elder.report.day.PlatElderReportMonthVO;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* <p>
......@@ -13,4 +19,7 @@ import com.makeit.entity.platform.elder.PlatElderReportMonth;
*/
public interface PlatElderReportMonthService extends IService<PlatElderReportMonth> {
List<PlatElderReportMonthVO> reportMonth(PlatElderReportDTO platElderIdDTO);
}
package com.makeit.service.platform.elder.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.elder.PlatElderBreatheAbnormal;
import com.makeit.mapper.platform.elder.PlatElderBreatheAbnormalMapper;
import com.makeit.service.platform.elder.PlatElderBreatheAbnormalService;
import org.springframework.stereotype.Service;
/**
* <p>
* 长者每天呼吸异常 服务实现类
* </p>
*
* @author eugene young
* @since 2023-09-15
*/
@Service
public class PlatElderBreatheAbnormalServiceImpl extends ServiceImpl<PlatElderBreatheAbnormalMapper, PlatElderBreatheAbnormal> implements PlatElderBreatheAbnormalService {
}
package com.makeit.service.platform.elder.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis;
import com.makeit.mapper.platform.elder.PlatElderBreatheAnalysisMapper;
import com.makeit.service.platform.elder.PlatElderBreatheAnalysisService;
import org.springframework.stereotype.Service;
/**
* <p>
* 长者每天呼吸分析 服务实现类
* </p>
*
* @author eugene young
* @since 2023-09-15
*/
@Service
public class PlatElderBreatheAnalysisServiceImpl extends ServiceImpl<PlatElderBreatheAnalysisMapper, PlatElderBreatheAnalysis> implements PlatElderBreatheAnalysisService {
}
......@@ -105,7 +105,7 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
LocalDateTime start = dayStartNow(now);
LocalDateTime end = dayEndNow(now);
List<PlatElderSleepDiagramVO> voList = new ArrayList<>(10);
List<PlatElderSleepDiagramVO> voList;
String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
......
package com.makeit.service.platform.elder.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.entity.platform.elder.PlatElderReportMonth;
import com.makeit.mapper.platform.elder.PlatElderReportMonthMapper;
import com.makeit.service.platform.elder.PlatElderReportMonthService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.report.day.PlatElderReportMonthVO;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* 长者月报 服务实现类
......@@ -17,4 +26,20 @@ import org.springframework.stereotype.Service;
@Service
public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReportMonthMapper, PlatElderReportMonth> implements PlatElderReportMonthService {
@Override
public List<PlatElderReportMonthVO> reportMonth(PlatElderReportDTO platElderIdDTO) {
LocalDate start = LocalDate.of(platElderIdDTO.getYear(), platElderIdDTO.getMonth(), 1);
LocalDate end = LocalDateTimeUtils.getMonthMax(start);
List<PlatElderReportMonth> monthList = list(new QueryWrapper<PlatElderReportMonth>().lambda()
.eq(PlatElderReportMonth::getElderId, platElderIdDTO.getElderId())
.ge(PlatElderReportMonth::getDay, start)
.le(PlatElderReportMonth::getDay, end)
);
List<PlatElderReportMonthVO> voList = BeanDtoVoUtils.listVo(monthList, PlatElderReportMonthVO.class);
return voList;
}
}
......@@ -13,7 +13,7 @@ public class DayDurationTask {
@Autowired
private DayDurationUtil dayDurationUtil;
@Scheduled(cron = "0 */1 * * * ?")
@Scheduled(cron = "0 10 * * * ?")
public void updateDayDuration() {
dayDurationUtil.getAll();
}
......
......@@ -18,6 +18,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
......@@ -62,7 +63,7 @@ public class PushCallback implements MqttCallback {
DeviceInfo device = JSON.parseObject(payload, DeviceInfo.class);
// todo
//checkAlarm(device);
checkAlarm(device);
}
@Override
......@@ -76,28 +77,24 @@ public class PushCallback implements MqttCallback {
* @param device
*/
@TenantIdIgnore
@Async
public void checkAlarm(DeviceInfo device) {
StopWatch stopWatch = new StopWatch();
stopWatch.start("checkAlarm-1");
String deviceId = device.getDeviceId();
// String propertiesStr = device.getProperties();
// if (StringUtils.isBlank(propertiesStr)) {
// return;
// }
// JSONObject properties = JSON.parseObject(propertiesStr);
JSONObject properties = device.getProperties();
//iot设备id
PlatDevice platDevice = deviceCacheUtil.get(deviceId);
if(platDevice==null){
logger.info("设备信息异常,设备iot-id:"+deviceId);
logger.error("设备信息异常,设备iot-id:"+deviceId);
return;
}
List<PlatAlarmConfig> deviceAlarmConfigList = alarmConfigCacheUtil.getDeviceAlarmConfigMap(platDevice);
deviceAlarmConfigList.removeIf(Objects::isNull);
if (CollectionUtils.isEmpty(deviceAlarmConfigList)) {
logger.info("该设备没有告警配置:"+deviceId);
logger.error("该设备没有告警配置:"+deviceId);
return;
}
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