Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
黄嘉阳
/
iot-platform-server
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
b6efebe9
authored
Jan 29, 2024
by
汪志阳
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
fix:bug修改
parent
bbffae90
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
217 deletions
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
View file @
b6efebe9
...
@@ -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
),
LocalDateTime
.
parse
(
entry
.
getKey
(),
DEFAULT_FORMATTER
)).
toMinutes
();
if
(
between
==
awakeMinute
)
{
awakeMinute
++;
awakeMinute
++;
}
else
{
awakeMinute
=
0
;
startAwakeTime
=
null
;
}
continue
;
continue
;
}
}
if
(
StringUtils
.
isEmpty
(
startAwakeTime
)
&&
awakeMinute
==
0
)
{
if
(
StringUtils
.
isEmpty
(
startAwakeTime
)
&&
awakeMinute
==
0
)
{
continue
;
continue
;
}
}
if
(
StrUtil
.
isNotBlank
(
startAwakeTime
)
&&
awakeMinute
>
0
)
{
SleepTimeAnalysisVO
sleepTimeAnalysisVO
=
new
SleepTimeAnalysisVO
();
SleepTimeAnalysisVO
sleepTimeAnalysisVO
=
new
SleepTimeAnalysisVO
();
sleepTimeAnalysisVO
.
setStartTime
(
startAwakeTime
);
sleepTimeAnalysisVO
.
setStartTime
(
startAwakeTime
);
sleepTimeAnalysisVO
.
setEndTime
(
voEntry
.
getKey
());
sleepTimeAnalysisVO
.
setEndTime
(
voEntry
.
getKey
());
sleepTimeAnalysisVO
.
setType
(
SleepTypeEnum
.
SOBER
.
getCode
());
sleepTimeAnalysisVO
.
setType
(
SleepTypeEnum
.
SOBER
.
getCode
());
sleepTimeAnalysisVOList
.
add
(
sleepTimeAnalysisVO
);
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
();
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment