Commit 1734bbd9 by huangjy

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

parents 39abf54c d1c95f93
Showing with 652 additions and 118 deletions
......@@ -49,6 +49,14 @@ public class SwaggerSaasConfig {
}
@Bean
public SwaggerModuleConfig deviceModule() {
SwaggerModuleConfig config = new SwaggerModuleConfig();
config.setPackageList(Arrays.asList("com.makeit.controller.device"));
config.setModuleName("设备管理");
return config;
}
@Bean
public Docket platApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
......@@ -91,6 +99,20 @@ public class SwaggerSaasConfig {
return builder.build();
}
@Bean
public Docket deviceApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("01-saas端设备管理");
ApiSelectorBuilder builder = docket.select();
//api过滤
builder = builder.apis(
RequestHandlerSelectors.basePackage("com.makeit.controller.device")
);
return builder.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("IOT文档")
.description("服务端接口文档")
......
package com.makeit.controller.saas;
package com.makeit.controller.device;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.page.PageReqDTO;
......@@ -47,20 +47,4 @@ public class SaasDeviceController {
return ApiResponseUtils.success();
}
@ApiOperation("实时数据")
@PostMapping("realTimeDate")
@TenantIdIgnore
public ApiResponseEntity<PlatDevice> realTimeDate(@RequestBody PlatDevice platDevice) {
//todo
return null;
}
@ApiOperation("数据分析")
@PostMapping("dataAnalysis")
@TenantIdIgnore
public ApiResponseEntity<PlatDevice> dataAnalysis(@RequestBody PlatDevice platDevice) {
//todo
return null;
}
}
package com.makeit.controller.device;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeBodyVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
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.List;
@Api(tags = "租户管理-租户设备实时数据")
@RestController
@RequestMapping("/saas/device/realTime")
public class SaasDeviceRealTimeController {
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@ApiOperation("现在状态")
@PostMapping("nowStatus")
@TenantIdIgnore
public ApiResponseEntity<PlatElderRealTimeNowVO> nowStatus(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.nowStatus(platElderIdDTO));
}
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
@TenantIdIgnore
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.heartRespiratory(platElderIdDTO));
}
@ApiOperation("体动")
@PostMapping("body")
@TenantIdIgnore
public ApiResponseEntity<PlatElderRealTimeBodyVO> body(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.body(platElderIdDTO));
}
@ApiOperation("坐标")
@PostMapping("coordinate")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinate(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.coordinate(platElderIdDTO));
}
}
package com.makeit.controller.device;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderDayReportDayService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.report.day.PlatElderBehaviorDistributionVO;
import com.makeit.vo.platform.elder.report.day.PlatElderBehaviorExceptionRecordVO;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationRecordVO;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepDiagramVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
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.List;
/**
* <p>
* 长者基本信息 前端控制器
* </p>
*
* @author eugene young
* @since 2023-08-29
*/
@Api(tags = "数据分析-日报")
@RestController
@RequestMapping("/saas/device/report/day")
public class SaasDeviceReportDayController {
@Autowired
private PlatElderDayReportDayService platElderDayReportDayService;
@ApiOperation("睡眠评价")
@PostMapping("sleepEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderSleepEvaluationVO> sleepEvaluation(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("睡眠图表")
@PostMapping("sleepDiagram")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderSleepDiagramVO>> sleepDiagram(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸评价")
@PostMapping("heartRespiratoryEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率异常记录")
@PostMapping("heartExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> heartExceptionRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("呼吸率异常记录")
@PostMapping("respiratoryExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> respiratoryExceptionRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderRealTimeHeartRespiratoryVO>> heartRespiratory(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.heartRespiratory(platElderIdDTO));
}
@ApiOperation("行为异常记录")
@PostMapping("behaviorExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderBehaviorExceptionRecordVO>> behaviorExceptionRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("跌倒记录")
@PostMapping("failRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<String>> failRecordList(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
@ApiOperation("坐标记录")
@PostMapping("coordinateList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinateList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportDayService.coordinateList(platElderIdDTO));
}
@ApiOperation("行为辐射")
@PostMapping("behaviorDistribution")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderBehaviorDistributionVO>> behaviorDistribution(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
}
package com.makeit.controller.device;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationVO;
import com.makeit.vo.platform.elder.report.day.PlatElderReportMonthVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import com.makeit.vo.platform.elder.report.week.PlatElderComprehensiveEvaluationVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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;
/**
* <p>
* 长者基本信息 前端控制器
* </p>
*
* @author eugene young
* @since 2023-08-29
*/
@Api(tags = "数据分析-月报")
@RestController
@RequestMapping("/saas/device/report/month")
public class SaasDeviceReportMonthController {
@ApiOperation("综合评价")
@PostMapping("comprehensiveEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderComprehensiveEvaluationVO> comprehensiveEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("睡眠评价")
@PostMapping("sleepEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderSleepEvaluationVO> sleepEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸评价")
@PostMapping("heartRespiratoryEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("月报表")
@PostMapping("reportMonth")
@TenantIdIgnore
public ApiResponseEntity<PlatElderReportMonthVO> reportMonth(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
}
package com.makeit.controller.device;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderDayReportWeekService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.report.day.PlatElderBehaviorDistributionVO;
import com.makeit.vo.platform.elder.report.day.PlatElderBehaviorExceptionRecordVO;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationRecordVO;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import com.makeit.vo.platform.elder.report.week.PlatElderComprehensiveEvaluationVO;
import com.makeit.vo.platform.elder.report.week.PlatElderRealTimeHeartRespiratoryWeekVO;
import com.makeit.vo.platform.elder.report.week.PlatElderSleepDiagramWeekVO;
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.List;
/**
* <p>
* 长者基本信息 前端控制器
* </p>
*
* @author eugene young
* @since 2023-08-29
*/
@Api(tags = "数据分析-周报")
@RestController
@RequestMapping("/saas/device/report/week")
public class SaasDeviceReportWeekController {
@Autowired
private PlatElderDayReportWeekService platElderDayReportWeekService;
@ApiOperation("综合评价")
@PostMapping("comprehensiveEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderComprehensiveEvaluationVO> comprehensiveEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("睡眠评价")
@PostMapping("sleepEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderSleepEvaluationVO> sleepEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("睡眠图表")
@PostMapping("sleepDiagram")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderSleepDiagramWeekVO>> sleepDiagram(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸评价")
@PostMapping("heartRespiratoryEvaluation")
@TenantIdIgnore
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率异常记录")
@PostMapping("heartExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> heartExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("呼吸率异常记录")
@PostMapping("respiratoryExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> respiratoryExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
@TenantIdIgnore
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryWeekVO> heartRespiratory(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("行为异常记录")
@PostMapping("behaviorExceptionRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderBehaviorExceptionRecordVO>> behaviorExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("跌倒记录")
@PostMapping("failRecordList")
@TenantIdIgnore
public ApiResponseEntity<List<String>> failRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
@ApiOperation("坐标记录")
@PostMapping("coordinateList")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinateList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderDayReportWeekService.coordinateList(platElderIdDTO));
}
@ApiOperation("行为辐射")
@PostMapping("behaviorDistribution")
@TenantIdIgnore
public ApiResponseEntity<List<PlatElderBehaviorDistributionVO>> behaviorDistribution(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
}
}
......@@ -102,6 +102,8 @@ public class RedisConst {
public static final String ELDER_DAY_DURATION_PREFIX = "plat:day:duration:device:";
public static final String LOCK_ALARM = "lock:alarm:device:id:";
......
......@@ -17,10 +17,10 @@ public class MsgSendUtil {
* 发送消息
*/
public void send(MsgSendDTO msgSendDTO){
for (IMsgSender msgSender : msgSenderList) {
if(msgSender.support(msgSendDTO.getSendTypeEnum())){
msgSender.send(msgSendDTO);
}
}
// for (IMsgSender msgSender : msgSenderList) {
// if(msgSender.support(msgSendDTO.getSendTypeEnum())){
// msgSender.send(msgSendDTO);
// }
// }
}
}
......@@ -40,7 +40,7 @@ public class MailMsgSender implements IMsgSender {
helper.setText(msgDTO.getOriContent(), false);
mailSender.send(message);
} catch (Exception e) {
log.error("发送邮箱异常:",e);
log.error("发送邮箱异常:",msgDTO,e);
}
}
......
......@@ -69,7 +69,7 @@ public class SmsMsgSender implements IMsgSender{
log.info("发送短信成功");
}
}catch (Exception e){
log.error("发送短信异常:",e);
log.error("发送短信异常:",msgDTO,e);
}
}
......
......@@ -77,7 +77,7 @@ public class SmsVoiceSender implements IMsgSender{
throw new BusinessException((String) jsonObject.get("status_code"));
}
}catch (Exception e){
log.error("发送语音异常:",e);
log.error("发送语音异常:",msgDTO,e);
}
}
}
package com.makeit.com.makeit.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 长者月报 前端控制器
* </p>
*
* @author eugene young
* @since 2023-09-14
*/
@RestController
@RequestMapping("/plat-elder-report-month")
public class PlatElderReportMonthController {
}
......@@ -49,19 +49,19 @@ public class PlatElderReportDayController {
@ApiOperation("心率呼吸评价")
@PostMapping("heartRespiratoryEvaluation")
public ApiResponseEntity<PlatElderHeartRespiratoryEvaluationVO> heartRespiratoryEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
return ApiResponseUtils.success(platElderDayReportDayService.heartRespiratoryEvaluation(platElderIdDTO));
}
@ApiOperation("心率异常记录")
@PostMapping("heartExceptionRecordList")
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> heartExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
return ApiResponseUtils.success(platElderDayReportDayService.heartExceptionRecordList(platElderIdDTO));
}
@ApiOperation("呼吸率异常记录")
@PostMapping("respiratoryExceptionRecordList")
public ApiResponseEntity<List<PlatElderHeartRespiratoryEvaluationRecordVO>> respiratoryExceptionRecordList(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
return ApiResponseUtils.success(platElderDayReportDayService.respiratoryExceptionRecordList(platElderIdDTO));
}
@ApiOperation("心率呼吸率")
......
......@@ -2,18 +2,23 @@ package com.makeit.module.controller.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.service.platform.elder.PlatElderReportMonthService;
import com.makeit.vo.platform.elder.report.day.PlatElderHeartRespiratoryEvaluationVO;
import com.makeit.vo.platform.elder.report.day.PlatElderReportMonthVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import com.makeit.vo.platform.elder.report.week.PlatElderComprehensiveEvaluationVO;
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.List;
/**
* <p>
* 长者基本信息 前端控制器
......@@ -27,6 +32,9 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/plat/elder/report/month")
public class PlatElderReportMonthController {
@Autowired
private PlatElderReportMonthService platElderReportMonthService;
@ApiOperation("综合评价")
@PostMapping("comprehensiveEvaluation")
public ApiResponseEntity<PlatElderComprehensiveEvaluationVO> comprehensiveEvaluation(@RequestBody PlatElderReportDTO platElderIdDTO) {
......@@ -48,8 +56,8 @@ public class PlatElderReportMonthController {
@ApiOperation("月报表")
@PostMapping("reportMonth")
public ApiResponseEntity<PlatElderReportMonthVO> reportMonth(@RequestBody PlatElderReportDTO platElderIdDTO) {
return null;
public ApiResponseEntity<List<PlatElderReportMonthVO>> reportMonth(@RequestBody PlatElderReportDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderReportMonthService.reportMonth(platElderIdDTO));
}
......
......@@ -3,16 +3,10 @@ package com.makeit.module.controller.wechat.space;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.auth.PlatOrgDTO;
import com.makeit.dto.platform.space.PlatSpaceAddDTO;
import com.makeit.dto.platform.space.PlatSpaceQueryDTO;
import com.makeit.dto.platform.space.PlatSpaceVO;
import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.utils.user.plat.PlatUserVO;
import com.makeit.utils.user.wechat.WechatUserInfo;
import com.makeit.utils.user.wechat.WechatUserUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -74,9 +68,9 @@ public class PlatSpaceWechatController {
}
@ApiOperation("一级空间列表(该账号权限下)")
@ApiOperation("一级空间列表")
@PostMapping("oneLevelList")
public ApiResponseEntity<List<PlatSpaceAddDTO>> oneLevelList(@RequestBody PlatOrgDTO dto) {
public ApiResponseEntity<List<PlatSpaceAddDTO>> oneLevelList(@RequestBody BaseIdDTO dto) {
List<PlatSpaceAddDTO> data = spaceService.oneLevelList(dto);
return ApiResponseUtils.success(data);
}
......
......@@ -27,7 +27,12 @@ public class PlatAlarmCheckDTO {
private JSONObject properties;
//PlatAlarmRecord.remark
//异常说明
private String remark;
//异常值
private String abnormalValue;
private PlatRegionSetting platRegionSetting;
}
......@@ -11,7 +11,7 @@ import java.time.LocalDateTime;
/**
* <p>
* 长者基本信息server-service/src/main/java/com/makeit/server/platform/elder/PlatElderPhysicalReportService.java
* 长者基本信息
* </p>
*
* @author eugene young
......@@ -20,12 +20,18 @@ import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Elder对象", description = "长者基本信息")
public class PlatElderReportDTO extends PlatElderIdDTO{
public class PlatElderReportDTO extends PlatElderIdDTO {
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("日期")
private LocalDate now;
@ApiModelProperty("月份")
private Integer year;
@ApiModelProperty("月份")
private Integer month;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("开始时间")
private LocalDateTime startTime;
......
......@@ -7,7 +7,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 告警记录
......@@ -28,7 +27,7 @@ public class PlatAlarmRecord extends BaseBusEntity {
/**
* 告警时间
*/
private Date alarmDate;
private LocalDateTime alarmDate;
/**
* 状态 0 待处理 1 已处理
......@@ -75,11 +74,18 @@ public class PlatAlarmRecord extends BaseBusEntity {
*/
private String elderIds;
//异常说明
private String remark;
@TableField(exist = false)
private String elderName;
//异常值
private String abnormalValue;
@ApiModelProperty("区域名称")
private String regionName;
}
......
......@@ -70,7 +70,7 @@ public class BehaviorAlarm implements IAlarm {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) {
log.info("行为告警配置未配置,告警配置id:" + config.getId());
log.error("行为告警配置未配置,告警配置id:" + config.getId());
return;
}
String personState = Convert.toStr(properties.get("personState"));
......@@ -78,7 +78,7 @@ public class BehaviorAlarm implements IAlarm {
Integer duration = ruleConfig.getDuration();//分钟
PlatDayDurationRecord platDayDurationRecord = dayDurationUtil.get(platDevice.getOriDeviceId());
if (platDayDurationRecord == null) {
log.info("行为告警未找到行为异常平均时长,设备id:" + platDevice.getId());
log.error("行为告警未找到行为异常平均时长,设备id:" + platDevice.getId());
return;
}
Long duration1 = platDayDurationRecord.getDuration();
......@@ -101,13 +101,13 @@ public class BehaviorAlarm implements IAlarm {
alarmRedisDTO.setStartLong(endLong);
alarmRedisDTO.setStart(now);
RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO);
log.info("空间雷达上报进入房间,设备id:" + platDevice.getId());
log.error("空间雷达上报进入房间,设备id:" + platDevice.getId());
return;
}
long count = endLong - startLong;
//进入空间时间满足告警时长,判断是否已经告警过了
if (count / 1000 >= duration && StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.NO.getValue())) {
log.info("空间雷达发出告警,设备id:" + platDevice.getId());
log.error("空间雷达发出告警,设备id:" + platDevice.getId());
notice(platAlarmCheckDTO);
alarmRedisDTO.setAlarm(CommonEnum.YES.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_BEHAVIOR_ID + deviceId, alarmRedisDTO);
......@@ -146,7 +146,7 @@ public class BehaviorAlarm implements IAlarm {
//save db
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
if(CollectionUtils.isEmpty(platAlarmCheckDTO.getPlatElderList())){
log.info("未关联长者,设备id:"+platDevice.getId());
log.error("未关联长者,设备id:"+platDevice.getId());
return;
}
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
......@@ -171,11 +171,12 @@ public class BehaviorAlarm implements IAlarm {
@Override
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
//获取长者 空间信息
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) {
log.info("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
log.error("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
return;
}
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
......@@ -197,6 +198,7 @@ public class BehaviorAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者行为异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
}
}
}
......@@ -56,7 +56,7 @@ public class BreathAlarm implements IAlarm {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) {
log.info("呼吸告警配置未配置,告警配置id:" + config.getId());
log.error("呼吸告警配置未配置,告警配置id:" + config.getId());
return;
}
String personState = Convert.toStr(properties.get("personState"));
......@@ -85,17 +85,18 @@ public class BreathAlarm implements IAlarm {
alarmRedisDTO.setStart(now);
alarmRedisDTO.setStartLong(endLong);
RedisUtil.set(RedisConst.ALARM_DEVICE_BR_ID + deviceId,alarmRedisDTO);
log.info("发现长者呼吸异常,设备id:"+deviceId);
log.error("发现长者呼吸异常,设备id:"+deviceId);
return;
}
Long startLong = alarmRedisDTO.getStartLong();
long count = endLong - startLong;
if (count/1000 >= duration) {
if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) {
log.info("呼吸已告警,设备id:" + platDevice.getId());
log.error("呼吸已告警,设备id:" + platDevice.getId());
return;
}
fillRemark(platAlarmCheckDTO, br, start, end);
platAlarmCheckDTO.setAbnormalValue(Convert.toStr(br));
notice(platAlarmCheckDTO);
alarmRedisDTO.setStartLong(endLong);
alarmRedisDTO.setStart(now);
......@@ -127,9 +128,10 @@ public class BreathAlarm implements IAlarm {
@Override
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) {
log.info("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
log.error("未关联长者,设备id:"+platAlarmCheckDTO.getPlatDevice().getId());
return;
}
for (PlatElder platElder : platElderList) {
......@@ -141,6 +143,7 @@ public class BreathAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者呼吸异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
}
}
}
......@@ -48,6 +48,9 @@ public class FallAlarm implements IAlarm {
String personState = Convert.toStr(properties.get("personState"));
AlarmRedisDTO alarmRedisDTO = RedisUtil.get(RedisConst.ALARM_DEVICE_FALL_ID + deviceId);
if (StringUtils.equals(personState, CommonEnum.YES.getValue())) {
if (StringUtils.equals(alarmRedisDTO.getAlarm(),CommonEnum.YES.getValue())){
log.error("长者跌倒,已告警过,设备iot_id:"+deviceId);
}
notice(platAlarmCheckDTO);
alarmRedisDTO.setAlarm(CommonEnum.YES.getValue());
RedisUtil.set(RedisConst.ALARM_DEVICE_FALL_ID, alarmRedisDTO);
......@@ -63,7 +66,7 @@ public class FallAlarm implements IAlarm {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) {
log.info("跌倒设备未关联长者,设备id:" + platDevice.getId());
log.error("跌倒设备未关联长者,设备id:" + platDevice.getId());
return;
}
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
......@@ -76,6 +79,7 @@ public class FallAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者跌倒,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
}
}
}
......@@ -47,7 +47,7 @@ public class HeartAlarm implements IAlarm {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
String deviceId = platDevice.getOriDeviceId();
if (StringUtils.isBlank(ruleConfigStr)) {
log.info("心率告警配置未配置,告警配置id:" + config.getId());
log.error("心率告警配置未配置,告警配置id:" + config.getId());
return;
}
String personState = Convert.toStr(properties.get("personState"));
......@@ -75,17 +75,20 @@ public class HeartAlarm implements IAlarm {
alarmRedisDTO.setStart(now);
alarmRedisDTO.setStartLong(endLong);
RedisUtil.set(RedisConst.ALARM_DEVICE_HR_ID + deviceId,alarmRedisDTO);
log.info("发现长者心率异常,设备id:"+deviceId);
log.error("发现长者心率异常,设备id:"+deviceId);
return;
}
Long startLong = alarmRedisDTO.getStartLong();
long count = endLong - startLong;
if (count/1000 >= duration) {
//todo 如果每台服务器都能收到上报消息 加redis锁
//RLock lock = RedisLockUtil.lock(RedisConst.LOCK_ALARM + deviceId);
if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) {
log.info("心率已告警,设备id:" + platDevice.getId());
log.error("心率已告警,设备id:" + platDevice.getId());
return;
}
fillRemark(platAlarmCheckDTO, hr, start, end);
platAlarmCheckDTO.setAbnormalValue(Convert.toStr(hr));
notice(platAlarmCheckDTO);
alarmRedisDTO.setStartLong(endLong);
alarmRedisDTO.setStart(now);
......@@ -110,9 +113,10 @@ public class HeartAlarm implements IAlarm {
@Override
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if (CollectionUtils.isEmpty(platElderList)) {
log.info("跌倒设备未关联长者,设备id:" + platAlarmCheckDTO.getPlatDevice().getId());
log.error("心率设备未关联长者,设备id:" + platAlarmCheckDTO.getPlatDevice().getId());
return;
}
for (PlatElder platElder : platElderList) {
......@@ -124,6 +128,7 @@ public class HeartAlarm implements IAlarm {
platAlarmRecord.setElderIds(platElder.getId());
platAlarmRecord.setElderName(platElder.getName());
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(), platAlarmRecord);
log.error("长者心率异常,发出告警,设备id:"+platDevice.getId()+", 长者名称:"+platElder.getName());
}
}
}
......@@ -52,7 +52,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Set;
......@@ -323,11 +322,12 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
List<String> param = platAlarmCheckDTO.getParam();
List<PlatElder> elderList = platAlarmCheckDTO.getPlatElderList();
PlatRegionSetting platRegionSetting = platAlarmCheckDTO.getPlatRegionSetting();
PlatAlarmRecord platAlarmRecord = new PlatAlarmRecord();
platAlarmRecord.setAlarmId(config.getId());
platAlarmRecord.setAlarmType(config.getAlarmType());
platAlarmRecord.setAlarmDate(new Date());
platAlarmRecord.setAlarmDate(LocalDateTime.now());
platAlarmRecord.setStatus(CommonEnum.NO.getValue());
platAlarmRecord.setNoticeStatus(CommonEnum.NO.getValue());
//模板信息 替换参数
......@@ -338,6 +338,11 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
platAlarmRecord.setElderIds(elderList.stream().map(BaseEntity::getId).collect(Collectors.joining(",")));
platAlarmRecord.setTenantId(config.getTenantId());
platAlarmRecord.setRemark(platAlarmCheckDTO.getRemark());
platAlarmRecord.setAbnormalValue(platAlarmCheckDTO.getAbnormalValue());
if(platRegionSetting!=null) {
platAlarmRecord.setRegionName(platRegionSetting.getRegionName());
}
return platAlarmRecord;
}
......
......@@ -386,6 +386,7 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
//如果是租户账号 则有所有权限
if (StringUtils.equals(isTenant, CommonEnum.YES.getValue())) {
List<PlatOrg> orgList = this.list(new LambdaQueryWrapper<PlatOrg>()
.eq(StringUtils.isNotEmpty(param.getType()), PlatOrg::getType, param.getType())
.eq(PlatOrg::getStatus, CommonEnum.YES.getValue())
);
return getOrgTree(orgList, Collections.singletonList(TenantIdUtil.getTenantId()));
......@@ -393,7 +394,9 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
//平台账号
Set<String> orgIdList = getOrgIdListByUserId(userVO.getId());
List<PlatOrg> orgList = this.list(new LambdaQueryWrapper<PlatOrg>().in(BaseEntity::getId, orgIdList).eq(PlatOrg::getStatus, CommonEnum.YES.getValue()));
List<PlatOrg> orgList = this.list(new LambdaQueryWrapper<PlatOrg>()
.eq(StringUtils.isNotEmpty(param.getType()), PlatOrg::getType, param.getType())
.in(BaseEntity::getId, orgIdList).eq(PlatOrg::getStatus, CommonEnum.YES.getValue()));
if (CollectionUtils.isEmpty(orgList)) {
return new ArrayList<>();
}
......@@ -464,6 +467,7 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
//如果是租户账号 则有所有权限
if (StringUtils.equals(isTenant, CommonEnum.YES.getValue())) {
List<PlatOrg> orgList = this.list(new LambdaQueryWrapper<PlatOrg>()
.eq(StringUtils.isNotEmpty(param.getType()), PlatOrg::getType, param.getType())
.eq(PlatOrg::getStatus, CommonEnum.YES.getValue())
);
return orgList;
......@@ -471,7 +475,9 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
//平台账号
Set<String> orgIdList = getOrgIdListByUserId(userVO.getId());
List<PlatOrg> orgList = this.list(new LambdaQueryWrapper<PlatOrg>().in(BaseEntity::getId, orgIdList).eq(PlatOrg::getStatus, CommonEnum.YES.getValue()));
List<PlatOrg> orgList = this.list(new LambdaQueryWrapper<PlatOrg>()
.eq(StringUtils.isNotEmpty(param.getType()), PlatOrg::getType, param.getType())
.in(BaseEntity::getId, orgIdList).eq(PlatOrg::getStatus, CommonEnum.YES.getValue()));
if (CollectionUtils.isEmpty(orgList)) {
return new ArrayList<>();
}
......
package com.makeit.service.platform.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepDiagramVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import com.makeit.vo.platform.elder.report.day.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.time.LocalDateTime;
import java.util.List;
......@@ -23,8 +26,18 @@ public interface PlatElderDayReportDayService {
List<PlatElderSleepDiagramVO> sleepDiagram(PlatElderReportDTO platElderIdDTO);
PlatElderHeartRespiratoryEvaluationVO heartRespiratoryEvaluation(PlatElderReportDTO platElderIdDTO);
List<PlatElderHeartRespiratoryEvaluationRecordVO> heartExceptionRecordList(PlatElderReportDTO platElderIdDTO);
List<PlatElderHeartRespiratoryEvaluationRecordVO> respiratoryExceptionRecordList(PlatElderReportDTO platElderIdDTO);
List<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(PlatElderReportDTO platElderIdDTO);
List<PlatElderBehaviorExceptionRecordVO> behaviorExceptionRecordList(PlatElderReportDTO platElderIdDTO);
List<String> failRecordList(PlatElderReportDTO platElderIdDTO);
List<PlatElderCoordinateVO> coordinateList(String elderId, String deviceId, LocalDateTime start, LocalDateTime end);
List<PlatElderCoordinateVO> coordinateList(PlatElderReportDTO platElderIdDTO);
......
package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.entity.platform.elder.PlatElderReportMonth;
import com.makeit.vo.platform.elder.report.day.PlatElderReportMonthVO;
import java.util.List;
/**
* <p>
......@@ -13,4 +17,7 @@ import com.makeit.entity.platform.elder.PlatElderReportMonth;
*/
public interface PlatElderReportMonthService extends IService<PlatElderReportMonth> {
List<PlatElderReportMonthVO> reportMonth(PlatElderReportDTO platElderIdDTO);
}
......@@ -2,12 +2,16 @@ package com.makeit.service.platform.elder.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.PlatElderBreatheAnalysis;
import com.makeit.entity.platform.elder.PlatElderSleep;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentSpace;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.*;
import com.makeit.utils.LongTimestampUtil;
......@@ -16,9 +20,7 @@ import com.makeit.utils.data.validate.CollectionUtils;
import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepDiagramContentVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepDiagramVO;
import com.makeit.vo.platform.elder.report.day.PlatElderSleepEvaluationVO;
import com.makeit.vo.platform.elder.report.day.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -47,6 +49,11 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
private PlatElderSleepAnalysisService platElderSleepAnalysisService;
@Autowired
private PlatElderBreatheAnalysisService platElderBreatheAnalysisService;
private PlatAlarmRecordService platAlarmRecordService;
@Autowired
private IotProductDeviceService iotProductDeviceService;
@Autowired
......@@ -105,7 +112,7 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
LocalDateTime start = dayStartNow(now);
LocalDateTime end = dayEndNow(now);
List<PlatElderSleepDiagramVO> voList = new ArrayList<>(10);
List<PlatElderSleepDiagramVO> voList;
String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
......@@ -140,6 +147,74 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
}
@Override
public PlatElderHeartRespiratoryEvaluationVO heartRespiratoryEvaluation(PlatElderReportDTO platElderIdDTO) {
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
LocalDateTime start = dayStartNow(now);
LocalDateTime end = dayEndNow(now);
PlatElderHeartRespiratoryEvaluationVO platElderSleepEvaluationVO = new PlatElderHeartRespiratoryEvaluationVO();
String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
PlatElderBreatheAnalysis platElderSleepAnalysis = platElderBreatheAnalysisService.getOne(new QueryWrapper<PlatElderBreatheAnalysis>().lambda()
.eq(PlatElderBreatheAnalysis::getElderId, platElderIdDTO.getElderId())
.eq(PlatElderBreatheAnalysis::getCurrentDate, nowString)
);
if (platElderSleepAnalysis == null) {
return platElderSleepEvaluationVO;
}
platElderSleepEvaluationVO.setScore(Integer.valueOf(platElderSleepAnalysis.getBreatheScore() + ""));
platElderSleepEvaluationVO.setResult(platElderSleepAnalysis.getBreatheResult());
platElderSleepEvaluationVO.setEvaluation(platElderSleepAnalysis.getBreatheEvaluate());
platElderSleepEvaluationVO.setHeartRate(Integer.valueOf(platElderSleepAnalysis.getAvgHeartRate() + ""));
platElderSleepEvaluationVO.setRespiratoryRate(Integer.valueOf(platElderSleepAnalysis.getAvgBreatheRate() + ""));
return platElderSleepEvaluationVO;
}
private List<PlatElderHeartRespiratoryEvaluationRecordVO> heartRespiratoryExceptionRecordList(PlatElderReportDTO platElderIdDTO, String alarmType) {
PlatDevice device = platElderRealTimeService.getBreathDevice(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId());
if (device == null) {
return new ArrayList<>(10);
}
List<PlatAlarmRecord> recordList = platAlarmRecordService.list(new QueryWrapper<PlatAlarmRecord>().lambda()
.eq(PlatAlarmRecord::getAlarmType, alarmType)
.eq(PlatAlarmRecord::getDeviceId, device.getId())
.orderByDesc(PlatAlarmRecord::getAlarmDate)
);
List<PlatElderHeartRespiratoryEvaluationRecordVO> voList = StreamUtil.map(recordList, e -> {
PlatElderHeartRespiratoryEvaluationRecordVO vo = new PlatElderHeartRespiratoryEvaluationRecordVO();
vo.setTime(e.getAlarmDate());
vo.setStatus(e.getRemark());
vo.setRate(Integer.valueOf(e.getAbnormalValue() + ""));
return vo;
});
return voList;
}
@Override
public List<PlatElderHeartRespiratoryEvaluationRecordVO> heartExceptionRecordList(PlatElderReportDTO platElderIdDTO) {
return heartRespiratoryExceptionRecordList(platElderIdDTO, PlatAlarmConfigEnum.AlarmTypeEnum.HEART.getValue());
}
@Override
public List<PlatElderHeartRespiratoryEvaluationRecordVO> respiratoryExceptionRecordList(PlatElderReportDTO platElderIdDTO) {
return heartRespiratoryExceptionRecordList(platElderIdDTO, PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE.getValue());
}
@Override
public List<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(PlatElderReportDTO platElderIdDTO) {
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId());
......@@ -170,6 +245,41 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
}
@Override
public List<PlatElderBehaviorExceptionRecordVO> behaviorExceptionRecordList(PlatElderReportDTO platElderIdDTO) {
List<PlatDevice> platDeviceList = platElderRealTimeService.getSpaceDevice(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId());
if (CollectionUtils.isEmpty(platDeviceList)) {
return new ArrayList<>(10);
}
List<PlatAlarmRecord> recordList = platAlarmRecordService.list(new QueryWrapper<PlatAlarmRecord>().lambda()
.eq(PlatAlarmRecord::getAlarmType, PlatAlarmConfigEnum.AlarmTypeEnum.BEHAVIOR.getValue())
.in(PlatAlarmRecord::getDeviceId, StreamUtil.mapId(platDeviceList, PlatDevice::getId))
.orderByDesc(PlatAlarmRecord::getAlarmDate)
);
List<PlatElderBehaviorExceptionRecordVO> voList = StreamUtil.map(recordList, e -> {
PlatElderBehaviorExceptionRecordVO vo = new PlatElderBehaviorExceptionRecordVO();
vo.setTime(e.getAlarmDate());
//vo.setRoomId(e.get);
vo.setRoomName(e.getRegionName());
vo.setDuration(Integer.valueOf(e.getAbnormalValue() + ""));
return vo;
});
return voList;
}
@Override
public List<String> failRecordList(PlatElderReportDTO platElderIdDTO) {
return null;
}
@Override
public List<PlatElderCoordinateVO> coordinateList(String elderId, String deviceId, LocalDateTime start, LocalDateTime end) {
List<PlatDevice> platDeviceList = platElderRealTimeService.getSpaceDevice(elderId, deviceId);
......
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.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.entity.platform.elder.PlatElderReportMonth;
import com.makeit.mapper.platform.elder.PlatElderReportMonthMapper;
import com.makeit.service.platform.elder.PlatElderReportMonthService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.report.day.PlatElderReportMonthVO;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* 长者月报 服务实现类
......@@ -17,4 +25,20 @@ import org.springframework.stereotype.Service;
@Service
public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReportMonthMapper, PlatElderReportMonth> implements PlatElderReportMonthService {
@Override
public List<PlatElderReportMonthVO> reportMonth(PlatElderReportDTO platElderIdDTO) {
LocalDate start = LocalDate.of(platElderIdDTO.getYear(), platElderIdDTO.getMonth(), 1);
LocalDate end = LocalDateTimeUtils.getMonthMax(start);
List<PlatElderReportMonth> monthList = list(new QueryWrapper<PlatElderReportMonth>().lambda()
.eq(PlatElderReportMonth::getElderId, platElderIdDTO.getElderId())
.ge(PlatElderReportMonth::getDay, start)
.le(PlatElderReportMonth::getDay, end)
);
List<PlatElderReportMonthVO> voList = BeanDtoVoUtils.listVo(monthList, PlatElderReportMonthVO.class);
return voList;
}
}
package com.makeit.service.platform.space;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.dto.platform.auth.PlatOrgDTO;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.dto.platform.space.PlatSpaceAddDTO;
import com.makeit.dto.platform.space.PlatSpaceQueryDTO;
import com.makeit.dto.platform.space.PlatSpaceVO;
import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.utils.user.wechat.WechatUserInfo;
import com.makeit.vo.platform.space.PlatSpaceAndRoomVO;
import java.util.List;
......@@ -62,7 +61,7 @@ public interface PlatSpaceService extends IService<PlatSpace> {
List<PlatSpace> listChild(List<String> spaceIds);
List<PlatSpaceAddDTO> oneLevelList(PlatOrgDTO dtom);
List<PlatSpaceAddDTO> oneLevelList(BaseIdDTO dto);
PlatSpaceVO child(PlatSpaceVO vo, Map<String,List<PlatSpace>> map);
......
......@@ -10,6 +10,7 @@ import com.makeit.entity.platform.space.PlatRoom;
import com.makeit.entity.platform.space.PlatRoomBedDevice;
import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.enums.platform.space.PlatBedPanoramaSpaceType;
import com.makeit.enums.platform.space.PlatBedStatusEnum;
import com.makeit.enums.platform.space.PlatRoomStatusEnum;
import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.space.*;
......@@ -59,6 +60,7 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
Map<String,List<PlatRoom>> spaceRoomMap = rooms.stream().collect(Collectors.groupingBy(PlatRoom::getSpaceId));
List<String> roomIds = rooms.stream().map(PlatRoom::getId).collect(Collectors.toList());
List<PlatBed> beds = platBedService.list(new QueryWrapper<PlatBed>().lambda()
.eq(PlatBed::getStatus, PlatBedStatusEnum.BedStatusEnum.CHECKED_IN.getValue())
.in(PlatBed::getRoomId,roomIds));
Map<String,List<PlatBed>> bedMap = beds.stream().collect(Collectors.groupingBy(PlatBed::getRoomId));
for(PlatSpace space : spaces){
......
......@@ -3,7 +3,7 @@ package com.makeit.service.platform.space.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.dto.platform.auth.PlatOrgDTO;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.dto.platform.space.PlatSpaceAddDTO;
import com.makeit.dto.platform.space.PlatSpaceQueryDTO;
import com.makeit.dto.platform.space.PlatSpaceVO;
......@@ -21,8 +21,6 @@ import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.user.plat.PlatUserUtil;
import com.makeit.utils.user.plat.PlatUserVO;
import com.makeit.utils.user.wechat.WechatUserInfo;
import com.makeit.utils.user.wechat.WechatUserUtil;
import com.makeit.vo.platform.space.PlatSpaceAndRoomVO;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -208,19 +206,11 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
}
@Override
public List<PlatSpaceAddDTO> oneLevelList(PlatOrgDTO dto) {
//获取该账号的权限组织
PlatOrg param = new PlatOrg();
param.setType(dto.getType());
List<PlatOrg> orgs = platOrgService.belongToScopeList(param);
if(orgs.isEmpty()){
return new ArrayList<>();
}
List<String> orgIds = orgs.stream().map(PlatOrg::getId).collect(Collectors.toList());
public List<PlatSpaceAddDTO> oneLevelList(BaseIdDTO dto) {
List<PlatSpace> spaces = list(new QueryWrapper<PlatSpace>().lambda()
.isNull(PlatSpace::getParentId)
.in(PlatSpace::getOrgId, orgIds));
.eq(PlatSpace::getOrgId, dto.getId()));
return BeanDtoVoUtils.listVo(spaces, PlatSpaceAddDTO.class);
}
......
......@@ -25,7 +25,6 @@ import com.makeit.service.platform.workstation.WorkStationService;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import com.makeit.vo.platform.space.PlatBedPanoramaVO;
import com.makeit.vo.platform.workstation.*;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -254,7 +253,7 @@ public class WorkStationServiceImpl implements WorkStationService {
WorkStationHomeStatisticsVO vo = new WorkStationHomeStatisticsVO();
if (dto.getOrgIds().isEmpty()) {
//获取该账号的权限组织
List<PlatOrg> orgs = belongToScopeList(PlatOrgEnum.OrgTypeEnum.INSTITUTION.getValue());
List<PlatOrg> orgs = belongToScopeList(PlatOrgEnum.OrgTypeEnum.HOME.getValue());
if (orgs.isEmpty()) {
return vo;
}
......@@ -293,7 +292,7 @@ public class WorkStationServiceImpl implements WorkStationService {
public List<WorkStationHomeBedVO> homeList(WorkStationQueryDTO dto) {
List<PlatSpace> spaces = new ArrayList<>();
//获取该账号的权限组织
List<PlatOrg> orgs = belongToScopeList(PlatOrgEnum.OrgTypeEnum.INSTITUTION.getValue());
List<PlatOrg> orgs = belongToScopeList(PlatOrgEnum.OrgTypeEnum.HOME.getValue());
if (orgs.isEmpty()) {
return new ArrayList<>();
}
......
......@@ -13,7 +13,7 @@ public class DayDurationTask {
@Autowired
private DayDurationUtil dayDurationUtil;
@Scheduled(cron = "0 */1 * * * ?")
@Scheduled(cron = "0 10 * * * ?")
public void updateDayDuration() {
dayDurationUtil.getAll();
}
......
......@@ -50,7 +50,7 @@ public class IotSyncTask {
* 启用状态的租户才同步
* 新增和更新平台端设备表
*/
// @Scheduled(cron = "0 0 */1 * * ?")
//@Scheduled(cron = "0 0 */1 * * ?")
@TenantIdIgnore
public void syncEquipmentInfo() {
log.info("开始执行同步设备信息接口");
......@@ -109,8 +109,10 @@ public class IotSyncTask {
platDevice.setName(iotDevice.getName());
platDevice.setProductName(iotDevice.getProductName());
platDevice.setProductId(iotDevice.getProductId());
if(iotDevice.getRegistryTime()!=null) {
LocalDateTime registryTime = LocalDateTime.ofEpochSecond(iotDevice.getRegistryTime() / 1000, 0, ZoneOffset.ofHours(8));
platDevice.setRegistrationDate(registryTime);
}
platDevice.setDescription(iotDevice.getDescribe());
String state = iotDevice.getState();
DeviceState deviceState = JSON.parseObject(state, DeviceState.class);
......
......@@ -27,7 +27,7 @@ public class PlatRoomVO {
@ApiModelProperty("房间床位使用数")
private Integer usedTotal;
@ApiModelProperty("状态")
@ApiModelProperty("状态 1-空闲 2-未住满 3-已住满")
private String roomStatus;
}
......@@ -18,6 +18,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
......@@ -62,7 +63,7 @@ public class PushCallback implements MqttCallback {
DeviceInfo device = JSON.parseObject(payload, DeviceInfo.class);
// todo
//checkAlarm(device);
checkAlarm(device);
}
@Override
......@@ -76,28 +77,24 @@ public class PushCallback implements MqttCallback {
* @param device
*/
@TenantIdIgnore
@Async
public void checkAlarm(DeviceInfo device) {
StopWatch stopWatch = new StopWatch();
stopWatch.start("checkAlarm-1");
String deviceId = device.getDeviceId();
// String propertiesStr = device.getProperties();
// if (StringUtils.isBlank(propertiesStr)) {
// return;
// }
// JSONObject properties = JSON.parseObject(propertiesStr);
JSONObject properties = device.getProperties();
//iot设备id
PlatDevice platDevice = deviceCacheUtil.get(deviceId);
if(platDevice==null){
logger.info("设备信息异常,设备iot-id:"+deviceId);
logger.error("设备信息异常,设备iot-id:"+deviceId);
return;
}
List<PlatAlarmConfig> deviceAlarmConfigList = alarmConfigCacheUtil.getDeviceAlarmConfigMap(platDevice);
deviceAlarmConfigList.removeIf(Objects::isNull);
if (CollectionUtils.isEmpty(deviceAlarmConfigList)) {
logger.info("该设备没有告警配置:"+deviceId);
logger.error("该设备没有告警配置:"+deviceId);
return;
}
for (PlatAlarmConfig config : deviceAlarmConfigList) {
......
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