Commit c0a94e2a by huangjy

Merge remote-tracking branch 'origin/dev'

# Conflicts:
#	db/上线后sql/update.sql
#	server-common/src/main/java/com/makeit/module/iot/service/IotDevicePropertiesOperateService.java
#	server-common/src/main/java/com/makeit/module/iot/service/IotProductDeviceService.java
#	server-module/src/main/java/com/makeit/module/controller/children/alarm/PlatAlarmRecordChildrenController.java
#	server-service/src/main/java/com/makeit/dto/wechat/device/PlatDeviceAttrWechatDTO.java
#	server-service/src/main/java/com/makeit/service/platform/alarm/impl/PlatAlarmRecordServiceImpl.java
#	server-service/src/main/java/com/makeit/service/platform/device/PlatDeviceService.java
#	server-service/src/main/java/com/makeit/service/platform/device/impl/PlatDeviceServiceImpl.java
#	server-service/src/main/java/com/makeit/service/platform/elder/PlatElderService.java
#	server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderRealTimeServiceImpl.java
#	server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderReportMonthServiceImpl.java
#	server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
parents 14c8c200 7079f975
Showing with 909 additions and 403 deletions
ALTER TABLE `plat_device_other` ALTER TABLE `plat_device_other`
...@@ -5,3 +5,19 @@ ADD COLUMN `secure_key` varchar(255) COMMENT '密钥key' AFTER `secure_id`; ...@@ -5,3 +5,19 @@ ADD COLUMN `secure_key` varchar(255) COMMENT '密钥key' AFTER `secure_id`;
ALTER TABLE `plat_alarm_record` ALTER TABLE `plat_alarm_record`
ADD COLUMN `misinformation_flag` char(1) DEFAULT 0 COMMENT '是否误报 1 误报 0 没有误报' AFTER `read_flag`; ADD COLUMN `misinformation_flag` char(1) DEFAULT 0 COMMENT '是否误报 1 误报 0 没有误报' AFTER `read_flag`;
ALTER TABLE `plat_elder_report_month`
MODIFY COLUMN `sleep_result` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '睡眠结果' AFTER `day`,
MODIFY COLUMN `heart_rate` int(11) COMMENT '心率' AFTER `sleep_result`,
MODIFY COLUMN `respiratory_rate` int(11) COMMENT '呼吸率' AFTER `heart_rate`,
MODIFY COLUMN `fail_count` int(11) COMMENT '跌倒次数' AFTER `respiratory_rate`,
MODIFY COLUMN `heart_exception_count` int(11) COMMENT '心率异常次数' AFTER `fail_count`,
MODIFY COLUMN `respiratory_exception_count` int(11) COMMENT '呼吸异常次数' AFTER `heart_exception_count`,
MODIFY COLUMN `behavior_exception_count` int(11) COMMENT '行为异常次数' AFTER `respiratory_exception_count`;
ALTER TABLE `sys_api_secret`
CHANGE COLUMN `publicKey` `public_key` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '公钥' AFTER `platform`,
CHANGE COLUMN `privateKey` `private_key` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '私钥' AFTER `public_key`,
CHANGE COLUMN `orgId` `org_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '机构id' AFTER `private_key`;
\ No newline at end of file
...@@ -222,6 +222,13 @@ ...@@ -222,6 +222,13 @@
<version>${weixin-java.version}</version> <version>${weixin-java.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>${weixin-java.version}</version>
</dependency>
<!--工作流模块使用--> <!--工作流模块使用-->
<dependency> <dependency>
<groupId>com.alibaba.fastjson2</groupId> <groupId>com.alibaba.fastjson2</groupId>
......
package com.makeit.api.external.filter; package com.makeit.api.external.filter;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.api.external.util.RSAUtils; import com.makeit.api.external.util.RSAUtils;
import com.makeit.module.system.entity.SysApiSecret;
import com.makeit.module.system.service.SysApiSecretService;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.*; import javax.servlet.*;
import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebFilter;
...@@ -18,7 +22,8 @@ public class SignAuthFilter implements Filter { ...@@ -18,7 +22,8 @@ public class SignAuthFilter implements Filter {
private static Logger logger = LoggerFactory.getLogger(SignAuthFilter.class); private static Logger logger = LoggerFactory.getLogger(SignAuthFilter.class);
@Autowired
private SysApiSecretService sysApiSecretService;
@Override @Override
public void init(FilterConfig filterConfig) { public void init(FilterConfig filterConfig) {
...@@ -30,22 +35,30 @@ public class SignAuthFilter implements Filter { ...@@ -30,22 +35,30 @@ public class SignAuthFilter implements Filter {
HttpServletRequest request = (HttpServletRequest) req; HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res; HttpServletResponse response = (HttpServletResponse) res;
try { try {
String platform = request.getHeader("platform");
if (StringUtils.isEmpty(platform)) {
response.sendError(500, "未指定platform");
return;
}
String sign = request.getHeader("token"); String sign = request.getHeader("token");
if (StringUtils.isEmpty(sign)) { if (StringUtils.isEmpty(sign)) {
response.sendError(403, "Forbidden"); response.sendError(403, "token为空");
return; return;
} }
logger.info("getted Authorization is ---> " + sign); logger.info("getted Authorization is ---> " + sign);
// 获取客户端ip SysApiSecret sysApiSecret = sysApiSecretService.getOne(new QueryWrapper<SysApiSecret>()
/* String ip = IpUtil.getIpAddr(request); .lambda().eq(SysApiSecret::getPlatform,platform));
logger.info("getted ip is ---> " + ip);*/ if (sysApiSecret == null) {
response.sendError(500, "请配置接入方密钥信息");
return;
}
MyRequestWrapper requestWrapper = new MyRequestWrapper(request); MyRequestWrapper requestWrapper = new MyRequestWrapper(request);
String bodyString = new String(requestWrapper.getBody(), StandardCharsets.UTF_8); String bodyString = new String(requestWrapper.getBody(), StandardCharsets.UTF_8);
logger.info("getted requestbody data is ---> " + bodyString); logger.info("getted requestbody data is ---> " + bodyString);
String decryptJson = RSAUtils.privateDecrypt(sign, RSAUtils.getPrivateKey(RSAUtils.PRIVATE_KEY), "UTF-8"); String decryptJson = RSAUtils.privateDecrypt(sign, RSAUtils.getPrivateKey(sysApiSecret.getPrivateKey()), "UTF-8");
boolean couldPass = decryptJson.replaceAll("\n","").replaceAll(" ","").trim() boolean couldPass = decryptJson.replaceAll("\n","").replaceAll(" ","").trim()
.equals(bodyString.replaceAll(" ","").trim()); .equals(bodyString.replaceAll(" ","").trim());
......
...@@ -35,15 +35,16 @@ public class RSAUtils { ...@@ -35,15 +35,16 @@ public class RSAUtils {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
Map<String, String> keys = createKeys(2048); Map<String, String> keys = createKeys(2048);
System.out.println(keys); System.out.println("privateKey:" + keys.get("privateKey"));
System.out.println("publicKey:" + keys.get("publicKey"));
RSAPublicKey publicKey = getPublicKey(keys.get("publicKey")); RSAPublicKey publicKey = getPublicKey(PUBLIC_KEY);
String encrypt = publicEncrypt("{\"page\":1,\"limit\":10,\"data\":{}}", publicKey, "UTF-8"); String encrypt = publicEncrypt("{\"page\":1,\"limit\":10,\"data\":{}}", publicKey, "UTF-8");
System.out.println(encrypt); System.out.println(encrypt);
RSAPrivateKey privateKey = getPrivateKey(keys.get("privateKey")); RSAPrivateKey privateKey = getPrivateKey(PRIVATE_KEY);
String decrypt = privateDecrypt(encrypt, privateKey, "UTF-8"); String decrypt = privateDecrypt(encrypt, privateKey, "UTF-8");
System.out.println(decrypt); System.out.println(decrypt);
......
...@@ -173,6 +173,12 @@ ...@@ -173,6 +173,12 @@
<artifactId>weixin-java-miniapp</artifactId> <artifactId>weixin-java-miniapp</artifactId>
</dependency> </dependency>
<!--微信公众号-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
</dependency>
</dependencies> </dependencies>
<profiles> <profiles>
......
...@@ -91,7 +91,7 @@ public class IotDevicePropertiesOperateService extends IotCommonService { ...@@ -91,7 +91,7 @@ public class IotDevicePropertiesOperateService extends IotCommonService {
ResponseMessage responseMessage = sendPut(url, request); ResponseMessage responseMessage = sendPut(url, request);
log.info("写入设备属性信息,返回信息:{}", responseMessage.getMessage()); log.info("写入设备属性信息,返回信息:{}", responseMessage.getMessage());
if (responseMessage.getStatus() != 200) { if (responseMessage.getStatus() != 200) {
String errorMsg = "设备:" + deviceId + ",属性:" + entry.getKey() + "写入失败:" + responseMessage.getMessage(); String errorMsg = responseMessage.getMessage();
log.error("设备写入失败:{}",errorMsg); log.error("设备写入失败:{}",errorMsg);
return errorMsg; return errorMsg;
} }
......
...@@ -265,27 +265,6 @@ public class IotProductDeviceService extends IotCommonService { ...@@ -265,27 +265,6 @@ public class IotProductDeviceService extends IotCommonService {
return tempList; return tempList;
} }
return Lists.newArrayList(); return Lists.newArrayList();
/* long minute = 1440;
List<DeviceInfoContentBreathe> breatheList = Lists.newArrayList();
DeviceInfoContentBreathe deviceInfoContentBreathe;
for (long i = 1; i <= minute; i++) {
int brRandomLong = RandomUtils.nextInt(11,28);
int hrRandomLong = RandomUtils.nextInt(55,125);
int movebodyRandomLong = RandomUtils.nextInt(40,90);
deviceInfoContentBreathe = new DeviceInfoContentBreathe();
LocalDateTime localDateTime = startTime.plusMinutes(i);
long timeStamp = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
deviceInfoContentBreathe.setTimestamp(timeStamp);
DeviceInfoContentBreathe.Properties properties = new DeviceInfoContentBreathe.Properties();
properties.setBr(brRandomLong);
properties.setHr(hrRandomLong);
properties.setBodymove(movebodyRandomLong);
deviceInfoContentBreathe.setProperties(properties);
breatheList.add(deviceInfoContentBreathe);
}
return breatheList;*/
} }
public static String formatLongTime(long time) { public static String formatLongTime(long time) {
......
...@@ -74,5 +74,12 @@ public class DeviceInfoContentBreathe { ...@@ -74,5 +74,12 @@ public class DeviceInfoContentBreathe {
@JsonProperty("point") @JsonProperty("point")
// 呼吸波形 // 呼吸波形
private List<Integer> point; private List<Integer> point;
private int brStopThreshold; // 发生次数阈值
private int brFastThreshold; // 发生次数阈值
private int brSlowThreshold; // 发生次数阈值
private int hrFastThreshold; // 发生次数阈值
private int hrSlowThreshold; // 发生次数阈值
} }
} }
package com.makeit.module.system.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import com.makeit.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 第三方平台api
*
* @author lzy
* @email
* @date 2021-08-15 08:24:09
*/
@Data
@ApiModel("第三方平台api")
@TableName(value = "sys_api_secret")
public class SysApiSecret extends BaseEntity {
@ApiModelProperty("平台")
private String platform;
@ApiModelProperty("公钥")
private String publicKey;
@ApiModelProperty("私钥")
private String privateKey;
@ApiModelProperty("机构id")
private String orgId;
@ApiModelProperty("描述")
private String description;
}
package com.makeit.module.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.system.entity.Country;
import com.makeit.module.system.entity.SysApiSecret;
/**
* <p>
* 第三方api Mapper 接口
* </p>
*
* @author ywc
* @since 2021-06-09
*/
public interface SysApiSecretMapper extends BaseMapper<SysApiSecret> {
}
package com.makeit.module.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.system.entity.SysApiSecret;
public interface SysApiSecretService extends IService<SysApiSecret> {
}
package com.makeit.module.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.system.entity.SysApiSecret;
import com.makeit.module.system.mapper.SysApiSecretMapper;
import com.makeit.module.system.service.SysApiSecretService;
import org.springframework.stereotype.Service;
@Service
public class SysApiSecretServiceImpl extends ServiceImpl<SysApiSecretMapper, SysApiSecret> implements SysApiSecretService {
}
package com.makeit.utils.msg.config;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.binarywang.wx.miniapp.config.impl.WxMaRedissonConfigImpl;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.config.impl.WxMpRedissonConfigImpl;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class WxConfig {
@Value("${wx.miniapp.config.appid}")
private String appId;
@Value("${wx.miniapp.config.secret}")
private String appSecret;
@Value("${wx.mp.config.appid}")
private String mpAppId;
@Value("${wx.mp.config.secret}")
private String mpSecret;
@Autowired
private RedissonClient redissonClient;
@Bean
public WxMaService wxMaService(){
WxMaServiceImpl wxMaService = new WxMaServiceImpl();
wxMaService.setWxMaConfig(wxMaConfig());
return wxMaService;
}
public WxMaConfig wxMaConfig(){
WxMaRedissonConfigImpl wxMaRedissonConfig = new WxMaRedissonConfigImpl(redissonClient);
wxMaRedissonConfig.setAppid(appId);
wxMaRedissonConfig.setSecret(appSecret);
return wxMaRedissonConfig;
}
@Bean
public WxMpService wxMpService(){
WxMpServiceImpl wxMpService = new WxMpServiceImpl();
wxMpService.setWxMpConfigStorage(wxMpConfigStorage());
return wxMpService;
}
public WxMpConfigStorage wxMpConfigStorage(){
WxMpRedissonConfigImpl wxMpRedissonConfig = new WxMpRedissonConfigImpl(redissonClient);
wxMpRedissonConfig.setAppId(mpAppId);
wxMpRedissonConfig.setSecret(mpSecret);
return wxMpRedissonConfig;
}
}
package com.makeit.utils.msg.sender;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.hutool.core.date.DateUtil;
import com.makeit.utils.msg.SendTypeEnum;
import com.makeit.utils.msg.dto.MsgSendDTO;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Component
@Slf4j
public class WxSpSender implements IMsgSender{
@Autowired
private WxMaService wxMaService;
@Autowired
private WxMpService wxMpService;
/**
* 小程序公众号消息
* zn5fBS9cqjnN5UB78tAbm53M3dXufR2b5K1a8mkhXCY
*
* 告警对象{{thing2.DATA}}
* 告警时间{{time3.DATA}}
* 告警地点{{thing4.DATA}}
* 事件类型{{thing8.DATA}}
* 跳转文案点击查看详情
*
* @param msgDTO
*/
@Override
public void send(MsgSendDTO msgDTO) {
List<WxMpTemplateData> mpData = Arrays.asList(
new WxMpTemplateData("thing8", "报警内容"),
new WxMpTemplateData("thing4", "固定值"),
new WxMpTemplateData("thing2", "老人姓名"),
new WxMpTemplateData("time3", DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"))
);
try {
//oBmPb5o9T3q-EMsxfhPg_9OjO5k4 lixl公众号openid
//oM2OI67H11zTZL88X99PxL6rAS3Y
//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")
.data(mpData)
.build();
wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);
log.info("发送小程序消息成功");
} catch (WxErrorException e) {
log.error("发送小程序消息失败:",e);
}
}
@Override
public boolean support(SendTypeEnum sendTypeEnum) {
return false;
}
}
...@@ -7,6 +7,7 @@ import com.makeit.common.page.PageVO; ...@@ -7,6 +7,7 @@ import com.makeit.common.page.PageVO;
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.alarm.PlatAlarmRecordQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO; import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -27,18 +28,21 @@ public class PlatAlarmRecordChildrenController { ...@@ -27,18 +28,21 @@ public class PlatAlarmRecordChildrenController {
@ApiOperation("列表") @ApiOperation("列表")
@PostMapping("page") @PostMapping("page")
@TenantIdIgnore
public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) { public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) {
//只能看到发给关联的长者告警 //只能看到发给关联的长者告警
return ApiResponseUtils.success(platAlarmRecordService.childrenPage(dto)); return ApiResponseUtils.success(platAlarmRecordService.childrenPage(dto));
} }
@ApiOperation("查看") @ApiOperation("查看")
@PostMapping("view") @PostMapping("view")
@TenantIdIgnore
public ApiResponseEntity<PlatAlarmRecordVO> view(@RequestBody BaseIdDTO dto) { public ApiResponseEntity<PlatAlarmRecordVO> view(@RequestBody BaseIdDTO dto) {
return ApiResponseUtils.success(platAlarmRecordService.view(dto.getId())); return ApiResponseUtils.success(platAlarmRecordService.view(dto.getId()));
} }
@ApiOperation("已读") @ApiOperation("已读")
@PostMapping("read") @PostMapping("read")
@TenantIdIgnore
public ApiResponseEntity<Void> read(@RequestBody BaseIdDTO dto) { public ApiResponseEntity<Void> read(@RequestBody BaseIdDTO dto) {
platAlarmRecordService.read(dto.getId()); platAlarmRecordService.read(dto.getId());
return ApiResponseUtils.success(); return ApiResponseUtils.success();
...@@ -46,6 +50,7 @@ public class PlatAlarmRecordChildrenController { ...@@ -46,6 +50,7 @@ public class PlatAlarmRecordChildrenController {
@ApiOperation("未读条数") @ApiOperation("未读条数")
@PostMapping("unreadCount") @PostMapping("unreadCount")
@TenantIdIgnore
public ApiResponseEntity<Integer> unreadCount(@RequestBody PlatAlarmRecordQueryDTO dto) { public ApiResponseEntity<Integer> unreadCount(@RequestBody PlatAlarmRecordQueryDTO dto) {
Integer count = platAlarmRecordService.unreadCount(dto); Integer count = platAlarmRecordService.unreadCount(dto);
return ApiResponseUtils.success(count); return ApiResponseUtils.success(count);
...@@ -53,6 +58,7 @@ public class PlatAlarmRecordChildrenController { ...@@ -53,6 +58,7 @@ public class PlatAlarmRecordChildrenController {
@ApiOperation("误报") @ApiOperation("误报")
@PostMapping("misinformation") @PostMapping("misinformation")
@TenantIdIgnore
public ApiResponseEntity<Void> misinformation(@RequestBody BaseIdDTO dto) { public ApiResponseEntity<Void> misinformation(@RequestBody BaseIdDTO dto) {
platAlarmRecordService.misinformation(dto.getId()); platAlarmRecordService.misinformation(dto.getId());
return ApiResponseUtils.success(); return ApiResponseUtils.success();
......
...@@ -6,6 +6,8 @@ import com.makeit.common.response.ApiResponseEntity; ...@@ -6,6 +6,8 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderQueryDTO; import com.makeit.dto.platform.elder.PlatElderQueryDTO;
import com.makeit.dto.platform.elder.add.PlatElderDTOVO; import com.makeit.dto.platform.elder.add.PlatElderDTOVO;
import com.makeit.global.annotation.AuthIgnore;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderService; import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.vo.platform.elder.PlatElderListVO; import com.makeit.vo.platform.elder.PlatElderListVO;
import com.makeit.vo.wechat.elder.PlatElderWechatSimpleVO; import com.makeit.vo.wechat.elder.PlatElderWechatSimpleVO;
...@@ -41,6 +43,13 @@ public class PlatElderChildrenController { ...@@ -41,6 +43,13 @@ public class PlatElderChildrenController {
return ApiResponseUtils.success(platElderService.list(dto)); return ApiResponseUtils.success(platElderService.list(dto));
} }
@ApiOperation("根据老人姓名和证件号查询")
@PostMapping("listByElder")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderListVO>> listByElder(@RequestBody PlatElderQueryDTO dto) {
return ApiResponseUtils.success(platElderService.listByElder(dto));
}
@ApiOperation("我的家庭") @ApiOperation("我的家庭")
@PostMapping("listMy") @PostMapping("listMy")
public ApiResponseEntity<List<PlatElderWechatSimpleVO>> listMy() { public ApiResponseEntity<List<PlatElderWechatSimpleVO>> listMy() {
......
...@@ -4,8 +4,12 @@ package com.makeit.module.controller.children.elder; ...@@ -4,8 +4,12 @@ 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.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;
...@@ -16,6 +20,8 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -16,6 +20,8 @@ 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.List;
/** /**
* <p> * <p>
* 长者子女账号 前端控制器 * 长者子女账号 前端控制器
...@@ -38,6 +44,15 @@ public class PlatElderChildrenInfoChildrenController { ...@@ -38,6 +44,15 @@ public class PlatElderChildrenInfoChildrenController {
return ApiResponseUtils.success(platElderChildrenInfoService.view()); return ApiResponseUtils.success(platElderChildrenInfoService.view());
} }
@ApiOperation("根据openid选择老人列表")
@PostMapping("listByOpenid")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderChildrenInfoWechatVO>> listByOpenid(@RequestBody PlatElderChildrenInfo platElderChildrenInfo) {
return ApiResponseUtils.success(platElderChildrenInfoService.listByOpenid(platElderChildrenInfo.getOpenid()));
}
@ApiOperation("编辑") @ApiOperation("编辑")
@PostMapping("edit") @PostMapping("edit")
public ApiResponseEntity<?> edit(@Validated @RequestBody PlatElderChildrenInfoWechatDTOVO dto) { public ApiResponseEntity<?> edit(@Validated @RequestBody PlatElderChildrenInfoWechatDTOVO dto) {
......
...@@ -2,6 +2,7 @@ package com.makeit.module.controller.children.elder; ...@@ -2,6 +2,7 @@ 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.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.wechat.PlatElderChildrenInfoUserLoginWechatService; import com.makeit.service.wechat.PlatElderChildrenInfoUserLoginWechatService;
import com.makeit.utils.third.wechat.WechatLoginPhoneDTO; import com.makeit.utils.third.wechat.WechatLoginPhoneDTO;
import com.makeit.utils.user.wechat.WechatUserInfo; import com.makeit.utils.user.wechat.WechatUserInfo;
...@@ -23,6 +24,7 @@ public class PlatElderChildrenInfoUserLoginChildrenController { ...@@ -23,6 +24,7 @@ public class PlatElderChildrenInfoUserLoginChildrenController {
@ApiOperation(value = "登录") @ApiOperation(value = "登录")
@PostMapping(value = "/login") @PostMapping(value = "/login")
@TenantIdIgnore
public ApiResponseEntity<WechatUserInfo> login(@RequestBody WechatLoginPhoneDTO dto) { public ApiResponseEntity<WechatUserInfo> login(@RequestBody WechatLoginPhoneDTO dto) {
return ApiResponseUtils.success(platElderChildrenInfoUserLoginWechatService.login(dto)); return ApiResponseUtils.success(platElderChildrenInfoUserLoginWechatService.login(dto));
} }
......
...@@ -4,7 +4,6 @@ package com.makeit.module.controller.children.elder; ...@@ -4,7 +4,6 @@ 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.PlatElderReportDTO; import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.global.annotation.AuthIgnore;
import com.makeit.service.platform.elder.PlatElderDayReportWeekService; import com.makeit.service.platform.elder.PlatElderDayReportWeekService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO; import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.report.day.*; import com.makeit.vo.platform.elder.report.day.*;
...@@ -104,13 +103,5 @@ public class PlatElderReportWeekChildrenController { ...@@ -104,13 +103,5 @@ public class PlatElderReportWeekChildrenController {
} }
@ApiOperation("定时任务")
@PostMapping("heartRespiratoryJob")
@AuthIgnore
public ApiResponseEntity<String> heartRespiratoryJob() {
platElderDayReportWeekService.heartRespiratoryJob();
return ApiResponseUtils.success();
}
} }
...@@ -8,6 +8,8 @@ import com.makeit.common.response.ApiResponseEntity; ...@@ -8,6 +8,8 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.children.PlatElderChildrenInfoDTOVO; import com.makeit.dto.platform.elder.children.PlatElderChildrenInfoDTOVO;
import com.makeit.dto.platform.elder.children.PlatElderChildrenInfoQueryDTO; import com.makeit.dto.platform.elder.children.PlatElderChildrenInfoQueryDTO;
import com.makeit.global.annotation.AuthIgnore;
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.PlatElderChildrenInfoListVO; import com.makeit.vo.platform.elder.PlatElderChildrenInfoListVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
......
...@@ -7,8 +7,9 @@ import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO; ...@@ -7,8 +7,9 @@ import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO;
import com.makeit.global.annotation.AuthIgnore; 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.PlatElderReportMonthService;
import com.makeit.service.platform.elder.PlatElderSleepService; import com.makeit.service.platform.elder.PlatElderSleepService;
import com.makeit.task.IotSyncTask; import com.makeit.task.PlatElderReportTask;
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;
...@@ -31,29 +32,48 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -31,29 +32,48 @@ import org.springframework.web.bind.annotation.RestController;
public class PlatElderSleepController { public class PlatElderSleepController {
@Autowired @Autowired
private IotSyncTask iotSyncTask; private PlatElderReportTask platElderReportTask;
@Autowired @Autowired
private PlatElderSleepService platElderSleepService; private PlatElderSleepService platElderSleepService;
@Autowired @Autowired
private PlatDeviceService platDeviceService; private PlatDeviceService platDeviceService;
@Autowired
private PlatElderReportMonthService platElderReportMonthService;
@ApiOperation("测试") @ApiOperation("测试")
@PostMapping("test") @PostMapping("test1")
@AuthIgnore @AuthIgnore
@TenantIdIgnore @TenantIdIgnore
public ApiResponseEntity<Void> test() { public ApiResponseEntity<Void> test1() {
iotSyncTask.elderSleepSleepAnalysisTask(); platElderSleepService.test1();
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@ApiOperation("测试") @ApiOperation("测试")
@PostMapping("test1") @PostMapping("test2")
@AuthIgnore @AuthIgnore
@TenantIdIgnore public ApiResponseEntity<Void> heartRespiratoryTask() {
public ApiResponseEntity<Void> test1() { platElderReportTask.heartRespiratoryTask();
platElderSleepService.test1(); return ApiResponseUtils.success();
}
@ApiOperation("测试")
@PostMapping("test3")
@AuthIgnore
public ApiResponseEntity<Void> elderHeartRespiratoryAnalysisTask() {
platElderReportTask.elderHeartRespiratoryAnalysisTask();
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@ApiOperation("测试")
@PostMapping("test4")
@AuthIgnore
public ApiResponseEntity<Void> elderSleepSleepAnalysisTask() {
platElderReportTask.elderSleepSleepAnalysisTask();
return ApiResponseUtils.success();
}
@ApiOperation("编辑设备属性") @ApiOperation("编辑设备属性")
@PostMapping("editDeviceProperties") @PostMapping("editDeviceProperties")
......
...@@ -10,6 +10,7 @@ import com.makeit.common.response.ApiResponseUtils; ...@@ -10,6 +10,7 @@ import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.device.PlatDeviceQueryDTO; import com.makeit.dto.platform.device.PlatDeviceQueryDTO;
import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO; import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceEditWechatDTO; import com.makeit.dto.wechat.device.PlatDeviceEditWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceNetAttrWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceSetupDTO; import com.makeit.dto.wechat.device.PlatDeviceSetupDTO;
import com.makeit.entity.platform.auth.PlatOrg; import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.entity.platform.auth.PlatRole; import com.makeit.entity.platform.auth.PlatRole;
...@@ -106,5 +107,12 @@ public class PlatDeviceWechatController { ...@@ -106,5 +107,12 @@ public class PlatDeviceWechatController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@ApiOperation("编辑设备网络属性")
@PostMapping("editDeviceNetInfo")
public ApiResponseEntity<?> editDeviceNetInfo(@RequestBody PlatDeviceNetAttrWechatDTO dto) {
platDeviceService.editDeviceNetInfo(dto);
return ApiResponseUtils.success();
}
} }
package com.makeit.module.controller.wechat.sys;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.sys.PlatLogoConfigDTO;
import com.makeit.dto.platform.sys.PlatLogoConfigDTOVO;
import com.makeit.dto.platform.sys.PlatLogoConfigQueryDTO;
import com.makeit.global.annotation.AuthIgnore;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.sys.PlatLogoConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author:lzy
* @Date:2023/9/12 10:41
* @Describe:
*/
@Api(tags = "LOGO设置")
@RestController
@RequestMapping("/plat/wechat/sys/logo/config/")
public class PlatLogoConfigWechatController {
@Autowired
private PlatLogoConfigService platLogoConfigService;
@ApiOperation("设置LOGO")
@PostMapping("add")
public ApiResponseEntity<?> add(@RequestBody PlatLogoConfigDTO dto) {
platLogoConfigService.add(dto);
return ApiResponseUtils.success();
}
@ApiOperation("查看")
@PostMapping("view")
public ApiResponseEntity<PlatLogoConfigDTOVO> view(@RequestBody PlatLogoConfigQueryDTO dto) {
PlatLogoConfigDTOVO data = platLogoConfigService.view(dto);
return ApiResponseUtils.success(data);
}
@ApiOperation("忽略租户查看")
@PostMapping("viewIgnore")
@AuthIgnore
@TenantIdIgnore
public ApiResponseEntity<PlatLogoConfigDTOVO> viewIgnore(@RequestBody PlatLogoConfigQueryDTO dto) {
PlatLogoConfigDTOVO data = platLogoConfigService.view(dto);
return ApiResponseUtils.success(data);
}
}
...@@ -19,6 +19,8 @@ public class PlatElderIdDTO { ...@@ -19,6 +19,8 @@ public class PlatElderIdDTO {
@ApiModelProperty(value = "长者id") @ApiModelProperty(value = "长者id")
private String elderId; private String elderId;
@ApiModelProperty(value = "长者id")
private String orgId;
@ApiModelProperty(value = "设备id") @ApiModelProperty(value = "设备id")
private String deviceId; private String deviceId;
......
...@@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.List;
/** /**
* <p> * <p>
* 长者子女账号 * 长者子女账号
...@@ -30,6 +32,8 @@ public class PlatElderChildrenInfoQueryDTO extends BaseTenantDTO { ...@@ -30,6 +32,8 @@ public class PlatElderChildrenInfoQueryDTO extends BaseTenantDTO {
@ApiModelProperty(value = "组织id") @ApiModelProperty(value = "组织id")
private String orgId; private String orgId;
@ApiModelProperty(value = "组织id集合")
private List<String> orgIdList;
} }
...@@ -25,8 +25,4 @@ public class PlatDeviceAttrWechatDTO extends PlatDeviceBaseAttrDTO { ...@@ -25,8 +25,4 @@ public class PlatDeviceAttrWechatDTO extends PlatDeviceBaseAttrDTO {
@ApiModelProperty(value = "读取硬件的系统参数,主要读取服务信息和雷达信息,多个逗号隔开") @ApiModelProperty(value = "读取硬件的系统参数,主要读取服务信息和雷达信息,多个逗号隔开")
private String readProperties; private String readProperties;
//private String usrServerInfo;
@ApiModelProperty(value = "服务信息 {\"password\":\"1234576\",\"secureKey\":\"kuangshi\",\"secureId\":\"kuangshi\",\"addr\":\"mqtt://121.1.1.2\",\"username\":\"kuangshi\",\"port\":1883} ")
private UserServerInfo usrServerInfo;
} }
...@@ -27,15 +27,5 @@ public class PlatDeviceEditWechatDTO extends BaseTenantDTO { ...@@ -27,15 +27,5 @@ public class PlatDeviceEditWechatDTO extends BaseTenantDTO {
@ApiModelProperty(value = "设备名称") @ApiModelProperty(value = "设备名称")
private String name; private String name;
@ApiModelProperty(value = "设备安装方式")
private String installation;
@ApiModelProperty(value = "开关指示灯")
private String indicatorLight;
@ApiModelProperty(value = "设备属性json")
private String attribute;
} }
package com.makeit.dto.wechat.device;
import com.makeit.dto.platform.device.PlatDeviceBaseAttrDTO;
import com.makeit.module.iot.dto.UserServerInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 设备
* </p>
*
* @author eugene young
* @since 2023-09-05
*/
@Data
@ApiModel(value = "PlatDeviceNetAttrWechatDTO", description = "设备网络信息")
public class PlatDeviceNetAttrWechatDTO{
@ApiModelProperty(value = "设备id")
private String deviceId;
//private String usrServerInfo;
@ApiModelProperty(value = "服务信息 {\"password\":\"1234576\",\"secureKey\":\"kuangshi\",\"secureId\":\"kuangshi\",\"addr\":\"mqtt://121.1.1.2\",\"username\":\"kuangshi\",\"port\":1883} ")
private UserServerInfo usrServerInfo;
}
...@@ -123,14 +123,14 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -123,14 +123,14 @@ 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()); PlatElderChildrenInfo platElderChildrenInfo = platElderChildrenInfoService.getById(WechatUserUtil.getUserId());
log.info("子女端账号:"+platElderChildrenInfo.toString()); List<PlatElderChildrenInfo> platElderChildrenInfoList = getPlatElderChildrenInfosByOpenid(platElderChildrenInfo.getOpenid());
String elderId = platElderChildrenInfo.getElderId(); log.info("子女端账号:{}",JSON.toJSONString(platElderChildrenInfo));
if(StringUtils.isBlank(elderId)){ if(CollectionUtils.isEmpty(platElderChildrenInfoList)){
return new PageVO<>(); return PageVO.emptyPage();
} }
String[] split = elderId.split(","); List<String> elderIdList = platElderChildrenInfoList.stream().map(PlatElderChildrenInfo::getElderId).collect(Collectors.toList());
PlatAlarmRecordQueryDTO data = dto.getData(); PlatAlarmRecordQueryDTO data = dto.getData();
data.setElderIdList(Arrays.asList(split)); data.setElderIdList(elderIdList);
data.setNoticeStatus(CommonEnum.YES.getValue()); data.setNoticeStatus(CommonEnum.YES.getValue());
return page(dto); return page(dto);
} }
...@@ -169,12 +169,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -169,12 +169,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
.le(Objects.nonNull(param.getDealDateTo()), PlatAlarmRecord::getDealDate, param.getDealDateTo()) .le(Objects.nonNull(param.getDealDateTo()), PlatAlarmRecord::getDealDate, param.getDealDateTo())
.in(CollectionUtils.isNotEmpty(orgIdList), PlatAlarmRecord::getOrgId, orgIdList) .in(CollectionUtils.isNotEmpty(orgIdList), PlatAlarmRecord::getOrgId, orgIdList)
.apply(StringUtils.isNotBlank(param.getNotifyUser()), "find_in_set('" + param.getNotifyUser() + "',notify_user)") .apply(StringUtils.isNotBlank(param.getNotifyUser()), "find_in_set('" + param.getNotifyUser() + "',notify_user)")
.and(CollectionUtils.isNotEmpty(param.getElderIdList()), qw -> { .in(CollectionUtils.isNotEmpty(param.getElderIdList()),PlatAlarmRecord::getElderIds,param.getElderIdList())
List<String> elderIdList = param.getElderIdList();
for (String elderId : elderIdList) {
qw.or().apply("find_in_set('" + elderId + "',elder_ids)");
}
})
.eq(StringUtils.isNotBlank(param.getNoticeStatus()),PlatAlarmRecord::getNoticeStatus,param.getNoticeStatus()) .eq(StringUtils.isNotBlank(param.getNoticeStatus()),PlatAlarmRecord::getNoticeStatus,param.getNoticeStatus())
.eq(StringUtils.isNotBlank(param.getReadFlag()),PlatAlarmRecord::getReadFlag,param.getReadFlag()) .eq(StringUtils.isNotBlank(param.getReadFlag()),PlatAlarmRecord::getReadFlag,param.getReadFlag())
.orderByDesc(BaseEntity::getCreateDate) .orderByDesc(BaseEntity::getCreateDate)
...@@ -540,22 +535,24 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -540,22 +535,24 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
@Override @Override
public Integer unreadCount(PlatAlarmRecordQueryDTO dto) { public Integer unreadCount(PlatAlarmRecordQueryDTO dto) {
PlatElderChildrenInfo platElderChildrenInfo = platElderChildrenInfoService.getById(WechatUserUtil.getUserId()); PlatElderChildrenInfo platElderChildrenInfo = platElderChildrenInfoService.getById(WechatUserUtil.getUserId());
log.info("子女端账号:"+platElderChildrenInfo.toString()); List<PlatElderChildrenInfo> platElderChildrenInfoList = getPlatElderChildrenInfosByOpenid(platElderChildrenInfo.getOpenid());
if (platElderChildrenInfo == null) { log.info("子女端账号:{}",JSON.toJSONString(platElderChildrenInfo));
return 0; if(CollectionUtils.isEmpty(platElderChildrenInfoList)){
}
String elderId = platElderChildrenInfo.getElderId();
if(StringUtils.isBlank(elderId)){
return 0; return 0;
} }
String[] split = elderId.split(","); List<String> elderIdList = platElderChildrenInfoList.stream().map(PlatElderChildrenInfo::getElderId).collect(Collectors.toList());
dto.setElderIdList(Arrays.asList(split)); dto.setElderIdList(elderIdList);
dto.setNoticeStatus(CommonEnum.YES.getValue()); dto.setNoticeStatus(CommonEnum.YES.getValue());
dto.setReadFlag(CommonEnum.NO.getValue()); dto.setReadFlag(CommonEnum.NO.getValue());
LambdaQueryWrapper<PlatAlarmRecord> lambdaQueryWrapper = getLambdaQueryWrapper(dto); LambdaQueryWrapper<PlatAlarmRecord> lambdaQueryWrapper = getLambdaQueryWrapper(dto);
return Math.toIntExact(count(lambdaQueryWrapper)); return Math.toIntExact(count(lambdaQueryWrapper));
} }
private List<PlatElderChildrenInfo> getPlatElderChildrenInfosByOpenid(String openid) {
return platElderChildrenInfoService.list(new QueryWrapper<PlatElderChildrenInfo>().lambda().eq(PlatElderChildrenInfo::getOpenid, openid)
.isNotNull(PlatElderChildrenInfo::getElderId));
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void misinformation(String id) { public void misinformation(String id) {
......
...@@ -429,7 +429,7 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -429,7 +429,7 @@ public class DataScreenServiceImpl implements DataScreenService {
//获取该账号的权限组织 //获取该账号的权限组织
List<PlatOrg> orgs = belongToScopeList(dto.getType()); List<PlatOrg> orgs = belongToScopeList(dto.getType());
if(orgs.isEmpty()){ if(orgs.isEmpty()){
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList()); List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList());
...@@ -440,7 +440,7 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -440,7 +440,7 @@ public class DataScreenServiceImpl implements DataScreenService {
.in(PlatOrg::getId, dto.getOrgIds()) .in(PlatOrg::getId, dto.getOrgIds())
.eq(PlatOrg::getType, dto.getType())); .eq(PlatOrg::getType, dto.getType()));
if(platOrgs.isEmpty()){ if(platOrgs.isEmpty()){
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> orgIdList = platOrgs.stream().map(PlatOrg::getId).collect(Collectors.toList()); List<String> orgIdList = platOrgs.stream().map(PlatOrg::getId).collect(Collectors.toList());
dto.setOrgIds(orgIdList); dto.setOrgIds(orgIdList);
...@@ -507,7 +507,7 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -507,7 +507,7 @@ public class DataScreenServiceImpl implements DataScreenService {
//获取该账号的权限组织 //获取该账号的权限组织
List<PlatOrg> orgs = belongToScopeList(dto.getType()); List<PlatOrg> orgs = belongToScopeList(dto.getType());
if(orgs.isEmpty()){ if(orgs.isEmpty()){
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList()); List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList());
...@@ -518,7 +518,7 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -518,7 +518,7 @@ public class DataScreenServiceImpl implements DataScreenService {
.in(PlatOrg::getId, dto.getOrgIds()) .in(PlatOrg::getId, dto.getOrgIds())
.eq(PlatOrg::getType, dto.getType())); .eq(PlatOrg::getType, dto.getType()));
if(platOrgs.isEmpty()){ if(platOrgs.isEmpty()){
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> orgIdList = platOrgs.stream().map(PlatOrg::getId).collect(Collectors.toList()); List<String> orgIdList = platOrgs.stream().map(PlatOrg::getId).collect(Collectors.toList());
dto.setOrgIds(orgIdList); dto.setOrgIds(orgIdList);
...@@ -534,7 +534,7 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -534,7 +534,7 @@ public class DataScreenServiceImpl implements DataScreenService {
Page<PlatDeviceListVO> page = platDeviceService.getDevices(dto, p); Page<PlatDeviceListVO> page = platDeviceService.getDevices(dto, p);
List<PlatDeviceListVO> voList = page.getRecords(); List<PlatDeviceListVO> voList = page.getRecords();
if(CollectionUtils.isEmpty(voList)){ if(CollectionUtils.isEmpty(voList)){
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> spaceIdList = voList.stream().flatMap(vo -> { List<String> spaceIdList = voList.stream().flatMap(vo -> {
......
...@@ -12,6 +12,7 @@ import com.makeit.dto.platform.device.PlatDeviceQueryDTO; ...@@ -12,6 +12,7 @@ import com.makeit.dto.platform.device.PlatDeviceQueryDTO;
import com.makeit.dto.saas.device.PlatDeviceEditSaasDTO; import com.makeit.dto.saas.device.PlatDeviceEditSaasDTO;
import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO; import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceEditWechatDTO; import com.makeit.dto.wechat.device.PlatDeviceEditWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceNetAttrWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceSetupDTO; import com.makeit.dto.wechat.device.PlatDeviceSetupDTO;
import com.makeit.entity.platform.device.PlatDevice; import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.module.iot.vo.DeviceProperties; import com.makeit.module.iot.vo.DeviceProperties;
...@@ -75,4 +76,6 @@ public interface PlatDeviceService extends IService<PlatDevice> { ...@@ -75,4 +76,6 @@ public interface PlatDeviceService extends IService<PlatDevice> {
void batchEditProperties(PlatDeviceAttrDTO dto); void batchEditProperties(PlatDeviceAttrDTO dto);
boolean updateDeviceStatus(String messageType, String deviceId, String iot_tenantId); boolean updateDeviceStatus(String messageType, String deviceId, String iot_tenantId);
void editDeviceNetInfo(PlatDeviceNetAttrWechatDTO dto);
} }
...@@ -19,6 +19,7 @@ import com.makeit.dto.platform.device.*; ...@@ -19,6 +19,7 @@ import com.makeit.dto.platform.device.*;
import com.makeit.dto.saas.device.PlatDeviceEditSaasDTO; import com.makeit.dto.saas.device.PlatDeviceEditSaasDTO;
import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO; import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceEditWechatDTO; import com.makeit.dto.wechat.device.PlatDeviceEditWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceNetAttrWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceSetupDTO; import com.makeit.dto.wechat.device.PlatDeviceSetupDTO;
import com.makeit.entity.platform.auth.PlatOrg; import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.entity.platform.auth.PlatRole; import com.makeit.entity.platform.auth.PlatRole;
...@@ -134,7 +135,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -134,7 +135,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
//List<PlatDeviceListVO> voList = BeanDtoVoUtils.listVo(records, PlatDeviceListVO.class); //List<PlatDeviceListVO> voList = BeanDtoVoUtils.listVo(records, PlatDeviceListVO.class);
if (CollectionUtils.isEmpty(records)) { if (CollectionUtils.isEmpty(records)) {
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> spaceIdList = records.stream().flatMap(vo -> { List<String> spaceIdList = records.stream().flatMap(vo -> {
...@@ -210,6 +211,12 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -210,6 +211,12 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
if (other != null) { if (other != null) {
other.setAttribute(dto.getAttribute()); other.setAttribute(dto.getAttribute());
platDeviceOtherService.updateById(other); platDeviceOtherService.updateById(other);
} else {
other = new PlatDeviceOther();
other.setDeviceId(db.getId());
other.setOriDeviceId(db.getOriDeviceId());
other.setAttribute(dto.getAttribute());
platDeviceOtherService.save(other);
} }
// 写入设备 // 写入设备
...@@ -307,41 +314,13 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -307,41 +314,13 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void wechatEdit(PlatDeviceEditWechatDTO dto) { public void wechatEdit(PlatDeviceEditWechatDTO dto) {
PlatDevice db = getById(dto.getId()); PlatDevice db = getById(dto.getId());
db.setName(dto.getName());
String id = db.getId();
PlatDeviceOther other = platDeviceOtherService.getOne(new QueryWrapper<PlatDeviceOther>().lambda()
.eq(PlatDeviceOther::getDeviceId, db.getId()));
if (other == null) {
other = new PlatDeviceOther();
}
String otherId = other.getId();
BeanUtils.copyProperties(dto, db);
db.setId(id);
BeanUtils.copyProperties(dto, other);
other.setId(otherId);
other.setDeviceId(id);
other.setOriDeviceId(db.getOriDeviceId());
updateById(db); updateById(db);
deviceCacheUtil.put(db); deviceCacheUtil.put(db);
platDeviceOtherService.saveOrUpdate(other);
if (StringUtils.isNotEmpty(other.getAttribute())) {
PlatDeviceAttrWechatDTO deviceAttrWechatDTO = JsonUtil.toObj(other.getAttribute(), PlatDeviceAttrWechatDTO.class);
//更新区域设置设备安装方式
platRegionSettingService.update(new UpdateWrapper<PlatRegionSetting>().lambda()
.set(PlatRegionSetting::getInstallType, deviceAttrWechatDTO.getRadarMount())
.eq(PlatRegionSetting::getDeviceId, other.getDeviceId()));
}
} }
@Override @Override
...@@ -429,13 +408,33 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -429,13 +408,33 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
log.info("写入设备属性请求参数:{}",JSON.toJSONString(dto)); log.info("写入设备属性请求参数:{}",JSON.toJSONString(dto));
String deviceId = dto.getDeviceId(); String deviceId = dto.getDeviceId();
Map<String, Object> map = getAttrMap(dto); Map<String, Object> map = getAttrMap(dto);
String result = devicePropertiesOperateService.deviceWriteAttr(deviceId, map);
if (StringUtils.isNotEmpty(result)) {
throw new RuntimeException("设备写入失败:" + result);
}
PlatDeviceOther other = platDeviceOtherService.getOne(new QueryWrapper<PlatDeviceOther>().lambda()
.eq(PlatDeviceOther::getOriDeviceId, deviceId)
.last("limit 1"));
if (other != null) {
other.setAttribute(JSON.toJSONString(map));
platDeviceOtherService.updateById(other);
}
if (dto.getRadarMount() != null) {
List<PlatDevice> platDeviceList = list(new QueryWrapper<PlatDevice>().lambda().eq(PlatDevice::getOriDeviceId, deviceId));
//更新区域设置设备安装方式
platRegionSettingService.update(new UpdateWrapper<PlatRegionSetting>().lambda()
.set(PlatRegionSetting::getInstallType, dto.getRadarMount())
.in(CollectionUtils.isNotEmpty(platDeviceList),PlatRegionSetting::getDeviceId, StreamUtil.map(platDeviceList,BaseEntity::getId)));
}
}
@Override
public void editDeviceNetInfo(PlatDeviceNetAttrWechatDTO dto) {
String deviceId = dto.getDeviceId();
UserServerInfo usrServerInfo = dto.getUsrServerInfo(); UserServerInfo usrServerInfo = dto.getUsrServerInfo();
boolean usrServerInfoFlag = usrServerInfo != null && (StringUtils.isNotEmpty(usrServerInfo.getUsername()) || StringUtils.isNotEmpty(usrServerInfo.getPassword()) log.info("写入设备属性请求参数:{}",JSON.toJSONString(dto));
|| StringUtils.isNotEmpty(usrServerInfo.getAddr()) || usrServerInfo.getPort() != null || Map<String, Object> map = Maps.newHashMap();
StringUtils.isNotEmpty(usrServerInfo.getSecureId()) || StringUtils.isNotEmpty(usrServerInfo.getSecureKey()));
if (usrServerInfoFlag) {
map.put("usrServerInfo",JSON.toJSONString(usrServerInfo)); map.put("usrServerInfo",JSON.toJSONString(usrServerInfo));
}
String result = devicePropertiesOperateService.deviceWriteAttr(deviceId, map); String result = devicePropertiesOperateService.deviceWriteAttr(deviceId, map);
if (StringUtils.isNotEmpty(result)) { if (StringUtils.isNotEmpty(result)) {
throw new RuntimeException("设备写入失败:" + result); throw new RuntimeException("设备写入失败:" + result);
...@@ -443,24 +442,15 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -443,24 +442,15 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
PlatDeviceOther other = platDeviceOtherService.getOne(new QueryWrapper<PlatDeviceOther>().lambda() PlatDeviceOther other = platDeviceOtherService.getOne(new QueryWrapper<PlatDeviceOther>().lambda()
.eq(PlatDeviceOther::getOriDeviceId, deviceId) .eq(PlatDeviceOther::getOriDeviceId, deviceId)
.last("limit 1")); .last("limit 1"));
if (other != null && usrServerInfoFlag) { if (other != null) {
other.setProtocolAccount(usrServerInfo.getUsername()); other.setProtocolAccount(usrServerInfo.getUsername());
other.setProtocolPassword(usrServerInfo.getPassword()); other.setProtocolPassword(usrServerInfo.getPassword());
other.setProtocolAddress(usrServerInfo.getAddr()); other.setProtocolAddress(usrServerInfo.getAddr());
other.setProtocolPort(usrServerInfo.getPort() == null ? "" : usrServerInfo.getPort().toString()); other.setProtocolPort(usrServerInfo.getPort() == null ? "" : usrServerInfo.getPort().toString());
other.setSecureId(usrServerInfo.getSecureId()); other.setSecureId(usrServerInfo.getSecureId());
other.setSecureKey(usrServerInfo.getSecureKey()); other.setSecureKey(usrServerInfo.getSecureKey());
}
if (other != null && !map.isEmpty() && !usrServerInfoFlag) {
other.setAttribute(JSON.toJSONString(map));
platDeviceOtherService.updateById(other); platDeviceOtherService.updateById(other);
} }
if (dto.getRadarMount() != null) {
//更新区域设置设备安装方式
platRegionSettingService.update(new UpdateWrapper<PlatRegionSetting>().lambda()
.set(PlatRegionSetting::getInstallType, dto.getRadarMount())
.eq(PlatRegionSetting::getDeviceId, deviceId));
}
} }
private static Map<String, Object> getAttrMap(PlatDeviceBaseAttrDTO dto) { private static Map<String, Object> getAttrMap(PlatDeviceBaseAttrDTO dto) {
...@@ -577,6 +567,9 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -577,6 +567,9 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
.in(PlatRoomBedDevice::getDeviceId,deviceIdList) .in(PlatRoomBedDevice::getDeviceId,deviceIdList)
.eq(BaseBusEntity::getTenantId, platTenant.getId())); .eq(BaseBusEntity::getTenantId, platTenant.getId()));
} }
if (CollectionUtils.isEmpty(iotDeviceIdSet)) {
continue;
}
LambdaQueryWrapper<PlatDevice> deviceLambdaQueryWrapper = new LambdaQueryWrapper<PlatDevice>().eq(BaseBusEntity::getTenantId, platTenant.getId()) LambdaQueryWrapper<PlatDevice> deviceLambdaQueryWrapper = new LambdaQueryWrapper<PlatDevice>().eq(BaseBusEntity::getTenantId, platTenant.getId())
.in(PlatDevice::getOriDeviceId, iotDeviceIdSet); .in(PlatDevice::getOriDeviceId, iotDeviceIdSet);
...@@ -585,14 +578,33 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -585,14 +578,33 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
List<PlatDevice> deviceList = list(deviceLambdaQueryWrapper); List<PlatDevice> deviceList = list(deviceLambdaQueryWrapper);
//更新平台设备 //更新平台设备
Collection<PlatDevice> platDevices = convertToPlatDevice(iotDeviceList, deviceList, platTenant.getId(), dicNameIdMap); Collection<PlatDevice> platDevices = convertToPlatDevice(iotDeviceList, deviceList, platTenant.getId(), dicNameIdMap);
saveOrUpdateBatch(platDevices); saveOrUpdateBatch(platDevices);
saveDeviceOtherInfo(platDevices);
deviceCacheUtil.putAll(platDevices); deviceCacheUtil.putAll(platDevices);
} }
log.info("结束执行同步设备信息接口"); log.info("结束执行同步设备信息接口");
} }
private void saveDeviceOtherInfo(Collection<PlatDevice> platDevices) {
List<String> deviceIdList = platDevices.stream().map(BaseEntity::getId).collect(Collectors.toList());
List<PlatDeviceOther> platDeviceOtherList = platDeviceOtherService.list(new QueryWrapper<PlatDeviceOther>().lambda().in(PlatDeviceOther::getDeviceId, deviceIdList));
Map<String, PlatDeviceOther> deviceOtherMap = StreamUtil.toMap(platDeviceOtherList, PlatDeviceOther::getDeviceId);
for (PlatDevice platDevice : platDevices) {
PlatDeviceOther platDeviceOther = deviceOtherMap.get(platDevice.getId());
if (platDeviceOther == null) {
platDeviceOther = new PlatDeviceOther();
platDeviceOther.setDeviceId(platDevice.getId());
platDeviceOther.setOriDeviceId(platDevice.getOriDeviceId());
platDeviceOther.setTenantId(platDevice.getTenantId());
platDeviceOtherService.save(platDeviceOther);
}
}
}
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 -> {
......
...@@ -13,4 +13,5 @@ import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis; ...@@ -13,4 +13,5 @@ import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis;
*/ */
public interface PlatElderBreatheAnalysisService extends IService<PlatElderBreatheAnalysis> { public interface PlatElderBreatheAnalysisService extends IService<PlatElderBreatheAnalysis> {
void elderHeartRespiratoryAnalysisTask();
} }
...@@ -13,4 +13,5 @@ import com.makeit.entity.platform.elder.PlatElderBreatheDayStat; ...@@ -13,4 +13,5 @@ import com.makeit.entity.platform.elder.PlatElderBreatheDayStat;
*/ */
public interface PlatElderBreatheDayStatService extends IService<PlatElderBreatheDayStat> { public interface PlatElderBreatheDayStatService extends IService<PlatElderBreatheDayStat> {
void heartRespiratoryTask();
} }
...@@ -39,4 +39,6 @@ public interface PlatElderChildrenInfoService extends IService<PlatElderChildren ...@@ -39,4 +39,6 @@ public interface PlatElderChildrenInfoService extends IService<PlatElderChildren
void bind(String elderId); void bind(String elderId);
void unbind(String elderId); void unbind(String elderId);
List<PlatElderChildrenInfoWechatVO> listByOpenid(String openid);
} }
...@@ -48,6 +48,4 @@ public interface PlatElderDayReportWeekService { ...@@ -48,6 +48,4 @@ public interface PlatElderDayReportWeekService {
List<PlatElderBehaviorDistributionVO> behaviorDistribution(PlatElderReportDTO platElderIdDTO); List<PlatElderBehaviorDistributionVO> behaviorDistribution(PlatElderReportDTO platElderIdDTO);
void heartRespiratoryJob();
} }
...@@ -28,7 +28,6 @@ public interface PlatElderReportMonthService extends IService<PlatElderReportMon ...@@ -28,7 +28,6 @@ public interface PlatElderReportMonthService extends IService<PlatElderReportMon
List<PlatElderReportMonthVO> reportMonth(PlatElderReportDTO platElderIdDTO); List<PlatElderReportMonthVO> reportMonth(PlatElderReportDTO platElderIdDTO);
void reportMonthJob();
} }
...@@ -31,6 +31,7 @@ public interface PlatElderService extends IService<PlatElder> { ...@@ -31,6 +31,7 @@ public interface PlatElderService extends IService<PlatElder> {
List<PlatElderListVO> list(PlatElderQueryDTO dto); List<PlatElderListVO> list(PlatElderQueryDTO dto);
void fill(List<PlatElderListVO> list);
void exportExcel(HttpServletResponse response, PlatElderQueryDTO dto); void exportExcel(HttpServletResponse response, PlatElderQueryDTO dto);
void exportTemplate(HttpServletResponse response); void exportTemplate(HttpServletResponse response);
...@@ -64,7 +65,11 @@ public interface PlatElderService extends IService<PlatElder> { ...@@ -64,7 +65,11 @@ public interface PlatElderService extends IService<PlatElder> {
/*小程序*/ /*小程序*/
List<PlatElderWechatSimpleVO> listMy(); List<PlatElderWechatSimpleVO> listMy();
void batchEdit(PlatElderBatchEditDTOVO dto); void batchEdit(PlatElderBatchEditDTOVO dto);
List<PlatElderListVO> listByElder(PlatElderQueryDTO dto);
/*小程序*/ /*小程序*/
} }
package com.makeit.service.platform.elder.impl; package com.makeit.service.platform.elder.impl;
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.makeit.entity.platform.elder.PlatElderBreatheDayStat; import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.*;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.enums.report.BreatheTypeEnum;
import com.makeit.enums.report.HeartRateTypeEnum;
import com.makeit.mapper.platform.elder.PlatElderBreatheDayStatMapper; import com.makeit.mapper.platform.elder.PlatElderBreatheDayStatMapper;
import com.makeit.service.platform.elder.PlatElderBreatheDayStatService; import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.module.iot.vo.analysis.DiseaseReportVO;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.elder.*;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.data.validate.CollectionUtils;
import com.makeit.utils.data.validate.MapUtil;
import com.makeit.utils.time.LocalDateTimeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/** /**
* <p> * <p>
...@@ -17,4 +41,108 @@ import org.springframework.stereotype.Service; ...@@ -17,4 +41,108 @@ import org.springframework.stereotype.Service;
@Service @Service
public class PlatElderBreatheDayStatServiceImpl extends ServiceImpl<PlatElderBreatheDayStatMapper, PlatElderBreatheDayStat> implements PlatElderBreatheDayStatService { public class PlatElderBreatheDayStatServiceImpl extends ServiceImpl<PlatElderBreatheDayStatMapper, PlatElderBreatheDayStat> implements PlatElderBreatheDayStatService {
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
@Autowired
private PlatElderService platElderService;
@Autowired
private PlatElderSleepAnalysisService platElderSleepAnalysisService;
@Autowired
private IotProductDeviceService iotProductDeviceService;
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@Autowired
private PlatElderReportMonthService platElderReportMonthService;
@Transactional(rollbackFor = Exception.class)
@Override
public void heartRespiratoryTask() {
LocalDate nowDate = LocalDate.now();
LocalDate yesDate = nowDate.minusDays(1);
LocalDateTime yesStart = LocalDateTimeUtils.getDayStart(yesDate);
LocalDateTime yesEnd = LocalDateTimeUtils.getDayEnd(yesDate);
List<PlatElderBreatheDayStat> breatheDayStatList = new ArrayList<>(10);
List<PlatElder> elderList = platElderService.list(new QueryWrapper<PlatElder>().lambda()
.isNotNull(PlatElder::getBedId));
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<PlatElderReportMonth> reportMonthList = new ArrayList<>(10);
List<PlatElderSleepAnalysis> sleepAnalysesList = platElderSleepAnalysisService.list(new QueryWrapper<PlatElderSleepAnalysis>().lambda()
.in(PlatElderSleepAnalysis::getElderId, StreamUtil.mapId(elderList, PlatElder::getId))
.eq(PlatElderSleepAnalysis::getHappenDate, dateTimeFormatter.format(yesDate))
);
Map<String, PlatElderSleepAnalysis> sleepAnalysisMap = StreamUtil.toMap(sleepAnalysesList, PlatElderSleepAnalysis::getElderId);
List<PlatAlarmRecord> recordList = platAlarmRecordService.list(new QueryWrapper<PlatAlarmRecord>().lambda()
.ge(PlatAlarmRecord::getAlarmDate, yesStart)
.le(PlatAlarmRecord::getAlarmDate, yesEnd)
.eq(PlatAlarmRecord::getMisinformationFlag,0)
.in(PlatAlarmRecord::getElderIds, StreamUtil.mapId(elderList, PlatElder::getId)));
Map<String, List<PlatAlarmRecord>> recordMap = StreamUtil.groupBy(recordList, PlatAlarmRecord::getElderIds);
for (PlatElder e : elderList) {
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(e.getId(), null);
if (platDevice != null) {
PlatElderBreatheDayStat platElderBreatheDayStat = new PlatElderBreatheDayStat();
platElderBreatheDayStat.setElderId(e.getId());
platElderBreatheDayStat.setDeviceId(platDevice.getId());
platElderBreatheDayStat.setOriDeviceId(platDevice.getOriDeviceId());
platElderBreatheDayStat.setDay(yesDate);
List<DeviceInfoContentBreathe> breatheList = iotProductDeviceService.getDeviceLogByTimeRangeBreathe(platDevice.getOriDeviceId(), 2 * 24 * 3600, yesStart, yesEnd);
if (CollectionUtils.isEmpty(breatheList)) {
continue;
}
long hrAvg = StreamUtil.reduce(breatheList, i -> (long) i.getProperties().getHr(), 0L, Long::sum) / breatheList.size();
long brAvg = StreamUtil.reduce(breatheList, i -> (long) i.getProperties().getBr(), 0L, Long::sum) / breatheList.size();
platElderBreatheDayStat.setHeartRateMax(breatheList.stream().map(i -> i.getProperties().getHr()).max(Integer::compareTo).orElse(null));
platElderBreatheDayStat.setHeartRateMin(breatheList.stream().map(i -> i.getProperties().getHr()).min(Integer::compareTo).orElse(null));
platElderBreatheDayStat.setHeartRateAvg((int) (hrAvg));
platElderBreatheDayStat.setRespiratoryRateMax(breatheList.stream().map(i -> i.getProperties().getBr()).max(Integer::compareTo).orElse(null));
platElderBreatheDayStat.setRespiratoryRateMin(breatheList.stream().map(i -> i.getProperties().getBr()).min(Integer::compareTo).orElse(null));
platElderBreatheDayStat.setRespiratoryRateAvg((int) (brAvg));
platElderBreatheDayStat.setTenantId(e.getTenantId());
breatheDayStatList.add(platElderBreatheDayStat);
PlatElderReportMonth reportMonth = new PlatElderReportMonth();
reportMonth.setElderId(e.getId());
reportMonth.setDay(yesDate);
MapUtil.setIfPresent(sleepAnalysisMap, e.getId(), sa -> {
reportMonth.setSleepResult(sa.getSleepResult());
});
reportMonth.setBreatheDeviceId(platDevice.getId());
reportMonth.setBreatheOriDeviceId(platDevice.getOriDeviceId());
reportMonth.setHeartRate((int) (hrAvg));
reportMonth.setRespiratoryRate((int) (brAvg));
List<PlatAlarmRecord> rList = Optional.ofNullable(recordMap.get(e.getId())).orElse(new ArrayList<>(10));
reportMonth.setFailCount((int) StreamUtil.count(rList, i -> PlatAlarmConfigEnum.AlarmTypeEnum.FALL.getValue().equals(i.getAlarmType())));
reportMonth.setHeartExceptionCount((int) StreamUtil.count(rList, i -> PlatAlarmConfigEnum.AlarmTypeEnum.HEART.getValue().equals(i.getAlarmType())));
reportMonth.setRespiratoryExceptionCount((int) StreamUtil.count(rList, i -> PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE.getValue().equals(i.getAlarmType())));
reportMonth.setBehaviorExceptionCount((int) StreamUtil.count(rList, i -> PlatAlarmConfigEnum.AlarmTypeEnum.BEHAVIOR.getValue().equals(i.getAlarmType())));
reportMonth.setTenantId(e.getTenantId());
reportMonthList.add(reportMonth);
}
}
platElderReportMonthService.saveBatch(reportMonthList);
saveBatch(breatheDayStatList);
}
} }
...@@ -350,9 +350,6 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -350,9 +350,6 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
*/ */
}); });
voList.sort(String::compareTo);
return voList; return voList;
} }
......
...@@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.common.entity.BaseBusEntity; import com.makeit.common.entity.BaseBusEntity;
import com.makeit.dto.platform.elder.PlatElderReportDTO; import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.device.PlatDevice; import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.*; import com.makeit.entity.platform.elder.*;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum; import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.enums.report.SleepTypeEnum; import com.makeit.enums.report.SleepTypeEnum;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.module.iot.service.IotProductDeviceService; import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.module.iot.vo.analysis.EvaluateReportVO; import com.makeit.module.iot.vo.analysis.EvaluateReportVO;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe; import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.elder.*; import com.makeit.service.platform.elder.*;
import com.makeit.service.saas.PlatTenantService; import com.makeit.service.saas.PlatTenantService;
import com.makeit.service.saas.SaasDiseaseReportService; import com.makeit.service.saas.SaasDiseaseReportService;
...@@ -19,6 +22,7 @@ import com.makeit.service.saas.SaasSleepEvaluateReportService; ...@@ -19,6 +22,7 @@ import com.makeit.service.saas.SaasSleepEvaluateReportService;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.StreamUtil; import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.data.validate.CollectionUtils; import com.makeit.utils.data.validate.CollectionUtils;
import com.makeit.utils.data.validate.MapUtil;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import com.makeit.utils.time.LocalDateTimeUtils; import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO; import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
...@@ -47,20 +51,10 @@ import java.util.stream.Collectors; ...@@ -47,20 +51,10 @@ import java.util.stream.Collectors;
public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeekService { public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeekService {
@Autowired @Autowired
private PlatElderService platElderService;
@Autowired
private PlatTenantService platTenantService;
@Autowired
private PlatElderRealTimeService platElderRealTimeService; private PlatElderRealTimeService platElderRealTimeService;
@Autowired @Autowired
private PlatElderDayReportDayService platElderDayReportDayService; private PlatElderDayReportDayService platElderDayReportDayService;
@Autowired
private PlatElderSleepAnalysisService platElderSleepAnalysisService;
@Autowired @Autowired
private PlatElderSleepService platElderSleepService; private PlatElderSleepService platElderSleepService;
...@@ -80,7 +74,7 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek ...@@ -80,7 +74,7 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
private PlatElderBreatheDayStatService platElderBreatheDayStatService; private PlatElderBreatheDayStatService platElderBreatheDayStatService;
@Autowired @Autowired
private IotProductDeviceService iotProductDeviceService; private PlatElderSleepAnalysisService platElderSleepAnalysisService;
private LocalDateTime weekStartDateTime(LocalDateTime defaultTime) { private LocalDateTime weekStartDateTime(LocalDateTime defaultTime) {
return weekStartDateTime(LocalDate.now().minusDays(1), defaultTime); return weekStartDateTime(LocalDate.now().minusDays(1), defaultTime);
...@@ -206,6 +200,9 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek ...@@ -206,6 +200,9 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
platElderSleepEvaluationVO.setScore(score); platElderSleepEvaluationVO.setScore(score);
platElderSleepEvaluationVO.setSleepDuration(sleepDuration); platElderSleepEvaluationVO.setSleepDuration(sleepDuration);
platElderSleepEvaluationVO.setRestDuration(restDuration); platElderSleepEvaluationVO.setRestDuration(restDuration);
platElderSleepEvaluationVO.setSleepDurationHour(new BigDecimal(platElderSleepEvaluationVO.getSleepDuration()).divide(new BigDecimal(60), 2, BigDecimal.ROUND_HALF_UP));
platElderSleepEvaluationVO.setRestDurationHour(new BigDecimal(platElderSleepEvaluationVO.getRestDuration()).divide(new BigDecimal(60), 2, BigDecimal.ROUND_HALF_UP));
EvaluateReportVO evaluateReportVO = saasSleepEvaluateReportService.getByScore(platElderSleepEvaluationVO.getScore()); EvaluateReportVO evaluateReportVO = saasSleepEvaluateReportService.getByScore(platElderSleepEvaluationVO.getScore());
if (evaluateReportVO != null) { if (evaluateReportVO != null) {
...@@ -468,58 +465,4 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek ...@@ -468,58 +465,4 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
return platElderDayReportDayService.behaviorDistributionInternal(platElderIdDTO, dateList); return platElderDayReportDayService.behaviorDistributionInternal(platElderIdDTO, dateList);
} }
@Override
public void heartRespiratoryJob() {
LocalDate nowDate = LocalDate.now();
LocalDate yesDate = nowDate.minusDays(1);
LocalDateTime yesStart = LocalDateTimeUtils.getDayStart(yesDate);
LocalDateTime yesEnd = LocalDateTimeUtils.getDayEnd(yesDate);
List<PlatElderBreatheDayStat> breatheDayStatList = new ArrayList<>(10);
platTenantService.executeTenantList(() -> {
List<PlatElder> elderList = platElderService.list(new QueryWrapper<PlatElder>().lambda()
.isNotNull(PlatElder::getBedId));
elderList.forEach(e -> {
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(e.getId(), null);
if (platDevice != null) {
PlatElderBreatheDayStat platElderBreatheDayStat = new PlatElderBreatheDayStat();
platElderBreatheDayStat.setElderId(e.getId());
platElderBreatheDayStat.setDeviceId(platDevice.getId());
platElderBreatheDayStat.setOriDeviceId(platDevice.getOriDeviceId());
platElderBreatheDayStat.setDay(yesDate);
List<DeviceInfoContentBreathe> breatheList = iotProductDeviceService.getDeviceLogByTimeRangeBreathe(platDevice.getOriDeviceId(), 2 * 24 * 3600, yesStart, yesEnd);
platElderBreatheDayStat.setHeartRateMax(breatheList.stream().map(i -> i.getProperties().getHr()).max(Integer::compareTo).orElse(null));
platElderBreatheDayStat.setHeartRateMin(breatheList.stream().map(i -> i.getProperties().getHr()).min(Integer::compareTo).orElse(null));
if (CollectionUtils.isNotEmpty(breatheList)) {
platElderBreatheDayStat.setHeartRateAvg((int) (StreamUtil.reduce(breatheList, i -> (long) i.getProperties().getHr(), 0L, Long::sum) / breatheList.size()));
}
platElderBreatheDayStat.setRespiratoryRateMax(breatheList.stream().map(i -> i.getProperties().getBr()).max(Integer::compareTo).orElse(null));
platElderBreatheDayStat.setRespiratoryRateMin(breatheList.stream().map(i -> i.getProperties().getBr()).min(Integer::compareTo).orElse(null));
if (CollectionUtils.isNotEmpty(breatheList)) {
platElderBreatheDayStat.setRespiratoryRateAvg((int) (StreamUtil.reduce(breatheList, i -> (long) i.getProperties().getBr(), 0L, Long::sum) / breatheList.size()));
}
breatheDayStatList.add(platElderBreatheDayStat);
}
});
});
platElderBreatheDayStatService.saveBatch(breatheDayStatList);
}
} }
...@@ -487,6 +487,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService { ...@@ -487,6 +487,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
if (spaceResult != null) { if (spaceResult != null) {
PlatElderCoordinateVO vo = new PlatElderCoordinateVO(); PlatElderCoordinateVO vo = new PlatElderCoordinateVO();
JSONObject jsonObject = JSON.parseObject(spaceResult); JSONObject jsonObject = JSON.parseObject(spaceResult);
if (jsonObject != null) {
vo.setDeviceId(platDevice.getId()); vo.setDeviceId(platDevice.getId());
vo.setOriDeviceId(platDevice.getOriDeviceId()); vo.setOriDeviceId(platDevice.getOriDeviceId());
vo.setDistance(Integer.valueOf(jsonObject.getString("distance"))); vo.setDistance(Integer.valueOf(jsonObject.getString("distance")));
...@@ -496,19 +497,23 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService { ...@@ -496,19 +497,23 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
vo.setType(1); vo.setType(1);
voList.add(vo); voList.add(vo);
} }
}
String fallResult = redisTemplate.opsForValue().get(DEVICE_FALL_DATA + platDevice.getOriDeviceId()); String fallResult = redisTemplate.opsForValue().get(DEVICE_FALL_DATA + platDevice.getOriDeviceId());
if (fallResult != null) { if (fallResult != null) {
PlatElderCoordinateVO vo = new PlatElderCoordinateVO(); PlatElderCoordinateVO vo = new PlatElderCoordinateVO();
JSONObject jsonObject = JSON.parseObject(fallResult); JSONObject jsonObject = JSON.parseObject(fallResult);
if (jsonObject != null) {
vo.setDeviceId(platDevice.getId()); vo.setDeviceId(platDevice.getId());
vo.setOriDeviceId(platDevice.getOriDeviceId()); vo.setOriDeviceId(platDevice.getOriDeviceId());
vo.setTrack((List<Integer>) jsonObject.get("track")); Object track = jsonObject.get("track");
vo.setTrack((track == null ? Lists.newArrayList() : (List<Integer>) track));
vo.setPersonState(Integer.valueOf(jsonObject.getString("personState"))); vo.setPersonState(Integer.valueOf(jsonObject.getString("personState")));
vo.setMount(Integer.valueOf(jsonObject.getString("mount"))); vo.setMount(Integer.valueOf(jsonObject.getString("mount")));
vo.setType(2); vo.setType(2);
voList.add(vo); voList.add(vo);
} }
} }
}
return voList; return voList;
} }
......
...@@ -3,23 +3,13 @@ package com.makeit.service.platform.elder.impl; ...@@ -3,23 +3,13 @@ package com.makeit.service.platform.elder.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.makeit.dto.platform.elder.PlatElderReportDTO; import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.elder.PlatElderReportMonth; import com.makeit.entity.platform.elder.PlatElderReportMonth;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.mapper.platform.elder.PlatElderReportMonthMapper; import com.makeit.mapper.platform.elder.PlatElderReportMonthMapper;
import com.makeit.module.iot.service.IotProductDeviceService; import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.elder.*; import com.makeit.service.platform.elder.*;
import com.makeit.service.saas.PlatTenantService; import com.makeit.service.saas.PlatTenantService;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.data.validate.CollectionUtils;
import com.makeit.utils.data.validate.MapUtil;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import com.makeit.utils.time.LocalDateTimeUtils; import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationVO; import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationVO;
...@@ -30,12 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -30,12 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Optional;
/** /**
* <p> * <p>
...@@ -140,72 +125,4 @@ public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReport ...@@ -140,72 +125,4 @@ public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReport
return voList; return voList;
} }
@Override
@TenantIdIgnore
public void reportMonthJob() {
LocalDate nowDate = LocalDate.now();
LocalDate yesDate = nowDate.minusDays(1);
LocalDateTime yesStart = LocalDateTimeUtils.getDayStart(yesDate);
LocalDateTime yesEnd = LocalDateTimeUtils.getDayEnd(yesDate);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<PlatElderReportMonth> reportMonthList = new ArrayList<>(10);
List<PlatElder> elderList = platElderService.list(new QueryWrapper<PlatElder>().lambda()
.isNotNull(PlatElder::getBedId));
List<PlatElderSleepAnalysis> sleepAnalysesList = platElderSleepAnalysisService.list(new QueryWrapper<PlatElderSleepAnalysis>().lambda()
.in(PlatElderSleepAnalysis::getElderId, StreamUtil.mapId(elderList, PlatElder::getId))
.eq(PlatElderSleepAnalysis::getHappenDate, dateTimeFormatter.format(yesDate))
);
Map<String, PlatElderSleepAnalysis> sleepAnalysisMap = StreamUtil.toMap(sleepAnalysesList, PlatElderSleepAnalysis::getElderId);
List<PlatAlarmRecord> recordList = platAlarmRecordService.list(new QueryWrapper<PlatAlarmRecord>().lambda()
.ge(PlatAlarmRecord::getAlarmDate, yesStart)
.le(PlatAlarmRecord::getAlarmDate, yesEnd)
.eq(PlatAlarmRecord::getMisinformationFlag,0)
.in(PlatAlarmRecord::getElderIds, StreamUtil.mapId(elderList, PlatElder::getId)));
Map<String, List<PlatAlarmRecord>> recordMap = StreamUtil.groupBy(recordList, PlatAlarmRecord::getElderIds);
for (PlatElder e : elderList) {
PlatElderReportMonth reportMonth = new PlatElderReportMonth();
reportMonth.setElderId(e.getId());
reportMonth.setDay(yesDate);
MapUtil.setIfPresent(sleepAnalysisMap, e.getId(), sa -> {
reportMonth.setSleepResult(sa.getSleepResult());
});
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(e.getId(), null);
if (platDevice == null) {
continue;
}
List<DeviceInfoContentBreathe> breatheList = iotProductDeviceService.getDeviceLogByTimeRangeBreathe(platDevice.getOriDeviceId(), 2 * 24 * 3600, yesStart, yesEnd);
if (CollectionUtils.isNotEmpty(breatheList)) {
reportMonth.setBreatheDeviceId(platDevice.getId());
reportMonth.setBreatheOriDeviceId(platDevice.getOriDeviceId());
reportMonth.setHeartRate((int) (StreamUtil.reduce(breatheList, i -> (long) i.getProperties().getHr(), 0L, Long::sum) / breatheList.size()));
reportMonth.setRespiratoryRate((int) (StreamUtil.reduce(breatheList, i -> (long) i.getProperties().getBr(), 0L, Long::sum) / breatheList.size()));
}
List<PlatAlarmRecord> rList = Optional.ofNullable(recordMap.get(e.getId())).orElse(new ArrayList<>(10));
reportMonth.setFailCount((int) StreamUtil.count(rList, i -> PlatAlarmConfigEnum.AlarmTypeEnum.FALL.getValue().equals(i.getAlarmType())));
reportMonth.setHeartExceptionCount((int) StreamUtil.count(rList, i -> PlatAlarmConfigEnum.AlarmTypeEnum.HEART.getValue().equals(i.getAlarmType())));
reportMonth.setRespiratoryExceptionCount((int) StreamUtil.count(rList, i -> PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE.getValue().equals(i.getAlarmType())));
reportMonth.setBehaviorExceptionCount((int) StreamUtil.count(rList, i -> PlatAlarmConfigEnum.AlarmTypeEnum.BEHAVIOR.getValue().equals(i.getAlarmType())));
reportMonth.setTenantId(e.getTenantId());
reportMonthList.add(reportMonth);
}
saveBatch(reportMonthList);
}
} }
...@@ -52,6 +52,7 @@ import com.makeit.utils.sql.join.JoinUtil; ...@@ -52,6 +52,7 @@ import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.utils.sys.FileUtil; import com.makeit.utils.sys.FileUtil;
import com.makeit.utils.user.plat.PlatUserUtil; import com.makeit.utils.user.plat.PlatUserUtil;
import com.makeit.utils.user.plat.PlatUserVO; import com.makeit.utils.user.plat.PlatUserVO;
import com.makeit.utils.user.wechat.WechatUserUtil;
import com.makeit.vo.platform.elder.PlatElderExportVO; import com.makeit.vo.platform.elder.PlatElderExportVO;
import com.makeit.vo.platform.elder.PlatElderListVO; import com.makeit.vo.platform.elder.PlatElderListVO;
import com.makeit.vo.wechat.elder.PlatElderChildrenInfoWechatVO; import com.makeit.vo.wechat.elder.PlatElderChildrenInfoWechatVO;
...@@ -155,7 +156,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -155,7 +156,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
.orderByDesc(PlatElder::getId); .orderByDesc(PlatElder::getId);
} }
private void fill(List<PlatElderListVO> list) { @Override
public void fill(List<PlatElderListVO> list) {
JoinUtil.join(list, platOrgService, PlatElderListVO::getOrgId, PlatOrg::getId, (d, o) -> { JoinUtil.join(list, platOrgService, PlatElderListVO::getOrgId, PlatOrg::getId, (d, o) -> {
d.setOrgName(o.getName()); d.setOrgName(o.getName());
...@@ -229,6 +231,11 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -229,6 +231,11 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
} }
@Override @Override
public List<PlatElderListVO> listByElder(PlatElderQueryDTO dto) {
return list(dto);
}
@Override
public void exportExcel(HttpServletResponse response, PlatElderQueryDTO dto) { public void exportExcel(HttpServletResponse response, PlatElderQueryDTO dto) {
List<PlatElder> dbList = list(lambdaQueryWrapper(dto)); List<PlatElder> dbList = list(lambdaQueryWrapper(dto));
...@@ -1076,7 +1083,7 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -1076,7 +1083,7 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
PlatElder platElder = getById(id); PlatElder platElder = getById(id);
if (StringUtils.isBlank(platElder.getBedId())) { if (platElder == null || StringUtils.isBlank(platElder.getBedId())) {
return null; return null;
} }
......
...@@ -315,7 +315,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM ...@@ -315,7 +315,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
}); });
return PageUtil.toPageVO(data, pages); return PageUtil.toPageVO(data, pages);
}else { }else {
return new PageVO<>(); return PageVO.emptyPage();
} }
} }
......
...@@ -144,6 +144,9 @@ public class PlatRoomServiceImpl extends ServiceImpl<PlatRoomMapper, PlatRoom> i ...@@ -144,6 +144,9 @@ public class PlatRoomServiceImpl extends ServiceImpl<PlatRoomMapper, PlatRoom> i
platBedService.remove(new QueryWrapper<PlatBed>().lambda() platBedService.remove(new QueryWrapper<PlatBed>().lambda()
.in(PlatBed::getRoomId, ids)); .in(PlatBed::getRoomId, ids));
platRoomBedDeviceService.remove(new QueryWrapper<PlatRoomBedDevice>().lambda()
.in(PlatRoomBedDevice::getRoomId, ids));
} }
@Override @Override
......
...@@ -175,7 +175,7 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -175,7 +175,7 @@ public class WorkStationServiceImpl implements WorkStationService {
//获取该账号的权限组织 //获取该账号的权限组织
List<PlatOrg> orgs = belongToScopeList(PlatOrgEnum.OrgTypeEnum.INSTITUTION.getValue()); List<PlatOrg> orgs = belongToScopeList(PlatOrgEnum.OrgTypeEnum.INSTITUTION.getValue());
if (orgs.isEmpty()) { if (orgs.isEmpty()) {
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList()); List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList());
dto.setOrgIds(orgIds); dto.setOrgIds(orgIds);
...@@ -185,7 +185,7 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -185,7 +185,7 @@ public class WorkStationServiceImpl implements WorkStationService {
List<String> orgIds = orgs.stream().filter(t->PlatOrgEnum.OrgTypeEnum.INSTITUTION.getValue().equals(t.getType())) List<String> orgIds = orgs.stream().filter(t->PlatOrgEnum.OrgTypeEnum.INSTITUTION.getValue().equals(t.getType()))
.map(PlatOrg::getId).collect(Collectors.toList()); .map(PlatOrg::getId).collect(Collectors.toList());
if(orgIds.isEmpty()){ if(orgIds.isEmpty()){
return new PageVO<>(); return PageVO.emptyPage();
} }
dto.setOrgIds(orgIds); dto.setOrgIds(orgIds);
} }
...@@ -194,7 +194,7 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -194,7 +194,7 @@ public class WorkStationServiceImpl implements WorkStationService {
spaces = platSpaceService.list(new QueryWrapper<PlatSpace>().lambda() spaces = platSpaceService.list(new QueryWrapper<PlatSpace>().lambda()
.in(PlatSpace::getOrgId, dto.getOrgIds())); .in(PlatSpace::getOrgId, dto.getOrgIds()));
if (spaces.isEmpty()) { if (spaces.isEmpty()) {
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> spaceIds = spaces.stream().map(PlatSpace::getId).collect(Collectors.toList()); List<String> spaceIds = spaces.stream().map(PlatSpace::getId).collect(Collectors.toList());
...@@ -222,7 +222,7 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -222,7 +222,7 @@ public class WorkStationServiceImpl implements WorkStationService {
}); });
if(StringUtil.isNotEmpty(dto.getAlarmType())){ if(StringUtil.isNotEmpty(dto.getAlarmType())){
if(elderIdList.isEmpty()){ if(elderIdList.isEmpty()){
return new PageVO<>(); return PageVO.emptyPage();
} }
dto.setElderIds(elderIdList); dto.setElderIds(elderIdList);
} }
...@@ -233,7 +233,7 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -233,7 +233,7 @@ public class WorkStationServiceImpl implements WorkStationService {
new Page<>(page.getPage(),page.getLimit()), page.getData()); new Page<>(page.getPage(),page.getLimit()), page.getData());
List<WorkStationInstitutionRoomVO> roomVOList = pages.getRecords(); List<WorkStationInstitutionRoomVO> roomVOList = pages.getRecords();
if (roomVOList.isEmpty()) { if (roomVOList.isEmpty()) {
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> roomIds = roomVOList.stream().map(WorkStationInstitutionRoomVO::getRoomId).collect(Collectors.toList()); List<String> roomIds = roomVOList.stream().map(WorkStationInstitutionRoomVO::getRoomId).collect(Collectors.toList());
//获取床号及长者/设备 //获取床号及长者/设备
...@@ -482,7 +482,7 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -482,7 +482,7 @@ public class WorkStationServiceImpl implements WorkStationService {
//获取该账号的权限组织 //获取该账号的权限组织
List<PlatOrg> orgs = belongToScopeList(PlatOrgEnum.OrgTypeEnum.HOME.getValue()); List<PlatOrg> orgs = belongToScopeList(PlatOrgEnum.OrgTypeEnum.HOME.getValue());
if (orgs.isEmpty()) { if (orgs.isEmpty()) {
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList()); List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList());
dto.setOrgIds(orgIds); dto.setOrgIds(orgIds);
...@@ -492,7 +492,7 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -492,7 +492,7 @@ public class WorkStationServiceImpl implements WorkStationService {
List<String> orgIds = orgs.stream().filter(t->PlatOrgEnum.OrgTypeEnum.HOME.getValue().equals(t.getType())) List<String> orgIds = orgs.stream().filter(t->PlatOrgEnum.OrgTypeEnum.HOME.getValue().equals(t.getType()))
.map(PlatOrg::getId).collect(Collectors.toList()); .map(PlatOrg::getId).collect(Collectors.toList());
if(orgIds.isEmpty()){ if(orgIds.isEmpty()){
return new PageVO<>(); return PageVO.emptyPage();
} }
dto.setOrgIds(orgIds); dto.setOrgIds(orgIds);
} }
...@@ -515,7 +515,7 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -515,7 +515,7 @@ public class WorkStationServiceImpl implements WorkStationService {
} }
if (spaces.isEmpty()) { if (spaces.isEmpty()) {
return new PageVO<>(); return PageVO.emptyPage();
} }
List<String> elderIdList = new ArrayList<>(); List<String> elderIdList = new ArrayList<>();
List<PlatAlarmRecord> alarmRecords = platAlarmRecordService.list( List<PlatAlarmRecord> alarmRecords = platAlarmRecordService.list(
...@@ -534,7 +534,7 @@ public class WorkStationServiceImpl implements WorkStationService { ...@@ -534,7 +534,7 @@ public class WorkStationServiceImpl implements WorkStationService {
}); });
if(StringUtil.isNotEmpty(dto.getAlarmType())){ if(StringUtil.isNotEmpty(dto.getAlarmType())){
if(elderIdList.isEmpty()){ if(elderIdList.isEmpty()){
return new PageVO<>(); return PageVO.emptyPage();
} }
dto.setElderIds(elderIdList); dto.setElderIds(elderIdList);
} }
......
...@@ -18,6 +18,7 @@ import com.makeit.utils.third.wechat.WxUserInfo; ...@@ -18,6 +18,7 @@ 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.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.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;
...@@ -25,6 +26,7 @@ import org.springframework.stereotype.Service; ...@@ -25,6 +26,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
@Service @Service
public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElderChildrenInfoUserLoginWechatService { public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElderChildrenInfoUserLoginWechatService {
...@@ -45,46 +47,41 @@ public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElde ...@@ -45,46 +47,41 @@ public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElde
logger.info("userinfo:{}", userInfo); logger.info("userinfo:{}", userInfo);
PlatElderChildrenInfo childrenInfo = platElderChildrenInfoService.getOne(new QueryWrapper<PlatElderChildrenInfo>().lambda() List<PlatElderChildrenInfo> childrenInfoList = platElderChildrenInfoService.list(new QueryWrapper<PlatElderChildrenInfo>().lambda()
.eq(PlatElderChildrenInfo::getOpenid, userInfo.getOpenId())); .eq(PlatElderChildrenInfo::getOpenid, userInfo.getOpenId()));
//.eq(PlatElderChildrenInfo::getPhone, userInfo.getPhoneNumber())); PlatElderChildrenInfo childrenInfo;
if (CollectionUtils.isEmpty(childrenInfoList)) {
if (childrenInfo == null) {
childrenInfo = new PlatElderChildrenInfo(); childrenInfo = new PlatElderChildrenInfo();
childrenInfo.setOpenid(userInfo.getOpenId()); childrenInfo.setOpenid(userInfo.getOpenId());
childrenInfo.setName(userInfo.getNickName()); childrenInfo.setName(userInfo.getNickName());
PlatOrgSplitDTO vo = platOrgService.getOrgSplitVO(dto.getOrgId());
childrenInfo.setOrgId(dto.getOrgId());
childrenInfo.setCityOrgId(vo.getCityOrgId());
childrenInfo.setDistrictOrgId(vo.getDistrictOrgId());
childrenInfo.setStreetOrgId(vo.getStreetOrgId());
childrenInfo.setOrgPath(vo.getOrgPath());
childrenInfo.setCreateBy(userInfo.getNickName()); childrenInfo.setCreateBy(userInfo.getNickName());
childrenInfo.setUpdateBy(userInfo.getNickName()); childrenInfo.setUpdateBy(userInfo.getNickName());
logger.info("children:{}", childrenInfo);
}
//childrenInfo.setOpenid(userInfo.getOpenId());
childrenInfo.setPhone(userInfo.getPhoneNumber()); childrenInfo.setPhone(userInfo.getPhoneNumber());
childrenInfo.setAvatar(userInfo.getAvatarUrl()); childrenInfo.setAvatar(userInfo.getAvatarUrl());
logger.info("children:{}", childrenInfo);
String token = IdGen.getUUID(); NoFillUtil.executeCreate(() -> {
platElderChildrenInfoService.save(childrenInfo);
});
} else {
for (PlatElderChildrenInfo platElderChildrenInfo : childrenInfoList) {
platElderChildrenInfo.setPhone(userInfo.getPhoneNumber());
platElderChildrenInfo.setAvatar(userInfo.getAvatarUrl());
platElderChildrenInfo.setName(userInfo.getNickName());
//RequestUtil.setHeader(HeaderConst.WECHAT_TOKEN, token); //RequestUtil.setHeader(HeaderConst.WECHAT_TOKEN, token);
childrenInfo.setUpdateBy(userInfo.getNickName()); platElderChildrenInfo.setUpdateBy(userInfo.getNickName());
PlatElderChildrenInfo finalChildrenInfo = childrenInfo;
NoFillUtil.executeCreate(() -> { NoFillUtil.executeCreate(() -> {
NoFillUtil.executeUpdate(() -> { NoFillUtil.executeUpdate(() -> {
platElderChildrenInfoService.saveOrUpdate(finalChildrenInfo); platElderChildrenInfoService.saveOrUpdate(platElderChildrenInfo);
}); });
}); });
}
childrenInfo = childrenInfoList.get(0);
}
//childrenInfo.setOpenid(userInfo.getOpenId());
WechatUserInfo wechatUserVo = BeanDtoVoUtils.convert(childrenInfo, WechatUserInfo.class); WechatUserInfo wechatUserVo = BeanDtoVoUtils.convert(childrenInfo, WechatUserInfo.class);
...@@ -92,6 +89,8 @@ public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElde ...@@ -92,6 +89,8 @@ public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElde
u.setAvatarPath(f.getFullUrl()); u.setAvatarPath(f.getFullUrl());
}); });
String token = IdGen.getUUID();
wechatUserVo.setToken(token); wechatUserVo.setToken(token);
TokenUtil.wechatLogin(token, wechatUserVo); TokenUtil.wechatLogin(token, wechatUserVo);
......
package com.makeit.task;
import com.makeit.service.platform.elder.PlatElderDayReportWeekService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class HeartRespiratoryTask {
@Autowired
private PlatElderDayReportWeekService platElderDayReportWeekService;
@Scheduled(cron = "0 0 2 * * ? ")
public void job(){
platElderDayReportWeekService.heartRespiratoryJob();
}
}
package com.makeit.task; package com.makeit.task;
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.PlatElderSleepService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
...@@ -15,9 +13,6 @@ public class IotSyncTask { ...@@ -15,9 +13,6 @@ public class IotSyncTask {
@Autowired @Autowired
private PlatDeviceService platDeviceService; private PlatDeviceService platDeviceService;
@Autowired
private PlatElderSleepService platElderSleepService;
/** /**
* 一小时同步一次 * 一小时同步一次
...@@ -30,30 +25,4 @@ public class IotSyncTask { ...@@ -30,30 +25,4 @@ public class IotSyncTask {
} }
/**
* 床位id 绑定的所有设备
* 房间id 绑定的所有设备
*
*/
/**
* 长者睡眠分析
*/
@Scheduled(cron = "0 0 2 * * ?")
@TenantIdIgnore
public void elderSleepSleepAnalysisTask() {
log.info("开始定时分析长者睡眠质量");
platElderSleepService.elderSleepSleepAnalysisTask();
log.info("定时分析长者睡眠质量结束");
}
/* @Scheduled(cron = "0 0 1 * * ?")
@TenantIdIgnore
public void elderCoordinateListAnalysisTask() {
log.info("开始定时分析24小时热力图");
platElderDayReportDayService.elderCoordinateListAnalysisTask();
log.info("定时分析长者24小时热力图");
}*/
} }
package com.makeit.task;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderBreatheAnalysisService;
import com.makeit.service.platform.elder.PlatElderBreatheDayStatService;
import com.makeit.service.platform.elder.PlatElderSleepService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class PlatElderReportTask {
@Autowired
private PlatElderSleepService platElderSleepService;
@Autowired
private PlatElderBreatheDayStatService platElderBreatheDayStatService;
@Autowired
private PlatElderBreatheAnalysisService platElderBreatheAnalysisService;
@Scheduled(cron = "0 0 1 * * ?")
@TenantIdIgnore
public void heartRespiratoryTask() {
log.info("开始生成长者每日呼吸,异常情况");
platElderBreatheDayStatService.heartRespiratoryTask();
log.info("生成长者每日呼吸,异常情况结束");
}
/**
* 长者呼吸心率分析
*/
@Scheduled(cron = "0 0 2 * * ?")
@TenantIdIgnore
public void elderHeartRespiratoryAnalysisTask() {
log.info("开始定时分析长者呼吸心率");
platElderBreatheAnalysisService.elderHeartRespiratoryAnalysisTask();
log.info("定时分析长者呼吸心率结束");
}
/**
* 长者睡眠分析
*/
@Scheduled(cron = "0 0 3 * * ?")
@TenantIdIgnore
public void elderSleepSleepAnalysisTask() {
log.info("开始定时分析长者睡眠质量");
platElderSleepService.elderSleepSleepAnalysisTask();
log.info("定时分析长者睡眠质量结束");
}
}
package com.makeit.task;
import com.makeit.service.platform.elder.PlatElderReportMonthService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ReportMonthTask {
@Autowired
private PlatElderReportMonthService platElderReportMonthService;
@Scheduled(cron = "0 0 1 * * ? ")
public void job(){
platElderReportMonthService.reportMonthJob();
}
}
...@@ -107,8 +107,9 @@ public class PlatDeviceViewVO extends BaseTenantDTO { ...@@ -107,8 +107,9 @@ public class PlatDeviceViewVO extends BaseTenantDTO {
@ApiModelProperty(value = "创建时间", required = false) @ApiModelProperty(value = "创建时间", required = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate; private LocalDateTime createDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startDate; private LocalDateTime startDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endDate; private LocalDateTime endDate;
......
package com.makeit.vo.wechat.elder; package com.makeit.vo.wechat.elder;
import com.makeit.common.dto.BaseTenantDTO; import com.makeit.common.dto.BaseIdDTO;
import com.makeit.vo.platform.elder.PlatElderListVO;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -17,10 +18,12 @@ import lombok.EqualsAndHashCode; ...@@ -17,10 +18,12 @@ import lombok.EqualsAndHashCode;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value="ElderChildrenInfo对象", description="长者子女账号") @ApiModel(value="ElderChildrenInfo对象", description="长者子女账号")
public class PlatElderChildrenInfoWechatVO extends BaseTenantDTO { public class PlatElderChildrenInfoWechatVO extends BaseIdDTO {
@ApiModelProperty(value = "长者id") @ApiModelProperty(value = "长者id")
private String elderId; private String elderId;
@ApiModelProperty(value = "长者信息")
private PlatElderListVO platElder;
@ApiModelProperty(value = "姓名") @ApiModelProperty(value = "姓名")
private String name; private String name;
......
...@@ -43,6 +43,8 @@ public class PushCallback implements MqttCallback { ...@@ -43,6 +43,8 @@ public class PushCallback implements MqttCallback {
public static final String DEVICE_BR_DATA = "device:brhr:data:"; public static final String DEVICE_BR_DATA = "device:brhr:data:";
public static final String DEVICE_SPACE_DATA = "device:space:data:"; public static final String DEVICE_SPACE_DATA = "device:space:data:";
public static final String DEVICE_FALL_DATA = "device:fall:data:"; public static final String DEVICE_FALL_DATA = "device:fall:data:";
public static final String REPORT_PROPERTY = "REPORT_PROPERTY";
@Autowired @Autowired
private MqttConfig mqttConfig; private MqttConfig mqttConfig;
...@@ -101,15 +103,15 @@ public class PushCallback implements MqttCallback { ...@@ -101,15 +103,15 @@ public class PushCallback implements MqttCallback {
HeaderInfo headers = device.getHeaders(); HeaderInfo headers = device.getHeaders();
List<HeaderInfo.Bind> bindings = headers.getBindings(); List<HeaderInfo.Bind> bindings = headers.getBindings();
// TODO 先这样判断 // TODO 先这样判断
if (headers.getProductName().contains("呼吸")) { if (REPORT_PROPERTY.equals(device.getMessageType()) && headers.getProductName().contains("呼吸")) {
redisTemplate.opsForValue().set(DEVICE_BR_DATA + device.getDeviceId(),JSON.toJSONString(device.getProperties()), redisTemplate.opsForValue().set(DEVICE_BR_DATA + device.getDeviceId(),JSON.toJSONString(device.getProperties()),
5000, TimeUnit.MILLISECONDS); 5000, TimeUnit.MILLISECONDS);
} }
if (headers.getProductName().contains("空间")) { if (REPORT_PROPERTY.equals(device.getMessageType()) && headers.getProductName().contains("空间")) {
redisTemplate.opsForValue().set(DEVICE_SPACE_DATA + device.getDeviceId(),JSON.toJSONString(device.getProperties()), redisTemplate.opsForValue().set(DEVICE_SPACE_DATA + device.getDeviceId(),JSON.toJSONString(device.getProperties()),
5000, TimeUnit.MILLISECONDS); 5000, TimeUnit.MILLISECONDS);
} }
if (headers.getProductName().contains("跌倒")) { if (REPORT_PROPERTY.equals(device.getMessageType()) && headers.getProductName().contains("跌倒")) {
redisTemplate.opsForValue().set(DEVICE_FALL_DATA + device.getDeviceId(),JSON.toJSONString(device.getProperties()), redisTemplate.opsForValue().set(DEVICE_FALL_DATA + device.getDeviceId(),JSON.toJSONString(device.getProperties()),
5000, TimeUnit.MILLISECONDS); 5000, TimeUnit.MILLISECONDS);
} }
...@@ -120,6 +122,13 @@ public class PushCallback implements MqttCallback { ...@@ -120,6 +122,13 @@ public class PushCallback implements MqttCallback {
if (statusFlag) { if (statusFlag) {
return; return;
} }
String deviceId = device.getDeviceId();
String messageType = device.getMessageType();
//更新设备状态
boolean statusFlag = platDeviceService.updateDeviceStatus(messageType, deviceId, "");
if (statusFlag) {
return;
}
for (HeaderInfo.Bind binding : bindings) { for (HeaderInfo.Bind binding : bindings) {
try { try {
String iot_tenantId = binding.getId(); String iot_tenantId = binding.getId();
......
package com.makeit.mqtt;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.global.annotation.AuthIgnore;
import com.makeit.utils.msg.dto.MsgSendDTO;
import com.makeit.utils.msg.sender.WxSpSender;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Collections;
@Api(tags = "告警记录2")
@RestController
@RequestMapping("/plat/test")
public class TestAlarmRecordController {
// @Autowired
// private MailMsgSender mailMsgSender;
// @Autowired
// private SmsMsgSender smsMsgSender;
// @Autowired
// private SmsVoiceSender smsVoiceSender;
//
// @ApiOperation("测试邮箱")
// @PostMapping("testMail")
// public ApiResponseEntity<Void> testMail(@RequestBody BaseIdDTO dto) {
// MsgSendDTO msgDTO = new MsgSendDTO();
// msgDTO.setSubject("测试消息");
// msgDTO.setReceiverList(Collections.singletonList("994997968@qq.com"));
// msgDTO.setOriContent("测试发送邮箱");
// mailMsgSender.send(msgDTO);
// return ApiResponseUtils.success();
// }
//
// @ApiOperation("测试短信")
// @PostMapping("testMsg")
// public ApiResponseEntity<Void> testMsg(@RequestBody BaseIdDTO dto) throws Exception {
// MsgSendDTO msgDTO = new MsgSendDTO();
// msgDTO.setReceiverList(Collections.singletonList("18850503603"));
// msgDTO.setOriContent("测试短信test");
// smsMsgSender.send(msgDTO);
// return ApiResponseUtils.success();
// }
//
// @ApiOperation("测试语音短信")
// @PostMapping("testVoice")
// @AuthIgnore
// public ApiResponseEntity<Void> testVoice(@RequestBody BaseIdDTO dto) throws Exception {
// MsgSendDTO msgDTO = new MsgSendDTO();
// msgDTO.setReceiverList(Collections.singletonList("18850503603"));
// msgDTO.setOriContent("测试短信test");
// smsVoiceSender.send(msgDTO);
// return ApiResponseUtils.success();
// }
@Autowired
private WxSpSender wxSpSender;
// @ApiOperation("测试公众号消息")
// @PostMapping("testSp")
// @AuthIgnore
// public ApiResponseEntity<Void> testVoice(@RequestBody BaseIdDTO dto) throws Exception {
// MsgSendDTO msgDTO = new MsgSendDTO();
// msgDTO.setReceiverList(Collections.singletonList("18850503603"));
// msgDTO.setOriContent("测试短信test");
// wxSpSender.send(msgDTO);
// return ApiResponseUtils.success();
// }
@ApiOperation("测试公众号消息")
@PostMapping("testSp")
@AuthIgnore
public ApiResponseEntity<Void> testSpVoice(@RequestBody BaseIdDTO dto) throws Exception {
MsgSendDTO msgDTO = new MsgSendDTO();
msgDTO.setReceiverList(Collections.singletonList("18850503603"));
msgDTO.setOriContent("测试短信test");
wxSpSender.send(msgDTO);
return ApiResponseUtils.success();
}
// @Autowired
// private PushCallback pushCallback;
//
// @ApiOperation("测试跌倒")
// @PostMapping("testFall")
// @AuthIgnore
// public ApiResponseEntity<Void> testVoice(@RequestBody DeviceInfo info) throws Exception {
//
// pushCallback.checkAlarm(info);
// return ApiResponseUtils.success();
// }
//
//
// @Autowired
// private PlatDayDurationRecordService platDayDurationRecordService;
//
// @ApiOperation("测试")
// @PostMapping("test")
// @AuthIgnore
// public ApiResponseEntity<List<PlatDayDurationRecord>> test(@RequestBody DeviceInfo info) throws Exception {
// PlatDayDurationRecord platDayDurationRecord = new PlatDayDurationRecord();
// platDayDurationRecord.setDay(new Date());
// LambdaQueryWrapper<PlatDayDurationRecord> platDayDurationRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
// platDayDurationRecordLambdaQueryWrapper.eq(PlatDayDurationRecord::getDay,platDayDurationRecord.getDay());
// List<PlatDayDurationRecord> list = platDayDurationRecordService.list();
// return ApiResponseUtils.success(list);
// }
}
...@@ -134,7 +134,10 @@ wx: ...@@ -134,7 +134,10 @@ wx:
token: #微信小程序消息服务器配置的token token: #微信小程序消息服务器配置的token
aesKey: #微信小程序消息服务器配置的EncodingAESKey aesKey: #微信小程序消息服务器配置的EncodingAESKey
msgDataFormat: JSON msgDataFormat: JSON
mp:
config:
appid: wx5c73cad7aeb788c6
secret: 7c3a0665bf2adbe67a58a4d6c8017243
sms: sms:
send: send:
url: http://www.aozoneyun.com/message/message/send url: http://www.aozoneyun.com/message/message/send
......
...@@ -130,6 +130,10 @@ wx: ...@@ -130,6 +130,10 @@ wx:
token: #微信小程序消息服务器配置的token token: #微信小程序消息服务器配置的token
aesKey: #微信小程序消息服务器配置的EncodingAESKey aesKey: #微信小程序消息服务器配置的EncodingAESKey
msgDataFormat: JSON msgDataFormat: JSON
mp:
config:
appid: wx5c73cad7aeb788c6
secret: 7c3a0665bf2adbe67a58a4d6c8017243
sms: sms:
send: send:
......
...@@ -148,6 +148,8 @@ tenant: ...@@ -148,6 +148,8 @@ tenant:
- plat_user - plat_user
- plat_menu - plat_menu
- plat_day_duration_record - plat_day_duration_record
- plat_elder_children_info
- sys_api_secret
rsa: rsa:
......
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