Commit 78c5a17a by 朱淼
parents 7b4ae610 09ae7133
Showing with 378 additions and 76 deletions
...@@ -49,14 +49,14 @@ public class PlatRoleController { ...@@ -49,14 +49,14 @@ public class PlatRoleController {
@Autowired @Autowired
private PlatUserService platUserService; private PlatUserService platUserService;
@Action(module = "平台端-角色", name = "分页列表", code = "tnt:role:page") @Action(module = "平台端-角色", name = "分页列表", code = "plat:role:page")
@ApiOperation("分页列表") @ApiOperation("分页列表")
@PostMapping("page") @PostMapping("page")
public ApiResponseEntity<PageVO<PlatRoleDTOVO>> page(@RequestBody PageReqDTO<PlatRoleDTOVO> page) { public ApiResponseEntity<PageVO<PlatRoleDTOVO>> page(@RequestBody PageReqDTO<PlatRoleDTOVO> page) {
return ApiResponseUtils.success(platRoleService.page(page)); return ApiResponseUtils.success(platRoleService.page(page));
} }
@Action(module = "平台端-角色", name = "列表", code = "tnt:role:list") @Action(module = "平台端-角色", name = "列表", code = "plat:role:list")
@ApiOperation("列表") @ApiOperation("列表")
@PostMapping("list") @PostMapping("list")
public ApiResponseEntity<List<PlatRoleDTOVO>> list(@RequestBody PlatRoleDTOVO dto) { public ApiResponseEntity<List<PlatRoleDTOVO>> list(@RequestBody PlatRoleDTOVO dto) {
...@@ -75,14 +75,14 @@ public class PlatRoleController { ...@@ -75,14 +75,14 @@ public class PlatRoleController {
return ApiResponseUtils.success(platRoleService.list(dto)); return ApiResponseUtils.success(platRoleService.list(dto));
} }
@Action(module = "平台端-角色", name = "新增", code = "tnt:role:add") @Action(module = "平台端-角色", name = "新增", code = "plat:role:add")
@ApiOperation("新增") @ApiOperation("新增")
@PostMapping("add") @PostMapping("add")
public ApiResponseEntity<String> add(@Validated @RequestBody PlatRoleDTOVO dto) { public ApiResponseEntity<String> add(@Validated @RequestBody PlatRoleDTOVO dto) {
return ApiResponseUtils.success(platRoleService.add(dto)); return ApiResponseUtils.success(platRoleService.add(dto));
} }
@Action(module = "平台端-角色", name = "编辑", code = "tnt:role:edit") @Action(module = "平台端-角色", name = "编辑", code = "plat:role:edit")
@ApiOperation("编辑") @ApiOperation("编辑")
@PostMapping("edit") @PostMapping("edit")
public ApiResponseEntity<Void> edit(@Validated @RequestBody PlatRoleDTOVO dto) { public ApiResponseEntity<Void> edit(@Validated @RequestBody PlatRoleDTOVO dto) {
...@@ -90,14 +90,14 @@ public class PlatRoleController { ...@@ -90,14 +90,14 @@ public class PlatRoleController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@Action(module = "平台端-角色", name = "详情", code = "tnt:role:view") @Action(module = "平台端-角色", name = "详情", code = "plat:role:view")
@ApiOperation("详情") @ApiOperation("详情")
@PostMapping("view") @PostMapping("view")
public ApiResponseEntity<PlatRoleDTOVO> view(@RequestBody BaseIdDTO dto) { public ApiResponseEntity<PlatRoleDTOVO> view(@RequestBody BaseIdDTO dto) {
return ApiResponseUtils.success(platRoleService.view(dto.getId())); return ApiResponseUtils.success(platRoleService.view(dto.getId()));
} }
@Action(module = "平台端-角色", name = "删除", code = "tnt:role:del") @Action(module = "平台端-角色", name = "删除", code = "plat:role:del")
@ApiOperation("删除") @ApiOperation("删除")
@PostMapping("del") @PostMapping("del")
public ApiResponseEntity<Void> del(@RequestBody BaseIdDTO dto) { public ApiResponseEntity<Void> del(@RequestBody BaseIdDTO dto) {
...@@ -105,7 +105,7 @@ public class PlatRoleController { ...@@ -105,7 +105,7 @@ public class PlatRoleController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@Action(module = "平台端-角色", name = "改变状态", code = "tnt:role:changeStatus") @Action(module = "平台端-角色", name = "改变状态", code = "plat:role:changeStatus")
@ApiOperation("改变状态") @ApiOperation("改变状态")
@PostMapping("changeStatus") @PostMapping("changeStatus")
public ApiResponseEntity<Void> changeStatus(@RequestBody StatusDTO dto) { public ApiResponseEntity<Void> changeStatus(@RequestBody StatusDTO dto) {
...@@ -113,7 +113,7 @@ public class PlatRoleController { ...@@ -113,7 +113,7 @@ public class PlatRoleController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@Action(module = "平台端-角色", name = "分配用户", code = "tnt:role:assignUserList") @Action(module = "平台端-角色", name = "分配用户", code = "plat:role:assignUserList")
@ApiOperation("分配用户") @ApiOperation("分配用户")
@PostMapping("assignUserList") @PostMapping("assignUserList")
public ApiResponseEntity<Void> assignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList) {//参数要不要是一个对象里 有一个数组 public ApiResponseEntity<Void> assignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList) {//参数要不要是一个对象里 有一个数组
...@@ -121,7 +121,7 @@ public class PlatRoleController { ...@@ -121,7 +121,7 @@ public class PlatRoleController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@Action(module = "平台端-角色", name = "删除分配用户", code = "tnt:role:removeAssignUserList") @Action(module = "平台端-角色", name = "删除分配用户", code = "plat:role:removeAssignUserList")
@ApiOperation("删除分配用户") @ApiOperation("删除分配用户")
@PostMapping("removeAssignUserList") @PostMapping("removeAssignUserList")
public ApiResponseEntity<Void> removeAssignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList) { public ApiResponseEntity<Void> removeAssignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList) {
...@@ -129,7 +129,7 @@ public class PlatRoleController { ...@@ -129,7 +129,7 @@ public class PlatRoleController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@Action(module = "平台端-角色", name = "分配菜单", code = "tnt:role:assignMenuList") @Action(module = "平台端-角色", name = "分配菜单", code = "plat:role:assignMenuList")
@ApiOperation("分配菜单") @ApiOperation("分配菜单")
@Deprecated @Deprecated
@PostMapping("assignMenuList") @PostMapping("assignMenuList")
...@@ -138,7 +138,7 @@ public class PlatRoleController { ...@@ -138,7 +138,7 @@ public class PlatRoleController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@Action(module = "平台端-角色", name = "获取分配菜单", code = "tnt:role:getAssignMenuList") @Action(module = "平台端-角色", name = "获取分配菜单", code = "plat:role:getAssignMenuList")
@ApiOperation("获取分配菜单") @ApiOperation("获取分配菜单")
@PostMapping("getAssignMenuList") @PostMapping("getAssignMenuList")
public ApiResponseEntity<List<PlatRoleMenu>> getAssignMenuList(@RequestBody BaseIdDTO baseIdDTO) { public ApiResponseEntity<List<PlatRoleMenu>> getAssignMenuList(@RequestBody BaseIdDTO baseIdDTO) {
...@@ -151,7 +151,7 @@ public class PlatRoleController { ...@@ -151,7 +151,7 @@ public class PlatRoleController {
return ApiResponseUtils.success(platUserService.getHotelList(deptDTO.getOrgId())); return ApiResponseUtils.success(platUserService.getHotelList(deptDTO.getOrgId()));
} }
@Action(module = "平台端-角色", name = "分配管理权限", code = "tnt:role:assignDeptList") @Action(module = "平台端-角色", name = "分配管理权限", code = "plat:role:assignDeptList")
@ApiOperation("分配管理权限") @ApiOperation("分配管理权限")
@PostMapping("assignDeptList") @PostMapping("assignDeptList")
public ApiResponseEntity<Void> assignDeptList(@RequestBody PlatRoleDeptDTOVO roleDeptDTO) { public ApiResponseEntity<Void> assignDeptList(@RequestBody PlatRoleDeptDTOVO roleDeptDTO) {
...@@ -159,14 +159,14 @@ public class PlatRoleController { ...@@ -159,14 +159,14 @@ public class PlatRoleController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@Action(module = "平台端-角色", name = "获取分配管理权限", code = "tnt:role:getDeptListByRoleId") @Action(module = "平台端-角色", name = "获取分配管理权限", code = "plat:role:getDeptListByRoleId")
@ApiOperation("获取分配管理权限") @ApiOperation("获取分配管理权限")
@PostMapping("getDeptListByRoleId") @PostMapping("getDeptListByRoleId")
public ApiResponseEntity<List<PlatRoleOrg>> getDeptListByRoleId(@RequestBody BaseIdDTO baseIdDTO) { public ApiResponseEntity<List<PlatRoleOrg>> getDeptListByRoleId(@RequestBody BaseIdDTO baseIdDTO) {
return ApiResponseUtils.success(platRoleService.getDeptListByRoleId(baseIdDTO.getId())); return ApiResponseUtils.success(platRoleService.getDeptListByRoleId(baseIdDTO.getId()));
} }
@Action(module = "平台端-角色", name = "复制角色及关联", code = "tnt:role:copyRole") @Action(module = "平台端-角色", name = "复制角色及关联", code = "plat:role:copyRole")
@ApiOperation("复制角色及关联") @ApiOperation("复制角色及关联")
@PostMapping("copyRole") @PostMapping("copyRole")
public ApiResponseEntity<Void> copyRole(@RequestBody BaseIdDTO baseIdDTO) { public ApiResponseEntity<Void> copyRole(@RequestBody BaseIdDTO baseIdDTO) {
......
...@@ -70,7 +70,10 @@ public enum CodeMessageEnum { ...@@ -70,7 +70,10 @@ public enum CodeMessageEnum {
SYSTEM_ERROR_AUTH_USER_PASSWORD(500, "SYSTEM.ERROR.AUTH.USER.PASSWORD"), SYSTEM_ERROR_AUTH_USER_PASSWORD(500, "SYSTEM.ERROR.AUTH.USER.PASSWORD"),
SYSTEM_ERROR_AUTH_USER_OLD_PASSWORD(500, "SYSTEM.ERROR.AUTH.USER.OLD.PASSWORD"), SYSTEM_ERROR_AUTH_USER_OLD_PASSWORD(500, "SYSTEM.ERROR.AUTH.USER.OLD.PASSWORD"),
SYSTEM_ERROR_AUTH_USER_PAY_PASSWORD_BLANK(500, "SYSTEM.ERROR.AUTH.USER.PAY.PASSWORD.BLANK"), SYSTEM_ERROR_AUTH_USER_PAY_PASSWORD_BLANK(500, "SYSTEM.ERROR.AUTH.USER.PAY.PASSWORD.BLANK"),
SYSTEM_ERROR_WECHAT_USER_NOT_EXIST(520, "SYSTEM.ERROR.WECHAT.USER.NOT.EXIST"), SYSTEM_ERROR_WECHAT_USER_NOT_EXIST(520, "SYSTEM.ERROR.WECHAT.USER.NOT.EXIST"),
SYSTEM_ERROR_WECHAT_OPENID_NOT_EXIST(501, "SYSTEM.ERROR.WECHAT.OPENID.NOT.EXIST"),
SYSTEM_ERROR_AUTH_USER_MAIL_NOT_SET(500, "SYSTEM.ERROR.AUTH.USER.MAIL.NOT.SET"), SYSTEM_ERROR_AUTH_USER_MAIL_NOT_SET(500, "SYSTEM.ERROR.AUTH.USER.MAIL.NOT.SET"),
SYSTEM_ERROR_AUTH_USER_PASSWORD_NOT_EQUALS(500, "SYSTEM.ERROR.AUTH.USER.PASSWORD.NOT.EQUALS"), SYSTEM_ERROR_AUTH_USER_PASSWORD_NOT_EQUALS(500, "SYSTEM.ERROR.AUTH.USER.PASSWORD.NOT.EQUALS"),
...@@ -119,8 +122,8 @@ public enum CodeMessageEnum { ...@@ -119,8 +122,8 @@ public enum CodeMessageEnum {
SYSTEM_ERROR_ORG_FORBIDDEN(500, "SYSTEM.ERROR.ORG.FORBIDDEN"), SYSTEM_ERROR_ORG_FORBIDDEN(500, "SYSTEM.ERROR.ORG.FORBIDDEN"),
PLATFORM_ERROR_ALARM_NOT_FOUND_SPACE(500,"PLATFORM.ERROR.ALARM.NOT.FOUND.SPACE"), PLATFORM_ERROR_ALARM_NOT_FOUND_SPACE(500, "PLATFORM.ERROR.ALARM.NOT.FOUND.SPACE"),
PLATFORM_ERROR_ALARM_NOT_FOUND_ELDER(500,"PLATFORM.ERROR.ALARM.NOT.FOUND.ELDER"), PLATFORM_ERROR_ALARM_NOT_FOUND_ELDER(500, "PLATFORM.ERROR.ALARM.NOT.FOUND.ELDER"),
; ;
......
...@@ -104,6 +104,8 @@ public class RedisConst { ...@@ -104,6 +104,8 @@ public class RedisConst {
public static final String LOCK_ALARM = "lock:alarm:device:id:"; public static final String LOCK_ALARM = "lock:alarm:device:id:";
public static final String ALARM_HEALTH_CONFIG_PREFIX = "alarm:config:device:id:";
......
...@@ -60,7 +60,9 @@ public class ConfigConverter implements Converter<String> { ...@@ -60,7 +60,9 @@ public class ConfigConverter implements Converter<String> {
String s = Arrays.stream(cellData.getStringValue().split(dictEnumFormat.split())).filter(StringUtils::isNotBlank).map(m::get).filter(StringUtils::isNotBlank).collect(Collectors.joining(",")); String s = Arrays.stream(cellData.getStringValue().split(dictEnumFormat.split())).filter(StringUtils::isNotBlank).map(m::get).filter(StringUtils::isNotBlank).collect(Collectors.joining(","));
if (StringUtils.isBlank(s)) { if (StringUtils.isBlank(s)) {
s = ""; //s = "";
s = cellData.getStringValue();
} }
return s; return s;
...@@ -89,7 +91,10 @@ public class ConfigConverter implements Converter<String> { ...@@ -89,7 +91,10 @@ public class ConfigConverter implements Converter<String> {
String s = Arrays.stream(value.split(",")).filter(StringUtils::isNotBlank).map(m::get).filter(StringUtils::isNotBlank).collect(Collectors.joining(dictEnumFormat.split().substring(dictEnumFormat.split().length() - 1))); String s = Arrays.stream(value.split(",")).filter(StringUtils::isNotBlank).map(m::get).filter(StringUtils::isNotBlank).collect(Collectors.joining(dictEnumFormat.split().substring(dictEnumFormat.split().length() - 1)));
if (StringUtils.isBlank(s)) { if (StringUtils.isBlank(s)) {
s = ""; //s = "";
s = value;
} }
return new WriteCellData(s); return new WriteCellData(s);
......
...@@ -17,10 +17,10 @@ public class MsgSendUtil { ...@@ -17,10 +17,10 @@ public class MsgSendUtil {
* 发送消息 * 发送消息
*/ */
public void send(MsgSendDTO msgSendDTO){ public void send(MsgSendDTO msgSendDTO){
// for (IMsgSender msgSender : msgSenderList) { for (IMsgSender msgSender : msgSenderList) {
// if(msgSender.support(msgSendDTO.getSendTypeEnum())){ if(msgSender.support(msgSendDTO.getSendTypeEnum())){
// msgSender.send(msgSendDTO); msgSender.send(msgSendDTO);
// } }
// } }
} }
} }
...@@ -32,6 +32,10 @@ public class WechatUtil { ...@@ -32,6 +32,10 @@ public class WechatUtil {
userInfo.setOpenId(session.getOpenid()); userInfo.setOpenId(session.getOpenid());
userInfo.setUnionId(session.getUnionid()); userInfo.setUnionId(session.getUnionid());
if (StringUtils.isBlank(session.getOpenid())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_TOKEN_BLANK_OR_NOT_EXIST);
}
String phoneNumber = null; String phoneNumber = null;
if (StringUtils.isNotBlank(dto.getPhoneCode())) { if (StringUtils.isNotBlank(dto.getPhoneCode())) {
WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(dto.getPhoneCode()); WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(dto.getPhoneCode());
......
...@@ -71,6 +71,8 @@ SYSTEM.ERROR.AUTH.USER.PASSWORD.NOT.EQUALS=新密码与确认密码不一致 ...@@ -71,6 +71,8 @@ SYSTEM.ERROR.AUTH.USER.PASSWORD.NOT.EQUALS=新密码与确认密码不一致
SYSTEM.ERROR.WECHAT.USER.NOT.EXIST=该企微账号对应的用户不存在 SYSTEM.ERROR.WECHAT.USER.NOT.EXIST=该企微账号对应的用户不存在
SYSTEM.ERROR.WECHAT.OPENID.NOT.EXIST=openid获取失败,请重试
SYSTEM.ERROR.EXCEL.UPLOAD.EXIT=请上传excel SYSTEM.ERROR.EXCEL.UPLOAD.EXIT=请上传excel
SYSTEM.ERROR.EXCEL.NOT.DATA=请至少上传一条数据 SYSTEM.ERROR.EXCEL.NOT.DATA=请至少上传一条数据
SYSTEM.ERROR.EXCEL.MAX.LIMIT=最大上传%s条数据 SYSTEM.ERROR.EXCEL.MAX.LIMIT=最大上传%s条数据
......
...@@ -66,7 +66,7 @@ public class PlatDeviceController { ...@@ -66,7 +66,7 @@ public class PlatDeviceController {
@AuthIgnore @AuthIgnore
@TenantIdIgnore @TenantIdIgnore
public ApiResponseEntity<Void> iotSyncTask(@RequestBody BaseIdDTO baseIdDTO) { public ApiResponseEntity<Void> iotSyncTask(@RequestBody BaseIdDTO baseIdDTO) {
iotSyncTask.syncEquipmentInfo(); iotSyncTask.savePlatDevice();
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
......
package com.makeit.dto.platform.alarm;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
@Data
public class PlatHealthConfigDTO {
private String platElderId;
private Integer heartRateStart;
private Integer heartRateEnd;
private Integer heartDuration;
private String heartRateStr;
private Integer breathRateStart;
private Integer breathRateEnd;
private Integer breathDuration;
private String breathRateStr;
private boolean heartConfig = false;
private boolean breathConfig = false;
public boolean checkAndFillHeartConfig(){
if(StringUtils.isBlank(heartRateStr)){
return false;
}
if (heartDuration == null ||heartDuration == 0){
return false;
}
String[] split = heartRateStr.split("-");
if(split.length==2){
heartRateStart=Integer.valueOf(split[0]);
heartRateEnd=Integer.valueOf(split[1]);
}else {
return false;
}
heartConfig = true;
return true;
}
public boolean checkAndFillBreathConfig(){
if(StringUtils.isBlank(breathRateStr)){
return false;
}
if (breathDuration == null ||breathDuration == 0){
return false;
}
String[] split = breathRateStr.split("-");
if(split.length==2){
breathRateStart=Integer.valueOf(split[0]);
breathRateEnd=Integer.valueOf(split[1]);
}else {
return false;
}
breathConfig = true;
return true;
}
public PlatAlarmConfigHeartDTOVO getAlarmConfigHeartDTO(){
if(heartConfig){
PlatAlarmConfigHeartDTOVO dto = new PlatAlarmConfigHeartDTOVO();
dto.setHeartRateStart(heartRateStart);
dto.setHeartRateeEnd(heartRateEnd);
dto.setDuration(heartDuration);
return dto;
}
return null;
}
public PlatAlarmConfigRespiratoryDTOVO getAlarmConfigRespiratoryDTOVO(){
if(breathConfig){
PlatAlarmConfigRespiratoryDTOVO dto = new PlatAlarmConfigRespiratoryDTOVO();
dto.setRespiratoryRateStart(breathRateStart);
dto.setRespiratoryRateEnd(breathRateEnd);
dto.setDuration(breathDuration);
return dto;
}
return null;
}
}
package com.makeit.mapper.platform.alarm; package com.makeit.mapper.platform.alarm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.dto.platform.alarm.PlatHealthConfigDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig; import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import java.util.List;
/** /**
* <p> * <p>
* 告警配置 Mapper 接口 * 告警配置 Mapper 接口
...@@ -13,4 +16,9 @@ import com.makeit.entity.platform.alarm.PlatAlarmConfig; ...@@ -13,4 +16,9 @@ import com.makeit.entity.platform.alarm.PlatAlarmConfig;
*/ */
public interface PlatAlarmConfigMapper extends BaseMapper<PlatAlarmConfig> { public interface PlatAlarmConfigMapper extends BaseMapper<PlatAlarmConfig> {
/**
* 设备id 老人id 配置
* @return
*/
List<PlatHealthConfigDTO> getHealthConfigList();
} }
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.StatusDTO; import com.makeit.common.dto.StatusDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigDTOVO; import com.makeit.dto.platform.alarm.PlatAlarmConfigDTOVO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmConfigQueryDTO;
import com.makeit.dto.platform.alarm.PlatHealthConfigDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig; import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import com.makeit.entity.platform.auth.PlatOrg; import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.vo.platform.alarm.PlatAlarmConfigListVO; import com.makeit.vo.platform.alarm.PlatAlarmConfigListVO;
...@@ -38,4 +39,6 @@ public interface PlatAlarmConfigService extends IService<PlatAlarmConfig> { ...@@ -38,4 +39,6 @@ public interface PlatAlarmConfigService extends IService<PlatAlarmConfig> {
void copyForOrg(PlatOrg org); void copyForOrg(PlatOrg org);
List<PlatHealthConfigDTO> getHealthConfigList();
} }
...@@ -4,6 +4,7 @@ import cn.hutool.core.convert.Convert; ...@@ -4,6 +4,7 @@ import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO; import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigRespiratoryDTOVO; import com.makeit.dto.platform.alarm.PlatAlarmConfigRespiratoryDTOVO;
import com.makeit.dto.platform.alarm.PlatHealthConfigDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig; 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.device.PlatDevice; import com.makeit.entity.platform.device.PlatDevice;
...@@ -13,6 +14,7 @@ import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum; ...@@ -13,6 +14,7 @@ import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.enums.redis.RedisConst; import com.makeit.enums.redis.RedisConst;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.utils.AlarmRedisDTO; import com.makeit.utils.AlarmRedisDTO;
import com.makeit.utils.PersonalConfigCacheUtil;
import com.makeit.utils.data.convert.JsonUtil; import com.makeit.utils.data.convert.JsonUtil;
import com.makeit.utils.redis.RedisUtil; import com.makeit.utils.redis.RedisUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -33,6 +35,9 @@ public class BreathAlarm implements IAlarm { ...@@ -33,6 +35,9 @@ public class BreathAlarm implements IAlarm {
private final PlatAlarmConfigEnum.AlarmTypeEnum alarmTypeEnum = PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE; private final PlatAlarmConfigEnum.AlarmTypeEnum alarmTypeEnum = PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE;
@Autowired
private PersonalConfigCacheUtil personalConfigCacheUtil;
@Override @Override
public boolean support(String alarmType) { public boolean support(String alarmType) {
return StringUtils.equals(alarmType, alarmTypeEnum.getValue()); return StringUtils.equals(alarmType, alarmTypeEnum.getValue());
...@@ -50,23 +55,41 @@ public class BreathAlarm implements IAlarm { ...@@ -50,23 +55,41 @@ public class BreathAlarm implements IAlarm {
@Override @Override
public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) { public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) {
//todo 获取老人健康的阈值 //todo 获取老人健康的阈值
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if(CollectionUtils.isEmpty(platElderList)){
log.error("呼吸设备未关联长者,设备plat_id:" + platAlarmCheckDTO.getPlatDevice().getId());
return;
}
PlatElder platElder = platElderList.get(0);
PlatHealthConfigDTO platHealthConfigDTO = personalConfigCacheUtil.get(platElder.getId());
PlatAlarmConfigRespiratoryDTOVO ruleConfig;
if(platHealthConfigDTO != null && platHealthConfigDTO.isBreathConfig()){
ruleConfig = platHealthConfigDTO.getAlarmConfigRespiratoryDTOVO();
}else {
PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig(); PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig();
String ruleConfigStr = config.getRuleConfig(); String ruleConfigStr = config.getRuleConfig();
JSONObject properties = platAlarmCheckDTO.getProperties();
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) { if (StringUtils.isBlank(ruleConfigStr)) {
log.error("呼吸告警配置未配置,告警配置id:" + config.getId()); log.error("呼吸告警配置未配置,告警配置id:" + config.getId());
return; return;
} }
String personState = Convert.toStr(properties.get("personState")); ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigRespiratoryDTOVO.class);
}
//呼吸率
int br = (int) properties.get("br");
PlatAlarmConfigRespiratoryDTOVO ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigRespiratoryDTOVO.class);
Integer start = ruleConfig.getRespiratoryRateStart(); Integer start = ruleConfig.getRespiratoryRateStart();
Integer end = ruleConfig.getRespiratoryRateEnd(); Integer end = ruleConfig.getRespiratoryRateEnd();
Integer duration = ruleConfig.getDuration(); Integer duration = ruleConfig.getDuration();
JSONObject properties = platAlarmCheckDTO.getProperties();
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
String personState = Convert.toStr(properties.get("personState"));
//呼吸率
int br = (int) properties.get("br");
Date now = new Date(); Date now = new Date();
long endLong = now.getTime(); long endLong = now.getTime();
//计数 //计数
......
...@@ -47,16 +47,24 @@ public class FallAlarm implements IAlarm { ...@@ -47,16 +47,24 @@ public class FallAlarm implements IAlarm {
String deviceId = platDevice.getOriDeviceId(); String deviceId = platDevice.getOriDeviceId();
String personState = Convert.toStr(properties.get("personState")); String personState = Convert.toStr(properties.get("personState"));
AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_FALL_ID + deviceId); AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_FALL_ID + deviceId);
if(alarmRedisDTO==null){
alarmRedisDTO = new AlarmRedisDTO();
alarmRedisDTO.setAlarm(CommonEnum.NO.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_FALL_ID+ deviceId, alarmRedisDTO);
}
if (StringUtils.equals(personState, CommonEnum.YES.getValue())) { if (StringUtils.equals(personState, CommonEnum.YES.getValue())) {
if (StringUtils.equals(alarmRedisDTO.getAlarm(),CommonEnum.YES.getValue())){ if (StringUtils.equals(alarmRedisDTO.getAlarm(),CommonEnum.YES.getValue())){
log.error("长者跌倒,已告警过,设备iot_id:"+deviceId); log.error("长者跌倒,已告警过,设备iot_id:"+deviceId);
return;
} }
notice(platAlarmCheckDTO); notice(platAlarmCheckDTO);
alarmRedisDTO.setAlarm(CommonEnum.YES.getValue()); alarmRedisDTO.setAlarm(CommonEnum.YES.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_FALL_ID, alarmRedisDTO); RedisUtil.set(RedisConst.ALARM_DEVICE_FALL_ID+ deviceId, alarmRedisDTO);
} else { } else {
if(StringUtils.equals(alarmRedisDTO.getAlarm(),CommonEnum.YES.getValue())) {
alarmRedisDTO.setAlarm(CommonEnum.NO.getValue()); alarmRedisDTO.setAlarm(CommonEnum.NO.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_FALL_ID, alarmRedisDTO); RedisUtil.set(RedisConst.ALARM_DEVICE_FALL_ID+ deviceId, alarmRedisDTO);
}
} }
} }
......
...@@ -4,6 +4,7 @@ import cn.hutool.core.convert.Convert; ...@@ -4,6 +4,7 @@ import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO; import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigHeartDTOVO; import com.makeit.dto.platform.alarm.PlatAlarmConfigHeartDTOVO;
import com.makeit.dto.platform.alarm.PlatHealthConfigDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig; 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.device.PlatDevice; import com.makeit.entity.platform.device.PlatDevice;
...@@ -14,6 +15,7 @@ import com.makeit.enums.redis.RedisConst; ...@@ -14,6 +15,7 @@ import com.makeit.enums.redis.RedisConst;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.utils.AlarmRedisDTO; import com.makeit.utils.AlarmRedisDTO;
import com.makeit.utils.PersonalConfigCacheUtil;
import com.makeit.utils.data.convert.JsonUtil; import com.makeit.utils.data.convert.JsonUtil;
import com.makeit.utils.redis.RedisUtil; import com.makeit.utils.redis.RedisUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -34,6 +36,9 @@ public class HeartAlarm implements IAlarm { ...@@ -34,6 +36,9 @@ public class HeartAlarm implements IAlarm {
private final PlatAlarmConfigEnum.AlarmTypeEnum alarmTypeEnum = PlatAlarmConfigEnum.AlarmTypeEnum.HEART; private final PlatAlarmConfigEnum.AlarmTypeEnum alarmTypeEnum = PlatAlarmConfigEnum.AlarmTypeEnum.HEART;
@Autowired
private PersonalConfigCacheUtil personalConfigCacheUtil;
@Override @Override
public boolean support(String alarmType) { public boolean support(String alarmType) {
return StringUtils.equals(alarmType, alarmTypeEnum.getValue()); return StringUtils.equals(alarmType, alarmTypeEnum.getValue());
...@@ -42,28 +47,43 @@ public class HeartAlarm implements IAlarm { ...@@ -42,28 +47,43 @@ public class HeartAlarm implements IAlarm {
@Override @Override
public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) { public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) {
//todo 获取老人健康的阈值 //todo 获取老人健康的阈值
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if(CollectionUtils.isEmpty(platElderList)){
log.error("心率设备未关联长者,设备plat_id:" + platAlarmCheckDTO.getPlatDevice().getId());
return;
}
PlatElder platElder = platElderList.get(0);
PlatHealthConfigDTO platHealthConfigDTO = personalConfigCacheUtil.get(platElder.getId());
PlatAlarmConfigHeartDTOVO ruleConfig;
if(platHealthConfigDTO != null && platHealthConfigDTO.isHeartConfig()){
ruleConfig = platHealthConfigDTO.getAlarmConfigHeartDTO();
}else {
PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig(); PlatAlarmConfig config = platAlarmCheckDTO.getPlatAlarmConfig();
String ruleConfigStr = config.getRuleConfig(); String ruleConfigStr = config.getRuleConfig();
JSONObject properties = platAlarmCheckDTO.getProperties();
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) { if (StringUtils.isBlank(ruleConfigStr)) {
log.error("心率告警配置未配置,告警配置id:" + config.getId()); log.error("心率告警配置未配置,告警配置id:" + config.getId());
return; return;
} }
String personState = Convert.toStr(properties.get("personState")); ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigHeartDTOVO.class);
//心率
int hr = (int) properties.get("hr"); }
PlatAlarmConfigHeartDTOVO ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigHeartDTOVO.class);
JSONObject properties = platAlarmCheckDTO.getProperties();
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
Integer start = ruleConfig.getHeartRateStart(); Integer start = ruleConfig.getHeartRateStart();
Integer end = ruleConfig.getHeartRateeEnd(); Integer end = ruleConfig.getHeartRateeEnd();
Integer duration = ruleConfig.getDuration(); Integer duration = ruleConfig.getDuration();
String personState = Convert.toStr(properties.get("personState"));
//心率
int hr = (int) properties.get("hr");
Date now = new Date(); Date now = new Date();
long endLong = now.getTime(); long endLong = now.getTime();
//计数 //计数
AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_HR_ID + deviceId); AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_HR_ID + deviceId);
if (StringUtils.equals(personState, CommonEnum.NO.getValue())) { if (StringUtils.equalsAny(personState, CommonEnum.NO.getValue(),"3")) {
RedisUtil.delete(RedisConst.ALARM_DEVICE_HR_ID + deviceId); RedisUtil.delete(RedisConst.ALARM_DEVICE_HR_ID + deviceId);
return; return;
} }
......
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.dto.StatusDTO; import com.makeit.common.dto.StatusDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigDTOVO; import com.makeit.dto.platform.alarm.PlatAlarmConfigDTOVO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmConfigQueryDTO;
import com.makeit.dto.platform.alarm.PlatHealthConfigDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig; import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import com.makeit.entity.platform.auth.PlatOrg; import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.entity.platform.auth.PlatUser; import com.makeit.entity.platform.auth.PlatUser;
...@@ -91,7 +92,8 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe ...@@ -91,7 +92,8 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe
updateById(alarmConfig); updateById(alarmConfig);
alarmConfigUtil.put(alarmConfig); PlatAlarmConfig entity = getById(dto.getId());
alarmConfigUtil.put(entity);
} }
...@@ -102,7 +104,8 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe ...@@ -102,7 +104,8 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe
PlatAlarmConfig alarmConfig = BeanDtoVoUtils.convert(dto, PlatAlarmConfig.class); PlatAlarmConfig alarmConfig = BeanDtoVoUtils.convert(dto, PlatAlarmConfig.class);
updateById(alarmConfig); updateById(alarmConfig);
alarmConfigUtil.put(alarmConfig); PlatAlarmConfig entity = getById(dto.getId());
alarmConfigUtil.put(entity);
} }
...@@ -212,4 +215,8 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe ...@@ -212,4 +215,8 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe
alarmConfigUtil.putAll(configList); alarmConfigUtil.putAll(configList);
} }
@Override
public List<PlatHealthConfigDTO> getHealthConfigList() {
return baseMapper.getHealthConfigList();
}
} }
...@@ -356,6 +356,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -356,6 +356,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
@Override @Override
@TenantIdIgnore @TenantIdIgnore
public void getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO) { public void getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO) {
if(CollectionUtils.isNotEmpty(platAlarmCheckDTO.getPlatElderList())){
return;
}
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice(); PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String tenantId = platDevice.getTenantId(); String tenantId = platDevice.getTenantId();
LambdaQueryWrapper<PlatRoomBedDevice> roomBedDeviceLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatRoomBedDevice> roomBedDeviceLambdaQueryWrapper = new LambdaQueryWrapper<>();
......
...@@ -307,7 +307,7 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -307,7 +307,7 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
public void edit(PlatOrg dto) { public void edit(PlatOrg dto) {
check(dto); check(dto);
PlatOrg platOrg = this.getById(dto.getId()); PlatOrg platOrg = this.getById(dto.getId());
if (StringUtils.isBlank(dto.getParentId())||StringUtils.equals(dto.getParentId(),"1")) { if (StringUtils.isBlank(dto.getParentId())||StringUtils.equals(dto.getParentId(),TreeConst.TOP_LEVEL)) {
} else { } else {
PlatOrg parent = getById(dto.getParentId()); PlatOrg parent = getById(dto.getParentId());
dto.setPath(parent.getPath() + "," + parent.getId()); dto.setPath(parent.getPath() + "," + parent.getId());
...@@ -316,7 +316,9 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -316,7 +316,9 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
if(!StringUtils.equals(dto.getType(),platOrg.getType())){ if(!StringUtils.equals(dto.getType(),platOrg.getType())){
LambdaUpdateWrapper<PlatSpace> platSpaceLambdaUpdateWrapper = Wrappers.lambdaUpdate(PlatSpace.class) LambdaUpdateWrapper<PlatSpace> platSpaceLambdaUpdateWrapper = Wrappers.lambdaUpdate(PlatSpace.class)
.set(PlatSpace::getAttribute, dto.getType()) .set(PlatSpace::getAttribute, dto.getType())
.eq(PlatSpace::getOrgId, dto.getId()); .eq(PlatSpace::getOrgId, dto.getId())
.set(PlatSpace::getParentId,dto.getParentId())
;
platSpaceService.update(platSpaceLambdaUpdateWrapper); platSpaceService.update(platSpaceLambdaUpdateWrapper);
} }
......
...@@ -427,8 +427,11 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser> ...@@ -427,8 +427,11 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
} }
String path = platOrg.getPath(); String path = platOrg.getPath();
String[] split = StringUtils.split(path, ","); String[] split = StringUtils.split(path, ",");
ArrayList<String> orgIdList = new ArrayList<>();
orgIdList.addAll(Arrays.asList(split));
orgIdList.add(orgId);
LambdaQueryWrapper<PlatOrg> platOrgLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatOrg> platOrgLambdaQueryWrapper = new LambdaQueryWrapper<>();
platOrgLambdaQueryWrapper.in(BaseEntity::getId, split) platOrgLambdaQueryWrapper.in(BaseEntity::getId, orgIdList)
.eq(PlatOrg::getStatus, CommonEnum.NO.getValue()); .eq(PlatOrg::getStatus, CommonEnum.NO.getValue());
long count = platOrgService.count(platOrgLambdaQueryWrapper); long count = platOrgService.count(platOrgLambdaQueryWrapper);
if (count > 0) { if (count > 0) {
......
...@@ -367,15 +367,15 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek ...@@ -367,15 +367,15 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
String finalDeviceId = deviceId; String finalDeviceId = deviceId;
String finalOriDeviceId = oriDeviceId; String finalOriDeviceId = oriDeviceId;
lambdaQueryWrapper.and(qw -> { lambdaQueryWrapper.and(StringUtils.isNotBlank(platElderIdDTO.getElderId()) || StringUtils.isNotBlank(finalDeviceId) || StringUtils.isNotBlank(finalOriDeviceId), qw -> {
if (StringUtils.isNotBlank(platElderIdDTO.getElderId())) { if (StringUtils.isNotBlank(platElderIdDTO.getElderId())) {
lambdaQueryWrapper.eq(PlatElderBreatheDayStat::getElderId, platElderIdDTO.getElderId()); qw.eq(PlatElderBreatheDayStat::getElderId, platElderIdDTO.getElderId());
} }
if (StringUtils.isNotBlank(finalDeviceId)) { if (StringUtils.isNotBlank(finalDeviceId)) {
lambdaQueryWrapper.or().eq(PlatElderBreatheDayStat::getDeviceId, finalDeviceId); qw.or().eq(PlatElderBreatheDayStat::getDeviceId, finalDeviceId);
} }
if (StringUtils.isNotBlank(finalOriDeviceId)) { if (StringUtils.isNotBlank(finalOriDeviceId)) {
lambdaQueryWrapper.or().eq(PlatElderBreatheDayStat::getOriDeviceId, finalOriDeviceId); qw.or().eq(PlatElderBreatheDayStat::getOriDeviceId, finalOriDeviceId);
} }
}); });
......
...@@ -37,6 +37,7 @@ import com.makeit.service.platform.space.PlatBedService; ...@@ -37,6 +37,7 @@ import com.makeit.service.platform.space.PlatBedService;
import com.makeit.service.platform.space.PlatRoomBedDeviceService; import com.makeit.service.platform.space.PlatRoomBedDeviceService;
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.utils.PersonalConfigCacheUtil;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil; import com.makeit.utils.data.convert.PageUtil;
import com.makeit.utils.data.convert.StreamUtil; import com.makeit.utils.data.convert.StreamUtil;
...@@ -103,6 +104,9 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -103,6 +104,9 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
@Autowired @Autowired
private PlatRoomBedDeviceService platRoomBedDeviceService; private PlatRoomBedDeviceService platRoomBedDeviceService;
@Autowired
private PersonalConfigCacheUtil personalConfigCacheUtil;
private LambdaQueryWrapper<PlatElder> lambdaQueryWrapper(PlatElderQueryDTO dto) { private LambdaQueryWrapper<PlatElder> lambdaQueryWrapper(PlatElderQueryDTO dto) {
return new QueryWrapper<PlatElder>().lambda() return new QueryWrapper<PlatElder>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), PlatElder::getName, dto.getName()) .like(StringUtils.isNotBlank(dto.getName()), PlatElder::getName, dto.getName())
...@@ -258,6 +262,12 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -258,6 +262,12 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
List<TreeDTOVO> treeList = BeanDtoVoUtils.listVo(spaceList, TreeDTOVO.class); List<TreeDTOVO> treeList = BeanDtoVoUtils.listVo(spaceList, TreeDTOVO.class);
treeList.forEach(e->{
if(StringUtils.isBlank(e.getParentId())){
e.setParentId(TreeConst.TOP_LEVEL);
}
});
List<PlatRoom> roomList = platRoomService.list(new QueryWrapper<PlatRoom>().lambda() List<PlatRoom> roomList = platRoomService.list(new QueryWrapper<PlatRoom>().lambda()
.in(PlatRoom::getName, spaceNameList)); .in(PlatRoom::getName, spaceNameList));
...@@ -418,7 +428,7 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -418,7 +428,7 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
spaceIdList = new ArrayList<>(10); spaceIdList = new ArrayList<>(10);
spaceIdList.add(lastSpaceId); spaceIdList.add(lastSpaceId);
for (int j = 0; j <= 2; j++) { for (int j = 0; j <= 1; j++) {
String id = null; String id = null;
Map<String, TreeDTOVO> nameAreaMap = parentIdName.get(spaceIdList.get(j)); Map<String, TreeDTOVO> nameAreaMap = parentIdName.get(spaceIdList.get(j));
...@@ -614,6 +624,10 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -614,6 +624,10 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
platElderHealthInfoService.saveOrUpdate(healthInfo); platElderHealthInfoService.saveOrUpdate(healthInfo);
personalConfigCacheUtil.put(healthInfo);
PlatElderOtherInfo otherInfo = platElderOtherInfoService.getOne(new QueryWrapper<PlatElderOtherInfo>().lambda() PlatElderOtherInfo otherInfo = platElderOtherInfoService.getOne(new QueryWrapper<PlatElderOtherInfo>().lambda()
.eq(PlatElderOtherInfo::getElderId, dto.getId())); .eq(PlatElderOtherInfo::getElderId, dto.getId()));
if (otherInfo == null) { if (otherInfo == null) {
...@@ -786,7 +800,7 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -786,7 +800,7 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
platBedService.changeStatus(statusDTO); platBedService.changeStatus(statusDTO);
if (CommonEnum.YES.getValue().equals(dto.getDelRoomStatus())) { if (CommonEnum.YES.getValue().equals(dto.getDelRoomStatus())) {
platRoomService.delCascade(Arrays.asList(platBedService.getById(db.getBedId()).getRoomId())); platRoomService.delCascade(Arrays.asList(platBedService.getById(bedId).getRoomId()));
} }
} }
......
...@@ -116,6 +116,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -116,6 +116,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
int sleepDeepActionThreshold = Integer.parseInt(analysisModel.getSleepDeepActionThreshold()); int sleepDeepActionThreshold = Integer.parseInt(analysisModel.getSleepDeepActionThreshold());
int sleepDeepActionTimeBegin = Integer.parseInt(analysisModel.getSleepDeepActionTimeBegin()); int sleepDeepActionTimeBegin = Integer.parseInt(analysisModel.getSleepDeepActionTimeBegin());
int sleepDeepBreatheMin = Integer.parseInt(analysisModel.getSleepDeepBreatheMin()); int sleepDeepBreatheMin = Integer.parseInt(analysisModel.getSleepDeepBreatheMin());
int sleepDeepBreatheMax = Integer.parseInt(analysisModel.getSleepDeepBreatheMax()); int sleepDeepBreatheMax = Integer.parseInt(analysisModel.getSleepDeepBreatheMax());
...@@ -143,6 +144,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -143,6 +144,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
continue; continue;
} }
String tenantId = elder.getTenantId(); String tenantId = elder.getTenantId();
String reportStartTime = "";
String reportEndTime = "";
for (String hourRange : dayHourRangeList) { for (String hourRange : dayHourRangeList) {
String[] hourRangeArray = hourRange.split("~"); String[] hourRangeArray = hourRange.split("~");
List<DeviceOperationLogEntity> deviceOperationLogEntities = productDeviceService.getDeviceLogByTimeRange(platRoomBedDevice.getDeviceId(), "reportProperty", 5000, hourRangeArray[0], hourRangeArray[1]); List<DeviceOperationLogEntity> deviceOperationLogEntities = productDeviceService.getDeviceLogByTimeRange(platRoomBedDevice.getDeviceId(), "reportProperty", 5000, hourRangeArray[0], hourRangeArray[1]);
...@@ -163,7 +166,13 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -163,7 +166,13 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
List<DeviceInfoContentBreathe> deviceInfoContentBreathes; List<DeviceInfoContentBreathe> deviceInfoContentBreathes;
// 统计每小时的体动和翻身 // 统计每小时的体动和翻身
Map<String, AnalysisVO> statisticsMap = Maps.newHashMap(); Map<String, AnalysisVO> statisticsMap = Maps.newHashMap();
for (Map.Entry<String, List<DeviceInfoContentBreathe>> entry : minuteMap.entrySet()) { for (Map.Entry<String, List<DeviceInfoContentBreathe>> entry : minuteMap.entrySet()) {
if (StringUtils.isEmpty(reportStartTime)) {
reportStartTime = entry.getKey();
}
reportEndTime = entry.getKey();
deviceInfoContentBreathes = entry.getValue(); deviceInfoContentBreathes = entry.getValue();
DeviceInfoContentBreathe.Properties breatheProperties; DeviceInfoContentBreathe.Properties breatheProperties;
Integer bodymove; Integer bodymove;
...@@ -453,12 +462,19 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -453,12 +462,19 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
} }
int timeHourRange = 24;
if (StringUtils.isNotEmpty(reportStartTime) && StringUtils.isNotEmpty(reportEndTime)) {
Long durationRange = getDurationRange(reportStartTime, reportEndTime);
timeHourRange = (int) (durationRange / 60);
}
// 判断是否满足配置的呼吸心率异常类型 // 判断是否满足配置的呼吸心率异常类型
BigDecimal dayBrStopRate = brStopCount == 0 ? BigDecimal.ZERO : new BigDecimal(24).divide(new BigDecimal(brStopCount), 2, RoundingMode.HALF_UP); BigDecimal dayBrStopRate = brStopCount == 0 ? BigDecimal.ZERO : new BigDecimal(timeHourRange).divide(new BigDecimal(brStopCount), 2, RoundingMode.HALF_UP);
BigDecimal dayBrSlowRate = brSlowCount == 0 ? BigDecimal.ZERO : new BigDecimal(24).divide(new BigDecimal(brSlowCount), 2, RoundingMode.HALF_UP); BigDecimal dayBrSlowRate = brSlowCount == 0 ? BigDecimal.ZERO : new BigDecimal(timeHourRange).divide(new BigDecimal(brSlowCount), 2, RoundingMode.HALF_UP);
BigDecimal dayBrFastRate = brFastCount == 0 ? BigDecimal.ZERO : new BigDecimal(24).divide(new BigDecimal(brFastCount), 2, RoundingMode.HALF_UP); BigDecimal dayBrFastRate = brFastCount == 0 ? BigDecimal.ZERO : new BigDecimal(timeHourRange).divide(new BigDecimal(brFastCount), 2, RoundingMode.HALF_UP);
BigDecimal dayHrFastRate = hrFastCount == 0 ? BigDecimal.ZERO : new BigDecimal(24).divide(new BigDecimal(hrFastCount), 2, RoundingMode.HALF_UP); BigDecimal dayHrFastRate = hrFastCount == 0 ? BigDecimal.ZERO : new BigDecimal(timeHourRange).divide(new BigDecimal(hrFastCount), 2, RoundingMode.HALF_UP);
BigDecimal dayHrSlowRate = hrSlowCount == 0 ? BigDecimal.ZERO : new BigDecimal(24).divide(new BigDecimal(hrSlowCount), 2, RoundingMode.HALF_UP); BigDecimal dayHrSlowRate = hrSlowCount == 0 ? BigDecimal.ZERO : new BigDecimal(timeHourRange).divide(new BigDecimal(hrSlowCount), 2, RoundingMode.HALF_UP);
boolean brStopFlag = false; boolean brStopFlag = false;
boolean brFastFlag = false; boolean brFastFlag = false;
...@@ -537,8 +553,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -537,8 +553,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
// 插入呼吸分析表 // 插入呼吸分析表
PlatElderBreatheAnalysis platElderBreatheAnalysis = new PlatElderBreatheAnalysis(); PlatElderBreatheAnalysis platElderBreatheAnalysis = new PlatElderBreatheAnalysis();
platElderBreatheAnalysis.setElderId(elder.getId()); platElderBreatheAnalysis.setElderId(elder.getId());
platElderBreatheAnalysis.setAvgBreatheRate(String.valueOf(dayTotalBr / 86400)); platElderBreatheAnalysis.setAvgBreatheRate(String.valueOf(dayTotalBr / (timeHourRange * 60 * 60)));
platElderBreatheAnalysis.setAvgHeartRate(String.valueOf(dayTotalHr / 86400)); platElderBreatheAnalysis.setAvgHeartRate(String.valueOf(dayTotalHr / (timeHourRange * 60 * 60)));
platElderBreatheAnalysis.setBreatheScore(finalReport.getScore()); platElderBreatheAnalysis.setBreatheScore(finalReport.getScore());
platElderBreatheAnalysis.setHappenDate(currentDate); platElderBreatheAnalysis.setHappenDate(currentDate);
platElderBreatheAnalysis.setTenantId(tenantId); platElderBreatheAnalysis.setTenantId(tenantId);
...@@ -681,7 +697,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -681,7 +697,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
String startSleepMidTime = null; // 入睡时间开始 String startSleepMidTime = null; // 入睡时间开始
for (Map.Entry<String, AnalysisVO> entry : totalMap.entrySet()) { for (Map.Entry<String, AnalysisVO> entry : totalMap.entrySet()) {
AnalysisVO analysisVO = entry.getValue(); AnalysisVO analysisVO = entry.getValue();
if (analysisVO.getActionCount() < sleepDeepActionThreshold && analysisVO.getTurnedCount() < sleepDeepActionThreshold) { if (analysisVO.getActionCount() < sleepModerateActionThreshold && analysisVO.getTurnedCount() < sleepModerateActionThreshold) {
if (StringUtils.isEmpty(startSleepMidTime)) { if (StringUtils.isEmpty(startSleepMidTime)) {
startSleepMidTime = entry.getKey(); startSleepMidTime = entry.getKey();
} }
...@@ -691,7 +707,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -691,7 +707,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
if (StringUtils.isEmpty(startSleepMidTime) && sleepMidMinute == 0) { if (StringUtils.isEmpty(startSleepMidTime) && sleepMidMinute == 0) {
continue; continue;
} }
if (sleepMidMinute > sleepDeepActionTimeBegin) { if (sleepMidMinute > sleepModerateActionTimeBegin) {
sleepTimeAnalysisVO = new SleepTimeAnalysisVO(); sleepTimeAnalysisVO = new SleepTimeAnalysisVO();
sleepTimeAnalysisVO.setStartTime(startSleepMidTime); sleepTimeAnalysisVO.setStartTime(startSleepMidTime);
sleepTimeAnalysisVO.setEndTime(entry.getKey()); sleepTimeAnalysisVO.setEndTime(entry.getKey());
...@@ -951,7 +967,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -951,7 +967,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
elderSleepAnalysis.setActionCount(totalActionCount); elderSleepAnalysis.setActionCount(totalActionCount);
elderSleepAnalysis.setTurnedCount(totalTurnedCount); elderSleepAnalysis.setTurnedCount(totalTurnedCount);
elderSleepAnalysis.setHappenDate(currentDate); elderSleepAnalysis.setHappenDate(currentDate);
elderSleepAnalysis.setSleepScore(sleepReport.getResult()); elderSleepAnalysis.setSleepScore(String.valueOf(totalScore));
elderSleepAnalysis.setSleepTime(String.valueOf(sleepTime)); elderSleepAnalysis.setSleepTime(String.valueOf(sleepTime));
int minuteDay = 24 * 60; int minuteDay = 24 * 60;
// TODO 休息时间 先用一天时间 - 睡觉时间 // TODO 休息时间 先用一天时间 - 睡觉时间
......
...@@ -86,7 +86,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM ...@@ -86,7 +86,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
LambdaQueryWrapper<PlatRoomBedDevice> queryWrapper1 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatRoomBedDevice> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.select(PlatRoomBedDevice::getDeviceId); queryWrapper1.select(PlatRoomBedDevice::getDeviceId);
if (StringUtil.isNotEmpty(dto.getRoomId())) { if (StringUtil.isNotEmpty(dto.getRoomId())) {
queryWrapper1.ne(PlatRoomBedDevice::getRoomId, dto.getRoomId()); queryWrapper1.eq(PlatRoomBedDevice::getRoomId, dto.getRoomId());
} }
if (CommonEnum.NO.getValue().equals(dto.getIsRoom())) { if (CommonEnum.NO.getValue().equals(dto.getIsRoom())) {
queryWrapper1.isNotNull(PlatRoomBedDevice::getBedId); queryWrapper1.isNotNull(PlatRoomBedDevice::getBedId);
...@@ -94,7 +94,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM ...@@ -94,7 +94,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
List<PlatRoomBedDevice> list = list(queryWrapper1); List<PlatRoomBedDevice> list = list(queryWrapper1);
List<String> listEquipmentIds = list.stream().map(item -> item.getDeviceId()).collect(Collectors.toList()); List<String> listEquipmentIds = list.stream().map(item -> item.getDeviceId()).collect(Collectors.toList());
String orgId = null; String orgId = "";
if(StringUtil.isNotEmpty(dto.getRoomId())){ if(StringUtil.isNotEmpty(dto.getRoomId())){
PlatRoom platRoom = platRoomService.getById(dto.getRoomId()); PlatRoom platRoom = platRoomService.getById(dto.getRoomId());
PlatSpace platSpace = platSpaceService.getById(platRoom.getSpaceId()); PlatSpace platSpace = platSpaceService.getById(platRoom.getSpaceId());
...@@ -110,7 +110,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM ...@@ -110,7 +110,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
queryWrapper.like(StringUtil.isNotEmpty(dto.getName()), PlatDevice::getName, dto.getName()); queryWrapper.like(StringUtil.isNotEmpty(dto.getName()), PlatDevice::getName, dto.getName());
queryWrapper.like(StringUtil.isNotEmpty(dto.getProductName()), PlatDevice::getProductName, dto.getProductName()); queryWrapper.like(StringUtil.isNotEmpty(dto.getProductName()), PlatDevice::getProductName, dto.getProductName());
queryWrapper.eq(StringUtil.isNotEmpty(dto.getStatus()), PlatDevice::getStatus, dto.getStatus()); queryWrapper.eq(StringUtil.isNotEmpty(dto.getStatus()), PlatDevice::getStatus, dto.getStatus());
queryWrapper.eq(StringUtil.isNotEmpty(orgId),PlatDevice::getOrgId,orgId); queryWrapper.eq(PlatDevice::getOrgId,orgId);
Page<PlatDevice> pages = platDeviceService.page(p, queryWrapper); Page<PlatDevice> pages = platDeviceService.page(p, queryWrapper);
List<PlatDeviceDTO> listRecord = BeanDtoVoUtils.listVo(pages.getRecords(), PlatDeviceDTO.class); List<PlatDeviceDTO> listRecord = BeanDtoVoUtils.listVo(pages.getRecords(), PlatDeviceDTO.class);
......
...@@ -53,9 +53,13 @@ public class IotSyncTask { ...@@ -53,9 +53,13 @@ public class IotSyncTask {
* 启用状态的租户才同步 * 启用状态的租户才同步
* 新增和更新平台端设备表 * 新增和更新平台端设备表
*/ */
//@Scheduled(cron = "0 0 */1 * * ?") @Scheduled(cron = "0 0 */1 * * ?")
@TenantIdIgnore
public void syncEquipmentInfo() { public void syncEquipmentInfo() {
savePlatDevice();
}
public void savePlatDevice(){
log.info("开始执行同步设备信息接口"); log.info("开始执行同步设备信息接口");
LambdaQueryWrapper<PlatTenant> tenantLambdaQueryWrapper = new LambdaQueryWrapper<PlatTenant>().eq(PlatTenant::getStatus, CommonEnum.YES.getValue()); LambdaQueryWrapper<PlatTenant> tenantLambdaQueryWrapper = new LambdaQueryWrapper<PlatTenant>().eq(PlatTenant::getStatus, CommonEnum.YES.getValue());
List<PlatTenant> platTenants = platTenantService.list(tenantLambdaQueryWrapper); List<PlatTenant> platTenants = platTenantService.list(tenantLambdaQueryWrapper);
...@@ -91,15 +95,6 @@ public class IotSyncTask { ...@@ -91,15 +95,6 @@ public class IotSyncTask {
} }
@Scheduled(cron = "0 0 */1 * * ?")
public void syncDeviceLog() {
log.info("开始同步设备日志");
log.info("同步设备日志结束");
}
private Collection<PlatDevice> convertToPlatDevice(List<DeviceInstanceEntity> iotDeviceList, List<PlatDevice> deviceList, String tenantId, Map<String, String> dicNameIdMap) { private Collection<PlatDevice> convertToPlatDevice(List<DeviceInstanceEntity> iotDeviceList, List<PlatDevice> deviceList, String tenantId, Map<String, String> dicNameIdMap) {
Map<String, PlatDevice> deviceMap = deviceList.stream().collect(Collectors.toMap(PlatDevice::getOriDeviceId, v -> v, (a, b) -> a)); Map<String, PlatDevice> deviceMap = deviceList.stream().collect(Collectors.toMap(PlatDevice::getOriDeviceId, v -> v, (a, b) -> a));
iotDeviceList.forEach(iotDevice -> { iotDeviceList.forEach(iotDevice -> {
......
package com.makeit.utils;
import com.makeit.dto.platform.alarm.PlatHealthConfigDTO;
import com.makeit.entity.platform.elder.PlatElderHealthInfo;
import com.makeit.enums.redis.RedisConst;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.global.aspect.tenant.TenantIdIgnoreUtil;
import com.makeit.service.platform.alarm.PlatAlarmConfigService;
import com.makeit.utils.redis.RedisUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class PersonalConfigCacheUtil implements ApplicationRunner {
@Autowired
private PlatAlarmConfigService platAlarmConfigService;
/**
* 设备id
* @return
*/
public List<PlatHealthConfigDTO> getAll() {
return TenantIdIgnoreUtil.execute(()->{
List<PlatHealthConfigDTO> list = platAlarmConfigService.getHealthConfigList();
list.forEach(vo->{
put(vo);
});
return list;
});
}
public void put(PlatHealthConfigDTO dto) {
boolean checkAndFillHeartConfig = dto.checkAndFillHeartConfig();
boolean checkAndFillBreathConfig = dto.checkAndFillBreathConfig();
if(!checkAndFillHeartConfig&&!checkAndFillBreathConfig){
RedisUtil.delete(RedisConst.ALARM_HEALTH_CONFIG_PREFIX +":"+ dto.getPlatElderId());
}else {
RedisUtil.set(RedisConst.ALARM_HEALTH_CONFIG_PREFIX + ":"+dto.getPlatElderId(), dto);
}
}
public PlatHealthConfigDTO get(String platElderId) {
PlatHealthConfigDTO dto = RedisUtil.get(RedisConst.ALARM_HEALTH_CONFIG_PREFIX +":"+ platElderId);
return dto;
}
@Override
@TenantIdIgnore
public void run(ApplicationArguments args) throws Exception {
getAll();
}
public void put(PlatElderHealthInfo entity){
PlatHealthConfigDTO dto = new PlatHealthConfigDTO();
dto.setPlatElderId(entity.getElderId());
if(StringUtils.isNotBlank(entity.getHeartExceptionTime())) {
dto.setHeartDuration(Integer.valueOf(entity.getHeartExceptionTime()));
dto.setHeartRateStr(entity.getHeartRate());
}
if(StringUtils.isNotBlank(entity.getRespiratoryExceptionTime())){
dto.setBreathDuration(Integer.valueOf(entity.getRespiratoryExceptionTime()));
dto.setBreathRateStr(entity.getRespiratoryRate());
}
put(dto);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.makeit.mapper.platform.alarm.PlatAlarmConfigMapper">
<select id="getHealthConfigList" resultType="com.makeit.dto.platform.alarm.PlatHealthConfigDTO">
select pehi.elder_id as platElderId,
pehi.respiratory_rate as heartRateStr,
pehi.respiratory_exception_time as heartDuration,
pehi.heart_rate as breathRateStr,
pehi.heart_exception_time as breathDuration
from plat_elder_health_info pehi
left join plat_elder pe on pe.id = pehi.elder_id
where pehi.del_flag = 0
and pe.del_flag = 0
and ((pehi.heart_exception_time is not null and pehi.heart_rate is not null
and pehi.heart_exception_time != '' and pehi.heart_rate != '')
or (pehi.respiratory_exception_time is not null and pehi.respiratory_rate is not null
and pehi.respiratory_exception_time != '' and pehi.respiratory_rate != '')
)
</select>
</mapper>
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