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
50ba56ed
authored
Sep 15, 2023
by
杨伟程
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge branch 'dev' of
http://git.xmmakeit.com/huangjiay/iot-platform-server
into dev
parents
09af6a32
ece9d396
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
746 additions
and
171 deletions
saas-module/src/main/java/com/makeit/controller/analysis/SaasModelManageController.java
saas-module/src/main/java/com/makeit/controller/analysis/SaasReportManageController.java
server-common/src/main/java/com/makeit/enums/redis/RedisConst.java
server-common/src/main/java/com/makeit/module/iot/service/IotProductDeviceService.java
server-common/src/main/java/com/makeit/module/iot/vo/DeviceInfo.java
server-common/src/main/java/com/makeit/module/iot/vo/analysis/SleepTimeAnalysisVO.java
server-common/src/main/java/com/makeit/utils/data/convert/StreamUtil.java
server-common/src/main/java/com/makeit/utils/msg/dto/MsgSendDTO.java
server-common/src/main/java/com/makeit/utils/msg/sender/MailMsgSender.java
server-common/src/main/java/com/makeit/utils/msg/sender/SmsMsgSender.java
server-common/src/main/java/com/makeit/utils/msg/sender/SmsVoiceSender.java
server-common/src/main/java/com/makeit/utils/time/LocalDateTimeUtils.java
server-module/src/main/java/com/makeit/module/controller/children/config/SaasPrivacyConfigChildrenController.java
server-module/src/main/java/com/makeit/module/controller/space/PlatRoomDynamicController.java
server-service/src/main/java/com/makeit/dto/platform/alarm/PlatAlarmCheckDTO.java
server-service/src/main/java/com/makeit/dto/platform/alarm/PlatDayDurationRecordDTO.java
server-service/src/main/java/com/makeit/entity/platform/alarm/PlatAlarmRecord.java
server-service/src/main/java/com/makeit/entity/platform/alarm/PlatDayDurationRecord.java
server-service/src/main/java/com/makeit/entity/platform/device/PlatDevice.java
server-service/src/main/java/com/makeit/mapper/platform/alarm/PlatDayDurationRecordMapper.java
server-service/src/main/java/com/makeit/service/platform/alarm/PlatDayDurationRecordService.java
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/BehaviorAlarm.java
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/BreathAlarm.java
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/FallAlarm.java
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/HeartAlarm.java
server-service/src/main/java/com/makeit/service/platform/alarm/impl/PlatAlarmRecordServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/alarm/impl/PlatDayDurationRecordServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/dataScreen/impl/DataScreenServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/device/impl/PlatDeviceServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/space/PlatRoomDynamicService.java
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomDynamicServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/workstation/impl/WorkStationServiceImpl.java
server-service/src/main/java/com/makeit/task/DayDurationTask.java
server-service/src/main/java/com/makeit/utils/AlarmRedisDTO.java
server-service/src/main/java/com/makeit/utils/DayDurationUtil.java
server-service/src/main/java/com/makeit/vo/platform/space/PlatDeviceElderVO.java
server-service/src/main/resources/mappers/PlatDayDurationRecordMapper.xml
server-web/src/main/java/com/makeit/mqtt/PushCallback.java
saas-module/src/main/java/com/makeit/controller/analysis/SaasModelManageController.java
View file @
50ba56ed
package
com
.
makeit
.
controller
.
analysis
;
package
com
.
makeit
.
controller
.
analysis
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.makeit.common.dto.BaseNameDTO
;
import
com.makeit.common.response.ApiResponseEntity
;
import
com.makeit.common.response.ApiResponseEntity
;
import
com.makeit.common.response.ApiResponseUtils
;
import
com.makeit.common.response.ApiResponseUtils
;
import
com.makeit.entity.saas.analysis.SaasModelManage
;
import
com.makeit.entity.saas.analysis.SaasModelManage
;
import
com.makeit.global.annotation.Action
;
import
com.makeit.global.annotation.Action
;
import
com.makeit.service.saas.SaasModelManageService
;
import
com.makeit.service.saas.SaasModelManageService
;
import
com.makeit.utils.old.StringUtils
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.v3.oas.annotations.parameters.RequestBody
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
@@ -35,8 +39,9 @@ public class SaasModelManageController {
...
@@ -35,8 +39,9 @@ public class SaasModelManageController {
@Action
(
module
=
"数据分析-模型管理"
,
name
=
"分页列表"
,
code
=
"saas:modelManage:page"
)
@Action
(
module
=
"数据分析-模型管理"
,
name
=
"分页列表"
,
code
=
"saas:modelManage:page"
)
@ApiOperation
(
"分页列表"
)
@ApiOperation
(
"分页列表"
)
@PostMapping
(
"list"
)
@PostMapping
(
"list"
)
public
ApiResponseEntity
<
List
<
SaasModelManage
>>
list
()
{
public
ApiResponseEntity
<
List
<
SaasModelManage
>>
list
(
@RequestBody
BaseNameDTO
dto
)
{
return
ApiResponseUtils
.
success
(
saasModelManageService
.
list
());
return
ApiResponseUtils
.
success
(
saasModelManageService
.
list
(
new
QueryWrapper
<
SaasModelManage
>().
lambda
()
.
like
(
StringUtils
.
isNotEmpty
(
dto
.
getName
()),
SaasModelManage:
:
getName
,
dto
.
getName
())));
}
}
}
}
saas-module/src/main/java/com/makeit/controller/analysis/SaasReportManageController.java
View file @
50ba56ed
package
com
.
makeit
.
controller
.
analysis
;
package
com
.
makeit
.
controller
.
analysis
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.makeit.common.dto.BaseNameDTO
;
import
com.makeit.common.response.ApiResponseEntity
;
import
com.makeit.common.response.ApiResponseEntity
;
import
com.makeit.common.response.ApiResponseUtils
;
import
com.makeit.common.response.ApiResponseUtils
;
import
com.makeit.entity.saas.analysis.SaasModelManage
;
import
com.makeit.entity.saas.analysis.SaasModelManage
;
...
@@ -8,8 +10,10 @@ import com.makeit.entity.saas.analysis.SaasReportManage;
...
@@ -8,8 +10,10 @@ import com.makeit.entity.saas.analysis.SaasReportManage;
import
com.makeit.global.annotation.Action
;
import
com.makeit.global.annotation.Action
;
import
com.makeit.service.saas.SaasModelManageService
;
import
com.makeit.service.saas.SaasModelManageService
;
import
com.makeit.service.saas.SaasReportManageService
;
import
com.makeit.service.saas.SaasReportManageService
;
import
com.makeit.utils.old.StringUtils
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.v3.oas.annotations.parameters.RequestBody
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
@@ -37,8 +41,9 @@ public class SaasReportManageController {
...
@@ -37,8 +41,9 @@ public class SaasReportManageController {
@Action
(
module
=
"数据分析-报告管理"
,
name
=
"分页列表"
,
code
=
"saas:reportManage:page"
)
@Action
(
module
=
"数据分析-报告管理"
,
name
=
"分页列表"
,
code
=
"saas:reportManage:page"
)
@ApiOperation
(
"分页列表"
)
@ApiOperation
(
"分页列表"
)
@PostMapping
(
"list"
)
@PostMapping
(
"list"
)
public
ApiResponseEntity
<
List
<
SaasReportManage
>>
list
(){
public
ApiResponseEntity
<
List
<
SaasReportManage
>>
list
(
@RequestBody
BaseNameDTO
dto
){
return
ApiResponseUtils
.
success
(
saasReportManageService
.
list
());
return
ApiResponseUtils
.
success
(
saasReportManageService
.
list
(
new
QueryWrapper
<
SaasReportManage
>().
lambda
()
.
like
(
StringUtils
.
isNotEmpty
(
dto
.
getName
()),
SaasReportManage:
:
getName
,
dto
.
getName
())));
}
}
}
}
...
...
server-common/src/main/java/com/makeit/enums/redis/RedisConst.java
View file @
50ba56ed
...
@@ -92,11 +92,16 @@ public class RedisConst {
...
@@ -92,11 +92,16 @@ public class RedisConst {
public
static
final
String
TENANT_PREFIX
=
"tenant:"
;
public
static
final
String
TENANT_PREFIX
=
"tenant:"
;
public
static
final
String
ALARM_DEVICE_ID
=
"alarm:device:id:"
;
public
static
final
String
ALARM_DEVICE_BR_ID
=
"alarm:device:br:id:"
;
public
static
final
String
ALARM_DEVICE_HR_ID
=
"alarm:device:hr:id:"
;
public
static
final
String
ALARM_DEVICE_FALL_ID
=
"alarm:device:fall:id:"
;
public
static
final
String
ALARM_DEVICE_BEHAVIOR_ID
=
"alarm:device:behavior:id:"
;
public
static
final
String
ALARM_CONFIG_ORG_ID
=
"alarm:config:org:id:"
;
public
static
final
String
ALARM_CONFIG_ORG_ID
=
"alarm:config:org:id:"
;
public
static
final
String
PLAT_IOT_DEVICE_PREFIX
=
"plat:iot:device:"
;
public
static
final
String
PLAT_IOT_DEVICE_PREFIX
=
"plat:iot:device:"
;
public
static
final
String
ELDER_DAY_DURATION_PREFIX
=
"plat:day:duration:device:"
;
...
...
server-common/src/main/java/com/makeit/module/iot/service/IotProductDeviceService.java
View file @
50ba56ed
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.makeit.module.iot.dto.IotQueryParam
;
import
com.makeit.module.iot.dto.IotQueryParam
;
import
com.makeit.module.iot.dto.IotSort
;
import
com.makeit.module.iot.dto.Term
;
import
com.makeit.module.iot.dto.Term
;
import
com.makeit.module.iot.util.HttpRequest
;
import
com.makeit.module.iot.util.HttpRequest
;
import
com.makeit.module.iot.vo.DeviceInstanceEntity
;
import
com.makeit.module.iot.vo.DeviceInstanceEntity
;
...
@@ -193,7 +194,15 @@ public class IotProductDeviceService extends IotCommonService {
...
@@ -193,7 +194,15 @@ public class IotProductDeviceService extends IotCommonService {
return
getDeviceLog
(
deviceId
,
10
,
typeValue
);
return
getDeviceLog
(
deviceId
,
10
,
typeValue
);
}
}
/**
*
* @param deviceId
* @param typeValue
* @param pageSize
* @param startTime
* @param endTime
* @return
*/
public
List
<
DeviceOperationLogEntity
>
getDeviceLogByTimeRange
(
String
deviceId
,
String
typeValue
,
int
pageSize
,
String
startTime
,
String
endTime
)
{
public
List
<
DeviceOperationLogEntity
>
getDeviceLogByTimeRange
(
String
deviceId
,
String
typeValue
,
int
pageSize
,
String
startTime
,
String
endTime
)
{
IotQueryParam
iotQueryParam
=
buildQueryParam
(
pageSize
);
IotQueryParam
iotQueryParam
=
buildQueryParam
(
pageSize
);
List
<
Term
>
terms
=
Lists
.
newArrayList
();
List
<
Term
>
terms
=
Lists
.
newArrayList
();
...
@@ -226,6 +235,14 @@ public class IotProductDeviceService extends IotCommonService {
...
@@ -226,6 +235,14 @@ public class IotProductDeviceService extends IotCommonService {
terms
.
add
(
term1
);
terms
.
add
(
term1
);
terms
.
add
(
term2
);
terms
.
add
(
term2
);
iotQueryParam
.
setTerms
(
terms
);
iotQueryParam
.
setTerms
(
terms
);
List
<
IotSort
>
iotSortList
=
Lists
.
newArrayList
();
IotSort
iotSort
=
new
IotSort
();
iotSort
.
setOrder
(
"asc"
);
iotSort
.
setName
(
"timestamp"
);
iotSortList
.
add
(
iotSort
);
iotQueryParam
.
setSorts
(
iotSortList
);
String
body
=
JsonUtil
.
toJson
(
iotQueryParam
);
String
body
=
JsonUtil
.
toJson
(
iotQueryParam
);
String
url
=
iotUrl
+
DEVICE_PREFIX_URL
+
deviceId
+
"/logs"
;
String
url
=
iotUrl
+
DEVICE_PREFIX_URL
+
deviceId
+
"/logs"
;
HttpRequest
request
=
buildRequest
(
url
,
body
);
HttpRequest
request
=
buildRequest
(
url
,
body
);
...
...
server-common/src/main/java/com/makeit/module/iot/vo/DeviceInfo.java
View file @
50ba56ed
...
@@ -19,6 +19,7 @@ public class DeviceInfo {
...
@@ -19,6 +19,7 @@ public class DeviceInfo {
private
HeaderInfo
headers
;
private
HeaderInfo
headers
;
private
JSONObject
properties
;
private
JSONObject
properties
;
// private String properties;
/**
/**
...
...
server-common/src/main/java/com/makeit/module/iot/vo/analysis/SleepTimeAnalysisVO.java
0 → 100644
View file @
50ba56ed
package
com
.
makeit
.
module
.
iot
.
vo
.
analysis
;
import
lombok.Data
;
@Data
public
class
SleepTimeAnalysisVO
{
private
String
startSleepTime
;
// 入睡时间开始
private
String
endSleepTime
;
// 入睡时间结束
}
server-common/src/main/java/com/makeit/utils/data/convert/StreamUtil.java
View file @
50ba56ed
...
@@ -160,4 +160,8 @@ public class StreamUtil {
...
@@ -160,4 +160,8 @@ public class StreamUtil {
return
list
.
stream
().
filter
(
predicate
).
map
(
function
).
collect
(
Collectors
.
joining
(
","
));
return
list
.
stream
().
filter
(
predicate
).
map
(
function
).
collect
(
Collectors
.
joining
(
","
));
}
}
public
static
<
T
>
String
join
(
List
<
T
>
list
,
Predicate
<
T
>
predicate
,
Function
<
T
,
String
>
function
,
String
split
)
{
return
list
.
stream
().
filter
(
predicate
).
map
(
function
).
collect
(
Collectors
.
joining
(
split
));
}
}
}
server-common/src/main/java/com/makeit/utils/msg/dto/MsgSendDTO.java
View file @
50ba56ed
...
@@ -20,6 +20,8 @@ public class MsgSendDTO {
...
@@ -20,6 +20,8 @@ public class MsgSendDTO {
private
Collection
<
String
>
receiverList
;
private
Collection
<
String
>
receiverList
;
private
Collection
<
String
>
emailSet
;
private
String
oriContent
;
private
String
oriContent
;
/**
/**
...
...
server-common/src/main/java/com/makeit/utils/msg/sender/MailMsgSender.java
View file @
50ba56ed
package
com
.
makeit
.
utils
.
msg
.
sender
;
package
com
.
makeit
.
utils
.
msg
.
sender
;
import
com.makeit.exception.BusinessException
;
import
com.makeit.utils.msg.SendTypeEnum
;
import
com.makeit.utils.msg.SendTypeEnum
;
import
com.makeit.utils.msg.dto.MsgSendDTO
;
import
com.makeit.utils.msg.dto.MsgSendDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -36,12 +35,12 @@ public class MailMsgSender implements IMsgSender {
...
@@ -36,12 +35,12 @@ public class MailMsgSender implements IMsgSender {
MimeMessage
message
=
mailSender
.
createMimeMessage
();
MimeMessage
message
=
mailSender
.
createMimeMessage
();
MimeMessageHelper
helper
=
new
MimeMessageHelper
(
message
,
true
);
MimeMessageHelper
helper
=
new
MimeMessageHelper
(
message
,
true
);
helper
.
setFrom
(
from
);
helper
.
setFrom
(
from
);
helper
.
setTo
(
msgDTO
.
get
ReceiverLis
t
().
toArray
(
new
String
[
msgDTO
.
getReceiverList
().
size
()]));
helper
.
setTo
(
msgDTO
.
get
EmailSe
t
().
toArray
(
new
String
[
msgDTO
.
getReceiverList
().
size
()]));
helper
.
setSubject
(
msgDTO
.
getSubject
());
helper
.
setSubject
(
msgDTO
.
getSubject
());
helper
.
setText
(
msgDTO
.
getOriContent
(),
false
);
helper
.
setText
(
msgDTO
.
getOriContent
(),
false
);
mailSender
.
send
(
message
);
mailSender
.
send
(
message
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
BusinessException
(
e
.
getMessage
()
);
log
.
error
(
"发送邮箱异常:"
,
e
);
}
}
}
}
...
...
server-common/src/main/java/com/makeit/utils/msg/sender/SmsMsgSender.java
View file @
50ba56ed
...
@@ -8,6 +8,8 @@ import com.makeit.utils.msg.config.SmsConfig;
...
@@ -8,6 +8,8 @@ import com.makeit.utils.msg.config.SmsConfig;
import
com.makeit.utils.msg.dto.MsgSendDTO
;
import
com.makeit.utils.msg.dto.MsgSendDTO
;
import
com.makeit.utils.old.encode.CryptoUtil
;
import
com.makeit.utils.old.encode.CryptoUtil
;
import
com.makeit.utils.third.HttpClient
;
import
com.makeit.utils.third.HttpClient
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpHeaders
;
...
@@ -20,6 +22,7 @@ import java.util.HashMap;
...
@@ -20,6 +22,7 @@ import java.util.HashMap;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Component
@Component
@Slf4j
public
class
SmsMsgSender
implements
IMsgSender
{
public
class
SmsMsgSender
implements
IMsgSender
{
@Autowired
@Autowired
...
@@ -40,6 +43,9 @@ public class SmsMsgSender implements IMsgSender{
...
@@ -40,6 +43,9 @@ public class SmsMsgSender implements IMsgSender{
@Override
@Override
public
void
send
(
MsgSendDTO
msgDTO
)
{
public
void
send
(
MsgSendDTO
msgDTO
)
{
try
{
try
{
if
(
CollectionUtils
.
isEmpty
(
msgDTO
.
getReceiverList
())){
log
.
info
(
"发送短信时,没有接收人,短信内容:"
+
msgDTO
.
getOriContent
());
}
Date
now
=
new
Date
();
Date
now
=
new
Date
();
String
time
=
String
.
valueOf
(
now
.
getTime
());
String
time
=
String
.
valueOf
(
now
.
getTime
());
Collection
<
String
>
receiverList
=
msgDTO
.
getReceiverList
();
Collection
<
String
>
receiverList
=
msgDTO
.
getReceiverList
();
...
@@ -57,10 +63,13 @@ public class SmsMsgSender implements IMsgSender{
...
@@ -57,10 +63,13 @@ public class SmsMsgSender implements IMsgSender{
JSONObject
jsonObject
=
JSON
.
parseObject
(
resStr
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
resStr
);
String
status
=
String
.
valueOf
(
jsonObject
.
get
(
"status"
));
String
status
=
String
.
valueOf
(
jsonObject
.
get
(
"status"
));
if
(!
StringUtils
.
equals
(
status
,
"0"
))
{
if
(!
StringUtils
.
equals
(
status
,
"0"
))
{
log
.
error
(
"发送短信失败:"
+
jsonObject
.
get
(
"status_code"
));
throw
new
BusinessException
((
String
)
jsonObject
.
get
(
"status_code"
));
throw
new
BusinessException
((
String
)
jsonObject
.
get
(
"status_code"
));
}
else
{
log
.
info
(
"发送短信成功"
);
}
}
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
throw
new
BusinessException
(
e
.
getMessage
()
);
log
.
error
(
"发送短信异常:"
,
e
);
}
}
}
}
...
...
server-common/src/main/java/com/makeit/utils/msg/sender/SmsVoiceSender.java
View file @
50ba56ed
...
@@ -8,6 +8,8 @@ import com.makeit.utils.msg.config.SmsVoiceConfig;
...
@@ -8,6 +8,8 @@ import com.makeit.utils.msg.config.SmsVoiceConfig;
import
com.makeit.utils.msg.dto.MsgSendDTO
;
import
com.makeit.utils.msg.dto.MsgSendDTO
;
import
com.makeit.utils.old.encode.CryptoUtil
;
import
com.makeit.utils.old.encode.CryptoUtil
;
import
com.makeit.utils.third.HttpClient
;
import
com.makeit.utils.third.HttpClient
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpHeaders
;
...
@@ -22,6 +24,7 @@ import java.util.function.BiConsumer;
...
@@ -22,6 +24,7 @@ import java.util.function.BiConsumer;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Component
@Component
@Slf4j
public
class
SmsVoiceSender
implements
IMsgSender
{
public
class
SmsVoiceSender
implements
IMsgSender
{
@Autowired
@Autowired
...
@@ -42,6 +45,9 @@ public class SmsVoiceSender implements IMsgSender{
...
@@ -42,6 +45,9 @@ public class SmsVoiceSender implements IMsgSender{
@Override
@Override
public
void
send
(
MsgSendDTO
msgDTO
)
{
public
void
send
(
MsgSendDTO
msgDTO
)
{
try
{
try
{
if
(
CollectionUtils
.
isEmpty
(
msgDTO
.
getReceiverList
())){
log
.
info
(
"发送语音短信时,没有接收人,短信内容:"
+
msgDTO
.
getOriContent
());
}
Date
now
=
new
Date
();
Date
now
=
new
Date
();
String
time
=
String
.
valueOf
(
now
.
getTime
());
String
time
=
String
.
valueOf
(
now
.
getTime
());
Collection
<
String
>
receiverList
=
msgDTO
.
getReceiverList
();
Collection
<
String
>
receiverList
=
msgDTO
.
getReceiverList
();
...
@@ -67,10 +73,11 @@ public class SmsVoiceSender implements IMsgSender{
...
@@ -67,10 +73,11 @@ public class SmsVoiceSender implements IMsgSender{
JSONObject
jsonObject
=
JSON
.
parseObject
(
resStr
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
resStr
);
String
status
=
String
.
valueOf
(
jsonObject
.
get
(
"status"
));
String
status
=
String
.
valueOf
(
jsonObject
.
get
(
"status"
));
if
(!
StringUtils
.
equals
(
status
,
"0"
))
{
if
(!
StringUtils
.
equals
(
status
,
"0"
))
{
log
.
error
(
"发送语音短信失败:"
+
jsonObject
.
get
(
"status_code"
));
throw
new
BusinessException
((
String
)
jsonObject
.
get
(
"status_code"
));
throw
new
BusinessException
((
String
)
jsonObject
.
get
(
"status_code"
));
}
}
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
throw
new
BusinessException
(
e
.
getMessage
().
toString
()
);
log
.
error
(
"发送语音异常:"
,
e
);
}
}
}
}
}
}
server-common/src/main/java/com/makeit/utils/time/LocalDateTimeUtils.java
View file @
50ba56ed
...
@@ -169,4 +169,22 @@ public class LocalDateTimeUtils {
...
@@ -169,4 +169,22 @@ public class LocalDateTimeUtils {
Long
until
=
start
.
until
(
end
,
ChronoUnit
.
HOURS
);
Long
until
=
start
.
until
(
end
,
ChronoUnit
.
HOURS
);
return
until
.
intValue
();
return
until
.
intValue
();
}
}
public
static
Integer
getDaySub
(
LocalDateTime
start
,
LocalDateTime
end
)
{
if
(
start
==
null
||
end
==
null
){
return
0
;
}
Long
until
=
start
.
until
(
end
,
ChronoUnit
.
DAYS
);
return
until
.
intValue
();
}
/**
* 修改为一天的开始时间,例如:2020-02-02 00:00:00,000
*
* @param time 日期时间
* @return 一天的开始时间
*/
public
static
LocalDateTime
beginOfDay
(
LocalDateTime
time
)
{
return
time
.
with
(
LocalTime
.
MIN
);
}
}
}
server-module/src/main/java/com/makeit/module/controller/children/config/SaasPrivacyConfigChildrenController.java
0 → 100644
View file @
50ba56ed
package
com
.
makeit
.
module
.
controller
.
children
.
config
;
import
com.makeit.common.response.ApiResponseEntity
;
import
com.makeit.common.response.ApiResponseUtils
;
import
com.makeit.dto.saas.SaasPrivacyConfigDTO
;
import
com.makeit.service.saas.SaasPrivacyConfigService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
*
* @author lzy
* @date 2022年5月28日
* @description
*/
@Api
(
tags
=
"子女端小程序-隐私政策-关于我们"
)
@RestController
@RequestMapping
(
"/children/sys/privacyConfig"
)
public
class
SaasPrivacyConfigChildrenController
{
@Autowired
private
SaasPrivacyConfigService
saasPrivacyConfigService
;
@ApiOperation
(
value
=
"获取隐私政策-关于我们"
,
notes
=
""
)
@PostMapping
(
"/view"
)
public
ApiResponseEntity
<
SaasPrivacyConfigDTO
>
view
(
@RequestBody
SaasPrivacyConfigDTO
saasPrivacyConfigDTO
){
return
ApiResponseUtils
.
success
(
saasPrivacyConfigService
.
view
(
saasPrivacyConfigDTO
.
getCategory
()));
}
@ApiOperation
(
value
=
"获取关于我们"
,
notes
=
""
)
@PostMapping
(
"/viewAbout"
)
public
ApiResponseEntity
<
SaasPrivacyConfigDTO
>
viewAbout
(
@RequestBody
SaasPrivacyConfigDTO
saasPrivacyConfigDTO
){
return
ApiResponseUtils
.
success
(
saasPrivacyConfigService
.
view
(
saasPrivacyConfigDTO
.
getCategory
()));
}
}
server-module/src/main/java/com/makeit/module/controller/space/PlatRoomDynamicController.java
View file @
50ba56ed
...
@@ -8,6 +8,7 @@ import com.makeit.dto.platform.space.PlatRoomPanoramaDTO;
...
@@ -8,6 +8,7 @@ import com.makeit.dto.platform.space.PlatRoomPanoramaDTO;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.service.platform.space.PlatRoomDynamicService
;
import
com.makeit.service.platform.space.PlatRoomDynamicService
;
import
com.makeit.vo.platform.space.PlatBedPanoramaVO
;
import
com.makeit.vo.platform.space.PlatBedPanoramaVO
;
import
com.makeit.vo.platform.space.PlatDeviceElderVO
;
import
com.makeit.vo.platform.space.PlatRoomPanoramaVO
;
import
com.makeit.vo.platform.space.PlatRoomPanoramaVO
;
import
com.makeit.vo.platform.space.PlatSpaceAndRoomVO
;
import
com.makeit.vo.platform.space.PlatSpaceAndRoomVO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -64,8 +65,8 @@ public class PlatRoomDynamicController {
...
@@ -64,8 +65,8 @@ public class PlatRoomDynamicController {
@ApiOperation
(
"房间详细-下拉长者"
)
@ApiOperation
(
"房间详细-下拉长者"
)
@PostMapping
(
"elderList"
)
@PostMapping
(
"elderList"
)
public
ApiResponseEntity
<
List
<
Plat
Elder
>>
elderList
(
@RequestBody
PlatElderQueryDTO
dto
)
{
public
ApiResponseEntity
<
List
<
Plat
DeviceElderVO
>>
elderList
(
@RequestBody
PlatElderQueryDTO
dto
)
{
List
<
Plat
Elder
>
data
=
platRoomDynamicService
.
elderList
(
dto
);
List
<
Plat
DeviceElderVO
>
data
=
platRoomDynamicService
.
elderList
(
dto
);
return
ApiResponseUtils
.
success
(
data
);
return
ApiResponseUtils
.
success
(
data
);
}
}
...
...
server-service/src/main/java/com/makeit/dto/platform/alarm/PlatAlarmCheckDTO.java
View file @
50ba56ed
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.makeit.entity.platform.alarm.PlatAlarmConfig
;
import
com.makeit.entity.platform.alarm.PlatAlarmConfig
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.space.PlatRegionSetting
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -27,4 +28,6 @@ public class PlatAlarmCheckDTO {
...
@@ -27,4 +28,6 @@ public class PlatAlarmCheckDTO {
//PlatAlarmRecord.remark
//PlatAlarmRecord.remark
private
String
remark
;
private
String
remark
;
private
PlatRegionSetting
platRegionSetting
;
}
}
server-service/src/main/java/com/makeit/dto/platform/alarm/PlatDayDurationRecordDTO.java
0 → 100644
View file @
50ba56ed
package
com
.
makeit
.
dto
.
platform
.
alarm
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Data
public
class
PlatDayDurationRecordDTO
{
private
LocalDateTime
start
;
private
LocalDateTime
end
;
private
List
<
String
>
dayStrList
;
}
server-service/src/main/java/com/makeit/entity/platform/alarm/PlatAlarmRecord.java
View file @
50ba56ed
package
com
.
makeit
.
entity
.
platform
.
alarm
;
package
com
.
makeit
.
entity
.
platform
.
alarm
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.makeit.common.entity.BaseBusEntity
;
import
com.makeit.common.entity.BaseBusEntity
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
...
@@ -70,12 +71,15 @@ public class PlatAlarmRecord extends BaseBusEntity {
...
@@ -70,12 +71,15 @@ public class PlatAlarmRecord extends BaseBusEntity {
private
String
deviceId
;
private
String
deviceId
;
/**
/**
* 老人id,
逗号拼接
* 老人id,
一个老人一条记录
*/
*/
private
String
elderIds
;
private
String
elderIds
;
private
String
remark
;
private
String
remark
;
@TableField
(
exist
=
false
)
private
String
elderName
;
}
}
...
...
server-service/src/main/java/com/makeit/entity/platform/alarm/PlatDayDurationRecord.java
View file @
50ba56ed
...
@@ -2,6 +2,7 @@ package com.makeit.entity.platform.alarm;
...
@@ -2,6 +2,7 @@ package com.makeit.entity.platform.alarm;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.makeit.common.entity.BaseBusEntity
;
import
com.makeit.common.entity.BaseBusEntity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -42,4 +43,14 @@ public class PlatDayDurationRecord extends BaseBusEntity {
...
@@ -42,4 +43,14 @@ public class PlatDayDurationRecord extends BaseBusEntity {
* 本次离开时间
* 本次离开时间
*/
*/
private
Date
endDate
;
private
Date
endDate
;
@ApiModelProperty
(
"区域名称"
)
private
String
regionName
;
@ApiModelProperty
(
"设备ID"
)
private
String
deviceId
;
@ApiModelProperty
(
"房间ID"
)
private
String
roomId
;
}
}
\ No newline at end of file
server-service/src/main/java/com/makeit/entity/platform/device/PlatDevice.java
View file @
50ba56ed
...
@@ -52,7 +52,9 @@ public class PlatDevice extends BaseBusEntity {
...
@@ -52,7 +52,9 @@ public class PlatDevice extends BaseBusEntity {
/**
/**
* @see DeviceState
* @see DeviceState
*/
*/
@ApiModelProperty
(
value
=
"状态 数据字典 1 在线 0离线 "
)
@ApiModelProperty
(
value
=
"状态 notActive(\"notActive\",\"禁用\"),\n"
+
" offline(\"offline\",\"离线\"),\n"
+
" online(\"online\",\"在线\"); "
)
private
String
status
;
private
String
status
;
@ApiModelProperty
(
value
=
"组织id"
)
@ApiModelProperty
(
value
=
"组织id"
)
...
...
server-service/src/main/java/com/makeit/mapper/platform/alarm/PlatDayDurationRecordMapper.java
View file @
50ba56ed
...
@@ -2,7 +2,11 @@ package com.makeit.mapper.platform.alarm;
...
@@ -2,7 +2,11 @@ package com.makeit.mapper.platform.alarm;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.makeit.dto.platform.alarm.PlatDayDurationRecordDTO
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
/**
* @author lixl
* @author lixl
...
@@ -13,4 +17,5 @@ import com.makeit.entity.platform.alarm.PlatDayDurationRecord;
...
@@ -13,4 +17,5 @@ import com.makeit.entity.platform.alarm.PlatDayDurationRecord;
public
interface
PlatDayDurationRecordMapper
extends
BaseMapper
<
PlatDayDurationRecord
>
{
public
interface
PlatDayDurationRecordMapper
extends
BaseMapper
<
PlatDayDurationRecord
>
{
List
<
PlatDayDurationRecord
>
getDayMaxDurationList
(
@Param
(
"param"
)
PlatDayDurationRecordDTO
param
);
}
}
server-service/src/main/java/com/makeit/service/platform/alarm/PlatDayDurationRecordService.java
View file @
50ba56ed
...
@@ -2,8 +2,11 @@ package com.makeit.service.platform.alarm;
...
@@ -2,8 +2,11 @@ package com.makeit.service.platform.alarm;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.makeit.dto.platform.alarm.PlatDayDurationRecordDTO
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
java.util.List
;
/**
/**
* @author lixl
* @author lixl
* @description 针对表【plat_day_duration_record(每天停留时长记录)】的数据库操作Service
* @description 针对表【plat_day_duration_record(每天停留时长记录)】的数据库操作Service
...
@@ -11,4 +14,5 @@ import com.makeit.entity.platform.alarm.PlatDayDurationRecord;
...
@@ -11,4 +14,5 @@ import com.makeit.entity.platform.alarm.PlatDayDurationRecord;
*/
*/
public
interface
PlatDayDurationRecordService
extends
IService
<
PlatDayDurationRecord
>
{
public
interface
PlatDayDurationRecordService
extends
IService
<
PlatDayDurationRecord
>
{
List
<
PlatDayDurationRecord
>
getDayMaxDurationList
(
PlatDayDurationRecordDTO
param
);
}
}
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/BehaviorAlarm.java
View file @
50ba56ed
...
@@ -10,6 +10,7 @@ import com.makeit.entity.platform.alarm.PlatAlarmRecord;
...
@@ -10,6 +10,7 @@ import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.space.PlatRegionSetting
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
...
@@ -17,12 +18,14 @@ import com.makeit.enums.redis.RedisConst;
...
@@ -17,12 +18,14 @@ import com.makeit.enums.redis.RedisConst;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.alarm.PlatDayDurationRecordService
;
import
com.makeit.service.platform.alarm.PlatDayDurationRecordService
;
import
com.makeit.utils.AlarmRedisDTO
;
import
com.makeit.utils.AlarmRedisDTO
;
import
com.makeit.utils.DayDurationUtil
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
com.makeit.utils.redis.RedisUtil
;
import
com.makeit.utils.redis.RedisUtil
;
import
com.makeit.utils.time.LocalDateTimeUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
...
@@ -35,17 +38,20 @@ import java.util.List;
...
@@ -35,17 +38,20 @@ import java.util.List;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Component
@Component
public
class
BehaviorAlarm
implements
IAlarm
{
@Slf4j
public
class
BehaviorAlarm
implements
IAlarm
{
@Autowired
@Autowired
private
PlatAlarmRecordService
platAlarmRecordService
;
private
PlatAlarmRecordService
platAlarmRecordService
;
@Autowired
@Autowired
private
PlatDayDurationRecordService
platDayDurationRecordService
;
private
PlatDayDurationRecordService
platDayDurationRecordService
;
@Autowired
private
DayDurationUtil
dayDurationUtil
;
private
PlatAlarmConfigEnum
.
AlarmTypeEnum
alarmTypeEnum
=
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
BEHAVIOR
;
private
final
PlatAlarmConfigEnum
.
AlarmTypeEnum
alarmTypeEnum
=
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
BEHAVIOR
;
@Override
@Override
public
boolean
support
(
String
alarmType
)
{
public
boolean
support
(
String
alarmType
)
{
return
StringUtils
.
equals
(
alarmType
,
alarmTypeEnum
.
getValue
());
return
StringUtils
.
equals
(
alarmType
,
alarmTypeEnum
.
getValue
());
}
}
/**
/**
...
@@ -53,6 +59,7 @@ public class BehaviorAlarm implements IAlarm{
...
@@ -53,6 +59,7 @@ public class BehaviorAlarm implements IAlarm{
* 取前七天的日最长时间,然后取中位数
* 取前七天的日最长时间,然后取中位数
* 前七天:没有满足七条记录则跳过,如果七条没都包含长者则跳过
* 前七天:没有满足七条记录则跳过,如果七条没都包含长者则跳过
* 记录的保存和缓存读取
* 记录的保存和缓存读取
*
* @param platAlarmCheckDTO
* @param platAlarmCheckDTO
*/
*/
@Override
@Override
...
@@ -63,91 +70,133 @@ public class BehaviorAlarm implements IAlarm{
...
@@ -63,91 +70,133 @@ public class BehaviorAlarm implements IAlarm{
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
String
deviceId
=
platDevice
.
getOriDeviceId
();
String
deviceId
=
platDevice
.
getOriDeviceId
();
if
(
StringUtils
.
isBlank
(
ruleConfigStr
))
{
if
(
StringUtils
.
isBlank
(
ruleConfigStr
))
{
log
.
info
(
"行为告警配置未配置,告警配置id:"
+
config
.
getId
());
return
;
return
;
}
}
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
PlatAlarmConfigBehaviorDTOVO
ruleConfig
=
JsonUtil
.
toObj
(
ruleConfigStr
,
PlatAlarmConfigBehaviorDTOVO
.
class
);
PlatAlarmConfigBehaviorDTOVO
ruleConfig
=
JsonUtil
.
toObj
(
ruleConfigStr
,
PlatAlarmConfigBehaviorDTOVO
.
class
);
Integer
duration
=
ruleConfig
.
getDuration
();
//分钟
Integer
duration
=
ruleConfig
.
getDuration
();
//分钟
duration
=
duration
*
60
;
PlatDayDurationRecord
platDayDurationRecord
=
dayDurationUtil
.
get
(
platDevice
.
getOriDeviceId
());
//todo duration+平均停留时长
if
(
platDayDurationRecord
==
null
)
{
List
<
String
>
personStateList
=
Arrays
.
asList
(
"1"
,
"2"
,
"3"
);
log
.
info
(
"行为告警未找到行为异常平均时长,设备id:"
+
platDevice
.
getId
());
return
;
}
Long
duration1
=
platDayDurationRecord
.
getDuration
();
duration
=
duration
*
60
+
(
int
)
(
duration1
/
1000
);
//duration+平均停留时长
List
<
String
>
personStateList
=
Arrays
.
asList
(
"0"
);
//有人
//有人
//计数
//计数
Date
now
=
new
Date
();
Date
now
=
new
Date
();
long
endLong
=
now
.
getTime
();
long
endLong
=
now
.
getTime
();
AlarmRedisDTO
alarmRedisDTO
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
);
AlarmRedisDTO
alarmRedisDTO
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_
BEHAVIOR_
ID
+
deviceId
);
if
(
alarmRedisDTO
==
null
)
{
if
(
alarmRedisDTO
==
null
)
{
alarmRedisDTO
=
new
AlarmRedisDTO
();
alarmRedisDTO
=
new
AlarmRedisDTO
();
}
}
//有人
//有人
if
(
personStateList
.
contains
(
personState
))
{
if
(
!
personStateList
.
contains
(
personState
))
{
//第一次进入空间
//第一次进入空间
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
if
(
startLong
==
null
)
{
if
(
startLong
==
null
)
{
alarmRedisDTO
.
setStartLong
(
endLong
);
alarmRedisDTO
.
setStartLong
(
endLong
);
alarmRedisDTO
.
setStart
(
now
);
alarmRedisDTO
.
setStart
(
now
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
alarmRedisDTO
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_BEHAVIOR_ID
+
deviceId
,
alarmRedisDTO
);
log
.
info
(
"空间雷达上报进入房间,设备id:"
+
platDevice
.
getId
());
return
;
return
;
}
}
long
count
=
endLong
-
startLong
;
long
count
=
endLong
-
startLong
;
//进入空间时间满足告警时长,判断是否已经告警过了
//进入空间时间满足告警时长,判断是否已经告警过了
if
(
count
/
1000
>=
duration
&&
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
NO
.
getValue
()))
{
if
(
count
/
1000
>=
duration
&&
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
NO
.
getValue
()))
{
log
.
info
(
"空间雷达发出告警,设备id:"
+
platDevice
.
getId
());
notice
(
platAlarmCheckDTO
);
notice
(
platAlarmCheckDTO
);
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
YES
.
getValue
());
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
YES
.
getValue
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
alarmRedisDTO
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_BEHAVIOR_ID
+
deviceId
,
alarmRedisDTO
);
}
}
}
else
{
//没人
}
else
{
//没人
// 是否有第一次进入记录,有则保存db
// 是否有第一次进入记录,有则保存db
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
if
(
startLong
==
null
)
{
if
(
startLong
==
null
)
{
return
;
return
;
}
}
//保存每次进入空间时长
//保存每次进入空间时长
saveDayDurationRecord
(
platAlarmCheckDTO
,
alarmRedisDTO
);
saveDayDurationRecord
(
platAlarmCheckDTO
,
alarmRedisDTO
);
RedisUtil
.
delete
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
);
RedisUtil
.
delete
(
RedisConst
.
ALARM_DEVICE_
BEHAVIOR_
ID
+
deviceId
);
}
}
}
}
/**
* 保存停留时长记录
* 进入雷达开始
* 走出雷达结束
*
* @param platAlarmCheckDTO
* @param alarmRedisDTO
*/
private
void
saveDayDurationRecord
(
PlatAlarmCheckDTO
platAlarmCheckDTO
,
AlarmRedisDTO
alarmRedisDTO
)
{
private
void
saveDayDurationRecord
(
PlatAlarmCheckDTO
platAlarmCheckDTO
,
AlarmRedisDTO
alarmRedisDTO
)
{
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
PlatRegionSetting
platRegionSetting
=
platAlarmCheckDTO
.
getPlatRegionSetting
();
Date
now
=
new
Date
();
Date
now
=
new
Date
();
long
endLong
=
now
.
getTime
();
long
endLong
=
now
.
getTime
();
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
long
count
=
endLong
-
alarmRedisDTO
.
getStartLong
();
long
count
=
endLong
-
alarmRedisDTO
.
getStartLong
();
//save db
//save db
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
if
(
CollectionUtils
.
isEmpty
(
platAlarmCheckDTO
.
getPlatElderList
())){
log
.
info
(
"未关联长者,设备id:"
+
platDevice
.
getId
());
return
;
}
PlatRoom
platRoom
=
platAlarmCheckDTO
.
getPlatRoom
();
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
PlatDayDurationRecord
durationRecord
=
new
PlatDayDurationRecord
();
PlatDayDurationRecord
durationRecord
=
new
PlatDayDurationRecord
();
durationRecord
.
setElderIds
(
platElderList
.
stream
().
map
(
BaseEntity:
:
getId
).
collect
(
Collectors
.
joining
(
","
)));
durationRecord
.
setElderIds
(
platElderList
.
stream
().
map
(
BaseEntity:
:
getId
).
collect
(
Collectors
.
joining
(
","
)));
durationRecord
.
setDuration
(
count
);
durationRecord
.
setDuration
(
count
);
durationRecord
.
setOriDeviceId
(
platDevice
.
getOriDeviceId
());
durationRecord
.
setOriDeviceId
(
platDevice
.
getOriDeviceId
());
DateTimeFormatter
dateTimeFormatter
=
DateTimeFormatter
.
ofPattern
(
"yyyyMMdd"
);
DateTimeFormatter
dateTimeFormatter
=
DateTimeFormatter
.
ofPattern
(
"yyyyMMdd"
);
durationRecord
.
setDay
(
dateTimeFormatter
.
format
(
LocalDateTime
.
ofEpochSecond
(
startLong
/
1000
,
0
,
ZoneOffset
.
ofHours
(
8
))));
durationRecord
.
setDay
(
dateTimeFormatter
.
format
(
LocalDateTime
.
ofEpochSecond
(
startLong
/
1000
,
0
,
ZoneOffset
.
ofHours
(
8
))));
durationRecord
.
setStartDate
(
alarmRedisDTO
.
getStart
());
durationRecord
.
setStartDate
(
alarmRedisDTO
.
getStart
());
durationRecord
.
setEndDate
(
now
);
durationRecord
.
setEndDate
(
now
);
durationRecord
.
setTenantId
(
config
.
getTenantId
());
durationRecord
.
setTenantId
(
config
.
getTenantId
());
durationRecord
.
setRoomId
(
platRoom
.
getId
());
durationRecord
.
setDeviceId
(
platDevice
.
getId
());
if
(
platRegionSetting
!=
null
)
{
durationRecord
.
setRegionName
(
platRegionSetting
.
getRegionName
());
}
platDayDurationRecordService
.
saveOrUpdate
(
durationRecord
);
platDayDurationRecordService
.
saveOrUpdate
(
durationRecord
);
}
}
@Override
@Override
@Async
public
void
notice
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
public
void
notice
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
//获取长者 空间信息
//获取长者 空间信息
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
if
(
CollectionUtils
.
isEmpty
(
platElderList
)){
if
(
CollectionUtils
.
isEmpty
(
platElderList
))
{
log
.
info
(
"未关联长者,设备id:"
+
platAlarmCheckDTO
.
getPlatDevice
().
getId
());
return
;
return
;
}
}
PlatRoom
platRoom
=
platAlarmCheckDTO
.
getPlatRoom
();
PlatRoom
platRoom
=
platAlarmCheckDTO
.
getPlatRoom
();
for
(
PlatElder
platElder
:
platElderList
)
{
for
(
PlatElder
platElder
:
platElderList
)
{
//判断是否已入住七天
LocalDateTime
checkInTime
=
platElder
.
getCheckInTime
();
if
(
checkInTime
==
null
)
{
continue
;
}
Integer
daySub
=
LocalDateTimeUtils
.
getDaySub
(
checkInTime
,
LocalDateTime
.
now
());
if
(
daySub
<
7
)
{
continue
;
}
List
<
String
>
param
=
new
ArrayList
<>();
List
<
String
>
param
=
new
ArrayList
<>();
param
.
add
(
platElder
.
getName
());
param
.
add
(
platElder
.
getName
());
param
.
add
(
platRoom
.
getName
());
param
.
add
(
platRoom
.
getName
());
platAlarmCheckDTO
.
setParam
(
param
);
platAlarmCheckDTO
.
setParam
(
param
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
);
platAlarmRecordService
.
noticeDeviceAlarm
(
platAlarmCheckDTO
.
getPlatAlarmConfig
(),
platAlarmRecord
);
platAlarmRecord
.
setElderIds
(
platElder
.
getId
());
platAlarmRecord
.
setElderName
(
platElder
.
getName
());
platAlarmRecordService
.
noticeDeviceAlarm
(
platAlarmCheckDTO
.
getPlatAlarmConfig
(),
platAlarmRecord
);
}
}
}
}
}
}
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/BreathAlarm.java
View file @
50ba56ed
...
@@ -8,16 +8,17 @@ import com.makeit.entity.platform.alarm.PlatAlarmConfig;
...
@@ -8,16 +8,17 @@ import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.en
tity.platform.space.PlatRoo
m
;
import
com.makeit.en
ums.CommonEnu
m
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.redis.RedisConst
;
import
com.makeit.enums.redis.RedisConst
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.utils.AlarmRedisDTO
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
com.makeit.utils.redis.RedisUtil
;
import
com.makeit.utils.redis.RedisUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -25,33 +26,37 @@ import java.util.Date;
...
@@ -25,33 +26,37 @@ import java.util.Date;
import
java.util.List
;
import
java.util.List
;
@Component
@Component
public
class
BreathAlarm
implements
IAlarm
{
@Slf4j
public
class
BreathAlarm
implements
IAlarm
{
@Autowired
@Autowired
private
PlatAlarmRecordService
platAlarmRecordService
;
private
PlatAlarmRecordService
platAlarmRecordService
;
private
PlatAlarmConfigEnum
.
AlarmTypeEnum
alarmTypeEnum
=
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
BREATHE
;
private
final
PlatAlarmConfigEnum
.
AlarmTypeEnum
alarmTypeEnum
=
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
BREATHE
;
@Override
@Override
public
boolean
support
(
String
alarmType
)
{
public
boolean
support
(
String
alarmType
)
{
return
StringUtils
.
equals
(
alarmType
,
alarmTypeEnum
.
getValue
());
return
StringUtils
.
equals
(
alarmType
,
alarmTypeEnum
.
getValue
());
}
}
/**
/**
* 2.呼吸异常/心率异常:长者关联的呼吸心率雷达上报的呼吸和心率不在配置的阈值范围内,且满足持续时间进行告警,
* 2.呼吸异常/心率异常:长者关联的呼吸心率雷达上报的呼吸和心率不在配置的阈值范围内,且满足持续时间进行告警,
* 若该长者在长者管理处有配置阈值,则以长者个人的阈值为准,若无,则以此处配置的通用规则为准
* 若该长者在长者管理处有配置阈值,则以长者个人的阈值为准,若无,则以此处配置的通用规则为准
*
*
<p>
* 心率呼吸率低于阈值且满足持续时间,则对应状态为呼吸过缓/心率过缓,高于阈值且满足持续时间,
* 心率呼吸率低于阈值且满足持续时间,则对应状态为呼吸过缓/心率过缓,高于阈值且满足持续时间,
* 对应状态为呼吸过速/心率过速,呼吸心率为0且满足持续时间为呼吸暂停
* 对应状态为呼吸过速/心率过速,呼吸心率为0且满足持续时间为呼吸暂停
*
* @param platAlarmCheckDTO
* @param platAlarmCheckDTO
*/
*/
@Override
@Override
public
void
checkConfig
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
public
void
checkConfig
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
//todo 获取老人健康的阈值
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
String
ruleConfigStr
=
config
.
getRuleConfig
();
String
ruleConfigStr
=
config
.
getRuleConfig
();
JSONObject
properties
=
platAlarmCheckDTO
.
getProperties
();
JSONObject
properties
=
platAlarmCheckDTO
.
getProperties
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
String
deviceId
=
platDevice
.
getOriDeviceId
();
String
deviceId
=
platDevice
.
getOriDeviceId
();
if
(
StringUtils
.
isBlank
(
ruleConfigStr
))
{
if
(
StringUtils
.
isBlank
(
ruleConfigStr
))
{
log
.
info
(
"呼吸告警配置未配置,告警配置id:"
+
config
.
getId
());
return
;
return
;
}
}
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
...
@@ -62,52 +67,80 @@ public class BreathAlarm implements IAlarm{
...
@@ -62,52 +67,80 @@ public class BreathAlarm implements IAlarm{
Integer
start
=
ruleConfig
.
getRespiratoryRateStart
();
Integer
start
=
ruleConfig
.
getRespiratoryRateStart
();
Integer
end
=
ruleConfig
.
getRespiratoryRateEnd
();
Integer
end
=
ruleConfig
.
getRespiratoryRateEnd
();
Integer
duration
=
ruleConfig
.
getDuration
();
Integer
duration
=
ruleConfig
.
getDuration
();
long
endLong
=
new
Date
().
getTime
();
Date
now
=
new
Date
();
long
endLong
=
now
.
getTime
();
//计数
//计数
Long
startLong
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
);
AlarmRedisDTO
alarmRedisDTO
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_BR_ID
+
deviceId
);
if
(
StringUtils
.
equals
(
personState
,
"0"
)||
startLong
==
null
)
{
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
endLong
/
1000
);
if
(
StringUtils
.
equals
(
personState
,
CommonEnum
.
NO
.
getValue
()))
{
RedisUtil
.
delete
(
RedisConst
.
ALARM_DEVICE_BR_ID
+
deviceId
);
return
;
return
;
}
}
long
count
=
endLong
-
startLong
;
if
(
br
>
end
||
br
<
start
)
{
if
(
count
>=
duration
)
{
if
((
br
>
end
||
br
<
start
))
{
if
(
br
>
end
){
if
(
alarmRedisDTO
==
null
){
platAlarmCheckDTO
.
setRemark
(
"呼吸过速"
);
alarmRedisDTO
=
new
AlarmRedisDTO
();
}
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
NO
.
getValue
());
if
(
br
<
start
){
alarmRedisDTO
.
setStart
(
now
);
platAlarmCheckDTO
.
setRemark
(
"呼吸过缓"
);
alarmRedisDTO
.
setStartLong
(
endLong
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_BR_ID
+
deviceId
,
alarmRedisDTO
);
log
.
info
(
"发现长者呼吸异常,设备id:"
+
deviceId
);
return
;
}
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
long
count
=
endLong
-
startLong
;
if
(
count
/
1000
>=
duration
)
{
if
(
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
YES
.
getValue
()))
{
log
.
info
(
"呼吸已告警,设备id:"
+
platDevice
.
getId
());
return
;
}
}
fillRemark
(
platAlarmCheckDTO
,
br
,
start
,
end
);
notice
(
platAlarmCheckDTO
);
notice
(
platAlarmCheckDTO
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
endLong
/
1000
);
alarmRedisDTO
.
setStartLong
(
endLong
);
alarmRedisDTO
.
setStart
(
now
);
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
YES
.
getValue
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_BR_ID
+
deviceId
,
alarmRedisDTO
);
}
}
}
else
{
}
else
{
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
endLong
/
1000
);
RedisUtil
.
delete
(
RedisConst
.
ALARM_DEVICE_BR_ID
+
deviceId
);
}
}
private
void
fillRemark
(
PlatAlarmCheckDTO
platAlarmCheckDTO
,
int
br
,
Integer
start
,
Integer
end
)
{
if
(
br
>
end
)
{
platAlarmCheckDTO
.
setRemark
(
"呼吸过速"
);
}
if
(
br
<
start
)
{
platAlarmCheckDTO
.
setRemark
(
"呼吸过缓"
);
}
if
(
br
==
0
)
{
platAlarmCheckDTO
.
setRemark
(
"呼吸暂停"
);
}
}
return
;
}
}
/**
/**
* [#长者姓名][#呼吸状态],请及时处理!
* [#长者姓名][#呼吸状态],请及时处理!
*
* @param platAlarmCheckDTO
* @param platAlarmCheckDTO
*/
*/
@Override
@Override
@Async
public
void
notice
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
public
void
notice
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
if
(
CollectionUtils
.
isEmpty
(
platElderList
)){
if
(
CollectionUtils
.
isEmpty
(
platElderList
))
{
log
.
info
(
"未关联长者,设备id:"
+
platAlarmCheckDTO
.
getPlatDevice
().
getId
());
return
;
return
;
}
}
PlatRoom
platRoom
=
platAlarmCheckDTO
.
getPlatRoom
();
for
(
PlatElder
platElder
:
platElderList
)
{
for
(
PlatElder
platElder
:
platElderList
)
{
List
<
String
>
param
=
new
ArrayList
<>();
List
<
String
>
param
=
new
ArrayList
<>();
param
.
add
(
platElder
.
getName
());
param
.
add
(
platElder
.
getName
());
param
.
add
(
platAlarmCheckDTO
.
getRemark
());
param
.
add
(
platAlarmCheckDTO
.
getRemark
());
platAlarmCheckDTO
.
setParam
(
param
);
platAlarmCheckDTO
.
setParam
(
param
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
);
platAlarmRecordService
.
noticeDeviceAlarm
(
platAlarmCheckDTO
.
getPlatAlarmConfig
(),
platAlarmRecord
);
platAlarmRecord
.
setElderIds
(
platElder
.
getId
());
platAlarmRecord
.
setElderName
(
platElder
.
getName
());
platAlarmRecordService
.
noticeDeviceAlarm
(
platAlarmCheckDTO
.
getPlatAlarmConfig
(),
platAlarmRecord
);
}
}
}
}
}
}
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/FallAlarm.java
View file @
50ba56ed
...
@@ -4,10 +4,16 @@ import cn.hutool.core.convert.Convert;
...
@@ -4,10 +4,16 @@ import cn.hutool.core.convert.Convert;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.redis.RedisConst
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.utils.AlarmRedisDTO
;
import
com.makeit.utils.redis.RedisUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -17,35 +23,47 @@ import java.util.ArrayList;
...
@@ -17,35 +23,47 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.List
;
@Component
@Component
public
class
FallAlarm
implements
IAlarm
{
@Slf4j
public
class
FallAlarm
implements
IAlarm
{
@Autowired
@Autowired
private
PlatAlarmRecordService
platAlarmRecordService
;
private
PlatAlarmRecordService
platAlarmRecordService
;
private
PlatAlarmConfigEnum
.
AlarmTypeEnum
alarmTypeEnum
=
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
FALL
;
private
final
PlatAlarmConfigEnum
.
AlarmTypeEnum
alarmTypeEnum
=
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
FALL
;
@Override
@Override
public
boolean
support
(
String
alarmType
)
{
public
boolean
support
(
String
alarmType
)
{
return
StringUtils
.
equals
(
alarmType
,
alarmTypeEnum
.
getValue
());
return
StringUtils
.
equals
(
alarmType
,
alarmTypeEnum
.
getValue
());
}
}
/**
/**
* 1.长者跌倒:长者所在空间的跌倒监测雷达上报跌倒,若一个空间内有多为长者,则同时告警多条
* 1.长者跌倒:长者所在空间的跌倒监测雷达上报跌倒,若一个空间内有多为长者,则同时告警多条
*
* @param platAlarmCheckDTO
* @param platAlarmCheckDTO
*/
*/
@Override
@Override
public
void
checkConfig
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
public
void
checkConfig
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
JSONObject
properties
=
platAlarmCheckDTO
.
getProperties
();
JSONObject
properties
=
platAlarmCheckDTO
.
getProperties
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
String
deviceId
=
platDevice
.
getOriDeviceId
();
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
if
(
StringUtils
.
equals
(
personState
,
"1"
))
{
AlarmRedisDTO
alarmRedisDTO
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_FALL_ID
+
deviceId
);
notice
(
platAlarmCheckDTO
);
if
(
StringUtils
.
equals
(
personState
,
CommonEnum
.
YES
.
getValue
()))
{
notice
(
platAlarmCheckDTO
);
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
YES
.
getValue
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_FALL_ID
,
alarmRedisDTO
);
}
else
{
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
NO
.
getValue
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_FALL_ID
,
alarmRedisDTO
);
}
}
}
}
@Override
@Override
public
void
notice
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
public
void
notice
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
if
(
CollectionUtils
.
isEmpty
(
platElderList
)){
if
(
CollectionUtils
.
isEmpty
(
platElderList
))
{
log
.
info
(
"跌倒设备未关联长者,设备id:"
+
platDevice
.
getId
());
return
;
return
;
}
}
PlatRoom
platRoom
=
platAlarmCheckDTO
.
getPlatRoom
();
PlatRoom
platRoom
=
platAlarmCheckDTO
.
getPlatRoom
();
...
@@ -55,7 +73,9 @@ public class FallAlarm implements IAlarm{
...
@@ -55,7 +73,9 @@ public class FallAlarm implements IAlarm{
param
.
add
(
platRoom
.
getName
());
param
.
add
(
platRoom
.
getName
());
platAlarmCheckDTO
.
setParam
(
param
);
platAlarmCheckDTO
.
setParam
(
param
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
);
platAlarmRecordService
.
noticeDeviceAlarm
(
platAlarmCheckDTO
.
getPlatAlarmConfig
(),
platAlarmRecord
);
platAlarmRecord
.
setElderIds
(
platElder
.
getId
());
platAlarmRecord
.
setElderName
(
platElder
.
getName
());
platAlarmRecordService
.
noticeDeviceAlarm
(
platAlarmCheckDTO
.
getPlatAlarmConfig
(),
platAlarmRecord
);
}
}
}
}
}
}
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/HeartAlarm.java
View file @
50ba56ed
...
@@ -8,16 +8,17 @@ import com.makeit.entity.platform.alarm.PlatAlarmConfig;
...
@@ -8,16 +8,17 @@ import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.en
tity.platform.space.PlatRoo
m
;
import
com.makeit.en
ums.CommonEnu
m
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.redis.RedisConst
;
import
com.makeit.enums.redis.RedisConst
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.utils.AlarmRedisDTO
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
com.makeit.utils.redis.RedisUtil
;
import
com.makeit.utils.redis.RedisUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -25,25 +26,28 @@ import java.util.Date;
...
@@ -25,25 +26,28 @@ import java.util.Date;
import
java.util.List
;
import
java.util.List
;
@Component
@Component
@Slf4j
public
class
HeartAlarm
implements
IAlarm
{
public
class
HeartAlarm
implements
IAlarm
{
@Autowired
@Autowired
private
PlatAlarmRecordService
platAlarmRecordService
;
private
PlatAlarmRecordService
platAlarmRecordService
;
private
PlatAlarmConfigEnum
.
AlarmTypeEnum
alarmTypeEnum
=
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
HEART
;
private
final
PlatAlarmConfigEnum
.
AlarmTypeEnum
alarmTypeEnum
=
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
HEART
;
@Override
@Override
public
boolean
support
(
String
alarmType
)
{
public
boolean
support
(
String
alarmType
)
{
return
StringUtils
.
equals
(
alarmType
,
alarmTypeEnum
.
getValue
());
return
StringUtils
.
equals
(
alarmType
,
alarmTypeEnum
.
getValue
());
}
}
@Override
@Override
public
void
checkConfig
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
public
void
checkConfig
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
//todo 获取老人健康的阈值
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
String
ruleConfigStr
=
config
.
getRuleConfig
();
String
ruleConfigStr
=
config
.
getRuleConfig
();
JSONObject
properties
=
platAlarmCheckDTO
.
getProperties
();
JSONObject
properties
=
platAlarmCheckDTO
.
getProperties
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
String
deviceId
=
platDevice
.
getOriDeviceId
();
String
deviceId
=
platDevice
.
getOriDeviceId
();
if
(
StringUtils
.
isBlank
(
ruleConfigStr
))
{
if
(
StringUtils
.
isBlank
(
ruleConfigStr
))
{
log
.
info
(
"心率告警配置未配置,告警配置id:"
+
config
.
getId
());
return
;
return
;
}
}
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
...
@@ -53,47 +57,73 @@ public class HeartAlarm implements IAlarm {
...
@@ -53,47 +57,73 @@ public class HeartAlarm implements IAlarm {
Integer
start
=
ruleConfig
.
getHeartRateStart
();
Integer
start
=
ruleConfig
.
getHeartRateStart
();
Integer
end
=
ruleConfig
.
getHeartRateEnd
();
Integer
end
=
ruleConfig
.
getHeartRateEnd
();
Integer
duration
=
ruleConfig
.
getDuration
();
Integer
duration
=
ruleConfig
.
getDuration
();
long
endLong
=
new
Date
().
getTime
();
Date
now
=
new
Date
();
long
endLong
=
now
.
getTime
();
//计数
//计数
Long
startLong
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
);
AlarmRedisDTO
alarmRedisDTO
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_HR_ID
+
deviceId
);
if
(
StringUtils
.
equals
(
personState
,
"0"
)||
startLong
==
null
)
{
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
endLong
/
1000
);
if
(
StringUtils
.
equals
(
personState
,
CommonEnum
.
NO
.
getValue
()))
{
RedisUtil
.
delete
(
RedisConst
.
ALARM_DEVICE_HR_ID
+
deviceId
);
return
;
return
;
}
}
long
count
=
endLong
-
startLong
;
if
(
hr
>
end
||
hr
<
start
)
{
if
(
count
>=
duration
)
{
if
((
hr
>
end
||
hr
<
start
))
{
if
(
hr
>
end
){
if
(
alarmRedisDTO
==
null
){
platAlarmCheckDTO
.
setRemark
(
"心率过速"
);
alarmRedisDTO
=
new
AlarmRedisDTO
();
}
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
NO
.
getValue
());
if
(
hr
<
start
){
alarmRedisDTO
.
setStart
(
now
);
platAlarmCheckDTO
.
setRemark
(
"心率过缓"
);
alarmRedisDTO
.
setStartLong
(
endLong
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_HR_ID
+
deviceId
,
alarmRedisDTO
);
log
.
info
(
"发现长者心率异常,设备id:"
+
deviceId
);
return
;
}
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
long
count
=
endLong
-
startLong
;
if
(
count
/
1000
>=
duration
)
{
if
(
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
YES
.
getValue
()))
{
log
.
info
(
"心率已告警,设备id:"
+
platDevice
.
getId
());
return
;
}
}
fillRemark
(
platAlarmCheckDTO
,
hr
,
start
,
end
);
notice
(
platAlarmCheckDTO
);
notice
(
platAlarmCheckDTO
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
endLong
/
1000
);
alarmRedisDTO
.
setStartLong
(
endLong
);
alarmRedisDTO
.
setStart
(
now
);
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
YES
.
getValue
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_HR_ID
+
deviceId
,
alarmRedisDTO
);
}
}
}
else
{
}
else
{
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
endLong
/
1000
);
RedisUtil
.
delete
(
RedisConst
.
ALARM_DEVICE_HR_ID
+
deviceId
);
}
}
private
void
fillRemark
(
PlatAlarmCheckDTO
platAlarmCheckDTO
,
int
hr
,
Integer
start
,
Integer
end
)
{
if
(
hr
>
end
)
{
platAlarmCheckDTO
.
setRemark
(
"心率过快"
);
}
if
(
hr
<
start
)
{
platAlarmCheckDTO
.
setRemark
(
"心率过缓"
);
}
}
}
}
@Override
@Override
@Async
public
void
notice
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
public
void
notice
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
if
(
CollectionUtils
.
isEmpty
(
platElderList
)){
if
(
CollectionUtils
.
isEmpty
(
platElderList
))
{
log
.
info
(
"跌倒设备未关联长者,设备id:"
+
platAlarmCheckDTO
.
getPlatDevice
().
getId
());
return
;
return
;
}
}
PlatRoom
platRoom
=
platAlarmCheckDTO
.
getPlatRoom
();
for
(
PlatElder
platElder
:
platElderList
)
{
for
(
PlatElder
platElder
:
platElderList
)
{
List
<
String
>
param
=
new
ArrayList
<>();
List
<
String
>
param
=
new
ArrayList
<>();
param
.
add
(
platElder
.
getName
());
param
.
add
(
platElder
.
getName
());
param
.
add
(
platAlarmCheckDTO
.
getRemark
());
param
.
add
(
platAlarmCheckDTO
.
getRemark
());
platAlarmCheckDTO
.
setParam
(
param
);
platAlarmCheckDTO
.
setParam
(
param
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
);
platAlarmRecordService
.
noticeDeviceAlarm
(
platAlarmCheckDTO
.
getPlatAlarmConfig
(),
platAlarmRecord
);
platAlarmRecord
.
setElderIds
(
platElder
.
getId
());
platAlarmRecord
.
setElderName
(
platElder
.
getName
());
platAlarmRecordService
.
noticeDeviceAlarm
(
platAlarmCheckDTO
.
getPlatAlarmConfig
(),
platAlarmRecord
);
}
}
}
}
}
}
server-service/src/main/java/com/makeit/service/platform/alarm/impl/PlatAlarmRecordServiceImpl.java
View file @
50ba56ed
...
@@ -15,9 +15,11 @@ import com.makeit.entity.platform.auth.PlatUser;
...
@@ -15,9 +15,11 @@ import com.makeit.entity.platform.auth.PlatUser;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElderChildrenInfo
;
import
com.makeit.entity.platform.elder.PlatElderChildrenInfo
;
import
com.makeit.entity.platform.space.PlatRegionSetting
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.entity.platform.space.PlatRoomBedDevice
;
import
com.makeit.entity.platform.space.PlatRoomBedDevice
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.platform.device.PlatDeviceEnum
;
import
com.makeit.exception.BusinessException
;
import
com.makeit.exception.BusinessException
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
import
com.makeit.mapper.platform.alarm.PlatAlarmRecordMapper
;
import
com.makeit.mapper.platform.alarm.PlatAlarmRecordMapper
;
...
@@ -26,6 +28,7 @@ import com.makeit.service.platform.alarm.PlatAlarmRecordService;
...
@@ -26,6 +28,7 @@ import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import
com.makeit.service.platform.auth.PlatUserService
;
import
com.makeit.service.platform.auth.PlatUserService
;
import
com.makeit.service.platform.elder.PlatElderChildrenInfoService
;
import
com.makeit.service.platform.elder.PlatElderChildrenInfoService
;
import
com.makeit.service.platform.elder.PlatElderService
;
import
com.makeit.service.platform.elder.PlatElderService
;
import
com.makeit.service.platform.space.PlatRegionSettingService
;
import
com.makeit.service.platform.space.PlatRoomBedDeviceService
;
import
com.makeit.service.platform.space.PlatRoomBedDeviceService
;
import
com.makeit.service.platform.space.PlatRoomService
;
import
com.makeit.service.platform.space.PlatRoomService
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
...
@@ -39,6 +42,7 @@ import com.makeit.utils.user.common.CommonUserVO;
...
@@ -39,6 +42,7 @@ import com.makeit.utils.user.common.CommonUserVO;
import
com.makeit.utils.user.wechat.WechatUserInfo
;
import
com.makeit.utils.user.wechat.WechatUserInfo
;
import
com.makeit.utils.user.wechat.WechatUserUtil
;
import
com.makeit.utils.user.wechat.WechatUserUtil
;
import
com.makeit.vo.platform.alarm.PlatAlarmRecordVO
;
import
com.makeit.vo.platform.alarm.PlatAlarmRecordVO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -62,6 +66,7 @@ import java.util.stream.Collectors;
...
@@ -62,6 +66,7 @@ import java.util.stream.Collectors;
* @createDate 2023-09-06 14:26:05
* @createDate 2023-09-06 14:26:05
*/
*/
@Service
@Service
@Slf4j
public
class
PlatAlarmRecordServiceImpl
extends
ServiceImpl
<
PlatAlarmRecordMapper
,
PlatAlarmRecord
>
public
class
PlatAlarmRecordServiceImpl
extends
ServiceImpl
<
PlatAlarmRecordMapper
,
PlatAlarmRecord
>
implements
PlatAlarmRecordService
{
implements
PlatAlarmRecordService
{
@Autowired
@Autowired
...
@@ -82,6 +87,8 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -82,6 +87,8 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
private
PlatElderService
platElderService
;
private
PlatElderService
platElderService
;
@Autowired
@Autowired
private
PlatRoomService
platRoomService
;
private
PlatRoomService
platRoomService
;
@Autowired
private
PlatRegionSettingService
platRegionSettingService
;
@Override
@Override
...
@@ -182,8 +189,12 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -182,8 +189,12 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
@TenantIdIgnore
@TenantIdIgnore
public
void
noticeDeviceAlarm
(
PlatAlarmConfig
alarmConfig
,
PlatAlarmRecord
alarmRecord
)
{
public
void
noticeDeviceAlarm
(
PlatAlarmConfig
alarmConfig
,
PlatAlarmRecord
alarmRecord
)
{
//判断是否需要同时通知家属
//判断是否需要同时通知家属
if
(
StringUtils
.
equals
(
alarmConfig
.
getNotifyRelation
(),
"1"
))
{
try
{
noticeChildren
(
alarmConfig
,
alarmRecord
);
if
(
StringUtils
.
equals
(
alarmConfig
.
getNotifyRelation
(),
"1"
))
{
noticeChildren
(
alarmConfig
,
alarmRecord
);
}
}
catch
(
Exception
e
){
log
.
error
(
"通知家属异常"
,
e
);
}
}
//通知内部人员
//通知内部人员
noticeUser
(
alarmConfig
,
alarmRecord
);
noticeUser
(
alarmConfig
,
alarmRecord
);
...
@@ -205,16 +216,13 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -205,16 +216,13 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
String
elderIds
=
alarmRecord
.
getElderIds
();
String
elderIds
=
alarmRecord
.
getElderIds
();
List
<
PlatElderChildrenInfo
>
allChildInfoList
=
new
ArrayList
<>();
List
<
PlatElderChildrenInfo
>
allChildInfoList
=
new
ArrayList
<>();
String
[]
elderIdSplit
=
elderIds
.
split
(
","
);
//通知每个长者的子女
//通知每个长者的子女
for
(
String
elderId
:
elderIdSplit
)
{
LambdaQueryWrapper
<
PlatElderChildrenInfo
>
childrenInfoLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
PlatElderChildrenInfo
>
childrenInfoLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
childrenInfoLambdaQueryWrapper
.
eq
(
BaseBusEntity:
:
getTenantId
,
alarmConfig
.
getTenantId
());
childrenInfoLambdaQueryWrapper
.
eq
(
BaseBusEntity:
:
getTenantId
,
alarmConfig
.
getTenantId
());
childrenInfoLambdaQueryWrapper
.
and
(
qw
->
qw
.
apply
(
"find_in_set('"
+
elderId
+
"',elder_id)"
));
childrenInfoLambdaQueryWrapper
.
and
(
qw
->
qw
.
apply
(
"find_in_set('"
+
elderId
s
+
"',elder_id)"
));
List
<
PlatElderChildrenInfo
>
childrenInfoList
=
platElderChildrenInfoService
.
list
(
childrenInfoLambdaQueryWrapper
);
List
<
PlatElderChildrenInfo
>
childrenInfoList
=
platElderChildrenInfoService
.
list
(
childrenInfoLambdaQueryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
childrenInfoList
))
{
if
(
CollectionUtils
.
isEmpty
(
childrenInfoList
))
{
log
.
debug
(
"子女端账号未绑定长者"
);
throw
new
BusinessException
(
"子女端账号未绑定长者,长者id:"
+
elderIds
);
continue
;
}
}
allChildInfoList
.
addAll
(
childrenInfoList
);
allChildInfoList
.
addAll
(
childrenInfoList
);
Set
<
String
>
phoneSet
=
childrenInfoList
.
stream
().
map
(
PlatElderChildrenInfo:
:
getPhone
).
collect
(
Collectors
.
toSet
());
Set
<
String
>
phoneSet
=
childrenInfoList
.
stream
().
map
(
PlatElderChildrenInfo:
:
getPhone
).
collect
(
Collectors
.
toSet
());
...
@@ -222,14 +230,15 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -222,14 +230,15 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
List
<
SendTypeEnum
>
notifyChannelList
=
Arrays
.
asList
(
SendTypeEnum
.
SMS
,
SendTypeEnum
.
VOICE_SMS
,
SendTypeEnum
.
CHILD_WECHAT
);
List
<
SendTypeEnum
>
notifyChannelList
=
Arrays
.
asList
(
SendTypeEnum
.
SMS
,
SendTypeEnum
.
VOICE_SMS
,
SendTypeEnum
.
CHILD_WECHAT
);
//发送消息
//发送消息
noticeByChannel
(
alarmConfig
,
alarmRecord
,
phoneSet
,
notifyChannelList
);
noticeByChannel
(
alarmConfig
,
alarmRecord
,
phoneSet
,
null
,
notifyChannelList
);
}
String
childIdJoin
=
allChildInfoList
.
stream
().
map
(
BaseEntity:
:
getId
).
collect
(
Collectors
.
joining
(
","
));
String
childIdJoin
=
allChildInfoList
.
stream
().
map
(
BaseEntity:
:
getId
).
collect
(
Collectors
.
joining
(
","
));
//通知的子女
//通知的子女
alarmConfig
.
setNotifyRelation
(
childIdJoin
);
alarmConfig
.
setNotifyRelation
(
childIdJoin
);
alarmRecord
.
setNoticeStatus
(
CommonEnum
.
YES
.
getValue
());
alarmRecord
.
setNoticeStatus
(
CommonEnum
.
YES
.
getValue
());
alarmRecord
.
setTenantId
(
alarmConfig
.
getTenantId
());
alarmRecord
.
setTenantId
(
alarmConfig
.
getTenantId
());
saveOrUpdate
(
alarmRecord
);
saveOrUpdate
(
alarmRecord
);
}
}
/**
/**
...
@@ -264,13 +273,13 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -264,13 +273,13 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
}
}
platUserList
.
removeIf
(
Objects:
:
isNull
);
platUserList
.
removeIf
(
Objects:
:
isNull
);
if
(
CollectionUtils
.
isEmpty
(
platUserList
))
{
if
(
CollectionUtils
.
isEmpty
(
platUserList
))
{
log
.
debug
(
"通知工作人员时,找不到人员数据;"
+
"orgId:"
+
alarmConfig
.
getOrgId
()
+
",tenantId:"
+
alarmConfig
.
getTenantId
()
+
"alarmConfigId:"
+
alarmConfig
.
getId
());
throw
new
BusinessException
(
"通知工作人员时,找不到人员数据;"
+
"orgId:"
+
alarmConfig
.
getOrgId
()
+
",tenantId:"
+
alarmConfig
.
getTenantId
()
+
"alarmConfigId:"
+
alarmConfig
.
getId
());
return
;
}
}
List
<
SendTypeEnum
>
notifyChannelList
=
Arrays
.
asList
(
SendTypeEnum
.
SMS
,
SendTypeEnum
.
VOICE_SMS
,
SendTypeEnum
.
MAIL
);
List
<
SendTypeEnum
>
notifyChannelList
=
Arrays
.
asList
(
SendTypeEnum
.
SMS
,
SendTypeEnum
.
VOICE_SMS
,
SendTypeEnum
.
MAIL
);
Set
<
String
>
phoneSet
=
platUserList
.
stream
().
map
(
PlatUser:
:
getMobile
).
collect
(
Collectors
.
toSet
());
Set
<
String
>
phoneSet
=
platUserList
.
stream
().
map
(
PlatUser:
:
getMobile
).
collect
(
Collectors
.
toSet
());
Set
<
String
>
emailSet
=
platUserList
.
stream
().
map
(
PlatUser:
:
getEmail
).
collect
(
Collectors
.
toSet
());
//发送消息
//发送消息
noticeByChannel
(
alarmConfig
,
alarmRecord
,
phoneSet
,
notifyChannelList
);
noticeByChannel
(
alarmConfig
,
alarmRecord
,
phoneSet
,
emailSet
,
notifyChannelList
);
String
userIdJoin
=
platUserList
.
stream
().
map
(
PlatUser:
:
getId
).
collect
(
Collectors
.
joining
(
","
));
String
userIdJoin
=
platUserList
.
stream
().
map
(
PlatUser:
:
getId
).
collect
(
Collectors
.
joining
(
","
));
alarmRecord
.
setNotifyUser
(
userIdJoin
);
alarmRecord
.
setNotifyUser
(
userIdJoin
);
...
@@ -287,7 +296,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -287,7 +296,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
* @param phoneSet 工作人员手机号
* @param phoneSet 工作人员手机号
* @param notifyChannelList 通知渠道
* @param notifyChannelList 通知渠道
*/
*/
private
void
noticeByChannel
(
PlatAlarmConfig
alarmConfig
,
PlatAlarmRecord
alarmRecord
,
Set
<
String
>
phoneSet
,
List
<
SendTypeEnum
>
notifyChannelList
)
{
private
void
noticeByChannel
(
PlatAlarmConfig
alarmConfig
,
PlatAlarmRecord
alarmRecord
,
Set
<
String
>
phoneSet
,
Set
<
String
>
emailSet
,
List
<
SendTypeEnum
>
notifyChannelList
)
{
String
notifyChannel
=
alarmConfig
.
getNotifyChannel
();
String
notifyChannel
=
alarmConfig
.
getNotifyChannel
();
String
[]
split
=
notifyChannel
.
split
(
","
);
String
[]
split
=
notifyChannel
.
split
(
","
);
for
(
String
sendType
:
split
)
{
for
(
String
sendType
:
split
)
{
...
@@ -297,7 +306,10 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -297,7 +306,10 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
MsgSendDTO
msgSendDTO
=
new
MsgSendDTO
();
MsgSendDTO
msgSendDTO
=
new
MsgSendDTO
();
msgSendDTO
.
setSendTypeEnum
(
sendTypeEnum
);
msgSendDTO
.
setSendTypeEnum
(
sendTypeEnum
);
msgSendDTO
.
setReceiverList
(
phoneSet
);
msgSendDTO
.
setReceiverList
(
phoneSet
);
msgSendDTO
.
setEmailSet
(
emailSet
);
msgSendDTO
.
setOriContent
(
alarmRecord
.
getContent
());
msgSendDTO
.
setOriContent
(
alarmRecord
.
getContent
());
msgSendDTO
.
setSubject
(
alarmRecord
.
getContent
());
msgSendDTO
.
setParam
(
alarmRecord
.
getElderName
());
//todo 小程序消息
//todo 小程序消息
msgUtil
.
send
(
msgSendDTO
);
msgUtil
.
send
(
msgSendDTO
);
}
}
...
@@ -331,36 +343,50 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -331,36 +343,50 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
@Override
@Override
@TenantIdIgnore
public
void
getElderListByDeviceId
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
public
void
getElderListByDeviceId
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
String
tenantId
=
platDevice
.
getTenantId
();
LambdaQueryWrapper
<
PlatRoomBedDevice
>
roomBedDeviceLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
PlatRoomBedDevice
>
roomBedDeviceLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
roomBedDeviceLambdaQueryWrapper
.
eq
(
PlatRoomBedDevice:
:
getDeviceId
,
platDevice
.
getId
());
roomBedDeviceLambdaQueryWrapper
.
eq
(
PlatRoomBedDevice:
:
getDeviceId
,
platDevice
.
getId
())
.
eq
(
BaseBusEntity:
:
getTenantId
,
tenantId
)
;
PlatRoomBedDevice
platRoomBedDevice
=
platRoomBedDeviceService
.
getOne
(
roomBedDeviceLambdaQueryWrapper
,
false
);
PlatRoomBedDevice
platRoomBedDevice
=
platRoomBedDeviceService
.
getOne
(
roomBedDeviceLambdaQueryWrapper
,
false
);
if
(
platRoomBedDevice
==
null
){
if
(
platRoomBedDevice
==
null
){
throw
new
BusinessException
(
"设备没绑定房间:"
+
platDevice
.
getId
());
throw
new
BusinessException
(
"设备没绑定房间:"
+
platDevice
.
getId
());
}
}
PlatRoom
platRoom
=
platRoomService
.
getById
(
platRoomBedDevice
.
getRoomId
());
platAlarmCheckDTO
.
setPlatRoom
(
platRoom
);
if
(
StringUtils
.
equals
(
platDevice
.
getCategory
(),
PlatDeviceEnum
.
CategoryEnum
.
SPACE
.
getValue
()))
{
PlatRoom
platRoom
=
platRoomService
.
getById
(
platRoomBedDevice
.
getRoomId
());
platAlarmCheckDTO
.
setPlatRoom
(
platRoom
);
LambdaQueryWrapper
<
PlatRegionSetting
>
platRegionSettingLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
platRegionSettingLambdaQueryWrapper
.
eq
(
PlatRegionSetting:
:
getRoomId
,
platRoom
.
getId
())
.
eq
(
PlatRegionSetting:
:
getDeviceId
,
platDevice
.
getId
())
.
eq
(
BaseBusEntity:
:
getTenantId
,
tenantId
)
;
//区域设置
PlatRegionSetting
platRegionSetting
=
platRegionSettingService
.
getOne
(
platRegionSettingLambdaQueryWrapper
,
false
);
platAlarmCheckDTO
.
setPlatRegionSetting
(
platRegionSetting
);
}
String
bedId
=
platRoomBedDevice
.
getBedId
();
String
bedId
=
platRoomBedDevice
.
getBedId
();
if
(
StringUtils
.
isNotBlank
(
bedId
))
{
if
(
StringUtils
.
isNotBlank
(
bedId
))
{
LambdaQueryWrapper
<
PlatElder
>
elderLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
PlatElder
>
elderLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
elderLambdaQueryWrapper
.
eq
(
PlatElder:
:
getBedId
,
bedId
);
elderLambdaQueryWrapper
.
eq
(
PlatElder:
:
getBedId
,
bedId
)
.
eq
(
BaseBusEntity:
:
getTenantId
,
tenantId
)
;
List
<
PlatElder
>
list
=
platElderService
.
list
(
elderLambdaQueryWrapper
);
List
<
PlatElder
>
list
=
platElderService
.
list
(
elderLambdaQueryWrapper
);
platAlarmCheckDTO
.
setPlatElderList
(
list
);
platAlarmCheckDTO
.
setPlatElderList
(
list
);
if
(
CollectionUtils
.
isEmpty
(
list
)){
throw
new
BusinessException
(
"床位没人"
);
}
}
}
String
roomId
=
platRoomBedDevice
.
getRoomId
();
String
roomId
=
platRoomBedDevice
.
getRoomId
();
if
(
StringUtils
.
isNotBlank
(
roomId
))
{
if
(
StringUtils
.
isNotBlank
(
roomId
))
{
LambdaQueryWrapper
<
PlatElder
>
elderLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
PlatElder
>
elderLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
elderLambdaQueryWrapper
.
eq
(
PlatElder:
:
getRoomId
,
roomId
);
elderLambdaQueryWrapper
.
eq
(
PlatElder:
:
getRoomId
,
roomId
)
.
eq
(
BaseBusEntity:
:
getTenantId
,
tenantId
)
;
List
<
PlatElder
>
list
=
platElderService
.
list
(
elderLambdaQueryWrapper
);
List
<
PlatElder
>
list
=
platElderService
.
list
(
elderLambdaQueryWrapper
);
platAlarmCheckDTO
.
setPlatElderList
(
list
);
platAlarmCheckDTO
.
setPlatElderList
(
list
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
throw
new
BusinessException
(
"房间没人"
);
}
}
}
}
}
...
...
server-service/src/main/java/com/makeit/service/platform/alarm/impl/PlatDayDurationRecordServiceImpl.java
View file @
50ba56ed
...
@@ -2,11 +2,14 @@ package com.makeit.service.platform.alarm.impl;
...
@@ -2,11 +2,14 @@ package com.makeit.service.platform.alarm.impl;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.makeit.dto.platform.alarm.PlatDayDurationRecordDTO
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.mapper.platform.alarm.PlatDayDurationRecordMapper
;
import
com.makeit.mapper.platform.alarm.PlatDayDurationRecordMapper
;
import
com.makeit.service.platform.alarm.PlatDayDurationRecordService
;
import
com.makeit.service.platform.alarm.PlatDayDurationRecordService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
/**
* @author lixl
* @author lixl
* @description 针对表【plat_day_duration_record(每天停留时长记录)】的数据库操作Service实现
* @description 针对表【plat_day_duration_record(每天停留时长记录)】的数据库操作Service实现
...
@@ -16,4 +19,8 @@ import org.springframework.stereotype.Service;
...
@@ -16,4 +19,8 @@ import org.springframework.stereotype.Service;
public
class
PlatDayDurationRecordServiceImpl
extends
ServiceImpl
<
PlatDayDurationRecordMapper
,
PlatDayDurationRecord
>
public
class
PlatDayDurationRecordServiceImpl
extends
ServiceImpl
<
PlatDayDurationRecordMapper
,
PlatDayDurationRecord
>
implements
PlatDayDurationRecordService
{
implements
PlatDayDurationRecordService
{
@Override
public
List
<
PlatDayDurationRecord
>
getDayMaxDurationList
(
PlatDayDurationRecordDTO
param
){
return
baseMapper
.
getDayMaxDurationList
(
param
);
}
}
}
server-service/src/main/java/com/makeit/service/platform/dataScreen/impl/DataScreenServiceImpl.java
View file @
50ba56ed
...
@@ -7,6 +7,7 @@ import com.makeit.entity.platform.auth.PlatOrg;
...
@@ -7,6 +7,7 @@ import com.makeit.entity.platform.auth.PlatOrg;
import
com.makeit.entity.platform.auth.PlatUser
;
import
com.makeit.entity.platform.auth.PlatUser
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.space.PlatBed
;
import
com.makeit.entity.platform.space.PlatSpace
;
import
com.makeit.entity.platform.space.PlatSpace
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
...
@@ -25,12 +26,17 @@ import com.makeit.service.platform.space.PlatSpaceService;
...
@@ -25,12 +26,17 @@ import com.makeit.service.platform.space.PlatSpaceService;
import
com.makeit.utils.area.AreaUtil
;
import
com.makeit.utils.area.AreaUtil
;
import
com.makeit.utils.area.ChinaAreaVO
;
import
com.makeit.utils.area.ChinaAreaVO
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
import
com.makeit.utils.data.convert.StreamUtil
;
import
com.makeit.utils.sql.join.JoinUtil
;
import
com.makeit.vo.platform.dataScreen.*
;
import
com.makeit.vo.platform.dataScreen.*
;
import
com.makeit.vo.platform.elder.PlatElderListVO
;
import
jodd.util.StringUtil
;
import
jodd.util.StringUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -176,26 +182,46 @@ public class DataScreenServiceImpl implements DataScreenService {
...
@@ -176,26 +182,46 @@ public class DataScreenServiceImpl implements DataScreenService {
.
in
(
PlatAlarmRecord:
:
getOrgId
,
dto
.
getOrgIds
()));
.
in
(
PlatAlarmRecord:
:
getOrgId
,
dto
.
getOrgIds
()));
List
<
PlatElder
>
platElders
=
platElderService
.
list
();
List
<
PlatElder
>
platElders
=
platElderService
.
list
();
Map
<
String
,
String
>
elderNameMap
=
platElders
.
stream
().
collect
(
Collectors
.
toMap
(
PlatElder:
:
getId
,
PlatElder:
:
getName
));
Map
<
String
,
String
>
elderNameMap
=
platElders
.
stream
().
collect
(
Collectors
.
toMap
(
PlatElder:
:
getId
,
PlatElder:
:
getName
));
Map
<
String
,
PlatElderListVO
>
elderBedPathMap
=
mapElderBedPath
(
platElders
);
List
<
PlatAlarmStatisticsListVo
>
list
=
new
ArrayList
<>();
List
<
PlatAlarmStatisticsListVo
>
list
=
new
ArrayList
<>();
long
total
=
0
;
long
total
=
0
;
long
handledNumber
=
0
;
long
handledNumber
=
0
;
long
unhandledNumber
=
0
;
long
unhandledNumber
=
0
;
DateFormat
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
DateFormat
dft
=
new
SimpleDateFormat
(
"HH:mm:ss"
);
for
(
PlatAlarmRecord
record
:
alarmRecords
){
for
(
PlatAlarmRecord
record
:
alarmRecords
){
if
(
StringUtil
.
isNotEmpty
(
record
.
getElderIds
())){
if
(
StringUtil
.
isNotEmpty
(
record
.
getElderIds
())){
List
<
String
>
elderIds
=
Arrays
.
asList
(
record
.
getElderIds
().
split
(
","
));
List
<
String
>
elderIds
=
Arrays
.
asList
(
record
.
getElderIds
().
split
(
","
));
PlatAlarmStatisticsListVo
listVo
=
new
PlatAlarmStatisticsListVo
();
PlatAlarmStatisticsListVo
listVo
=
new
PlatAlarmStatisticsListVo
();
String
elderName
=
""
;
String
elderName
=
""
;
String
pathName
=
""
;
for
(
String
elderId
:
elderIds
){
for
(
String
elderId
:
elderIds
){
if
(
elderNameMap
.
get
(
elderId
)!=
null
){
if
(
elderNameMap
.
get
(
elderId
)!=
null
){
elderName
=
""
.
equals
(
elderName
)
?
elderNameMap
.
get
(
elderId
)
:
elderName
+
","
+
elderNameMap
.
get
(
elderId
);
elderName
=
""
.
equals
(
elderName
)
?
elderNameMap
.
get
(
elderId
)
:
elderName
+
","
+
elderNameMap
.
get
(
elderId
);
}
}
if
(
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
HEART
.
getValue
().
equals
(
record
.
getAlarmType
())
||
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
BREATHE
.
getValue
().
equals
(
record
.
getAlarmType
())
){
if
(
elderBedPathMap
.
get
(
elderId
)!=
null
){
pathName
=
elderBedPathMap
.
get
(
elderId
).
getSpacePathName
();
}
}
else
{
if
(
elderBedPathMap
.
get
(
elderId
)!=
null
){
pathName
=
""
.
equals
(
pathName
)
?
elderBedPathMap
.
get
(
elderId
).
getSpacePathName
()
:
pathName
+
","
+
elderBedPathMap
.
get
(
elderId
).
getRoomName
();
}
}
}
}
if
(
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
HEART
.
getValue
().
equals
(
record
.
getAlarmType
())
||
if
(
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
HEART
.
getValue
().
equals
(
record
.
getAlarmType
())
||
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
BREATHE
.
getValue
().
equals
(
record
.
getAlarmType
())
){
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
BREATHE
.
getValue
().
equals
(
record
.
getAlarmType
())
){
listVo
.
setStatus
(
record
.
getRemark
());
listVo
.
setStatus
(
record
.
getRemark
());
}
}
listVo
.
setPath
(
pathName
);
listVo
.
setElderName
(
elderName
);
listVo
.
setElderName
(
elderName
);
listVo
.
setType
(
record
.
getAlarmType
());
listVo
.
setType
(
record
.
getAlarmType
());
listVo
.
setAlarmDate
(
df
.
format
(
record
.
getAlarmDate
()));
listVo
.
setAlarmTime
(
dft
.
format
(
record
.
getAlarmDate
()));
total
++;
total
++;
if
(
PlatAlarmRecordEnum
.
AlarmRecordStatusEnum
.
HANDLED
.
getValue
().
equals
(
record
.
getStatus
())){
if
(
PlatAlarmRecordEnum
.
AlarmRecordStatusEnum
.
HANDLED
.
getValue
().
equals
(
record
.
getStatus
())){
handledNumber
++;
handledNumber
++;
...
@@ -213,6 +239,18 @@ public class DataScreenServiceImpl implements DataScreenService {
...
@@ -213,6 +239,18 @@ public class DataScreenServiceImpl implements DataScreenService {
return
vo
;
return
vo
;
}
}
private
Map
<
String
,
PlatElderListVO
>
mapElderBedPath
(
List
<
PlatElder
>
platElders
)
{
List
<
PlatElderListVO
>
list
=
BeanDtoVoUtils
.
listVo
(
platElders
,
PlatElderListVO
.
class
);
JoinUtil
.
joinSplit
(
list
,
platSpaceService
,
PlatElderListVO:
:
getSpacePath
,
PlatSpace:
:
getId
,
(
e
,
l
)
->
{
e
.
setSpacePathName
(
StreamUtil
.
join
(
l
,
Objects:
:
nonNull
,
PlatSpace:
:
getName
,
"-"
));
});
JoinUtil
.
join
(
list
,
platBedService
,
PlatElderListVO:
:
getBedId
,
PlatBed:
:
getId
,
(
e
,
l
)
->
{
e
.
setBedName
(
l
.
getName
());
});
Map
<
String
,
PlatElderListVO
>
map
=
list
.
stream
().
collect
(
Collectors
.
toMap
(
PlatElderListVO:
:
getBedId
,
Function
.
identity
()));
return
map
;
}
@Override
@Override
public
PlatBaseInfoStatisticsVO
baseInfoStatistics
(
PlatDataScreenQueryDTO
dto
)
{
public
PlatBaseInfoStatisticsVO
baseInfoStatistics
(
PlatDataScreenQueryDTO
dto
)
{
PlatBaseInfoStatisticsVO
vo
=
new
PlatBaseInfoStatisticsVO
();
PlatBaseInfoStatisticsVO
vo
=
new
PlatBaseInfoStatisticsVO
();
...
...
server-service/src/main/java/com/makeit/service/platform/device/impl/PlatDeviceServiceImpl.java
View file @
50ba56ed
...
@@ -214,7 +214,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
...
@@ -214,7 +214,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
BeanUtils
.
copyProperties
(
dto
,
db
);
BeanUtils
.
copyProperties
(
dto
,
db
);
db
.
setId
(
id
);
db
.
setId
(
id
);
BeanUtils
.
copyProperties
(
dto
,
other
);
BeanUtils
.
copyProperties
(
dto
,
other
,
BaseEntity
.
Fields
.
id
);
other
.
setDeviceId
(
id
);
other
.
setDeviceId
(
id
);
updateById
(
db
);
updateById
(
db
);
...
...
server-service/src/main/java/com/makeit/service/platform/space/PlatRoomDynamicService.java
View file @
50ba56ed
...
@@ -5,6 +5,7 @@ import com.makeit.dto.platform.space.PlatBedPanoramaDTO;
...
@@ -5,6 +5,7 @@ import com.makeit.dto.platform.space.PlatBedPanoramaDTO;
import
com.makeit.dto.platform.space.PlatRoomPanoramaDTO
;
import
com.makeit.dto.platform.space.PlatRoomPanoramaDTO
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.vo.platform.space.PlatBedPanoramaVO
;
import
com.makeit.vo.platform.space.PlatBedPanoramaVO
;
import
com.makeit.vo.platform.space.PlatDeviceElderVO
;
import
com.makeit.vo.platform.space.PlatRoomPanoramaVO
;
import
com.makeit.vo.platform.space.PlatRoomPanoramaVO
;
import
com.makeit.vo.platform.space.PlatSpaceAndRoomVO
;
import
com.makeit.vo.platform.space.PlatSpaceAndRoomVO
;
...
@@ -25,5 +26,5 @@ public interface PlatRoomDynamicService {
...
@@ -25,5 +26,5 @@ public interface PlatRoomDynamicService {
List
<
PlatSpaceAndRoomVO
>
bedPanoramaTree
();
List
<
PlatSpaceAndRoomVO
>
bedPanoramaTree
();
List
<
Plat
Elder
>
elderList
(
PlatElderQueryDTO
dto
);
List
<
Plat
DeviceElderVO
>
elderList
(
PlatElderQueryDTO
dto
);
}
}
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomDynamicServiceImpl.java
View file @
50ba56ed
...
@@ -7,26 +7,22 @@ import com.makeit.dto.platform.space.PlatRoomPanoramaDTO;
...
@@ -7,26 +7,22 @@ import com.makeit.dto.platform.space.PlatRoomPanoramaDTO;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.space.PlatBed
;
import
com.makeit.entity.platform.space.PlatBed
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.entity.platform.space.PlatRoomBedDevice
;
import
com.makeit.entity.platform.space.PlatSpace
;
import
com.makeit.entity.platform.space.PlatSpace
;
import
com.makeit.enums.platform.space.PlatBedPanoramaSpaceType
;
import
com.makeit.enums.platform.space.PlatBedPanoramaSpaceType
;
import
com.makeit.enums.platform.space.PlatRoomStatusEnum
;
import
com.makeit.enums.platform.space.PlatRoomStatusEnum
;
import
com.makeit.service.platform.elder.PlatElderService
;
import
com.makeit.service.platform.elder.PlatElderService
;
import
com.makeit.service.platform.space.PlatBedService
;
import
com.makeit.service.platform.space.*
;
import
com.makeit.service.platform.space.PlatRoomDynamicService
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
import
com.makeit.service.platform.space.PlatRoomService
;
import
com.makeit.utils.data.convert.StreamUtil
;
import
com.makeit.service.platform.space.PlatSpaceService
;
import
com.makeit.utils.sql.join.JoinUtil
;
import
com.makeit.vo.platform.space.PlatBedPanoramaVO
;
import
com.makeit.vo.platform.elder.PlatElderListVO
;
import
com.makeit.vo.platform.space.PlatRoomPanoramaVO
;
import
com.makeit.vo.platform.space.*
;
import
com.makeit.vo.platform.space.PlatRoomVO
;
import
com.makeit.vo.platform.space.PlatSpaceAndRoomVO
;
import
jodd.util.StringUtil
;
import
jodd.util.StringUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -45,6 +41,8 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
...
@@ -45,6 +41,8 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
private
PlatBedService
platBedService
;
private
PlatBedService
platBedService
;
@Autowired
@Autowired
private
PlatElderService
platElderService
;
private
PlatElderService
platElderService
;
@Autowired
private
PlatRoomBedDeviceService
platRoomBedDeviceService
;
@Override
@Override
...
@@ -107,19 +105,11 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
...
@@ -107,19 +105,11 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
}
else
if
(
PlatBedPanoramaSpaceType
.
BedPanoramaSpaceType
.
ROOM
.
getValue
().
equals
(
dto
.
getType
())){
}
else
if
(
PlatBedPanoramaSpaceType
.
BedPanoramaSpaceType
.
ROOM
.
getValue
().
equals
(
dto
.
getType
())){
list
=
platBedService
.
selectByRoomIdAndStatus
(
dto
);
list
=
platBedService
.
selectByRoomIdAndStatus
(
dto
);
}
}
List
<
PlatSpace
>
spaces
=
platSpaceService
.
list
();
JoinUtil
.
joinSplit
(
list
,
platSpaceService
,
PlatBedPanoramaVO:
:
getSpacePath
,
PlatSpace:
:
getId
,
(
e
,
l
)
->
{
Map
<
String
,
String
>
spaceNameMap
=
spaces
.
stream
().
collect
(
Collectors
.
toMap
(
PlatSpace:
:
getId
,
PlatSpace:
:
getName
));
e
.
setSpacePathName
(
StreamUtil
.
join
(
l
,
Objects:
:
nonNull
,
PlatSpace:
:
getName
,
"-"
));
});
list
.
forEach
(
vo
->{
list
.
forEach
(
vo
->{
String
spacePathName
=
""
;
String
spacePathName
=
vo
.
getSpacePathName
();
if
(
StringUtil
.
isNotEmpty
(
vo
.
getSpacePath
())){
List
<
String
>
spaceIds
=
Arrays
.
asList
(
vo
.
getSpacePath
().
split
(
","
));
for
(
String
spaceId
:
spaceIds
){
if
(
spaceNameMap
.
get
(
spaceId
)!=
null
&&
StringUtil
.
isNotEmpty
(
spaceNameMap
.
get
(
spaceId
))){
spacePathName
=
""
.
equals
(
spacePathName
)
?
spaceNameMap
.
get
(
spaceId
)
:
spacePathName
+
"-"
+
spaceNameMap
.
get
(
spaceId
);
}
}
}
if
(
StringUtil
.
isNotEmpty
(
vo
.
getRoomName
())){
if
(
StringUtil
.
isNotEmpty
(
vo
.
getRoomName
())){
spacePathName
=
""
.
equals
(
spacePathName
)
?
vo
.
getRoomName
()
:
spacePathName
+
"-"
+
vo
.
getRoomName
();
spacePathName
=
""
.
equals
(
spacePathName
)
?
vo
.
getRoomName
()
:
spacePathName
+
"-"
+
vo
.
getRoomName
();
}
}
...
@@ -171,10 +161,23 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
...
@@ -171,10 +161,23 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
}
}
@Override
@Override
public
List
<
Plat
Elder
>
elderList
(
PlatElderQueryDTO
dto
)
{
public
List
<
Plat
DeviceElderVO
>
elderList
(
PlatElderQueryDTO
dto
)
{
List
<
PlatElder
>
list
=
platElderService
.
list
(
new
QueryWrapper
<
PlatElder
>().
lambda
()
List
<
PlatElder
>
list
=
platElderService
.
list
(
new
QueryWrapper
<
PlatElder
>().
lambda
()
.
eq
(
PlatElder:
:
getRoomId
,
dto
.
getRoomId
()));
.
eq
(
PlatElder:
:
getRoomId
,
dto
.
getRoomId
()));
return
list
;
List
<
String
>
bedIds
=
list
.
stream
().
map
(
PlatElder:
:
getBedId
).
collect
(
Collectors
.
toList
());
List
<
PlatDeviceElderVO
>
voList
=
BeanDtoVoUtils
.
listVo
(
list
,
PlatDeviceElderVO
.
class
);
if
(
bedIds
.
isEmpty
()){
List
<
PlatRoomBedDevice
>
roomBedDevices
=
platRoomBedDeviceService
.
list
(
new
QueryWrapper
<
PlatRoomBedDevice
>()
.
lambda
()
.
in
(
PlatRoomBedDevice:
:
getBedId
,
bedIds
));
Map
<
String
,
String
>
map
=
roomBedDevices
.
stream
().
collect
(
Collectors
.
toMap
(
PlatRoomBedDevice:
:
getBedId
,
PlatRoomBedDevice:
:
getDeviceId
));
voList
.
forEach
(
t
->{
if
(
map
.
containsKey
(
t
.
getBedId
())){
t
.
setDeviceId
(
map
.
get
(
t
.
getBedId
()));
}
});
}
return
voList
;
}
}
private
PlatSpaceAndRoomVO
child
(
PlatSpaceAndRoomVO
vo
,
Map
<
String
,
List
<
PlatSpaceAndRoomVO
>>
map
){
private
PlatSpaceAndRoomVO
child
(
PlatSpaceAndRoomVO
vo
,
Map
<
String
,
List
<
PlatSpaceAndRoomVO
>>
map
){
...
...
server-service/src/main/java/com/makeit/service/platform/workstation/impl/WorkStationServiceImpl.java
View file @
50ba56ed
...
@@ -20,7 +20,10 @@ import com.makeit.service.platform.space.PlatBedService;
...
@@ -20,7 +20,10 @@ import com.makeit.service.platform.space.PlatBedService;
import
com.makeit.service.platform.space.PlatRoomService
;
import
com.makeit.service.platform.space.PlatRoomService
;
import
com.makeit.service.platform.space.PlatSpaceService
;
import
com.makeit.service.platform.space.PlatSpaceService
;
import
com.makeit.service.platform.workstation.WorkStationService
;
import
com.makeit.service.platform.workstation.WorkStationService
;
import
com.makeit.utils.data.convert.StreamUtil
;
import
com.makeit.utils.sql.join.JoinUtil
;
import
com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO
;
import
com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO
;
import
com.makeit.vo.platform.space.PlatBedPanoramaVO
;
import
com.makeit.vo.platform.workstation.*
;
import
com.makeit.vo.platform.workstation.*
;
import
jodd.util.StringUtil
;
import
jodd.util.StringUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -135,7 +138,6 @@ public class WorkStationServiceImpl implements WorkStationService {
...
@@ -135,7 +138,6 @@ public class WorkStationServiceImpl implements WorkStationService {
//获取父级的所有子级空间
//获取父级的所有子级空间
spaces
=
platSpaceService
.
listChild
(
dto
.
getSpaceIds
());
spaces
=
platSpaceService
.
listChild
(
dto
.
getSpaceIds
());
}
}
Map
<
String
,
String
>
platSpaceMap
=
spaces
.
stream
().
collect
(
Collectors
.
toMap
(
PlatSpace:
:
getId
,
PlatSpace:
:
getName
));
List
<
String
>
elderIdList
=
new
ArrayList
<>();
List
<
String
>
elderIdList
=
new
ArrayList
<>();
List
<
PlatAlarmRecord
>
alarmRecords
=
platAlarmRecordService
.
list
(
List
<
PlatAlarmRecord
>
alarmRecords
=
platAlarmRecordService
.
list
(
...
@@ -165,17 +167,14 @@ public class WorkStationServiceImpl implements WorkStationService {
...
@@ -165,17 +167,14 @@ public class WorkStationServiceImpl implements WorkStationService {
List
<
WorkStationInstitutionBedVO
>
bedVos
=
platBedService
.
selectByRoomIds
(
roomIds
);
List
<
WorkStationInstitutionBedVO
>
bedVos
=
platBedService
.
selectByRoomIds
(
roomIds
);
Map
<
String
,
List
<
WorkStationInstitutionBedVO
>>
bedMap
=
bedVos
.
stream
().
collect
(
Collectors
.
groupingBy
(
WorkStationInstitutionBedVO:
:
getRoomId
));
Map
<
String
,
List
<
WorkStationInstitutionBedVO
>>
bedMap
=
bedVos
.
stream
().
collect
(
Collectors
.
groupingBy
(
WorkStationInstitutionBedVO:
:
getRoomId
));
JoinUtil
.
joinSplit
(
roomVOList
,
platSpaceService
,
WorkStationInstitutionRoomVO:
:
getSpacePath
,
PlatSpace:
:
getId
,
(
e
,
l
)
->
{
e
.
setPathName
(
StreamUtil
.
join
(
l
,
Objects:
:
nonNull
,
PlatSpace:
:
getName
,
"-"
));
});
for
(
WorkStationInstitutionRoomVO
roomVo
:
roomVOList
)
{
for
(
WorkStationInstitutionRoomVO
roomVo
:
roomVOList
)
{
WorkStationInstitutionRoomVO
vo
=
new
WorkStationInstitutionRoomVO
();
WorkStationInstitutionRoomVO
vo
=
new
WorkStationInstitutionRoomVO
();
String
pathName
=
""
;
for
(
String
spaceId
:
Arrays
.
asList
(
roomVo
.
getSpacePath
().
split
(
","
)))
{
if
(
platSpaceMap
.
get
(
spaceId
)
!=
null
)
{
pathName
=
""
.
equals
(
pathName
)
?
platSpaceMap
.
get
(
spaceId
)
:
pathName
+
"-"
+
platSpaceMap
.
get
(
spaceId
);
}
}
pathName
=
pathName
+
"-"
+
roomVo
.
getRoomName
();
vo
.
setRoomId
(
roomVo
.
getRoomId
());
vo
.
setRoomId
(
roomVo
.
getRoomId
());
vo
.
setPathName
(
pathName
);
vo
.
setPathName
(
vo
.
getPathName
()
+
"-"
+
vo
.
getRoomName
()
);
if
(
bedMap
.
get
(
roomVo
.
getRoomId
())
!=
null
)
{
if
(
bedMap
.
get
(
roomVo
.
getRoomId
())
!=
null
)
{
List
<
WorkStationInstitutionBedVO
>
roomBedVos
=
bedMap
.
get
(
roomVo
.
getRoomId
());
List
<
WorkStationInstitutionBedVO
>
roomBedVos
=
bedMap
.
get
(
roomVo
.
getRoomId
());
//获取告警类型及老人状态
//获取告警类型及老人状态
...
@@ -308,7 +307,6 @@ public class WorkStationServiceImpl implements WorkStationService {
...
@@ -308,7 +307,6 @@ public class WorkStationServiceImpl implements WorkStationService {
//获取父级的所有子级空间
//获取父级的所有子级空间
spaces
=
platSpaceService
.
listChild
(
dto
.
getSpaceIds
());
spaces
=
platSpaceService
.
listChild
(
dto
.
getSpaceIds
());
}
}
Map
<
String
,
String
>
platSpaceMap
=
spaces
.
stream
().
collect
(
Collectors
.
toMap
(
PlatSpace:
:
getId
,
PlatSpace:
:
getName
));
List
<
String
>
elderIdList
=
new
ArrayList
<>();
List
<
String
>
elderIdList
=
new
ArrayList
<>();
List
<
PlatAlarmRecord
>
alarmRecords
=
platAlarmRecordService
.
list
(
List
<
PlatAlarmRecord
>
alarmRecords
=
platAlarmRecordService
.
list
(
...
@@ -333,15 +331,12 @@ public class WorkStationServiceImpl implements WorkStationService {
...
@@ -333,15 +331,12 @@ public class WorkStationServiceImpl implements WorkStationService {
List
<
WorkStationHomeBedVO
>
list
=
platBedService
.
selectByCondition
(
dto
);
List
<
WorkStationHomeBedVO
>
list
=
platBedService
.
selectByCondition
(
dto
);
JoinUtil
.
joinSplit
(
list
,
platSpaceService
,
WorkStationHomeBedVO:
:
getSpacePath
,
PlatSpace:
:
getId
,
(
e
,
l
)
->
{
e
.
setPathName
(
StreamUtil
.
join
(
l
,
Objects:
:
nonNull
,
PlatSpace:
:
getName
,
"-"
));
});
for
(
WorkStationHomeBedVO
vo
:
list
){
for
(
WorkStationHomeBedVO
vo
:
list
){
String
pathName
=
""
;
vo
.
setPathName
(
vo
.
getPathName
()
+
"-"
+
vo
.
getRoomName
());
for
(
String
spaceId
:
Arrays
.
asList
(
vo
.
getSpacePath
().
split
(
","
)))
{
if
(
platSpaceMap
.
get
(
spaceId
)
!=
null
)
{
pathName
=
""
.
equals
(
pathName
)
?
platSpaceMap
.
get
(
spaceId
)
:
pathName
+
"-"
+
platSpaceMap
.
get
(
spaceId
);
}
}
pathName
=
pathName
+
"-"
+
vo
.
getRoomName
();
vo
.
setPathName
(
pathName
);
if
(
StringUtil
.
isNotEmpty
(
vo
.
getElderId
())
)
{
if
(
StringUtil
.
isNotEmpty
(
vo
.
getElderId
())
)
{
if
(
elderAlarmTypeMap
.
containsKey
(
vo
.
getElderId
())){
if
(
elderAlarmTypeMap
.
containsKey
(
vo
.
getElderId
())){
vo
.
setAlarmTypeMap
(
elderAlarmTypeMap
.
get
(
vo
.
getElderId
()));
vo
.
setAlarmTypeMap
(
elderAlarmTypeMap
.
get
(
vo
.
getElderId
()));
...
...
server-service/src/main/java/com/makeit/task/DayDurationTask.java
0 → 100644
View file @
50ba56ed
package
com
.
makeit
.
task
;
import
com.makeit.utils.DayDurationUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
@Component
@Slf4j
public
class
DayDurationTask
{
@Autowired
private
DayDurationUtil
dayDurationUtil
;
@Scheduled
(
cron
=
"0 */1 * * * ?"
)
public
void
updateDayDuration
()
{
dayDurationUtil
.
getAll
();
}
}
server-service/src/main/java/com/makeit/utils/AlarmRedisDTO.java
View file @
50ba56ed
...
@@ -20,5 +20,8 @@ public class AlarmRedisDTO implements Serializable {
...
@@ -20,5 +20,8 @@ public class AlarmRedisDTO implements Serializable {
*/
*/
private
String
alarm
=
"0"
;
private
String
alarm
=
"0"
;
/**
* 雷达开始上报
*/
private
Date
start
;
private
Date
start
;
}
}
server-service/src/main/java/com/makeit/utils/DayDurationUtil.java
0 → 100644
View file @
50ba56ed
package
com
.
makeit
.
utils
;
import
com.makeit.dto.platform.alarm.PlatDayDurationRecordDTO
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.enums.redis.RedisConst
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
import
com.makeit.service.platform.alarm.PlatDayDurationRecordService
;
import
com.makeit.utils.redis.RedisUtil
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Component
public
class
DayDurationUtil
implements
ApplicationRunner
{
@Autowired
private
PlatDayDurationRecordService
platDayDurationRecordService
;
public
void
getAll
()
{
DateTimeFormatter
yyyyMMdd
=
DateTimeFormatter
.
ofPattern
(
"yyyyMMdd"
);
LocalDateTime
now
=
LocalDateTime
.
now
();
List
<
String
>
dateStrList
=
new
ArrayList
<>();
for
(
int
i
=
1
;
i
<=
7
;
i
++)
{
LocalDateTime
dateTime
=
now
.
plusDays
(-
i
);
dateStrList
.
add
(
yyyyMMdd
.
format
(
dateTime
));
}
PlatDayDurationRecordDTO
platDayDurationRecordDTO
=
new
PlatDayDurationRecordDTO
();
platDayDurationRecordDTO
.
setDayStrList
(
dateStrList
);
List
<
PlatDayDurationRecord
>
platDayDurationRecords
=
platDayDurationRecordService
.
getDayMaxDurationList
(
platDayDurationRecordDTO
);
if
(
CollectionUtils
.
isEmpty
(
platDayDurationRecords
)){
return
;
}
Map
<
String
,
List
<
PlatDayDurationRecord
>>
deviceIdMap
=
platDayDurationRecords
.
stream
().
collect
(
Collectors
.
groupingBy
(
PlatDayDurationRecord:
:
getOriDeviceId
));
deviceIdMap
.
entrySet
().
stream
().
map
(
vo
->
{
List
<
PlatDayDurationRecord
>
value
=
vo
.
getValue
();
int
size
=
value
.
size
();
int
mid
=
size
/
2
;
return
value
.
get
(
mid
);
}).
forEach
(
vo
->{
put
(
vo
);
});
return
;
}
public
void
put
(
PlatDayDurationRecord
platDayDurationRecord
)
{
RedisUtil
.
set
(
RedisConst
.
ELDER_DAY_DURATION_PREFIX
+
platDayDurationRecord
.
getOriDeviceId
(),
platDayDurationRecord
);
}
public
PlatDayDurationRecord
get
(
String
oriDeviceId
)
{
PlatDayDurationRecord
platDayDurationRecord
=
RedisUtil
.
get
(
RedisConst
.
ELDER_DAY_DURATION_PREFIX
+
oriDeviceId
);
if
(
platDayDurationRecord
==
null
){
getAll
();
}
return
RedisUtil
.
get
(
RedisConst
.
ELDER_DAY_DURATION_PREFIX
+
oriDeviceId
);
}
/**
* Callback used to run the bean.
*
* @param args incoming application arguments
* @throws Exception on error
*/
@Override
@TenantIdIgnore
public
void
run
(
ApplicationArguments
args
)
throws
Exception
{
getAll
();
}
}
server-service/src/main/java/com/makeit/vo/platform/space/PlatDeviceElderVO.java
0 → 100644
View file @
50ba56ed
package
com
.
makeit
.
vo
.
platform
.
space
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* Controller
*
* @author zm
* @version 2023/9/8
*/
@Data
@ApiModel
(
"PlatDeviceElderVO参数"
)
public
class
PlatDeviceElderVO
{
@ApiModelProperty
(
"长者id"
)
private
String
id
;
@ApiModelProperty
(
"长者姓名"
)
private
String
name
;
@ApiModelProperty
(
"设备id"
)
private
String
deviceId
;
@ApiModelProperty
(
"床位id"
)
private
String
bedId
;
}
server-service/src/main/resources/mappers/PlatDayDurationRecordMapper.xml
0 → 100644
View file @
50ba56ed
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.makeit.mapper.platform.alarm.PlatDayDurationRecordMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.makeit.entity.platform.alarm.PlatDayDurationRecord"
>
<id
property=
"id"
column=
"id"
jdbcType=
"VARCHAR"
/>
<result
property=
"elderIds"
column=
"elder_ids"
jdbcType=
"VARCHAR"
/>
<result
property=
"duration"
column=
"duration"
jdbcType=
"VARCHAR"
/>
<result
property=
"oriDeviceId"
column=
"ori_device_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"day"
column=
"day"
jdbcType=
"VARCHAR"
/>
<result
property=
"startDate"
column=
"start_date"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"endDate"
column=
"end_date"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"createBy"
column=
"create_by"
jdbcType=
"VARCHAR"
/>
<result
property=
"createDate"
column=
"create_date"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"updateBy"
column=
"update_by"
jdbcType=
"VARCHAR"
/>
<result
property=
"updateDate"
column=
"update_date"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"delFlag"
column=
"del_flag"
jdbcType=
"INTEGER"
/>
<result
property=
"tenantId"
column=
"tenant_id"
jdbcType=
"VARCHAR"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,elder_ids,duration,
ori_device_id,day,start_date,
end_date,create_by,create_date,
update_by,update_date,del_flag,
tenant_id
</sql>
<select
id=
"getDayMaxDurationList"
resultType=
"com.makeit.entity.platform.alarm.PlatDayDurationRecord"
>
select
pddr.ori_device_id,
pddr.day,
max(pddr.duration) as duration
from plat_day_duration_record pddr
<where>
<if
test=
"param.start != null "
>
and pddr.create_date >= #{param.start}
</if>
<if
test=
"param.end != null "
>
and pddr.create_date
<![CDATA[<= #{param.end}]]>
</if>
<if
test=
"param.dayStrList != null and param.dayStrList.size()>0"
>
AND pddr.day IN
<foreach
collection=
"param.dayStrList"
item=
"item"
separator=
","
open=
"("
close=
")"
index=
""
>
#{item}
</foreach>
</if>
</where>
group by pddr.ori_device_id, pddr.day
order by duration
</select>
</mapper>
server-web/src/main/java/com/makeit/mqtt/PushCallback.java
View file @
50ba56ed
...
@@ -19,8 +19,10 @@ import org.slf4j.Logger;
...
@@ -19,8 +19,10 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.StopWatch
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
@Component
@Component
...
@@ -68,10 +70,17 @@ public class PushCallback implements MqttCallback {
...
@@ -68,10 +70,17 @@ public class PushCallback implements MqttCallback {
logger
.
info
(
"deliveryComplete--------------"
+
token
.
isComplete
());
logger
.
info
(
"deliveryComplete--------------"
+
token
.
isComplete
());
}
}
/**
* 触发告警耗时 3.07s
* 未触发告警耗时 0.08s
* @param device
*/
@TenantIdIgnore
@TenantIdIgnore
public
void
checkAlarm
(
DeviceInfo
device
)
{
public
void
checkAlarm
(
DeviceInfo
device
)
{
StopWatch
stopWatch
=
new
StopWatch
();
stopWatch
.
start
(
"checkAlarm-1"
);
String
deviceId
=
device
.
getDeviceId
();
String
deviceId
=
device
.
getDeviceId
();
//
String propertiesStr = device.getProperties();
//
String propertiesStr = device.getProperties();
// if (StringUtils.isBlank(propertiesStr)) {
// if (StringUtils.isBlank(propertiesStr)) {
// return;
// return;
// }
// }
...
@@ -81,7 +90,12 @@ public class PushCallback implements MqttCallback {
...
@@ -81,7 +90,12 @@ public class PushCallback implements MqttCallback {
//iot设备id
//iot设备id
PlatDevice
platDevice
=
deviceCacheUtil
.
get
(
deviceId
);
PlatDevice
platDevice
=
deviceCacheUtil
.
get
(
deviceId
);
if
(
platDevice
==
null
){
logger
.
info
(
"设备信息异常,设备iot-id:"
+
deviceId
);
return
;
}
List
<
PlatAlarmConfig
>
deviceAlarmConfigList
=
alarmConfigCacheUtil
.
getDeviceAlarmConfigMap
(
platDevice
);
List
<
PlatAlarmConfig
>
deviceAlarmConfigList
=
alarmConfigCacheUtil
.
getDeviceAlarmConfigMap
(
platDevice
);
deviceAlarmConfigList
.
removeIf
(
Objects:
:
isNull
);
if
(
CollectionUtils
.
isEmpty
(
deviceAlarmConfigList
))
{
if
(
CollectionUtils
.
isEmpty
(
deviceAlarmConfigList
))
{
logger
.
info
(
"该设备没有告警配置:"
+
deviceId
);
logger
.
info
(
"该设备没有告警配置:"
+
deviceId
);
return
;
return
;
...
@@ -103,6 +117,8 @@ public class PushCallback implements MqttCallback {
...
@@ -103,6 +117,8 @@ public class PushCallback implements MqttCallback {
}
}
}
}
}
}
stopWatch
.
stop
();
logger
.
info
(
stopWatch
.
prettyPrint
());
}
}
...
...
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