Commit 6fba620b by huangjy

Merge remote-tracking branch 'origin/dev' into dev

parents 5ac5de55 1d5861a3
Showing with 722 additions and 81 deletions
......@@ -37,12 +37,12 @@ CREATE TABLE `plat_elder`
floor_space_id varchar(64) NULL COMMENT '楼层id',
`room_id` varchar(64) DEFAULT NULL COMMENT '房间id',
`bed_id` varchar(64) DEFAULT NULL COMMENT '床位id',
`space_path` varchar(64) DEFAULT NULL COMMENT '空间-房间-床位路径',
`space_path` varchar(300) DEFAULT NULL COMMENT '空间-房间-床位路径',
org_id varchar(64) NULL COMMENT '组织id',
city_org_id varchar(64) NULL COMMENT '城市组织id',
district_org_id varchar(64) NULL COMMENT '区组织id',
street_org_id varchar(64) NULL COMMENT '街道组织id',
org_path varchar(64) NULL COMMENT '组织路径',
org_path varchar(300) NULL COMMENT '组织路径',
`remark` varchar(1024) DEFAULT NULL COMMENT '备注',
avatar varchar(64) NULL COMMENT '头像文件id',
check_in_time datetime DEFAULT NULL COMMENT '入住时间',
......@@ -160,7 +160,7 @@ CREATE TABLE `plat_elder_children_info`
city_org_id varchar(64) NULL COMMENT '城市组织id',
district_org_id varchar(64) NULL COMMENT '区组织id',
street_org_id varchar(64) NULL COMMENT '街道组织id',
org_path varchar(64) NULL COMMENT '组织路径',
org_path varchar(300) NULL COMMENT '组织路径',
avatar varchar(64) NULL COMMENT '微信头像路径',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
......@@ -216,7 +216,7 @@ CREATE TABLE `plat_alarm_config`
city_org_id varchar(64) NULL COMMENT '城市组织id',
district_org_id varchar(64) NULL COMMENT '区组织id',
street_org_id varchar(64) NULL COMMENT '街道组织id',
org_path varchar(64) NULL COMMENT '组织路径',
org_path varchar(300) NULL COMMENT '组织路径',
`rule_config` VARCHAR(512) DEFAULT NULL COMMENT '规则配置',
`content` VARCHAR(512) DEFAULT NULL COMMENT '内容',
`content_audit` VARCHAR(512) DEFAULT NULL COMMENT '内容(审核中)',
......@@ -251,7 +251,7 @@ CREATE TABLE `plat_device`
city_org_id varchar(64) NULL COMMENT '城市组织id',
district_org_id varchar(64) NULL COMMENT '区组织id',
street_org_id varchar(64) NULL COMMENT '街道组织id',
org_path varchar(64) NULL COMMENT '组织路径',
org_path varchar(300) NULL COMMENT '组织路径',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
......
......@@ -19,6 +19,7 @@ public class DeviceInfo {
private HeaderInfo headers;
private JSONObject properties;
// private String properties;
/**
......
......@@ -13,11 +13,11 @@ import java.util.Map;
public class LocalDateTimeUtils {
public static final Map<Integer,String> WEEK_MAP = new HashMap<>(16);
public static final Map<Integer, String> WEEK_MAP = new HashMap<>(16);
static {
WEEK_MAP.put(1,"星期一");
WEEK_MAP.put(2,"星期二");
WEEK_MAP.put(1, "星期一");
WEEK_MAP.put(2, "星期二");
}
/**
......@@ -85,6 +85,15 @@ public class LocalDateTimeUtils {
.withSecond(59);
}
public static LocalDateTime getDayStart(LocalDate time) {
return time.atTime(0, 0, 0);
}
public static LocalDateTime getDayEnd(LocalDate time) {
return time.atTime(23, 59, 59);
}
// /**
// * 获取前n天的开始时间
// *
......@@ -154,7 +163,7 @@ public class LocalDateTimeUtils {
public static Integer getHourSub(LocalDateTime start, LocalDateTime end) {
if(start==null || end == null ){
if (start == null || end == null) {
return 0;
}
Long until = start.until(end, ChronoUnit.HOURS);
......
......@@ -54,5 +54,7 @@ public class WechatUserInfo implements Serializable {
private String token;
private String isTenant;
}
package com.makeit.module.controller.children.config;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.saas.SaasPrivacyConfigDTO;
import com.makeit.service.saas.SaasPrivacyConfigService;
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;
/**
*
* @author lzy
* @date 2022年5月28日
* @description
*/
@Api(tags = "子女端小程序-隐私政策-关于我们")
@RestController
@RequestMapping("/children/sys/privacyConfig")
public class SaasPrivacyConfigChildrenController {
@Autowired
private SaasPrivacyConfigService saasPrivacyConfigService;
@ApiOperation(value = "获取隐私政策-关于我们", notes = "")
@PostMapping("/view")
public ApiResponseEntity<SaasPrivacyConfigDTO> view(@RequestBody SaasPrivacyConfigDTO saasPrivacyConfigDTO){
return ApiResponseUtils.success(saasPrivacyConfigService.view(saasPrivacyConfigDTO.getCategory()));
}
@ApiOperation(value = "获取关于我们", notes = "")
@PostMapping("/viewAbout")
public ApiResponseEntity<SaasPrivacyConfigDTO> viewAbout(@RequestBody SaasPrivacyConfigDTO saasPrivacyConfigDTO){
return ApiResponseUtils.success(saasPrivacyConfigService.view(saasPrivacyConfigDTO.getCategory()));
}
}
......@@ -3,7 +3,7 @@ package com.makeit.module.controller.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.service.platform.elder.PlatElderDayReportDayService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
......@@ -36,61 +36,61 @@ public class PlatElderReportDayController {
@ApiOperation("睡眠评价")
@PostMapping("sleepEvaluation")
public ApiResponseEntity<PlatElderSleepEvaluationVO> sleepEvaluation(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
public ApiResponseEntity<PlatElderSleepEvaluationVO> sleepEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.sleepEvaluation(platElderIdDTO));
}
@ApiOperation("睡眠图表")
@PostMapping("sleepDiagram")
public ApiResponseEntity<List<PlatElderSleepDiagramVO>> sleepDiagram(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
public ApiResponseEntity<List<PlatElderSleepDiagramVO>> sleepDiagram(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.sleepDiagram(platElderIdDTO));
}
@ApiOperation("心率呼吸评价")
@PostMapping("heartRespiratoryEvaluation")
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率异常记录")
@PostMapping("heartExceptionRecordList")
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> heartExceptionRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> heartExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("呼吸率异常记录")
@PostMapping("respiratoryExceptionRecordList")
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> respiratoryExceptionRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> respiratoryExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
public ApiResponseEntity<List<PlatElderRealTimeHeartRespiratoryVO>> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<List<PlatElderRealTimeHeartRespiratoryVO>> heartRespiratory(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.heartRespiratory(platElderIdDTO));
}
@ApiOperation("行为异常记录")
@PostMapping("behaviorExceptionRecordList")
public ApiResponseEntity<List<PlatElderBehaviorExceptionRecordVO>> behaviorExceptionRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<List<PlatElderBehaviorExceptionRecordVO>> behaviorExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("跌倒记录")
@PostMapping("failRecordList")
public ApiResponseEntity<List<String>> failRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<List<String>> failRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("坐标记录")
@PostMapping("coordinateList")
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinateList(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinateList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.coordinateList(platElderIdDTO));
}
@ApiOperation("行为辐射")
@PostMapping("behaviorDistribution")
public ApiResponseEntity<List<PlatElderBehaviorDistributionVO>> behaviorDistribution(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<List<PlatElderBehaviorDistributionVO>> behaviorDistribution(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
......
package com.makeit.module.controller.wechat.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.wechat.elder.PlatElderCenterQueryDTO;
import com.makeit.service.wechat.PlatElderCenterWechatService;
import com.makeit.vo.wechat.elder.PlatElderCenterHomeVo;
import com.makeit.vo.wechat.elder.PlatElderCenterInstitutionRoomVO;
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;
/**
* Controller
*
* @author zm
* @version 2023/9/15
*/
@Api(tags = "平台端小程序-长者中心")
@RestController
@RequestMapping("/wechat/elder/center")
public class PlatElderCenterWechatController {
@Autowired
private PlatElderCenterWechatService platElderCenterWechatService;
@ApiOperation("居家统计列表")
@PostMapping("homeStatistics")
public ApiResponseEntity<PlatElderCenterHomeVo> homeStatistics(@RequestBody PlatElderCenterQueryDTO dto) {
return ApiResponseUtils.success(platElderCenterWechatService.homeStatistics(dto));
}
@ApiOperation("机构统计列表")
@PostMapping("institutionStatistics")
public ApiResponseEntity<PlatElderCenterInstitutionRoomVO> institutionStatistics(@RequestBody PlatElderCenterQueryDTO dto) {
return ApiResponseUtils.success(platElderCenterWechatService.institutionStatistics(dto));
}
}
......@@ -4,6 +4,7 @@ package com.makeit.module.controller.wechat.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.service.platform.elder.PlatElderDayReportDayService;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
......@@ -66,7 +67,7 @@ public class PlatElderRealTimeWechatController {
@ApiOperation("坐标记录")
@PostMapping("coordinateList")
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinateList(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinateList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.coordinateList(platElderIdDTO));
}
......
......@@ -18,6 +18,8 @@ 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;
/**
* Controller
*
......@@ -59,4 +61,11 @@ public class PlatBedWechatController {
platBedService.del(baseIdDTO.getId());
return ApiResponseUtils.success();
}
@ApiOperation("列表-无权限(未绑定设备床位)")
@PostMapping("listAuthIgnore")
public ApiResponseEntity<List<PlatBed>> listAuthIgnore(@RequestBody PlatBedQueryDTO dto) {
List<PlatBed> data = platBedService.list(dto);
return ApiResponseUtils.success(data);
}
}
......@@ -3,10 +3,16 @@ package com.makeit.module.controller.wechat.space;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.auth.PlatOrgDTO;
import com.makeit.dto.platform.space.PlatSpaceAddDTO;
import com.makeit.dto.platform.space.PlatSpaceQueryDTO;
import com.makeit.dto.platform.space.PlatSpaceVO;
import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.utils.user.plat.PlatUserVO;
import com.makeit.utils.user.wechat.WechatUserInfo;
import com.makeit.utils.user.wechat.WechatUserUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -66,4 +72,13 @@ public class PlatSpaceWechatController {
List<PlatSpaceVO> data = spaceService.tree(dto);
return ApiResponseUtils.success(data);
}
@ApiOperation("一级空间列表(该账号权限下)")
@PostMapping("oneLevelList")
public ApiResponseEntity<List<PlatSpaceAddDTO>> oneLevelList(@RequestBody PlatOrgDTO dto) {
List<PlatSpaceAddDTO> data = spaceService.oneLevelList(dto);
return ApiResponseUtils.success(data);
}
}
......@@ -2,6 +2,8 @@ package com.makeit.module.controller.workstation;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.auth.PlatOrgDTO;
import com.makeit.dto.platform.space.PlatSpaceVO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.service.platform.workstation.WorkStationService;
import com.makeit.vo.platform.workstation.*;
......@@ -46,4 +48,10 @@ public class WorkStationController {
public ApiResponseEntity<List<WorkStationHomeBedVO>> homeList(@RequestBody WorkStationQueryDTO dto) {
return ApiResponseUtils.success(workStationService.homeList(dto));
}
@ApiOperation("空间树")
@PostMapping("spaceTree")
public ApiResponseEntity<List<PlatSpaceVO>> spaceTree(@RequestBody PlatOrgDTO dto) {
return ApiResponseUtils.success(workStationService.spaceTree(dto));
}
}
package com.makeit.dto.platform.auth;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Controller
*
* @author zm
* @version 2023/9/15
*/
@Data
@ApiModel("PlatOrgDTO参数")
public class PlatOrgDTO {
@ApiModelProperty(value = "类型 1-居家 2-机构")
private String type;
}
......@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
......@@ -21,6 +22,10 @@ import java.time.LocalDateTime;
@ApiModel(value = "Elder对象", description = "长者基本信息")
public class PlatElderReportDTO extends PlatElderIdDTO{
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("日期")
private LocalDate now;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("开始时间")
private LocalDateTime startTime;
......
......@@ -15,7 +15,7 @@ import java.util.List;
* @version 2023/9/11
*/
@Data
@ApiModel("PlatDataScreenQueryDto参数")
@ApiModel("WorkStationQueryDTO参数")
public class WorkStationQueryDTO {
@ApiModelProperty("组织ids")
......
package com.makeit.dto.wechat.elder;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Controller
*
* @author zm
* @version 2023/9/15
*/
@Data
@ApiModel("PlatElderCenterQueryDTO参数")
public class PlatElderCenterQueryDTO {
@ApiModelProperty("空间id")
private String spaceId;
}
......@@ -52,7 +52,9 @@ public class PlatDevice extends BaseBusEntity {
/**
* @see DeviceState
*/
@ApiModelProperty(value = "状态 数据字典 1 在线 0离线 ")
@ApiModelProperty(value = "状态 notActive(\"notActive\",\"禁用\"),\n" +
" offline(\"offline\",\"离线\"),\n" +
" online(\"online\",\"在线\"); ")
private String status;
@ApiModelProperty(value = "组织id")
......
......@@ -25,5 +25,5 @@ public interface PlatBedMapper extends BaseMapper<PlatBed> {
List<WorkStationInstitutionBedVO> selectByRoomIds(@Param("roomIds")List<String> roomIds);
List<WorkStationHomeBedVO> selectByCondition(WorkStationQueryDTO dto);
List<WorkStationHomeBedVO> selectByCondition(@Param("dto")WorkStationQueryDTO dto);
}
......@@ -84,7 +84,7 @@ public class BehaviorAlarm implements IAlarm {
Long duration1 = platDayDurationRecord.getDuration();
duration = duration * 60 + (int) (duration1 / 1000);
//duration+平均停留时长
List<String> personStateList = Arrays.asList("1", "2", "3");
List<String> personStateList = Arrays.asList("0");
//有人
//计数
Date now = new Date();
......@@ -94,7 +94,7 @@ public class BehaviorAlarm implements IAlarm {
alarmRedisDTO = new AlarmRedisDTO();
}
//有人
if (personStateList.contains(personState)) {
if (!personStateList.contains(personState)) {
//第一次进入空间
Long startLong = alarmRedisDTO.getStartLong();
if (startLong == null) {
......@@ -137,7 +137,7 @@ public class BehaviorAlarm implements IAlarm {
private void saveDayDurationRecord(PlatAlarmCheckDTO platAlarmCheckDTO, AlarmRedisDTO alarmRedisDTO) {
PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig();
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
PlatRegionSetting platRegionSetting = platAlarmCheckDTO.getPlatRegionSetting();
Date now = new Date();
long endLong = now.getTime();
......@@ -149,6 +149,8 @@ public class BehaviorAlarm implements IAlarm {
log.info("未关联长者,设备id:"+platDevice.getId());
return;
}
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
PlatDayDurationRecord durationRecord = new PlatDayDurationRecord();
durationRecord.setElderIds(platElderList.stream().map(BaseEntity::getId).collect(Collectors.joining(",")));
......
......@@ -49,6 +49,7 @@ public class BreathAlarm implements IAlarm {
*/
@Override
public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) {
//todo 获取老人健康的阈值
PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig();
String ruleConfigStr = config.getRuleConfig();
JSONObject properties = platAlarmCheckDTO.getProperties();
......
......@@ -40,6 +40,7 @@ public class HeartAlarm implements IAlarm {
@Override
public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) {
//todo 获取老人健康的阈值
PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig();
String ruleConfigStr = config.getRuleConfig();
JSONObject properties = platAlarmCheckDTO.getProperties();
......
......@@ -343,10 +343,14 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
@Override
@TenantIdIgnore
public void getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO) {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String tenantId = platDevice.getTenantId();
LambdaQueryWrapper<PlatRoomBedDevice> roomBedDeviceLambdaQueryWrapper = new LambdaQueryWrapper<>();
roomBedDeviceLambdaQueryWrapper.eq(PlatRoomBedDevice::getDeviceId, platDevice.getId());
roomBedDeviceLambdaQueryWrapper.eq(PlatRoomBedDevice::getDeviceId, platDevice.getId())
.eq(BaseBusEntity::getTenantId,tenantId)
;
PlatRoomBedDevice platRoomBedDevice = platRoomBedDeviceService.getOne(roomBedDeviceLambdaQueryWrapper, false);
if(platRoomBedDevice==null){
throw new BusinessException("设备没绑定房间:"+platDevice.getId());
......@@ -358,7 +362,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
LambdaQueryWrapper<PlatRegionSetting> platRegionSettingLambdaQueryWrapper = new LambdaQueryWrapper<>();
platRegionSettingLambdaQueryWrapper.eq(PlatRegionSetting::getRoomId, platRoom.getId())
.eq(PlatRegionSetting::getDeviceId, platDevice.getId());
.eq(PlatRegionSetting::getDeviceId, platDevice.getId())
.eq(BaseBusEntity::getTenantId,tenantId)
;
//区域设置
PlatRegionSetting platRegionSetting = platRegionSettingService.getOne(platRegionSettingLambdaQueryWrapper, false);
platAlarmCheckDTO.setPlatRegionSetting(platRegionSetting);
......@@ -366,7 +372,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
String bedId = platRoomBedDevice.getBedId();
if (StringUtils.isNotBlank(bedId)) {
LambdaQueryWrapper<PlatElder> elderLambdaQueryWrapper = new LambdaQueryWrapper<>();
elderLambdaQueryWrapper.eq(PlatElder::getBedId, bedId);
elderLambdaQueryWrapper.eq(PlatElder::getBedId, bedId)
.eq(BaseBusEntity::getTenantId,tenantId)
;
List<PlatElder> list = platElderService.list(elderLambdaQueryWrapper);
platAlarmCheckDTO.setPlatElderList(list);
}
......@@ -374,7 +382,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
String roomId = platRoomBedDevice.getRoomId();
if (StringUtils.isNotBlank(roomId)) {
LambdaQueryWrapper<PlatElder> elderLambdaQueryWrapper = new LambdaQueryWrapper<>();
elderLambdaQueryWrapper.eq(PlatElder::getRoomId, roomId);
elderLambdaQueryWrapper.eq(PlatElder::getRoomId, roomId)
.eq(BaseBusEntity::getTenantId,tenantId)
;
List<PlatElder> list = platElderService.list(elderLambdaQueryWrapper);
platAlarmCheckDTO.setPlatElderList(list);
}
......
......@@ -459,7 +459,7 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
@Override
public List<PlatOrg> belongToScopeList(PlatOrg param) {
PlatUserVO userVO = PlatUserUtil.getUserVO();
PlatUserVO userVO = PlatUserUtil.getUserVOCanNull();
String isTenant = userVO.getIsTenant();
//如果是租户账号 则有所有权限
if (StringUtils.equals(isTenant, CommonEnum.YES.getValue())) {
......
......@@ -214,7 +214,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
BeanUtils.copyProperties(dto, db);
db.setId(id);
BeanUtils.copyProperties(dto, other);
BeanUtils.copyProperties(dto, other,BaseEntity.Fields.id);
other.setDeviceId(id);
updateById(db);
......
package com.makeit.service.platform.elder;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepDiagramVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import java.time.LocalDateTime;
import java.util.List;
......@@ -17,10 +19,14 @@ import java.util.List;
*/
public interface PlatElderDayReportDayService {
List<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(PlatElderIdDTO platElderIdDTO);
PlatElderSleepEvaluationVO sleepEvaluation(PlatElderReportDTO platElderIdDTO);
List<PlatElderSleepDiagramVO> sleepDiagram(PlatElderReportDTO platElderIdDTO);
List<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(PlatElderReportDTO platElderIdDTO);
List<PlatElderCoordinateVO> coordinateList(String elderId, String deviceId, LocalDateTime start, LocalDateTime end);
List<PlatElderCoordinateVO> coordinateList(PlatElderIdDTO platElderIdDTO);
List<PlatElderCoordinateVO> coordinateList(PlatElderReportDTO platElderIdDTO);
}
package com.makeit.service.platform.elder.impl;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElderSleep;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentSpace;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.PlatElderDayReportDayService;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.elder.*;
import com.makeit.utils.LongTimestampUtil;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.data.validate.CollectionUtils;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepDiagramContentVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepDiagramVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
@Service
public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDayService {
......@@ -36,13 +41,106 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
private PlatDeviceService platDeviceService;
@Autowired
private PlatElderSleepService platElderSleepService;
@Autowired
private PlatElderSleepAnalysisService platElderSleepAnalysisService;
@Autowired
private IotProductDeviceService iotProductDeviceService;
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
private static LocalDateTime dayStartNow(LocalDate now) {
return LocalDateTimeUtils.getDayStart(now);
}
private static LocalDateTime dayEndNow(LocalDate now) {
return LocalDateTimeUtils.getDayEnd(now);
}
private static LocalDateTime dayStartYes(LocalDate now) {
return LocalDateTimeUtils.getDayStart(now).minusDays(1);
}
private static LocalDateTime dayEndYes(LocalDate now) {
return LocalDateTimeUtils.getDayEnd(now).minusDays(1);
}
@Override
public PlatElderSleepEvaluationVO sleepEvaluation(PlatElderReportDTO platElderIdDTO) {
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
LocalDateTime start = dayStartNow(now);
LocalDateTime end = dayEndNow(now);
PlatElderSleepEvaluationVO platElderSleepEvaluationVO = new PlatElderSleepEvaluationVO();
String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
PlatElderSleepAnalysis platElderSleepAnalysis = platElderSleepAnalysisService.getOne(new QueryWrapper<PlatElderSleepAnalysis>().lambda()
.eq(PlatElderSleepAnalysis::getElderId, platElderIdDTO.getElderId())
.eq(PlatElderSleepAnalysis::getCurrentDate, nowString)
);
if (platElderSleepAnalysis == null) {
return platElderSleepEvaluationVO;
}
platElderSleepEvaluationVO.setScore(Integer.valueOf(platElderSleepAnalysis.getSleepScore() + ""));
platElderSleepEvaluationVO.setResult(platElderSleepAnalysis.getSleepResult());
platElderSleepEvaluationVO.setEvaluation(platElderSleepAnalysis.getSleepEvaluate());
platElderSleepEvaluationVO.setSleepDuration(Integer.valueOf(platElderSleepAnalysis.getSleepTime() + ""));
platElderSleepEvaluationVO.setRestDuration(Integer.valueOf(platElderSleepAnalysis.getRestTime() + ""));
return platElderSleepEvaluationVO;
}
@Override
public List<PlatElderSleepDiagramVO> sleepDiagram(PlatElderReportDTO platElderIdDTO) {
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
LocalDateTime start = dayStartNow(now);
LocalDateTime end = dayEndNow(now);
List<PlatElderSleepDiagramVO> voList = new ArrayList<>(10);
String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
List<PlatElderSleep> sleepList = platElderSleepService.list(new QueryWrapper<PlatElderSleep>().lambda()
.eq(PlatElderSleep::getElderId, platElderIdDTO.getElderId())
.eq(PlatElderSleep::getCurrentDate, nowString)
.orderByAsc(PlatElderSleep::getStartSleep)
);
voList = StreamUtil.map(sleepList, e -> {
PlatElderSleepDiagramVO vo = new PlatElderSleepDiagramVO();
vo.setSleepAt(e.getStartSleep());
vo.setWakeUpAt(e.getEndSleep());
List<PlatElderSleepDiagramContentVO> contentList = StreamUtil.map(e.getSleepRecord(), i -> {
PlatElderSleepDiagramContentVO contentVO = new PlatElderSleepDiagramContentVO();
contentVO.setStartTime(i.getStartTime());
contentVO.setEndTime(i.getEndTime());
contentVO.setSleepType(i.getSleepType());
return contentVO;
});
vo.setContentList(contentList);
return vo;
});
return voList;
}
@Override
public List<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(PlatElderIdDTO platElderIdDTO) {
public List<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(PlatElderReportDTO platElderIdDTO) {
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId());
......@@ -50,10 +148,10 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
return new ArrayList<>(10);
}
LocalDateTime now = LocalDateTime.now();
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
LocalDateTime start = LocalDateTimeUtils.getDayStart(now);
LocalDateTime end = LocalDateTimeUtils.getDayEnd(now);
LocalDateTime start = dayStartNow(now);
LocalDateTime end = dayEndNow(now);
List<DeviceInfoContentBreathe> breatheList = iotProductDeviceService.getDeviceLogByTimeRangeBreathe(platDevice.getOriDeviceId(), 2 * 24 * 3600, start, end);
......@@ -100,12 +198,12 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
}
@Override
public List<PlatElderCoordinateVO> coordinateList(PlatElderIdDTO platElderIdDTO) {
public List<PlatElderCoordinateVO> coordinateList(PlatElderReportDTO platElderIdDTO) {
LocalDateTime now = LocalDateTime.now();
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
LocalDateTime start = LocalDateTimeUtils.getDayStart(now);
LocalDateTime end = LocalDateTimeUtils.getDayEnd(now);
LocalDateTime start = dayStartNow(now);
LocalDateTime end = dayEndNow(now);
return coordinateList(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId(), start, end);
......
......@@ -666,7 +666,7 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
db.setUnitSpaceId(null);
db.setFloorSpaceId(null);
db.setRoomId(null);
db.setBedId(bedId);
db.setBedId(null);
db.setSpacePath(null);
db.setCheckOutTime(LocalDateTime.now());
......
package com.makeit.service.platform.space;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.dto.platform.auth.PlatOrgDTO;
import com.makeit.dto.platform.space.PlatSpaceAddDTO;
import com.makeit.dto.platform.space.PlatSpaceQueryDTO;
import com.makeit.dto.platform.space.PlatSpaceVO;
import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.utils.user.wechat.WechatUserInfo;
import com.makeit.vo.platform.space.PlatSpaceAndRoomVO;
import java.util.List;
import java.util.Map;
/**
* @Author:lzy
......@@ -58,4 +61,10 @@ public interface PlatSpaceService extends IService<PlatSpace> {
List<PlatSpaceVO> treeByBed(PlatSpaceQueryDTO dto);
List<PlatSpace> listChild(List<String> spaceIds);
List<PlatSpaceAddDTO> oneLevelList(PlatOrgDTO dtom);
PlatSpaceVO child(PlatSpaceVO vo, Map<String,List<PlatSpace>> map);
PlatSpaceVO convertToVO(PlatSpace space);
}
......@@ -56,6 +56,7 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
//空间下的房间
List<PlatRoom> rooms = platRoomService.list(new QueryWrapper<PlatRoom>().lambda()
.in(PlatRoom::getSpaceId,spaceIds));
Map<String,List<PlatRoom>> spaceRoomMap = rooms.stream().collect(Collectors.groupingBy(PlatRoom::getSpaceId));
List<String> roomIds = rooms.stream().map(PlatRoom::getId).collect(Collectors.toList());
List<PlatBed> beds = platBedService.list(new QueryWrapper<PlatBed>().lambda()
.in(PlatBed::getRoomId,roomIds));
......@@ -65,10 +66,13 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
platRoomPanoramaVO.setSpaceName(space.getName());
platRoomPanoramaVO.setSpaceId(dto.getId());
List<PlatRoomVO> roomVOList = new ArrayList<>();
for(PlatRoom room : rooms){
PlatRoomVO vo = convertToVO(room,bedMap);
roomVOList.add(vo);
if(spaceRoomMap.get(space.getId())!=null){
for(PlatRoom room : spaceRoomMap.get(space.getId())){
PlatRoomVO vo = convertToVO(room,bedMap);
roomVOList.add(vo);
}
}
platRoomPanoramaVO.setChildren(roomVOList);
list.add(platRoomPanoramaVO);
}
......
package com.makeit.service.platform.space.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.makeit.dto.platform.auth.PlatOrgDTO;
import com.makeit.dto.platform.space.PlatSpaceAddDTO;
import com.makeit.dto.platform.space.PlatSpaceQueryDTO;
import com.makeit.dto.platform.space.PlatSpaceVO;
......@@ -19,6 +21,8 @@ import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.user.plat.PlatUserUtil;
import com.makeit.utils.user.plat.PlatUserVO;
import com.makeit.utils.user.wechat.WechatUserInfo;
import com.makeit.utils.user.wechat.WechatUserUtil;
import com.makeit.vo.platform.space.PlatSpaceAndRoomVO;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -203,6 +207,23 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
}
@Override
public List<PlatSpaceAddDTO> oneLevelList(PlatOrgDTO dto) {
//获取该账号的权限组织
PlatOrg param = new PlatOrg();
param.setType(dto.getType());
List<PlatOrg> orgs = platOrgService.belongToScopeList(param);
if(orgs.isEmpty()){
return new ArrayList<>();
}
List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList());
List<PlatSpace> spaces = list(new QueryWrapper<PlatSpace>().lambda()
.isNull(PlatSpace::getParentId)
.in(PlatSpace::getOrgId, orgIds));
return BeanDtoVoUtils.listVo(spaces, PlatSpaceAddDTO.class);
}
private PlatSpaceVO childVo(PlatSpaceVO vo,Map<String,List<PlatSpaceVO>> map) {
if (!map.containsKey(vo.getId())) {
......@@ -220,8 +241,8 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
}
private PlatSpaceVO child(PlatSpaceVO vo,Map<String,List<PlatSpace>> map){
@Override
public PlatSpaceVO child(PlatSpaceVO vo,Map<String,List<PlatSpace>> map){
if(!map.containsKey(vo.getId())){
return vo;
......@@ -238,7 +259,8 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
return vo;
}
private PlatSpaceVO convertToVO(PlatSpace space){
@Override
public PlatSpaceVO convertToVO(PlatSpace space){
PlatSpaceVO vo = new PlatSpaceVO();
vo.setName(space.getName());
......
package com.makeit.service.platform.workstation;
import com.makeit.dto.platform.auth.PlatOrgDTO;
import com.makeit.dto.platform.space.PlatSpaceVO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.vo.platform.workstation.*;
import java.util.List;
import java.util.Map;
/**
* Controller
......@@ -21,4 +25,8 @@ public interface WorkStationService {
WorkStationHomeStatisticsVO homeStatistics(WorkStationQueryDTO dto);
List<WorkStationHomeBedVO> homeList(WorkStationQueryDTO dto);
List<PlatSpaceVO> spaceTree(PlatOrgDTO dto);
Map<String, Map<String,List<String>>> mapElderAlarmType(List<PlatAlarmRecord> alarmRecords);
}
package com.makeit.service.platform.workstation.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.workstation.WorkStationQueryDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.auth.PlatOrg;
......@@ -199,7 +201,8 @@ public class WorkStationServiceImpl implements WorkStationService {
return roomVOList;
}
private Map<String, Map<String,List<String>>> mapElderAlarmType(List<PlatAlarmRecord> alarmRecords) {
@Override
public Map<String, Map<String,List<String>>> mapElderAlarmType(List<PlatAlarmRecord> alarmRecords) {
Map<String, Map<String,List<String>>> map = new HashMap<>();
alarmRecords.forEach(a -> {
if (StringUtil.isNotEmpty(a.getElderIds())) {
......@@ -355,4 +358,34 @@ public class WorkStationServiceImpl implements WorkStationService {
}
return list;
}
@Override
public List<PlatSpaceVO> spaceTree(PlatOrgDTO dto) {
List<PlatSpaceVO> data = new ArrayList<>();
//获取该账号的权限组织
PlatOrg param = new PlatOrg();
param.setType(dto.getType());
List<PlatOrg> orgs = platOrgService.belongToScopeList(param);
if(orgs.isEmpty()){
return data;
}
List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList());
List<PlatSpace> list = platSpaceService.list(new QueryWrapper<PlatSpace>().lambda()
.in(PlatSpace::getOrgId, orgIds));
//父级
List<PlatSpace> listParent = list.stream().filter(item->StringUtil.isEmpty(item.getParentId())).collect(Collectors.toList());
//子集
List<PlatSpace> listChild = list.stream().filter(item->item.getParentId() != null).collect(Collectors.toList());
Map<String,List<PlatSpace>> map = listChild.stream().collect(Collectors.groupingBy(PlatSpace::getParentId));
for(PlatSpace space:listParent){
PlatSpaceVO vo = platSpaceService.convertToVO(space);
vo = platSpaceService.child(vo,map);
data.add(vo);
}
return data;
}
}
package com.makeit.service.wechat;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.dto.wechat.elder.PlatElderCenterQueryDTO;
import com.makeit.vo.wechat.elder.PlatElderCenterHomeVo;
import com.makeit.vo.wechat.elder.PlatElderCenterInstitutionRoomVO;
import java.util.List;
/**
* Controller
*
* @author zm
* @version 2023/9/7
*/
public interface PlatElderCenterWechatService {
PlatElderCenterHomeVo homeStatistics(PlatElderCenterQueryDTO dto);
PlatElderCenterInstitutionRoomVO institutionStatistics(PlatElderCenterQueryDTO dto);
}
package com.makeit.service.wechat.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.dto.wechat.elder.PlatElderCenterQueryDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.enums.platform.alarm.PlatAlarmRecordEnum;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.space.PlatBedService;
import com.makeit.service.platform.space.PlatRoomService;
import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.service.platform.workstation.WorkStationService;
import com.makeit.service.wechat.PlatElderCenterWechatService;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import com.makeit.vo.platform.workstation.WorkStationHomeBedVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionBedVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO;
import com.makeit.vo.wechat.elder.PlatElderCenterHomeVo;
import com.makeit.vo.wechat.elder.PlatElderCenterInstitutionRoomVO;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* Controller
*
* @author zm
* @version 2023/9/7
*/
@Service
public class PlatElderCenterWechatServiceImpl implements PlatElderCenterWechatService {
@Autowired
private PlatSpaceService platSpaceService;
@Autowired
private PlatElderService platElderService;
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
@Autowired
private WorkStationService workStationService;
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@Autowired
private PlatBedService platBedService;
@Autowired
private PlatRoomService platRoomService;
@Override
public PlatElderCenterHomeVo homeStatistics(PlatElderCenterQueryDTO dto) {
PlatElderCenterHomeVo homeVo = new PlatElderCenterHomeVo();
PlatSpace space = platSpaceService.getById(dto.getSpaceId());
//获取空间老人
List<PlatElder> elders = platElderService.list(new QueryWrapper<PlatElder>().lambda()
.apply(StringUtils.isNotBlank(dto.getSpaceId()), "find_in_set('" + dto.getSpaceId() + "',space_path)")
);
if(elders.isEmpty()){
homeVo.setList(new ArrayList<>());
homeVo.setElderNumber(0);
return homeVo;
}
List<String> elderIds = elders.stream().map(PlatElder::getId).collect(Collectors.toList());
//获取父级的所有子级空间
List<PlatSpace> spaces = platSpaceService.listChild(Arrays.asList(dto.getSpaceId()));
List<String> spaceIds = spaces.stream().map(PlatSpace::getId).collect(Collectors.toList());
List<PlatAlarmRecord> alarmRecords = platAlarmRecordService.list(
new QueryWrapper<PlatAlarmRecord>().lambda()
.eq(PlatAlarmRecord::getStatus, PlatAlarmRecordEnum.AlarmRecordStatusEnum.UNHANDLED.getValue())
.eq(PlatAlarmRecord::getOrgId, space.getOrgId())
);
//长者对应的报警类型
Map<String, Map<String,List<String>>> elderAlarmTypeMap = workStationService.mapElderAlarmType(alarmRecords);
WorkStationQueryDTO queryDTO = new WorkStationQueryDTO();
queryDTO.setSpaceIds(spaceIds);
queryDTO.setElderIds(elderIds);
List<WorkStationHomeBedVO> list = platBedService.selectByCondition(queryDTO);
JoinUtil.joinSplit(list, platSpaceService, WorkStationHomeBedVO::getSpacePath, PlatSpace::getId, (e, l) -> {
e.setPathName(StreamUtil.join(l, Objects::nonNull, PlatSpace::getName, "-"));
});
for(WorkStationHomeBedVO vo : list){
vo.setPathName(vo.getPathName() + "-" + vo.getRoomName());
if (StringUtil.isNotEmpty(vo.getElderId()) ) {
if(elderAlarmTypeMap.containsKey(vo.getElderId())){
vo.setAlarmTypeMap(elderAlarmTypeMap.get(vo.getElderId()));
}
if(StringUtil.isNotEmpty(vo.getDeviceId())){
PlatElderIdDTO platElderIdDTO = new PlatElderIdDTO();
platElderIdDTO.setElderId(vo.getElderId());
platElderIdDTO.setDeviceId(vo.getDeviceId());
PlatElderRealTimeNowVO nowStatus = platElderRealTimeService.nowStatus(platElderIdDTO);
vo.setElderStatus(nowStatus.getStatus());
vo.setHeartRate(nowStatus.getHeartRate());
vo.setRespiratoryRate(nowStatus.getRespiratoryRate());
}
}
}
homeVo.setElderNumber(elders.size());
homeVo.setList(list);
return homeVo;
}
@Override
public PlatElderCenterInstitutionRoomVO institutionStatistics(PlatElderCenterQueryDTO dto) {
PlatElderCenterInstitutionRoomVO institutionRoomVO = new PlatElderCenterInstitutionRoomVO();
PlatSpace space = platSpaceService.getById(dto.getSpaceId());
//获取空间老人
List<PlatElder> elders = platElderService.list(new QueryWrapper<PlatElder>().lambda()
.apply(StringUtils.isNotBlank(dto.getSpaceId()), "find_in_set('" + dto.getSpaceId() + "',space_path)")
);
List<String> elderIds = elders.stream().map(PlatElder::getId).collect(Collectors.toList());
//获取父级的所有子级空间
List<PlatSpace> spaces = platSpaceService.listChild(Arrays.asList(dto.getSpaceId()));
List<String> spaceIds = spaces.stream().map(PlatSpace::getId).collect(Collectors.toList());
List<PlatAlarmRecord> alarmRecords = platAlarmRecordService.list(
new QueryWrapper<PlatAlarmRecord>().lambda()
.eq(PlatAlarmRecord::getStatus, PlatAlarmRecordEnum.AlarmRecordStatusEnum.UNHANDLED.getValue())
.eq(PlatAlarmRecord::getOrgId, space.getOrgId())
);
WorkStationQueryDTO queryDTO = new WorkStationQueryDTO();
queryDTO.setSpaceIds(spaceIds);
queryDTO.setElderIds(elderIds);
List<WorkStationInstitutionRoomVO> roomVOList = platRoomService.workStationList(queryDTO);
if (roomVOList.isEmpty()) {
institutionRoomVO.setList(new ArrayList<>());
institutionRoomVO.setElderNumber(0);
return institutionRoomVO;
}
List<String> roomIds = roomVOList.stream().map(WorkStationInstitutionRoomVO::getRoomId).collect(Collectors.toList());
//获取床号及长者/设备
List<WorkStationInstitutionBedVO> bedVos = platBedService.selectByRoomIds(roomIds);
Map<String, List<WorkStationInstitutionBedVO>> bedMap = bedVos.stream().collect(Collectors.groupingBy(WorkStationInstitutionBedVO::getRoomId));
JoinUtil.joinSplit(roomVOList, platSpaceService, WorkStationInstitutionRoomVO::getSpacePath, PlatSpace::getId, (e, l) -> {
e.setPathName(StreamUtil.join(l, Objects::nonNull, PlatSpace::getName, "-"));
});
//长者对应的报警类型
Map<String, Map<String,List<String>>> elderAlarmTypeMap = workStationService.mapElderAlarmType(alarmRecords);
for (WorkStationInstitutionRoomVO roomVo : roomVOList) {
WorkStationInstitutionRoomVO vo = new WorkStationInstitutionRoomVO();
vo.setRoomId(roomVo.getRoomId());
vo.setPathName(vo.getPathName() + "-" + vo.getRoomName());
if (bedMap.get(roomVo.getRoomId()) != null) {
List<WorkStationInstitutionBedVO> roomBedVos = bedMap.get(roomVo.getRoomId());
//获取告警类型及老人状态
roomBedVos.forEach(r -> {
if (StringUtil.isNotEmpty(r.getElderId()) ) {
if(elderAlarmTypeMap.containsKey(r.getElderId())){
r.setAlarmTypeMap(elderAlarmTypeMap.get(r.getElderId()));
}
if(StringUtil.isNotEmpty(r.getDeviceId())){
PlatElderIdDTO platElderIdDTO = new PlatElderIdDTO();
platElderIdDTO.setElderId(r.getElderId());
platElderIdDTO.setDeviceId(r.getDeviceId());
PlatElderRealTimeNowVO nowStatus = platElderRealTimeService.nowStatus(platElderIdDTO);
r.setElderStatus(nowStatus.getStatus());
}
}
});
vo.setList(roomBedVos);
}
}
institutionRoomVO.setElderNumber(elders.size());
institutionRoomVO.setList(roomVOList);
return institutionRoomVO;
}
}
......@@ -9,17 +9,28 @@ import java.time.LocalDateTime;
@Data
public class PlatElderSleepDiagramContentVO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
@ApiModelProperty("时间")
private LocalDateTime time;
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
// @ApiModelProperty("时间")
// private LocalDateTime time;
//
// @ApiModelProperty(value = "深度睡眠得分")
// private String sleepDeepScore;
//
// @ApiModelProperty(value = "浅度睡眠得分")
// private String sleepLightnessScore;
//
// @ApiModelProperty(value = "清醒得分")
// private String soberScore;
@ApiModelProperty(value = "深度睡眠得分")
private String sleepDeepScore;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
@ApiModelProperty("开始时间")
private String startTime;
@ApiModelProperty(value = "浅度睡眠得分")
private String sleepLightnessScore;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
@ApiModelProperty("结束时间")
private String endTime;
@ApiModelProperty(value = "清醒得分")
private String soberScore;
@ApiModelProperty(value = "类型")
private String sleepType;
}
......@@ -23,7 +23,7 @@ public class PlatSpaceAndRoomVO extends BaseIdDTO {
@ApiModelProperty("父级Id")
private String parentId;
@ApiModelProperty("类型 0-空间 1-房间")
@ApiModelProperty("类型 1-空间 2-房间")
private String type;
@ApiModelProperty("子集")
......
package com.makeit.vo.wechat.elder;
import com.makeit.vo.platform.workstation.WorkStationHomeBedVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* Controller
*
* @author zm
* @version 2023/9/15
*/
@Data
public class PlatElderCenterHomeVo {
@ApiModelProperty(value = "长者数")
private Integer elderNumber;
private List<WorkStationHomeBedVO> list;
}
package com.makeit.vo.wechat.elder;
import com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* Controller
*
* @author zm
* @version 2023/9/15
*/
@Data
public class PlatElderCenterInstitutionRoomVO {
@ApiModelProperty(value = "长者数")
private Integer elderNumber;
private List<WorkStationInstitutionRoomVO> list;
}
......@@ -50,12 +50,12 @@
</select>
<select id="selectByRoomIds" resultType="com.makeit.vo.platform.workstation.WorkStationInstitutionBedVO">
SELECT pb.`name` as bedName, pb.id as bedId, pb.room_id , pe.id as elderId, pb.name as elderName, prbd.device_id
SELECT pb.`name` as bedName, pb.id as bedId, pb.room_id as roomId , pe.id as elderId, pb.name as elderName, prbd.device_id as deviceId
FROM plat_bed pb
LEFT JOIN plat_elder pe ON pe.bed_id = pb.id
LEFT JOIN plat_room_bed_device rpbd ON rpbd.bed_id = pb.id
LEFT JOIN plat_room_bed_device prbd ON prbd.bed_id = pb.id
<where>
pb.del_flag = 0 and pe.del_flag = 0 and rpbd.del_flag = 0
pb.del_flag = 0 and pe.del_flag = 0 and prbd.del_flag = 0
<if test="roomIds != null and roomIds.size() > 0 ">
AND pb.room_id IN
<foreach collection="roomIds" item="item" separator="," open="(" close=")" index="">
......@@ -68,12 +68,12 @@
<select id="selectByCondition" resultType="com.makeit.vo.platform.workstation.WorkStationHomeBedVO">
SELECT pb.`name` as bedName, pb.id as bedId, pb.room_id , pe.id as elderId, pb.name as elderName, prbd.device_id,pm.id as roomId,pm.name as roomName ,pm.space_path
FROM plat_bed pb
LEFT JOIN plat_room pr ON pr.id = pb.room_id
LEFT JOIN plat_space ps ON ps.id = pr.space_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_elder pe ON pe.bed_id = pb.id
LEFT JOIN plat_room_bed_device rpbd ON rpbd.bed_id = pb.id
LEFT JOIN plat_room_bed_device prbd ON prbd.bed_id = pb.id
<where>
pb.del_flag = 0 and pe.del_flag = 0 and rpbd.del_flag = 0 and pb.status = 0
pb.del_flag = 0 and pe.del_flag = 0 and prbd.del_flag = 0 and pb.status = 0
<if test="dto.elderName != null and dto.elderName != ''">
AND pe.naem LIKE CONCAT('%',#{dto.elderName},'%')
</if>
......@@ -90,7 +90,7 @@
</foreach>
</if>
</where>
order by pr.room_id
order by pb.room_id
</select>
......
......@@ -4,10 +4,10 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.makeit.mapper.platform.space.PlatRoomMapper">
<select id="spaceAndRoomList" resultType="com.makeit.vo.platform.space.PlatSpaceAndRoomVO">
SELECT ps.id,ps.`name`,ps.parent_id as parentId,'0' as type FROM plat_space ps
SELECT ps.id,ps.`name`,ps.parent_id as parentId,'1' as type FROM plat_space ps
WHERE ps.del_flag = 0
UNION
SELECT pr.id,pr.`name`,pr.space_id as parentId,'1' as type FROM plat_room pr
SELECT pr.id,pr.`name`,pr.space_id as parentId,'2' as type FROM plat_room pr
WHERE pr.del_flag = 0
</select>
......
......@@ -19,6 +19,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
import java.util.List;
import java.util.Objects;
......@@ -69,10 +70,17 @@ public class PushCallback implements MqttCallback {
logger.info("deliveryComplete--------------" + token.isComplete());
}
/**
* 触发告警耗时 3.07s
* 未触发告警耗时 0.08s
* @param device
*/
@TenantIdIgnore
public void checkAlarm(DeviceInfo device) {
StopWatch stopWatch = new StopWatch();
stopWatch.start("checkAlarm-1");
String deviceId = device.getDeviceId();
//String propertiesStr = device.getProperties();
// String propertiesStr = device.getProperties();
// if (StringUtils.isBlank(propertiesStr)) {
// return;
// }
......@@ -109,6 +117,8 @@ public class PushCallback implements MqttCallback {
}
}
}
stopWatch.stop();
logger.info(stopWatch.prettyPrint());
}
......
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