Commit 24007b79 by 朱淼

小程序长者中心老人状态

parent e00347d9
...@@ -4,9 +4,12 @@ package com.makeit.service.platform.workstation; ...@@ -4,9 +4,12 @@ package com.makeit.service.platform.workstation;
import com.makeit.common.page.PageReqDTO; import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO; import com.makeit.common.page.PageVO;
import com.makeit.dto.platform.auth.PlatOrgDTO; import com.makeit.dto.platform.auth.PlatOrgDTO;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.dto.platform.space.PlatSpaceVO; import com.makeit.dto.platform.space.PlatSpaceVO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO; import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord; import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.workstation.*; import com.makeit.vo.platform.workstation.*;
import java.util.List; import java.util.List;
...@@ -31,4 +34,10 @@ public interface WorkStationService { ...@@ -31,4 +34,10 @@ public interface WorkStationService {
List<PlatSpaceVO> spaceTree(PlatOrgDTO dto); List<PlatSpaceVO> spaceTree(PlatOrgDTO dto);
Map<String, Map<String,String>> mapElderAlarmType(List<PlatAlarmRecord> alarmRecords); Map<String, Map<String,String>> mapElderAlarmType(List<PlatAlarmRecord> alarmRecords);
void nowStatusRest(WorkStationInstitutionBedVO vo , PlatElderIdDTO platElderIdDTO, DeviceInfoContentBreathe nowDataBreathe, List<PlatElderCoordinateVO> coordinateList);
void nowStatusSleep(WorkStationInstitutionBedVO vo, PlatElderIdDTO platElderIdDTO, DeviceInfoContentBreathe nowDataBreathe);
DeviceInfoContentBreathe getNowDataBreathe(String elderId, String deviceId);
} }
...@@ -261,21 +261,24 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -261,21 +261,24 @@ public class WorkStationServiceImpl implements WorkStationService {
platElderIdDTO.setElderId(r.getElderId()); platElderIdDTO.setElderId(r.getElderId());
platElderIdDTO.setDeviceId(r.getOriDeviceId()); platElderIdDTO.setDeviceId(r.getOriDeviceId());
PlatElderRealTimeNowVO nowStatus = platElderRealTimeService.nowStatus(platElderIdDTO); PlatElderRealTimeNowVO nowStatus = platElderRealTimeService.nowStatus(platElderIdDTO);
DeviceInfoContentBreathe deviceInfoContentBreathe = getNowDataBreathe(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId()); if(nowStatus.getStatus()!=null){
//离床:雷达状态上报无人 DeviceInfoContentBreathe deviceInfoContentBreathe = getNowDataBreathe(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId());
//翻身:雷达上报的数据符合IOT平台睡眠质量分析模型中配置的翻身规则 //离床:雷达状态上报无人
//睡眠:雷达上报的数据符合IOT平台睡眠质量分析模型中的入睡时间,状态变更为睡眠 //翻身:雷达上报的数据符合IOT平台睡眠质量分析模型中配置的翻身规则
//静息:雷达上报有人,且非睡眠 //睡眠:雷达上报的数据符合IOT平台睡眠质量分析模型中的入睡时间,状态变更为睡眠
if(DeviceInfoContentBreatheEnum.PersonStateEnum.NOBODY.getValue().equals(nowStatus.getStatus())){ //静息:雷达上报有人,且非睡眠
r.setElderStatus(WorkStationStatusEnum.NowStatus.OUT.getValue()); if(DeviceInfoContentBreatheEnum.PersonStateEnum.NOBODY.getValue().equals(nowStatus.getStatus())){
}else if(nowStatus.getBodyMove()!=null && nowStatus.getBodyMove() > turnedThreshold){ r.setElderStatus(WorkStationStatusEnum.NowStatus.OUT.getValue());
r.setElderStatus(WorkStationStatusEnum.NowStatus.TURNED.getValue()); }else if(nowStatus.getBodyMove()!=null && nowStatus.getBodyMove() > turnedThreshold){
}else { r.setElderStatus(WorkStationStatusEnum.NowStatus.TURNED.getValue());
List<PlatElderCoordinateVO> coordinateList = platElderDayReportDayService.coordinateList(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId(), start, now); }else {
nowStatusRest(r, platElderIdDTO, deviceInfoContentBreathe, coordinateList); List<PlatElderCoordinateVO> coordinateList = platElderDayReportDayService.coordinateList(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId(), start, now);
nowStatusSleep(r, platElderIdDTO, deviceInfoContentBreathe); nowStatusRest(r, platElderIdDTO, deviceInfoContentBreathe, coordinateList);
nowStatusSleep(r, platElderIdDTO, deviceInfoContentBreathe);
}
} }
} }
} }
} }
...@@ -286,7 +289,8 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -286,7 +289,8 @@ public class WorkStationServiceImpl implements WorkStationService {
return PageUtil.toPageVO(pages); return PageUtil.toPageVO(pages);
} }
private void nowStatusRest(WorkStationInstitutionBedVO vo , PlatElderIdDTO platElderIdDTO, DeviceInfoContentBreathe nowDataBreathe, List<PlatElderCoordinateVO> coordinateList) { @Override
public void nowStatusRest(WorkStationInstitutionBedVO vo , PlatElderIdDTO platElderIdDTO, DeviceInfoContentBreathe nowDataBreathe, List<PlatElderCoordinateVO> coordinateList) {
if (nowDataBreathe == null) { if (nowDataBreathe == null) {
return; return;
...@@ -307,7 +311,8 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -307,7 +311,8 @@ public class WorkStationServiceImpl implements WorkStationService {
} }
private void nowStatusSleep(WorkStationInstitutionBedVO vo, PlatElderIdDTO platElderIdDTO, DeviceInfoContentBreathe nowDataBreathe) { @Override
public void nowStatusSleep(WorkStationInstitutionBedVO vo, PlatElderIdDTO platElderIdDTO, DeviceInfoContentBreathe nowDataBreathe) {
if (nowDataBreathe == null) { if (nowDataBreathe == null) {
return; return;
...@@ -344,7 +349,8 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -344,7 +349,8 @@ public class WorkStationServiceImpl implements WorkStationService {
} }
private DeviceInfoContentBreathe getNowDataBreathe(String elderId, String deviceId) { @Override
public DeviceInfoContentBreathe getNowDataBreathe(String elderId, String deviceId) {
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(elderId, deviceId); PlatDevice platDevice = platElderRealTimeService.getBreathDevice(elderId, deviceId);
......
...@@ -8,18 +8,28 @@ import com.makeit.entity.platform.alarm.PlatAlarmConfig; ...@@ -8,18 +8,28 @@ import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import com.makeit.entity.platform.alarm.PlatAlarmRecord; import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.elder.PlatElder; import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.space.PlatSpace; import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.entity.saas.analysis.SaasModelManage;
import com.makeit.entity.saas.analysis.SaasSleepAnalysisModel;
import com.makeit.enums.platform.alarm.PlatAlarmRecordEnum; import com.makeit.enums.platform.alarm.PlatAlarmRecordEnum;
import com.makeit.enums.platform.workstation.WorkStationStatusEnum;
import com.makeit.enums.saas.ModelManageTypeEnum;
import com.makeit.module.iot.enums.DeviceInfoContentBreatheEnum;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.elder.PlatElderDayReportDayService;
import com.makeit.service.platform.elder.PlatElderRealTimeService; import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.service.platform.elder.PlatElderService; import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.space.PlatBedService; import com.makeit.service.platform.space.PlatBedService;
import com.makeit.service.platform.space.PlatRoomService; import com.makeit.service.platform.space.PlatRoomService;
import com.makeit.service.platform.space.PlatSpaceService; import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.service.platform.workstation.WorkStationService; import com.makeit.service.platform.workstation.WorkStationService;
import com.makeit.service.saas.SaasModelManageService;
import com.makeit.service.saas.SaasSleepAnalysisModelService;
import com.makeit.service.wechat.PlatElderCenterWechatService; import com.makeit.service.wechat.PlatElderCenterWechatService;
import com.makeit.utils.data.convert.StreamUtil; import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import com.makeit.utils.sql.join.JoinUtil; import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO; import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import com.makeit.vo.platform.workstation.WorkStationHomeBedVO; import com.makeit.vo.platform.workstation.WorkStationHomeBedVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionBedVO; import com.makeit.vo.platform.workstation.WorkStationInstitutionBedVO;
...@@ -30,6 +40,7 @@ import jodd.util.StringUtil; ...@@ -30,6 +40,7 @@ import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -56,6 +67,13 @@ public class PlatElderCenterWechatServiceImpl implements PlatElderCenterWechatSe ...@@ -56,6 +67,13 @@ public class PlatElderCenterWechatServiceImpl implements PlatElderCenterWechatSe
@Autowired @Autowired
private PlatRoomService platRoomService; private PlatRoomService platRoomService;
@Autowired
private SaasModelManageService saasModelManageService;
@Autowired
private SaasSleepAnalysisModelService saasSleepAnalysisModelService;
@Autowired
private PlatElderDayReportDayService platElderDayReportDayService;
@Override @Override
public PlatElderCenterHomeVo homeStatistics(PlatElderCenterQueryDTO dto) { public PlatElderCenterHomeVo homeStatistics(PlatElderCenterQueryDTO dto) {
PlatElderCenterHomeVo homeVo = new PlatElderCenterHomeVo(); PlatElderCenterHomeVo homeVo = new PlatElderCenterHomeVo();
...@@ -99,10 +117,10 @@ public class PlatElderCenterWechatServiceImpl implements PlatElderCenterWechatSe ...@@ -99,10 +117,10 @@ public class PlatElderCenterWechatServiceImpl implements PlatElderCenterWechatSe
vo.setAlarmTypeMap(elderAlarmTypeMap.get(vo.getElderId())); vo.setAlarmTypeMap(elderAlarmTypeMap.get(vo.getElderId()));
} }
if(StringUtil.isNotEmpty(vo.getDeviceId())){ if(StringUtil.isNotEmpty(vo.getOriDeviceId())){
PlatElderIdDTO platElderIdDTO = new PlatElderIdDTO(); PlatElderIdDTO platElderIdDTO = new PlatElderIdDTO();
platElderIdDTO.setElderId(vo.getElderId()); platElderIdDTO.setElderId(vo.getElderId());
platElderIdDTO.setDeviceId(vo.getDeviceId()); platElderIdDTO.setDeviceId(vo.getOriDeviceId());
PlatElderRealTimeNowVO nowStatus = platElderRealTimeService.nowStatus(platElderIdDTO); PlatElderRealTimeNowVO nowStatus = platElderRealTimeService.nowStatus(platElderIdDTO);
vo.setElderStatus(nowStatus.getStatus()); vo.setElderStatus(nowStatus.getStatus());
vo.setHeartRate(nowStatus.getHeartRate()); vo.setHeartRate(nowStatus.getHeartRate());
...@@ -158,26 +176,50 @@ public class PlatElderCenterWechatServiceImpl implements PlatElderCenterWechatSe ...@@ -158,26 +176,50 @@ public class PlatElderCenterWechatServiceImpl implements PlatElderCenterWechatSe
//长者对应的报警类型 //长者对应的报警类型
Map<String, Map<String,String>> elderAlarmTypeMap = workStationService.mapElderAlarmType(alarmRecords); Map<String, Map<String,String>> elderAlarmTypeMap = workStationService.mapElderAlarmType(alarmRecords);
//查询睡眠质量分析模型
SaasModelManage modelManage = saasModelManageService.getOne(new QueryWrapper<SaasModelManage>().lambda()
.eq(SaasModelManage::getModelType, ModelManageTypeEnum.SLEEP.getCode()));
Integer turnedThreshold = 0;
if(modelManage != null){
SaasSleepAnalysisModel model = saasSleepAnalysisModelService.view(modelManage.getModelId());
if(model != null && model.getTurnedThreshold() != null){
turnedThreshold = Integer.valueOf(model.getTurnedThreshold());
}
}
LocalDateTime now = LocalDateTime.now();
LocalDateTime start = now.minusSeconds(10);
for (WorkStationInstitutionRoomVO vo : roomVOList) { for (WorkStationInstitutionRoomVO vo : roomVOList) {
vo.setPathName(vo.getPathName() + "-" + vo.getRoomName()); vo.setPathName(vo.getPathName() + "-" + vo.getRoomName());
if (bedMap.get(vo.getRoomId()) != null) { if (bedMap.get(vo.getRoomId()) != null) {
List<WorkStationInstitutionBedVO> roomBedVos = bedMap.get(vo.getRoomId()); List<WorkStationInstitutionBedVO> roomBedVos = bedMap.get(vo.getRoomId());
//获取告警类型及老人状态 //获取告警类型及老人状态
roomBedVos.forEach(r -> { for(WorkStationInstitutionBedVO r : roomBedVos) {
if (StringUtil.isNotEmpty(r.getElderId()) ) { if (StringUtil.isNotEmpty(r.getElderId())) {
if(elderAlarmTypeMap.containsKey(r.getElderId())){ if (elderAlarmTypeMap.containsKey(r.getElderId())) {
r.setAlarmTypeMap(elderAlarmTypeMap.get(r.getElderId())); r.setAlarmTypeMap(elderAlarmTypeMap.get(r.getElderId()));
} }
if(StringUtil.isNotEmpty(r.getDeviceId())){ if (StringUtil.isNotEmpty(r.getOriDeviceId())) {
PlatElderIdDTO platElderIdDTO = new PlatElderIdDTO(); PlatElderIdDTO platElderIdDTO = new PlatElderIdDTO();
platElderIdDTO.setElderId(r.getElderId()); platElderIdDTO.setElderId(r.getElderId());
platElderIdDTO.setDeviceId(r.getDeviceId()); platElderIdDTO.setDeviceId(r.getOriDeviceId());
PlatElderRealTimeNowVO nowStatus = platElderRealTimeService.nowStatus(platElderIdDTO); PlatElderRealTimeNowVO nowStatus = platElderRealTimeService.nowStatus(platElderIdDTO);
r.setElderStatus(nowStatus.getStatus()); if(nowStatus.getStatus()!=null){
DeviceInfoContentBreathe deviceInfoContentBreathe = workStationService.getNowDataBreathe(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId());
if (DeviceInfoContentBreatheEnum.PersonStateEnum.NOBODY.getValue().equals(nowStatus.getStatus())) {
r.setElderStatus(WorkStationStatusEnum.NowStatus.OUT.getValue());
} else if (nowStatus.getBodyMove() != null && nowStatus.getBodyMove() > turnedThreshold) {
r.setElderStatus(WorkStationStatusEnum.NowStatus.TURNED.getValue());
} else {
List<PlatElderCoordinateVO> coordinateList = platElderDayReportDayService.coordinateList(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId(), start, now);
workStationService.nowStatusRest(r, platElderIdDTO, deviceInfoContentBreathe, coordinateList);
workStationService.nowStatusSleep(r, platElderIdDTO, deviceInfoContentBreathe);
}
}
} }
} }
}); }
vo.setList(roomBedVos); vo.setList(roomBedVos);
} }
} }
......
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
LEFT JOIN plat_elder pe ON pe.bed_id = pb.id LEFT JOIN plat_elder pe ON pe.bed_id = pb.id
LEFT JOIN plat_room_bed_device prbd ON prbd.bed_id = pb.id and prbd.del_flag = 0 LEFT JOIN plat_room_bed_device prbd ON prbd.bed_id = pb.id and prbd.del_flag = 0
LEFT JOIN sys_file sf ON sf.id = pe.avatar LEFT JOIN sys_file sf ON sf.id = pe.avatar
LEFT JOIN plat_device pd ON pd.id = prbd.device_id and pd..del_flag = 0 LEFT JOIN plat_device pd ON pd.id = prbd.device_id and pd.del_flag = 0
<where> <where>
pb.del_flag = 0 and pb.status = 0 pb.del_flag = 0 and pb.status = 0
<if test="dto.elderName != null and dto.elderName != ''"> <if test="dto.elderName != null and dto.elderName != ''">
......
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