Commit 02be4f91 by 汪志阳

modify:bug 修改

parent daaa1594
......@@ -119,6 +119,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
boolean awakeMinuteActionFlag = false;
int noPersonCount = 0; // 无人跳过计数
boolean isLive = false;
int awakeCount = 0;
for (DeviceInfoContentBreathe infoContentBreathe : deviceInfoContentBreathes) {
// 体动指数
breatheProperties = infoContentBreathe.getProperties();
......@@ -164,7 +165,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
}
// 清醒
if (bodyMove > awakeThreshold) {
awakeMinuteActionFlag = true;
awakeCount ++;
// awakeMinuteActionFlag = true;
}
if (br > maxBr) {
maxBr = br;
......@@ -184,6 +186,9 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
}
}
if (reportSize == awakeCount) {
awakeMinuteActionFlag = true;
}
// if (reportSize == noPersonCount) {
// // continue;
// }
......@@ -428,7 +433,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
}
if (sleepDeepMinute > sleepDeepActionTimeBegin && !isDeepSleep) {
sleepTimeAnalysisVO.setStartTime(startSleepDeepTime);
sleepTimeAnalysisVO.setStartTime(getLastMinute(startSleepDeepTime));
sleepTimeAnalysisVO.setEndTime(getLastMinute(voEntry.getKey()));
sleepTimeAnalysisVO.setType(SleepTypeEnum.SLEEP_DEEP.getCode());
sleepTimeAnalysisVO.setBelongToSleepTime(key);
......@@ -555,9 +560,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
sleepTimeAnalysisVO.setEndTime(key1);
sleepTimeAnalysisVO.setType(SleepTypeEnum.SLEEP_MODERATE.getCode());
sleepTimeAnalysisVO.setBelongToSleepTime(key);
if (!isContain(deepList, startSleepMidTime, key1)) {
sleepTimeAnalysisVOList.add(sleepTimeAnalysisVO);
}
isContain(deepList, sleepTimeAnalysisVO, sleepTimeAnalysisVOList);
startSleepMidTime = null;
sleepMidMinute = 0;
}
......@@ -565,27 +568,85 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
}
}
private boolean isContain(List<SleepTimeAnalysisVO> deepList, String startSleepMidTime, String endMidTime) {
boolean isContain = false;
private void isContain(List<SleepTimeAnalysisVO> deepList, SleepTimeAnalysisVO sleepTimeAnalysisVO, List<SleepTimeAnalysisVO> result) {
String startSleepMidTime = sleepTimeAnalysisVO.getStartTime();
String endMidTime = sleepTimeAnalysisVO.getEndTime();
if (CollUtil.isEmpty(deepList)) {
return false;
result.add(sleepTimeAnalysisVO);
return;
}
LocalDateTime startSleepTime = LocalDateTime.parse(startSleepMidTime, DEFAULT_FORMATTER);
LocalDateTime endSleepTime = LocalDateTime.parse(endMidTime, DEFAULT_FORMATTER);
LocalDateTime midStartTime = LocalDateTime.parse(startSleepMidTime, DEFAULT_FORMATTER);
LocalDateTime midEndTime = LocalDateTime.parse(endMidTime, DEFAULT_FORMATTER);
LocalDateTime finalMidStartTime = midStartTime;
SleepTimeAnalysisVO isIn = deepList.stream().filter(vo -> {
LocalDateTime deepStartTime = LocalDateTime.parse(vo.getStartTime(), DEFAULT_FORMATTER);
LocalDateTime deepEndTime = LocalDateTime.parse(vo.getEndTime(), DEFAULT_FORMATTER);
return Duration.between(finalMidStartTime, deepStartTime).toMinutes() <= 0 && Duration.between(finalMidStartTime, deepEndTime).toMinutes() >= 0;
}).findFirst().orElse(null);
for (SleepTimeAnalysisVO vo : deepList) {
LocalDateTime startTime = LocalDateTime.parse(vo.getStartTime(), DEFAULT_FORMATTER);
LocalDateTime endTime = LocalDateTime.parse(vo.getEndTime(), DEFAULT_FORMATTER);
boolean startFlag = startSleepTime.isAfter(startTime) && startSleepTime.isBefore(endTime);
boolean endFlag = endSleepTime.isAfter(startTime) && endSleepTime.isBefore(endTime);
if (startFlag || endFlag) {
isContain = true;
LocalDateTime deepStartTime = LocalDateTime.parse(vo.getStartTime(), DEFAULT_FORMATTER);
LocalDateTime deepEndTime = LocalDateTime.parse(vo.getEndTime(), DEFAULT_FORMATTER);
if (isIn != null) {
midStartTime = LocalDateTime.parse(isIn.getEndTime(), DEFAULT_FORMATTER);
startSleepMidTime = isIn.getEndTime();
}
boolean afterFlag = startSleepTime.isBefore(startTime) && endSleepTime.isAfter(endTime);
if (afterFlag) {
isContain = true;
// 中度包含在深度内 eg: 13点19到13点55分 为中度睡眠 13点05分到14点02为深度度睡眠
boolean startFlag = midStartTime.isAfter(deepStartTime) && midStartTime.isBefore(deepEndTime);
boolean endFlag = midEndTime.isAfter(deepStartTime) && midEndTime.isBefore(deepEndTime);
if (startFlag && endFlag) {
continue;
}
// 深度包含在中度内 13点19到13点55分 深度睡眠 13点05分到14点30 为中度睡眠
boolean midContainDeep = midStartTime.isBefore(deepStartTime) && midEndTime.isAfter(deepEndTime);
if (midContainDeep) {
SleepTimeAnalysisVO add = BeanUtil.toBean(sleepTimeAnalysisVO, SleepTimeAnalysisVO.class);
add.setStartTime(startSleepMidTime);
add.setEndTime(vo.getStartTime());
result.add(add);
SleepTimeAnalysisVO add2 = BeanUtil.toBean(sleepTimeAnalysisVO, SleepTimeAnalysisVO.class);
add2.setStartTime(vo.getEndTime());
add2.setEndTime(endMidTime);
result.add(add2);
}
// 13点19到13点55分 深度睡眠 13点05分到13点30 为中度睡眠
boolean flag = midStartTime.isBefore(deepStartTime) && endFlag;
if (flag) {
SleepTimeAnalysisVO add3 = BeanUtil.toBean(sleepTimeAnalysisVO, SleepTimeAnalysisVO.class);
add3.setStartTime(startSleepMidTime);
add3.setEndTime(vo.getStartTime());
result.add(add3);
}
// 13点19到13点55分 深度睡眠 13点25分到14点30 为中度睡眠
boolean flag2 = startFlag && midEndTime.isAfter(deepEndTime);
if (flag2) {
SleepTimeAnalysisVO add4 = BeanUtil.toBean(sleepTimeAnalysisVO, SleepTimeAnalysisVO.class);
add4.setStartTime(vo.getEndTime());
add4.setEndTime(endMidTime);
result.add(add4);
}
}
return isContain;
}
public static void main(String[] args) {
List<SleepTimeAnalysisVO> deepList = new ArrayList<>();
SleepTimeAnalysisVO vo1 = new SleepTimeAnalysisVO();
vo1.setStartTime("2024-02-19 12:24");
vo1.setEndTime("2024-02-19 13:04");
SleepTimeAnalysisVO vo2 = new SleepTimeAnalysisVO();
vo2.setStartTime("2024-02-19 13:18");
vo2.setEndTime("2024-02-19 13:55");
deepList.add(vo1);
deepList.add(vo2);
LocalDateTime finalMidStartTime = LocalDateTime.of(2024,02,19,12,24);
SleepTimeAnalysisVO isIn = deepList.stream().filter(vo -> {
LocalDateTime deepStartTime = LocalDateTime.parse(vo.getStartTime(), DEFAULT_FORMATTER);
LocalDateTime deepEndTime = LocalDateTime.parse(vo.getEndTime(), DEFAULT_FORMATTER);
return Duration.between(finalMidStartTime, deepStartTime).toMinutes() <= 0 && Duration.between(finalMidStartTime, deepEndTime).toMinutes() >= 0;
}).findFirst().orElse(null);
System.out.println(isIn);
}
/**
......@@ -935,7 +996,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
}
String tenantId = elder.getTenantId();
// dayHourRangeList = Lists.newArrayList("2024-01-30 23:00:00~2024-01-31 00:32:00","2024-01-31 00:32:00~2024-01-31 01:32:00","2024-01-31 01:32:00~2024-01-31 02:40:00");
// dayHourRangeList = Lists.newArrayList("2024-02-19 13:00:00~2024-02-19 14:05:00");
for (String hourRange : dayHourRangeList) {
String[] hourRangeArray = hourRange.split("~");
List<DeviceOperationLogEntity> deviceOperationLogEntities = productDeviceService.getDeviceLogByTimeRange(platDevice.getOriDeviceId(), "reportProperty", 10000, hourRangeArray[0], hourRangeArray[1]);
......
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