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
caad2203
authored
Sep 14, 2023
by
李小龙
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
fixBug
parent
50bcb034
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
39 additions
and
13 deletions
saas-module/src/main/java/com/makeit/controller/saas/SaasUserController.java
server-service/src/main/java/com/makeit/dto/platform/alarm/PlatAlarmConfigDTOVO.java
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/BehaviorAlarm.java
server-service/src/main/java/com/makeit/utils/DeviceCacheUtil.java
server-web/src/main/java/com/makeit/mqtt/PushCallback.java
saas-module/src/main/java/com/makeit/controller/saas/SaasUserController.java
View file @
caad2203
...
@@ -12,6 +12,7 @@ import com.makeit.module.admin.dto.saas.SaasUserDTOVO;
...
@@ -12,6 +12,7 @@ import com.makeit.module.admin.dto.saas.SaasUserDTOVO;
import
com.makeit.module.admin.dto.saas.SaasUserQueryDTO
;
import
com.makeit.module.admin.dto.saas.SaasUserQueryDTO
;
import
com.makeit.service.saas.SaasUserService
;
import
com.makeit.service.saas.SaasUserService
;
import
com.makeit.module.admin.vo.saas.SaasUserLoginVO
;
import
com.makeit.module.admin.vo.saas.SaasUserLoginVO
;
import
com.makeit.utils.user.ThreadLocalUserUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -130,5 +131,12 @@ public class SaasUserController {
...
@@ -130,5 +131,12 @@ public class SaasUserController {
return
ApiResponseUtils
.
success
(
saasUserService
.
getUserVO
());
return
ApiResponseUtils
.
success
(
saasUserService
.
getUserVO
());
}
}
@ApiOperation
(
"获取当前登录用户的用户信息2"
)
@PostMapping
(
"getUserVOFromTH"
)
public
ApiResponseEntity
<
SaasUserLoginVO
>
getUserInfo2
(){
SaasUserLoginVO
saasUser
=
ThreadLocalUserUtil
.
getSaasUser
();
return
ApiResponseUtils
.
success
(
saasUser
);
}
}
}
server-service/src/main/java/com/makeit/dto/platform/alarm/PlatAlarmConfigDTOVO.java
View file @
caad2203
package
com
.
makeit
.
dto
.
platform
.
alarm
;
package
com
.
makeit
.
dto
.
platform
.
alarm
;
import
com.makeit.common.dto.BaseTenantDTO
;
import
com.makeit.common.dto.BaseTenantDTO
;
import
com.makeit.common.entity.BaseBusEntity
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.global.validator.DictEnum
;
import
com.makeit.global.validator.DictEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
...
@@ -47,13 +46,13 @@ public class PlatAlarmConfigDTOVO extends BaseTenantDTO {
...
@@ -47,13 +46,13 @@ public class PlatAlarmConfigDTOVO extends BaseTenantDTO {
@ApiModelProperty
(
value
=
"规则配置"
)
@ApiModelProperty
(
value
=
"规则配置"
)
private
String
ruleConfig
;
private
String
ruleConfig
;
@ApiModelProperty
(
value
=
"
心率
异常"
)
@ApiModelProperty
(
value
=
"
呼吸
异常"
)
private
PlatAlarmConfigRespiratoryDTOVO
respiratory
;
private
PlatAlarmConfigRespiratoryDTOVO
respiratory
;
@ApiModelProperty
(
value
=
"心率异常"
)
@ApiModelProperty
(
value
=
"心率异常"
)
private
PlatAlarmConfigHeartDTOVO
heart
;
private
PlatAlarmConfigHeartDTOVO
heart
;
@ApiModelProperty
(
value
=
"
心率
异常"
)
@ApiModelProperty
(
value
=
"
行为
异常"
)
private
PlatAlarmConfigBehaviorDTOVO
behavior
;
private
PlatAlarmConfigBehaviorDTOVO
behavior
;
@ApiModelProperty
(
value
=
"内容"
)
@ApiModelProperty
(
value
=
"内容"
)
...
...
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/BehaviorAlarm.java
View file @
caad2203
...
@@ -67,7 +67,7 @@ public class BehaviorAlarm implements IAlarm{
...
@@ -67,7 +67,7 @@ public class BehaviorAlarm implements IAlarm{
}
}
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
;
duration
=
duration
*
60
;
//todo duration+平均停留时长
//todo duration+平均停留时长
List
<
String
>
personStateList
=
Arrays
.
asList
(
"1"
,
"2"
,
"3"
);
List
<
String
>
personStateList
=
Arrays
.
asList
(
"1"
,
"2"
,
"3"
);
...
@@ -79,9 +79,9 @@ public class BehaviorAlarm implements IAlarm{
...
@@ -79,9 +79,9 @@ public class BehaviorAlarm implements IAlarm{
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
);
...
@@ -91,17 +91,30 @@ public class BehaviorAlarm implements IAlarm{
...
@@ -91,17 +91,30 @@ public class BehaviorAlarm implements IAlarm{
}
}
long
count
=
endLong
-
startLong
;
long
count
=
endLong
-
startLong
;
//进入空间时间满足告警时长,判断是否已经告警过了
//进入空间时间满足告警时长,判断是否已经告警过了
if
(
count
>=
duration
&&
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
NO
.
getValue
()))
{
if
(
count
/
1000
>=
duration
&&
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
NO
.
getValue
()))
{
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_ID
+
deviceId
,
alarmRedisDTO
);
}
}
}
else
{
//todo 是否有第一次进入记录,有则保存db
}
else
{
//没人
// 是否有第一次进入记录,有则保存db
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
if
(
startLong
==
null
){
if
(
startLong
==
null
){
return
;
return
;
}
}
//保存每次进入空间时长
saveDayDurationRecord
(
platAlarmCheckDTO
,
alarmRedisDTO
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
null
);
}
}
private
void
saveDayDurationRecord
(
PlatAlarmCheckDTO
platAlarmCheckDTO
,
AlarmRedisDTO
alarmRedisDTO
)
{
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
Date
now
=
new
Date
();
long
endLong
=
now
.
getTime
();
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
long
count
=
endLong
-
alarmRedisDTO
.
getStartLong
();
long
count
=
endLong
-
alarmRedisDTO
.
getStartLong
();
//save db
//save db
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
...
@@ -111,12 +124,11 @@ public class BehaviorAlarm implements IAlarm{
...
@@ -111,12 +124,11 @@ public class BehaviorAlarm implements IAlarm{
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
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_ID
+
deviceId
,
null
);
platDayDurationRecordService
.
saveOrUpdate
(
durationRecord
);
}
}
}
@Override
@Override
...
...
server-service/src/main/java/com/makeit/utils/DeviceCacheUtil.java
View file @
caad2203
...
@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...
@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.enums.redis.RedisConst
;
import
com.makeit.enums.redis.RedisConst
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
import
com.makeit.module.iot.enums.DeviceState
;
import
com.makeit.service.platform.device.PlatDeviceService
;
import
com.makeit.service.platform.device.PlatDeviceService
;
import
com.makeit.utils.redis.RedisUtil
;
import
com.makeit.utils.redis.RedisUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.boot.ApplicationRunner
;
...
@@ -21,7 +23,7 @@ public class DeviceCacheUtil implements ApplicationRunner {
...
@@ -21,7 +23,7 @@ public class DeviceCacheUtil implements ApplicationRunner {
private
PlatDeviceService
platDeviceService
;
private
PlatDeviceService
platDeviceService
;
public
List
<
PlatDevice
>
getAll
()
{
public
List
<
PlatDevice
>
getAll
()
{
List
<
PlatDevice
>
list
=
platDeviceService
.
list
(
new
LambdaQueryWrapper
<
PlatDevice
>());
List
<
PlatDevice
>
list
=
platDeviceService
.
list
(
new
LambdaQueryWrapper
<
PlatDevice
>()
.
eq
(
PlatDevice:
:
getStatus
,
DeviceState
.
online
.
getValue
())
);
list
.
stream
().
forEach
(
vo
->
{
list
.
stream
().
forEach
(
vo
->
{
put
(
vo
);
put
(
vo
);
});
});
...
@@ -29,7 +31,11 @@ public class DeviceCacheUtil implements ApplicationRunner {
...
@@ -29,7 +31,11 @@ public class DeviceCacheUtil implements ApplicationRunner {
}
}
public
void
put
(
PlatDevice
platDevice
)
{
public
void
put
(
PlatDevice
platDevice
)
{
RedisUtil
.
set
(
RedisConst
.
PLAT_IOT_DEVICE_PREFIX
+
platDevice
.
getOriDeviceId
(),
platDevice
);
if
(
StringUtils
.
equals
(
platDevice
.
getStatus
(),
DeviceState
.
online
.
getValue
()))
{
RedisUtil
.
set
(
RedisConst
.
PLAT_IOT_DEVICE_PREFIX
+
platDevice
.
getOriDeviceId
(),
platDevice
);
}
else
{
RedisUtil
.
delete
(
RedisConst
.
PLAT_IOT_DEVICE_PREFIX
+
platDevice
.
getOriDeviceId
());
}
}
}
public
PlatDevice
get
(
String
oriDeviceId
)
{
public
PlatDevice
get
(
String
oriDeviceId
)
{
...
...
server-web/src/main/java/com/makeit/mqtt/PushCallback.java
View file @
caad2203
...
@@ -83,6 +83,7 @@ public class PushCallback implements MqttCallback {
...
@@ -83,6 +83,7 @@ public class PushCallback implements MqttCallback {
PlatDevice
platDevice
=
deviceCacheUtil
.
get
(
deviceId
);
PlatDevice
platDevice
=
deviceCacheUtil
.
get
(
deviceId
);
List
<
PlatAlarmConfig
>
deviceAlarmConfigList
=
alarmConfigCacheUtil
.
getDeviceAlarmConfigMap
(
platDevice
);
List
<
PlatAlarmConfig
>
deviceAlarmConfigList
=
alarmConfigCacheUtil
.
getDeviceAlarmConfigMap
(
platDevice
);
if
(
CollectionUtils
.
isEmpty
(
deviceAlarmConfigList
))
{
if
(
CollectionUtils
.
isEmpty
(
deviceAlarmConfigList
))
{
logger
.
info
(
"该设备没有告警配置:"
+
deviceId
);
return
;
return
;
}
}
for
(
PlatAlarmConfig
config
:
deviceAlarmConfigList
)
{
for
(
PlatAlarmConfig
config
:
deviceAlarmConfigList
)
{
...
...
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