Commit d6fa5969 by 罗志长

Merge branch 'dev'

# Conflicts:
#	server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
parents 16949764 95e46f36
Showing with 454 additions and 120 deletions
ALTER TABLE `plat_device_other` ALTER TABLE `plat_device_other`
...@@ -121,4 +121,8 @@ ALTER TABLE `plat_alarm_record` ...@@ -121,4 +121,8 @@ ALTER TABLE `plat_alarm_record`
alter table plat_elder_sleep_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id'; alter table plat_elder_sleep_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id';
alter table plat_elder_breathe_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id'; alter table plat_elder_breathe_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id';
\ No newline at end of file
alter table plat_elder_children_info add column weChat_openid varchar(64) default null comment '公众号openid';
alter table plat_tenant add column report_org_ids varchar(255) default null comment '主动上报机构ids';
\ No newline at end of file
package com.makeit.global.inteceptor; package com.makeit.global.inteceptor;
import cn.hutool.core.util.StrUtil;
import com.makeit.enums.Const;
import com.makeit.enums.order.InterceptorOrderConst; import com.makeit.enums.order.InterceptorOrderConst;
import com.makeit.global.annotation.AuthIgnore; import com.makeit.global.annotation.AuthIgnore;
import com.makeit.utils.user.TokenUtil; import com.makeit.utils.user.TokenUtil;
...@@ -31,6 +33,11 @@ public class WechatAuthenticationInterceptor implements HandlerInterceptor { ...@@ -31,6 +33,11 @@ public class WechatAuthenticationInterceptor implements HandlerInterceptor {
return true; return true;
} }
// 子女端小程序存在无需要登录状态
if (StrUtil.isBlank(request.getHeader("Token")) && StrUtil.isBlank(request.getHeader(Const.TENANT_ID))) {
return true;
}
TokenUtil.wechatGetToken(); TokenUtil.wechatGetToken();
TokenUtil.wechatRefreshToken(); TokenUtil.wechatRefreshToken();
return true; return true;
......
package com.makeit.module.iot.vo.analysis;
import lombok.Data;
import java.util.TreeMap;
/**
* @author wangzy
* @description
* @createDate 2024-01-04-16:18
*/
@Data
public class SleepCountDTO {
private Integer totalActionCount;
private Integer totalTurnedCount;
private TreeMap<String, TreeMap<String, AnalysisVO>> daySleepMap;
private TreeMap<String, TreeMap<String, AnalysisVO>> restSleepMap;
}
...@@ -11,19 +11,25 @@ public class SleepTimeAnalysisVO { ...@@ -11,19 +11,25 @@ public class SleepTimeAnalysisVO {
private String endTime; private String endTime;
// 间隔时间 /**
* 间隔时间(分钟)
*/
private Long interval; private Long interval;
// SleepTypeEnum /**
* SleepTypeEnum
*/
private String type; private String type;
private List<SleepTimeAnalysisVO> deepList; private List<SleepTimeAnalysisVO> deepList;
private List<SleepTimeAnalysisVO> midList; private List<SleepTimeAnalysisVO> midList;
/**
* 浅睡
*/
private List<SleepTimeAnalysisVO> lightList; private List<SleepTimeAnalysisVO> lightList;
/**
* 清醒
*/
private List<SleepTimeAnalysisVO> soberList; private List<SleepTimeAnalysisVO> soberList;
} }
package com.makeit.module.iot.vo.analysis;
import lombok.Data;
import java.util.List;
/**
* @author wangzy
* @description
* @createDate 2024-01-04-11:13
*/
@Data
public class SleepTimeDTO {
/**
* 睡眠:入睡时间>3小时
*/
private List<SleepTimeAnalysisVO> sleepList;
/**
* 深度
*/
private List<SleepTimeAnalysisVO> deepList;
/**
* 中度睡眠
*/
private List<SleepTimeAnalysisVO> midList;
/**
* 浅睡
*/
private List<SleepTimeAnalysisVO> lightList;
/**
* 清醒
*/
private List<SleepTimeAnalysisVO> soberList;
/**
* 起床
*/
private List<SleepTimeAnalysisVO> getUpList;
/**
* 小憩
*/
private List<SleepTimeAnalysisVO> restList;
/**
* 入睡
*/
private List<SleepTimeAnalysisVO> daySleepList;
}
package com.makeit.module.iot.vo.analysis;
import lombok.Data;
/**
* @author wangzy
* @description
* @createDate 2024-01-04-14:28
*/
@Data
public class SleepTimeMinuteDTO {
private Long daySleepTime;
private Long dayRestTime;
private Long deepTime;
private Long soberTime;
private Long lightTime;
}
...@@ -21,6 +21,7 @@ public enum SendTypeEnum implements BaseEnum { ...@@ -21,6 +21,7 @@ public enum SendTypeEnum implements BaseEnum {
private String code; private String code;
@Override
public String getValue() { public String getValue() {
return SysDictUtil.getValue(code); return SysDictUtil.getValue(code);
} }
......
package com.makeit.utils.msg.dto; package com.makeit.utils.msg.dto;
import com.makeit.utils.msg.SendTypeEnum; import com.makeit.utils.msg.SendTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Collection; import java.util.Collection;
import java.util.List;
@Data @Data
@Builder @Builder
...@@ -18,6 +20,9 @@ public class MsgSendDTO { ...@@ -18,6 +20,9 @@ public class MsgSendDTO {
private String subject; private String subject;
/**
* 手机号
*/
private Collection<String> receiverList; private Collection<String> receiverList;
private Collection<String> emailSet; private Collection<String> emailSet;
...@@ -35,5 +40,21 @@ public class MsgSendDTO { ...@@ -35,5 +40,21 @@ public class MsgSendDTO {
private String alarmType; private String alarmType;
private List<ReceiverInfo> receiverInfos;
@Data
public static class ReceiverInfo {
@ApiModelProperty("通知者openId")
private String weChatOpenid;
@ApiModelProperty("长者名称")
private String name;
@ApiModelProperty("区域名称")
private String regionName;
}
} }
package com.makeit.utils.msg.sender; package com.makeit.utils.msg.sender;
import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.makeit.utils.msg.SendTypeEnum; import com.makeit.utils.msg.SendTypeEnum;
import com.makeit.utils.msg.dto.MsgSendDTO; import com.makeit.utils.msg.dto.MsgSendDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -24,6 +26,8 @@ public class WxSpSender implements IMsgSender{ ...@@ -24,6 +26,8 @@ public class WxSpSender implements IMsgSender{
@Autowired @Autowired
private WxMpService wxMpService; private WxMpService wxMpService;
private final SendTypeEnum sendTypeEnum = SendTypeEnum.CHILD_WECHAT;
/** /**
* 小程序公众号消息 * 小程序公众号消息
* zn5fBS9cqjnN5UB78tAbm53M3dXufR2b5K1a8mkhXCY * zn5fBS9cqjnN5UB78tAbm53M3dXufR2b5K1a8mkhXCY
...@@ -39,33 +43,49 @@ public class WxSpSender implements IMsgSender{ ...@@ -39,33 +43,49 @@ public class WxSpSender implements IMsgSender{
@Override @Override
public void send(MsgSendDTO msgDTO) { public void send(MsgSendDTO msgDTO) {
List<MsgSendDTO.ReceiverInfo> receiverInfos = msgDTO.getReceiverInfos();
if (CollUtil.isNotEmpty(receiverInfos)) {
return;
}
String content = msgDTO.getOriContent();
receiverInfos.forEach(r -> {
if(StrUtil.isBlank(r.getWeChatOpenid())){
return;
}
sentMsg(content,r.getRegionName(),r.getName(),r.getWeChatOpenid());
});
}
/**
*
* @param content 报警内容
* @param place 地点
* @param name 长者姓名
* @param openId 接收人openId
*/
private void sentMsg(String content, String place, String name, String openId) {
List<WxMpTemplateData> mpData = Arrays.asList( List<WxMpTemplateData> mpData = Arrays.asList(
new WxMpTemplateData("thing8", "报警内容"), new WxMpTemplateData("thing8", content),
new WxMpTemplateData("thing4", "固定值"), new WxMpTemplateData("thing4", place),
new WxMpTemplateData("thing2", "老人姓名"), new WxMpTemplateData("thing2", name),
new WxMpTemplateData("time3", DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")) new WxMpTemplateData("time3", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))
); );
try { try {
//oBmPb5o9T3q-EMsxfhPg_9OjO5k4 lixl公众号openid // String testOpenId = "oM2OI67H11zTZL88X99PxL6rAS3Y";
//oM2OI67H11zTZL88X99PxL6rAS3Y WxMpTemplateMessage wxMpTemplateMessage = WxMpTemplateMessage.builder().toUser(openId)
//WxMpUser wxMpUser = wxMpService.getUserService().userInfo("oM2OI6zZQBB-kL6_0kaMM6adVb1E");
//oM2OI6zZQBB-kL6_0kaMM6adVb1E 小程序openId
// WxMpUserList wxMpUserList = wxMpService.getUserService().userList();
//WxMpUser wxMpUser = wxMpService.getUserService().userInfo("oM2OI67H11zTZL88X99PxL6rAS3Y");
WxMpTemplateMessage wxMpTemplateMessage = WxMpTemplateMessage.builder().toUser("oM2OI67H11zTZL88X99PxL6rAS3Y")
.templateId("zn5fBS9cqjnN5UB78tAbm53M3dXufR2b5K1a8mkhXCY") .templateId("zn5fBS9cqjnN5UB78tAbm53M3dXufR2b5K1a8mkhXCY")
.data(mpData) .data(mpData)
.build(); .build();
wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage); wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);
log.info("发送小程序消息成功"); log.info("发送小程序消息成功");
} catch (WxErrorException e) { } catch (WxErrorException e) {
log.error("发送小程序消息失败:",e); log.error("发送小程序消息失败:", e);
} }
} }
@Override @Override
public boolean support(SendTypeEnum sendTypeEnum) { public boolean support(SendTypeEnum param) {
return false; return sendTypeEnum == param;
} }
......
...@@ -40,5 +40,8 @@ public class WechatLoginPhoneDTO { ...@@ -40,5 +40,8 @@ public class WechatLoginPhoneDTO {
@ApiModelProperty(value = "微信secret") @ApiModelProperty(value = "微信secret")
private String secret; private String secret;
@ApiModelProperty(value = "微信公众号openid")
private String weChatOpenid;
} }
...@@ -3,7 +3,6 @@ package com.makeit.utils.third.wechat; ...@@ -3,7 +3,6 @@ package com.makeit.utils.third.wechat;
import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl; import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import com.makeit.config.WxMaConfiguration; import com.makeit.config.WxMaConfiguration;
import com.makeit.enums.CodeMessageEnum; import com.makeit.enums.CodeMessageEnum;
......
...@@ -2,10 +2,10 @@ package com.makeit.utils.user.wechat; ...@@ -2,10 +2,10 @@ package com.makeit.utils.user.wechat;
import com.makeit.enums.redis.RedisConst; import com.makeit.enums.redis.RedisConst;
import com.makeit.exception.BusinessException;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.user.ThreadLocalUserUtil; import com.makeit.utils.user.ThreadLocalUserUtil;
import com.makeit.utils.user.TokenUtil; import com.makeit.utils.user.TokenUtil;
import org.apache.poi.ss.formula.functions.T;
public class WechatUserUtil { public class WechatUserUtil {
...@@ -25,6 +25,12 @@ public class WechatUserUtil { ...@@ -25,6 +25,12 @@ public class WechatUserUtil {
} }
public static String getUserId() { public static String getUserId() {
return getUserVO().getId(); String userId = "";
try {
userId = getUserVO().getId();
} catch (BusinessException e) {
e.printStackTrace();
}
return userId;
} }
} }
...@@ -4,12 +4,10 @@ package com.makeit.module.controller.children.elder; ...@@ -4,12 +4,10 @@ package com.makeit.module.controller.children.elder;
import com.makeit.common.response.ApiResponseEntity; import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO; import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.dto.platform.elder.PlatElderQueryDTO;
import com.makeit.dto.platform.elder.children.PlatElderChildrenInfoWechatDTOVO; import com.makeit.dto.platform.elder.children.PlatElderChildrenInfoWechatDTOVO;
import com.makeit.entity.platform.elder.PlatElderChildrenInfo; import com.makeit.entity.platform.elder.PlatElderChildrenInfo;
import com.makeit.global.aspect.tenant.TenantIdIgnore; import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderChildrenInfoService; import com.makeit.service.platform.elder.PlatElderChildrenInfoService;
import com.makeit.vo.platform.elder.PlatElderListVO;
import com.makeit.vo.wechat.elder.PlatElderChildrenInfoWechatVO; import com.makeit.vo.wechat.elder.PlatElderChildrenInfoWechatVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
......
...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.makeit.common.response.ApiResponseEntity; import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO; import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO;
import com.makeit.entity.platform.elder.ElderSleepAnalysisVO;
import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis; import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis; import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
import com.makeit.external.huineng.HuiNengService; import com.makeit.external.huineng.HuiNengService;
...@@ -12,6 +13,7 @@ import com.makeit.global.annotation.AuthIgnore; ...@@ -12,6 +13,7 @@ import com.makeit.global.annotation.AuthIgnore;
import com.makeit.global.aspect.tenant.TenantIdIgnore; import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.device.PlatDeviceService; import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.*; import com.makeit.service.platform.elder.*;
import com.makeit.vo.platform.elder.wakeUpAnalysisVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -50,16 +52,6 @@ public class PlatElderSleepController { ...@@ -50,16 +52,6 @@ public class PlatElderSleepController {
private HuiNengService huiNengService; private HuiNengService huiNengService;
@ApiOperation("测试")
@PostMapping("test1")
@AuthIgnore
@TenantIdIgnore
public ApiResponseEntity<Void> test1() {
platElderSleepService.test1();
return ApiResponseUtils.success();
}
@ApiOperation("测试") @ApiOperation("测试")
@PostMapping("test2") @PostMapping("test2")
@AuthIgnore @AuthIgnore
...@@ -82,14 +74,15 @@ public class PlatElderSleepController { ...@@ -82,14 +74,15 @@ public class PlatElderSleepController {
@GetMapping("test4") @GetMapping("test4")
@AuthIgnore @AuthIgnore
@TenantIdIgnore @TenantIdIgnore
public ApiResponseEntity<List<PlatElderSleepAnalysis>> elderSleepSleepAnalysisTask(@RequestParam Integer month, public ApiResponseEntity<List<ElderSleepAnalysisVO>> elderSleepSleepAnalysisTask(@RequestParam Integer month,
@RequestParam Integer day) { @RequestParam Integer day) {
return ApiResponseUtils.success(platElderSleepService.elderSleepSleepAnalysisTask(month, day)); return ApiResponseUtils.success(platElderSleepService.elderSleepSleepAnalysisTask(month, day));
} }
@ApiOperation("测试") @ApiOperation("测试")
@PostMapping("test5") @PostMapping("test5")
@AuthIgnore @AuthIgnore
@TenantIdIgnore
public ApiResponseEntity<Void> coordinateRecordTask() { public ApiResponseEntity<Void> coordinateRecordTask() {
platElderCoordinateRecordService.coordinateRecordTask(); platElderCoordinateRecordService.coordinateRecordTask();
return ApiResponseUtils.success(); return ApiResponseUtils.success();
...@@ -150,5 +143,14 @@ public class PlatElderSleepController { ...@@ -150,5 +143,14 @@ public class PlatElderSleepController {
huiNengService.bodyAlarm("1712384736845950978","219A04X1856F6D8",jsonObject); huiNengService.bodyAlarm("1712384736845950978","219A04X1856F6D8",jsonObject);
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@ApiOperation("起床测试")
@GetMapping("getup")
@AuthIgnore
@TenantIdIgnore
public ApiResponseEntity<List<wakeUpAnalysisVO>> elderGetUpAnalysisTask(@RequestParam Integer month,
@RequestParam Integer day) {
return ApiResponseUtils.success(platElderBreatheAnalysisService.elderGetUpAnalysisTask(month, day));
}
} }
...@@ -2,6 +2,7 @@ package com.makeit.module.controller.wechat.alarm; ...@@ -2,6 +2,7 @@ package com.makeit.module.controller.wechat.alarm;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.makeit.common.dto.BaseIdDTO; import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.page.PageReqDTO; import com.makeit.common.page.PageReqDTO;
...@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Api(tags = "平台端小程序-告警记录") @Api(tags = "平台端小程序-告警记录")
...@@ -36,6 +38,9 @@ public class PlatAlarmRecordWechatController { ...@@ -36,6 +38,9 @@ public class PlatAlarmRecordWechatController {
public ApiResponseEntity<Map<String,Object>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) { public ApiResponseEntity<Map<String,Object>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) {
//小程序告警记录只看到发给自己的告警 //小程序告警记录只看到发给自己的告警
String userId = CommonUserUtil.getUserId(); String userId = CommonUserUtil.getUserId();
if(StrUtil.isBlank(userId)){
return ApiResponseUtils.success(new HashMap<>(12));
}
PlatAlarmRecordQueryDTO data = dto.getData(); PlatAlarmRecordQueryDTO data = dto.getData();
data.setNotifyUser(userId); data.setNotifyUser(userId);
......
package com.makeit.entity.platform.elder;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.util.List;
/**
* @author wangzy
* @description
* @createDate 2024-01-04-15:49
*/
@Data
public class ElderSleepAnalysisVO extends PlatElderSleepAnalysis {
@TableField(exist = false)
List<PlatElderSleep> platElderSleeps;
}
...@@ -54,6 +54,9 @@ public class PlatElderChildrenInfo extends BaseBusEntity { ...@@ -54,6 +54,9 @@ public class PlatElderChildrenInfo extends BaseBusEntity {
@ApiModelProperty(value = "微信头像路径") @ApiModelProperty(value = "微信头像路径")
private String avatar; private String avatar;
@ApiModelProperty(value = "微信公众号openid")
@TableField(value = "weChat_openid")
private String weChatOpenid;
......
...@@ -35,10 +35,13 @@ public class PlatElderSleep extends BaseBusEntity { ...@@ -35,10 +35,13 @@ public class PlatElderSleep extends BaseBusEntity {
@ApiModelProperty(value = "入睡时间") @ApiModelProperty(value = "入睡时间")
private LocalDateTime startSleep; private LocalDateTime startSleep;
/**
* 入睡结束时间
*/
@ApiModelProperty(value = "起床时间") @ApiModelProperty(value = "起床时间")
private LocalDateTime endSleep; private LocalDateTime endSleep;
@ApiModelProperty(value = "睡眠类型 1 睡眠 2 小憩") @ApiModelProperty(value = "睡眠类型 1 睡眠 2 小憩,3:深度睡眠,4:中度睡眠,5:浅度睡眠, 6:清醒,7:起床")
private Integer elderSleepType; private Integer elderSleepType;
@ApiModelProperty(value = "当前日期 yyyy-mm-dd") @ApiModelProperty(value = "当前日期 yyyy-mm-dd")
private String happenDate; private String happenDate;
...@@ -50,5 +53,9 @@ public class PlatElderSleep extends BaseBusEntity { ...@@ -50,5 +53,9 @@ public class PlatElderSleep extends BaseBusEntity {
@TableField(typeHandler = ElderListStringJsonTypeHandler.class) @TableField(typeHandler = ElderListStringJsonTypeHandler.class)
private List<PlatSleepRangeVO> sleepRecord; private List<PlatSleepRangeVO> sleepRecord;
@ApiModelProperty(value = "起床时间")
@TableField(exist = false)
private LocalDateTime wakeUpTime;
} }
...@@ -67,6 +67,11 @@ public class PlatTenant extends BaseEntity { ...@@ -67,6 +67,11 @@ public class PlatTenant extends BaseEntity {
private String secret; private String secret;
private String openApiUrl; private String openApiUrl;
/**
* 主动上报组织ids
*/
private String reportOrgIds;
} }
\ No newline at end of file
...@@ -7,16 +7,21 @@ import lombok.Getter; ...@@ -7,16 +7,21 @@ import lombok.Getter;
@Getter @Getter
public enum SleepTypeEnum { public enum SleepTypeEnum {
/**
SLEEP_DEEP("sleepDeep","深度睡眠"), * 睡眠类型 1 睡眠 (入睡时间大于3小时)2 小憩,3:深度睡眠,4:中度睡眠,5:浅度睡眠, 6:清醒,7:起床 8:入睡
SLEEP_MODERATE("sleepModerate","中度睡眠"), */
SLEEP_LIGHTNESS("sleepLightness","浅度睡眠"), SLEEP_DEEP("sleepDeep", "深度睡眠", 3),
SOBER("sober","清醒"), SLEEP_MODERATE("sleepModerate", "中度睡眠", 4),
GETUP("getup","起床"), SLEEP_LIGHTNESS("sleepLightness", "浅度睡眠", 5),
SLEEP("sleep","睡觉"); SOBER("sober", "清醒", 6),
GETUP("getup", "起床", 7),
private String code; SLEEP("sleep", "睡觉", 1),
private String value; RESTING("resting", "小憩", 2),
DAY_SLEEP("day_sleep","睡眠",8);
private final String code;
private final String value;
private final Integer type;
public static SleepTypeEnum getSleepType(String code) { public static SleepTypeEnum getSleepType(String code) {
......
...@@ -99,7 +99,7 @@ public class BreathAlarm implements IAlarm { ...@@ -99,7 +99,7 @@ public class BreathAlarm implements IAlarm {
//呼吸率 //呼吸率
int br = (int) properties.get("br"); int br = (int) properties.get("br");
if (br == 255) { if (br == 255) {
log.info("当前上报呼吸数据255,无上报数据"); // log.info("当前上报呼吸数据255,无上报数据");
RedisUtil.delete(RedisConst.ALARM_DEVICE_BR_ID + deviceId); RedisUtil.delete(RedisConst.ALARM_DEVICE_BR_ID + deviceId);
return; return;
} }
......
...@@ -102,12 +102,14 @@ public class FallAlarm implements IAlarm { ...@@ -102,12 +102,14 @@ public class FallAlarm implements IAlarm {
// 跌倒了设备需要发送告警到第三方平台 // 跌倒了设备需要发送告警到第三方平台
PlatTenant platTenant = platTenantService.getById(platDevice.getTenantId()); PlatTenant platTenant = platTenantService.getById(platDevice.getTenantId());
if (platTenant != null) { if (platTenant != null) {
OpenApiBaseStrategy strategyFactoryHandler = openApiBaseStrategyFactory.getHandler(platTenant.getCode()); if (isSupportAlarm(platTenant, platDevice)) {
if (strategyFactoryHandler != null) { OpenApiBaseStrategy strategyFactoryHandler = openApiBaseStrategyFactory.getHandler(platTenant.getCode());
try { if (strategyFactoryHandler != null) {
strategyFactoryHandler.alarm(platTenant, platDevice.getOriDeviceId(), properties); try {
} catch (Exception e) { strategyFactoryHandler.alarm(platTenant, platDevice.getOriDeviceId(), properties);
log.error("调用openapi告警接口失败:{}", e.getMessage(), e); } catch (Exception e) {
log.error("调用openapi告警接口失败:{}", e.getMessage(), e);
}
} }
} }
} }
...@@ -120,6 +122,15 @@ public class FallAlarm implements IAlarm { ...@@ -120,6 +122,15 @@ public class FallAlarm implements IAlarm {
} }
} }
private boolean isSupportAlarm(PlatTenant platTenant, PlatDevice platDevice) {
String reportOrgIds = platTenant.getReportOrgIds();
if (StringUtils.isBlank(reportOrgIds)) {
return false;
}
List<String> orgIds = Arrays.asList(StringUtils.split(reportOrgIds, ","));
return orgIds.contains(platDevice.getOrgId());
}
private void recordDuration(PlatAlarmCheckDTO platAlarmCheckDTO) { private void recordDuration(PlatAlarmCheckDTO platAlarmCheckDTO) {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice(); PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
PlatAlarmConfig config = alarmConfigCacheUtil.get(platDevice.getOrgId(), PlatAlarmConfigEnum.AlarmTypeEnum.BEHAVIOR.getValue()); PlatAlarmConfig config = alarmConfigCacheUtil.get(platDevice.getOrgId(), PlatAlarmConfigEnum.AlarmTypeEnum.BEHAVIOR.getValue());
...@@ -177,8 +188,8 @@ public class FallAlarm implements IAlarm { ...@@ -177,8 +188,8 @@ public class FallAlarm implements IAlarm {
long count = endLong - startLong; long count = endLong - startLong;
//进入空间时间满足告警时长,判断是否已经告警过了 //进入空间时间满足告警时长,判断是否已经告警过了
if (duration!= 0 && count / 1000 >= duration && StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.NO.getValue())) { if (duration!= 0 && count / 1000 >= duration && StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.NO.getValue())) {
log.error("空间雷达发出告警,设备plat_id:" + platDevice.getId());
if(duration1 != 0) { if(duration1 != 0) {
log.error("空间雷达发出告警,设备plat_id:" + platDevice.getId());
alarmRedisDTO.setAlarm(CommonEnum.YES.getValue()); alarmRedisDTO.setAlarm(CommonEnum.YES.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO); RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO);
PlatAlarmCheckDTO platAlarmCheckDTO_behavior = BeanDtoVoUtils.convert(platAlarmCheckDTO, PlatAlarmCheckDTO.class); PlatAlarmCheckDTO platAlarmCheckDTO_behavior = BeanDtoVoUtils.convert(platAlarmCheckDTO, PlatAlarmCheckDTO.class);
......
...@@ -87,7 +87,7 @@ public class HeartAlarm implements IAlarm { ...@@ -87,7 +87,7 @@ public class HeartAlarm implements IAlarm {
//心率 //心率
int hr = (int) properties.get("hr"); int hr = (int) properties.get("hr");
if (hr == 255) { if (hr == 255) {
log.info("当前上报心率255,无上报数据"); // log.info("当前上报心率255,无上报数据");
RedisUtil.delete(RedisConst.ALARM_DEVICE_HR_ID + deviceId); RedisUtil.delete(RedisConst.ALARM_DEVICE_HR_ID + deviceId);
return; return;
} }
......
package com.makeit.service.platform.alarm.impl; package com.makeit.service.platform.alarm.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -167,7 +168,11 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -167,7 +168,11 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
*/ */
@Override @Override
public PageVO<PlatAlarmRecordVO> childrenPage(PageReqDTO<PlatAlarmRecordQueryDTO> dto) { public PageVO<PlatAlarmRecordVO> childrenPage(PageReqDTO<PlatAlarmRecordQueryDTO> dto) {
PlatElderChildrenInfo platElderChildrenInfo = platElderChildrenInfoService.getById(WechatUserUtil.getUserId()); String userId = WechatUserUtil.getUserId();
if (StrUtil.isBlank(userId)) {
return PageVO.emptyPage();
}
PlatElderChildrenInfo platElderChildrenInfo = platElderChildrenInfoService.getById(userId);
List<PlatElderChildrenInfo> platElderChildrenInfoList = getPlatElderChildrenInfosByOpenid(platElderChildrenInfo.getOpenid()); List<PlatElderChildrenInfo> platElderChildrenInfoList = getPlatElderChildrenInfosByOpenid(platElderChildrenInfo.getOpenid());
log.info("子女端账号:{}",JSON.toJSONString(platElderChildrenInfo)); log.info("子女端账号:{}",JSON.toJSONString(platElderChildrenInfo));
if(CollectionUtils.isEmpty(platElderChildrenInfoList)){ if(CollectionUtils.isEmpty(platElderChildrenInfoList)){
...@@ -303,6 +308,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -303,6 +308,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
* @param alarmConfig * @param alarmConfig
* @param alarmRecord * @param alarmRecord
*/ */
@Override
@Transactional @Transactional
@TenantIdIgnore @TenantIdIgnore
public void noticeChildren(PlatAlarmConfig alarmConfig, PlatAlarmRecord alarmRecord) { public void noticeChildren(PlatAlarmConfig alarmConfig, PlatAlarmRecord alarmRecord) {
...@@ -321,9 +327,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -321,9 +327,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
Set<String> phoneSet = childrenInfoList.stream().map(PlatElderChildrenInfo::getPhone).collect(Collectors.toSet()); Set<String> phoneSet = childrenInfoList.stream().map(PlatElderChildrenInfo::getPhone).collect(Collectors.toSet());
//告警配置和租户告警 字典一致 //告警配置和租户告警 字典一致
List<SendTypeEnum> notifyChannelList = Arrays.asList(SendTypeEnum.SMS, SendTypeEnum.VOICE_SMS, SendTypeEnum.CHILD_WECHAT); List<SendTypeEnum> notifyChannelList = Arrays.asList(SendTypeEnum.SMS, SendTypeEnum.VOICE_SMS, SendTypeEnum.CHILD_WECHAT);
List<MsgSendDTO.ReceiverInfo> receiverInfos = buildReceiverInfo(allChildInfoList, alarmRecord);
//发送消息 //发送消息
noticeByChannel(alarmConfig, alarmRecord, phoneSet,null, notifyChannelList); noticeByChannel(alarmConfig, alarmRecord, phoneSet,null, notifyChannelList, receiverInfos);
String childIdJoin = allChildInfoList.stream().map(BaseEntity::getId).collect(Collectors.joining(",")); String childIdJoin = allChildInfoList.stream().map(BaseEntity::getId).collect(Collectors.joining(","));
//通知的子女 //通知的子女
...@@ -334,6 +340,21 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -334,6 +340,21 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
} }
private List<MsgSendDTO.ReceiverInfo> buildReceiverInfo(List<PlatElderChildrenInfo> childInfoList, PlatAlarmRecord alarmRecord) {
List<MsgSendDTO.ReceiverInfo> list = new ArrayList<>();
if (CollUtil.isEmpty(childInfoList)) {
return list;
}
childInfoList.forEach(c -> {
MsgSendDTO.ReceiverInfo receiverInfo = new MsgSendDTO.ReceiverInfo();
receiverInfo.setRegionName(alarmRecord.getRegionName());
receiverInfo.setName(c.getName());
receiverInfo.setWeChatOpenid(c.getWeChatOpenid());
});
return list;
}
/** /**
* 通知工作人员 * 通知工作人员
* 短信 * 短信
...@@ -374,7 +395,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -374,7 +395,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
Set<String> phoneSet = platUserList.stream().map(PlatUser::getMobile).collect(Collectors.toSet()); Set<String> phoneSet = platUserList.stream().map(PlatUser::getMobile).collect(Collectors.toSet());
Set<String> emailSet = platUserList.stream().map(PlatUser::getEmail).collect(Collectors.toSet()); Set<String> emailSet = platUserList.stream().map(PlatUser::getEmail).collect(Collectors.toSet());
//发送消息 //发送消息
noticeByChannel(alarmConfig, alarmRecord, phoneSet,emailSet, notifyChannelList); noticeByChannel(alarmConfig, alarmRecord, phoneSet,emailSet, notifyChannelList, null);
String userIdJoin = platUserList.stream().map(PlatUser::getId).collect(Collectors.joining(",")); String userIdJoin = platUserList.stream().map(PlatUser::getId).collect(Collectors.joining(","));
alarmRecord.setNotifyUser(userIdJoin); alarmRecord.setNotifyUser(userIdJoin);
...@@ -391,7 +412,8 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -391,7 +412,8 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
* @param phoneSet 工作人员手机号 * @param phoneSet 工作人员手机号
* @param notifyChannelList 通知渠道 * @param notifyChannelList 通知渠道
*/ */
private void noticeByChannel(PlatAlarmConfig alarmConfig, PlatAlarmRecord alarmRecord, Set<String> phoneSet,Set<String> emailSet, List<SendTypeEnum> notifyChannelList) { private void noticeByChannel(PlatAlarmConfig alarmConfig, PlatAlarmRecord alarmRecord, Set<String> phoneSet,Set<String> emailSet,
List<SendTypeEnum> notifyChannelList, List<MsgSendDTO.ReceiverInfo> receiverInfos) {
log.info("开始短信通知:{}", JSON.toJSONString(alarmConfig)); log.info("开始短信通知:{}", JSON.toJSONString(alarmConfig));
String notifyChannel = alarmConfig.getNotifyChannel(); String notifyChannel = alarmConfig.getNotifyChannel();
if(StringUtils.isEmpty(notifyChannel)){ if(StringUtils.isEmpty(notifyChannel)){
...@@ -423,6 +445,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -423,6 +445,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
msgSendDTO.setOriContent(alarmRecord.getContent()); msgSendDTO.setOriContent(alarmRecord.getContent());
msgSendDTO.setSubject(alarmRecord.getContent()); msgSendDTO.setSubject(alarmRecord.getContent());
msgSendDTO.setParam(alarmRecord.getElderName()); msgSendDTO.setParam(alarmRecord.getElderName());
msgSendDTO.setReceiverInfos(receiverInfos);
String alarmType = alarmConfig.getAlarmType(); String alarmType = alarmConfig.getAlarmType();
//告警类型 数据字典 1 长者跌倒 2 呼吸异常 3 心率异常 4 行为异常 5 离床异常 //告警类型 数据字典 1 长者跌倒 2 呼吸异常 3 心率异常 4 行为异常 5 离床异常
if (StringUtils.equals(alarmType, "1")) { if (StringUtils.equals(alarmType, "1")) {
...@@ -597,7 +620,11 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -597,7 +620,11 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
@Override @Override
public Integer unreadCount(PlatAlarmRecordQueryDTO dto) { public Integer unreadCount(PlatAlarmRecordQueryDTO dto) {
PlatElderChildrenInfo platElderChildrenInfo = platElderChildrenInfoService.getById(WechatUserUtil.getUserId()); String userId = WechatUserUtil.getUserId();
if (StrUtil.isBlank(userId)) {
return 0;
}
PlatElderChildrenInfo platElderChildrenInfo = platElderChildrenInfoService.getById(userId);
List<PlatElderChildrenInfo> platElderChildrenInfoList = getPlatElderChildrenInfosByOpenid(platElderChildrenInfo.getOpenid()); List<PlatElderChildrenInfo> platElderChildrenInfoList = getPlatElderChildrenInfosByOpenid(platElderChildrenInfo.getOpenid());
log.info("子女端账号:{}",JSON.toJSONString(platElderChildrenInfo)); log.info("子女端账号:{}",JSON.toJSONString(platElderChildrenInfo));
if(CollectionUtils.isEmpty(platElderChildrenInfoList)){ if(CollectionUtils.isEmpty(platElderChildrenInfoList)){
......
...@@ -465,16 +465,25 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -465,16 +465,25 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
List<PlatDeviceOther> platDeviceOtherList = platDeviceOtherService.list(new QueryWrapper<PlatDeviceOther>().lambda() List<PlatDeviceOther> platDeviceOtherList = platDeviceOtherService.list(new QueryWrapper<PlatDeviceOther>().lambda()
.eq(PlatDeviceOther::getOriDeviceId, dto.getOriDeviceId())); .eq(PlatDeviceOther::getOriDeviceId, dto.getOriDeviceId()));
PlatDeviceBaseAttrDTO defaultAttr = getDefaultAttr(db);
String attribute = defaultAttr != null ? JSON.toJSONString(defaultAttr) : null;
for (PlatDeviceOther platDeviceOther : platDeviceOtherList) { for (PlatDeviceOther platDeviceOther : platDeviceOtherList) {
BeanUtils.copyProperties(dto, platDeviceOther,"id"); BeanUtils.copyProperties(dto, platDeviceOther,"id");
platDeviceOther.setDeviceId(id); platDeviceOther.setDeviceId(id);
platDeviceOther.setAttribute(getDefaultAttr(db)); platDeviceOther.setAttribute(attribute);
platDeviceOther.setOriDeviceId(db.getOriDeviceId()); platDeviceOther.setOriDeviceId(db.getOriDeviceId());
platDeviceOtherService.saveOrUpdate(platDeviceOther); platDeviceOtherService.saveOrUpdate(platDeviceOther);
} }
if (defaultAttr != null) {
List<PlatDevice> platDeviceList = list(new QueryWrapper<PlatDevice>().lambda().eq(PlatDevice::getOriDeviceId, db.getOriDeviceId()));
//更新区域设置设备安装方式
platRegionSettingService.update(new UpdateWrapper<PlatRegionSetting>().lambda()
.set(PlatRegionSetting::getInstallType, defaultAttr.getRadarMount())
.in(CollectionUtils.isNotEmpty(platDeviceList), PlatRegionSetting::getDeviceId, StreamUtil.map(platDeviceList, BaseEntity::getId)));
}
} }
private String getDefaultAttr(PlatDevice platDevice) { private PlatDeviceBaseAttrDTO getDefaultAttr(PlatDevice platDevice) {
String category = platDevice.getCategory(); String category = platDevice.getCategory();
if (!(PlatDeviceEnum.CategoryEnum.FALL.getValue().equals(category) || PlatDeviceEnum.CategoryEnum.SPACE.getValue().equals(category))) { if (!(PlatDeviceEnum.CategoryEnum.FALL.getValue().equals(category) || PlatDeviceEnum.CategoryEnum.SPACE.getValue().equals(category))) {
return null; return null;
...@@ -501,7 +510,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -501,7 +510,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
platDeviceBaseAttrDTO.setRadarAngle(angle); platDeviceBaseAttrDTO.setRadarAngle(angle);
platDeviceBaseAttrDTO.setRadarDelay(30); platDeviceBaseAttrDTO.setRadarDelay(30);
} }
return JSON.toJSONString(platDeviceBaseAttrDTO); return platDeviceBaseAttrDTO;
} }
@Override @Override
......
...@@ -2,6 +2,7 @@ package com.makeit.service.platform.elder; ...@@ -2,6 +2,7 @@ package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis; import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis;
import com.makeit.vo.platform.elder.wakeUpAnalysisVO;
import java.util.List; import java.util.List;
...@@ -16,4 +17,6 @@ import java.util.List; ...@@ -16,4 +17,6 @@ import java.util.List;
public interface PlatElderBreatheAnalysisService extends IService<PlatElderBreatheAnalysis> { public interface PlatElderBreatheAnalysisService extends IService<PlatElderBreatheAnalysis> {
List<PlatElderBreatheAnalysis> elderHeartRespiratoryAnalysisTask(Integer month, Integer day); List<PlatElderBreatheAnalysis> elderHeartRespiratoryAnalysisTask(Integer month, Integer day);
List<wakeUpAnalysisVO> elderGetUpAnalysisTask(Integer month, Integer day);
} }
package com.makeit.service.platform.elder; package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.elder.ElderSleepAnalysisVO;
import com.makeit.entity.platform.elder.PlatElderSleep; import com.makeit.entity.platform.elder.PlatElderSleep;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
import com.makeit.entity.saas.analysis.SaasSleepEvaluateStandardReport; import com.makeit.entity.saas.analysis.SaasSleepEvaluateStandardReport;
import java.util.List; import java.util.List;
...@@ -17,10 +17,9 @@ import java.util.List; ...@@ -17,10 +17,9 @@ import java.util.List;
*/ */
public interface PlatElderSleepService extends IService<PlatElderSleep> { public interface PlatElderSleepService extends IService<PlatElderSleep> {
List<PlatElderSleepAnalysis> elderSleepSleepAnalysisTask(Integer month, Integer day); List<ElderSleepAnalysisVO> elderSleepSleepAnalysisTask(Integer month, Integer day);
void test1();
String calculateScores(long daySleepTime, long dayRestTime, long deepTime, long soberTime, long lightTime, String calculateScores(long daySleepTime, long dayRestTime, long deepTime, long soberTime, long lightTime,
SaasSleepEvaluateStandardReport evaluateStandardReport); SaasSleepEvaluateStandardReport evaluateStandardReport);
} }
...@@ -254,8 +254,12 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild ...@@ -254,8 +254,12 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild
@Override @Override
public PlatElderChildrenInfoWechatVO view() { public PlatElderChildrenInfoWechatVO view() {
String userId = WechatUserUtil.getUserId();
if (StrUtil.isBlank(userId)) {
return new PlatElderChildrenInfoWechatVO();
}
PlatElderChildrenInfoWechatVO wechatVO = PlatElderChildrenInfoWechatVO wechatVO =
BeanDtoVoUtils.convert(getById(WechatUserUtil.getUserId()), PlatElderChildrenInfoWechatVO.class); BeanDtoVoUtils.convert(getById(userId), PlatElderChildrenInfoWechatVO.class);
if (wechatVO != null && (StrUtil.isBlank(wechatVO.getName()) && StrUtil.isNotBlank(wechatVO.getPhone()))) { if (wechatVO != null && (StrUtil.isBlank(wechatVO.getName()) && StrUtil.isNotBlank(wechatVO.getPhone()))) {
wechatVO.setName(wechatVO.getPhone()); wechatVO.setName(wechatVO.getPhone());
} }
...@@ -304,7 +308,11 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild ...@@ -304,7 +308,11 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void bind(String elderId) { public void bind(String elderId) {
PlatElderChildrenInfo childrenInfo = getById(WechatUserUtil.getUserId()); String userId = WechatUserUtil.getUserId();
if (StrUtil.isBlank(userId)) {
return;
}
PlatElderChildrenInfo childrenInfo = getById(userId);
if (childrenInfo == null) { if (childrenInfo == null) {
return; return;
} }
...@@ -338,6 +346,7 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild ...@@ -338,6 +346,7 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild
} }
newChildrenInfo.setTenantId(platElder.getTenantId()); newChildrenInfo.setTenantId(platElder.getTenantId());
newChildrenInfo.setOpenid(copyInfo.getOpenid()); newChildrenInfo.setOpenid(copyInfo.getOpenid());
newChildrenInfo.setWeChatOpenid(copyInfo.getWeChatOpenid());
newChildrenInfo.setPhone(copyInfo.getPhone()); newChildrenInfo.setPhone(copyInfo.getPhone());
newChildrenInfo.setName(copyInfo.getName()); newChildrenInfo.setName(copyInfo.getName());
newChildrenInfo.setAvatar(copyInfo.getAvatar()); newChildrenInfo.setAvatar(copyInfo.getAvatar());
......
...@@ -5,11 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -5,11 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder; import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.elder.PlatElderCoordinateRecord; import com.makeit.entity.platform.elder.PlatElderCoordinateRecord;
import com.makeit.entity.platform.space.PlatRegionSetting; import com.makeit.entity.platform.space.PlatRegionSetting;
import com.makeit.entity.platform.space.PlatRegionSettingFix; import com.makeit.entity.platform.space.PlatRegionSettingFix;
import com.makeit.mapper.platform.elder.PlatElderCoordinateRecordMapper; import com.makeit.mapper.platform.elder.PlatElderCoordinateRecordMapper;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.PlatElderCoordinateRecordService; import com.makeit.service.platform.elder.PlatElderCoordinateRecordService;
import com.makeit.service.platform.elder.PlatElderDayReportDayService; import com.makeit.service.platform.elder.PlatElderDayReportDayService;
import com.makeit.service.platform.elder.PlatElderRealTimeService; import com.makeit.service.platform.elder.PlatElderRealTimeService;
...@@ -52,7 +54,7 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC ...@@ -52,7 +54,7 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC
@Autowired @Autowired
private PlatRegionSettingService platRegionSettingService; private PlatRegionSettingService platRegionSettingService;
@Autowired @Autowired
private PlatElderRealTimeService platElderRealTimeService; private PlatDeviceService platDeviceService;
@Override @Override
public void coordinateRecordTask() { public void coordinateRecordTask() {
...@@ -90,6 +92,10 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC ...@@ -90,6 +92,10 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC
} }
saveBatch(list); saveBatch(list);
} }
List<String> deviceIds = StreamUtil.map(platRegionSettingList, setting -> setting.getDeviceId());
List<PlatDevice> platDevices = platDeviceService.listByIds(deviceIds);
Map<String, String> deviceMap = StreamUtil.toMap(platDevices, PlatDevice::getId, PlatDevice::getId);
platRegionSettingList = StreamUtil.filter(platRegionSettingList, setting -> deviceMap.containsKey(setting.getDeviceId()));
List<PlatRegionSettingFix> settingFixList = StreamUtil.map(platRegionSettingList, setting -> { List<PlatRegionSettingFix> settingFixList = StreamUtil.map(platRegionSettingList, setting -> {
PlatRegionSettingFix settingFix = new PlatRegionSettingFix(); PlatRegionSettingFix settingFix = new PlatRegionSettingFix();
BeanUtils.copyProperties(setting, settingFix,"id"); BeanUtils.copyProperties(setting, settingFix,"id");
......
...@@ -102,21 +102,11 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -102,21 +102,11 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
@Override @Override
public PlatElderSleepEvaluationVO sleepEvaluation(PlatElderReportDTO platElderIdDTO) { public PlatElderSleepEvaluationVO sleepEvaluation(PlatElderReportDTO platElderIdDTO) {
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now()); LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
PlatElderSleepEvaluationVO platElderSleepEvaluationVO = new PlatElderSleepEvaluationVO(); PlatElderSleepEvaluationVO platElderSleepEvaluationVO = new PlatElderSleepEvaluationVO();
String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now); String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
String elderId = platElderIdDTO.getElderId(); String elderId = platElderIdDTO.getElderId();
String deviceId = platElderIdDTO.getDeviceId(); String deviceId = platElderIdDTO.getDeviceId();
String tenantId = platElderIdDTO.getTenantId(); String tenantId = platElderIdDTO.getTenantId();
// if (StringUtils.isNotEmpty(deviceId)) {
// PlatElder platElder = platElderService.getByDeviceId(deviceId,platElderIdDTO.getTenantId());
// if (platElder != null) {
// elderId = platElder.getId();
// }
// }
PlatElderSleepAnalysis platElderSleepAnalysis = platElderSleepAnalysisService.getOne(new QueryWrapper<PlatElderSleepAnalysis>().lambda() PlatElderSleepAnalysis platElderSleepAnalysis = platElderSleepAnalysisService.getOne(new QueryWrapper<PlatElderSleepAnalysis>().lambda()
.eq(StrUtil.isNotBlank(elderId), PlatElderSleepAnalysis::getElderId, elderId) .eq(StrUtil.isNotBlank(elderId), PlatElderSleepAnalysis::getElderId, elderId)
...@@ -199,7 +189,6 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -199,7 +189,6 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
@Override @Override
public List<PlatElderSleepDiagramVO> sleepDiagram(PlatElderReportDTO platElderIdDTO) { public List<PlatElderSleepDiagramVO> sleepDiagram(PlatElderReportDTO platElderIdDTO) {
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now()); LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
List<PlatElderSleepDiagramVO> voList; List<PlatElderSleepDiagramVO> voList;
String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now); String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
...@@ -216,31 +205,54 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -216,31 +205,54 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
.orderByAsc(PlatElderSleep::getStartSleep) .orderByAsc(PlatElderSleep::getStartSleep)
); );
setWakeUp(sleepList);
voList = StreamUtil.map(sleepList, e -> { voList = StreamUtil.map(sleepList, e -> {
PlatElderSleepDiagramVO vo = new PlatElderSleepDiagramVO(); PlatElderSleepDiagramVO vo = new PlatElderSleepDiagramVO();
vo.setSleepAt(e.getStartSleep()); vo.setSleepAt(e.getStartSleep());
vo.setWakeUpAt(e.getEndSleep()); vo.setWakeUpAt(e.getEndSleep());
vo.setNewWakeUpAt(e.getWakeUpTime());
vo.setElderSleepType(e.getElderSleepType()); vo.setElderSleepType(e.getElderSleepType());
List<PlatElderSleepDiagramContentVO> contentList = StreamUtil.map(Optional.ofNullable(e.getSleepRecord()).orElse(new ArrayList<>(10)), i -> { List<PlatElderSleepDiagramContentVO> contentList = StreamUtil.map(Optional.ofNullable(e.getSleepRecord()).orElse(new ArrayList<>(10)), i -> {
PlatElderSleepDiagramContentVO contentVO = new PlatElderSleepDiagramContentVO(); PlatElderSleepDiagramContentVO contentVO = new PlatElderSleepDiagramContentVO();
contentVO.setStartTime(i.getStartTime()); contentVO.setStartTime(i.getStartTime());
contentVO.setEndTime(i.getEndTime()); contentVO.setEndTime(i.getEndTime());
contentVO.setSleepType(i.getSleepType()); contentVO.setSleepType(i.getSleepType());
return contentVO; return contentVO;
}); });
vo.setContentList(contentList); vo.setContentList(contentList);
return vo; return vo;
}); });
return voList; return voList;
} }
private void setWakeUp(List<PlatElderSleep> sleepList) {
if (CollUtil.isEmpty(sleepList)) {
return;
}
List<PlatElderSleep> sleeps = sleepList.stream().filter(f -> f.getElderSleepType().equals(SleepTypeEnum.SLEEP.getType())).collect(Collectors.toList());
if (CollUtil.isEmpty(sleeps)) {
return;
}
List<PlatElderSleep> wakeUpList = sleepList.stream().filter(f -> f.getElderSleepType().equals(SleepTypeEnum.GETUP.getType())).collect(Collectors.toList());
sleeps.forEach(s -> {
List<PlatElderSleep> wakeList = wakeUpList.stream().filter(f -> s.getStartSleep().isAfter(s.getEndSleep())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(wakeList)) {
final long[] minute = {24 * 60};
wakeList.forEach(w -> {
long between = Duration.between(s.getEndSleep(), w.getStartSleep()).toMinutes();
if (between < minute[0]) {
minute[0] = between;
s.setWakeUpTime(w.getStartSleep());
}
});
}
});
}
@Override @Override
public PlatElderHeartRespiratoryEvaluationVO heartRespiratoryEvaluation(PlatElderReportDTO platElderIdDTO) { public PlatElderHeartRespiratoryEvaluationVO heartRespiratoryEvaluation(PlatElderReportDTO platElderIdDTO) {
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now()); LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
...@@ -547,7 +559,9 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -547,7 +559,9 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
} }
} }
List<PlatElderBehaviorDistributionVO> voList = new ArrayList<>(10); List<PlatElderBehaviorDistributionVO> voList = new ArrayList<>(10);
if (StrUtil.isBlank(elderId)) {
return voList;
}
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd"); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
List<PlatElderBehaviorDistributionVO> finalVoList = voList; List<PlatElderBehaviorDistributionVO> finalVoList = voList;
......
...@@ -230,7 +230,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService { ...@@ -230,7 +230,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
brNoPersonFlag = true; brNoPersonFlag = true;
} }
} else { } else {
log.info("当前呼吸设备没有上报数据直接返回:" + platElderIdDTO.getElderId()); // log.info("当前呼吸设备没有上报数据直接返回:" + platElderIdDTO.getElderId());
redisTemplate.delete(DEVICE_BR_ANALYSIS + platDevice.getOriDeviceId()); redisTemplate.delete(DEVICE_BR_ANALYSIS + platDevice.getOriDeviceId());
return platElderRealTimeNowVO; return platElderRealTimeNowVO;
} }
...@@ -405,7 +405,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService { ...@@ -405,7 +405,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
} }
vo.setDeviceId(platDevice.getOriDeviceId()); vo.setDeviceId(platDevice.getOriDeviceId());
String result = redisTemplate.opsForValue().get(DEVICE_BR_DATA + platDevice.getOriDeviceId()); String result = redisTemplate.opsForValue().get(DEVICE_BR_DATA + platDevice.getOriDeviceId());
log.info("实时获取设备呼吸数据:{}",result); // log.info("实时获取设备呼吸数据:{}",result);
if (result != null) { if (result != null) {
JSONObject jsonObject = JSON.parseObject(result); JSONObject jsonObject = JSON.parseObject(result);
if (jsonObject != null) { if (jsonObject != null) {
...@@ -539,7 +539,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService { ...@@ -539,7 +539,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
} }
vo.setDeviceId(platDevice.getOriDeviceId()); vo.setDeviceId(platDevice.getOriDeviceId());
String result = redisTemplate.opsForValue().get(DEVICE_BR_DATA + platDevice.getOriDeviceId()); String result = redisTemplate.opsForValue().get(DEVICE_BR_DATA + platDevice.getOriDeviceId());
log.info("实时获取设备呼吸数据:{}",result); // log.info("实时获取设备呼吸数据:{}",result);
if (result != null) { if (result != null) {
JSONObject jsonObject = JSON.parseObject(result); JSONObject jsonObject = JSON.parseObject(result);
if (jsonObject != null) { if (jsonObject != null) {
......
...@@ -69,9 +69,6 @@ public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReport ...@@ -69,9 +69,6 @@ public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReport
@Override @Override
public PlatElderComprehensiveEvaluationVO comprehensiveEvaluation(PlatElderReportDTO platElderIdDTO) { public PlatElderComprehensiveEvaluationVO comprehensiveEvaluation(PlatElderReportDTO platElderIdDTO) {
PlatElderSleepEvaluationVO platElderSleepEvaluationVO = sleepEvaluation(platElderIdDTO); PlatElderSleepEvaluationVO platElderSleepEvaluationVO = sleepEvaluation(platElderIdDTO);
if (platElderSleepEvaluationVO == null) {
return new PlatElderComprehensiveEvaluationVO();
}
PlatElderHeartRespiratoryEvaluationVO platElderHeartRespiratoryEvaluationVO = heartRespiratoryEvaluation(platElderIdDTO); PlatElderHeartRespiratoryEvaluationVO platElderHeartRespiratoryEvaluationVO = heartRespiratoryEvaluation(platElderIdDTO);
return platElderDayReportWeekService.comprehensiveEvaluationInternal(platElderSleepEvaluationVO, platElderHeartRespiratoryEvaluationVO); return platElderDayReportWeekService.comprehensiveEvaluationInternal(platElderSleepEvaluationVO, platElderHeartRespiratoryEvaluationVO);
......
...@@ -78,10 +78,9 @@ public class PlatRegionSettingServiceImpl extends ServiceImpl<PlatRegionSettingM ...@@ -78,10 +78,9 @@ public class PlatRegionSettingServiceImpl extends ServiceImpl<PlatRegionSettingM
if(map.get(item)!=null){ if(map.get(item)!=null){
String attribute = map.get(item); String attribute = map.get(item);
PlatDeviceAttrWechatDTO deviceAttrWechatDTO = JsonUtil.toObj(attribute,PlatDeviceAttrWechatDTO.class); PlatDeviceAttrWechatDTO deviceAttrWechatDTO = JsonUtil.toObj(attribute,PlatDeviceAttrWechatDTO.class);
if (deviceAttrWechatDTO == null || deviceAttrWechatDTO.getRadarMount() == null) { if (deviceAttrWechatDTO != null) {
continue; platRegionSetting.setInstallType(deviceAttrWechatDTO.getRadarMount().toString());
} }
platRegionSetting.setInstallType(deviceAttrWechatDTO.getRadarMount().toString());
} }
list.add(platRegionSetting); list.add(platRegionSetting);
} }
......
package com.makeit.service.wechat.impl; package com.makeit.service.wechat.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.dto.platform.auth.PlatOrgSplitDTO;
import com.makeit.entity.platform.elder.PlatElderChildrenInfo; import com.makeit.entity.platform.elder.PlatElderChildrenInfo;
import com.makeit.entity.saas.PlatTenant; import com.makeit.entity.saas.PlatTenant;
import com.makeit.enums.Const;
import com.makeit.enums.HeaderConst;
import com.makeit.global.aspect.misc.nofill.NoFillUtil; import com.makeit.global.aspect.misc.nofill.NoFillUtil;
import com.makeit.service.platform.elder.PlatElderChildrenInfoService; import com.makeit.service.platform.elder.PlatElderChildrenInfoService;
import com.makeit.service.saas.PlatTenantService; import com.makeit.service.saas.PlatTenantService;
...@@ -16,8 +13,8 @@ import com.makeit.utils.msg.config.WxConfig; ...@@ -16,8 +13,8 @@ import com.makeit.utils.msg.config.WxConfig;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import com.makeit.utils.sys.FileUtil; import com.makeit.utils.sys.FileUtil;
import com.makeit.utils.third.wechat.WechatLoginPhoneDTO; import com.makeit.utils.third.wechat.WechatLoginPhoneDTO;
import com.makeit.utils.third.wechat.WxUserInfo;
import com.makeit.utils.third.wechat.WechatUtil; import com.makeit.utils.third.wechat.WechatUtil;
import com.makeit.utils.third.wechat.WxUserInfo;
import com.makeit.utils.user.TokenUtil; import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.wechat.WechatUserInfo; import com.makeit.utils.user.wechat.WechatUserInfo;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -60,7 +57,7 @@ public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElde ...@@ -60,7 +57,7 @@ public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElde
childrenInfo.setOpenid(userInfo.getOpenId()); childrenInfo.setOpenid(userInfo.getOpenId());
childrenInfo.setName(userInfo.getNickName()); childrenInfo.setName(userInfo.getNickName());
childrenInfo.setWeChatOpenid(dto.getWeChatOpenid());
childrenInfo.setCreateBy(userInfo.getNickName()); childrenInfo.setCreateBy(userInfo.getNickName());
childrenInfo.setUpdateBy(userInfo.getNickName()); childrenInfo.setUpdateBy(userInfo.getNickName());
childrenInfo.setPhone(userInfo.getPhoneNumber()); childrenInfo.setPhone(userInfo.getPhoneNumber());
......
...@@ -21,9 +21,13 @@ public class PlatElderSleepDiagramVO { ...@@ -21,9 +21,13 @@ public class PlatElderSleepDiagramVO {
@ApiModelProperty("图表集合") @ApiModelProperty("图表集合")
private List<PlatElderSleepDiagramContentVO> contentList; private List<PlatElderSleepDiagramContentVO> contentList;
@ApiModelProperty(value = "睡眠类型 1 睡眠 2 小憩") @ApiModelProperty(value = "睡眠类型 1 睡眠 2 小憩,3:深度睡眠,4:中度睡眠,5:浅度睡眠, 6:清醒,7:起床")
private Integer elderSleepType; private Integer elderSleepType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
@ApiModelProperty("起床时间")
private LocalDateTime newWakeUpAt;
} }
package com.makeit.vo.platform.elder;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author wangzy
* @description
* @createDate 2023-12-29-14:48
*/
@Data
public class wakeUpAnalysisVO {
private List<LocalDateTime> wakeUpList;
private List<LocalDateTime> leaveOverTimeList;
private String elderId;
private String name;
}
...@@ -42,17 +42,20 @@ public class MqttPushClient { ...@@ -42,17 +42,20 @@ public class MqttPushClient {
try { try {
client = new MqttClient(host, clientId, new MemoryPersistence()); client = new MqttClient(host, clientId, new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions(); MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true); options.setCleanSession(false);
options.setUserName(username); options.setUserName(username);
options.setPassword(password.toCharArray()); options.setPassword(password.toCharArray());
options.setConnectionTimeout(timeout); options.setConnectionTimeout(timeout);
options.setKeepAliveInterval(keepalive); options.setKeepAliveInterval(keepalive);
options.setAutomaticReconnect(true);
MqttPushClient.setMqttClient(client); MqttPushClient.setMqttClient(client);
try { if (!client.isConnected()) {
client.setCallback(pushCallback); try {
client.connect(options); client.setCallback(pushCallback);
} catch (Exception e) { client.connect(options);
e.printStackTrace(); } catch (Exception e) {
e.printStackTrace();
}
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -30,10 +30,7 @@ import com.makeit.utils.DeviceCacheUtil; ...@@ -30,10 +30,7 @@ import com.makeit.utils.DeviceCacheUtil;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import com.makeit.utils.redis.RedisUtil; import com.makeit.utils.redis.RedisUtil;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -50,7 +47,7 @@ import java.util.concurrent.TimeUnit; ...@@ -50,7 +47,7 @@ import java.util.concurrent.TimeUnit;
@Component @Component
public class PushCallback implements MqttCallback { public class PushCallback implements MqttCallbackExtended {
private static final Logger logger = LoggerFactory.getLogger(MqttPushClient.class); private static final Logger logger = LoggerFactory.getLogger(MqttPushClient.class);
public static final String DEVICE_BR_DATA = "device:brhr:data:"; public static final String DEVICE_BR_DATA = "device:brhr:data:";
...@@ -102,8 +99,21 @@ public class PushCallback implements MqttCallback { ...@@ -102,8 +99,21 @@ public class PushCallback implements MqttCallback {
@Override @Override
public void connectionLost(Throwable cause) { public void connectionLost(Throwable cause) {
logger.info("连接断开,可以重连"); logger.info("连接断开,可以重连");
if (client == null || !client.isConnected()) { int times = 1;
mqttConfig.getMqttPushClient(); while (client == null || !client.isConnected()) {
logger.info("重新连接, 第" + (times++) + "次");
MqttPushClient mqttPushClient = mqttConfig.getMqttPushClient();
if (mqttPushClient != null && mqttPushClient.getMqttClient() != null && mqttPushClient.getMqttClient().isConnected()) {
logger.info("重连成功");
break;
}
logger.info("重连失败");
// 每隔10秒重试一次
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
} }
} }
...@@ -127,6 +137,11 @@ public class PushCallback implements MqttCallback { ...@@ -127,6 +137,11 @@ public class PushCallback implements MqttCallback {
logger.info("deliveryComplete--------------" + token.isComplete()); logger.info("deliveryComplete--------------" + token.isComplete());
} }
@Override
public void connectComplete(boolean b, String s) {
logger.info("连接成功,连接方式:{}", b ? "重连" : "直连");
}
/** /**
* IOT端设备属性修改后同步 * IOT端设备属性修改后同步
* @param device * @param device
......
...@@ -9,8 +9,11 @@ import com.makeit.module.iot.service.IotOrgService; ...@@ -9,8 +9,11 @@ import com.makeit.module.iot.service.IotOrgService;
import com.makeit.module.iot.service.IotProductDeviceService; import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.module.iot.service.IotTokenService; import com.makeit.module.iot.service.IotTokenService;
import com.makeit.service.platform.alarm.alarmStrategy.OffBedAlarm; import com.makeit.service.platform.alarm.alarmStrategy.OffBedAlarm;
import com.makeit.service.platform.elder.PlatElderSleepService;
import com.makeit.utils.redis.RedisUtil; import com.makeit.utils.redis.RedisUtil;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
...@@ -27,6 +30,11 @@ public class IotDeviceInfoContentFall { ...@@ -27,6 +30,11 @@ public class IotDeviceInfoContentFall {
private IotProductDeviceService iotProductDeviceService; private IotProductDeviceService iotProductDeviceService;
@Autowired @Autowired
private OffBedAlarm offBedAlarm; private OffBedAlarm offBedAlarm;
@Autowired
private PlatElderSleepService platElderSleepService;
private static final Logger logger = LoggerFactory.getLogger(IotDeviceInfoContentFall.class);
@Test @Test
......
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