Commit 9951dd1b by huangjy

fix:新增第三方接口,上报呼吸数据和跌倒记录

parent 2f2f1ac5
......@@ -7,16 +7,20 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.dto.platform.device.PlatDeviceQueryDTO;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.dto.platform.elder.PlatElderQueryDTO;
import com.makeit.global.annotation.AuthIgnore;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.service.platform.elder.PlatElderService;
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.device.PlatDeviceListVO;
import com.makeit.vo.platform.elder.PlatElderListVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContextAware;
......@@ -40,6 +44,8 @@ public class IotPlatExternalController {
private PlatDeviceService platDeviceService;
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@ApiOperation("长者列表")
@PostMapping("elderPage")
......@@ -48,7 +54,7 @@ public class IotPlatExternalController {
public ApiResponseEntity<PageVO<PlatElderListVO>> elderPage(@RequestBody PageReqDTO<PlatElderQueryDTO> page) {
PlatElderQueryDTO dto = page.getData();
if (dto == null || StringUtils.isEmpty(dto.getOrgId())) {
return ApiResponseUtils.success(new PageVO<>());
return ApiResponseUtils.success(PageVO.emptyPage());
}
return ApiResponseUtils.success(platElderService.page(page));
}
......@@ -61,7 +67,7 @@ public class IotPlatExternalController {
public ApiResponseEntity<PageVO<PlatDeviceListVO>> devicePage(@RequestBody PageReqDTO<PlatDeviceQueryDTO> pageReqDTO) {
PlatDeviceQueryDTO dto = pageReqDTO.getData();
if (dto == null || StringUtils.isEmpty(dto.getOrgId())) {
return ApiResponseUtils.success(new PageVO<>());
return ApiResponseUtils.success(PageVO.emptyPage());
}
return ApiResponseUtils.success(platDeviceService.page(pageReqDTO));
}
......@@ -74,7 +80,7 @@ public class IotPlatExternalController {
public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> pageReqDTO) {
PlatAlarmRecordQueryDTO dto = pageReqDTO.getData();
if (dto == null || StringUtils.isEmpty(dto.getOrgId())) {
return ApiResponseUtils.success(new PageVO<>());
return ApiResponseUtils.success(PageVO.emptyPage());
}
return ApiResponseUtils.success(platAlarmRecordService.page(pageReqDTO));
}
......@@ -88,4 +94,25 @@ public class IotPlatExternalController {
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 {
RSAPublicKey publicKey = getPublicKey(PUBLIC_KEY);
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);
......
......@@ -19,7 +19,7 @@ public class PlatElderIdDTO {
@ApiModelProperty(value = "长者id")
private String elderId;
@ApiModelProperty(value = "长者id")
@ApiModelProperty(value = "机构id")
private String orgId;
@ApiModelProperty(value = "设备id")
......
......@@ -12,6 +12,7 @@ import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.enums.report.PlatformTypeEnum;
import com.makeit.shengwang.agora.dto.PlatCallingDeviceDTO;
import com.makeit.shengwang.agora.vo.PlatAlarmCallDeviceVO;
import com.makeit.vo.platform.alarm.PlatAlarmExternalRecordVO;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
/**
......@@ -74,4 +75,6 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> {
PlatAlarmCallDeviceVO callingDevice(PlatCallingDeviceDTO dto);
PlatAlarmCallDeviceVO callingDeviceAuthIgnoreRtm(PlatCallingDeviceDTO id);
PageVO<PlatAlarmExternalRecordVO> fallRecord(PageReqDTO<PlatAlarmRecordQueryDTO> pageReqDTO);
}
......@@ -57,6 +57,7 @@ import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.utils.user.common.CommonUserUtil;
import com.makeit.utils.user.common.CommonUserVO;
import com.makeit.utils.user.wechat.WechatUserUtil;
import com.makeit.vo.platform.alarm.PlatAlarmExternalRecordVO;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
......@@ -143,6 +144,22 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
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);
}
/**
* 子女端告警列表
*
......
......@@ -33,5 +33,5 @@ public interface PlatElderRealTimeService {
List<PlatElderCoordinateVO> coordinate(PlatElderIdDTO platElderIdDTO);
PlatElderRealTimeHeartRespiratoryVO deviceHealthReport(PlatElderIdDTO dto);
}
......@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists;
import com.makeit.common.entity.BaseBusEntity;
import com.makeit.common.entity.BaseEntity;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.entity.platform.device.PlatDevice;
......@@ -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;
}
}
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;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class PlatElderRealTimeHeartRespiratoryVO {
......@@ -23,6 +24,10 @@ public class PlatElderRealTimeHeartRespiratoryVO {
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("人员状态")
private Integer personState;
@ApiModelProperty("呼吸波形")
private List<Integer> point;
@ApiModelProperty("设备id")
private String deviceId;
......
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