Commit 068b485f by 汪志阳

fix:bug fix

parent 7ba70a8b
......@@ -606,18 +606,99 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
sleepTimeDTO.setGetUpList(getUpList);
sleepTimeDTO.setDaySleepList(daySleepList);
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)) {
lightSleepList = sleepList;
if (CollUtil.isNotEmpty(deepList)) {
lightSleepList.removeAll(deepList);
buildLightList(sleepList, result, deepMap, moderMap);
}
if (CollUtil.isNotEmpty(moderateList)) {
lightSleepList.removeAll(moderateList);
if (CollUtil.isNotEmpty(restList)) {
buildLightList(restList, result, deepMap, moderMap);
}
return result;
}
sleepTimeDTO.setLightList(lightSleepList);
return sleepTimeDTO;
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);
}
}
return result;
}
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,
......@@ -797,11 +878,13 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
String bedId = platRoomBedDevice.getBedId();
PlatElder elder = platElderService.getOne(new QueryWrapper<PlatElder>().lambda()
.eq(PlatElder::getBedId, bedId));
if (elder == null || !"1712648603580764161".equals(elder.getId())) {
// || !"1712648603580764161".equals(elder.getId())
if (elder == null ) {
continue;
}
PlatDevice platDevice = platDeviceService.getById(platRoomBedDevice.getDeviceId());
if (platDevice == null || !"218A00XE2669104".equals(platDevice.getOriDeviceId())) {
// || !"218A00XE2669104".equals(platDevice.getOriDeviceId())
if (platDevice == null ) {
continue;
}
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