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
65caa32e
authored
Dec 26, 2023
by
罗志长
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
fix: 平台端长者呼吸心率日报
parent
2f2f1ac5
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
194 additions
and
20 deletions
db/上线后sql/update.sql
server-module/src/main/java/com/makeit/module/controller/elder/PlatElderSleepController.java
server-service/src/main/java/com/makeit/entity/platform/elder/PlatElderBreatheHeartRateRecord.java
server-service/src/main/java/com/makeit/mapper/platform/elder/PlatElderBreatheHeartRateRecordMapper.java
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderBreatheHeartRateRecordService.java
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderCoordinateRecordService.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderBreatheHeartRateRecordServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportDayServiceImpl.java
server-service/src/main/java/com/makeit/task/PlatElderReportTask.java
server-web/src/main/java/com/makeit/mqtt/PushCallback.java
db/上线后sql/update.sql
View file @
65caa32e
ALTER
TABLE
`plat_device_other`
ALTER
TABLE
`plat_device_other`
...
...
@@ -90,4 +90,22 @@ ALTER TABLE `plat_alarm_record`
-- 12.15 end
ALTER
TABLE
`plat_tenant`
ADD
COLUMN
`open_api_url`
varchar
(
128
)
COMMENT
'第三方接口url'
AFTER
`secret`
;
\ No newline at end of file
ADD
COLUMN
`open_api_url`
varchar
(
128
)
COMMENT
'第三方接口url'
AFTER
`secret`
;
CREATE
TABLE
`plat_elder_breathe_heart_rate_record`
(
`id`
varchar
(
64
)
NOT
NULL
COMMENT
'id'
,
`create_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'创建者'
,
`create_date`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`update_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'更新者'
,
`update_date`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
`del_flag`
char
(
1
)
NOT
NULL
COMMENT
' 删除标志 0否 1是 '
,
`tenant_id`
varchar
(
64
)
DEFAULT
NULL
COMMENT
' 租户id '
,
`elder_id`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'长者id'
,
`report_time`
bigint
(
20
)
DEFAULT
NULL
COMMENT
'上报时间'
,
`heart_rate`
int
(
11
)
DEFAULT
NULL
COMMENT
'心率'
,
`respiratory_rate`
int
(
11
)
DEFAULT
NULL
COMMENT
'呼吸率'
,
`body_move`
int
(
11
)
DEFAULT
NULL
COMMENT
'体动值'
,
`device_id`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'设备id'
,
`iot_device_id`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'iot设备id'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
ROW_FORMAT
=
COMPACT
COMMENT
=
'长者呼吸心率记录'
;
\ No newline at end of file
server-module/src/main/java/com/makeit/module/controller/elder/PlatElderSleepController.java
View file @
65caa32e
...
...
@@ -45,6 +45,8 @@ public class PlatElderSleepController {
@Autowired
private
PlatElderCoordinateRecordService
platElderCoordinateRecordService
;
@Autowired
private
PlatElderBreatheHeartRateRecordService
platElderBreatheHeartRateRecordService
;
@Autowired
private
HuiNengService
huiNengService
;
...
...
@@ -90,6 +92,15 @@ public class PlatElderSleepController {
return
ApiResponseUtils
.
success
();
}
@ApiOperation
(
"测试"
)
@PostMapping
(
"test6"
)
@AuthIgnore
@TenantIdIgnore
public
ApiResponseEntity
<
Void
>
breatheHeartRateRecordTask
()
{
platElderBreatheHeartRateRecordService
.
breatheHeartRateRecordTask
();
return
ApiResponseUtils
.
success
();
}
@ApiOperation
(
"编辑设备属性"
)
@PostMapping
(
"editDeviceProperties"
)
@AuthIgnore
...
...
server-service/src/main/java/com/makeit/entity/platform/elder/PlatElderBreatheHeartRateRecord.java
0 → 100644
View file @
65caa32e
package
com
.
makeit
.
entity
.
platform
.
elder
;
import
com.makeit.common.entity.BaseBusEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"PlatElderBreatheHeartRateRecord对象"
,
description
=
"长者呼吸心率记录"
)
public
class
PlatElderBreatheHeartRateRecord
extends
BaseBusEntity
{
@ApiModelProperty
(
value
=
"长者id"
)
private
String
elderId
;
@ApiModelProperty
(
value
=
"上报时间"
)
private
Long
reportTime
;
@ApiModelProperty
(
value
=
"心率"
)
private
Integer
heartRate
;
@ApiModelProperty
(
value
=
"呼吸率"
)
private
Integer
respiratoryRate
;
@ApiModelProperty
(
value
=
"体动值"
)
private
Integer
bodyMove
;
@ApiModelProperty
(
value
=
"设备Id"
)
private
String
deviceId
;
@ApiModelProperty
(
value
=
"设备Id"
)
private
String
iotDeviceId
;
}
server-service/src/main/java/com/makeit/mapper/platform/elder/PlatElderBreatheHeartRateRecordMapper.java
0 → 100644
View file @
65caa32e
package
com
.
makeit
.
mapper
.
platform
.
elder
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.makeit.entity.platform.elder.PlatElderBreatheHeartRateRecord
;
public
interface
PlatElderBreatheHeartRateRecordMapper
extends
BaseMapper
<
PlatElderBreatheHeartRateRecord
>
{
}
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderBreatheHeartRateRecordService.java
0 → 100644
View file @
65caa32e
package
com
.
makeit
.
service
.
platform
.
elder
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.makeit.entity.platform.elder.PlatElderBreatheHeartRateRecord
;
import
java.util.List
;
public
interface
PlatElderBreatheHeartRateRecordService
extends
IService
<
PlatElderBreatheHeartRateRecord
>
{
void
breatheHeartRateRecordTask
();
List
<
PlatElderBreatheHeartRateRecord
>
list
(
String
elderId
,
long
start
,
long
end
);
}
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderCoordinateRecordService.java
View file @
65caa32e
...
...
@@ -14,4 +14,5 @@ import com.makeit.entity.platform.elder.PlatElderCoordinateRecord;
public
interface
PlatElderCoordinateRecordService
extends
IService
<
PlatElderCoordinateRecord
>
{
void
coordinateRecordTask
();
}
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderBreatheHeartRateRecordServiceImpl.java
0 → 100644
View file @
65caa32e
package
com
.
makeit
.
service
.
platform
.
elder
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.google.common.collect.Lists
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElderBreatheHeartRateRecord
;
import
com.makeit.mapper.platform.elder.PlatElderBreatheHeartRateRecordMapper
;
import
com.makeit.module.iot.service.IotProductDeviceService
;
import
com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe
;
import
com.makeit.service.platform.elder.PlatElderBreatheHeartRateRecordService
;
import
com.makeit.service.platform.elder.PlatElderRealTimeService
;
import
com.makeit.service.platform.elder.PlatElderService
;
import
com.makeit.utils.data.convert.StreamUtil
;
import
com.makeit.utils.time.LocalDateTimeUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Service
public
class
PlatElderBreatheHeartRateRecordServiceImpl
extends
ServiceImpl
<
PlatElderBreatheHeartRateRecordMapper
,
PlatElderBreatheHeartRateRecord
>
implements
PlatElderBreatheHeartRateRecordService
{
@Autowired
private
PlatElderService
platElderService
;
@Autowired
private
PlatElderRealTimeService
platElderRealTimeService
;
@Autowired
private
IotProductDeviceService
iotProductDeviceService
;
@Override
public
void
breatheHeartRateRecordTask
()
{
LocalDate
nowDate
=
LocalDate
.
now
();
LocalDate
yesDate
=
nowDate
.
minusDays
(
1
);
LocalDateTime
start
=
LocalDateTimeUtils
.
getDayStart
(
yesDate
);
LocalDateTime
end
=
LocalDateTimeUtils
.
getDayEnd
(
yesDate
);
List
<
PlatElder
>
elderList
=
platElderService
.
list
(
new
QueryWrapper
<
PlatElder
>().
lambda
()
.
isNotNull
(
PlatElder:
:
getBedId
));
if
(
CollectionUtils
.
isEmpty
(
elderList
))
{
return
;
}
List
<
PlatElderBreatheHeartRateRecord
>
list
=
Lists
.
newArrayList
();
for
(
PlatElder
e
:
elderList
)
{
PlatDevice
platDevice
=
platElderRealTimeService
.
getBreathDevice
(
e
.
getId
(),
null
);
if
(
platDevice
==
null
)
{
continue
;
}
List
<
DeviceInfoContentBreathe
>
breatheList
=
iotProductDeviceService
.
getDeviceLogByTimeRangeBreathe
(
platDevice
.
getOriDeviceId
(),
2
*
24
*
3600
,
start
,
end
);
List
<
PlatElderBreatheHeartRateRecord
>
data
=
StreamUtil
.
map
(
breatheList
,
b
->
{
PlatElderBreatheHeartRateRecord
record
=
new
PlatElderBreatheHeartRateRecord
();
record
.
setElderId
(
e
.
getId
());
record
.
setReportTime
(
b
.
getTimestamp
());
record
.
setHeartRate
(
b
.
getProperties
().
getHr
());
record
.
setRespiratoryRate
(
b
.
getProperties
().
getBr
());
record
.
setBodyMove
(
b
.
getProperties
().
getBodymove
());
record
.
setDeviceId
(
platDevice
.
getId
());
record
.
setIotDeviceId
(
platDevice
.
getOriDeviceId
());
record
.
setTenantId
(
e
.
getTenantId
());
return
record
;
});
list
.
addAll
(
data
);
}
saveBatch
(
list
);
}
@Override
public
List
<
PlatElderBreatheHeartRateRecord
>
list
(
String
elderId
,
long
start
,
long
end
)
{
LambdaQueryWrapper
<
PlatElderBreatheHeartRateRecord
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
PlatElderBreatheHeartRateRecord:
:
getElderId
,
elderId
);
queryWrapper
.
ge
(
PlatElderBreatheHeartRateRecord:
:
getReportTime
,
start
);
queryWrapper
.
le
(
PlatElderBreatheHeartRateRecord:
:
getReportTime
,
end
);
return
list
(
queryWrapper
);
}
}
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportDayServiceImpl.java
View file @
65caa32e
...
...
@@ -70,6 +70,8 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
private
SaasSleepEvaluateReportService
sleepEvaluateReportService
;
@Autowired
private
PlatElderCoordinateRecordService
platElderCoordinateRecordService
;
@Autowired
private
PlatElderBreatheHeartRateRecordService
platElderBreatheHeartRateRecordService
;
private
static
LocalDateTime
dayStartNow
(
LocalDate
now
)
{
return
LocalDateTimeUtils
.
getDayStart
(
now
);
...
...
@@ -268,25 +270,20 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
@Override
public
List
<
PlatElderRealTimeHeartRespiratoryVO
>
heartRespiratory
(
PlatElderReportDTO
platElderIdDTO
)
{
PlatDevice
platDevice
=
platElderRealTimeService
.
getBreathDevice
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
if
(
platDevice
==
null
)
{
return
new
ArrayList
<>(
10
);
}
LocalDate
now
=
Optional
.
ofNullable
(
platElderIdDTO
.
getNow
()).
orElse
(
LocalDate
.
now
());
LocalDateTime
start
=
dayStartNow
(
now
);
LocalDateTime
end
=
dayEndNow
(
now
);
long
reportTimeStart
=
LocalDateTimeUtils
.
getMilliSecond
(
start
);
long
reportTimeEnd
=
LocalDateTimeUtils
.
getMilliSecond
(
end
);
List
<
DeviceInfoContentBreathe
>
breatheList
=
iotProductDeviceService
.
getDeviceLogByTimeRangeBreathe
(
platDevice
.
getOriDeviceId
(),
2
*
24
*
3600
,
start
,
end
);
return
StreamUtil
.
map
(
breatheList
,
e
->
{
List
<
PlatElderBreatheHeartRateRecord
>
list
=
platElderBreatheHeartRateRecordService
.
list
(
platElderIdDTO
.
getElderId
(),
reportTimeStart
,
reportTimeEnd
);
return
StreamUtil
.
map
(
list
,
e
->
{
PlatElderRealTimeHeartRespiratoryVO
vo
=
new
PlatElderRealTimeHeartRespiratoryVO
();
vo
.
setTime
(
LongTimestampUtil
.
toLocalDateTime
(
e
.
get
Timestamp
()));
vo
.
setHeartRate
(
e
.
get
Properties
().
getHr
());
vo
.
setRespiratoryRate
(
e
.
get
Properties
().
getBr
());
vo
.
setTime
(
LongTimestampUtil
.
toLocalDateTime
(
e
.
get
ReportTime
()));
vo
.
setHeartRate
(
e
.
get
HeartRate
());
vo
.
setRespiratoryRate
(
e
.
get
RespiratoryRate
());
return
vo
;
});
...
...
server-service/src/main/java/com/makeit/task/PlatElderReportTask.java
View file @
65caa32e
package
com
.
makeit
.
task
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
import
com.makeit.service.platform.elder.PlatElderBreatheAnalysisService
;
import
com.makeit.service.platform.elder.PlatElderBreatheDayStatService
;
import
com.makeit.service.platform.elder.PlatElderCoordinateRecordService
;
import
com.makeit.service.platform.elder.PlatElderSleepService
;
import
com.makeit.service.platform.elder.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
...
...
@@ -24,6 +21,8 @@ public class PlatElderReportTask {
private
PlatElderBreatheAnalysisService
platElderBreatheAnalysisService
;
@Autowired
private
PlatElderCoordinateRecordService
platElderCoordinateRecordService
;
@Autowired
private
PlatElderBreatheHeartRateRecordService
platElderBreatheHeartRateRecordService
;
...
...
@@ -56,6 +55,17 @@ public class PlatElderReportTask {
}
/**
* 生成长者呼吸心率
*/
@Scheduled
(
cron
=
"0 30 2 * * ?"
)
@TenantIdIgnore
public
void
breatheHeartRateRecordTask
()
{
log
.
info
(
"开始生成长者呼吸心率"
);
platElderBreatheHeartRateRecordService
.
breatheHeartRateRecordTask
();
log
.
info
(
"生成长者呼吸心率结束"
);
}
/**
* 长者睡眠分析
*/
@Scheduled
(
cron
=
"0 0 8 * * ?"
)
...
...
server-web/src/main/java/com/makeit/mqtt/PushCallback.java
View file @
65caa32e
...
...
@@ -238,7 +238,7 @@ public class PushCallback implements MqttCallback {
platAlarmCheckDTO
.
setProperties
(
properties
);
//设备状态
platAlarmCheckDTO
.
setMessageType
(
messageType
);
alarm
.
checkConfig
(
platAlarmCheckDTO
);
//
alarm.checkConfig(platAlarmCheckDTO);
}
}
}
...
...
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