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
32e2935d
authored
Dec 26, 2023
by
汪志阳
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
fix:长者管理-日报bug修改
parent
a717e702
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
93 additions
and
34 deletions
server-module/src/main/java/com/makeit/module/controller/elder/PlatElderSleepController.java
server-service/src/main/java/com/makeit/entity/platform/elder/PlatElderSleepAnalysis.java
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderSleepService.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderBreatheAnalysisServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportDayServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
server-service/src/main/java/com/makeit/task/PlatElderReportTask.java
server-module/src/main/java/com/makeit/module/controller/elder/PlatElderSleepController.java
View file @
32e2935d
...
...
@@ -6,6 +6,7 @@ import com.makeit.common.response.ApiResponseEntity;
import
com.makeit.common.response.ApiResponseUtils
;
import
com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO
;
import
com.makeit.entity.platform.elder.PlatElderBreatheAnalysis
;
import
com.makeit.entity.platform.elder.PlatElderSleepAnalysis
;
import
com.makeit.external.huineng.HuiNengService
;
import
com.makeit.global.annotation.AuthIgnore
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
...
...
@@ -74,11 +75,11 @@ public class PlatElderSleepController {
}
@ApiOperation
(
"测试"
)
@
Pos
tMapping
(
"test4"
)
@
Ge
tMapping
(
"test4"
)
@AuthIgnore
public
ApiResponseEntity
<
Void
>
elderSleepSleepAnalysisTask
()
{
platElderSleepService
.
elderSleepSleepAnalysisTask
();
return
ApiResponseUtils
.
success
();
public
ApiResponseEntity
<
List
<
PlatElderSleepAnalysis
>>
elderSleepSleepAnalysisTask
(
@RequestParam
Integer
month
,
@RequestParam
Integer
day
)
{
return
ApiResponseUtils
.
success
(
platElderSleepService
.
elderSleepSleepAnalysisTask
(
month
,
day
)
);
}
@ApiOperation
(
"测试"
)
...
...
server-service/src/main/java/com/makeit/entity/platform/elder/PlatElderSleepAnalysis.java
View file @
32e2935d
...
...
@@ -47,5 +47,12 @@ public class PlatElderSleepAnalysis extends BaseBusEntity {
@ApiModelProperty
(
value
=
"翻身次数"
)
private
Integer
turnedCount
;
// @TableField(exist = false)
// private String remark;
//
// @ApiModelProperty(value = "睡眠评分")
// @TableField(exist = false)
// private String oldSleepScore;
}
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderSleepService.java
View file @
32e2935d
...
...
@@ -2,6 +2,9 @@ package com.makeit.service.platform.elder;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.makeit.entity.platform.elder.PlatElderSleep
;
import
com.makeit.entity.platform.elder.PlatElderSleepAnalysis
;
import
java.util.List
;
/**
* <p>
...
...
@@ -13,7 +16,7 @@ import com.makeit.entity.platform.elder.PlatElderSleep;
*/
public
interface
PlatElderSleepService
extends
IService
<
PlatElderSleep
>
{
void
elderSleepSleepAnalysisTask
(
);
List
<
PlatElderSleepAnalysis
>
elderSleepSleepAnalysisTask
(
Integer
month
,
Integer
day
);
void
test1
();
}
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderBreatheAnalysisServiceImpl.java
View file @
32e2935d
...
...
@@ -125,7 +125,7 @@ public class PlatElderBreatheAnalysisServiceImpl extends ServiceImpl<PlatElderBr
Map
<
String
,
PlatElderBreatheAnalysis
>
analysisMap
=
StreamUtil
.
toMapDep
(
platElderBreatheAnalysisService
.
list
(
Wrappers
.<
PlatElderBreatheAnalysis
>
lambdaQuery
()
.
in
(
PlatElderBreatheAnalysis:
:
getElderId
,
elderIdList
)
.
eq
(
PlatElderBreatheAnalysis:
:
getHappenDate
,
yesDate
)
.
last
(
"limit 1"
)
),
PlatElderBreatheAnalysis:
:
getElderId
);
.
eq
(
PlatElderBreatheAnalysis:
:
getHappenDate
,
yesDate
)),
PlatElderBreatheAnalysis:
:
getElderId
);
// 呼吸率
...
...
@@ -362,8 +362,7 @@ public class PlatElderBreatheAnalysisServiceImpl extends ServiceImpl<PlatElderBr
int
timeHourRange
=
24
;
if
(
StringUtils
.
isNotEmpty
(
reportStartTime
)
&&
StringUtils
.
isNotEmpty
(
reportEndTime
))
{
Long
durationRange
=
getDurationRange
(
reportStartTime
,
reportEndTime
);
timeHourRange
=
(
int
)
(
durationRange
/
60
);
timeHourRange
=
Math
.
toIntExact
(
getDurationRange
(
reportStartTime
,
reportEndTime
));
}
// 判断是否满足配置的呼吸心率异常类型
...
...
@@ -380,19 +379,19 @@ public class PlatElderBreatheAnalysisServiceImpl extends ServiceImpl<PlatElderBr
boolean
hrSlowFlag
=
false
;
boolean
normalFlag
;
if
(
apneaRate
.
compareTo
(
dayBrStop
Rate
)
>
0
)
{
if
(
dayBrStopRate
.
compareTo
(
apnea
Rate
)
>
0
)
{
brStopFlag
=
true
;
}
if
(
tachypneaRate
.
compareTo
(
dayBrFast
Rate
)
>
0
)
{
if
(
dayBrFastRate
.
compareTo
(
tachypnea
Rate
)
>
0
)
{
brFastFlag
=
true
;
}
if
(
bradypneaRate
.
compareTo
(
dayBrSlow
Rate
)
>
0
)
{
if
(
dayBrSlowRate
.
compareTo
(
bradypnea
Rate
)
>
0
)
{
brSlowFlag
=
true
;
}
if
(
tachycardiaRate
.
compareTo
(
dayHrFast
Rate
)
>
0
)
{
if
(
dayHrFastRate
.
compareTo
(
tachycardia
Rate
)
>
0
)
{
hrFastFlag
=
true
;
}
if
(
bradycardiaRate
.
compareTo
(
dayHrSlow
Rate
)
>
0
)
{
if
(
dayHrSlowRate
.
compareTo
(
bradycardia
Rate
)
>
0
)
{
hrSlowFlag
=
true
;
}
...
...
@@ -477,7 +476,7 @@ public class PlatElderBreatheAnalysisServiceImpl extends ServiceImpl<PlatElderBr
// 获取当前日期,此处为了保证后续结果固定,注掉自动获取当前日期,指定固定日期
// LocalDate today = LocalDate.now();
LocalDateTime
source
=
LocalDateTime
.
parse
(
endTime
,
DEFAULT_FORMATTER
);
return
Duration
.
between
(
target
,
source
).
to
Minutes
()
;
return
Duration
.
between
(
target
,
source
).
to
Hours
()
+
1
;
}
public
static
String
formatLongTime
(
long
time
)
{
...
...
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportDayServiceImpl.java
View file @
32e2935d
...
...
@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.google.common.collect.Lists
;
import
com.makeit.common.entity.BaseEntity
;
import
com.makeit.dto.platform.elder.PlatElderReportDTO
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
...
...
@@ -22,7 +21,6 @@ import com.makeit.service.platform.alarm.PlatDayDurationRecordService;
import
com.makeit.service.platform.elder.*
;
import
com.makeit.service.saas.SaasSleepEvaluateReportService
;
import
com.makeit.utils.LongTimestampUtil
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
import
com.makeit.utils.data.convert.MathUtil
;
import
com.makeit.utils.data.convert.StreamUtil
;
import
com.makeit.utils.data.validate.CollectionUtils
;
...
...
@@ -111,17 +109,18 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
PlatElderSleepAnalysis
platElderSleepAnalysis
=
platElderSleepAnalysisService
.
getOne
(
new
QueryWrapper
<
PlatElderSleepAnalysis
>().
lambda
()
.
eq
(
PlatElderSleepAnalysis:
:
getElderId
,
elderId
)
.
eq
(
PlatElderSleepAnalysis:
:
getHappenDate
,
nowString
)
.
orderBy
Desc
(
BaseEntity:
:
getCreateDate
)
.
orderBy
(
true
,
false
,
Lists
.
newArrayList
(
PlatElderSleepAnalysis:
:
getHappenDate
,
PlatElderSleepAnalysis:
:
getSleepScore
)
)
.
last
(
"limit 1"
)
);
if
(
platElderSleepAnalysis
==
null
)
{
return
platElderSleepEvaluationVO
;
}
String
sleepScore
=
platElderSleepAnalysis
.
getSleepScore
();
EvaluateReportVO
evaluateReport
=
sleepEvaluateReportService
.
getByScore
(
Long
.
parseLong
(
platElderSleepAnalysis
.
getSleepScore
()
));
EvaluateReportVO
evaluateReport
=
sleepEvaluateReportService
.
getByScore
(
Long
.
parseLong
(
sleepScore
));
platElderSleepEvaluationVO
.
setScore
(
Integer
.
valueOf
(
platElderSleepAnalysis
.
getSleepScore
()
+
""
));
platElderSleepEvaluationVO
.
setScore
(
Integer
.
valueOf
(
sleepScore
+
""
));
platElderSleepEvaluationVO
.
setResult
(
platElderSleepAnalysis
.
getSleepResult
());
platElderSleepEvaluationVO
.
setEvaluation
(
evaluateReport
.
getEvaluate
());
platElderSleepEvaluationVO
.
setSleepDuration
(
Integer
.
valueOf
(
platElderSleepAnalysis
.
getSleepTime
()
+
""
));
...
...
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
View file @
32e2935d
...
...
@@ -39,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.time.*
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -85,14 +86,18 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@TenantIdIgnore
public
void
elderSleepSleepAnalysisTask
()
{
List
<
String
>
dayHourRangeList
=
getLastDayHourRange
();
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
());
calendar
.
add
(
Calendar
.
DAY_OF_MONTH
,
-
1
);
Date
previousDate
=
calendar
.
getTime
();
String
currentDate
=
DateUtil
.
format
(
previousDate
,
DatePattern
.
NORM_DATE_PATTERN
);
public
List
<
PlatElderSleepAnalysis
>
elderSleepSleepAnalysisTask
(
Integer
month
,
Integer
day
)
{
List
<
String
>
dayHourRangeList
=
getLastDayHourRange
(
month
,
day
);
// Calendar calendar = Calendar.getInstance();
// calendar.setTime(new Date());
// calendar.add(Calendar.DAY_OF_MONTH, -1);
// Date previousDate = calendar.getTime();
// String currentDate = DateUtil.format(previousDate, DatePattern.NORM_DATE_PATTERN);
String
currentDate
=
LocalDate
.
now
().
minusDays
(
1
).
toString
();
if
(
month
!=
null
&&
day
!=
null
){
currentDate
=
LocalDate
.
of
(
2023
,
month
,
day
).
minusDays
(
1
).
toString
();
}
SaasSleepAnalysisModel
analysisModel
=
saasSleepAnalysisModelService
.
getOne
(
new
QueryWrapper
<
SaasSleepAnalysisModel
>().
lambda
()
.
orderByDesc
(
BaseEntity:
:
getCreateBy
)
...
...
@@ -123,7 +128,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
int
sleepModerateActionThreshold
=
Integer
.
parseInt
(
analysisModel
.
getSleepModerateActionThreshold
());
int
sleepModerateActionTimeBegin
=
Integer
.
parseInt
(
analysisModel
.
getSleepModerateActionTimeBegin
());
List
<
PlatElderSleepAnalysis
>
result
=
new
ArrayList
<>();
for
(
PlatRoomBedDevice
platRoomBedDevice
:
platRoomBedDeviceList
)
{
TreeMap
<
String
,
AnalysisVO
>
totalMap
=
new
TreeMap
<>();
...
...
@@ -685,9 +690,6 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
long
totalScore
=
sleepScore
+
deepScore
+
lightScore
-
soberScore
;
saasSleepEvaluateStandardReportVO
.
setTotalScore
(
totalScore
);
EvaluateReportVO
sleepReport
=
saasSleepEvaluateReportService
.
getByScore
(
totalScore
);
// 记录长者一天睡眠的记录
long
daySleepTime
=
0
;
long
dayRestTime
=
0
;
...
...
@@ -704,6 +706,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
}
}
platElderSleepService
.
saveBatch
(
elderSleepList
);
String
score
=
calculateScores
(
daySleepTime
,
dayRestTime
,
deepTime
,
soberTime
,
lightTime
,
evaluateStandardReport
);
EvaluateReportVO
sleepReport
=
saasSleepEvaluateReportService
.
getByScore
(
Long
.
parseLong
(
score
));
// 长者一天的睡眠分析
PlatElderSleepAnalysis
elderSleepAnalysis
=
new
PlatElderSleepAnalysis
();
...
...
@@ -711,15 +715,58 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
elderSleepAnalysis
.
setActionCount
(
totalActionCount
);
elderSleepAnalysis
.
setTurnedCount
(
totalTurnedCount
);
elderSleepAnalysis
.
setHappenDate
(
currentDate
);
elderSleepAnalysis
.
setSleepScore
(
String
.
valueOf
(
totalScore
));
// elderSleepAnalysis.setOldSleepScore(String.valueOf(totalScore));
elderSleepAnalysis
.
setSleepScore
(
score
);
elderSleepAnalysis
.
setSleepTime
(
String
.
valueOf
(
daySleepTime
));
elderSleepAnalysis
.
setRestTime
(
String
.
valueOf
(
dayRestTime
));
elderSleepAnalysis
.
setSleepResult
(
sleepReport
.
getResult
());
elderSleepAnalysis
.
setTenantId
(
tenantId
);
elderSleepAnalysis
.
setSleepEvaluate
(
sleepReport
.
getEvaluate
());
// elderSleepAnalysis.setRemark(String.format("sleepScore:%s + deepScore:%s + lightScore:%s - soberScore:%s"
// , sleepScore, deepScore, lightScore, soberScore));
result
.
add
(
elderSleepAnalysis
);
platElderSleepAnalysisService
.
save
(
elderSleepAnalysis
);
}
return
result
;
}
private
String
calculateScores
(
long
daySleepTime
,
long
dayRestTime
,
long
deepTime
,
long
soberTime
,
long
lightTime
,
SaasSleepEvaluateStandardReport
evaluateStandardReport
)
{
List
<
SleepConfigVO
>
sleepDeepConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSleepDeepConfig
(),
SleepConfigVO
.
class
);
List
<
SleepConfigVO
>
soberConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSoberConfig
(),
SleepConfigVO
.
class
);
SleepConfigVO
lightnessConfig
=
JSON
.
parseObject
(
evaluateStandardReport
.
getSleepLightnessConfig
(),
SleepConfigVO
.
class
);
List
<
SleepConfigVO
>
sleepTimeConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSleepTime
(),
SleepConfigVO
.
class
);
long
deepHour
=
deepTime
/
60
;
long
soberHour
=
soberTime
/
60
;
long
lightHour
=
lightTime
/
60
;
long
sleepHour
=
(
daySleepTime
+
dayRestTime
)
/
60
;
AtomicReference
<
Integer
>
sleepScore
=
new
AtomicReference
<>(
0
);
AtomicReference
<
Integer
>
deepScore
=
new
AtomicReference
<>(
0
);
AtomicReference
<
Integer
>
soberScore
=
new
AtomicReference
<>(
0
);
int
lightScore
=
0
;
sleepTimeConfigList
.
forEach
(
s
->
{
int
sleepKey
=
(
int
)
Math
.
floor
(
sleepHour
);
if
(
Integer
.
parseInt
(
s
.
getHour
())
<=
sleepKey
)
{
sleepScore
.
set
(
Integer
.
parseInt
(
s
.
getScore
()));
}
});
sleepDeepConfigList
.
forEach
(
s
->
{
int
sleepKey
=
(
int
)
Math
.
floor
(
deepHour
);
if
(
Integer
.
parseInt
(
s
.
getHour
())
<=
sleepKey
)
{
deepScore
.
set
(
Integer
.
parseInt
(
s
.
getScore
()));
}
});
soberConfigList
.
forEach
(
s
->
{
int
sleepKey
=
(
int
)
Math
.
floor
(
soberHour
);
if
(
Integer
.
parseInt
(
s
.
getHour
())
<=
sleepKey
)
{
soberScore
.
set
(
Integer
.
parseInt
(
s
.
getScore
()));
}
});
if
(
Integer
.
parseInt
(
lightnessConfig
.
getHour
())
<=
lightHour
)
{
lightScore
=
Integer
.
parseInt
(
lightnessConfig
.
getScore
());
}
Integer
totalScore
=
sleepScore
.
get
()
+
deepScore
.
get
()
+
lightScore
-
soberScore
.
get
();
return
String
.
valueOf
(
totalScore
);
}
...
...
@@ -736,9 +783,12 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
return
DEFAULT_FORMATTER
.
format
(
LocalDateTime
.
ofInstant
(
Instant
.
ofEpochMilli
(
time
),
ZoneId
.
systemDefault
()));
}
public
List
<
String
>
getLastDayHourRange
()
{
public
List
<
String
>
getLastDayHourRange
(
Integer
month
,
Integer
day
)
{
int
count
=
24
;
LocalDateTime
localDateTime
=
LocalDateTime
.
now
();
if
(
month
!=
null
&&
day
!=
null
)
{
localDateTime
=
LocalDateTime
.
of
(
LocalDate
.
of
(
2023
,
month
,
day
),
LocalTime
.
now
());
}
List
<
String
>
list
=
Lists
.
newArrayList
();
String
startTime
;
String
endTime
;
...
...
server-service/src/main/java/com/makeit/task/PlatElderReportTask.java
View file @
32e2935d
...
...
@@ -62,7 +62,7 @@ public class PlatElderReportTask {
@TenantIdIgnore
public
void
elderSleepSleepAnalysisTask
()
{
log
.
info
(
"开始定时分析长者睡眠质量"
);
platElderSleepService
.
elderSleepSleepAnalysisTask
();
platElderSleepService
.
elderSleepSleepAnalysisTask
(
null
,
null
);
log
.
info
(
"定时分析长者睡眠质量结束"
);
}
}
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