Commit b6efebe9 by 汪志阳

fix:bug修改

parent bbffae90
...@@ -7,6 +7,7 @@ import cn.hutool.core.date.DateUtil; ...@@ -7,6 +7,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
...@@ -97,12 +98,10 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -97,12 +98,10 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
List<DeviceInfoContentBreathe> deviceInfoContentBreathes = entry.getValue(); List<DeviceInfoContentBreathe> deviceInfoContentBreathes = entry.getValue();
DeviceInfoContentBreathe.Properties breatheProperties; DeviceInfoContentBreathe.Properties breatheProperties;
int reportSize = deviceInfoContentBreathes.size(); int reportSize = deviceInfoContentBreathes.size();
// 记录总呼吸率和总心率 // 记录总呼吸率和总心率
int maxBr = 0; int maxBr = 0;
int minBr = 0; int minBr = 0;
int maxHr = 0; int maxHr = 0;
int minHr = 0; int minHr = 0;
int hrBrCount = 0; // 呼吸率心率统计次数 int hrBrCount = 0; // 呼吸率心率统计次数
...@@ -117,7 +116,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -117,7 +116,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
boolean isMoveBed = false; boolean isMoveBed = false;
// 清醒每分钟体动是否满足要求 (每分钟体动值大于60或无人) // 清醒每分钟体动是否满足要求 (每分钟体动值大于60或无人)
boolean awakeMinuteActionFlag = false; boolean awakeMinuteActionFlag = false;
int noPersonCount = 0; // 无人跳过计数 int noPersonCount = 0; // 无人跳过计数
for (DeviceInfoContentBreathe infoContentBreathe : deviceInfoContentBreathes) { for (DeviceInfoContentBreathe infoContentBreathe : deviceInfoContentBreathes) {
// 体动指数 // 体动指数
...@@ -126,7 +124,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -126,7 +124,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
int br = breatheProperties.getBr(); int br = breatheProperties.getBr();
int hr = breatheProperties.getHr(); int hr = breatheProperties.getHr();
Integer hasPerson = breatheProperties.getPerson(); // 0无人,1有人 Integer hasPerson = breatheProperties.getPerson(); // 0无人,1有人
if (hasPerson == 0) { if (hasPerson == 0) {
noPersonCount++; noPersonCount++;
isMoveBed = true; isMoveBed = true;
...@@ -142,7 +139,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -142,7 +139,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
noPersonCount++; noPersonCount++;
continue; continue;
} }
if (bodyMove > actionThreshold) { if (bodyMove > actionThreshold) {
bodymoveCount++; bodymoveCount++;
} }
...@@ -161,7 +157,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -161,7 +157,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
if (bodyMove > awakeThreshold) { if (bodyMove > awakeThreshold) {
awakeMinuteActionFlag = true; awakeMinuteActionFlag = true;
} }
if (br > maxBr) { if (br > maxBr) {
maxBr = br; maxBr = br;
} }
...@@ -170,17 +165,14 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -170,17 +165,14 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
} else if (br < minBr) { } else if (br < minBr) {
minBr = br; minBr = br;
} }
if (hr > maxHr) { if (hr > maxHr) {
maxHr = hr; maxHr = hr;
} }
if (minHr == 0) { if (minHr == 0) {
minHr = hr; minHr = hr;
} else if (hr < minHr) { } else if (hr < minHr) {
minHr = hr; minHr = hr;
} }
if (hasPerson == 1) { if (hasPerson == 1) {
totalBr += br; totalBr += br;
totalHr += hr; totalHr += hr;
...@@ -250,7 +242,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -250,7 +242,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
sleepTimeAnalysisVO.setStartTime(startSleepTime); sleepTimeAnalysisVO.setStartTime(startSleepTime);
sleepTimeAnalysisVO.setEndTime(entry.getKey()); sleepTimeAnalysisVO.setEndTime(entry.getKey());
sleepTimeAnalysisVO.setType(SleepTypeEnum.DAY_SLEEP.getCode()); sleepTimeAnalysisVO.setType(SleepTypeEnum.DAY_SLEEP.getCode());
// sleepTimeAnalysisVOList.add(sleepTimeAnalysisVO);
isSleep = true; isSleep = true;
} }
getUpTime = sleepTimeAnalysisVO.getGetUpTime(); getUpTime = sleepTimeAnalysisVO.getGetUpTime();
...@@ -314,7 +305,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -314,7 +305,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
isSleep = false; isSleep = false;
} }
} }
TreeMap<String, TreeMap<String, AnalysisVO>> sleepTypeMap = new TreeMap<>(); TreeMap<String, TreeMap<String, AnalysisVO>> sleepTypeMap = new TreeMap<>();
if (CollUtil.isEmpty(sleepTimeAnalysisVOList)) { if (CollUtil.isEmpty(sleepTimeAnalysisVOList)) {
return sleepTypeMap; return sleepTypeMap;
...@@ -381,7 +371,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -381,7 +371,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
return; return;
} }
boolean isDeepSleep = false; boolean isDeepSleep = false;
for (Map.Entry<String, TreeMap<String, AnalysisVO>> entry : sleepTypeMap.entrySet()) { for (Map.Entry<String, TreeMap<String, AnalysisVO>> entry : sleepTypeMap.entrySet()) {
TreeMap<String, AnalysisVO> sleepMap = entry.getValue(); TreeMap<String, AnalysisVO> sleepMap = entry.getValue();
for (Map.Entry<String, AnalysisVO> voEntry : sleepMap.entrySet()) { for (Map.Entry<String, AnalysisVO> voEntry : sleepMap.entrySet()) {
...@@ -417,7 +406,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -417,7 +406,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
sleepTimeAnalysisVO.setStartTime(startSleepDeepTime); sleepTimeAnalysisVO.setStartTime(startSleepDeepTime);
sleepTimeAnalysisVO.setEndTime(getLastMinute(voEntry.getKey())); sleepTimeAnalysisVO.setEndTime(getLastMinute(voEntry.getKey()));
sleepTimeAnalysisVO.setType(SleepTypeEnum.SLEEP_DEEP.getCode()); sleepTimeAnalysisVO.setType(SleepTypeEnum.SLEEP_DEEP.getCode());
// sleepTimeAnalysisVOList.add(sleepTimeAnalysisVO);
isDeepSleep = true; isDeepSleep = true;
} }
String endTime = sleepTimeAnalysisVO.getEndTime(); String endTime = sleepTimeAnalysisVO.getEndTime();
...@@ -427,9 +415,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -427,9 +415,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
sleepDeepMinute = 0; sleepDeepMinute = 0;
isDeepSleep = false; isDeepSleep = false;
} }
} }
} }
} }
...@@ -438,23 +424,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -438,23 +424,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
return DateUtil.format(parse.plusMinutes(-1), DatePattern.NORM_DATETIME_MINUTE_PATTERN); return DateUtil.format(parse.plusMinutes(-1), DatePattern.NORM_DATETIME_MINUTE_PATTERN);
} }
private TreeMap<String, TreeMap<String, AnalysisVO>> filterTime(TreeMap<String, TreeMap<String, AnalysisVO>> sleepTypeMap) { private SleepCountDTO deepSleepAndRestData(TreeMap<String, TreeMap<String, AnalysisVO>> sleepTypeMap,
TreeMap<String, TreeMap<String, AnalysisVO>> result = new TreeMap<>(); SaasSleepAnalysisModel analysisModel,
sleepTypeMap.forEach((k, v) -> {
TreeMap<String, AnalysisVO> treeMap = new TreeMap<>();
v.forEach((k2, v2) -> {
boolean after = LocalDateTime.parse(k2, DEFAULT_FORMATTER).isAfter(LocalDateTime.of(2024, 1, 10, 1, 0));
boolean before = LocalDateTime.parse(k2, DEFAULT_FORMATTER).isBefore(LocalDateTime.of(2024, 1, 10, 2, 0));
if (after && before) {
treeMap.put(k2, v2);
}
});
result.put(k,treeMap);
});
return result;
}
private SleepCountDTO deepSleepAndRestData(TreeMap<String, TreeMap<String, AnalysisVO>> sleepTypeMap, SaasSleepAnalysisModel analysisModel,
List<SleepTimeAnalysisVO> sleepTimeAnalysisVOList) { List<SleepTimeAnalysisVO> sleepTimeAnalysisVOList) {
String startSleepDeepTime; String startSleepDeepTime;
int napThreshold = Integer.parseInt(analysisModel.getNapThreshold()); int napThreshold = Integer.parseInt(analysisModel.getNapThreshold());
...@@ -570,29 +541,23 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -570,29 +541,23 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
if (StringUtils.isEmpty(startAwakeTime)) { if (StringUtils.isEmpty(startAwakeTime)) {
startAwakeTime = voEntry.getKey(); startAwakeTime = voEntry.getKey();
} }
long between = Duration.between(LocalDateTime.parse(startAwakeTime, DEFAULT_FORMATTER), awakeMinute++;
LocalDateTime.parse(entry.getKey(), DEFAULT_FORMATTER)).toMinutes();
if (between == awakeMinute) {
awakeMinute++;
} else {
awakeMinute = 0;
startAwakeTime = null;
}
continue; continue;
} }
if (StringUtils.isEmpty(startAwakeTime) && awakeMinute == 0) { if (StringUtils.isEmpty(startAwakeTime) && awakeMinute == 0) {
continue; continue;
} }
SleepTimeAnalysisVO sleepTimeAnalysisVO = new SleepTimeAnalysisVO(); if (StrUtil.isNotBlank(startAwakeTime) && awakeMinute > 0) {
sleepTimeAnalysisVO.setStartTime(startAwakeTime); SleepTimeAnalysisVO sleepTimeAnalysisVO = new SleepTimeAnalysisVO();
sleepTimeAnalysisVO.setEndTime(voEntry.getKey()); sleepTimeAnalysisVO.setStartTime(startAwakeTime);
sleepTimeAnalysisVO.setType(SleepTypeEnum.SOBER.getCode()); sleepTimeAnalysisVO.setEndTime(voEntry.getKey());
sleepTimeAnalysisVOList.add(sleepTimeAnalysisVO); sleepTimeAnalysisVO.setType(SleepTypeEnum.SOBER.getCode());
sleepTimeAnalysisVOList.add(sleepTimeAnalysisVO);
}
startAwakeTime = null; startAwakeTime = null;
awakeMinute = 0; awakeMinute = 0;
} }
} }
setRestTime(sleepTimeAnalysisVOList);
} }
private SleepTimeDTO groupSleepData(List<SleepTimeAnalysisVO> sleepTimeAnalysisVOList) { private SleepTimeDTO groupSleepData(List<SleepTimeAnalysisVO> sleepTimeAnalysisVOList) {
...@@ -630,173 +595,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -630,173 +595,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
return sleepTimeDTO; return sleepTimeDTO;
} }
private long between(String start, String end) {
return Duration.between(LocalDateTime.parse(start, DEFAULT_FORMATTER),
LocalDateTime.parse(end, DEFAULT_FORMATTER)).toMinutes();
}
private void groupSleep (TreeMap<String, TreeMap<String, AnalysisVO>> sleepTypeMap, SaasSleepAnalysisModel analysisModel,
List<SleepTimeAnalysisVO> sleepTimeAnalysisVOList) {
if (CollUtil.isEmpty(sleepTypeMap)) {
return;
}
// 深度睡眠
int sleepDeepMinute = 0;
String startSleepDeepTime = null;
int sleepDeepActionThreshold = Integer.parseInt(analysisModel.getSleepDeepActionThreshold());
int sleepDeepActionTimeBegin = Integer.parseInt(analysisModel.getSleepDeepActionTimeBegin());
int sleepDeepBreatheMin = Integer.parseInt(analysisModel.getSleepDeepBreatheMin());
int sleepDeepBreatheMax = Integer.parseInt(analysisModel.getSleepDeepBreatheMax());
// 中度
int sleepModerateActionThreshold = Integer.parseInt(analysisModel.getSleepModerateActionThreshold());
int sleepModerateActionTimeBegin = Integer.parseInt(analysisModel.getSleepModerateActionTimeBegin());
int sleepMidMinute = 0;
String startSleepMidTime = null;
boolean isMiddleSleep = false;
boolean isDeepSleep = false;
// 浅度
String sleepLightTime = null;
boolean isLightSleep = false;
int sleepLightMinute = 0;
for (Map.Entry<String, TreeMap<String, AnalysisVO>> entry : sleepTypeMap.entrySet()) {
TreeMap<String, AnalysisVO> sleepMap = entry.getValue();
for (Map.Entry<String, AnalysisVO> voEntry : sleepMap.entrySet()) {
AnalysisVO analysisVO = voEntry.getValue();
boolean actionFlag = analysisVO.getActionCount() == sleepDeepActionThreshold;
boolean turnedFlag = analysisVO.getTurnedCount() == sleepDeepActionThreshold;
SleepTimeAnalysisVO deepAnalysisVO = new SleepTimeAnalysisVO();
SleepTimeAnalysisVO midAnalysisVO = new SleepTimeAnalysisVO();
boolean deepCondition = actionFlag && turnedFlag
&& sleepDeepBreatheMin <= analysisVO.getAvgBr() && sleepDeepBreatheMax >= analysisVO.getAvgBr();
boolean midCondition = analysisVO.getActionCount() < sleepModerateActionThreshold
&& analysisVO.getTurnedCount() < sleepModerateActionThreshold;
String minute = voEntry.getKey();
if (deepCondition) {
if (StringUtils.isEmpty(startSleepDeepTime)) {
startSleepDeepTime = minute;
}
long between = between(startSleepDeepTime, minute);
// 数据连续
if (between == sleepDeepMinute) {
sleepDeepMinute++;
} else {
sleepDeepMinute = 0;
startSleepDeepTime = null;
}
sleepLightTime = null;
sleepLightMinute = 0;
} else if (midCondition) {
if (StringUtils.isEmpty(startSleepMidTime)) {
startSleepMidTime = minute;
}
long between = Duration.between(LocalDateTime.parse(startSleepMidTime, DEFAULT_FORMATTER),
LocalDateTime.parse(minute, DEFAULT_FORMATTER)).toMinutes();
if (between == sleepMidMinute) {
sleepMidMinute++;
} else {
sleepMidMinute = 0;
startSleepMidTime = null;
}
sleepLightTime = null;
sleepLightMinute = 0;
} else {
if (StringUtils.isEmpty(sleepLightTime)) {
sleepLightTime = minute;
}
long between = Duration.between(LocalDateTime.parse(sleepLightTime, DEFAULT_FORMATTER),
LocalDateTime.parse(minute, DEFAULT_FORMATTER)).toMinutes();
if (between == sleepMidMinute) {
sleepLightMinute++;
} else {
sleepLightMinute = 0;
sleepLightTime = null;
}
}
// 深度
if (StrUtil.isNotBlank(startSleepDeepTime) && sleepDeepMinute != 0) {
String endTime = deepAnalysisVO.getEndTime();
if (sleepDeepMinute > sleepDeepActionTimeBegin && !isDeepSleep) {
deepAnalysisVO.setStartTime(startSleepDeepTime);
endTime = getLastMinute(minute);
deepAnalysisVO.setEndTime(endTime);
deepAnalysisVO.setType(SleepTypeEnum.SLEEP_DEEP.getCode());
isDeepSleep = true;
}
if (isDeepSleep && StrUtil.isNotBlank(endTime)) {
sleepTimeAnalysisVOList.add(deepAnalysisVO);
startSleepDeepTime = null;
sleepDeepMinute = 0;
isDeepSleep = false;
}
}
// 中度
if (StrUtil.isNotBlank(startSleepMidTime) && sleepMidMinute != 0) {
String endTime = midAnalysisVO.getEndTime();
if (sleepMidMinute > sleepModerateActionTimeBegin && !isMiddleSleep) {
midAnalysisVO.setStartTime(startSleepMidTime);
endTime = getLastMinute(minute);
midAnalysisVO.setEndTime(endTime);
midAnalysisVO.setType(SleepTypeEnum.SLEEP_MODERATE.getCode());
isMiddleSleep = true;
}
if (isMiddleSleep && StrUtil.isNotBlank(endTime)) {
sleepTimeAnalysisVOList.add(midAnalysisVO);
startSleepMidTime = null;
sleepMidMinute = 0;
isMiddleSleep = false;
}
}
// 浅度
if (StrUtil.isNotBlank(sleepLightTime) && sleepLightMinute != 0) {
midAnalysisVO.setStartTime(sleepLightTime);
midAnalysisVO.setEndTime(minute);
midAnalysisVO.setType(SleepTypeEnum.SLEEP_LIGHTNESS.getCode());
sleepTimeAnalysisVOList.add(midAnalysisVO);
sleepLightTime = null;
sleepLightMinute = 0;
}
}
}
}
/**
* 小憩结束时间为清醒时间
* @param list
*/
private void setRestTime(List<SleepTimeAnalysisVO> list) {
if (CollUtil.isEmpty(list)) {
return;
}
List<SleepTimeAnalysisVO> soberList = list.stream()
.filter(f -> SleepTypeEnum.SOBER.getCode().equals(f.getType())).collect(Collectors.toList());
List<SleepTimeAnalysisVO> restList = list.stream()
.filter(f -> SleepTypeEnum.RESTING.getCode().equals(f.getType())).collect(Collectors.toList());
if (CollUtil.isEmpty(restList) || CollUtil.isEmpty(soberList)) {
return;
}
restList.forEach(s -> {
List<SleepTimeAnalysisVO> wakeList = soberList.stream().filter(f -> LocalDateTime.parse(f.getStartTime(), DEFAULT_FORMATTER)
.isAfter(LocalDateTime.parse(s.getStartTime(), DEFAULT_FORMATTER))).collect(Collectors.toList());
// 查询最近的清醒时间,设置
if (CollUtil.isNotEmpty(wakeList)) {
final long[] minute = {24 * 60};
wakeList.forEach(w -> {
long between = Duration.between(LocalDateTime.parse(s.getStartTime(), DEFAULT_FORMATTER),
LocalDateTime.parse(w.getStartTime(), DEFAULT_FORMATTER)).toMinutes();
if (between < minute[0]) {
minute[0] = between;
s.setEndTime(w.getStartTime());
}
});
}
});
}
private PlatElderSleepAnalysis savePlatElderSleepAnalysis(SleepTimeDTO sleepTimeDTO, private PlatElderSleepAnalysis savePlatElderSleepAnalysis(SleepTimeDTO sleepTimeDTO,
SaasSleepEvaluateStandardReport evaluateStandardReport, SaasSleepEvaluateStandardReport evaluateStandardReport,
String elderId, String currentDate, SleepCountDTO sleepCountDTO, String elderId, String currentDate, SleepCountDTO sleepCountDTO,
...@@ -810,20 +608,29 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -810,20 +608,29 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
long soberTime = sleepTimeMinute.getSoberTime() != null ? sleepTimeMinute.getSoberTime() : 0L; long soberTime = sleepTimeMinute.getSoberTime() != null ? sleepTimeMinute.getSoberTime() : 0L;
long lightTime = sleepTimeMinute.getLightTime() != null ? sleepTimeMinute.getLightTime() : 0L; long lightTime = sleepTimeMinute.getLightTime() != null ? sleepTimeMinute.getLightTime() : 0L;
String score = calculateScores(daySleepTime, dayRestTime, deepTime, soberTime, lightTime, evaluateStandardReport); String score = calculateScores(daySleepTime, dayRestTime, deepTime, soberTime, lightTime, evaluateStandardReport);
EvaluateReportVO sleepReport = saasSleepEvaluateReportService.getByScore(Long.parseLong(score)); long scoreLong = Long.parseLong(score);
if (scoreLong > 100) {
scoreLong = 100;
}
if (scoreLong < 0) {
scoreLong = 0;
}
EvaluateReportVO sleepReport = saasSleepEvaluateReportService.getByScore(scoreLong);
// 长者一天的睡眠分析 // 长者一天的睡眠分析
PlatElderSleepAnalysis elderSleepAnalysis = new PlatElderSleepAnalysis(); PlatElderSleepAnalysis elderSleepAnalysis = new PlatElderSleepAnalysis();
elderSleepAnalysis.setElderId(elderId); elderSleepAnalysis.setElderId(elderId);
elderSleepAnalysis.setActionCount(sleepCountDTO.getTotalActionCount()); elderSleepAnalysis.setActionCount(sleepCountDTO.getTotalActionCount());
elderSleepAnalysis.setTurnedCount(sleepCountDTO.getTotalTurnedCount()); elderSleepAnalysis.setTurnedCount(sleepCountDTO.getTotalTurnedCount());
elderSleepAnalysis.setHappenDate(currentDate); elderSleepAnalysis.setHappenDate(currentDate);
elderSleepAnalysis.setSleepScore(score); elderSleepAnalysis.setSleepScore(String.valueOf(scoreLong));
elderSleepAnalysis.setSleepTime(String.valueOf(daySleepTime)); elderSleepAnalysis.setSleepTime(String.valueOf(daySleepTime));
elderSleepAnalysis.setRestTime(String.valueOf(dayRestTime)); elderSleepAnalysis.setRestTime(String.valueOf(dayRestTime));
elderSleepAnalysis.setSleepResult(sleepReport.getResult()); elderSleepAnalysis.setSleepResult(sleepReport.getResult());
elderSleepAnalysis.setTenantId(tenantId); elderSleepAnalysis.setTenantId(tenantId);
elderSleepAnalysis.setSleepEvaluate(sleepReport.getEvaluate()); elderSleepAnalysis.setSleepEvaluate(sleepReport.getEvaluate());
elderSleepAnalysis.setOriDeviceId(oriDeviceId); elderSleepAnalysis.setOriDeviceId(oriDeviceId);
platElderSleepAnalysisService.remove(Wrappers.<PlatElderSleepAnalysis>lambdaQuery()
.eq(PlatElderSleepAnalysis::getHappenDate, currentDate).eq(PlatElderSleepAnalysis::getElderId, elderId));
platElderSleepAnalysisService.save(elderSleepAnalysis); platElderSleepAnalysisService.save(elderSleepAnalysis);
return elderSleepAnalysis; return elderSleepAnalysis;
} }
...@@ -899,6 +706,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -899,6 +706,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
platElderSleep.setStartSleep(LocalDateTime.parse(analysisVO.getStartTime(), DEFAULT_FORMATTER)); platElderSleep.setStartSleep(LocalDateTime.parse(analysisVO.getStartTime(), DEFAULT_FORMATTER));
platElderSleep.setEndSleep(LocalDateTime.parse(analysisVO.getEndTime(), DEFAULT_FORMATTER)); platElderSleep.setEndSleep(LocalDateTime.parse(analysisVO.getEndTime(), DEFAULT_FORMATTER));
platElderSleep.setElderId(platElderId); platElderSleep.setElderId(platElderId);
platElderSleep.setTenantId(tenantId);
platElderSleep.setElderSleepType(SleepTypeEnum.SLEEP.getType()); platElderSleep.setElderSleepType(SleepTypeEnum.SLEEP.getType());
platElderSleep.setSleepRecord(rangeList); platElderSleep.setSleepRecord(rangeList);
platElderSleep.setInterval(analysisVO.getInterval()); platElderSleep.setInterval(analysisVO.getInterval());
...@@ -928,7 +736,13 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -928,7 +736,13 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
elderSleepList.add(platElderSleep); elderSleepList.add(platElderSleep);
} }
} }
platElderSleepService.saveBatch(elderSleepList); if (CollUtil.isNotEmpty(elderSleepList)) {
elderSleepList.forEach(e -> {
platElderSleepService.remove(Wrappers.<PlatElderSleep>lambdaQuery()
.eq(PlatElderSleep::getHappenDate, currentDate).eq(PlatElderSleep::getElderId, e.getElderId()));
platElderSleepService.save(e);
});
}
return elderSleepList; return elderSleepList;
} }
...@@ -960,9 +774,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -960,9 +774,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
.orderByDesc(BaseEntity::getCreateDate) .orderByDesc(BaseEntity::getCreateDate)
.last("limit 1")); .last("limit 1"));
double sleepTimeActionDuration = Double.parseDouble(analysisModel.getSleepTimeActionDuration()); double sleepTimeActionDuration = Double.parseDouble(analysisModel.getSleepTimeActionDuration());
int riseActionDuration = Integer.parseInt(analysisModel.getRiseActionDuration());
double riseLeaveThreshold = Double.parseDouble(analysisModel.getRiseLeaveThreshold());
double repeatSleepThreshold = Double.parseDouble(analysisModel.getRiseRepeatThreshold());
List<ElderSleepAnalysisVO> result = new ArrayList<>(); List<ElderSleepAnalysisVO> result = new ArrayList<>();
for (PlatRoomBedDevice platRoomBedDevice : platRoomBedDeviceList) { for (PlatRoomBedDevice platRoomBedDevice : platRoomBedDeviceList) {
...@@ -1021,13 +832,12 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -1021,13 +832,12 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
SleepCountDTO sleepCountDTO = deepSleepAndRestData(sleepTypeMap, analysisModel, sleepTimeAnalysisVOList); SleepCountDTO sleepCountDTO = deepSleepAndRestData(sleepTypeMap, analysisModel, sleepTimeAnalysisVOList);
// 满足睡眠条件的map // 满足睡眠条件的map
TreeMap<String, TreeMap<String, AnalysisVO>> daySleepMap = sleepCountDTO.getDaySleepMap(); TreeMap<String, TreeMap<String, AnalysisVO>> daySleepMap = sleepCountDTO.getDaySleepMap();
// groupSleep(daySleepMap, analysisModel, sleepTimeAnalysisVOList);
// 深度睡眠 // 深度睡眠
deepSleepData(daySleepMap, analysisModel, sleepTimeAnalysisVOList); deepSleepData(daySleepMap, analysisModel, sleepTimeAnalysisVOList);
// 中度睡眠 // 中度睡眠
middleSleep(daySleepMap, analysisModel, sleepTimeAnalysisVOList); middleSleep(daySleepMap, analysisModel, sleepTimeAnalysisVOList);
// 清醒 // 清醒
// sober(sleepTypeMap, sleepTimeAnalysisVOList); sober(sleepTypeMap, sleepTimeAnalysisVOList);
countTotal(totalMap, sleepCountDTO); countTotal(totalMap, sleepCountDTO);
//浅睡 //浅睡
SleepTimeDTO sleepTimeDTO = groupSleepData(sleepTimeAnalysisVOList); SleepTimeDTO sleepTimeDTO = groupSleepData(sleepTimeAnalysisVOList);
...@@ -1088,8 +898,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -1088,8 +898,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
public Long getDurationRange(String startTime, String endTime) { public Long getDurationRange(String startTime, String endTime) {
LocalDateTime target = LocalDateTime.parse(startTime, DEFAULT_FORMATTER); LocalDateTime target = LocalDateTime.parse(startTime, DEFAULT_FORMATTER);
// 获取当前日期,此处为了保证后续结果固定,注掉自动获取当前日期,指定固定日期
// LocalDate today = LocalDate.now();
LocalDateTime source = LocalDateTime.parse(endTime, DEFAULT_FORMATTER); LocalDateTime source = LocalDateTime.parse(endTime, DEFAULT_FORMATTER);
return Duration.between(target, source).toMinutes(); return Duration.between(target, source).toMinutes();
} }
......
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