Commit 068b485f by 汪志阳

fix:bug fix

parent 7ba70a8b
...@@ -606,18 +606,99 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -606,18 +606,99 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
sleepTimeDTO.setGetUpList(getUpList); sleepTimeDTO.setGetUpList(getUpList);
sleepTimeDTO.setDaySleepList(daySleepList); sleepTimeDTO.setDaySleepList(daySleepList);
sleepTimeDTO.setRestList(restList); sleepTimeDTO.setRestList(restList);
List<SleepTimeAnalysisVO> lightSleepList = new ArrayList<>(); sleepTimeDTO.setLightList(setLightSleepList(deepList,moderateList,restList,sleepList));
return sleepTimeDTO;
}
/**
* 获取浅度睡眠
* @param deepList
* @param moderateList
* @param restList
* @param sleepList
* @return
*/
private List<SleepTimeAnalysisVO> setLightSleepList(List<SleepTimeAnalysisVO> deepList, List<SleepTimeAnalysisVO> moderateList,
List<SleepTimeAnalysisVO> restList, List<SleepTimeAnalysisVO> sleepList) {
List<SleepTimeAnalysisVO> result = new ArrayList<>();
Map<String, List<SleepTimeAnalysisVO>> deepMap = deepList.stream().collect(Collectors.groupingBy(SleepTimeAnalysisVO::getBelongToSleepTime));
Map<String, List<SleepTimeAnalysisVO>> moderMap = moderateList.stream().collect(Collectors.groupingBy(SleepTimeAnalysisVO::getBelongToSleepTime));
if (CollUtil.isNotEmpty(sleepList)) { if (CollUtil.isNotEmpty(sleepList)) {
lightSleepList = sleepList; buildLightList(sleepList, result, deepMap, moderMap);
if (CollUtil.isNotEmpty(deepList)) { }
lightSleepList.removeAll(deepList); if (CollUtil.isNotEmpty(restList)) {
} buildLightList(restList, result, deepMap, moderMap);
if (CollUtil.isNotEmpty(moderateList)) { }
lightSleepList.removeAll(moderateList); return result;
}
private void buildLightList(List<SleepTimeAnalysisVO> list, List<SleepTimeAnalysisVO> result,
Map<String, List<SleepTimeAnalysisVO>> deepMap,
Map<String, List<SleepTimeAnalysisVO>> moderMap) {
list.forEach(s -> {
LocalDateTime startTime = LocalDateTime.parse(s.getStartTime(), DEFAULT_FORMATTER);
LocalDateTime endTime = LocalDateTime.parse(s.getEndTime(), DEFAULT_FORMATTER);
List<LocalDateTime> rangeTimes = getRangeTime(startTime, endTime);
List<SleepTimeAnalysisVO> deeps = deepMap.get(s.getStartTime());
List<LocalDateTime> removeList = new ArrayList<>();
if (CollUtil.isNotEmpty(deeps)) {
deeps.forEach(d -> CollUtil.addAll(removeList, getRangeTime(startTime, endTime)));
}
List<SleepTimeAnalysisVO> moder = moderMap.get(s.getStartTime());
if (CollUtil.isNotEmpty(moder)) {
moder.forEach(d -> CollUtil.addAll(removeList, getRangeTime(startTime, endTime)));
}
if (CollUtil.isNotEmpty(removeList)) {
rangeTimes.removeAll(removeList);
}
result.addAll(getLightList(rangeTimes));
});
}
private List<SleepTimeAnalysisVO> getLightList (List<LocalDateTime> rangeTimes) {
List<SleepTimeAnalysisVO> result = new ArrayList<>();
LocalDateTime startTime = null;
long count = 0;
for (int i = 0; i < rangeTimes.size(); i++) {
LocalDateTime time = rangeTimes.get(i);
if (startTime == null) {
startTime = time;
}
long minutes = Duration.between(startTime, time).toMinutes();
if (minutes != count) {
SleepTimeAnalysisVO analysisVO = new SleepTimeAnalysisVO();
analysisVO.setBelongToSleepTime(DateUtil.format(startTime, DatePattern.NORM_DATETIME_PATTERN));
analysisVO.setStartTime(DateUtil.format(startTime, DatePattern.NORM_DATETIME_PATTERN));
analysisVO.setType(SleepTypeEnum.SLEEP_LIGHTNESS.getCode());
analysisVO.setEndTime(DateUtil.format(rangeTimes.get(i - 1), DatePattern.NORM_DATETIME_PATTERN));
analysisVO.setInterval(count - 1);
result.add(analysisVO);
startTime = time;
count = 1;
} else {
count++;
}
if (i == rangeTimes.size() - 1 && startTime != null) {
SleepTimeAnalysisVO analysisVO = new SleepTimeAnalysisVO();
analysisVO.setBelongToSleepTime(DateUtil.format(startTime, DatePattern.NORM_DATETIME_MINUTE_PATTERN));
analysisVO.setStartTime(DateUtil.format(startTime, DatePattern.NORM_DATETIME_MINUTE_PATTERN));
analysisVO.setType(SleepTypeEnum.SLEEP_LIGHTNESS.getCode());
analysisVO.setEndTime(DateUtil.format(rangeTimes.get(i), DatePattern.NORM_DATETIME_MINUTE_PATTERN));
analysisVO.setInterval(count - 1);
result.add(analysisVO);
} }
} }
sleepTimeDTO.setLightList(lightSleepList); return result;
return sleepTimeDTO; }
private List<LocalDateTime> getRangeTime(LocalDateTime startTime, LocalDateTime endTime) {
List<LocalDateTime> result = new ArrayList<>();
long minutes = Duration.between(startTime, endTime).toMinutes();
for (int i = 0; i < minutes + 1; i++) {
result.add(startTime.plusMinutes(i));
}
return result;
} }
private PlatElderSleepAnalysis savePlatElderSleepAnalysis(SleepTimeDTO sleepTimeDTO, private PlatElderSleepAnalysis savePlatElderSleepAnalysis(SleepTimeDTO sleepTimeDTO,
...@@ -797,11 +878,13 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -797,11 +878,13 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
String bedId = platRoomBedDevice.getBedId(); String bedId = platRoomBedDevice.getBedId();
PlatElder elder = platElderService.getOne(new QueryWrapper<PlatElder>().lambda() PlatElder elder = platElderService.getOne(new QueryWrapper<PlatElder>().lambda()
.eq(PlatElder::getBedId, bedId)); .eq(PlatElder::getBedId, bedId));
if (elder == null || !"1712648603580764161".equals(elder.getId())) { // || !"1712648603580764161".equals(elder.getId())
if (elder == null ) {
continue; continue;
} }
PlatDevice platDevice = platDeviceService.getById(platRoomBedDevice.getDeviceId()); PlatDevice platDevice = platDeviceService.getById(platRoomBedDevice.getDeviceId());
if (platDevice == null || !"218A00XE2669104".equals(platDevice.getOriDeviceId())) { // || !"218A00XE2669104".equals(platDevice.getOriDeviceId())
if (platDevice == null ) {
continue; continue;
} }
String tenantId = elder.getTenantId(); String tenantId = elder.getTenantId();
......
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