Commit 3c10f89c by 杨伟程
parents abc75a6f efb31b22
package com.makeit.enums.platform.workstation;
import com.makeit.enums.BaseEnum;
import com.makeit.utils.sys.SysDictUtil;
public class WorkStationStatusEnum {
public enum NowStatus implements BaseEnum {
OUT("work.station.now.status.out"),
TURNED("work.station.now.status.turned"),
REST("work.station.now.status.rest"),
SLEEP("work.station.now.status.sleep");
private String code;
NowStatus(String code) {
this.code = code;
}
public String getValue() {
return SysDictUtil.getValue(code);
}
}
}
...@@ -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);
} }
...@@ -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);
} }
} }
......
...@@ -53,6 +53,9 @@ public class WorkStationHomeBedVO { ...@@ -53,6 +53,9 @@ public class WorkStationHomeBedVO {
@ApiModelProperty(value = "设备id") @ApiModelProperty(value = "设备id")
private String deviceId; private String deviceId;
@ApiModelProperty(value = "原始设备id")
private String oriDeviceId;
@ApiModelProperty(value = "长者状态") @ApiModelProperty(value = "长者状态")
private String elderStatus; private String elderStatus;
......
...@@ -38,6 +38,9 @@ public class WorkStationInstitutionBedVO { ...@@ -38,6 +38,9 @@ public class WorkStationInstitutionBedVO {
@ApiModelProperty(value = "设备id") @ApiModelProperty(value = "设备id")
private String deviceId; private String deviceId;
@ApiModelProperty(value = "设备id")
private String oriDeviceId;
@ApiModelProperty(value = "长者状态") @ApiModelProperty(value = "长者状态")
private String elderStatus; private String elderStatus;
......
...@@ -50,10 +50,11 @@ ...@@ -50,10 +50,11 @@
</select> </select>
<select id="selectByRoomIds" resultType="com.makeit.vo.platform.workstation.WorkStationInstitutionBedVO"> <select id="selectByRoomIds" resultType="com.makeit.vo.platform.workstation.WorkStationInstitutionBedVO">
SELECT pb.`name` as bedName, pb.id as bedId, pb.room_id as roomId , pe.id as elderId, pe.name as elderName, prbd.device_id as deviceId,pb.status SELECT pb.`name` as bedName, pb.id as bedId, pb.room_id as roomId , pe.id as elderId, pe.name as elderName, prbd.device_id as deviceId,pb.status,pd.ori_device_id as oriDeviceId
FROM plat_bed pb FROM plat_bed pb
LEFT JOIN plat_elder pe ON pe.bed_id = pb.id and pe.del_flag = 0 LEFT JOIN plat_elder pe ON pe.bed_id = pb.id and pe.del_flag = 0
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 plat_device pd ON prbd.device_id = pd.id and pd.del_flag = 0
<where> <where>
pb.del_flag = 0 pb.del_flag = 0
<if test="roomIds != null and roomIds.size() > 0 "> <if test="roomIds != null and roomIds.size() > 0 ">
...@@ -123,13 +124,14 @@ ...@@ -123,13 +124,14 @@
</select> </select>
<select id="selectByConditionPage" resultType="com.makeit.vo.platform.workstation.WorkStationHomeBedVO"> <select id="selectByConditionPage" resultType="com.makeit.vo.platform.workstation.WorkStationHomeBedVO">
SELECT pb.`name` as bedName, pb.id as bedId, pb.room_id , pe.id as elderId, pe.name as elderName, prbd.device_id,pm.id as roomId,pm.name as roomName ,pm.space_path,pb.status,pe.avatar,sf.url as avatarPath SELECT pb.`name` as bedName, pb.id as bedId, pb.room_id , pe.id as elderId, pe.name as elderName, prbd.device_id,pm.id as roomId,pm.name as roomName ,pm.space_path,pb.status,pe.avatar,sf.url as avatarPath,pd.ori_device_id as oriDeviceId
FROM plat_bed pb FROM plat_bed pb
LEFT JOIN plat_room pm ON pm.id = pb.room_id LEFT JOIN plat_room pm ON pm.id = pb.room_id
LEFT JOIN plat_space ps ON ps.id = pm.space_id LEFT JOIN plat_space ps ON ps.id = pm.space_id
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
<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