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
43732a0c
authored
Jan 02, 2024
by
汪志阳
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
fix:起床清醒时间合并
parent
0e53f7c2
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
88 additions
and
1 deletions
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderSleepService.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
server-web/src/test/java/com/makeit/iotapi/IotDeviceInfoContentFall.java
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderSleepService.java
View file @
43732a0c
...
@@ -23,4 +23,6 @@ public interface PlatElderSleepService extends IService<PlatElderSleep> {
...
@@ -23,4 +23,6 @@ public interface PlatElderSleepService extends IService<PlatElderSleep> {
String
calculateScores
(
long
daySleepTime
,
long
dayRestTime
,
long
deepTime
,
long
soberTime
,
long
lightTime
,
String
calculateScores
(
long
daySleepTime
,
long
dayRestTime
,
long
deepTime
,
long
soberTime
,
long
lightTime
,
SaasSleepEvaluateStandardReport
evaluateStandardReport
);
SaasSleepEvaluateStandardReport
evaluateStandardReport
);
List
<
PlatElderSleep
>
mergeWakeUpList
(
List
<
PlatElderSleep
>
elderSleepList
,
int
riseRepeatThreshold
);
}
}
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
View file @
43732a0c
package
com
.
makeit
.
service
.
platform
.
elder
.
impl
;
package
com
.
makeit
.
service
.
platform
.
elder
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
...
@@ -697,7 +698,9 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
...
@@ -697,7 +698,9 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
dayRestTime
+=
elderSleep
.
getInterval
();
dayRestTime
+=
elderSleep
.
getInterval
();
}
}
}
}
platElderSleepService
.
saveBatch
(
elderSleepList
);
int
riseRepeatThreshold
=
Integer
.
parseInt
(
analysisModel
.
getRiseRepeatThreshold
());
List
<
PlatElderSleep
>
mergeElderSleepList
=
mergeWakeUpList
(
elderSleepList
,
riseRepeatThreshold
);
platElderSleepService
.
saveBatch
(
mergeElderSleepList
);
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
));
EvaluateReportVO
sleepReport
=
saasSleepEvaluateReportService
.
getByScore
(
Long
.
parseLong
(
score
));
...
@@ -720,6 +723,52 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
...
@@ -720,6 +723,52 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
return
result
;
return
result
;
}
}
/**
* @param elderSleepList
* @param riseRepeatThreshold 且在 (2) 小时内无再次入睡
* @return
*/
@Override
public
List
<
PlatElderSleep
>
mergeWakeUpList
(
List
<
PlatElderSleep
>
elderSleepList
,
int
riseRepeatThreshold
)
{
List
<
PlatElderSleep
>
result
=
new
ArrayList
<>();
if
(
CollUtil
.
isEmpty
(
elderSleepList
))
{
return
elderSleepList
;
}
elderSleepList
=
elderSleepList
.
stream
().
sorted
(
Comparator
.
comparing
(
PlatElderSleep:
:
getStartSleep
))
.
collect
(
Collectors
.
toList
());
List
<
PlatElderSleep
>
finalElderSleepList
=
elderSleepList
;
List
<
PlatElderSleep
>
mergeSleepList
=
new
ArrayList
<>();
finalElderSleepList
.
forEach
(
e
->
{
if
(
mergeSleepList
.
contains
(
e
))
{
return
;
}
// 2小时内再次入睡的数据,合并
List
<
PlatElderSleep
>
riseSleepList
=
finalElderSleepList
.
stream
().
filter
(
f
->
Duration
.
between
(
e
.
getEndSleep
(),
f
.
getStartSleep
()).
toHours
()
<
riseRepeatThreshold
).
collect
(
Collectors
.
toList
());
if
(
CollUtil
.
isEmpty
(
riseSleepList
))
{
result
.
add
(
e
);
return
;
}
mergeSleepList
.
addAll
(
riseSleepList
);
PlatElderSleep
maxSleepTime
=
finalElderSleepList
.
stream
().
max
(
Comparator
.
comparing
(
f
->
Duration
.
between
(
f
.
getStartSleep
(),
f
.
getEndSleep
()).
toMinutes
()
>
Duration
.
between
(
e
.
getStartSleep
(),
e
.
getEndSleep
()).
toMinutes
())).
orElse
(
e
);
PlatElderSleep
last
=
riseSleepList
.
get
(
riseSleepList
.
size
()
-
1
);
e
.
setElderSleepType
(
maxSleepTime
.
getElderSleepType
());
e
.
setEndSleep
(
last
.
getEndSleep
());
List
<
PlatSleepRangeVO
>
sleepRecord
=
e
.
getSleepRecord
();
Set
<
PlatSleepRangeVO
>
platSleepRangeVOS
=
new
LinkedHashSet
<>(
sleepRecord
);
riseSleepList
.
forEach
(
r
->
platSleepRangeVOS
.
addAll
(
r
.
getSleepRecord
()));
e
.
setSleepRecord
(
new
ArrayList
<>(
platSleepRangeVOS
));
result
.
add
(
e
);
});
return
result
;
}
@Override
@Override
public
String
calculateScores
(
long
daySleepTime
,
long
dayRestTime
,
long
deepTime
,
long
soberTime
,
long
lightTime
,
public
String
calculateScores
(
long
daySleepTime
,
long
dayRestTime
,
long
deepTime
,
long
soberTime
,
long
lightTime
,
SaasSleepEvaluateStandardReport
evaluateStandardReport
)
{
SaasSleepEvaluateStandardReport
evaluateStandardReport
)
{
...
...
server-web/src/test/java/com/makeit/iotapi/IotDeviceInfoContentFall.java
View file @
43732a0c
package
com
.
makeit
.
iotapi
;
package
com
.
makeit
.
iotapi
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElderSleep
;
import
com.makeit.global.annotation.AuthIgnore
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
import
com.makeit.module.admin.vo.plat.PlatTenantVO
;
import
com.makeit.module.admin.vo.plat.PlatTenantVO
;
import
com.makeit.module.iot.service.IotOrgService
;
import
com.makeit.module.iot.service.IotOrgService
;
import
com.makeit.module.iot.service.IotProductDeviceService
;
import
com.makeit.module.iot.service.IotProductDeviceService
;
import
com.makeit.module.iot.service.IotTokenService
;
import
com.makeit.module.iot.service.IotTokenService
;
import
com.makeit.service.platform.alarm.alarmStrategy.OffBedAlarm
;
import
com.makeit.service.platform.alarm.alarmStrategy.OffBedAlarm
;
import
com.makeit.service.platform.elder.PlatElderSleepService
;
import
com.makeit.utils.redis.RedisUtil
;
import
com.makeit.utils.redis.RedisUtil
;
import
org.junit.jupiter.api.Test
;
import
org.junit.jupiter.api.Test
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.context.SpringBootTest
;
...
@@ -27,6 +35,11 @@ public class IotDeviceInfoContentFall {
...
@@ -27,6 +35,11 @@ public class IotDeviceInfoContentFall {
private
IotProductDeviceService
iotProductDeviceService
;
private
IotProductDeviceService
iotProductDeviceService
;
@Autowired
@Autowired
private
OffBedAlarm
offBedAlarm
;
private
OffBedAlarm
offBedAlarm
;
@Autowired
private
PlatElderSleepService
platElderSleepService
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
IotDeviceInfoContentFall
.
class
);
@Test
@Test
...
@@ -114,4 +127,27 @@ public class IotDeviceInfoContentFall {
...
@@ -114,4 +127,27 @@ public class IotDeviceInfoContentFall {
System
.
out
.
println
(
list
);
System
.
out
.
println
(
list
);
}
}
@Test
@TenantIdIgnore
@AuthIgnore
void
mergeElderSleepList
()
{
List
<
PlatElderSleep
>
sleepList
=
platElderSleepService
.
list
(
Wrappers
.<
PlatElderSleep
>
lambdaQuery
()
.
eq
(
PlatElderSleep:
:
getHappenDate
,
"2024-01-01"
).
eq
(
PlatElderSleep:
:
getElderId
,
"1712648603580764161"
));
logger
.
info
(
"ori sleep data :{}"
,
JSONUtil
.
toJsonStr
(
sleepList
));
List
<
PlatElderSleep
>
platElderSleeps
=
recursion
(
sleepList
,
sleepList
.
size
()
/
2
,
3
);
logger
.
info
(
"end sleep data :{}"
,
JSONUtil
.
toJsonStr
(
platElderSleeps
));
List
<
PlatElderSleep
>
list
=
platElderSleepService
.
mergeWakeUpList
(
sleepList
,
3
);
System
.
out
.
println
(
list
);
}
private
List
<
PlatElderSleep
>
recursion
(
List
<
PlatElderSleep
>
elderSleepList
,
int
count
,
int
riseRepeatThreshold
)
{
List
<
PlatElderSleep
>
platElderSleeps
=
platElderSleepService
.
mergeWakeUpList
(
elderSleepList
,
riseRepeatThreshold
);
if
(
count
==
0
)
{
return
platElderSleeps
;
}
else
{
count
--;
return
recursion
(
platElderSleeps
,
count
,
riseRepeatThreshold
);
}
}
}
}
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