Commit afa92b38 by huangjy

fix:子女端登陆问题,睡眠分析问题V1

parent f6d75013
...@@ -13,6 +13,7 @@ public class AnalysisVO { ...@@ -13,6 +13,7 @@ public class AnalysisVO {
private Integer avgBr; private Integer avgBr;
private Integer maxBr; private Integer maxBr;
private Integer minBr; private Integer minBr;
private Integer hrBrCount;
private Integer actionCount = 0; // 体动次数 private Integer actionCount = 0; // 体动次数
private Integer turnedCount = 0; // 翻身次数 private Integer turnedCount = 0; // 翻身次数
......
...@@ -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();
......
...@@ -40,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -40,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
...@@ -91,10 +92,25 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild ...@@ -91,10 +92,25 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild
String tenantId = RequestUtil.getTenantIdHeader(); String tenantId = RequestUtil.getTenantIdHeader();
dto.setTenantId(tenantId); dto.setTenantId(tenantId);
Page<PlatElderChildrenInfo> voPage = page(p, lambdaQueryWrapper(dto)); LambdaQueryWrapper<PlatElderChildrenInfo> queryWrapper = lambdaQueryWrapper(dto);
queryWrapper.groupBy(PlatElderChildrenInfo::getOpenid);
Page<PlatElderChildrenInfo> voPage = page(p, queryWrapper);
List<PlatElderChildrenInfoListVO> voList = BeanDtoVoUtils.listVo(voPage.getRecords(), PlatElderChildrenInfoListVO.class); List<PlatElderChildrenInfoListVO> voList = BeanDtoVoUtils.listVo(voPage.getRecords(), PlatElderChildrenInfoListVO.class);
if (CollectionUtils.isEmpty(voList)) {
return new PageVO<>();
}
List<String> openIdList = voList.stream().map(PlatElderChildrenInfoListVO::getOpenid).collect(Collectors.toList());
List<PlatElderChildrenInfo> platElderChildrenInfos = list(new QueryWrapper<PlatElderChildrenInfo>().lambda().in(PlatElderChildrenInfo::getOpenid, openIdList));
Map<String, List<PlatElderChildrenInfo>> map = StreamUtil.groupBy(platElderChildrenInfos, PlatElderChildrenInfo::getOpenid);
for (PlatElderChildrenInfoListVO platElderChildrenInfoListVO : voList) {
List<PlatElderChildrenInfo> platElderChildrenInfoList = map.get(platElderChildrenInfoListVO.getOpenid());
if (CollectionUtils.isNotEmpty(platElderChildrenInfoList)) {
String elderIds = platElderChildrenInfoList.stream().map(PlatElderChildrenInfo::getElderId).collect(Collectors.joining());
platElderChildrenInfoListVO.setElderId(elderIds);
}
}
fill(voList); fill(voList);
return PageUtil.toPageVO(voList, voPage); return PageUtil.toPageVO(voList, voPage);
...@@ -193,7 +209,8 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild ...@@ -193,7 +209,8 @@ public class PlatElderChildrenInfoServiceImpl extends ServiceImpl<PlatElderChild
@Override @Override
public List<PlatElderChildrenInfoWechatVO> listByOpenid(String openid) { public List<PlatElderChildrenInfoWechatVO> listByOpenid(String openid) {
List<PlatElderChildrenInfo> platElderChildrenInfoList = list(new QueryWrapper<PlatElderChildrenInfo>().lambda().eq(PlatElderChildrenInfo::getOpenid, openid)); List<PlatElderChildrenInfo> platElderChildrenInfoList = list(new QueryWrapper<PlatElderChildrenInfo>().lambda().eq(PlatElderChildrenInfo::getOpenid, openid)
.isNotNull(PlatElderChildrenInfo::getElderId));
if (CollectionUtils.isEmpty(platElderChildrenInfoList)) { if (CollectionUtils.isEmpty(platElderChildrenInfoList)) {
return Lists.newArrayList(); return Lists.newArrayList();
......
...@@ -487,27 +487,31 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService { ...@@ -487,27 +487,31 @@ 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);
vo.setDeviceId(platDevice.getId()); if (jsonObject != null) {
vo.setOriDeviceId(platDevice.getOriDeviceId()); vo.setDeviceId(platDevice.getId());
vo.setDistance(Integer.valueOf(jsonObject.getString("distance"))); vo.setOriDeviceId(platDevice.getOriDeviceId());
vo.setAngle(Integer.valueOf(jsonObject.getString("angle"))); vo.setDistance(Integer.valueOf(jsonObject.getString("distance")));
vo.setPersonState(Integer.valueOf(jsonObject.getString("personState"))); vo.setAngle(Integer.valueOf(jsonObject.getString("angle")));
vo.setMount(Integer.valueOf(jsonObject.getString("mount"))); vo.setPersonState(Integer.valueOf(jsonObject.getString("personState")));
vo.setType(1); vo.setMount(Integer.valueOf(jsonObject.getString("mount")));
voList.add(vo); vo.setType(1);
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);
vo.setDeviceId(platDevice.getId()); if (jsonObject != null) {
vo.setOriDeviceId(platDevice.getOriDeviceId()); vo.setDeviceId(platDevice.getId());
Object track = jsonObject.get("track"); vo.setOriDeviceId(platDevice.getOriDeviceId());
vo.setTrack((track == null ? Lists.newArrayList() : (List<Integer>) track)); Object track = jsonObject.get("track");
vo.setPersonState(Integer.valueOf(jsonObject.getString("personState"))); vo.setTrack((track == null ? Lists.newArrayList() : (List<Integer>) track));
vo.setMount(Integer.valueOf(jsonObject.getString("mount"))); vo.setPersonState(Integer.valueOf(jsonObject.getString("personState")));
vo.setType(2); vo.setMount(Integer.valueOf(jsonObject.getString("mount")));
voList.add(vo); vo.setType(2);
voList.add(vo);
}
} }
} }
return voList; return voList;
......
...@@ -166,6 +166,7 @@ public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReport ...@@ -166,6 +166,7 @@ public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReport
List<PlatAlarmRecord> recordList = platAlarmRecordService.list(new QueryWrapper<PlatAlarmRecord>().lambda() List<PlatAlarmRecord> recordList = platAlarmRecordService.list(new QueryWrapper<PlatAlarmRecord>().lambda()
.ge(PlatAlarmRecord::getAlarmDate, yesStart) .ge(PlatAlarmRecord::getAlarmDate, yesStart)
.le(PlatAlarmRecord::getAlarmDate, yesEnd) .le(PlatAlarmRecord::getAlarmDate, yesEnd)
.eq(PlatAlarmRecord::getMisinformationFlag,0)
.in(PlatAlarmRecord::getElderIds, StreamUtil.mapId(elderList, PlatElder::getId))); .in(PlatAlarmRecord::getElderIds, StreamUtil.mapId(elderList, PlatElder::getId)));
Map<String, List<PlatAlarmRecord>> recordMap = StreamUtil.groupBy(recordList, PlatAlarmRecord::getElderIds); Map<String, List<PlatAlarmRecord>> recordMap = StreamUtil.groupBy(recordList, PlatAlarmRecord::getElderIds);
......
...@@ -201,6 +201,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -201,6 +201,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
int maxHr = 0; int maxHr = 0;
int minHr = 0; int minHr = 0;
int totalHr = 0; int totalHr = 0;
int hrBrCount = 0; // 呼吸率心率统计次数
// 呼吸暂停 // 呼吸暂停
int brStopCount = 0; int brStopCount = 0;
...@@ -364,8 +365,11 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -364,8 +365,11 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
minHr = hr; minHr = hr;
} }
totalBr += br; if (breatheProperties.getPerson() == 1) {
totalHr += hr; totalBr += br;
totalHr += hr;
hrBrCount++;
}
} }
/* int brStopThreshold = brStopCount / breatheDuration; /* int brStopThreshold = brStopCount / breatheDuration;
int brFastThreshold = brFastCount / breatheDuration; int brFastThreshold = brFastCount / breatheDuration;
...@@ -401,7 +405,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -401,7 +405,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
analysisVO.setAvgHr(totalHr / 60); analysisVO.setAvgHr(totalHr / 60);
analysisVO.setMaxHr(maxHr); analysisVO.setMaxHr(maxHr);
analysisVO.setMinHr(minHr); analysisVO.setMinHr(minHr);
analysisVO.setHrBrCount(hrBrCount);
analysisVO.setActionCount(bodymoveCount); analysisVO.setActionCount(bodymoveCount);
analysisVO.setTurnedCount(turnoverCount); analysisVO.setTurnedCount(turnoverCount);
...@@ -456,6 +460,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -456,6 +460,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
int hrSlowCount = 0; int hrSlowCount = 0;
int dayTotalHr = 0; int dayTotalHr = 0;
int dayTotalBr = 0; int dayTotalBr = 0;
int dayBrHrCount = 0;
// 计算异常的信息,并且统计异常的次数 // 计算异常的信息,并且统计异常的次数
List<BreatheAbnormalVO> breatheAbnormalVOList = Lists.newArrayList(); List<BreatheAbnormalVO> breatheAbnormalVOList = Lists.newArrayList();
...@@ -499,6 +504,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -499,6 +504,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
} }
dayTotalHr += analysisVO.getTotalHr(); dayTotalHr += analysisVO.getTotalHr();
dayTotalBr += analysisVO.getTotalBr(); dayTotalBr += analysisVO.getTotalBr();
dayBrHrCount += analysisVO.getHrBrCount();
} }
...@@ -593,8 +599,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -593,8 +599,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
// 插入呼吸分析表 // 插入呼吸分析表
PlatElderBreatheAnalysis platElderBreatheAnalysis = new PlatElderBreatheAnalysis(); PlatElderBreatheAnalysis platElderBreatheAnalysis = new PlatElderBreatheAnalysis();
platElderBreatheAnalysis.setElderId(elder.getId()); platElderBreatheAnalysis.setElderId(elder.getId());
platElderBreatheAnalysis.setAvgBreatheRate(String.valueOf(dayTotalBr / (timeHourRange * 60 * 60))); platElderBreatheAnalysis.setAvgBreatheRate(String.valueOf(dayTotalBr / (timeHourRange * dayBrHrCount)));
platElderBreatheAnalysis.setAvgHeartRate(String.valueOf(dayTotalHr / (timeHourRange * 60 * 60))); platElderBreatheAnalysis.setAvgHeartRate(String.valueOf(dayTotalHr / (timeHourRange * dayBrHrCount)));
platElderBreatheAnalysis.setBreatheScore(finalReport.getScore()); platElderBreatheAnalysis.setBreatheScore(finalReport.getScore());
platElderBreatheAnalysis.setHappenDate(currentDate); platElderBreatheAnalysis.setHappenDate(currentDate);
platElderBreatheAnalysis.setTenantId(tenantId); platElderBreatheAnalysis.setTenantId(tenantId);
...@@ -1079,29 +1085,27 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -1079,29 +1085,27 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
public List<String> getLastDayHourRange() { public List<String> getLastDayHourRange() {
int count = 24; int count = 24;
LocalDateTime now = LocalDateTime.now(); LocalDateTime localDateTime = getDayStart(LocalDate.now()).plusHours(8);
List<String> list = Lists.newArrayList(); List<String> list = Lists.newArrayList();
String startTime; String startTime;
String endTime; String endTime;
for (int i = count; i > 0; i--) { for (int i = count; i > 0; i--) {
startTime = DateUtil.format(now.minusHours(i), DatePattern.NORM_DATETIME_PATTERN); startTime = DateUtil.format(localDateTime.minusHours(i), DatePattern.NORM_DATETIME_PATTERN);
endTime = DateUtil.format(now.minusHours(i - 1), DatePattern.NORM_DATETIME_PATTERN); endTime = DateUtil.format(localDateTime.minusHours(i - 1), DatePattern.NORM_DATETIME_PATTERN);
list.add(startTime + "~" + endTime); list.add(startTime + "~" + endTime);
} }
return list; return list;
} }
public static LocalDateTime getDayStart(LocalDate time) {
return time.atTime(0, 0, 0);
}
public static void main(String[] args) { public static void main(String[] args) {
int days = 30; PlatElderSleepServiceImpl platElderSleepService1 = new PlatElderSleepServiceImpl();
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime localDateTime = LocalDateTime.now().minusDays(28); List<String> lastDayHourRange = platElderSleepService1.getLastDayHourRange();
for (int i = 0; i < days; i++) { System.out.println();
int i1 = RandomUtils.nextInt(0,4);
System.out.println(i1);
localDateTime = localDateTime.plusDays(1);
String currentDate = localDateTime.format(timeFormatter);
System.out.println(currentDate);
}
} }
......
...@@ -24,7 +24,7 @@ public class IotSyncTask { ...@@ -24,7 +24,7 @@ public class IotSyncTask {
* 启用状态的租户才同步 * 启用状态的租户才同步
* 新增和更新平台端设备表 * 新增和更新平台端设备表
*/ */
@Scheduled(cron = "0 0/1 * * * ?") //@Scheduled(cron = "0 0/1 * * * ?")
public void syncEquipmentInfo() { public void syncEquipmentInfo() {
platDeviceService.savePlatDevice(); platDeviceService.savePlatDevice();
} }
...@@ -39,7 +39,7 @@ public class IotSyncTask { ...@@ -39,7 +39,7 @@ public class IotSyncTask {
/** /**
* 长者睡眠分析 * 长者睡眠分析
*/ */
@Scheduled(cron = "0 0 2 * * ?") @Scheduled(cron = "0 0 1 * * ?")
@TenantIdIgnore @TenantIdIgnore
public void elderSleepSleepAnalysisTask() { public void elderSleepSleepAnalysisTask() {
log.info("开始定时分析长者睡眠质量"); log.info("开始定时分析长者睡眠质量");
......
...@@ -11,7 +11,7 @@ public class ReportMonthTask { ...@@ -11,7 +11,7 @@ public class ReportMonthTask {
@Autowired @Autowired
private PlatElderReportMonthService platElderReportMonthService; private PlatElderReportMonthService platElderReportMonthService;
@Scheduled(cron = "0 0 1 * * ? ") @Scheduled(cron = "0 0 2 * * ? ")
public void job(){ public void job(){
platElderReportMonthService.reportMonthJob(); platElderReportMonthService.reportMonthJob();
} }
......
package com.makeit.vo.wechat.elder; package com.makeit.vo.wechat.elder;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.dto.BaseTenantDTO; import com.makeit.common.dto.BaseTenantDTO;
import com.makeit.entity.platform.elder.PlatElder; import com.makeit.entity.platform.elder.PlatElder;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -18,7 +19,7 @@ import lombok.EqualsAndHashCode; ...@@ -18,7 +19,7 @@ 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;
......
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