Commit 16949764 by 罗志长

Merge branch 'dev'

parents 633933d2 1d7be20b
Showing with 756 additions and 118 deletions
ALTER TABLE `plat_device_other` ALTER TABLE `plat_device_other`
...@@ -90,4 +90,35 @@ ALTER TABLE `plat_alarm_record` ...@@ -90,4 +90,35 @@ ALTER TABLE `plat_alarm_record`
-- 12.15 end -- 12.15 end
ALTER TABLE `plat_tenant` ALTER TABLE `plat_tenant`
ADD COLUMN `open_api_url` varchar(128) COMMENT '第三方接口url' AFTER `secret`; ADD COLUMN `open_api_url` varchar(128) COMMENT '第三方接口url' AFTER `secret`;
\ No newline at end of file
CREATE TABLE `plat_elder_breathe_heart_rate_record` (
`id` varchar(64) NOT NULL COMMENT 'id',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL COMMENT ' 删除标志 0否 1是 ',
`tenant_id` varchar(64) DEFAULT NULL COMMENT ' 租户id ',
`elder_id` varchar(64) DEFAULT NULL COMMENT '长者id',
`report_time` bigint(20) DEFAULT NULL COMMENT '上报时间',
`heart_rate` int(11) DEFAULT NULL COMMENT '心率',
`respiratory_rate` int(11) DEFAULT NULL COMMENT '呼吸率',
`body_move` int(11) DEFAULT NULL COMMENT '体动值',
`device_id` varchar(255) DEFAULT NULL COMMENT '设备id',
`iot_device_id` varchar(64) DEFAULT NULL COMMENT 'iot设备id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='长者呼吸心率记录';
-- end
ALTER TABLE `plat_alarm_record`
ADD COLUMN `device_time` varchar(64) COMMENT '当前上报时间' AFTER `wechat_read_flag`;
alter table plat_elder_sleep_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id';
alter table plat_elder_breathe_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id';
\ No newline at end of file
...@@ -59,6 +59,7 @@ public class SaasDeviceReportDayController { ...@@ -59,6 +59,7 @@ public class SaasDeviceReportDayController {
@ApiOperation("心率呼吸评价") @ApiOperation("心率呼吸评价")
@PostMapping("heartRespiratoryEvaluation") @PostMapping("heartRespiratoryEvaluation")
@TenantIdIgnore @TenantIdIgnore
@AuthIgnore
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) { public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.heartRespiratoryEvaluation(platElderIdDTO)); return ApiResponseUtils.success(platElderDayReportDayService.heartRespiratoryEvaluation(platElderIdDTO));
} }
......
...@@ -7,16 +7,20 @@ import com.makeit.common.response.ApiResponseEntity; ...@@ -7,16 +7,20 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.dto.platform.device.PlatDeviceQueryDTO; import com.makeit.dto.platform.device.PlatDeviceQueryDTO;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.dto.platform.elder.PlatElderQueryDTO; import com.makeit.dto.platform.elder.PlatElderQueryDTO;
import com.makeit.global.annotation.AuthIgnore; import com.makeit.global.annotation.AuthIgnore;
import com.makeit.global.aspect.tenant.TenantIdIgnore; import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.device.PlatDeviceService; import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.service.platform.elder.PlatElderService; import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import com.makeit.vo.platform.alarm.PlatAlarmExternalRecordVO;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO; import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import com.makeit.vo.platform.device.PlatDeviceListVO; import com.makeit.vo.platform.device.PlatDeviceListVO;
import com.makeit.vo.platform.elder.PlatElderListVO; import com.makeit.vo.platform.elder.PlatElderListVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
...@@ -40,6 +44,8 @@ public class IotPlatExternalController { ...@@ -40,6 +44,8 @@ public class IotPlatExternalController {
private PlatDeviceService platDeviceService; private PlatDeviceService platDeviceService;
@Autowired @Autowired
private PlatAlarmRecordService platAlarmRecordService; private PlatAlarmRecordService platAlarmRecordService;
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@ApiOperation("长者列表") @ApiOperation("长者列表")
@PostMapping("elderPage") @PostMapping("elderPage")
...@@ -48,7 +54,7 @@ public class IotPlatExternalController { ...@@ -48,7 +54,7 @@ public class IotPlatExternalController {
public ApiResponseEntity<PageVO<PlatElderListVO>> elderPage(@RequestBody PageReqDTO<PlatElderQueryDTO> page) { public ApiResponseEntity<PageVO<PlatElderListVO>> elderPage(@RequestBody PageReqDTO<PlatElderQueryDTO> page) {
PlatElderQueryDTO dto = page.getData(); PlatElderQueryDTO dto = page.getData();
if (dto == null || StringUtils.isEmpty(dto.getOrgId())) { if (dto == null || StringUtils.isEmpty(dto.getOrgId())) {
return ApiResponseUtils.success(new PageVO<>()); return ApiResponseUtils.success(PageVO.emptyPage());
} }
return ApiResponseUtils.success(platElderService.page(page)); return ApiResponseUtils.success(platElderService.page(page));
} }
...@@ -61,7 +67,7 @@ public class IotPlatExternalController { ...@@ -61,7 +67,7 @@ public class IotPlatExternalController {
public ApiResponseEntity<PageVO<PlatDeviceListVO>> devicePage(@RequestBody PageReqDTO<PlatDeviceQueryDTO> pageReqDTO) { public ApiResponseEntity<PageVO<PlatDeviceListVO>> devicePage(@RequestBody PageReqDTO<PlatDeviceQueryDTO> pageReqDTO) {
PlatDeviceQueryDTO dto = pageReqDTO.getData(); PlatDeviceQueryDTO dto = pageReqDTO.getData();
if (dto == null || StringUtils.isEmpty(dto.getOrgId())) { if (dto == null || StringUtils.isEmpty(dto.getOrgId())) {
return ApiResponseUtils.success(new PageVO<>()); return ApiResponseUtils.success(PageVO.emptyPage());
} }
return ApiResponseUtils.success(platDeviceService.page(pageReqDTO)); return ApiResponseUtils.success(platDeviceService.page(pageReqDTO));
} }
...@@ -74,7 +80,7 @@ public class IotPlatExternalController { ...@@ -74,7 +80,7 @@ public class IotPlatExternalController {
public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> pageReqDTO) { public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> pageReqDTO) {
PlatAlarmRecordQueryDTO dto = pageReqDTO.getData(); PlatAlarmRecordQueryDTO dto = pageReqDTO.getData();
if (dto == null || StringUtils.isEmpty(dto.getOrgId())) { if (dto == null || StringUtils.isEmpty(dto.getOrgId())) {
return ApiResponseUtils.success(new PageVO<>()); return ApiResponseUtils.success(PageVO.emptyPage());
} }
return ApiResponseUtils.success(platAlarmRecordService.page(pageReqDTO)); return ApiResponseUtils.success(platAlarmRecordService.page(pageReqDTO));
} }
...@@ -88,4 +94,25 @@ public class IotPlatExternalController { ...@@ -88,4 +94,25 @@ public class IotPlatExternalController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@ApiOperation("获取呼吸上报数据")
@PostMapping("deviceHealthReport")
@TenantIdIgnore
@AuthIgnore
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryVO> deviceHealthData(@RequestBody PlatElderIdDTO dto) {
return ApiResponseUtils.success(platElderRealTimeService.deviceHealthReport(dto));
}
@ApiOperation("获取跌倒记录数据")
@PostMapping("fallRecord")
@TenantIdIgnore
@AuthIgnore
public ApiResponseEntity<PageVO<PlatAlarmExternalRecordVO>> fallRecord(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> pageReqDTO) {
PlatAlarmRecordQueryDTO dto = pageReqDTO.getData();
if (dto == null || StringUtils.isEmpty(dto.getOrgId())) {
return ApiResponseUtils.success(PageVO.emptyPage());
}
return ApiResponseUtils.success(platAlarmRecordService.fallRecord(pageReqDTO));
}
} }
...@@ -40,7 +40,16 @@ public class RSAUtils { ...@@ -40,7 +40,16 @@ public class RSAUtils {
RSAPublicKey publicKey = getPublicKey(PUBLIC_KEY); RSAPublicKey publicKey = getPublicKey(PUBLIC_KEY);
System.out.println("------------"); System.out.println("------------");
String encrypt = publicEncrypt("{\"page\":1,\"limit\":10,\"data\":{}}", publicKey, "UTF-8"); String encrypt = publicEncrypt("{\n" +
" \"page\": 1,\n" +
" \"limit\": 10,\n" +
" \"data\": {\n" +
" \"alarmType\": \"1\",\n" +
" \"orgId\": \"1701420402418446337\",\n" +
" \"createDateFrom\": \"2023-12-15 00:00:00\",\n" +
" \"createDateTo\": \"2023-12-15 23:59:59\"\n" +
" }\n" +
"}", publicKey, "UTF-8");
System.out.println(encrypt); System.out.println(encrypt);
......
...@@ -23,8 +23,8 @@ public class RequestIdInterceptor implements HandlerInterceptor { ...@@ -23,8 +23,8 @@ public class RequestIdInterceptor implements HandlerInterceptor {
RequestIdUtil.set(); RequestIdUtil.set();
logger.info("本次请求ip:{},remoteAddr:{}", IpUtil.getIp(),IpUtil.getRemoteAddr()); //logger.info("本次请求ip:{},remoteAddr:{}", IpUtil.getIp(),IpUtil.getRemoteAddr());
logger.info("本次请求路径: {}", request.getRequestURI()); //logger.info("本次请求路径: {}", request.getRequestURI());
return true; return true;
} }
......
...@@ -102,11 +102,11 @@ public class IotDevicePropertiesOperateService extends IotCommonService { ...@@ -102,11 +102,11 @@ public class IotDevicePropertiesOperateService extends IotCommonService {
return ""; return "";
} }
public String deviceFunctionAttr(String deviceId, Long timestamp) { public String deviceFunctionAttr(String deviceId, String alarmId) {
String url = iotUrl + "device/invoked/" + deviceId + "/function/misinformation"; String url = iotUrl + "device/invoked/" + deviceId + "/function/misinformation";
Map<String,Map<String,Object>> map = Maps.newHashMap(); Map<String,Map<String,Object>> map = Maps.newHashMap();
Map<String,Object> reqMap = Maps.newHashMap(); Map<String,Object> reqMap = Maps.newHashMap();
reqMap.put("timestamp",timestamp); reqMap.put("alarmId",alarmId);
reqMap.put("url", uploadUrl); reqMap.put("url", uploadUrl);
map.put("misinformationNotify",reqMap); map.put("misinformationNotify",reqMap);
HttpRequest request = buildRequest(url, JSON.toJSONString(map)); HttpRequest request = buildRequest(url, JSON.toJSONString(map));
......
...@@ -7,6 +7,7 @@ import com.google.common.collect.Maps; ...@@ -7,6 +7,7 @@ import com.google.common.collect.Maps;
import com.makeit.module.admin.vo.plat.PlatTenantVO; import com.makeit.module.admin.vo.plat.PlatTenantVO;
import com.makeit.module.iot.dto.IotQueryParam; import com.makeit.module.iot.dto.IotQueryParam;
import com.makeit.module.iot.util.HttpRequest; import com.makeit.module.iot.util.HttpRequest;
import com.makeit.module.iot.util.Response;
import com.makeit.module.iot.util.SimpleHttpRequest; import com.makeit.module.iot.util.SimpleHttpRequest;
import com.makeit.module.iot.vo.DeviceInstanceEntity; import com.makeit.module.iot.vo.DeviceInstanceEntity;
import com.makeit.module.iot.vo.DeviceProductEntity; import com.makeit.module.iot.vo.DeviceProductEntity;
...@@ -141,7 +142,9 @@ public class IotOrgService extends IotCommonService{ ...@@ -141,7 +142,9 @@ public class IotOrgService extends IotCommonService{
HttpRequest request = buildRequest(url,body); HttpRequest request = buildRequest(url,body);
try { try {
ResponseMessage responseMessage = sendPost(url, request); Response response = request.post();
Object result = JSON.parse(response.asBytes());
ResponseMessage responseMessage = JSON.parseObject(result.toString(), ResponseMessage.class);
if (responseMessage.getStatus() == 200) { if (responseMessage.getStatus() == 200) {
IotPagerResult pagerResult = JSON.parseObject(responseMessage.getResult().toString(), IotPagerResult.class); IotPagerResult pagerResult = JSON.parseObject(responseMessage.getResult().toString(), IotPagerResult.class);
......
package com.makeit.module.iot.vo.analysis; package com.makeit.module.iot.vo.analysis;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@Data @Data
public class SaasSleepEvaluateStandardReportVO { public class SaasSleepEvaluateStandardReportVO {
@ApiModelProperty("深睡")
private Long deepScore; private Long deepScore;
@ApiModelProperty("浅睡")
private Long lightScore; private Long lightScore;
@ApiModelProperty("清醒")
private Long soberScore; private Long soberScore;
@ApiModelProperty("睡眠")
private Long sleepScore; private Long sleepScore;
@ApiModelProperty("总得分")
private Long totalScore; private Long totalScore;
......
package com.makeit.module.controller.children.space;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.space.PlatRegionSettingDTO;
import com.makeit.dto.platform.space.PlatRegionSettingFixQueryDTO;
import com.makeit.service.platform.space.PlatRegionSettingFixService;
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("/children/plat/region/setting/fix")
public class PlatRegionSettingFixChildrenController {
@Autowired
private PlatRegionSettingFixService platRegionSettingFixService;
@ApiOperation("列表")
@PostMapping("list")
public ApiResponseEntity<List<PlatRegionSettingDTO>> list(@RequestBody PlatRegionSettingFixQueryDTO dto) {
List<PlatRegionSettingDTO> data = platRegionSettingFixService.list(dto);
return ApiResponseUtils.success(data);
}
}
...@@ -6,6 +6,7 @@ import com.makeit.common.response.ApiResponseEntity; ...@@ -6,6 +6,7 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO; import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO;
import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis; import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
import com.makeit.external.huineng.HuiNengService; import com.makeit.external.huineng.HuiNengService;
import com.makeit.global.annotation.AuthIgnore; import com.makeit.global.annotation.AuthIgnore;
import com.makeit.global.aspect.tenant.TenantIdIgnore; import com.makeit.global.aspect.tenant.TenantIdIgnore;
...@@ -44,6 +45,8 @@ public class PlatElderSleepController { ...@@ -44,6 +45,8 @@ public class PlatElderSleepController {
@Autowired @Autowired
private PlatElderCoordinateRecordService platElderCoordinateRecordService; private PlatElderCoordinateRecordService platElderCoordinateRecordService;
@Autowired @Autowired
private PlatElderBreatheHeartRateRecordService platElderBreatheHeartRateRecordService;
@Autowired
private HuiNengService huiNengService; private HuiNengService huiNengService;
...@@ -60,6 +63,7 @@ public class PlatElderSleepController { ...@@ -60,6 +63,7 @@ public class PlatElderSleepController {
@ApiOperation("测试") @ApiOperation("测试")
@PostMapping("test2") @PostMapping("test2")
@AuthIgnore @AuthIgnore
@TenantIdIgnore
public ApiResponseEntity<Void> heartRespiratoryTask() { public ApiResponseEntity<Void> heartRespiratoryTask() {
platElderBreatheDayStatService.heartRespiratoryTask(); platElderBreatheDayStatService.heartRespiratoryTask();
return ApiResponseUtils.success(); return ApiResponseUtils.success();
...@@ -68,17 +72,19 @@ public class PlatElderSleepController { ...@@ -68,17 +72,19 @@ public class PlatElderSleepController {
@ApiOperation("测试") @ApiOperation("测试")
@GetMapping("test3") @GetMapping("test3")
@AuthIgnore @AuthIgnore
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderBreatheAnalysis>> elderHeartRespiratoryAnalysisTask(@RequestParam Integer month, public ApiResponseEntity<List<PlatElderBreatheAnalysis>> elderHeartRespiratoryAnalysisTask(@RequestParam Integer month,
@RequestParam Integer day) { @RequestParam Integer day) {
return ApiResponseUtils.success(platElderBreatheAnalysisService.elderHeartRespiratoryAnalysisTask(month, day)); return ApiResponseUtils.success(platElderBreatheAnalysisService.elderHeartRespiratoryAnalysisTask(month, day));
} }
@ApiOperation("测试") @ApiOperation("测试")
@PostMapping("test4") @GetMapping("test4")
@AuthIgnore @AuthIgnore
public ApiResponseEntity<Void> elderSleepSleepAnalysisTask() { @TenantIdIgnore
platElderSleepService.elderSleepSleepAnalysisTask(); public ApiResponseEntity<List<PlatElderSleepAnalysis>> elderSleepSleepAnalysisTask(@RequestParam Integer month,
return ApiResponseUtils.success(); @RequestParam Integer day) {
return ApiResponseUtils.success(platElderSleepService.elderSleepSleepAnalysisTask(month, day));
} }
@ApiOperation("测试") @ApiOperation("测试")
...@@ -89,6 +95,15 @@ public class PlatElderSleepController { ...@@ -89,6 +95,15 @@ public class PlatElderSleepController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@ApiOperation("测试")
@PostMapping("test6")
@AuthIgnore
@TenantIdIgnore
public ApiResponseEntity<Void> breatheHeartRateRecordTask() {
platElderBreatheHeartRateRecordService.breatheHeartRateRecordTask();
return ApiResponseUtils.success();
}
@ApiOperation("编辑设备属性") @ApiOperation("编辑设备属性")
@PostMapping("editDeviceProperties") @PostMapping("editDeviceProperties")
@AuthIgnore @AuthIgnore
......
package com.makeit.module.controller.space;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.space.PlatRegionSettingDTO;
import com.makeit.dto.platform.space.PlatRegionSettingFixQueryDTO;
import com.makeit.dto.platform.space.PlatRegionSettingQueryDTO;
import com.makeit.service.platform.space.PlatRegionSettingFixService;
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("/plat/region/setting/fix")
public class PlatRegionSettingFixController {
@Autowired
private PlatRegionSettingFixService platRegionSettingFixService;
@ApiOperation("列表")
@PostMapping("list")
public ApiResponseEntity<List<PlatRegionSettingDTO>> list(@RequestBody PlatRegionSettingFixQueryDTO dto) {
List<PlatRegionSettingDTO> data = platRegionSettingFixService.list(dto);
return ApiResponseUtils.success(data);
}
}
...@@ -10,7 +10,6 @@ import com.makeit.common.response.ApiResponseEntity; ...@@ -10,7 +10,6 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.enums.report.PlatformTypeEnum; import com.makeit.enums.report.PlatformTypeEnum;
import com.makeit.global.annotation.AuthIgnore;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.utils.user.common.CommonUserUtil; import com.makeit.utils.user.common.CommonUserUtil;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO; import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
...@@ -34,17 +33,14 @@ public class PlatAlarmRecordWechatController { ...@@ -34,17 +33,14 @@ public class PlatAlarmRecordWechatController {
@ApiOperation("列表") @ApiOperation("列表")
@PostMapping("page") @PostMapping("page")
@AuthIgnore
public ApiResponseEntity<Map<String,Object>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) { public ApiResponseEntity<Map<String,Object>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) {
//小程序告警记录只看到发给自己的告警 //小程序告警记录只看到发给自己的告警
String userId = CommonUserUtil.getUserId(); String userId = CommonUserUtil.getUserId();
// String userId = "1700085146788667394";
PlatAlarmRecordQueryDTO data = dto.getData(); PlatAlarmRecordQueryDTO data = dto.getData();
data.setNotifyUser(userId); data.setNotifyUser(userId);
Map<String,Object> resMap = Maps.newHashMap(); Map<String,Object> resMap = Maps.newHashMap();
PageVO<PlatAlarmRecordVO> page = platAlarmRecordService.page(dto); PageVO<PlatAlarmRecordVO> page = platAlarmRecordService.page(dto);
// boolean b = page.getList().stream().anyMatch(platAlarmRecord -> StringUtils.equals(CommonEnum.NO.getValue(), platAlarmRecord.getStatus()));
boolean b = CollUtil.isNotEmpty(page.getList()) && page.getList().get(0).getStatusFlag(); boolean b = CollUtil.isNotEmpty(page.getList()) && page.getList().get(0).getStatusFlag();
resMap.put("todoFlag",b); resMap.put("todoFlag",b);
resMap.put("page",page); resMap.put("page",page);
......
package com.makeit.module.controller.wechat.space;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.space.PlatRegionSettingDTO;
import com.makeit.dto.platform.space.PlatRegionSettingFixQueryDTO;
import com.makeit.service.platform.space.PlatRegionSettingFixService;
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("/wechat/plat/region/setting/fix")
public class PlatRegionSettingFixWechatController {
@Autowired
private PlatRegionSettingFixService platRegionSettingFixService;
@ApiOperation("列表")
@PostMapping("list")
public ApiResponseEntity<List<PlatRegionSettingDTO>> list(@RequestBody PlatRegionSettingFixQueryDTO dto) {
List<PlatRegionSettingDTO> data = platRegionSettingFixService.list(dto);
return ApiResponseUtils.success(data);
}
}
...@@ -32,6 +32,7 @@ public class PlatAlarmCheckDTO { ...@@ -32,6 +32,7 @@ public class PlatAlarmCheckDTO {
private String abnormalValue; private String abnormalValue;
//设备状态 //设备状态
private String messageType; private String messageType;
private String deviceTime;
} }
...@@ -19,7 +19,7 @@ public class PlatElderIdDTO { ...@@ -19,7 +19,7 @@ public class PlatElderIdDTO {
@ApiModelProperty(value = "长者id") @ApiModelProperty(value = "长者id")
private String elderId; private String elderId;
@ApiModelProperty(value = "长者id") @ApiModelProperty(value = "机构id")
private String orgId; private String orgId;
@ApiModelProperty(value = "设备id") @ApiModelProperty(value = "设备id")
......
package com.makeit.dto.platform.space;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@ApiModel("PlatRegionSettingFixQueryDTO")
public class PlatRegionSettingFixQueryDTO {
@ApiModelProperty("报告类型 0:日报 1:周报")
private String reportType;
@ApiModelProperty("房间ID")
private String roomId;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("日期 yyyy-MM-dd")
private LocalDate now;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("开始时间 yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("结束时间 yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
}
...@@ -93,8 +93,8 @@ public class PlatAlarmRecord extends BaseBusEntity { ...@@ -93,8 +93,8 @@ public class PlatAlarmRecord extends BaseBusEntity {
@ApiModelProperty(value = "微信端 0-未读 1-已读") @ApiModelProperty(value = "微信端 0-未读 1-已读")
private String wechatReadFlag; private String wechatReadFlag;
@ApiModelProperty(value = "记录当前时间")
private String deviceTime;
} }
...@@ -42,7 +42,7 @@ public class PlatElderBreatheAnalysis extends BaseBusEntity { ...@@ -42,7 +42,7 @@ public class PlatElderBreatheAnalysis extends BaseBusEntity {
@ApiModelProperty(value = "当前日期 yyyy-mm-dd") @ApiModelProperty(value = "当前日期 yyyy-mm-dd")
private String happenDate; private String happenDate;
// @TableField(exist = false) @ApiModelProperty(value = "原始设备ID")
// private String remake; private String oriDeviceId;
} }
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;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "PlatElderBreatheHeartRateRecord对象", description = "长者呼吸心率记录")
public class PlatElderBreatheHeartRateRecord extends BaseBusEntity {
@ApiModelProperty(value = "长者id")
private String elderId;
@ApiModelProperty(value = "上报时间")
private Long reportTime;
@ApiModelProperty(value = "心率")
private Integer heartRate;
@ApiModelProperty(value = "呼吸率")
private Integer respiratoryRate;
@ApiModelProperty(value = "体动值")
private Integer bodyMove;
@ApiModelProperty(value = "设备Id")
private String deviceId;
@ApiModelProperty(value = "设备Id")
private String iotDeviceId;
}
...@@ -47,5 +47,8 @@ public class PlatElderSleepAnalysis extends BaseBusEntity { ...@@ -47,5 +47,8 @@ public class PlatElderSleepAnalysis extends BaseBusEntity {
@ApiModelProperty(value = "翻身次数") @ApiModelProperty(value = "翻身次数")
private Integer turnedCount; private Integer turnedCount;
@ApiModelProperty(value = "原始设备ID")
private String oriDeviceId;
} }
...@@ -19,5 +19,15 @@ public enum SleepTypeEnum { ...@@ -19,5 +19,15 @@ public enum SleepTypeEnum {
private String value; private String value;
public static SleepTypeEnum getSleepType(String code) {
for (SleepTypeEnum typeEnum : SleepTypeEnum.values()) {
if (typeEnum.getCode().equals(code)) {
return typeEnum;
}
}
return null;
}
} }
...@@ -65,6 +65,8 @@ public class HuiNengStrategy implements OpenApiBaseStrategy { ...@@ -65,6 +65,8 @@ public class HuiNengStrategy implements OpenApiBaseStrategy {
reportInfo.setSignalStrength(""); reportInfo.setSignalStrength("");
reportInfo.setQuantityElectricity(""); reportInfo.setQuantityElectricity("");
reportInfo.setECG(""); reportInfo.setECG("");
reportInfo.setSignalStrength("");
reportInfo.setQuantityElectricity("");
reportInfo.setBloodSugar(""); reportInfo.setBloodSugar("");
reportInfo.setBloodOxygen(""); reportInfo.setBloodOxygen("");
reportInfo.setBloodPressure(""); reportInfo.setBloodPressure("");
......
package com.makeit.mapper.platform.elder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.elder.PlatElderBreatheHeartRateRecord;
public interface PlatElderBreatheHeartRateRecordMapper extends BaseMapper<PlatElderBreatheHeartRateRecord> {
}
...@@ -12,6 +12,7 @@ import com.makeit.entity.platform.elder.PlatElder; ...@@ -12,6 +12,7 @@ import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.enums.report.PlatformTypeEnum; import com.makeit.enums.report.PlatformTypeEnum;
import com.makeit.shengwang.agora.dto.PlatCallingDeviceDTO; import com.makeit.shengwang.agora.dto.PlatCallingDeviceDTO;
import com.makeit.shengwang.agora.vo.PlatAlarmCallDeviceVO; import com.makeit.shengwang.agora.vo.PlatAlarmCallDeviceVO;
import com.makeit.vo.platform.alarm.PlatAlarmExternalRecordVO;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO; import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
/** /**
...@@ -74,4 +75,6 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> { ...@@ -74,4 +75,6 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> {
PlatAlarmCallDeviceVO callingDevice(PlatCallingDeviceDTO dto); PlatAlarmCallDeviceVO callingDevice(PlatCallingDeviceDTO dto);
PlatAlarmCallDeviceVO callingDeviceAuthIgnoreRtm(PlatCallingDeviceDTO id); PlatAlarmCallDeviceVO callingDeviceAuthIgnoreRtm(PlatCallingDeviceDTO id);
PageVO<PlatAlarmExternalRecordVO> fallRecord(PageReqDTO<PlatAlarmRecordQueryDTO> pageReqDTO);
} }
...@@ -112,7 +112,6 @@ public class BehaviorAlarm implements IAlarm { ...@@ -112,7 +112,6 @@ public class BehaviorAlarm implements IAlarm {
long count = endLong - startLong; long count = endLong - startLong;
//进入空间时间满足告警时长,判断是否已经告警过了 //进入空间时间满足告警时长,判断是否已经告警过了
if (duration!= 0 && count / 1000 >= duration && StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.NO.getValue())) { if (duration!= 0 && count / 1000 >= duration && StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.NO.getValue())) {
log.error("空间雷达发出告警,设备plat_id:" + platDevice.getId());
if(duration1 != 0) { if(duration1 != 0) {
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);
...@@ -127,6 +126,7 @@ public class BehaviorAlarm implements IAlarm { ...@@ -127,6 +126,7 @@ public class BehaviorAlarm implements IAlarm {
if (startLong == null) { if (startLong == null) {
return; return;
} }
log.info("设备离线或者没有人删除缓存,保存空间时长:{}",deviceId);
//保存每次进入空间时长 //保存每次进入空间时长
platDayDurationRecordService.saveDayDurationRecord(platAlarmCheckDTO, alarmRedisDTO); platDayDurationRecordService.saveDayDurationRecord(platAlarmCheckDTO, alarmRedisDTO);
RedisUtil.delete(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId); RedisUtil.delete(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId);
...@@ -150,7 +150,7 @@ public class BehaviorAlarm implements IAlarm { ...@@ -150,7 +150,7 @@ public class BehaviorAlarm 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.error("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId()); //log.error("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
return; return;
} }
......
...@@ -59,12 +59,10 @@ public class BreathAlarm implements IAlarm { ...@@ -59,12 +59,10 @@ public class BreathAlarm 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.error("呼吸设备未关联长者,设备plat_id:" + platAlarmCheckDTO.getPlatDevice().getId());
return; return;
} }
PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig(); PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig();
if (CommonEnum.NO.getValue().equals(config.getStatus())) { if (CommonEnum.NO.getValue().equals(config.getStatus())) {
log.error("呼吸告警配置为禁用,告警配置id:" + config.getId());
return; return;
} }
PlatElder platElder = platElderList.get(0); PlatElder platElder = platElderList.get(0);
...@@ -94,7 +92,6 @@ public class BreathAlarm implements IAlarm { ...@@ -94,7 +92,6 @@ public class BreathAlarm implements IAlarm {
int hasPerson = (int) properties.get("person"); int hasPerson = (int) properties.get("person");
if (0 == hasPerson) { if (0 == hasPerson) {
log.info("当前上报数据无人,不需要告警");
RedisUtil.delete(RedisConst.ALARM_DEVICE_BR_ID + deviceId); RedisUtil.delete(RedisConst.ALARM_DEVICE_BR_ID + deviceId);
return; return;
} }
...@@ -184,6 +181,7 @@ public class BreathAlarm implements IAlarm { ...@@ -184,6 +181,7 @@ public class BreathAlarm implements IAlarm {
PlatAlarmRecord platAlarmRecord = platAlarmRecordService.convertToPlatAlarmRecord(platAlarmCheckDTO,platElder); PlatAlarmRecord platAlarmRecord = platAlarmRecordService.convertToPlatAlarmRecord(platAlarmCheckDTO,platElder);
platAlarmRecord.setElderIds(platElder.getId()); platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName()); platAlarmRecord.setElderName(platElder.getName());
platAlarmRecord.setDeviceTime(platAlarmCheckDTO.getDeviceTime());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord); platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者呼吸异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName()); log.error("长者呼吸异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
} }
......
...@@ -69,7 +69,7 @@ public class FallAlarm implements IAlarm { ...@@ -69,7 +69,7 @@ public class FallAlarm implements IAlarm {
*/ */
@Override @Override
public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) { public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) {
log.info("跌倒预警config开始"); //log.info("跌倒预警config开始");
JSONObject properties = platAlarmCheckDTO.getProperties(); JSONObject properties = platAlarmCheckDTO.getProperties();
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice(); PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getId(); String deviceId = platDevice.getId();
...@@ -77,7 +77,7 @@ public class FallAlarm implements IAlarm { ...@@ -77,7 +77,7 @@ public class FallAlarm implements IAlarm {
properties = new JSONObject(); properties = new JSONObject();
} }
String personState = Convert.toStr(properties.get("personState")); String personState = Convert.toStr(properties.get("personState"));
log.info("跌倒预警personState:{}", personState); //log.info("跌倒预警personState:{}", personState);
//记录停留时长 //记录停留时长
recordDuration(platAlarmCheckDTO); recordDuration(platAlarmCheckDTO);
...@@ -232,6 +232,7 @@ public class FallAlarm implements IAlarm { ...@@ -232,6 +232,7 @@ public class FallAlarm implements IAlarm {
PlatAlarmRecord platAlarmRecord = platAlarmRecordService.convertToPlatAlarmRecord(platAlarmCheckDTO, platElder); PlatAlarmRecord platAlarmRecord = platAlarmRecordService.convertToPlatAlarmRecord(platAlarmCheckDTO, platElder);
platAlarmRecord.setElderIds(platElder.getId()); platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName()); platAlarmRecord.setElderName(platElder.getName());
platAlarmRecord.setDeviceTime(platAlarmCheckDTO.getDeviceTime());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord); platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者跌倒,发出告警,设备id:" + platDevice.getId() + ", 长者名称:" + platElder.getName()); log.error("长者跌倒,发出告警,设备id:" + platDevice.getId() + ", 长者名称:" + platElder.getName());
} }
......
...@@ -50,13 +50,13 @@ public class HeartAlarm implements IAlarm { ...@@ -50,13 +50,13 @@ public class HeartAlarm 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.error("心率设备未关联长者,设备plat_id:" + platAlarmCheckDTO.getPlatDevice().getId()); //log.error("心率设备未关联长者,设备plat_id:" + platAlarmCheckDTO.getPlatDevice().getId());
return; return;
} }
PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig(); PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig();
String messageType = platAlarmCheckDTO.getMessageType(); String messageType = platAlarmCheckDTO.getMessageType();
if (CommonEnum.NO.getValue().equals(config.getStatus())) { if (CommonEnum.NO.getValue().equals(config.getStatus())) {
log.error("呼吸告警配置为禁用,告警配置id:" + config.getId()); //log.error("呼吸告警配置为禁用,告警配置id:" + config.getId());
return; return;
} }
PlatElder platElder = platElderList.get(0); PlatElder platElder = platElderList.get(0);
...@@ -107,7 +107,6 @@ public class HeartAlarm implements IAlarm { ...@@ -107,7 +107,6 @@ public class HeartAlarm implements IAlarm {
RedisUtil.delete(RedisConst.ALARM_DEVICE_HR_ID + deviceId); RedisUtil.delete(RedisConst.ALARM_DEVICE_HR_ID + deviceId);
return; return;
} }
log.info("hr:{},end:{},start:{},mes:{}", hr, end, start, messageType);
if ((hr > end || hr < start) && StringUtils.equalsAnyIgnoreCase(messageType, "REPORT_PROPERTY")) { if ((hr > end || hr < start) && StringUtils.equalsAnyIgnoreCase(messageType, "REPORT_PROPERTY")) {
if(alarmRedisDTO==null){ if(alarmRedisDTO==null){
alarmRedisDTO = new AlarmRedisDTO(); alarmRedisDTO = new AlarmRedisDTO();
...@@ -167,6 +166,7 @@ public class HeartAlarm implements IAlarm { ...@@ -167,6 +166,7 @@ public class HeartAlarm implements IAlarm {
PlatAlarmRecord platAlarmRecord = platAlarmRecordService.convertToPlatAlarmRecord(platAlarmCheckDTO,platElder); PlatAlarmRecord platAlarmRecord = platAlarmRecordService.convertToPlatAlarmRecord(platAlarmCheckDTO,platElder);
platAlarmRecord.setElderIds(platElder.getId()); platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName()); platAlarmRecord.setElderName(platElder.getName());
platAlarmRecord.setDeviceTime(platAlarmCheckDTO.getDeviceTime());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord); platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者心率异常,发出告警,设备plat_id:"+platDevice.getId()+", 长者名称:"+platElder.getName()); log.error("长者心率异常,发出告警,设备plat_id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
} }
......
...@@ -51,10 +51,9 @@ public class OffBedAlarm implements IAlarm { ...@@ -51,10 +51,9 @@ public class OffBedAlarm implements IAlarm {
public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) { public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice(); PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO); platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
log.info("执行离床checkConfig方法:"); //log.info("执行离床checkConfig方法:");
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList(); List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) { if (CollectionUtils.isEmpty(platElderList)) {
log.error("离床告警心率设备未关联长者,设备plat_id:" + platAlarmCheckDTO.getPlatDevice().getId());
return; return;
} }
PlatAlarmConfig config = alarmConfigCacheUtil.get(platDevice.getOrgId(), PlatAlarmConfigEnum.AlarmTypeEnum.OFF_BED.getValue()); PlatAlarmConfig config = alarmConfigCacheUtil.get(platDevice.getOrgId(), PlatAlarmConfigEnum.AlarmTypeEnum.OFF_BED.getValue());
...@@ -105,13 +104,13 @@ public class OffBedAlarm implements IAlarm { ...@@ -105,13 +104,13 @@ public class OffBedAlarm implements IAlarm {
// 1-有人 0-无人 // 1-有人 0-无人
AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId); AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId);
if ("1".equals(personState)) { if ("1".equals(personState)) {
log.info("deviceId:{},离床告警有人状态下,删除redis", deviceId); // log.info("deviceId:{},离床告警有人状态下,删除redis", deviceId);
RedisUtil.delete(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId); RedisUtil.delete(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId);
return; return;
} }
String messageType = platAlarmCheckDTO.getMessageType(); String messageType = platAlarmCheckDTO.getMessageType();
if (StringUtils.equalsAnyIgnoreCase(messageType, "OFFLINE", "DISCONNECT")) { if (StringUtils.equalsAnyIgnoreCase(messageType, "OFFLINE", "DISCONNECT")) {
log.info("deviceId:{},离床告警设备下线,删除redis off_bed 预警", deviceId); //log.info("deviceId:{},离床告警设备下线,删除redis off_bed 预警", deviceId);
RedisUtil.delete(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId); RedisUtil.delete(RedisConst.ALARM_DEVICE_OFF_BED_ID + deviceId);
} }
if (isOffBed) { if (isOffBed) {
......
...@@ -57,6 +57,7 @@ import com.makeit.utils.sql.join.JoinUtil; ...@@ -57,6 +57,7 @@ import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.utils.user.common.CommonUserUtil; import com.makeit.utils.user.common.CommonUserUtil;
import com.makeit.utils.user.common.CommonUserVO; import com.makeit.utils.user.common.CommonUserVO;
import com.makeit.utils.user.wechat.WechatUserUtil; import com.makeit.utils.user.wechat.WechatUserUtil;
import com.makeit.vo.platform.alarm.PlatAlarmExternalRecordVO;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO; import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -65,7 +66,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -65,7 +66,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.sql.Timestamp;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.regex.Matcher; import java.util.regex.Matcher;
...@@ -143,6 +143,22 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -143,6 +143,22 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
return PageUtil.toPageVO(dtos, page); return PageUtil.toPageVO(dtos, page);
} }
@Override
public PageVO<PlatAlarmExternalRecordVO> fallRecord(PageReqDTO<PlatAlarmRecordQueryDTO> pageReqDTO) {
PlatAlarmRecordQueryDTO data = pageReqDTO.getData();
if (StringUtils.isEmpty(data.getOrgId())){
throw new RuntimeException("机构id不能为空");
}
if (data.getCreateDateFrom() == null && data.getCreateDateTo() == null) {
throw new RuntimeException("告警起始时间不能为空");
}
data.setAlarmType("1");
data.setStatus("0");
PageVO<PlatAlarmRecordVO> page = page(pageReqDTO);
List<PlatAlarmRecordVO> list = page.getList();
return PageUtil.toPageVO(BeanDtoVoUtils.listVo(list, PlatAlarmExternalRecordVO.class), page);
}
/** /**
* 子女端告警列表 * 子女端告警列表
* *
...@@ -477,7 +493,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -477,7 +493,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
//todo 要支持 设备绑定多个空间 //todo 要支持 设备绑定多个空间
List<PlatRoomBedDevice> platRoomBedDeviceList = platRoomBedDeviceService.list(roomBedDeviceLambdaQueryWrapper); List<PlatRoomBedDevice> platRoomBedDeviceList = platRoomBedDeviceService.list(roomBedDeviceLambdaQueryWrapper);
if(CollectionUtils.isEmpty(platRoomBedDeviceList)){ if(CollectionUtils.isEmpty(platRoomBedDeviceList)){
log.error("设备没绑定房间:"+platDevice.getId()); // log.error("设备没绑定房间:"+platDevice.getId());
return; return;
} }
...@@ -617,9 +633,10 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -617,9 +633,10 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
if (platDevice == null) { if (platDevice == null) {
throw new RuntimeException("找不到告警关联的设备,设备已解绑" + deviceId); throw new RuntimeException("找不到告警关联的设备,设备已解绑" + deviceId);
} }
Timestamp timestamp = Timestamp.valueOf(platAlarmRecord.getCreateDate());
log.info("开始想设备发送误报通知"); log.info("开始想设备发送误报通知");
String result = iotDevicePropertiesOperateService.deviceFunctionAttr(platDevice.getOriDeviceId(), timestamp.getTime()); String result = iotDevicePropertiesOperateService.deviceFunctionAttr(platDevice.getOriDeviceId(),
StringUtils.isEmpty(platAlarmRecord.getDeviceTime()) ? "" : platAlarmRecord.getDeviceTime());
if (StringUtils.isNotEmpty(result)) { if (StringUtils.isNotEmpty(result)) {
throw new RuntimeException("发送误报通知失败:" + result); throw new RuntimeException("发送误报通知失败:" + result);
} }
......
package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.elder.PlatElderBreatheHeartRateRecord;
import java.util.List;
public interface PlatElderBreatheHeartRateRecordService extends IService<PlatElderBreatheHeartRateRecord> {
void breatheHeartRateRecordTask();
List<PlatElderBreatheHeartRateRecord> list(String elderId, String iotDeviceId, String tenantId, long start, long end);
}
...@@ -14,4 +14,5 @@ import com.makeit.entity.platform.elder.PlatElderCoordinateRecord; ...@@ -14,4 +14,5 @@ import com.makeit.entity.platform.elder.PlatElderCoordinateRecord;
public interface PlatElderCoordinateRecordService extends IService<PlatElderCoordinateRecord> { public interface PlatElderCoordinateRecordService extends IService<PlatElderCoordinateRecord> {
void coordinateRecordTask(); void coordinateRecordTask();
} }
...@@ -41,6 +41,8 @@ public interface PlatElderDayReportDayService { ...@@ -41,6 +41,8 @@ public interface PlatElderDayReportDayService {
List<String> failRecordList(PlatElderReportDTO platElderIdDTO); List<String> failRecordList(PlatElderReportDTO platElderIdDTO);
List<PlatElderCoordinateVO> coordinateList(String elderId, long start, long end);
List<PlatElderCoordinateVO> coordinateList(String elderId, String deviceId, LocalDateTime start, LocalDateTime end); List<PlatElderCoordinateVO> coordinateList(String elderId, String deviceId, LocalDateTime start, LocalDateTime end);
List<PlatElderCoordinateVO> coordinateList(PlatElderReportDTO platElderIdDTO); List<PlatElderCoordinateVO> coordinateList(PlatElderReportDTO platElderIdDTO);
......
...@@ -33,5 +33,5 @@ public interface PlatElderRealTimeService { ...@@ -33,5 +33,5 @@ public interface PlatElderRealTimeService {
List<PlatElderCoordinateVO> coordinate(PlatElderIdDTO platElderIdDTO); List<PlatElderCoordinateVO> coordinate(PlatElderIdDTO platElderIdDTO);
PlatElderRealTimeHeartRespiratoryVO deviceHealthReport(PlatElderIdDTO dto);
} }
...@@ -2,6 +2,10 @@ package com.makeit.service.platform.elder; ...@@ -2,6 +2,10 @@ package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.elder.PlatElderSleep; import com.makeit.entity.platform.elder.PlatElderSleep;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
import com.makeit.entity.saas.analysis.SaasSleepEvaluateStandardReport;
import java.util.List;
/** /**
* <p> * <p>
...@@ -13,7 +17,10 @@ import com.makeit.entity.platform.elder.PlatElderSleep; ...@@ -13,7 +17,10 @@ import com.makeit.entity.platform.elder.PlatElderSleep;
*/ */
public interface PlatElderSleepService extends IService<PlatElderSleep> { public interface PlatElderSleepService extends IService<PlatElderSleep> {
void elderSleepSleepAnalysisTask(); List<PlatElderSleepAnalysis> elderSleepSleepAnalysisTask(Integer month, Integer day);
void test1(); void test1();
String calculateScores(long daySleepTime, long dayRestTime, long deepTime, long soberTime, long lightTime,
SaasSleepEvaluateStandardReport evaluateStandardReport);
} }
package com.makeit.service.platform.elder.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.elder.PlatElderBreatheHeartRateRecord;
import com.makeit.mapper.platform.elder.PlatElderBreatheHeartRateRecordMapper;
import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.service.platform.elder.PlatElderBreatheHeartRateRecordService;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.time.LocalDateTimeUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class PlatElderBreatheHeartRateRecordServiceImpl extends ServiceImpl<PlatElderBreatheHeartRateRecordMapper, PlatElderBreatheHeartRateRecord> implements PlatElderBreatheHeartRateRecordService {
@Autowired
private PlatElderService platElderService;
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@Autowired
private IotProductDeviceService iotProductDeviceService;
@Override
public void breatheHeartRateRecordTask() {
LocalDate nowDate = LocalDate.now();
LocalDate yesDate = nowDate.minusDays(1);
LocalDateTime start = LocalDateTimeUtils.getDayStart(yesDate);
LocalDateTime end = LocalDateTimeUtils.getDayEnd(yesDate);
List<PlatElder> elderList = platElderService.list(new QueryWrapper<PlatElder>().lambda()
.isNotNull(PlatElder::getBedId));
if (CollectionUtils.isEmpty(elderList)) {
return;
}
List<PlatElderBreatheHeartRateRecord> list = Lists.newArrayList();
for (PlatElder e : elderList) {
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(e.getId(), null);
if (platDevice == null) {
continue;
}
List<DeviceInfoContentBreathe> breatheList = iotProductDeviceService.getDeviceLogByTimeRangeBreathe(platDevice.getOriDeviceId(), 2 * 24 * 3600, start, end);
List<PlatElderBreatheHeartRateRecord> data = StreamUtil.map(breatheList, b -> {
PlatElderBreatheHeartRateRecord record = new PlatElderBreatheHeartRateRecord();
record.setElderId(e.getId());
record.setReportTime(b.getTimestamp());
record.setHeartRate(b.getProperties().getHr());
record.setRespiratoryRate(b.getProperties().getBr());
record.setBodyMove(b.getProperties().getBodymove());
record.setDeviceId(platDevice.getId());
record.setIotDeviceId(platDevice.getOriDeviceId());
record.setTenantId(e.getTenantId());
return record;
});
list.addAll(data);
}
saveBatch(list);
}
@Override
public List<PlatElderBreatheHeartRateRecord> list(String elderId, String iotDeviceId, String tenantId, long start, long end) {
LambdaQueryWrapper<PlatElderBreatheHeartRateRecord> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(elderId), PlatElderBreatheHeartRateRecord::getElderId, elderId);
queryWrapper.eq(StringUtils.isNotBlank(iotDeviceId), PlatElderBreatheHeartRateRecord::getIotDeviceId, iotDeviceId);
queryWrapper.eq(StringUtils.isNotBlank(tenantId), PlatElderBreatheHeartRateRecord::getTenantId, tenantId);
queryWrapper.ge(PlatElderBreatheHeartRateRecord::getReportTime, start);
queryWrapper.le(PlatElderBreatheHeartRateRecord::getReportTime, end);
return list(queryWrapper);
}
}
...@@ -67,18 +67,12 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC ...@@ -67,18 +67,12 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC
return; return;
} }
PlatElderCoordinateRecord platElderCoordinateRecord; PlatElderCoordinateRecord platElderCoordinateRecord;
PlatRegionSettingFix platRegionSettingFix;
List<PlatRegionSetting> platRegionSettingList = platRegionSettingService.list(new QueryWrapper<>()); List<PlatRegionSetting> platRegionSettingList = platRegionSettingService.list(new QueryWrapper<>());
Function<PlatRegionSetting,String> function = entity -> entity.getRoomId() + "-" + entity.getDeviceId();
Map<String, PlatRegionSetting> platRegionSettingMap = StreamUtil.toMap(platRegionSettingList,
function);
for (PlatElder platElder : elderList) { for (PlatElder platElder : elderList) {
List<PlatElderCoordinateVO> elderCoordinateVOList = platElderDayReportDayService.coordinateList(platElder.getId(), null, datStart, dayEnd); List<PlatElderCoordinateVO> elderCoordinateVOList = platElderDayReportDayService.coordinateList(platElder.getId(), null, datStart, dayEnd);
Set<String> deviceIdSet = Sets.newHashSet();
List<PlatElderCoordinateRecord> list = Lists.newArrayList(); List<PlatElderCoordinateRecord> list = Lists.newArrayList();
for (PlatElderCoordinateVO vo : elderCoordinateVOList) { for (PlatElderCoordinateVO vo : elderCoordinateVOList) {
platElderCoordinateRecord = new PlatElderCoordinateRecord(); platElderCoordinateRecord = new PlatElderCoordinateRecord();
...@@ -93,21 +87,15 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC ...@@ -93,21 +87,15 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC
platElderCoordinateRecord.setElderId(platElder.getId()); platElderCoordinateRecord.setElderId(platElder.getId());
platElderCoordinateRecord.setTenantId(platElder.getTenantId()); platElderCoordinateRecord.setTenantId(platElder.getTenantId());
list.add(platElderCoordinateRecord); list.add(platElderCoordinateRecord);
deviceIdSet.add(vo.getDeviceId());
} }
saveBatch(list); saveBatch(list);
for (String deviceId : deviceIdSet) {
PlatRegionSetting platRegionSetting = platRegionSettingMap.get(platElder.getRoomId() + "-" + deviceId);
if (platRegionSetting != null) {
platRegionSettingFix = new PlatRegionSettingFix();
BeanUtils.copyProperties(platRegionSetting,platRegionSettingFix,"id");
platRegionSettingFix.setElderId(platElder.getId());
platRegionSettingFix.setHappenDate(yesDate.toString());
platRegionSettingFixService.save(platRegionSettingFix);
}
}
} }
List<PlatRegionSettingFix> settingFixList = StreamUtil.map(platRegionSettingList, setting -> {
PlatRegionSettingFix settingFix = new PlatRegionSettingFix();
BeanUtils.copyProperties(setting, settingFix,"id");
settingFix.setHappenDate(yesDate.toString());
return settingFix;
});
platRegionSettingFixService.saveBatch(settingFixList);
} }
} }
package com.makeit.service.platform.elder.impl; package com.makeit.service.platform.elder.impl;
import cn.hutool.core.util.StrUtil;
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.makeit.common.entity.BaseBusEntity; import com.makeit.common.entity.BaseBusEntity;
...@@ -29,10 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -29,10 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.DayOfWeek; import java.time.*;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -174,15 +172,19 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek ...@@ -174,15 +172,19 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String elderId = platElderIdDTO.getElderId(); String elderId = platElderIdDTO.getElderId();
if (StringUtils.isNotEmpty(platElderIdDTO.getDeviceId())) { String deviceId = platElderIdDTO.getDeviceId();
PlatElder platElder = platElderService.getByDeviceId(platElderIdDTO.getDeviceId(), platElderIdDTO.getTenantId()); String tenantId = platElderIdDTO.getTenantId();
if (platElder != null) { // if (StringUtils.isNotEmpty(deviceId)) {
elderId = platElder.getId(); // PlatElder platElder = platElderService.getByDeviceId(deviceId, platElderIdDTO.getTenantId());
} // if (platElder != null) {
} // elderId = platElder.getId();
// }
// }
List<PlatElderSleepAnalysis> sleepAnalysisList = platElderSleepAnalysisService.list(new QueryWrapper<PlatElderSleepAnalysis>().lambda() List<PlatElderSleepAnalysis> sleepAnalysisList = platElderSleepAnalysisService.list(new QueryWrapper<PlatElderSleepAnalysis>().lambda()
.eq(PlatElderSleepAnalysis::getElderId, elderId) .eq(StrUtil.isNotBlank(elderId), PlatElderSleepAnalysis::getElderId, elderId)
.ge(PlatElderSleepAnalysis::getHappenDate, dateTimeFormatter.format(weekStartDate)) .ge(PlatElderSleepAnalysis::getHappenDate, dateTimeFormatter.format(weekStartDate))
.eq(StrUtil.isNotBlank(deviceId), PlatElderSleepAnalysis::getOriDeviceId, deviceId)
.eq(StrUtil.isNotBlank(tenantId), PlatElderSleepAnalysis::getTenantId, tenantId)
.le(PlatElderSleepAnalysis::getHappenDate, dateTimeFormatter.format(weekEndDate)) .le(PlatElderSleepAnalysis::getHappenDate, dateTimeFormatter.format(weekEndDate))
); );
...@@ -330,15 +332,19 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek ...@@ -330,15 +332,19 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String elderId = platElderIdDTO.getElderId(); String elderId = platElderIdDTO.getElderId();
if (StringUtils.isNotEmpty(platElderIdDTO.getDeviceId())) { String deviceId = platElderIdDTO.getDeviceId();
PlatElder platElder = platElderService.getByDeviceId(platElderIdDTO.getDeviceId(), platElderIdDTO.getTenantId()); String tenantId = platElderIdDTO.getTenantId();
if (platElder != null) { // if (StringUtils.isNotEmpty(deviceId)) {
elderId = platElder.getId(); // PlatElder platElder = platElderService.getByDeviceId(deviceId, platElderIdDTO.getTenantId());
} // if (platElder != null) {
} // elderId = platElder.getId();
// }
// }
List<PlatElderBreatheAnalysis> breatheAnalyses = platElderBreatheAnalysisService.list(new QueryWrapper<PlatElderBreatheAnalysis>().lambda() List<PlatElderBreatheAnalysis> breatheAnalyses = platElderBreatheAnalysisService.list(new QueryWrapper<PlatElderBreatheAnalysis>().lambda()
.eq(PlatElderBreatheAnalysis::getElderId, elderId) .eq(StrUtil.isNotBlank(elderId), PlatElderBreatheAnalysis::getElderId, elderId)
.ge(PlatElderBreatheAnalysis::getHappenDate, dateTimeFormatter.format(weekStartDate)) .ge(PlatElderBreatheAnalysis::getHappenDate, dateTimeFormatter.format(weekStartDate))
.eq(StrUtil.isNotBlank(deviceId), PlatElderBreatheAnalysis::getOriDeviceId, deviceId)
.eq(StrUtil.isNotBlank(tenantId), PlatElderBreatheAnalysis::getTenantId, tenantId)
.le(PlatElderBreatheAnalysis::getHappenDate, dateTimeFormatter.format(weekEndDate)) .le(PlatElderBreatheAnalysis::getHappenDate, dateTimeFormatter.format(weekEndDate))
); );
...@@ -477,7 +483,11 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek ...@@ -477,7 +483,11 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
@Override @Override
public List<PlatElderCoordinateVO> coordinateList(PlatElderReportDTO platElderIdDTO) { public List<PlatElderCoordinateVO> coordinateList(PlatElderReportDTO platElderIdDTO) {
return platElderDayReportDayService.coordinateList(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId(), weekStartDateTime(platElderIdDTO.getStartTime()), weekEndDateTime(platElderIdDTO.getEndTime())); LocalDateTime start = weekStartDateTime(platElderIdDTO.getStartTime());
LocalDateTime end = weekEndDateTime(platElderIdDTO.getEndTime());
long reportTimeStart = start.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
long reportTimeEnd = end.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
return platElderDayReportDayService.coordinateList(platElderIdDTO.getElderId(), reportTimeStart, reportTimeEnd);
} }
@Override @Override
......
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; ...@@ -4,6 +4,7 @@ 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;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.makeit.common.entity.BaseBusEntity;
import com.makeit.common.entity.BaseEntity; import com.makeit.common.entity.BaseEntity;
import com.makeit.dto.platform.elder.PlatElderIdDTO; import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.entity.platform.device.PlatDevice; import com.makeit.entity.platform.device.PlatDevice;
...@@ -519,5 +520,52 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService { ...@@ -519,5 +520,52 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
} }
@Override
public PlatElderRealTimeHeartRespiratoryVO deviceHealthReport(PlatElderIdDTO dto) {
if (StringUtils.isEmpty(dto.getOrgId())) {
throw new RuntimeException("机构id不能为空");
}
if (StringUtils.isEmpty(dto.getDeviceId())) {
throw new RuntimeException("设备id不能为空");
}
PlatDevice platDevice = platDeviceService.getOne(new QueryWrapper<PlatDevice>().lambda()
.eq(PlatDevice::getOriDeviceId, dto.getDeviceId())
.eq(BaseBusEntity::getTenantId,dto.getOrgId())
.last("limit 1"));
PlatElderRealTimeHeartRespiratoryVO vo = new PlatElderRealTimeHeartRespiratoryVO();
vo.setTime(LocalDateTime.now());
if (platDevice == null) {
return vo;
}
vo.setDeviceId(platDevice.getOriDeviceId());
String result = redisTemplate.opsForValue().get(DEVICE_BR_DATA + platDevice.getOriDeviceId());
log.info("实时获取设备呼吸数据:{}",result);
if (result != null) {
JSONObject jsonObject = JSON.parseObject(result);
if (jsonObject != null) {
String person = jsonObject.getString("person");
log.info("当前人员人员状态:{}",person);
vo.setTime(LocalDateTime.now());
if (StringUtils.equals(person,"0")) {
vo.setHeartRate(0);
vo.setRespiratoryRate(0);
vo.setBody(0);
vo.setStatus("0");
vo.setPersonState(0);
vo.setPoint(Lists.newArrayList());
} else {
vo.setHeartRate(Integer.valueOf(jsonObject.getString("hr")));
vo.setRespiratoryRate(Integer.valueOf(jsonObject.getString("br")));
vo.setBody(Integer.valueOf(jsonObject.getString("bodymove")));
vo.setPersonState(Integer.valueOf(jsonObject.getString("personState")));
Object point = jsonObject.get("point");
vo.setPoint((point == null ? Lists.newArrayList() : (List<Integer>) point));
vo.setStatus(person);
}
}
return vo;
}
return vo;
}
} }
...@@ -40,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -40,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.*; import java.time.*;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -87,14 +88,18 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -87,14 +88,18 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@TenantIdIgnore @TenantIdIgnore
public void elderSleepSleepAnalysisTask() { public List<PlatElderSleepAnalysis> elderSleepSleepAnalysisTask(Integer month,Integer day) {
List<String> dayHourRangeList = getLastDayHourRange(); List<String> dayHourRangeList = getLastDayHourRange(month,day);
Calendar calendar = Calendar.getInstance(); // Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date()); // calendar.setTime(new Date());
calendar.add(Calendar.DAY_OF_MONTH, -1); // calendar.add(Calendar.DAY_OF_MONTH, -1);
Date previousDate = calendar.getTime(); // Date previousDate = calendar.getTime();
String currentDate = DateUtil.format(previousDate, DatePattern.NORM_DATE_PATTERN); // String currentDate = DateUtil.format(previousDate, DatePattern.NORM_DATE_PATTERN);
String currentDate = LocalDate.now().minusDays(1).toString();
if(month != null && day != null){
currentDate = LocalDate.of(2023, month, day).minusDays(1).toString();
}
SaasSleepAnalysisModel analysisModel = saasSleepAnalysisModelService.getOne(new QueryWrapper<SaasSleepAnalysisModel>().lambda() SaasSleepAnalysisModel analysisModel = saasSleepAnalysisModelService.getOne(new QueryWrapper<SaasSleepAnalysisModel>().lambda()
.orderByDesc(BaseEntity::getCreateBy) .orderByDesc(BaseEntity::getCreateBy)
...@@ -125,7 +130,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -125,7 +130,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
int sleepModerateActionThreshold = Integer.parseInt(analysisModel.getSleepModerateActionThreshold()); int sleepModerateActionThreshold = Integer.parseInt(analysisModel.getSleepModerateActionThreshold());
int sleepModerateActionTimeBegin = Integer.parseInt(analysisModel.getSleepModerateActionTimeBegin()); int sleepModerateActionTimeBegin = Integer.parseInt(analysisModel.getSleepModerateActionTimeBegin());
List<PlatElderSleepAnalysis> result = new ArrayList<>();
for (PlatRoomBedDevice platRoomBedDevice : platRoomBedDeviceList) { for (PlatRoomBedDevice platRoomBedDevice : platRoomBedDeviceList) {
TreeMap<String, AnalysisVO> totalMap = new TreeMap<>(); TreeMap<String, AnalysisVO> totalMap = new TreeMap<>();
...@@ -552,7 +557,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -552,7 +557,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
} }
SaasSleepEvaluateStandardReport evaluateStandardReport = saasSleepEvaluateStandardReportService.getOne(new QueryWrapper<SaasSleepEvaluateStandardReport>().lambda() SaasSleepEvaluateStandardReport evaluateStandardReport = saasSleepEvaluateStandardReportService.getOne(new QueryWrapper<SaasSleepEvaluateStandardReport>().lambda()
.orderByDesc(BaseEntity::getCreateBy) .orderByDesc(BaseEntity::getCreateDate)
.last("limit 1")); .last("limit 1"));
// 算出每一段睡觉的不同睡眠类型的时间段 // 算出每一段睡觉的不同睡眠类型的时间段
...@@ -689,9 +694,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -689,9 +694,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
long totalScore = sleepScore + deepScore + lightScore - soberScore; long totalScore = sleepScore + deepScore + lightScore - soberScore;
saasSleepEvaluateStandardReportVO.setTotalScore(totalScore); saasSleepEvaluateStandardReportVO.setTotalScore(totalScore);
EvaluateReportVO sleepReport = saasSleepEvaluateReportService.getByScore(totalScore);
// 记录长者一天睡眠的记录 // 记录长者一天睡眠的记录
long daySleepTime = 0; long daySleepTime = 0;
long dayRestTime = 0; long dayRestTime = 0;
...@@ -708,6 +710,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -708,6 +710,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
} }
} }
platElderSleepService.saveBatch(elderSleepList); platElderSleepService.saveBatch(elderSleepList);
String score = calculateScores(daySleepTime, dayRestTime, deepTime, soberTime, lightTime, evaluateStandardReport);
EvaluateReportVO sleepReport = saasSleepEvaluateReportService.getByScore(Long.parseLong(score));
// 长者一天的睡眠分析 // 长者一天的睡眠分析
PlatElderSleepAnalysis elderSleepAnalysis = new PlatElderSleepAnalysis(); PlatElderSleepAnalysis elderSleepAnalysis = new PlatElderSleepAnalysis();
...@@ -715,15 +719,58 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -715,15 +719,58 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
elderSleepAnalysis.setActionCount(totalActionCount); elderSleepAnalysis.setActionCount(totalActionCount);
elderSleepAnalysis.setTurnedCount(totalTurnedCount); elderSleepAnalysis.setTurnedCount(totalTurnedCount);
elderSleepAnalysis.setHappenDate(currentDate); elderSleepAnalysis.setHappenDate(currentDate);
elderSleepAnalysis.setSleepScore(String.valueOf(totalScore)); elderSleepAnalysis.setSleepScore(score);
elderSleepAnalysis.setSleepTime(String.valueOf(daySleepTime)); elderSleepAnalysis.setSleepTime(String.valueOf(daySleepTime));
elderSleepAnalysis.setRestTime(String.valueOf(dayRestTime)); elderSleepAnalysis.setRestTime(String.valueOf(dayRestTime));
elderSleepAnalysis.setSleepResult(sleepReport.getResult()); elderSleepAnalysis.setSleepResult(sleepReport.getResult());
elderSleepAnalysis.setTenantId(tenantId); elderSleepAnalysis.setTenantId(tenantId);
elderSleepAnalysis.setSleepEvaluate(sleepReport.getEvaluate()); elderSleepAnalysis.setSleepEvaluate(sleepReport.getEvaluate());
elderSleepAnalysis.setOriDeviceId(platDevice.getOriDeviceId());
result.add(elderSleepAnalysis);
platElderSleepAnalysisService.save(elderSleepAnalysis); platElderSleepAnalysisService.save(elderSleepAnalysis);
} }
return result;
}
@Override
public String calculateScores(long daySleepTime, long dayRestTime, long deepTime, long soberTime, long lightTime,
SaasSleepEvaluateStandardReport evaluateStandardReport) {
List<SleepConfigVO> sleepDeepConfigList = JSON.parseArray(evaluateStandardReport.getSleepDeepConfig(), SleepConfigVO.class);
List<SleepConfigVO> soberConfigList = JSON.parseArray(evaluateStandardReport.getSoberConfig(), SleepConfigVO.class);
SleepConfigVO lightnessConfig = JSON.parseObject(evaluateStandardReport.getSleepLightnessConfig(), SleepConfigVO.class);
List<SleepConfigVO> sleepTimeConfigList = JSON.parseArray(evaluateStandardReport.getSleepTime(), SleepConfigVO.class);
long deepHour = deepTime / 60;
long soberHour = soberTime / 60;
long lightHour = lightTime / 60;
long sleepHour = (daySleepTime + dayRestTime) / 60;
AtomicReference<Integer> sleepScore = new AtomicReference<>(0);
AtomicReference<Integer> deepScore = new AtomicReference<>(0);
AtomicReference<Integer> soberScore = new AtomicReference<>(0);
int lightScore = 0;
sleepTimeConfigList.forEach(s -> {
int sleepKey = (int) Math.floor(sleepHour);
if (Integer.parseInt(s.getHour()) <= sleepKey) {
sleepScore.set(Integer.parseInt(s.getScore()));
}
});
sleepDeepConfigList.forEach(s -> {
int sleepKey = (int) Math.floor(deepHour);
if (Integer.parseInt(s.getHour()) <= sleepKey) {
deepScore.set(Integer.parseInt(s.getScore()));
}
});
soberConfigList.forEach(s -> {
int sleepKey = (int) Math.floor(soberHour);
if (Integer.parseInt(s.getHour()) <= sleepKey) {
soberScore.set(Integer.parseInt(s.getScore()));
}
});
if (Integer.parseInt(lightnessConfig.getHour()) <= lightHour) {
int multiplier = (int) lightHour / Integer.parseInt(lightnessConfig.getHour());
lightScore = Integer.parseInt(lightnessConfig.getScore()) * multiplier;
}
Integer totalScore = sleepScore.get() + deepScore.get() + lightScore - soberScore.get();
return String.valueOf(totalScore);
} }
...@@ -740,9 +787,12 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -740,9 +787,12 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
return DEFAULT_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())); return DEFAULT_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault()));
} }
public List<String> getLastDayHourRange() { public List<String> getLastDayHourRange(Integer month,Integer day) {
int count = 24; int count = 24;
LocalDateTime localDateTime = LocalDateTime.now(); LocalDateTime localDateTime = LocalDateTime.now();
if (month != null && day != null) {
localDateTime = LocalDateTime.of(LocalDate.of(2023, month, day), LocalTime.now());
}
List<String> list = Lists.newArrayList(); List<String> list = Lists.newArrayList();
String startTime; String startTime;
String endTime; String endTime;
...@@ -758,14 +808,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -758,14 +808,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
return time.atTime(0, 0, 0); return time.atTime(0, 0, 0);
} }
public static void main(String[] args) {
PlatElderSleepServiceImpl platElderSleepService1 = new PlatElderSleepServiceImpl();
List<String> lastDayHourRange = platElderSleepService1.getLastDayHourRange();
System.out.println();
}
@Override @Override
public void test1() { public void test1() {
int days = 30; int days = 30;
......
package com.makeit.service.platform.space; package com.makeit.service.platform.space;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.dto.platform.space.PlatRegionSettingDTO;
import com.makeit.dto.platform.space.PlatRegionSettingFixQueryDTO;
import com.makeit.entity.platform.space.PlatRegionSettingFix; import com.makeit.entity.platform.space.PlatRegionSettingFix;
import java.util.List;
/** /**
* <p> * <p>
* 区域设置固化 服务类 * 区域设置固化 服务类
...@@ -13,4 +17,6 @@ import com.makeit.entity.platform.space.PlatRegionSettingFix; ...@@ -13,4 +17,6 @@ import com.makeit.entity.platform.space.PlatRegionSettingFix;
*/ */
public interface PlatRegionSettingFixService extends IService<PlatRegionSettingFix> { public interface PlatRegionSettingFixService extends IService<PlatRegionSettingFix> {
List<PlatRegionSettingDTO> list(PlatRegionSettingFixQueryDTO dto);
} }
package com.makeit.service.platform.space.impl; package com.makeit.service.platform.space.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.makeit.dto.platform.space.PlatRegionSettingDTO;
import com.makeit.dto.platform.space.PlatRegionSettingFixQueryDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.space.PlatRegionSettingFix; import com.makeit.entity.platform.space.PlatRegionSettingFix;
import com.makeit.mapper.platform.space.PlatRegionSettingFixMapper; import com.makeit.mapper.platform.space.PlatRegionSettingFixMapper;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.space.PlatRegionSettingFixService; import com.makeit.service.platform.space.PlatRegionSettingFixService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
* 区域设置固化 服务实现类 * 区域设置固化 服务实现类
...@@ -18,4 +34,42 @@ import org.springframework.stereotype.Service; ...@@ -18,4 +34,42 @@ import org.springframework.stereotype.Service;
@Service @Service
public class PlatRegionSettingFixServiceImpl extends ServiceImpl<PlatRegionSettingFixMapper, PlatRegionSettingFix> implements PlatRegionSettingFixService { public class PlatRegionSettingFixServiceImpl extends ServiceImpl<PlatRegionSettingFixMapper, PlatRegionSettingFix> implements PlatRegionSettingFixService {
@Autowired
private PlatDeviceService platDeviceService;
@Override
public List<PlatRegionSettingDTO> list(PlatRegionSettingFixQueryDTO dto) {
if (StringUtils.isAnyBlank(dto.getReportType(), dto.getRoomId())) {
return Lists.newArrayList();
}
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LambdaQueryWrapper<PlatRegionSettingFix> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PlatRegionSettingFix::getRoomId, dto.getRoomId());
if ("0".equals(dto.getReportType())) {
queryWrapper.eq(PlatRegionSettingFix::getHappenDate, dateTimeFormatter.format(dto.getNow()));
} else {
queryWrapper.ge(PlatRegionSettingFix::getHappenDate, dateTimeFormatter.format(dto.getStartTime()));
queryWrapper.le(PlatRegionSettingFix::getHappenDate, dateTimeFormatter.format(dto.getEndTime()));
}
queryWrapper.orderByDesc(PlatRegionSettingFix::getCreateDate);
List<PlatRegionSettingFix> list = this.list(queryWrapper);
list = list.stream().filter(distinctByKey(PlatRegionSettingFix::getDeviceId)).collect(Collectors.toList());
List<String> deviceIds = list.stream().map(PlatRegionSettingFix::getDeviceId).collect(Collectors.toList());
Map<String, PlatDevice> deviceMap = platDeviceService.listByIds(deviceIds).stream().collect(Collectors.toMap(PlatDevice::getId, Function.identity()));
return list.stream().map(p -> {
PlatRegionSettingDTO platRegionSettingDTO = new PlatRegionSettingDTO();
BeanUtils.copyProperties(p, platRegionSettingDTO);
PlatDevice device = deviceMap.getOrDefault(p.getDeviceId(), new PlatDevice());
platRegionSettingDTO.setOriDeviceId(device.getOriDeviceId());
platRegionSettingDTO.setDeviceName(device.getName());
platRegionSettingDTO.setCategory(device.getCategory());
return platRegionSettingDTO;
}).collect(Collectors.toList());
}
private static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
} }
package com.makeit.task; package com.makeit.task;
import com.makeit.global.aspect.tenant.TenantIdIgnore; import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderBreatheAnalysisService; import com.makeit.service.platform.elder.*;
import com.makeit.service.platform.elder.PlatElderBreatheDayStatService;
import com.makeit.service.platform.elder.PlatElderCoordinateRecordService;
import com.makeit.service.platform.elder.PlatElderSleepService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
...@@ -24,6 +21,8 @@ public class PlatElderReportTask { ...@@ -24,6 +21,8 @@ public class PlatElderReportTask {
private PlatElderBreatheAnalysisService platElderBreatheAnalysisService; private PlatElderBreatheAnalysisService platElderBreatheAnalysisService;
@Autowired @Autowired
private PlatElderCoordinateRecordService platElderCoordinateRecordService; private PlatElderCoordinateRecordService platElderCoordinateRecordService;
@Autowired
private PlatElderBreatheHeartRateRecordService platElderBreatheHeartRateRecordService;
...@@ -56,13 +55,24 @@ public class PlatElderReportTask { ...@@ -56,13 +55,24 @@ public class PlatElderReportTask {
} }
/** /**
* 生成长者呼吸心率
*/
@Scheduled(cron = "0 30 2 * * ?")
@TenantIdIgnore
public void breatheHeartRateRecordTask() {
log.info("开始生成长者呼吸心率");
platElderBreatheHeartRateRecordService.breatheHeartRateRecordTask();
log.info("生成长者呼吸心率结束");
}
/**
* 长者睡眠分析 * 长者睡眠分析
*/ */
@Scheduled(cron = "0 0 8 * * ?") @Scheduled(cron = "0 0 8 * * ?")
@TenantIdIgnore @TenantIdIgnore
public void elderSleepSleepAnalysisTask() { public void elderSleepSleepAnalysisTask() {
log.info("开始定时分析长者睡眠质量"); log.info("开始定时分析长者睡眠质量");
platElderSleepService.elderSleepSleepAnalysisTask(); platElderSleepService.elderSleepSleepAnalysisTask(null,null);
log.info("定时分析长者睡眠质量结束"); log.info("定时分析长者睡眠质量结束");
} }
} }
package com.makeit.vo.platform.alarm;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.common.dto.BaseTenantDTO;
import com.makeit.entity.platform.device.PlatDevice;
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-04
*/
@Data
@ApiModel(value = "PlatAlarmRecord对象", description = "告警记录")
public class PlatAlarmExternalRecordVO {
/**
* 关联告警配置
*/
private String alarmId;
@ApiModelProperty(value = "告警类型 数据字典 1 长者跌倒 2 呼吸异常 3 心率异常 4 行为异常,5 离床异常")
private String alarmType;
@ApiModelProperty(value = "告警时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime alarmDate;
@ApiModelProperty(value = "状态 0 待处理 1 已处理")
private String status;
@ApiModelProperty(value = "通知家属状态 0 未通知 1 已通知")
private String noticeStatus;
@ApiModelProperty(value = "告警内容")
private String content;
@ApiModelProperty(value = "处理人")
private String dealUser;
@ApiModelProperty(value = "处理时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime dealDate;
@ApiModelProperty(value = "所属组织id")
private String orgId;
@ApiModelProperty(value = "告警时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate;
@ApiModelProperty(value = "是否误报 1 误报 0 没有误报")
private String misinformationFlag;
private String deviceId;
private PlatDevice device;
}
...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Data @Data
public class PlatElderRealTimeHeartRespiratoryVO { public class PlatElderRealTimeHeartRespiratoryVO {
...@@ -23,6 +24,10 @@ public class PlatElderRealTimeHeartRespiratoryVO { ...@@ -23,6 +24,10 @@ public class PlatElderRealTimeHeartRespiratoryVO {
@ApiModelProperty("状态") @ApiModelProperty("状态")
private String status; private String status;
@ApiModelProperty("人员状态")
private Integer personState;
@ApiModelProperty("呼吸波形")
private List<Integer> point;
@ApiModelProperty("设备id") @ApiModelProperty("设备id")
private String deviceId; private String deviceId;
......
...@@ -27,6 +27,7 @@ import com.makeit.service.saas.PlatTenantService; ...@@ -27,6 +27,7 @@ import com.makeit.service.saas.PlatTenantService;
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.old.StringUtils;
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;
...@@ -195,7 +196,7 @@ public class PushCallback implements MqttCallback { ...@@ -195,7 +196,7 @@ public class PushCallback implements MqttCallback {
String messageType = device.getMessageType(); String messageType = device.getMessageType();
//更新设备状态 //更新设备状态
platDeviceService.updateDeviceStatus(messageType, deviceId, ""); platDeviceService.updateDeviceStatus(messageType, deviceId, "");
if (org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase(messageType, DeviceState.online.getValue())) { if (StringUtils.equalsAnyIgnoreCase(messageType, DeviceState.online.getValue())) {
return; return;
} }
for (HeaderInfo.Bind binding : bindings) { for (HeaderInfo.Bind binding : bindings) {
...@@ -209,13 +210,13 @@ public class PushCallback implements MqttCallback { ...@@ -209,13 +210,13 @@ public class PushCallback implements MqttCallback {
//iot设备id //iot设备id
PlatDevice platDevice = deviceCacheUtil.get(deviceId + ":" + iot_tenantId); PlatDevice platDevice = deviceCacheUtil.get(deviceId + ":" + iot_tenantId);
if (platDevice == null) { if (platDevice == null) {
logger.error("获取设备信息异常,设备iot-id,iot_tenantId:" + deviceId+","+iot_tenantId); //logger.error("获取设备信息异常,设备iot-id,iot_tenantId:" + deviceId+","+iot_tenantId);
continue; continue;
} }
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.error("该设备没有告警配置,设备iot-id,iot_tenantId:" + deviceId+","+iot_tenantId); //logger.error("该设备没有告警配置,设备iot-id,iot_tenantId:" + deviceId+","+iot_tenantId);
continue; continue;
} }
...@@ -238,6 +239,9 @@ public class PushCallback implements MqttCallback { ...@@ -238,6 +239,9 @@ public class PushCallback implements MqttCallback {
platAlarmCheckDTO.setProperties(properties); platAlarmCheckDTO.setProperties(properties);
//设备状态 //设备状态
platAlarmCheckDTO.setMessageType(messageType); platAlarmCheckDTO.setMessageType(messageType);
if (properties != null) {
platAlarmCheckDTO.setDeviceTime(properties.getString("alarmId"));
}
alarm.checkConfig(platAlarmCheckDTO); alarm.checkConfig(platAlarmCheckDTO);
} }
} }
......
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${logback.logdir}/${logback.appname}/info/log_info.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <FileNamePattern>${logback.logdir}/${logback.appname}/info/log_info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxHistory>30</maxHistory> <maxHistory>10</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>20MB</maxFileSize> <maxFileSize>20MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${logback.logdir}/${logback.appname}/error/log_error.%d{yyyy-MM-dd}.%i.log <FileNamePattern>${logback.logdir}/${logback.appname}/error/log_error.%d{yyyy-MM-dd}.%i.log
</FileNamePattern> </FileNamePattern>
<maxHistory>30</maxHistory> <maxHistory>10</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>20MB</maxFileSize> <maxFileSize>20MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${logback.logdir}/${logback.appname}/warn/log_warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <FileNamePattern>${logback.logdir}/${logback.appname}/warn/log_warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxHistory>30</maxHistory> <maxHistory>10</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>20MB</maxFileSize> <maxFileSize>20MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
......
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