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
8f63af67
authored
Oct 13, 2023
by
lzy
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge branch 'dev' of git.xmmakeit.com:huangjiay/iot-platform-server into dev
parents
369a250f
47b92605
Hide whitespace changes
Inline
Side-by-side
Showing
67 changed files
with
1562 additions
and
241 deletions
db/inti-elder.sql
server-api/src/main/java/com/makeit/api/external/filter/SignAuthFilter.java
server-common/src/main/java/com/makeit/config/mybatis/tenant/DataScopeInterceptor.java
server-common/src/main/java/com/makeit/enums/HeaderConst.java
server-common/src/main/java/com/makeit/global/inteceptor/PlatAuthorizationInterceptor.java
server-common/src/main/java/com/makeit/module/admin/vo/plat/PlatUserLoginVO.java
server-common/src/main/java/com/makeit/module/iot/service/IotCommonService.java
server-common/src/main/java/com/makeit/module/iot/service/IotProductDeviceService.java
server-common/src/main/java/com/makeit/module/system/service/impl/SysConfigServiceImpl.java
server-module/src/main/java/com/makeit/module/controller/alarm/PlatAlarmRecordController.java
server-module/src/main/java/com/makeit/module/controller/children/alarm/PlatAlarmRecordChildrenController.java
server-module/src/main/java/com/makeit/module/controller/children/space/PlatRegionSettingChildrenController.java
server-module/src/main/java/com/makeit/module/controller/dataScreen/DataScreenController.java
server-module/src/main/java/com/makeit/module/controller/space/PlatRoomBedDeviceController.java
server-service/src/main/java/com/makeit/dto/platform/alarm/PlatAlarmRecordQueryDTO.java
server-service/src/main/java/com/makeit/dto/platform/dataScreen/PlatDataScreenQueryDTO.java
server-service/src/main/java/com/makeit/dto/platform/device/PlatDeviceQueryDTO.java
server-service/src/main/java/com/makeit/dto/platform/elder/PlatElderReportDTO.java
server-service/src/main/java/com/makeit/dto/platform/space/PlatSpaceImportDTO.java
server-service/src/main/java/com/makeit/entity/platform/elder/PlatElderReportMonth.java
server-service/src/main/java/com/makeit/entity/platform/space/PlatRoomBedDevice.java
server-service/src/main/java/com/makeit/mapper/platform/device/PlatDeviceMapper.java
server-service/src/main/java/com/makeit/mapper/platform/space/PlatBedMapper.java
server-service/src/main/java/com/makeit/mapper/platform/space/PlatRoomMapper.java
server-service/src/main/java/com/makeit/service/platform/alarm/PlatAlarmRecordService.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/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/auth/impl/PlatUserServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/dataScreen/DataScreenService.java
server-service/src/main/java/com/makeit/service/platform/dataScreen/impl/DataScreenServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/device/PlatDeviceService.java
server-service/src/main/java/com/makeit/service/platform/device/impl/PlatDeviceServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderDayReportDayService.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportDayServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportWeekServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderRealTimeServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderReportMonthServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/space/PlatRoomBedDeviceService.java
server-service/src/main/java/com/makeit/service/platform/space/PlatRoomService.java
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomBedDeviceServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomDynamicServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatSpaceServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/workstation/impl/WorkStationServiceImpl.java
server-service/src/main/java/com/makeit/service/wechat/impl/PlatElderChildrenInfoUserLoginWechatServiceImpl.java
server-service/src/main/java/com/makeit/task/IotSyncTask.java
server-service/src/main/java/com/makeit/vo/platform/auth/PlatPersonDTOVO.java
server-service/src/main/java/com/makeit/vo/platform/dataScreen/PlatAlarmStatisticsListVo.java
server-service/src/main/java/com/makeit/vo/platform/device/PlatDeviceListVO.java
server-service/src/main/java/com/makeit/vo/platform/elder/realtime/PlatElderCoordinateVO.java
server-service/src/main/java/com/makeit/vo/platform/elder/realtime/PlatElderRealTimeHeartRespiratoryVO.java
server-service/src/main/java/com/makeit/vo/platform/space/PlatBedPanoramaVO.java
server-service/src/main/java/com/makeit/vo/platform/space/PlatBedVo.java
server-service/src/main/resources/mappers/PlatBedMapper.xml
server-service/src/main/resources/mappers/PlatDeviceMapper.xml
server-service/src/main/resources/mappers/PlatRoomMapper.xml
server-web/src/main/java/com/makeit/mqtt/PushCallback.java
server-web/src/main/resources/application-dev.yml
server-web/src/main/resources/application-test.yml
server-web/src/main/resources/logback-spring-test.xml
server-web/src/main/resources/logback-spring.xml
db/inti-elder.sql
View file @
8f63af67
...
...
@@ -152,7 +152,7 @@ CREATE TABLE `plat_elder_medical_examination_info`
CREATE
TABLE
`plat_elder_children_info`
(
`id`
varchar
(
64
)
NOT
NULL
COMMENT
'id'
,
`elder_id`
varchar
(
6
4
)
NULL
COMMENT
'长者id'
,
`elder_id`
varchar
(
6
00
)
NULL
COMMENT
'长者id'
,
`openid`
varchar
(
64
)
NOT
NULL
COMMENT
'openid'
,
`name`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'姓名'
,
`phone`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'手机号码'
,
...
...
@@ -293,7 +293,7 @@ CREATE TABLE `plat_elder_sleep`
`elder_id`
VARCHAR
(
64
)
NOT
NULL
COMMENT
'长者id'
,
`start_sleep`
datetime
DEFAULT
NULL
COMMENT
'入睡时间'
,
`end_sleep`
datetime
DEFAULT
NULL
COMMENT
'起床时间'
,
`happen_date`
VARCHAR
(
64
)
DEFAULT
NULL
COMMENT
'当前日期 yyyy-mm-dd'
,
`happen_date`
VARCHAR
(
64
)
DEFAULT
NULL
COMMENT
'当前日期 yyyy-mm-dd'
,
`sleep_record`
text
DEFAULT
NULL
COMMENT
'睡眠记录 区分时间段记录 [{"sleepType":"","startTime":"","endTime":""},{}]'
,
`create_date`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`update_date`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
...
...
@@ -316,7 +316,7 @@ CREATE TABLE `plat_elder_sleep_analysis`
`sleep_time`
VARCHAR
(
64
)
DEFAULT
NULL
COMMENT
'睡眠时长'
,
`rest_time`
VARCHAR
(
64
)
DEFAULT
NULL
COMMENT
'休息时长'
,
`sleep_evaluate`
VARCHAR
(
64
)
DEFAULT
NULL
COMMENT
'评价'
,
`happen_date`
VARCHAR
(
64
)
DEFAULT
NULL
COMMENT
'当前日期 yyyy-mm-dd'
,
`happen_date`
VARCHAR
(
64
)
DEFAULT
NULL
COMMENT
'当前日期 yyyy-mm-dd'
,
`create_date`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`update_date`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
`del_flag`
CHAR
(
1
)
DEFAULT
NULL
COMMENT
'删除标识'
,
...
...
@@ -329,46 +329,54 @@ CREATE TABLE `plat_elder_sleep_analysis`
DEFAULT
CHARSET
=
utf8mb4
ROW_FORMAT
=
COMPACT
COMMENT
=
'长者每天睡觉分析'
;
CREATE
TABLE
`plat_elder_breathe_abnormal`
(
`id`
varchar
(
64
)
NOT
NULL
COMMENT
'id'
,
`elder_id`
varchar
(
64
)
NOT
NULL
COMMENT
'长者id'
,
`breathe_analysis_id`
varchar
(
64
)
NOT
NULL
COMMENT
'呼吸分析id'
,
`happen_time`
datetime
NOT
NULL
COMMENT
'发生时间'
,
`type`
varchar
(
32
)
DEFAULT
NULL
COMMENT
'异常类型'
,
`value`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'值'
,
`create_date`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`update_date`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
`del_flag`
char
(
1
)
DEFAULT
NULL
COMMENT
'删除标识'
,
`create_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'创建人'
,
`update_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'更新人'
,
`tenant_id`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'租户id'
,
PRIMARY
KEY
(
`id`
),
KEY
`index_elder_id`
(
`elder_id`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
ROW_FORMAT
=
COMPACT
COMMENT
=
'长者每天呼吸异常'
;
CREATE
TABLE
`plat_elder_breathe_abnormal`
(
`id`
varchar
(
64
)
NOT
NULL
COMMENT
'id'
,
`elder_id`
varchar
(
64
)
NOT
NULL
COMMENT
'长者id'
,
`breathe_analysis_id`
varchar
(
64
)
NOT
NULL
COMMENT
'呼吸分析id'
,
`happen_time`
datetime
NOT
NULL
COMMENT
'发生时间'
,
`type`
varchar
(
32
)
DEFAULT
NULL
COMMENT
'异常类型'
,
`value`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'值'
,
`create_date`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`update_date`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
`del_flag`
char
(
1
)
DEFAULT
NULL
COMMENT
'删除标识'
,
`create_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'创建人'
,
`update_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'更新人'
,
`tenant_id`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'租户id'
,
PRIMARY
KEY
(
`id`
),
KEY
`index_elder_id`
(
`elder_id`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
ROW_FORMAT
=
COMPACT
COMMENT
=
'长者每天呼吸异常'
;
CREATE
TABLE
`plat_elder_breathe_analysis`
(
`id`
varchar
(
64
)
NOT
NULL
COMMENT
'id'
,
`elder_id`
varchar
(
64
)
NOT
NULL
COMMENT
'长者id'
,
`breathe_score`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'睡眠评分'
,
`breathe_result`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'睡眠结果'
,
`breathe_evaluate`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'评价'
,
`avg_heart_rate`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'平均心率'
,
`avg_breathe_rate`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'平均呼吸率'
,
`happen_date`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'当前日期 yyyy-mm-dd'
,
`create_date`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`update_date`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
`del_flag`
char
(
1
)
DEFAULT
NULL
COMMENT
'删除标识'
,
`create_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'创建人'
,
`update_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'更新人'
,
`tenant_id`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'租户id'
,
PRIMARY
KEY
(
`id`
),
KEY
`index_elder_id`
(
`elder_id`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
ROW_FORMAT
=
COMPACT
COMMENT
=
'长者每天呼吸分析'
;
CREATE
TABLE
`plat_elder_breathe_analysis`
(
`id`
varchar
(
64
)
NOT
NULL
COMMENT
'id'
,
`elder_id`
varchar
(
64
)
NOT
NULL
COMMENT
'长者id'
,
`breathe_score`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'睡眠评分'
,
`breathe_result`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'睡眠结果'
,
`breathe_evaluate`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'评价'
,
`avg_heart_rate`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'平均心率'
,
`avg_breathe_rate`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'平均呼吸率'
,
`happen_date`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'当前日期 yyyy-mm-dd'
,
`create_date`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`update_date`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
`del_flag`
char
(
1
)
DEFAULT
NULL
COMMENT
'删除标识'
,
`create_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'创建人'
,
`update_by`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'更新人'
,
`tenant_id`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'租户id'
,
PRIMARY
KEY
(
`id`
),
KEY
`index_elder_id`
(
`elder_id`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
ROW_FORMAT
=
COMPACT
COMMENT
=
'长者每天呼吸分析'
;
CREATE
TABLE
`plat_elder_report_month`
(
`id`
varchar
(
64
)
NOT
NULL
COMMENT
'id'
,
`elder_id`
VARCHAR
(
64
)
NOT
NULL
COMMENT
'长者id'
,
breathe_device_id
VARCHAR
(
64
)
NULL
COMMENT
'呼吸心率设备id'
,
breathe_ori_device_id
VARCHAR
(
64
)
NULL
COMMENT
'呼吸心率设备原始id'
,
day
date
NOT
NULL
COMMENT
'日期'
,
sleep_result
varchar
(
64
)
NOT
NULL
COMMENT
'睡眠结果'
,
heart_rate
int
NOT
NULL
COMMENT
'心率'
,
...
...
@@ -389,7 +397,7 @@ CREATE TABLE `plat_elder_report_month`
ALTER
TABLE
`dev_iot_yanglao_platform`
.
`plat_elder_sleep_analysis`
ADD
COLUMN
`action_count`
int
(
4
)
COMMENT
'体动次数'
AFTER
`happen_date`
,
ADD
COLUMN
`turned_count`
int
(
4
)
COMMENT
'翻身次数'
AFTER
`action_count`
;
ADD
COLUMN
`turned_count`
int
(
4
)
COMMENT
'翻身次数'
AFTER
`action_count`
;
ALTER
TABLE
`dev_iot_yanglao_platform`
.
`plat_elder_sleep`
ADD
COLUMN
`elder_sleep_type`
int
(
4
)
COMMENT
'睡眠类型 1 睡眠 2 小憩'
AFTER
`happen_date`
;
...
...
server-api/src/main/java/com/makeit/api/external/filter/SignAuthFilter.java
View file @
8f63af67
...
...
@@ -30,7 +30,7 @@ public class SignAuthFilter implements Filter {
HttpServletRequest
request
=
(
HttpServletRequest
)
req
;
HttpServletResponse
response
=
(
HttpServletResponse
)
res
;
try
{
String
sign
=
request
.
getHeader
(
"
sig
n"
);
String
sign
=
request
.
getHeader
(
"
toke
n"
);
if
(
StringUtils
.
isEmpty
(
sign
))
{
response
.
sendError
(
403
,
"Forbidden"
);
return
;
...
...
@@ -47,7 +47,8 @@ public class SignAuthFilter implements Filter {
String
decryptJson
=
RSAUtils
.
privateDecrypt
(
sign
,
RSAUtils
.
getPrivateKey
(
RSAUtils
.
PRIVATE_KEY
),
"UTF-8"
);
boolean
couldPass
=
decryptJson
.
equals
(
bodyString
);
boolean
couldPass
=
decryptJson
.
replaceAll
(
"\n"
,
""
).
replaceAll
(
" "
,
""
).
trim
()
.
equals
(
bodyString
.
replaceAll
(
" "
,
""
).
trim
());
if
(
couldPass
)
{
// 放行
chain
.
doFilter
(
requestWrapper
,
response
);
...
...
server-common/src/main/java/com/makeit/config/mybatis/tenant/DataScopeInterceptor.java
View file @
8f63af67
...
...
@@ -55,9 +55,10 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte
}
String
[]
orgIds
=
dataScope
.
split
(
Const
.
COMMON_SPLIT
);
List
<
String
>
orgIdList
=
Arrays
.
asList
(
orgIds
);
if
(
orgIdList
.
contains
(
tenantId
)){
return
;
}
//2023年10月10日 如果是租户级别的组织,也只能看到本层
// if(orgIdList.contains(tenantId)){
// return;
// }
String
tableName
=
((
Table
)
((
PlainSelect
)
select
.
getSelectBody
()).
getFromItem
()).
getName
();
//没有org_id 表字段跳过
List
<
TableFieldInfo
>
fieldInfoList
=
TableInfoHelper
.
getTableInfo
(
tableName
).
getFieldList
();
...
...
server-common/src/main/java/com/makeit/enums/HeaderConst.java
View file @
8f63af67
...
...
@@ -24,4 +24,6 @@ public class HeaderConst {
public
static
final
String
FEIGN_NO_REMOVE
=
"feignNoRemove"
;
public
static
final
String
DATA_SCOPE
=
"data-scope"
;
public
static
final
String
ROLE_ID
=
"role-id"
;
}
server-common/src/main/java/com/makeit/global/inteceptor/PlatAuthorizationInterceptor.java
View file @
8f63af67
...
...
@@ -24,7 +24,10 @@ import java.util.Set;
public
class
PlatAuthorizationInterceptor
implements
HandlerInterceptor
{
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
//todo 按钮权限关闭
if
(
true
){
return
true
;
}
Action
annotation
;
if
(
handler
instanceof
HandlerMethod
)
{
...
...
server-common/src/main/java/com/makeit/module/admin/vo/plat/PlatUserLoginVO.java
View file @
8f63af67
...
...
@@ -72,6 +72,11 @@ public class PlatUserLoginVO implements Serializable {
private
boolean
initFlag
=
false
;
/**
* 当前账号选择的右上角角色
*/
private
String
currentRoleId
;
public
void
init
(){
if
(
initFlag
){
...
...
server-common/src/main/java/com/makeit/module/iot/service/IotCommonService.java
View file @
8f63af67
...
...
@@ -14,6 +14,8 @@ import com.makeit.module.iot.vo.ResponseMessage;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.entity.ContentType
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -49,6 +51,7 @@ public class IotCommonService {
}
public
ResponseMessage
sendPatch
(
String
url
,
HttpRequest
request
)
throws
IOException
{
Response
response
=
request
.
patch
();
ResponseMessage
responseMessage
=
getResponseMessage
(
url
,
response
);
return
responseMessage
;
}
...
...
server-common/src/main/java/com/makeit/module/iot/service/IotProductDeviceService.java
View file @
8f63af67
...
...
@@ -73,15 +73,17 @@ public class IotProductDeviceService extends IotCommonService {
}
@Async
public
void
syncUpdateDeviceInfo
(
String
id
,
String
name
)
{
public
void
syncUpdateDeviceInfo
(
String
id
,
String
name
,
String
productId
)
{
String
url
=
iotUrl
+
"/device-instance"
;
// 条件可以自己改
Map
<
String
,
Object
>
reqMap
=
Maps
.
newHashMap
();
reqMap
.
put
(
"id"
,
id
);
reqMap
.
put
(
"name"
,
name
);
reqMap
.
put
(
"productId"
,
productId
);
String
body
=
JsonUtil
.
toJson
(
reqMap
);
HttpRequest
request
=
buildRequest
(
url
,
body
);
request
.
encode
(
"UTF-8"
);
request
.
contentType
(
"application/json"
);
try
{
ResponseMessage
responseMessage
=
sendPatch
(
url
,
request
);
if
(
responseMessage
.
getStatus
()
==
200
)
{
...
...
@@ -127,13 +129,12 @@ public class IotProductDeviceService extends IotCommonService {
if
(
deviceOperationLogEntity
==
null
)
{
return
null
;
}
DeviceInfoContentBreathe
breathe
=
JsonUtil
.
toObj
((
String
)
deviceOperationLogEntity
.
getContent
(),
DeviceInfoContentBreathe
.
class
);
LocalDateTime
time
=
LongTimestampUtil
.
toLocalDateTime
(
breathe
.
getTimestamp
());
/*
LocalDateTime time = LongTimestampUtil.toLocalDateTime(breathe.getTimestamp());
if (ignoreDuration != null && Duration.between(time, LocalDateTime.now()).getSeconds() > ignoreDuration) {
return null;
}
}
*/
return
breathe
;
...
...
@@ -156,6 +157,24 @@ public class IotProductDeviceService extends IotCommonService {
}
public
DeviceInfoContentFall
getLastDeviceLogFall
(
String
deviceId
,
Integer
ignoreDuration
)
{
//秒
DeviceOperationLogEntity
deviceOperationLogEntity
=
getLastDeviceLogByType
(
deviceId
,
REPORT_PROPERTY
);
if
(
deviceOperationLogEntity
==
null
)
{
return
null
;
}
DeviceInfoContentFall
fall
=
JsonUtil
.
toObj
((
String
)
deviceOperationLogEntity
.
getContent
(),
DeviceInfoContentFall
.
class
);
LocalDateTime
time
=
LongTimestampUtil
.
toLocalDateTime
(
fall
.
getTimestamp
());
if
(
ignoreDuration
!=
null
&&
Duration
.
between
(
time
,
LocalDateTime
.
now
()).
getSeconds
()
>
ignoreDuration
)
{
return
null
;
}
return
fall
;
}
public
List
<
String
>
getLastDayHourRange
(
LocalDateTime
startDateTime
)
{
int
count
=
24
;
List
<
String
>
list
=
Lists
.
newArrayList
();
...
...
@@ -233,9 +252,13 @@ public class IotProductDeviceService extends IotCommonService {
public
List
<
DeviceInfoContentSpace
>
getDeviceLogByTimeRangeSpace
(
String
deviceId
,
int
pageSize
,
LocalDateTime
startTime
,
LocalDateTime
endTime
)
{
DateTimeFormatter
dateTimeFormatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
List
<
DeviceOperationLogEntity
>
deviceOperationLogEntityList
=
getDeviceLogByTimeRange
(
deviceId
,
REPORT_PROPERTY
,
pageSize
,
dateTimeFormatter
.
format
(
startTime
),
dateTimeFormatter
.
format
(
endTime
));
List
<
DeviceInfoContentSpace
>
deviceInfoContentSpaceList
=
StreamUtil
.
map
(
deviceOperationLogEntityList
,
e
->
JsonUtil
.
toObj
((
String
)
e
.
getContent
(),
DeviceInfoContentSpace
.
class
));
List
<
DeviceInfoContentSpace
>
deviceInfoContentSpaceList
=
Lists
.
newArrayList
();
int
count
=
pageSize
/
10000
;
for
(
int
i
=
0
;
i
<
count
+
1
;
i
++)
{
List
<
DeviceOperationLogEntity
>
deviceOperationLogList
=
getDeviceLogByTimeRange
(
deviceId
,
REPORT_PROPERTY
,
10000
,
dateTimeFormatter
.
format
(
startTime
),
dateTimeFormatter
.
format
(
endTime
));
List
<
DeviceInfoContentSpace
>
tempDeviceInfoContentSpaceList
=
StreamUtil
.
map
(
deviceOperationLogList
,
e
->
JsonUtil
.
toObj
((
String
)
e
.
getContent
(),
DeviceInfoContentSpace
.
class
));
deviceInfoContentSpaceList
.
addAll
(
tempDeviceInfoContentSpaceList
);
}
return
deviceInfoContentSpaceList
;
}
...
...
server-common/src/main/java/com/makeit/module/system/service/impl/SysConfigServiceImpl.java
View file @
8f63af67
...
...
@@ -175,6 +175,7 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
Page
<
SysConfig
>
pageList
=
page
(
p
,
listLambdaQueryWrapper
(
sysConfig
));
JoinUtil
.
join
(
pageList
.
getRecords
(),
sysConfigCategoryService
,
SysConfig:
:
getCategoryId
,
SysConfigCategory:
:
getId
,
(
c
,
cc
)
->
{
c
.
setCategoryCode
(
cc
.
getCode
());
c
.
setCategoryName
(
cc
.
getName
());
});
...
...
server-module/src/main/java/com/makeit/module/controller/alarm/PlatAlarmRecordController.java
View file @
8f63af67
...
...
@@ -48,6 +48,13 @@ public class PlatAlarmRecordController {
return
ApiResponseUtils
.
success
();
}
@ApiOperation
(
"未读条数"
)
@PostMapping
(
"unreadCount"
)
public
ApiResponseEntity
<
Integer
>
unreadCount
(
@RequestBody
PlatAlarmRecordQueryDTO
dto
)
{
Integer
count
=
platAlarmRecordService
.
unreadCount
(
dto
);
return
ApiResponseUtils
.
success
(
count
);
}
// @Autowired
// private MailMsgSender mailMsgSender;
// @Autowired
...
...
server-module/src/main/java/com/makeit/module/controller/children/alarm/PlatAlarmRecordChildrenController.java
View file @
8f63af67
...
...
@@ -43,5 +43,12 @@ public class PlatAlarmRecordChildrenController {
platAlarmRecordService
.
read
(
dto
.
getId
());
return
ApiResponseUtils
.
success
();
}
@ApiOperation
(
"未读条数"
)
@PostMapping
(
"unreadCount"
)
public
ApiResponseEntity
<
Integer
>
unreadCount
(
@RequestBody
PlatAlarmRecordQueryDTO
dto
)
{
Integer
count
=
platAlarmRecordService
.
unreadCount
(
dto
);
return
ApiResponseUtils
.
success
(
count
);
}
}
server-module/src/main/java/com/makeit/module/controller/children/space/PlatRegionSettingChildrenController.java
0 → 100644
View file @
8f63af67
package
com
.
makeit
.
module
.
controller
.
children
.
space
;
import
com.makeit.common.response.ApiResponseEntity
;
import
com.makeit.common.response.ApiResponseUtils
;
import
com.makeit.dto.platform.space.PlatRegionSettingDTO
;
import
com.makeit.dto.platform.space.PlatRegionSettingListDTO
;
import
com.makeit.dto.platform.space.PlatRegionSettingLocateDTO
;
import
com.makeit.dto.platform.space.PlatRegionSettingQueryDTO
;
import
com.makeit.module.iot.vo.fall.DeviceInfoContentFall
;
import
com.makeit.module.iot.vo.space.DeviceInfoContentSpace
;
import
com.makeit.service.platform.space.PlatRegionSettingService
;
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
;
import
java.util.List
;
/**
* Controller
*
* @author zm
* @version 2023/9/11
*/
@Api
(
tags
=
"子女端小程序-区域设置"
)
@RestController
@RequestMapping
(
"/children/plat/region/setting"
)
public
class
PlatRegionSettingChildrenController
{
@Autowired
private
PlatRegionSettingService
platRegionSettingService
;
@ApiOperation
(
"列表"
)
@PostMapping
(
"list"
)
public
ApiResponseEntity
<
List
<
PlatRegionSettingDTO
>>
list
(
@RequestBody
PlatRegionSettingQueryDTO
dto
)
{
List
<
PlatRegionSettingDTO
>
data
=
platRegionSettingService
.
list
(
dto
);
return
ApiResponseUtils
.
success
(
data
);
}
@ApiOperation
(
"编辑"
)
@PostMapping
(
"edit"
)
public
ApiResponseEntity
<?>
edit
(
@RequestBody
PlatRegionSettingDTO
dto
)
{
platRegionSettingService
.
edit
(
dto
);
return
ApiResponseUtils
.
success
();
}
@ApiOperation
(
"批量编辑"
)
@PostMapping
(
"batchEdit"
)
public
ApiResponseEntity
<?>
batchEdit
(
@RequestBody
PlatRegionSettingListDTO
dto
)
{
platRegionSettingService
.
batchEdit
(
dto
.
getList
());
return
ApiResponseUtils
.
success
();
}
@ApiOperation
(
"定位(时间范围内定位)"
)
@PostMapping
(
"locate"
)
public
ApiResponseEntity
<
List
<
DeviceInfoContentSpace
.
Properties
>>
locate
(
@RequestBody
PlatRegionSettingLocateDTO
dto
)
{
List
<
DeviceInfoContentSpace
.
Properties
>
list
=
platRegionSettingService
.
locate
(
dto
);
return
ApiResponseUtils
.
success
(
list
);
}
@ApiOperation
(
"跌倒设备定位(时间范围内定位)"
)
@PostMapping
(
"fallDeviceLocate"
)
public
ApiResponseEntity
<
List
<
DeviceInfoContentFall
.
Properties
>>
fallDeviceLocate
(
@RequestBody
PlatRegionSettingLocateDTO
dto
)
{
List
<
DeviceInfoContentFall
.
Properties
>
list
=
platRegionSettingService
.
fallDeviceLocate
(
dto
);
return
ApiResponseUtils
.
success
(
list
);
}
@ApiOperation
(
"实时定位"
)
@PostMapping
(
"nowDataLocate"
)
public
ApiResponseEntity
<
DeviceInfoContentSpace
.
Properties
>
nowDataLocate
(
@RequestBody
PlatRegionSettingLocateDTO
dto
)
{
DeviceInfoContentSpace
.
Properties
vo
=
platRegionSettingService
.
nowDataLocate
(
dto
);
return
ApiResponseUtils
.
success
(
vo
);
}
@ApiOperation
(
"跌倒设备实时定位"
)
@PostMapping
(
"fallDeviceNowDataLocate"
)
public
ApiResponseEntity
<
DeviceInfoContentFall
.
Properties
>
fallDeviceNowDataLocate
(
@RequestBody
PlatRegionSettingLocateDTO
dto
)
{
DeviceInfoContentFall
.
Properties
vo
=
platRegionSettingService
.
fallDeviceNowDataLocate
(
dto
);
return
ApiResponseUtils
.
success
(
vo
);
}
}
server-module/src/main/java/com/makeit/module/controller/dataScreen/DataScreenController.java
View file @
8f63af67
...
...
@@ -5,11 +5,13 @@ import com.makeit.common.page.PageVO;
import
com.makeit.common.response.ApiResponseEntity
;
import
com.makeit.common.response.ApiResponseUtils
;
import
com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO
;
import
com.makeit.dto.platform.device.PlatDeviceQueryDTO
;
import
com.makeit.dto.platform.space.PlatBedQueryDTO
;
import
com.makeit.module.system.entity.ChinaArea
;
import
com.makeit.service.platform.dataScreen.DataScreenService
;
import
com.makeit.utils.area.ChinaAreaVO
;
import
com.makeit.vo.platform.dataScreen.*
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
com.makeit.vo.platform.space.PlatBedVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
...
...
@@ -83,4 +85,10 @@ public class DataScreenController {
return
ApiResponseUtils
.
success
(
dataScreenService
.
mapList
(
dto
));
}
@ApiOperation
(
"设备分页列表"
)
@PostMapping
(
"devicePage"
)
public
ApiResponseEntity
<
PageVO
<
PlatDeviceListVO
>>
devicePage
(
@RequestBody
PageReqDTO
<
PlatDataScreenQueryDTO
>
pageReqDTO
)
{
return
ApiResponseUtils
.
success
(
dataScreenService
.
devicePage
(
pageReqDTO
));
}
}
server-module/src/main/java/com/makeit/module/controller/space/PlatRoomBedDeviceController.java
View file @
8f63af67
...
...
@@ -57,6 +57,13 @@ public class PlatRoomBedDeviceController {
return
ApiResponseUtils
.
success
(
data
);
}
@ApiOperation
(
"已绑定设备分页"
)
@PostMapping
(
"pageBindDevice"
)
public
ApiResponseEntity
<
PageVO
<
PlatDeviceDTO
>>
pageBindDevice
(
@RequestBody
PageReqDTO
<
PlatBedDeviceQueryDTO
>
page
)
{
PageVO
<
PlatDeviceDTO
>
data
=
platRoomBedDeviceService
.
pageBindDevice
(
page
);
return
ApiResponseUtils
.
success
(
data
);
}
@ApiOperation
(
"绑定设备"
)
@PostMapping
(
"bindingDevice"
)
public
ApiResponseEntity
<?>
bindingDevice
(
@RequestBody
PlatRoomBindDeviceDTO
dto
)
{
...
...
server-service/src/main/java/com/makeit/dto/platform/alarm/PlatAlarmRecordQueryDTO.java
View file @
8f63af67
...
...
@@ -63,6 +63,8 @@ public class PlatAlarmRecordQueryDTO extends BaseTenantDTO {
*/
private
String
noticeStatus
;
private
String
readFlag
;
}
server-service/src/main/java/com/makeit/dto/platform/dataScreen/PlatDataScreenQueryDTO.java
View file @
8f63af67
...
...
@@ -31,4 +31,7 @@ public class PlatDataScreenQueryDTO {
@ApiModelProperty
(
"类型 1-居家 2-机构"
)
private
String
type
;
@ApiModelProperty
(
"设备状态"
)
private
String
deviceStatus
;
}
server-service/src/main/java/com/makeit/dto/platform/device/PlatDeviceQueryDTO.java
View file @
8f63af67
...
...
@@ -38,5 +38,7 @@ public class PlatDeviceQueryDTO extends BaseTenantDTO {
@ApiModelProperty
(
value
=
"组织id"
)
private
String
orgId
;
private
String
spaceId
;
}
server-service/src/main/java/com/makeit/dto/platform/elder/PlatElderReportDTO.java
View file @
8f63af67
...
...
@@ -40,4 +40,5 @@ public class PlatElderReportDTO extends PlatElderIdDTO {
@ApiModelProperty
(
"结束时间"
)
private
LocalDateTime
endTime
;
private
String
tenantId
;
}
server-service/src/main/java/com/makeit/dto/platform/space/PlatSpaceImportDTO.java
View file @
8f63af67
...
...
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Author:lzy
* @Date:2023/9/18 11:38
...
...
@@ -41,7 +42,7 @@ public class PlatSpaceImportDTO {
@ExcelProperty
({
BIG_TITLE
,
"床位数量"
})
@ApiModelProperty
(
value
=
"床位数量"
)
private
Integer
bedNumber
;
private
String
bedNumber
;
...
...
server-service/src/main/java/com/makeit/entity/platform/elder/PlatElderReportMonth.java
View file @
8f63af67
...
...
@@ -27,6 +27,12 @@ public class PlatElderReportMonth extends BaseBusEntity {
@ApiModelProperty
(
value
=
"长者id"
)
private
String
elderId
;
@ApiModelProperty
(
value
=
"呼吸心率设备id"
)
private
String
breatheDeviceId
;
@ApiModelProperty
(
value
=
"呼吸心率设备原始id"
)
private
String
breatheOriDeviceId
;
@ApiModelProperty
(
value
=
"日期"
)
private
LocalDate
day
;
...
...
server-service/src/main/java/com/makeit/entity/platform/space/PlatRoomBedDevice.java
View file @
8f63af67
...
...
@@ -27,4 +27,7 @@ public class PlatRoomBedDevice extends BaseBusEntity {
@TableField
(
updateStrategy
=
FieldStrategy
.
IGNORED
)
@ApiModelProperty
(
value
=
"床位Id"
)
private
String
bedId
;
@TableField
(
exist
=
false
)
private
String
path
;
}
server-service/src/main/java/com/makeit/mapper/platform/device/PlatDeviceMapper.java
View file @
8f63af67
package
com
.
makeit
.
mapper
.
platform
.
device
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO
;
import
com.makeit.dto.platform.device.PlatDeviceQueryDTO
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
org.apache.ibatis.annotations.Param
;
/**
* <p>
...
...
@@ -13,4 +18,8 @@ import com.makeit.entity.platform.device.PlatDevice;
*/
public
interface
PlatDeviceMapper
extends
BaseMapper
<
PlatDevice
>
{
Page
<
PlatDeviceListVO
>
getDeviceIdsBySpaceId
(
@Param
(
"param"
)
PlatDeviceQueryDTO
param
,
Page
page
);
Page
<
PlatDeviceListVO
>
getDevices
(
@Param
(
"param"
)
PlatDataScreenQueryDTO
param
,
Page
<
PlatDevice
>
page
);
}
server-service/src/main/java/com/makeit/mapper/platform/space/PlatBedMapper.java
View file @
8f63af67
...
...
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.makeit.dto.platform.space.PlatBedPanoramaDTO
;
import
com.makeit.dto.platform.space.PlatBedQueryDTO
;
import
com.makeit.dto.platform.workstation.WorkStationQueryDTO
;
import
com.makeit.dto.saas.SaasOperationLogDTO
;
import
com.makeit.entity.platform.space.PlatBed
;
import
com.makeit.vo.platform.space.PlatBedPanoramaVO
;
import
com.makeit.vo.platform.space.PlatBedVo
;
...
...
server-service/src/main/java/com/makeit/mapper/platform/space/PlatRoomMapper.java
View file @
8f63af67
...
...
@@ -21,4 +21,8 @@ public interface PlatRoomMapper extends BaseMapper<PlatRoom> {
List
<
WorkStationInstitutionRoomVO
>
workStationList
(
@Param
(
"dto"
)
WorkStationQueryDTO
dto
);
Page
<
WorkStationInstitutionRoomVO
>
workStationPage
(
Page
<
WorkStationQueryDTO
>
page
,
@Param
(
"dto"
)
WorkStationQueryDTO
dto
);
List
<
PlatSpaceAndRoomVO
>
spaceList
(
@Param
(
"orgIds"
)
List
<
String
>
orgIds
);
List
<
PlatSpaceAndRoomVO
>
roomList
(
@Param
(
"orgIds"
)
List
<
String
>
orgIds
);
}
server-service/src/main/java/com/makeit/service/platform/alarm/PlatAlarmRecordService.java
View file @
8f63af67
...
...
@@ -63,4 +63,6 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> {
void
dealAlarm
(
BaseIdDTO
dto
);
void
read
(
String
id
);
Integer
unreadCount
(
PlatAlarmRecordQueryDTO
dto
);
}
server-service/src/main/java/com/makeit/service/platform/alarm/PlatDayDurationRecordService.java
View file @
8f63af67
...
...
@@ -2,17 +2,23 @@ package com.makeit.service.platform.alarm;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.dto.platform.alarm.PlatDayDurationRecordDTO
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.utils.AlarmRedisDTO
;
import
java.util.List
;
/**
* @author lixl
* @description 针对表【plat_day_duration_record(每天停留时长记录)】的数据库操作Service
* @createDate 2023-09-14 10:14:20
*/
* @author lixl
* @description 针对表【plat_day_duration_record(每天停留时长记录)】的数据库操作Service
* @createDate 2023-09-14 10:14:20
*/
public
interface
PlatDayDurationRecordService
extends
IService
<
PlatDayDurationRecord
>
{
List
<
PlatDayDurationRecord
>
getDayMaxDurationList
(
PlatDayDurationRecordDTO
param
);
void
saveDayDurationRecord
(
PlatAlarmCheckDTO
platAlarmCheckDTO
,
AlarmRedisDTO
alarmRedisDTO
);
}
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/BehaviorAlarm.java
View file @
8f63af67
...
...
@@ -127,57 +127,11 @@ public class BehaviorAlarm implements IAlarm {
return
;
}
//保存每次进入空间时长
saveDayDurationRecord
(
platAlarmCheckDTO
,
alarmRedisDTO
);
platDayDurationRecordService
.
saveDayDurationRecord
(
platAlarmCheckDTO
,
alarmRedisDTO
);
RedisUtil
.
delete
(
RedisConst
.
ALARM_DEVICE_BEHAVIOR_ID
+
deviceId
);
}
}
/**
* 保存停留时长记录
* 进入雷达开始
* 走出雷达结束
*
* @param platAlarmCheckDTO
* @param alarmRedisDTO
*/
private
void
saveDayDurationRecord
(
PlatAlarmCheckDTO
platAlarmCheckDTO
,
AlarmRedisDTO
alarmRedisDTO
)
{
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
Date
now
=
new
Date
();
long
endLong
=
now
.
getTime
();
long
count
=
endLong
-
alarmRedisDTO
.
getStartLong
();
//save db
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
if
(
CollectionUtils
.
isEmpty
(
platAlarmCheckDTO
.
getPlatElderList
())){
log
.
error
(
"未关联长者,设备id:"
+
platDevice
.
getId
());
return
;
}
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
if
(
CollectionUtils
.
isNotEmpty
(
platElderList
)){
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
}
for
(
PlatElder
platElder
:
platElderList
)
{
if
(
StringUtils
.
isBlank
(
platElder
.
getRegionName
())){
continue
;
}
PlatDayDurationRecord
durationRecord
=
new
PlatDayDurationRecord
();
durationRecord
.
setElderIds
(
platElder
.
getId
());
durationRecord
.
setRegionName
(
platElder
.
getRegionName
());
durationRecord
.
setDuration
(
count
);
durationRecord
.
setOriDeviceId
(
platDevice
.
getOriDeviceId
());
durationRecord
.
setDay
(
alarmRedisDTO
.
getStart
());
durationRecord
.
setStartDate
(
alarmRedisDTO
.
getStart
());
durationRecord
.
setEndDate
(
now
);
durationRecord
.
setTenantId
(
config
.
getTenantId
());
durationRecord
.
setRoomId
(
platElder
.
getRoomId
());
durationRecord
.
setDeviceId
(
platDevice
.
getId
());
platDayDurationRecordService
.
saveOrUpdate
(
durationRecord
);
}
}
@Override
public
void
notice
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
...
...
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/BreathAlarm.java
View file @
8f63af67
...
...
@@ -70,11 +70,15 @@ public class BreathAlarm implements IAlarm {
}
else
{
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
String
ruleConfigStr
=
config
.
getRuleConfig
();
if
(
CommonEnum
.
NO
.
getValue
().
equals
(
config
.
getStatus
()))
{
log
.
error
(
"呼吸告警配置为启用,告警配置id:"
+
config
.
getId
());
return
;
}
if
(
StringUtils
.
isBlank
(
ruleConfigStr
))
{
log
.
error
(
"呼吸告警配置未配置,告警配置id:"
+
config
.
getId
());
return
;
}
ruleConfig
=
JsonUtil
.
toObj
(
ruleConfigStr
,
PlatAlarmConfigRespiratoryDTOVO
.
class
);
}
...
...
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/FallAlarm.java
View file @
8f63af67
...
...
@@ -3,7 +3,10 @@ package com.makeit.service.platform.alarm.alarmStrategy;
import
cn.hutool.core.convert.Convert
;
import
com.alibaba.fastjson.JSONObject
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.dto.platform.alarm.PlatAlarmConfigBehaviorDTOVO
;
import
com.makeit.entity.platform.alarm.PlatAlarmConfig
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.space.PlatRoom
;
...
...
@@ -11,7 +14,12 @@ import com.makeit.enums.CommonEnum;
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.PlatDayDurationRecordService
;
import
com.makeit.utils.AlarmConfigCacheUtil
;
import
com.makeit.utils.AlarmRedisDTO
;
import
com.makeit.utils.DayDurationUtil
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
com.makeit.utils.redis.RedisUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -20,6 +28,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
@Component
...
...
@@ -28,6 +38,15 @@ public class FallAlarm implements IAlarm {
@Autowired
private
PlatAlarmRecordService
platAlarmRecordService
;
@Autowired
private
PlatDayDurationRecordService
platDayDurationRecordService
;
@Autowired
private
AlarmConfigCacheUtil
alarmConfigCacheUtil
;
@Autowired
private
DayDurationUtil
dayDurationUtil
;
private
final
PlatAlarmConfigEnum
.
AlarmTypeEnum
alarmTypeEnum
=
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
FALL
;
@Override
...
...
@@ -46,25 +65,108 @@ public class FallAlarm implements IAlarm {
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
String
deviceId
=
platDevice
.
getId
();
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
//记录停留时长
recordDuration
(
platAlarmCheckDTO
);
//跌倒告警
AlarmRedisDTO
alarmRedisDTO
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_FALL_ID
+
deviceId
);
if
(
alarmRedisDTO
==
null
)
{
if
(
alarmRedisDTO
==
null
)
{
alarmRedisDTO
=
new
AlarmRedisDTO
();
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
NO
.
getValue
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_FALL_ID
+
deviceId
,
alarmRedisDTO
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_FALL_ID
+
deviceId
,
alarmRedisDTO
);
}
if
(
StringUtils
.
equals
(
personState
,
CommonEnum
.
YES
.
getValue
()))
{
if
(
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
YES
.
getValue
()))
{
log
.
error
(
"长者跌倒,已告警过,设备plat_id:"
+
deviceId
);
if
(
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
YES
.
getValue
()))
{
log
.
error
(
"长者跌倒,已告警过,设备plat_id:"
+
deviceId
);
return
;
}
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
YES
.
getValue
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_FALL_ID
+
deviceId
,
alarmRedisDTO
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_FALL_ID
+
deviceId
,
alarmRedisDTO
);
notice
(
platAlarmCheckDTO
);
}
else
{
if
(
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
YES
.
getValue
()))
{
if
(
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
YES
.
getValue
()))
{
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
NO
.
getValue
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_FALL_ID
+
deviceId
,
alarmRedisDTO
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_FALL_ID
+
deviceId
,
alarmRedisDTO
);
}
}
}
private
void
recordDuration
(
PlatAlarmCheckDTO
platAlarmCheckDTO
)
{
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
PlatAlarmConfig
config
=
alarmConfigCacheUtil
.
get
(
platDevice
.
getOrgId
(),
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
BEHAVIOR
.
getValue
());
String
ruleConfigStr
=
config
.
getRuleConfig
();
JSONObject
properties
=
platAlarmCheckDTO
.
getProperties
();
String
deviceId
=
platDevice
.
getId
();
if
(
StringUtils
.
isBlank
(
ruleConfigStr
))
{
log
.
error
(
"行为告警配置未配置,告警配置id:"
+
config
.
getId
());
return
;
}
String
personState
=
Convert
.
toStr
(
properties
.
get
(
"personState"
));
String
person
=
Convert
.
toStr
(
properties
.
get
(
"person"
));
PlatAlarmConfigBehaviorDTOVO
ruleConfig
=
JsonUtil
.
toObj
(
ruleConfigStr
,
PlatAlarmConfigBehaviorDTOVO
.
class
);
Integer
duration
=
ruleConfig
.
getAverageDuration
();
//分钟
PlatDayDurationRecord
platDayDurationRecord
=
dayDurationUtil
.
get
(
deviceId
);
// if (platDayDurationRecord == null) {
// log.error("行为告警未找到行为异常平均时长,设备plat_id:" + platDevice.getId());
// return;
// }
Integer
duration1
=
0
;
if
(
platDayDurationRecord
!=
null
)
{
duration1
=
Math
.
toIntExact
(
platDayDurationRecord
.
getDuration
());
}
//duration+平均停留时长
if
(
duration
==
null
)
{
duration
=
0
;
}
else
{
duration
=
duration
*
60
+
(
duration1
/
1000
);
}
List
<
String
>
personStateList
=
Arrays
.
asList
(
"0"
);
//有人
//计数
Date
now
=
new
Date
();
long
endLong
=
now
.
getTime
();
AlarmRedisDTO
alarmRedisDTO
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_BEHAVIOR_ID
+
deviceId
);
if
(
alarmRedisDTO
==
null
)
{
alarmRedisDTO
=
new
AlarmRedisDTO
();
}
//有人
if
(!
personStateList
.
contains
(
person
))
{
//第一次进入空间
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
if
(
startLong
==
null
)
{
alarmRedisDTO
.
setStartLong
(
endLong
);
alarmRedisDTO
.
setStart
(
now
);
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_BEHAVIOR_ID
+
deviceId
,
alarmRedisDTO
);
log
.
error
(
"空间雷达上报进入房间,设备plat_id:"
+
platDevice
.
getId
());
return
;
}
long
count
=
endLong
-
startLong
;
//进入空间时间满足告警时长,判断是否已经告警过了
if
(
duration
!=
0
&&
count
/
1000
>=
duration
&&
StringUtils
.
equals
(
alarmRedisDTO
.
getAlarm
(),
CommonEnum
.
NO
.
getValue
()))
{
log
.
error
(
"空间雷达发出告警,设备plat_id:"
+
platDevice
.
getId
());
if
(
duration1
!=
0
)
{
alarmRedisDTO
.
setAlarm
(
CommonEnum
.
YES
.
getValue
());
RedisUtil
.
set
(
RedisConst
.
ALARM_DEVICE_BEHAVIOR_ID
+
deviceId
,
alarmRedisDTO
);
notice
(
platAlarmCheckDTO
);
}
else
{
return
;
}
}
}
else
{
//没人
// 是否有第一次进入记录,有则保存db
Long
startLong
=
alarmRedisDTO
.
getStartLong
();
if
(
startLong
==
null
)
{
return
;
}
//保存每次进入空间时长
PlatAlarmCheckDTO
platAlarmCheckDTO_behavior
=
BeanDtoVoUtils
.
convert
(
platAlarmCheckDTO
,
PlatAlarmCheckDTO
.
class
);
platAlarmCheckDTO_behavior
.
setPlatAlarmConfig
(
config
);
platDayDurationRecordService
.
saveDayDurationRecord
(
platAlarmCheckDTO_behavior
,
alarmRedisDTO
);
RedisUtil
.
delete
(
RedisConst
.
ALARM_DEVICE_BEHAVIOR_ID
+
deviceId
);
}
}
...
...
@@ -83,11 +185,11 @@ public class FallAlarm implements IAlarm {
param
.
add
(
platElder
.
getName
());
param
.
add
(
platRoom
.
getName
());
platAlarmCheckDTO
.
setParam
(
param
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
,
platElder
);
PlatAlarmRecord
platAlarmRecord
=
platAlarmRecordService
.
convertToPlatAlarmRecord
(
platAlarmCheckDTO
,
platElder
);
platAlarmRecord
.
setElderIds
(
platElder
.
getId
());
platAlarmRecord
.
setElderName
(
platElder
.
getName
());
platAlarmRecordService
.
noticeDeviceAlarm
(
platAlarmCheckDTO
.
getPlatAlarmConfig
(),
platAlarmRecord
);
log
.
error
(
"长者跌倒,发出告警,设备id:"
+
platDevice
.
getId
()+
", 长者名称:"
+
platElder
.
getName
());
log
.
error
(
"长者跌倒,发出告警,设备id:"
+
platDevice
.
getId
()
+
", 长者名称:"
+
platElder
.
getName
());
}
}
}
server-service/src/main/java/com/makeit/service/platform/alarm/impl/PlatAlarmRecordServiceImpl.java
View file @
8f63af67
...
...
@@ -21,6 +21,7 @@ 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.PlatRoomBedDevice
;
import
com.makeit.entity.saas.PlatTenant
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.exception.BusinessException
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
...
...
@@ -33,6 +34,7 @@ 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.PlatRoomService
;
import
com.makeit.service.saas.PlatTenantService
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
import
com.makeit.utils.data.convert.PageUtil
;
import
com.makeit.utils.msg.MsgSendUtil
;
...
...
@@ -89,6 +91,8 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
private
PlatRoomService
platRoomService
;
@Autowired
private
PlatRegionSettingService
platRegionSettingService
;
@Autowired
private
PlatTenantService
platTenantService
;
@Override
...
...
@@ -147,6 +151,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
}
})
.
eq
(
StringUtils
.
isNotBlank
(
param
.
getNoticeStatus
()),
PlatAlarmRecord:
:
getNoticeStatus
,
param
.
getNoticeStatus
())
.
eq
(
StringUtils
.
isNotBlank
(
param
.
getReadFlag
()),
PlatAlarmRecord:
:
getReadFlag
,
param
.
getReadFlag
())
.
orderByDesc
(
BaseEntity:
:
getCreateDate
)
;
}
...
...
@@ -315,8 +320,22 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
if
(
StringUtils
.
isEmpty
(
notifyChannel
)){
return
;
}
PlatTenant
platTenant
=
platTenantService
.
getById
(
alarmConfig
.
getTenantId
());
if
(
platTenant
==
null
){
return
;
}
String
alertChannel
=
platTenant
.
getAlertChannel
();
if
(
StringUtils
.
isBlank
(
alertChannel
)){
return
;
}
String
[]
tenantChannels
=
alertChannel
.
split
(
","
);
List
<
String
>
tenantChannelList
=
Arrays
.
asList
(
tenantChannels
);
String
[]
split
=
notifyChannel
.
split
(
","
);
for
(
String
sendType
:
split
)
{
//租户告警渠道 没配置的 就不发送
if
(!
tenantChannelList
.
contains
(
sendType
)){
continue
;
}
SendTypeEnum
sendTypeEnum
=
SendTypeEnum
.
getByValue
(
sendType
);
boolean
contains
=
notifyChannelList
.
contains
(
sendTypeEnum
);
if
(
contains
)
{
...
...
@@ -491,4 +510,23 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
.
set
(
PlatAlarmRecord:
:
getReadFlag
,
CommonEnum
.
YES
.
getValue
());
update
(
recordLambdaUpdateWrapper
);
}
@Override
public
Integer
unreadCount
(
PlatAlarmRecordQueryDTO
dto
)
{
PlatElderChildrenInfo
platElderChildrenInfo
=
platElderChildrenInfoService
.
getById
(
WechatUserUtil
.
getUserId
());
log
.
info
(
"子女端账号:"
+
platElderChildrenInfo
.
toString
());
if
(
platElderChildrenInfo
==
null
)
{
return
0
;
}
String
elderId
=
platElderChildrenInfo
.
getElderId
();
if
(
StringUtils
.
isBlank
(
elderId
)){
return
0
;
}
String
[]
split
=
elderId
.
split
(
","
);
dto
.
setElderIdList
(
Arrays
.
asList
(
split
));
dto
.
setNoticeStatus
(
CommonEnum
.
YES
.
getValue
());
dto
.
setReadFlag
(
CommonEnum
.
NO
.
getValue
());
LambdaQueryWrapper
<
PlatAlarmRecord
>
lambdaQueryWrapper
=
getLambdaQueryWrapper
(
dto
);
return
Math
.
toIntExact
(
count
(
lambdaQueryWrapper
));
}
}
server-service/src/main/java/com/makeit/service/platform/alarm/impl/PlatDayDurationRecordServiceImpl.java
View file @
8f63af67
...
...
@@ -2,12 +2,22 @@ package com.makeit.service.platform.alarm.impl;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.dto.platform.alarm.PlatDayDurationRecordDTO
;
import
com.makeit.entity.platform.alarm.PlatAlarmConfig
;
import
com.makeit.entity.platform.alarm.PlatDayDurationRecord
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.mapper.platform.alarm.PlatDayDurationRecordMapper
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.alarm.PlatDayDurationRecordService
;
import
com.makeit.utils.AlarmRedisDTO
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -19,8 +29,59 @@ import java.util.List;
public
class
PlatDayDurationRecordServiceImpl
extends
ServiceImpl
<
PlatDayDurationRecordMapper
,
PlatDayDurationRecord
>
implements
PlatDayDurationRecordService
{
@Autowired
private
PlatAlarmRecordService
platAlarmRecordService
;
@Override
public
List
<
PlatDayDurationRecord
>
getDayMaxDurationList
(
PlatDayDurationRecordDTO
param
){
return
baseMapper
.
getDayMaxDurationList
(
param
);
}
/**
* 保存停留时长记录
* 进入雷达开始
* 走出雷达结束
*
* @param platAlarmCheckDTO
* @param alarmRedisDTO
*/
@Override
public
void
saveDayDurationRecord
(
PlatAlarmCheckDTO
platAlarmCheckDTO
,
AlarmRedisDTO
alarmRedisDTO
)
{
PlatAlarmConfig
config
=
platAlarmCheckDTO
.
getPlatAlarmConfig
();
PlatDevice
platDevice
=
platAlarmCheckDTO
.
getPlatDevice
();
Date
now
=
new
Date
();
long
endLong
=
now
.
getTime
();
long
count
=
endLong
-
alarmRedisDTO
.
getStartLong
();
//save db
platAlarmRecordService
.
getElderListByDeviceId
(
platAlarmCheckDTO
);
if
(
CollectionUtils
.
isEmpty
(
platAlarmCheckDTO
.
getPlatElderList
())){
log
.
error
(
"未关联长者,设备id:"
+
platDevice
.
getId
());
return
;
}
List
<
PlatElder
>
platElderList
=
platAlarmCheckDTO
.
getPlatElderList
();
// if(CollectionUtils.isNotEmpty(platElderList)){
// platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
// platElderList = platAlarmCheckDTO.getPlatElderList();
// }
for
(
PlatElder
platElder
:
platElderList
)
{
if
(
StringUtils
.
isBlank
(
platElder
.
getRegionName
())){
continue
;
}
PlatDayDurationRecord
durationRecord
=
new
PlatDayDurationRecord
();
durationRecord
.
setElderIds
(
platElder
.
getId
());
durationRecord
.
setRegionName
(
platElder
.
getRegionName
());
durationRecord
.
setDuration
(
count
);
durationRecord
.
setOriDeviceId
(
platDevice
.
getOriDeviceId
());
durationRecord
.
setDay
(
alarmRedisDTO
.
getStart
());
durationRecord
.
setStartDate
(
alarmRedisDTO
.
getStart
());
durationRecord
.
setEndDate
(
now
);
durationRecord
.
setTenantId
(
config
.
getTenantId
());
durationRecord
.
setRoomId
(
platElder
.
getRoomId
());
durationRecord
.
setDeviceId
(
platDevice
.
getId
());
this
.
saveOrUpdate
(
durationRecord
);
}
}
}
server-service/src/main/java/com/makeit/service/platform/auth/impl/PlatUserServiceImpl.java
View file @
8f63af67
...
...
@@ -30,6 +30,7 @@ import com.makeit.entity.saas.PlatTenant;
import
com.makeit.entity.saas.PlatTenantMenu
;
import
com.makeit.enums.CodeMessageEnum
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.HeaderConst
;
import
com.makeit.enums.IsTenantAccountEnum
;
import
com.makeit.enums.biz.auth.SysEnum
;
import
com.makeit.enums.id.TreeConst
;
...
...
@@ -61,6 +62,7 @@ import com.makeit.utils.data.convert.StreamUtil;
import
com.makeit.utils.data.excel.ExcelUtil
;
import
com.makeit.utils.data.excel.ExcelValidatorUtil
;
import
com.makeit.utils.data.id.IdGen
;
import
com.makeit.utils.request.RequestUtil
;
import
com.makeit.utils.sql.groupby.DynamicQuery
;
import
com.makeit.utils.sql.groupby.SqlUtil
;
import
com.makeit.utils.sql.join.JoinUtil
;
...
...
@@ -266,7 +268,7 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
@Transactional
@Override
public
void
edit
(
PlatUserDTOVO
dto
)
{
dto
.
setAccount
(
null
);
//
dto.setAccount(null);
check
(
dto
);
PlatUser
user
=
BeanDtoVoUtils
.
convert
(
dto
,
PlatUser
.
class
);
user
.
setIsTenant
(
CommonEnum
.
YES
.
getValue
());
...
...
@@ -537,9 +539,15 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
private
List
<
PlatMenu
>
getMenuListByUserId
(
PlatUserLoginVO
userLoginVO
)
{
String
currentRoleId
=
userLoginVO
.
getCurrentRoleId
();
List
<
String
>
roleIdList
=
new
ArrayList
<>();
if
(
StringUtils
.
isBlank
(
currentRoleId
))
{
List
<
PlatRole
>
roleList
=
getRoleList
(
userLoginVO
.
getId
());
roleIdList
=
StreamUtil
.
map
(
roleList
,
PlatRole:
:
getId
);
}
else
{
roleIdList
.
add
(
currentRoleId
);
}
List
<
PlatRole
>
roleList
=
getRoleList
(
userLoginVO
.
getId
());
List
<
String
>
roleIdList
=
StreamUtil
.
map
(
roleList
,
PlatRole:
:
getId
);
roleIdList
.
add
(-
1
+
""
);
List
<
PlatRoleMenu
>
roleMenuList
=
platRoleMenuService
.
list
(
new
QueryWrapper
<
PlatRoleMenu
>().
lambda
()
...
...
@@ -554,7 +562,7 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
.
orderByAsc
(
PlatMenu:
:
getCreateDate
)
);
userLoginVO
.
setRoleList
(
BeanDtoVoUtils
.
listVo
(
roleList
,
PlatRoleDTOVO
.
class
));
//
userLoginVO.setRoleList(BeanDtoVoUtils.listVo(roleList, PlatRoleDTOVO.class));
if
(
StringUtils
.
isNotBlank
(
userLoginVO
.
getTenantId
()))
{
Set
<
String
>
menuIdSet
=
StreamUtil
.
mapToSet
(
getMenuListByTenantId
(
userLoginVO
.
getTenantId
()),
PlatMenu:
:
getId
);
...
...
@@ -589,6 +597,7 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
return
userLoginVO
;
}
userLoginVO
.
setCurrentRoleId
(
RequestUtil
.
getHeader
(
HeaderConst
.
ROLE_ID
));
List
<
PlatMenu
>
menuList
=
getMenuListByUserId
(
userLoginVO
);
fillMenuList
(
menuList
,
userLoginVO
);
...
...
@@ -900,6 +909,9 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
fillDept
(
Arrays
.
asList
(
userVO
));
getRoleList
(
userVO
);
PlatTenant
platTenant
=
platTenantService
.
getById
(
userVO
.
getTenantId
());
userVO
.
setPlatTenant
(
platTenant
);
return
userVO
;
}
...
...
server-service/src/main/java/com/makeit/service/platform/dataScreen/DataScreenService.java
View file @
8f63af67
...
...
@@ -3,8 +3,10 @@ package com.makeit.service.platform.dataScreen;
import
com.makeit.common.page.PageReqDTO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO
;
import
com.makeit.dto.platform.device.PlatDeviceQueryDTO
;
import
com.makeit.utils.area.ChinaAreaVO
;
import
com.makeit.vo.platform.dataScreen.*
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
java.util.List
;
...
...
@@ -30,4 +32,6 @@ public interface DataScreenService {
List
<
ChinaAreaVO
>
mapList
(
PlatDataScreenQueryDTO
dto
);
PageVO
<
PlatAlarmStatisticsListVo
>
alarmPage
(
PageReqDTO
<
PlatDataScreenQueryDTO
>
page
);
PageVO
<
PlatDeviceListVO
>
devicePage
(
PageReqDTO
<
PlatDataScreenQueryDTO
>
pageReqDTO
);
}
server-service/src/main/java/com/makeit/service/platform/dataScreen/impl/DataScreenServiceImpl.java
View file @
8f63af67
package
com
.
makeit
.
service
.
platform
.
dataScreen
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.makeit.common.entity.BaseEntity
;
import
com.makeit.common.page.PageReqDTO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO
;
import
com.makeit.dto.platform.device.PlatDeviceQueryDTO
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.auth.PlatOrg
;
import
com.makeit.entity.platform.auth.PlatUser
;
...
...
@@ -12,6 +15,7 @@ import com.makeit.entity.platform.device.PlatDevice;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.entity.platform.space.PlatBed
;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.entity.platform.space.PlatRoomBedDevice
;
import
com.makeit.entity.platform.space.PlatSpace
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
...
...
@@ -26,26 +30,33 @@ import com.makeit.service.platform.dataScreen.DataScreenService;
import
com.makeit.service.platform.device.PlatDeviceService
;
import
com.makeit.service.platform.elder.PlatElderService
;
import
com.makeit.service.platform.space.PlatBedService
;
import
com.makeit.service.platform.space.PlatRoomBedDeviceService
;
import
com.makeit.service.platform.space.PlatSpaceService
;
import
com.makeit.utils.area.AreaUtil
;
import
com.makeit.utils.area.ChinaAreaVO
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
import
com.makeit.utils.data.convert.PageUtil
;
import
com.makeit.utils.data.convert.StreamUtil
;
import
com.makeit.utils.old.StringUtils
;
import
com.makeit.utils.sql.join.JoinUtil
;
import
com.makeit.vo.platform.dataScreen.*
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
com.makeit.vo.platform.elder.PlatElderListVO
;
import
jodd.util.StringUtil
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* Controller
...
...
@@ -69,6 +80,8 @@ public class DataScreenServiceImpl implements DataScreenService {
private
PlatSpaceService
platSpaceService
;
@Autowired
private
PlatOrgService
platOrgService
;
@Autowired
private
PlatRoomBedDeviceService
platRoomBedDeviceService
;
@Override
public
PlatAgeStatisticsVO
ageStatistics
(
PlatDataScreenQueryDTO
dto
)
{
...
...
@@ -295,6 +308,12 @@ public class DataScreenServiceImpl implements DataScreenService {
@Override
public
List
<
PlatMapStatisticsVO
>
mapStatistics
(
PlatDataScreenQueryDTO
dto
)
{
if
(
dto
.
getStartTime
()
==
null
){
dto
.
setStartTime
(
LocalDateTime
.
of
(
LocalDateTime
.
now
().
toLocalDate
(),
LocalTime
.
MIN
));
}
if
(
dto
.
getEndTime
()
==
null
){
dto
.
setEndTime
(
LocalDateTime
.
of
(
LocalDateTime
.
now
().
toLocalDate
(),
LocalTime
.
MAX
));
}
List
<
PlatMapStatisticsVO
>
list
=
new
ArrayList
<>();
if
(
dto
.
getOrgIds
().
isEmpty
()){
//获取该账号的权限组织
...
...
@@ -464,12 +483,87 @@ public class DataScreenServiceImpl implements DataScreenService {
listVo
.
setType
(
record
.
getAlarmType
());
listVo
.
setAlarmDate
(
record
.
getAlarmDate
().
format
(
df
));
listVo
.
setAlarmTime
(
record
.
getAlarmDate
().
format
(
dft
));
listVo
.
setAlarmRecordId
(
record
.
getId
());
list
.
add
(
listVo
);
}
return
PageUtil
.
toPageVO
(
list
,
pages
);
}
@Override
public
PageVO
<
PlatDeviceListVO
>
devicePage
(
PageReqDTO
<
PlatDataScreenQueryDTO
>
pageReqDTO
)
{
PlatDataScreenQueryDTO
dto
=
pageReqDTO
.
getData
();
if
(
dto
.
getOrgIds
().
isEmpty
()){
//获取该账号的权限组织
List
<
PlatOrg
>
orgs
=
belongToScopeList
(
dto
.
getType
());
if
(
orgs
.
isEmpty
()){
return
new
PageVO
<>();
}
List
<
String
>
orgIds
=
orgs
.
stream
().
map
(
PlatOrg:
:
getId
).
collect
(
Collectors
.
toList
());
dto
.
setOrgIds
(
orgIds
);
}
else
{
//根据类型过滤数据
List
<
PlatOrg
>
platOrgs
=
platOrgService
.
list
(
new
QueryWrapper
<
PlatOrg
>().
lambda
()
.
in
(
PlatOrg:
:
getId
,
dto
.
getOrgIds
())
.
eq
(
PlatOrg:
:
getType
,
dto
.
getType
()));
if
(
platOrgs
.
isEmpty
()){
return
new
PageVO
<>();
}
List
<
String
>
orgIdList
=
platOrgs
.
stream
().
map
(
PlatOrg:
:
getId
).
collect
(
Collectors
.
toList
());
dto
.
setOrgIds
(
orgIdList
);
}
Page
<
PlatDevice
>
p
=
PageUtil
.
toMpPage
(
pageReqDTO
);
// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<PlatDevice>()
// .eq(StringUtils.isNotBlank(dto.getDeviceStatus()), PlatDevice::getStatus, dto.getDeviceStatus())
// .in(PlatDevice::getOrgId, dto.getOrgIds())
// .orderByDesc(BaseEntity::getUpdateDate);
//
// Page<PlatDevice> page = platDeviceService.page(p, queryWrapper);
Page
<
PlatDeviceListVO
>
page
=
platDeviceService
.
getDevices
(
dto
,
p
);
List
<
PlatDeviceListVO
>
voList
=
page
.
getRecords
();
if
(
CollectionUtils
.
isEmpty
(
voList
)){
return
new
PageVO
<>();
}
List
<
String
>
spaceIdList
=
voList
.
stream
().
flatMap
(
vo
->
{
String
spaceParentPath
=
vo
.
getSpaceParentPath
();
String
spp
=
Optional
.
ofNullable
(
spaceParentPath
).
orElse
(
""
);
return
Stream
.
of
(
spp
.
split
(
","
));
}).
collect
(
Collectors
.
toList
());
spaceIdList
.
add
(
"-1"
);
List
<
PlatSpace
>
platSpaces
=
platSpaceService
.
listByIds
(
spaceIdList
);
Map
<
String
,
String
>
spaceIdNameMap
=
platSpaces
.
stream
().
collect
(
Collectors
.
toMap
(
BaseEntity:
:
getId
,
vo
->
vo
.
getName
(),
(
v1
,
v2
)
->
v1
));
for
(
PlatDeviceListVO
record
:
voList
)
{
String
spaceParentPath
=
record
.
getSpaceParentPath
();
if
(
StringUtils
.
isNotBlank
(
spaceParentPath
)){
String
spaceNameJoin
=
Stream
.
of
(
spaceParentPath
.
split
(
","
)).
map
(
vo
->
spaceIdNameMap
.
get
(
vo
)).
collect
(
Collectors
.
joining
(
"-"
));
String
spaceName
=
spaceNameJoin
+
"-"
+
record
.
getSpaceName
()
+
"-"
+
record
.
getRoomName
();
if
(
StringUtils
.
isNotBlank
(
record
.
getBedName
())){
spaceName
=
spaceName
+
"-"
+
record
.
getBedName
();
}
record
.
setSpaceName
(
spaceName
);
}
}
JoinUtil
.
join
(
voList
,
platOrgService
,
PlatDeviceListVO:
:
getOrgId
,
PlatOrg:
:
getId
,
(
d
,
o
)
->
{
d
.
setOrgName
(
o
.
getName
());
});
JoinUtil
.
joinSplit
(
voList
,
platOrgService
,
PlatDeviceListVO:
:
getOrgPath
,
PlatOrg:
:
getId
,
(
d
,
o
)
->
{
d
.
setOrgPathName
(
StreamUtil
.
join
(
o
,
PlatOrg:
:
getName
));
});
return
PageUtil
.
toPageVO
(
voList
,
page
);
}
private
List
<
PlatOrg
>
getAncestorsOrgList
(
List
<
PlatOrg
>
orgs
,
Set
<
String
>
parentOrgIds
)
{
orgs
=
orgs
.
stream
().
filter
(
t
->
parentOrgIds
.
contains
(
t
.
getId
())).
collect
(
Collectors
.
toList
());
Set
<
String
>
ancestorsOrgIdList
=
new
HashSet
<>();
...
...
@@ -491,7 +585,12 @@ public class DataScreenServiceImpl implements DataScreenService {
if
(
elderIds
.
size
()
>
0
)
{
if
(
platElderMap
.
get
(
elderIds
.
get
(
0
))
!=
null
)
{
PlatAlarmRecordStatisticsVo
statisticsVo
=
BeanDtoVoUtils
.
convert
(
record
,
PlatAlarmRecordStatisticsVo
.
class
);
statisticsVo
.
setSpaceId
(
platElderMap
.
get
(
elderIds
.
get
(
0
)).
getSpaceId
());
if
(
StringUtil
.
isNotEmpty
(
platElderMap
.
get
(
elderIds
.
get
(
0
)).
getSpacePath
())){
String
spacePath
=
platElderMap
.
get
(
elderIds
.
get
(
0
)).
getSpacePath
();
String
spaceId
=
Arrays
.
asList
(
spacePath
.
split
(
","
)).
get
(
0
);
statisticsVo
.
setSpaceId
(
spaceId
);
}
statisticsVos
.
add
(
statisticsVo
);
}
}
...
...
server-service/src/main/java/com/makeit/service/platform/device/PlatDeviceService.java
View file @
8f63af67
package
com
.
makeit
.
service
.
platform
.
device
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.makeit.common.page.PageReqDTO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO
;
import
com.makeit.dto.platform.device.PlatDeviceDetailDTO
;
import
com.makeit.dto.platform.device.PlatDeviceEditDTO
;
import
com.makeit.dto.platform.device.PlatDeviceQueryDTO
;
...
...
@@ -62,4 +64,6 @@ public interface PlatDeviceService extends IService<PlatDevice> {
List
<
DeviceProperties
>
readDeviceProperties
(
PlatDeviceAttrWechatDTO
dto
);
List
<
PlatDevice
>
productList
(
PlatDeviceQueryDTO
dto
);
Page
<
PlatDeviceListVO
>
getDevices
(
PlatDataScreenQueryDTO
dto
,
Page
<
PlatDevice
>
p
);
}
server-service/src/main/java/com/makeit/service/platform/device/impl/PlatDeviceServiceImpl.java
View file @
8f63af67
...
...
@@ -11,6 +11,7 @@ import com.makeit.common.entity.BaseBusEntity;
import
com.makeit.common.entity.BaseEntity
;
import
com.makeit.common.page.PageReqDTO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO
;
import
com.makeit.dto.platform.device.PlatDeviceDetailDTO
;
import
com.makeit.dto.platform.device.PlatDeviceEditDTO
;
import
com.makeit.dto.platform.device.PlatDeviceQueryDTO
;
...
...
@@ -22,6 +23,7 @@ import com.makeit.entity.platform.auth.PlatOrg;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.device.PlatDeviceOther
;
import
com.makeit.entity.platform.space.PlatRegionSetting
;
import
com.makeit.entity.platform.space.PlatSpace
;
import
com.makeit.enums.CodeMessageEnum
;
import
com.makeit.exception.BusinessException
;
import
com.makeit.mapper.platform.device.PlatDeviceMapper
;
...
...
@@ -32,21 +34,28 @@ import com.makeit.service.platform.auth.PlatOrgService;
import
com.makeit.service.platform.device.PlatDeviceOtherService
;
import
com.makeit.service.platform.device.PlatDeviceService
;
import
com.makeit.service.platform.space.PlatRegionSettingService
;
import
com.makeit.service.platform.space.PlatSpaceService
;
import
com.makeit.service.saas.PlatTenantService
;
import
com.makeit.utils.DeviceCacheUtil
;
import
com.makeit.utils.data.convert.BeanDtoVoUtils
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
com.makeit.utils.data.convert.PageUtil
;
import
com.makeit.utils.data.convert.StreamUtil
;
import
com.makeit.utils.old.StringUtils
;
import
com.makeit.utils.sql.join.JoinUtil
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
com.makeit.vo.platform.device.PlatDeviceViewVO
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* <p>
...
...
@@ -74,34 +83,68 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
private
PlatRegionSettingService
platRegionSettingService
;
@Autowired
private
IotProductDeviceService
iotProductDeviceService
;
@Autowired
private
PlatSpaceService
platSpaceService
;
@Override
public
PageVO
<
PlatDeviceListVO
>
page
(
PageReqDTO
<
PlatDeviceQueryDTO
>
pageReqDTO
)
{
PlatDeviceQueryDTO
dto
=
pageReqDTO
.
getData
();
Page
<
PlatDevice
>
p
=
PageUtil
.
toMpPage
(
pageReqDTO
);
Page
<
PlatDevice
>
page
=
page
(
p
,
new
QueryWrapper
<
PlatDevice
>().
lambda
()
.
like
(
StringUtils
.
isNotBlank
(
dto
.
getOriDeviceId
()),
PlatDevice:
:
getOriDeviceId
,
dto
.
getOriDeviceId
())
.
like
(
StringUtils
.
isNotBlank
(
dto
.
getName
()),
PlatDevice:
:
getName
,
dto
.
getName
())
.
eq
(
StringUtils
.
isNotBlank
(
dto
.
getStatus
()),
PlatDevice:
:
getStatus
,
dto
.
getStatus
())
.
like
(
StringUtils
.
isNotBlank
(
dto
.
getProductName
()),
PlatDevice:
:
getProductName
,
dto
.
getProductName
())
.
eq
(
StringUtils
.
isNotBlank
(
dto
.
getProductId
()),
PlatDevice:
:
getProductId
,
dto
.
getProductId
())
.
eq
(
StringUtils
.
isNotBlank
(
dto
.
getOrgId
()),
PlatDevice:
:
getOrgId
,
dto
.
getOrgId
())
// .apply(StringUtils.isNotBlank(dto.getOrgId()), "find_in_set('" + dto.getOrgId() + "',org_path)")
.
orderByDesc
(
BaseEntity:
:
getUpdateDate
)
);
Page
<
PlatDeviceListVO
>
page
=
baseMapper
.
getDeviceIdsBySpaceId
(
dto
,
p
);
// Page<PlatDevice> page = page(p, new QueryWrapper<PlatDevice>().lambda()
// .like(StringUtils.isNotBlank(dto.getOriDeviceId()), PlatDevice::getOriDeviceId, dto.getOriDeviceId())
// .like(StringUtils.isNotBlank(dto.getName()), PlatDevice::getName, dto.getName())
// .eq(StringUtils.isNotBlank(dto.getStatus()), PlatDevice::getStatus, dto.getStatus())
// .like(StringUtils.isNotBlank(dto.getProductName()), PlatDevice::getProductName, dto.getProductName())
// .eq(StringUtils.isNotBlank(dto.getProductId()), PlatDevice::getProductId, dto.getProductId())
// .eq(StringUtils.isNotBlank(dto.getOrgId()),PlatDevice::getOrgId,dto.getOrgId())
// .orderByDesc(BaseEntity::getUpdateDate)
// );
List
<
PlatDeviceListVO
>
records
=
page
.
getRecords
();
//List<PlatDeviceListVO> voList = BeanDtoVoUtils.listVo(records, PlatDeviceListVO.class);
if
(
CollectionUtils
.
isEmpty
(
records
))
{
return
new
PageVO
<>();
}
List
<
String
>
spaceIdList
=
records
.
stream
().
flatMap
(
vo
->
{
String
spaceParentPath
=
vo
.
getSpaceParentPath
();
String
spp
=
Optional
.
ofNullable
(
spaceParentPath
).
orElse
(
""
);
return
Stream
.
of
(
spp
.
split
(
","
));
}).
collect
(
Collectors
.
toList
());
spaceIdList
.
add
(
"-1"
);
List
<
PlatSpace
>
platSpaces
=
platSpaceService
.
listByIds
(
spaceIdList
);
List
<
PlatDeviceListVO
>
voList
=
BeanDtoVoUtils
.
listVo
(
page
.
getRecords
(),
PlatDeviceListVO
.
class
);
Map
<
String
,
String
>
spaceIdNameMap
=
platSpaces
.
stream
().
collect
(
Collectors
.
toMap
(
BaseEntity:
:
getId
,
vo
->
vo
.
getName
(),
(
v1
,
v2
)
->
v1
)
);
JoinUtil
.
join
(
voList
,
platOrgService
,
PlatDeviceListVO:
:
getOrgId
,
PlatOrg:
:
getId
,
(
d
,
o
)
->
{
for
(
PlatDeviceListVO
record
:
records
)
{
String
spaceParentPath
=
record
.
getSpaceParentPath
();
if
(
StringUtils
.
isNotBlank
(
spaceParentPath
))
{
String
spaceNameJoin
=
Stream
.
of
(
spaceParentPath
.
split
(
","
)).
map
(
vo
->
spaceIdNameMap
.
get
(
vo
)).
collect
(
Collectors
.
joining
(
"-"
));
String
spaceName
=
spaceNameJoin
+
"-"
+
record
.
getSpaceName
()
+
"-"
+
record
.
getRoomName
();
if
(
StringUtils
.
isNotBlank
(
record
.
getBedName
()))
{
spaceName
=
spaceName
+
"-"
+
record
.
getBedName
();
}
record
.
setSpaceName
(
spaceName
);
}
}
JoinUtil
.
join
(
records
,
platOrgService
,
PlatDeviceListVO:
:
getOrgId
,
PlatOrg:
:
getId
,
(
d
,
o
)
->
{
d
.
setOrgName
(
o
.
getName
());
});
JoinUtil
.
joinSplit
(
voList
,
platOrgService
,
PlatDeviceListVO:
:
getOrgPath
,
PlatOrg:
:
getId
,
(
d
,
o
)
->
{
JoinUtil
.
joinSplit
(
records
,
platOrgService
,
PlatDeviceListVO:
:
getOrgPath
,
PlatOrg:
:
getId
,
(
d
,
o
)
->
{
d
.
setOrgPathName
(
StreamUtil
.
join
(
o
,
PlatOrg:
:
getName
));
});
return
PageUtil
.
toPageVO
(
voList
,
page
);
return
PageUtil
.
toPageVO
(
records
,
page
);
}
...
...
@@ -122,13 +165,13 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
check
(
dto
);
PlatDevice
db
=
getById
(
dto
.
getId
());
BeanUtils
.
copyProperties
(
dto
,
db
,
BaseBusEntity
.
Fields
.
tenantId
);
BeanUtils
.
copyProperties
(
dto
,
db
,
BaseBusEntity
.
Fields
.
tenantId
);
updateById
(
db
);
deviceCacheUtil
.
put
(
db
);
iotProductDeviceService
.
syncUpdateDeviceInfo
(
db
.
getOriDeviceId
(),
dto
.
getName
());
// iotProductDeviceService.syncUpdateDeviceInfo(db.getOriDeviceId(),dto.getName(),db.getProductId
());
}
@Override
...
...
@@ -155,7 +198,15 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
PlatDevice
db
=
getOne
(
new
QueryWrapper
<
PlatDevice
>().
lambda
()
.
eq
(
PlatDevice:
:
getOriDeviceId
,
dto
.
getOriDeviceId
()));
String
id
=
db
.
getId
();
if
(
db
==
null
)
{
throw
new
RuntimeException
(
"设备不存在:"
+
db
.
getOriDeviceId
());
}
String
id
=
null
;
if
(
db
!=
null
)
{
id
=
db
.
getId
();
}
PlatDeviceOther
other
=
platDeviceOtherService
.
getOne
(
new
QueryWrapper
<
PlatDeviceOther
>().
lambda
()
.
eq
(
PlatDeviceOther:
:
getOriDeviceId
,
dto
.
getOriDeviceId
()));
...
...
@@ -168,15 +219,16 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
BeanUtils
.
copyProperties
(
dto
,
db
);
db
.
setId
(
id
);
saveOrUpdate
(
db
);
id
=
db
.
getId
();
deviceCacheUtil
.
put
(
db
);
BeanUtils
.
copyProperties
(
dto
,
other
);
other
.
setId
(
otherId
);
other
.
setDeviceId
(
id
);
other
.
setOriDeviceId
(
db
.
getOriDeviceId
());
updateById
(
db
);
deviceCacheUtil
.
put
(
db
);
platDeviceOtherService
.
saveOrUpdate
(
other
);
...
...
@@ -210,10 +262,14 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
platDeviceOtherService
.
saveOrUpdate
(
other
);
//更新区域设置设备安装方式
platRegionSettingService
.
update
(
new
UpdateWrapper
<
PlatRegionSetting
>().
lambda
()
.
set
(
PlatRegionSetting:
:
getInstallType
,
other
.
getInstallation
())
.
eq
(
PlatRegionSetting:
:
getDeviceId
,
other
.
getDeviceId
()));
if
(
StringUtils
.
isNotEmpty
(
other
.
getAttribute
()))
{
PlatDeviceAttrWechatDTO
deviceAttrWechatDTO
=
JsonUtil
.
toObj
(
other
.
getAttribute
(),
PlatDeviceAttrWechatDTO
.
class
);
//更新区域设置设备安装方式
platRegionSettingService
.
update
(
new
UpdateWrapper
<
PlatRegionSetting
>().
lambda
()
.
set
(
PlatRegionSetting:
:
getInstallType
,
deviceAttrWechatDTO
.
getRadarMount
())
.
eq
(
PlatRegionSetting:
:
getDeviceId
,
other
.
getDeviceId
()));
}
}
@Override
...
...
@@ -224,10 +280,10 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
Page
<
PlatDevice
>
devicePage
=
page
(
page
,
lambdaQueryWrapper
);
List
<
PlatDevice
>
records
=
devicePage
.
getRecords
();
List
<
PlatDeviceListVO
>
platDeviceListVOS
=
BeanDtoVoUtils
.
listVo
(
records
,
PlatDeviceListVO
.
class
);
JoinUtil
.
join
(
platDeviceListVOS
,
platTenantService
,
BaseTenantDTO:
:
getTenantId
,
BaseEntity:
:
getId
,(
d
,
o
)->
{
JoinUtil
.
join
(
platDeviceListVOS
,
platTenantService
,
BaseTenantDTO:
:
getTenantId
,
BaseEntity:
:
getId
,
(
d
,
o
)
->
{
d
.
setTenantName
(
o
.
getName
());
});
return
PageUtil
.
toPageVO
(
platDeviceListVOS
,
devicePage
);
return
PageUtil
.
toPageVO
(
platDeviceListVOS
,
devicePage
);
}
@Override
...
...
@@ -245,7 +301,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
BeanUtils
.
copyProperties
(
dto
,
db
);
db
.
setId
(
id
);
BeanUtils
.
copyProperties
(
dto
,
other
,
BaseEntity
.
Fields
.
id
);
BeanUtils
.
copyProperties
(
dto
,
other
,
BaseEntity
.
Fields
.
id
);
other
.
setDeviceId
(
id
);
updateById
(
db
);
...
...
@@ -290,7 +346,12 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
@Override
public
void
editDeviceProperties
(
PlatDeviceAttrWechatDTO
dto
)
{
devicePropertiesOperateService
.
deviceWrite
(
dto
.
getDeviceId
(),
dto
.
getRadarMount
(),
dto
.
getRadarMode
(),
dto
.
getRadarHight
());
devicePropertiesOperateService
.
deviceWrite
(
dto
.
getDeviceId
(),
dto
.
getRadarMount
(),
dto
.
getRadarMode
(),
dto
.
getRadarHight
());
//更新区域设置设备安装方式
platRegionSettingService
.
update
(
new
UpdateWrapper
<
PlatRegionSetting
>().
lambda
()
.
set
(
PlatRegionSetting:
:
getInstallType
,
dto
.
getRadarMount
())
.
eq
(
PlatRegionSetting:
:
getDeviceId
,
dto
.
getDeviceId
()));
}
...
...
@@ -318,4 +379,9 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
.
groupBy
(
PlatDevice:
:
getProductId
));
return
platDevices
;
}
@Override
public
Page
<
PlatDeviceListVO
>
getDevices
(
PlatDataScreenQueryDTO
dto
,
Page
<
PlatDevice
>
page
)
{
return
baseMapper
.
getDevices
(
dto
,
page
);
}
}
server-service/src/main/java/com/makeit/service/platform/elder/PlatElderDayReportDayService.java
View file @
8f63af67
...
...
@@ -49,4 +49,5 @@ public interface PlatElderDayReportDayService {
List
<
PlatElderBehaviorDistributionVO
>
behaviorDistribution
(
PlatElderReportDTO
platElderIdDTO
);
void
elderCoordinateListAnalysisTask
();
}
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportDayServiceImpl.java
View file @
8f63af67
...
...
@@ -13,7 +13,6 @@ import com.makeit.module.iot.enums.DeviceInfoContentFallEnum;
import
com.makeit.module.iot.service.IotProductDeviceService
;
import
com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe
;
import
com.makeit.module.iot.vo.fall.DeviceInfoContentFall
;
import
com.makeit.module.iot.vo.space.DeviceInfoContentSpace
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.alarm.PlatDayDurationRecordService
;
import
com.makeit.service.platform.elder.*
;
...
...
@@ -26,11 +25,11 @@ import com.makeit.utils.time.LocalDateTimeUtils;
import
com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO
;
import
com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO
;
import
com.makeit.vo.platform.elder.report.day.*
;
import
org.apache.commons.lang3.RandomUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
...
...
@@ -353,7 +352,13 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
}
@Override
public
void
elderCoordinateListAnalysisTask
()
{
}
@Override
public
List
<
PlatElderCoordinateVO
>
coordinateList
(
String
elderId
,
String
deviceId
,
LocalDateTime
start
,
LocalDateTime
end
)
{
List
<
PlatDevice
>
platDeviceList
=
platElderRealTimeService
.
getSpaceDevice
(
elderId
,
deviceId
);
if
(
CollectionUtils
.
isEmpty
(
platDeviceList
))
{
...
...
@@ -362,14 +367,49 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
List
<
PlatElderCoordinateVO
>
voList
=
new
ArrayList
<>(
10
);
platDeviceList
.
forEach
(
e
->
{
List
<
DeviceInfoContentSpace
>
spaceList
=
iotProductDeviceService
.
getDeviceLogByTimeRangeSpace
(
e
.
getOriDeviceId
(),
2
*
24
*
3600
,
start
,
end
);
// TODO 暂时为假数据
int
count
=
20
;
for
(
PlatDevice
platDevice
:
platDeviceList
)
{
for
(
int
i
=
0
;
i
<
count
;
i
++)
{
PlatElderCoordinateVO
vo
=
new
PlatElderCoordinateVO
();
int
distance
=
RandomUtils
.
nextInt
(
1
,
1000
);
int
angle
=
RandomUtils
.
nextInt
(
1
,
180
)
-
120
;
// vo.setX(new BigDecimal(distance).multiply(new BigDecimal(Math.cos(angle) + "")).setScale(2, RoundingMode.HALF_UP));
// vo.setY(new BigDecimal(distance).multiply(new BigDecimal(Math.sin(angle) + "")).setScale(2, RoundingMode.HALF_UP));
vo
.
setDistance
(
distance
);
vo
.
setAngle
(
angle
);
vo
.
setDeviceId
(
platDevice
.
getId
());
vo
.
setOriDeviceId
(
platDevice
.
getOriDeviceId
());
voList
.
add
(
vo
);
}
}
return
voList
;
/*
List<PlatDevice> platDeviceListSpace = platElderRealTimeService.getSpaceDevice(elderId, deviceId);
List<PlatDevice> platDeviceListFall = platElderRealTimeService.getFallDevice(elderId, deviceId);
if (CollectionUtils.isEmpty(platDeviceListSpace) && CollectionUtils.isEmpty(platDeviceListFall)) {
return new ArrayList<>(10);
}
List<PlatElderCoordinateVO> voList = new ArrayList<>(10);
platDeviceListSpace.forEach(e -> {
List<DeviceInfoContentSpace> spaceList = iotProductDeviceService.getDeviceLogByTimeRangeSpace(e.getOriDeviceId(), 24 * 3600, start, end);
voList.addAll(StreamUtil.map(spaceList, i -> {
PlatElderCoordinateVO vo = new PlatElderCoordinateVO();
vo
.
setX
(
new
BigDecimal
(
i
.
getProperties
().
getDistance
()).
multiply
(
new
BigDecimal
(
Math
.
cos
(
i
.
getProperties
().
getAngle
())
+
""
)).
setScale
(
2
,
RoundingMode
.
HALF_UP
));
vo
.
setY
(
new
BigDecimal
(
i
.
getProperties
().
getDistance
()).
multiply
(
new
BigDecimal
(
Math
.
sin
(
i
.
getProperties
().
getAngle
())
+
""
)).
setScale
(
2
,
RoundingMode
.
HALF_UP
));
// vo.setX(new BigDecimal(i.getProperties().getDistance()).multiply(new BigDecimal(Math.cos(i.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
// vo.setY(new BigDecimal(i.getProperties().getDistance()).multiply(new BigDecimal(Math.sin(i.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
vo.setDistance(i.getProperties().getDistance());
vo.setAngle(i.getProperties().getAngle());
...
...
@@ -384,7 +424,27 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
});
platDeviceListFall.forEach(e -> {
List<DeviceInfoContentFall> fallList = iotProductDeviceService.getDeviceLogByTimeRangeFall(e.getOriDeviceId(), 2 * 24 * 3600, start, end);
voList.addAll(StreamUtil.map(fallList, i -> {
PlatElderCoordinateVO vo = new PlatElderCoordinateVO();
vo.setTrack(i.getProperties().getTrack());
vo.setDeviceId(e.getId());
vo.setOriDeviceId(e.getOriDeviceId());
return vo;
})
);
});
return voList;
*/
}
@Override
...
...
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportWeekServiceImpl.java
View file @
8f63af67
...
...
@@ -2,6 +2,7 @@ package com.makeit.service.platform.elder.impl;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.makeit.common.entity.BaseBusEntity
;
import
com.makeit.dto.platform.elder.PlatElderReportDTO
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.platform.elder.*
;
...
...
@@ -150,9 +151,13 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
public
PlatElderComprehensiveEvaluationVO
comprehensiveEvaluationInternal
(
PlatElderSleepEvaluationVO
platElderSleepEvaluationVO
,
PlatElderHeartRespiratoryEvaluationVO
platElderHeartRespiratoryEvaluationVO
)
{
PlatElderComprehensiveEvaluationVO
platElderComprehensiveEvaluationVO
=
new
PlatElderComprehensiveEvaluationVO
();
platElderComprehensiveEvaluationVO
.
setScore
((
platElderSleepEvaluationVO
.
getScore
()
+
platElderHeartRespiratoryEvaluationVO
.
getScore
())
/
2
);
int
sleepScore
=
0
;
if
(
platElderSleepEvaluationVO
!=
null
)
{
sleepScore
=
platElderSleepEvaluationVO
.
getScore
();
}
platElderComprehensiveEvaluationVO
.
setScore
((
sleepScore
+
platElderHeartRespiratoryEvaluationVO
.
getScore
())
/
2
);
EvaluateReportVO
evaluateReportVO
=
saasElderReportConfigService
.
getByScore
(
platElderSleepEvaluationVO
.
getScore
()
);
EvaluateReportVO
evaluateReportVO
=
saasElderReportConfigService
.
getByScore
(
sleepScore
);
if
(
evaluateReportVO
!=
null
)
{
platElderComprehensiveEvaluationVO
.
setEvaluation
(
evaluateReportVO
.
getEvaluate
());
}
...
...
@@ -380,13 +385,13 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
List
<
LocalDate
>
dateList
=
LocalDateTimeUtils
.
getDateSeries
(
weekStartDate
,
weekEndDate
);
String
deviceId
=
null
;
String
oriDeviceId
=
null
;
//
String oriDeviceId = null;
PlatDevice
platDevice
=
platElderRealTimeService
.
getBreathDevice
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
if
(
platDevice
!=
null
)
{
deviceId
=
platDevice
.
getId
();
oriDeviceId
=
platDevice
.
getOriDeviceId
();
//
oriDeviceId = platDevice.getOriDeviceId();
}
LambdaQueryWrapper
<
PlatElderBreatheDayStat
>
lambdaQueryWrapper
=
new
QueryWrapper
<
PlatElderBreatheDayStat
>().
lambda
();
...
...
@@ -395,25 +400,25 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
lambdaQueryWrapper
.
le
(
PlatElderBreatheDayStat:
:
getDay
,
weekEndDate
);
String
finalDeviceId
=
deviceId
;
String
finalOriDeviceId
=
oriDeviceId
;
lambdaQueryWrapper
.
and
(
StringUtils
.
isNotBlank
(
platElderIdDTO
.
getElderId
())
||
StringUtils
.
isNotBlank
(
finalDeviceId
)
||
StringUtils
.
isNotBlank
(
finalOriDeviceId
)
,
qw
->
{
//
String finalOriDeviceId = oriDeviceId;
lambdaQueryWrapper
.
and
(
StringUtils
.
isNotBlank
(
platElderIdDTO
.
getElderId
())
||
StringUtils
.
isNotBlank
(
finalDeviceId
)
/*|| StringUtils.isNotBlank(finalOriDeviceId)*/
,
qw
->
{
if
(
StringUtils
.
isNotBlank
(
platElderIdDTO
.
getElderId
()))
{
qw
.
eq
(
PlatElderBreatheDayStat:
:
getElderId
,
platElderIdDTO
.
getElderId
());
}
if
(
StringUtils
.
isNotBlank
(
finalDeviceId
))
{
qw
.
or
().
eq
(
PlatElderBreatheDayStat:
:
getDeviceId
,
finalDeviceId
);
}
if
(
StringUtils
.
isNotBlank
(
finalOriDeviceId
))
{
qw
.
or
().
eq
(
PlatElderBreatheDayStat:
:
getOriDeviceId
,
finalOriDeviceId
);
}
//
if (StringUtils.isNotBlank(finalOriDeviceId)) {
//
qw.or().eq(PlatElderBreatheDayStat::getOriDeviceId, finalOriDeviceId);
//
}
});
lambdaQueryWrapper
.
eq
(
StringUtils
.
isNotBlank
(
platElderIdDTO
.
getTenantId
()),
BaseBusEntity:
:
getTenantId
,
platElderIdDTO
.
getTenantId
());
lambdaQueryWrapper
.
orderByAsc
(
PlatElderBreatheDayStat:
:
getDay
);
List
<
PlatElderBreatheDayStat
>
breatheDayStatList
=
platElderBreatheDayStatService
.
list
(
lambdaQueryWrapper
);
Map
<
LocalDate
,
PlatElderBreatheDayStat
>
map
=
StreamUtil
.
toMap
(
breatheDayStatList
,
PlatElderBreatheDayStat:
:
getDay
);
Map
<
LocalDate
,
PlatElderBreatheDayStat
>
map
=
StreamUtil
.
toMap
Dep
(
breatheDayStatList
,
PlatElderBreatheDayStat:
:
getDay
);
List
<
PlatElderRealTimeHeartRespiratoryWeekVO
>
voList
=
new
ArrayList
<>(
10
);
...
...
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderRealTimeServiceImpl.java
View file @
8f63af67
package
com
.
makeit
.
service
.
platform
.
elder
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.google.common.collect.Lists
;
import
com.makeit.common.entity.BaseEntity
;
import
com.makeit.dto.platform.elder.PlatElderIdDTO
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.saas.analysis.SaasSleepAnalysisModel
;
import
com.makeit.entity.saas.analysis.SaasSleepEvaluateReport
;
import
com.makeit.enums.platform.elder.PlatElderRealtimeReportEnum
;
import
com.makeit.module.iot.enums.DeviceInfoContentBreatheEnum
;
import
com.makeit.module.iot.enums.DeviceInfoContentFallEnum
;
import
com.makeit.module.iot.enums.DeviceInfoContentSpaceEnum
;
import
com.makeit.module.iot.enums.DeviceState
;
import
com.makeit.module.iot.service.IotProductDeviceService
;
import
com.makeit.module.iot.vo.DeviceInfo
;
import
com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe
;
import
com.makeit.module.iot.vo.fall.DeviceInfoContentFall
;
import
com.makeit.module.iot.vo.space.DeviceInfoContentSpace
;
import
com.makeit.service.platform.device.PlatDeviceService
;
import
com.makeit.service.platform.elder.PlatElderDayReportDayService
;
...
...
@@ -27,8 +32,10 @@ import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import
com.makeit.vo.platform.elder.realtime.PlatElderRealTimeBodyVO
;
import
com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO
;
import
com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO
;
import
io.swagger.models.auth.In
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.RandomUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
...
...
@@ -40,6 +47,7 @@ import java.util.List;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* <p>
...
...
@@ -51,10 +59,18 @@ import java.util.stream.Collectors;
*/
@Service
@Slf4j
public
class
PlatElderRealTimeServiceImpl
implements
PlatElderRealTimeService
{
public
static
final
String
ELDER_STATUS
=
"plat:elder:status:"
;
public
static
final
String
ELDER_BR_HR
=
"plat:elder:brHr:"
;
public
static
final
String
ELDER_MOVE
=
"plat:elder:move:"
;
public
static
final
String
DEVICE_BR_DATA
=
"device:brhr:data:"
;
public
static
final
String
DEVICE_SPACE_DATA
=
"device:space:data:"
;
public
static
final
String
DEVICE_FALL_DATA
=
"device:fall:data:"
;
@Autowired
private
PlatElderService
platElderService
;
...
...
@@ -69,6 +85,8 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
@Autowired
private
SaasSleepAnalysisModelService
saasSleepAnalysisModelService
;
@Autowired
private
StringRedisTemplate
redisTemplate
;
@Override
public
PlatDevice
getBreathDevice
(
String
elderId
,
String
deviceId
)
{
...
...
@@ -123,6 +141,9 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
if
(
platDevice
==
null
)
{
return
null
;
}
if
(!
platDevice
.
getStatus
().
equals
(
DeviceState
.
online
.
getValue
()))
{
return
null
;
}
DeviceInfoContentBreathe
deviceInfoContentBreathe
=
iotProductDeviceService
.
getLastDeviceLogBreathe
(
platDevice
.
getOriDeviceId
(),
10
);
...
...
@@ -143,13 +164,46 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
}
private
List
<
DeviceInfoContentFall
>
getNowDataFall
(
String
elderId
,
String
deviceId
)
{
List
<
PlatDevice
>
deviceList
=
getFallDevice
(
elderId
,
deviceId
);
if
(
CollectionUtils
.
isEmpty
(
deviceList
))
{
return
null
;
}
return
deviceList
.
stream
().
map
(
e
->
iotProductDeviceService
.
getLastDeviceLogFall
(
e
.
getOriDeviceId
(),
10
)).
filter
(
Objects:
:
nonNull
)
.
collect
(
Collectors
.
toList
());
}
private
void
nowStatusOut
(
PlatElderRealTimeNowVO
platElderRealTimeNowVO
,
PlatElderIdDTO
platElderIdDTO
)
{
List
<
DeviceInfoContentSpace
>
deviceInfoContentSpaceList
=
getNowDataSpace
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
if
(
CollectionUtils
.
isEmpty
(
deviceInfoContentSpaceList
))
{
List
<
DeviceInfoContentFall
>
deviceInfoContentFallList
=
getNowDataFall
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
if
(
CollectionUtils
.
isEmpty
(
deviceInfoContentSpaceList
)
&&
CollectionUtils
.
isEmpty
(
deviceInfoContentFallList
))
{
return
;
}
if
(
StreamUtil
.
allMatch
(
deviceInfoContentSpaceList
,
e
->
DeviceInfoContentSpaceEnum
.
PersonStateEnum
.
NOBODY
.
getValue
().
equals
(
e
.
getProperties
().
getPersonState
())))
{
// if (StreamUtil.allMatch(deviceInfoContentSpaceList, e -> DeviceInfoContentSpaceEnum.PersonStateEnum.NOBODY.getValue().equals(e.getProperties().getPersonState()))) {
// platElderRealTimeNowVO.setStatus(PlatElderRealtimeReportEnum.NowStatus.OUT.getValue());
// }
Boolean
spaceFlag
=
null
;
Boolean
fallFlag
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
deviceInfoContentSpaceList
))
{
spaceFlag
=
StreamUtil
.
allMatch
(
deviceInfoContentSpaceList
,
e
->
DeviceInfoContentSpaceEnum
.
PersonStateEnum
.
NOBODY
.
getValue
().
equals
(
e
.
getProperties
().
getPersonState
()));
}
if
(
CollectionUtils
.
isNotEmpty
(
deviceInfoContentFallList
))
{
fallFlag
=
StreamUtil
.
allMatch
(
deviceInfoContentFallList
,
e
->
DeviceInfoContentFallEnum
.
PersonStateEnum
.
NOBODY
.
getValue
().
equals
(
e
.
getProperties
().
getPersonState
()));
}
List
<
Boolean
>
flagList
=
Stream
.
of
(
spaceFlag
,
fallFlag
).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
flagList
)
&&
StreamUtil
.
allMatch
(
flagList
,
Boolean
.
TRUE
::
equals
))
{
platElderRealTimeNowVO
.
setStatus
(
PlatElderRealtimeReportEnum
.
NowStatus
.
OUT
.
getValue
());
}
...
...
@@ -161,7 +215,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
return
;
}
boolean
flag
=
DeviceInfoContentBreatheEnum
.
PersonStateEnum
.
NOBODY
.
getValue
().
equals
(
nowDataBreathe
.
getProperties
().
getPersonState
()
+
""
);
boolean
flag
=
DeviceInfoContentBreatheEnum
.
PersonStateEnum
.
NOBODY
.
getValue
().
equals
(
nowDataBreathe
.
getProperties
().
getPersonState
()
+
""
);
if
(!
flag
)
{
return
;
...
...
@@ -182,7 +236,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
return
;
}
boolean
flag
=
DeviceInfoContentBreatheEnum
.
PersonStateEnum
.
NOBODY
.
getValue
().
equals
(
nowDataBreathe
.
getProperties
().
getPersonState
()
+
""
);
boolean
flag
=
DeviceInfoContentBreatheEnum
.
PersonStateEnum
.
NOBODY
.
getValue
().
equals
(
nowDataBreathe
.
getProperties
().
getPersonState
()
+
""
);
if
(!
flag
)
{
return
;
...
...
@@ -203,7 +257,7 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
return
;
}
boolean
flag
=
!
DeviceInfoContentBreatheEnum
.
PersonStateEnum
.
NOBODY
.
getValue
().
equals
(
nowDataBreathe
.
getProperties
().
getPersonState
()
+
""
);
boolean
flag
=
!
DeviceInfoContentBreatheEnum
.
PersonStateEnum
.
NOBODY
.
getValue
().
equals
(
nowDataBreathe
.
getProperties
().
getPersonState
()
+
""
);
if
(!
flag
)
{
return
;
}
...
...
@@ -239,15 +293,32 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
@Override
public
PlatElderRealTimeNowVO
nowStatus
(
PlatElderIdDTO
platElderIdDTO
)
{
Object
result
=
RedisUtil
.
get
(
ELDER_STATUS
+
platElderIdDTO
.
getElderId
());
PlatElderRealTimeNowVO
platElderRealTimeNowVO
=
new
PlatElderRealTimeNowVO
();
platElderRealTimeNowVO
.
setStatus
(
PlatElderRealtimeReportEnum
.
NowStatus
.
RUN
.
getValue
());
PlatDevice
platDevice
=
getBreathDevice
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
if
(
platDevice
==
null
)
{
return
platElderRealTimeNowVO
;
}
String
brResult
=
redisTemplate
.
opsForValue
().
get
(
DEVICE_BR_DATA
+
platDevice
.
getOriDeviceId
());
if
(
brResult
!=
null
)
{
JSONObject
jsonObject
=
JSON
.
parseObject
(
brResult
);
String
person
=
jsonObject
.
getString
(
"person"
);
log
.
info
(
"当前人员人员状态:{}"
,
person
);
if
(
StringUtils
.
equals
(
person
,
"1"
))
{
platElderRealTimeNowVO
.
setStatus
(
PlatElderRealtimeReportEnum
.
NowStatus
.
BED
.
getValue
());
return
platElderRealTimeNowVO
;
}
}
return
platElderRealTimeNowVO
;
/* Object result = RedisUtil.get(ELDER_STATUS + platElderIdDTO.getElderId());
if (result != null) {
return
JSON
.
parseObject
(
result
.
toString
(),
PlatElderRealTimeNowVO
.
class
);
return JSON.parseObject(result.toString(),
PlatElderRealTimeNowVO.class);
}
DeviceInfoContentBreathe deviceInfoContentBreathe = getNowDataBreathe(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId());
//
PlatElderRealTimeNowVO
platElderRealTimeNowVO
=
new
PlatElderRealTimeNowVO
();
//
if (deviceInfoContentBreathe == null) {
return platElderRealTimeNowVO;
}
...
...
@@ -274,68 +345,264 @@ public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
platElderRealTimeNowVO.setRespiratoryRate(deviceInfoContentBreathe.getProperties().getBr());
platElderRealTimeNowVO.setBodyMove(deviceInfoContentBreathe.getProperties().getBodymove());
RedisUtil
.
set
(
ELDER_STATUS
+
platElderIdDTO
.
getElderId
(),
JSON
.
toJSONString
(
platElderRealTimeNowVO
),
15
,
TimeUnit
.
SECONDS
);
RedisUtil.set(ELDER_STATUS + platElderIdDTO.getElderId(), JSON.toJSONString(platElderRealTimeNowVO),
10
, TimeUnit.SECONDS);
return platElderRealTimeNowVO;
*/
}
@Override
public
PlatElderRealTimeHeartRespiratoryVO
heartRespiratory
(
PlatElderIdDTO
platElderIdDTO
)
{
PlatElderRealTimeHeartRespiratoryVO
vo
=
new
PlatElderRealTimeHeartRespiratoryVO
();
vo
.
setTime
(
LocalDateTime
.
now
());
PlatDevice
platDevice
=
getBreathDevice
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
if
(
platDevice
==
null
)
{
return
vo
;
}
String
result
=
redisTemplate
.
opsForValue
().
get
(
DEVICE_BR_DATA
+
platDevice
.
getOriDeviceId
());
log
.
info
(
"实时获取设备呼吸数据:{}"
,
result
);
if
(
result
!=
null
)
{
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
if
(
jsonObject
!=
null
)
{
String
person
=
jsonObject
.
getString
(
"person"
);
log
.
info
(
"当前人员人员状态:{}"
,
person
);
vo
.
setTime
(
LocalDateTime
.
now
());
if
(
StringUtils
.
equals
(
person
,
"0"
))
{
vo
.
setHeartRate
(
0
);
vo
.
setRespiratoryRate
(
0
);
vo
.
setBody
(
0
);
vo
.
setStatus
(
PlatElderRealtimeReportEnum
.
NowStatus
.
RUN
.
getValue
());
}
else
{
vo
.
setHeartRate
(
Integer
.
valueOf
(
jsonObject
.
getString
(
"hr"
)));
vo
.
setRespiratoryRate
(
Integer
.
valueOf
(
jsonObject
.
getString
(
"br"
)));
vo
.
setBody
(
Integer
.
valueOf
(
jsonObject
.
getString
(
"bodymove"
)));
vo
.
setStatus
(
PlatElderRealtimeReportEnum
.
NowStatus
.
BED
.
getValue
());
}
}
return
vo
;
}
DeviceInfoContentBreathe
deviceInfoContentBreathe
=
getNowDataBreathe
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
if
(
deviceInfoContentBreathe
==
null
)
{
return
vo
;
}
int
heartRate
=
deviceInfoContentBreathe
.
getProperties
().
getHr
();
int
respiratoryRate
=
deviceInfoContentBreathe
.
getProperties
().
getBr
();
int
body
=
deviceInfoContentBreathe
.
getProperties
().
getBodymove
();
int
person
=
deviceInfoContentBreathe
.
getProperties
().
getPerson
();
if
(
heartRate
==
0
)
{
vo
.
setHeartRate
(
0
);
}
else
{
int
hrRange
=
RandomUtils
.
nextInt
(
1
,
11
)
-
5
;
vo
.
setHeartRate
(
Math
.
max
(
heartRate
+
hrRange
,
0
));
}
if
(
respiratoryRate
==
0
)
{
vo
.
setRespiratoryRate
(
0
);
}
else
{
int
brRange
=
RandomUtils
.
nextInt
(
1
,
7
)
-
3
;
vo
.
setRespiratoryRate
(
Math
.
max
(
respiratoryRate
+
brRange
,
0
));
}
if
(
body
==
0
)
{
vo
.
setBody
(
body
);
}
else
{
int
hrRange
=
RandomUtils
.
nextInt
(
1
,
11
)
-
5
;
vo
.
setBody
(
Math
.
max
(
body
+
hrRange
,
0
));
}
vo
.
setStatus
(
person
==
1
?
PlatElderRealtimeReportEnum
.
NowStatus
.
BED
.
getValue
()
:
PlatElderRealtimeReportEnum
.
NowStatus
.
RUN
.
getValue
());
return
vo
;
/* String brResult = redisTemplate.opsForList().rightPop(ELDER_BR_HR + platElderIdDTO.getElderId());
if (brResult != null) {
return JSON.parseObject(brResult,PlatElderRealTimeHeartRespiratoryVO.class);
}
if (deviceInfoContentBreathe == null) {
return new PlatElderRealTimeHeartRespiratoryVO();
}
int count = 10;
for (int i = 0; i < count; i++) {
}
redisTemplate.opsForList().leftPush(ELDER_BR_HR + platElderIdDTO.getElderId(),JSON.toJSONString(platElderRealTimeHeartRespiratoryVO));
}
return JSON.parseObject(redisTemplate.opsForList().rightPop(ELDER_BR_HR + platElderIdDTO.getElderId()),PlatElderRealTimeHeartRespiratoryVO.class);*/
/*
PlatElderRealTimeHeartRespiratoryVO platElderRealTimeHeartRespiratoryVO = new PlatElderRealTimeHeartRespiratoryVO();
platElderRealTimeHeartRespiratoryVO.setTime(LocalDateTime.now());
if
(
deviceInfoContentBreathe
==
null
)
{
return
platElderRealTimeHeartRespiratoryVO
;
}
platElderRealTimeHeartRespiratoryVO.setHeartRate(deviceInfoContentBreathe.getProperties().getHr());
platElderRealTimeHeartRespiratoryVO
.
setRespiratoryRate
(
deviceInfoContentBreathe
.
getProperties
().
getBr
());
platElderRealTimeHeartRespiratoryVO.setRespiratoryRate(deviceInfoContentBreathe.getProperties().getBr());
*/
return
platElderRealTimeHeartRespiratoryVO
;
//
return platElderRealTimeHeartRespiratoryVO;
}
@Override
public
PlatElderRealTimeBodyVO
body
(
PlatElderIdDTO
platElderIdDTO
)
{
String
result
=
redisTemplate
.
opsForList
().
rightPop
(
ELDER_MOVE
+
platElderIdDTO
.
getElderId
());
if
(
result
!=
null
)
{
return
JSON
.
parseObject
(
result
,
PlatElderRealTimeBodyVO
.
class
);
}
DeviceInfoContentBreathe
deviceInfoContentBreathe
=
getNowDataBreathe
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
if
(
deviceInfoContentBreathe
==
null
)
{
return
new
PlatElderRealTimeBodyVO
();
}
int
count
=
10
;
int
body
=
deviceInfoContentBreathe
.
getProperties
().
getBodymove
();
for
(
int
i
=
0
;
i
<
count
;
i
++)
{
PlatElderRealTimeBodyVO
platElderRealTimeBodyVO
=
new
PlatElderRealTimeBodyVO
();
platElderRealTimeBodyVO
.
setTime
(
LocalDateTime
.
now
().
plusSeconds
(
i
));
if
(
i
==
0
)
{
platElderRealTimeBodyVO
.
setBodyMovementIndex
(
body
);
}
else
{
if
(
body
==
0
)
{
platElderRealTimeBodyVO
.
setBodyMovementIndex
(
0
);
}
else
{
int
hrRange
=
RandomUtils
.
nextInt
(
1
,
11
)
-
5
;
platElderRealTimeBodyVO
.
setBodyMovementIndex
(
Math
.
max
(
body
+
hrRange
,
0
));
}
PlatElderRealTimeBodyVO
platElderRealTimeBodyVO
=
new
PlatElderRealTimeBodyVO
();
}
redisTemplate
.
opsForList
().
leftPush
(
ELDER_MOVE
+
platElderIdDTO
.
getElderId
(),
JSON
.
toJSONString
(
platElderRealTimeBodyVO
));
}
return
JSON
.
parseObject
(
redisTemplate
.
opsForList
().
rightPop
(
ELDER_MOVE
+
platElderIdDTO
.
getElderId
()),
PlatElderRealTimeBodyVO
.
class
);
/*PlatElderRealTimeBodyVO platElderRealTimeBodyVO = new PlatElderRealTimeBodyVO();
platElderRealTimeBodyVO.setTime(LocalDateTime.now());
if
(
deviceInfoContentBreathe
==
null
)
{
return
platElderRealTimeBodyVO
;
}
platElderRealTimeBodyVO.setBodyMovementIndex(deviceInfoContentBreathe.getProperties().getBodymove());
return
platElderRealTimeBodyVO
;
return platElderRealTimeBodyVO;
*/
}
// @Override
// public List<PlatElderCoordinateVO> coordinate(PlatElderIdDTO platElderIdDTO) {
// List<DeviceInfoContentSpace> deviceInfoContentSpaceList = getNowDataSpace(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId());
//
// List<PlatElderCoordinateVO> voList = new ArrayList<>(10);
//
// if (CollectionUtils.isEmpty(deviceInfoContentSpaceList)) {
// return voList;
// }
//
// voList = StreamUtil.map(deviceInfoContentSpaceList, e -> {
// PlatElderCoordinateVO vo = new PlatElderCoordinateVO();
//
//// vo.setDeviceId();
//// vo.setOriDeviceId();
//
// vo.setX(new BigDecimal(e.getProperties().getDistance()).multiply(new BigDecimal(Math.cos(e.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
// vo.setY(new BigDecimal(e.getProperties().getDistance()).multiply(new BigDecimal(Math.sin(e.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
//
// vo.setDistance(e.getProperties().getDistance());
// vo.setAngle(e.getProperties().getAngle());
//
// return vo;
// });
//
// return voList;
// }
@Override
public
List
<
PlatElderCoordinateVO
>
coordinate
(
PlatElderIdDTO
platElderIdDTO
)
{
List
<
DeviceInfoContentSpace
>
deviceInfoContentSpaceList
=
getNowDataSpace
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
List
<
PlatElderCoordinateVO
>
voList
=
new
ArrayList
<>(
10
);
if
(
CollectionUtils
.
isEmpty
(
deviceInfoContentSpaceList
))
{
if
(
platElderIdDTO
==
null
||
StringUtils
.
isEmpty
(
platElderIdDTO
.
getElderId
()))
{
return
voList
;
}
List
<
PlatDevice
>
deviceListSpace
=
getSpaceDevice
(
platElderIdDTO
.
getElderId
(),
platElderIdDTO
.
getDeviceId
());
for
(
PlatDevice
platDevice
:
deviceListSpace
)
{
String
spaceResult
=
redisTemplate
.
opsForValue
().
get
(
DEVICE_SPACE_DATA
+
platDevice
.
getOriDeviceId
());
if
(
spaceResult
!=
null
)
{
PlatElderCoordinateVO
vo
=
new
PlatElderCoordinateVO
();
JSONObject
jsonObject
=
JSON
.
parseObject
(
spaceResult
);
vo
.
setDeviceId
(
platDevice
.
getId
());
vo
.
setOriDeviceId
(
platDevice
.
getOriDeviceId
());
vo
.
setDistance
(
Integer
.
valueOf
(
jsonObject
.
getString
(
"distance"
)));
vo
.
setAngle
(
Integer
.
valueOf
(
jsonObject
.
getString
(
"angle"
)));
voList
.
add
(
vo
);
}
String
fallResult
=
redisTemplate
.
opsForValue
().
get
(
DEVICE_FALL_DATA
+
platDevice
.
getOriDeviceId
());
if
(
fallResult
!=
null
)
{
PlatElderCoordinateVO
vo
=
new
PlatElderCoordinateVO
();
JSONObject
jsonObject
=
JSON
.
parseObject
(
spaceResult
);
vo
.
setDeviceId
(
platDevice
.
getId
());
vo
.
setOriDeviceId
(
platDevice
.
getOriDeviceId
());
//vo.setTrack((List<Integer>) jsonObject.get("track"));
voList
.
add
(
vo
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
voList
))
{
return
voList
;
}
voList
=
StreamUtil
.
map
(
deviceInfoContentSpaceList
,
e
->
{
PlatElderCoordinateVO
vo
=
new
PlatElderCoordinateVO
();
int
count
=
20
;
for
(
PlatDevice
platDevice
:
deviceListSpace
)
{
for
(
int
i
=
0
;
i
<
count
;
i
++)
{
PlatElderCoordinateVO
vo
=
new
PlatElderCoordinateVO
();
int
distance
=
RandomUtils
.
nextInt
(
1
,
1000
);
int
angle
=
RandomUtils
.
nextInt
(
1
,
180
)
-
120
;
vo
.
setX
(
new
BigDecimal
(
e
.
getProperties
().
getDistance
()).
multiply
(
new
BigDecimal
(
Math
.
cos
(
e
.
getProperties
().
getAngle
()
)
+
""
)).
setScale
(
2
,
RoundingMode
.
HALF_UP
));
vo
.
setY
(
new
BigDecimal
(
e
.
getProperties
().
getDistance
()).
multiply
(
new
BigDecimal
(
Math
.
sin
(
e
.
getProperties
().
getAngle
()
)
+
""
)).
setScale
(
2
,
RoundingMode
.
HALF_UP
));
// vo.setX(new BigDecimal(distance).multiply(new BigDecimal(Math.cos(angle
) + "")).setScale(2, RoundingMode.HALF_UP));
// vo.setY(new BigDecimal(distance).multiply(new BigDecimal(Math.sin(angle
) + "")).setScale(2, RoundingMode.HALF_UP));
vo
.
setDistance
(
e
.
getProperties
().
getDistance
()
);
vo
.
setAngle
(
e
.
getProperties
().
getAngle
()
);
vo
.
setDistance
(
distance
);
vo
.
setAngle
(
angle
);
return
vo
;
});
vo
.
setDeviceId
(
platDevice
.
getId
());
vo
.
setOriDeviceId
(
platDevice
.
getOriDeviceId
());
voList
.
add
(
vo
);
}
}
/* if (CollectionUtils.isNotEmpty(deviceListSpace)) {
deviceListSpace.forEach(e -> {
DeviceInfoContentSpace i = iotProductDeviceService.getLastDeviceLogSpace(e.getOriDeviceId(), 10);
if (i == null) {
return;
}
PlatElderCoordinateVO vo = new PlatElderCoordinateVO();
vo.setDeviceId(e.getId());
vo.setOriDeviceId(e.getOriDeviceId());
// vo.setX(new BigDecimal(i.getProperties().getDistance()).multiply(new BigDecimal(Math.cos(i.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
// vo.setY(new BigDecimal(i.getProperties().getDistance()).multiply(new BigDecimal(Math.sin(i.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
vo.setDistance(i.getProperties().getDistance());
vo.setAngle(i.getProperties().getAngle());
voList.add(vo);
});
}
if (CollectionUtils.isNotEmpty(deviceListFall)) {
deviceListFall.forEach(e -> {
DeviceInfoContentFall i = iotProductDeviceService.getLastDeviceLogFall(e.getOriDeviceId(), 10);
if (i == null) {
return;
}
PlatElderCoordinateVO vo = new PlatElderCoordinateVO();
vo.setDeviceId(e.getId());
vo.setOriDeviceId(e.getOriDeviceId());
vo.setTrack(i.getProperties().getTrack());
voList.add(vo);
});
}*/
return
voList
;
}
}
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderReportMonthServiceImpl.java
View file @
8f63af67
...
...
@@ -127,9 +127,11 @@ public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReport
LocalDate
end
=
LocalDateTimeUtils
.
getMonthMax
(
start
);
List
<
PlatElderReportMonth
>
monthList
=
list
(
new
QueryWrapper
<
PlatElderReportMonth
>().
lambda
()
.
eq
(
PlatElderReportMonth:
:
getElderId
,
platElderIdDTO
.
getElderId
())
.
eq
(
StringUtils
.
isNotBlank
(
platElderIdDTO
.
getElderId
()),
PlatElderReportMonth:
:
getElderId
,
platElderIdDTO
.
getElderId
())
.
eq
(
StringUtils
.
isNotBlank
(
platElderIdDTO
.
getDeviceId
()),
PlatElderReportMonth:
:
getBreatheDeviceId
,
platElderIdDTO
.
getDeviceId
())
.
ge
(
PlatElderReportMonth:
:
getDay
,
start
)
.
le
(
PlatElderReportMonth:
:
getDay
,
end
)
.
orderByAsc
(
PlatElderReportMonth:
:
getDay
)
);
List
<
PlatElderReportMonthVO
>
voList
=
BeanDtoVoUtils
.
listVo
(
monthList
,
PlatElderReportMonthVO
.
class
);
...
...
@@ -179,6 +181,10 @@ public class PlatElderReportMonthServiceImpl extends ServiceImpl<PlatElderReport
List
<
DeviceInfoContentBreathe
>
breatheList
=
iotProductDeviceService
.
getDeviceLogByTimeRangeBreathe
(
platDevice
.
getOriDeviceId
(),
2
*
24
*
3600
,
yesStart
,
yesEnd
);
if
(
CollectionUtils
.
isNotEmpty
(
breatheList
))
{
reportMonth
.
setBreatheDeviceId
(
platDevice
.
getId
());
reportMonth
.
setBreatheOriDeviceId
(
platDevice
.
getOriDeviceId
());
reportMonth
.
setHeartRate
((
int
)
(
StreamUtil
.
reduce
(
breatheList
,
i
->
(
long
)
i
.
getProperties
().
getHr
(),
0L
,
Long:
:
sum
)
/
breatheList
.
size
()));
reportMonth
.
setRespiratoryRate
((
int
)
(
StreamUtil
.
reduce
(
breatheList
,
i
->
(
long
)
i
.
getProperties
().
getBr
(),
0L
,
Long:
:
sum
)
/
breatheList
.
size
()));
}
...
...
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderServiceImpl.java
View file @
8f63af67
...
...
@@ -114,7 +114,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
.
orderByDesc
(
PlatElder:
:
getId
);
}
private
void
fill
(
List
<
PlatElderListVO
>
list
){
private
void
fill
(
List
<
PlatElderListVO
>
list
)
{
JoinUtil
.
join
(
list
,
platOrgService
,
PlatElderListVO:
:
getOrgId
,
PlatOrg:
:
getId
,
(
d
,
o
)
->
{
d
.
setOrgName
(
o
.
getName
());
});
...
...
@@ -191,6 +192,15 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
List
<
PlatElder
>
dbList
=
list
(
lambdaQueryWrapper
(
dto
));
dbList
.
forEach
(
e
->{
if
(
StringUtils
.
isNotBlank
(
e
.
getHomeAddressDetail
()))
{
e
.
setHomeAddressDetail
(
e
.
getHomeAddress
());
}
if
(
StringUtils
.
isNotBlank
(
e
.
getRegisterAddressDetail
()))
{
e
.
setRegisterAddressDetail
(
e
.
getRegisterAddress
());
}
});
List
<
PlatElderHealthInfo
>
healthInfoList
=
platElderHealthInfoService
.
list
(
new
QueryWrapper
<
PlatElderHealthInfo
>().
lambda
()
.
in
(
PlatElderHealthInfo:
:
getElderId
,
StreamUtil
.
mapId
(
dbList
,
PlatElder:
:
getId
)));
Map
<
String
,
PlatElderHealthInfo
>
healthInfoMap
=
StreamUtil
.
toMap
(
healthInfoList
,
PlatElderHealthInfo:
:
getElderId
);
...
...
@@ -576,9 +586,23 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
}
private
void
addressToDetail
(
PlatElderDTOVO
dto
)
{
if
(
StringUtils
.
isNotBlank
(
dto
.
getHomeAddressDetail
()))
{
dto
.
setHomeAddressDetail
(
dto
.
getHomeAddress
());
}
if
(
StringUtils
.
isNotBlank
(
dto
.
getRegisterAddressDetail
()))
{
dto
.
setRegisterAddressDetail
(
dto
.
getRegisterAddress
());
}
}
@Transactional
@Override
public
void
addAll
(
PlatElderDTOVO
dto
)
{
addressToDetail
(
dto
);
check
(
BeanDtoVoUtils
.
convert
(
dto
,
PlatElderAddDTO
.
class
));
PlatElder
platElder
=
BeanDtoVoUtils
.
convert
(
dto
,
PlatElder
.
class
);
...
...
@@ -665,6 +689,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
@Transactional
public
void
edit
(
PlatElderDTOVO
dto
)
{
addressToDetail
(
dto
);
check
(
BeanDtoVoUtils
.
convert
(
dto
,
PlatElderAddDTO
.
class
));
PlatElder
db
=
getById
(
dto
.
getId
());
...
...
@@ -700,6 +726,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
PlatElder
platElder
=
getById
(
id
);
PlatElderDTOVO
vo
=
BeanDtoVoUtils
.
convert
(
platElder
,
PlatElderDTOVO
.
class
);
addressToDetail
(
vo
);
FileUtil
.
convert
(
Arrays
.
asList
(
vo
),
PlatElderDTOVO:
:
getAvatar
,
(
e
,
f
)
->
{
e
.
setAvatar
(
f
.
getFullUrl
());
});
...
...
@@ -892,6 +920,9 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
public
List
<
PlatDevice
>
getSpaceDevice
(
String
id
)
{
PlatElder
platElder
=
getById
(
id
);
if
(
platElder
==
null
)
{
return
null
;
}
if
(
StringUtils
.
isBlank
(
platElder
.
getBedId
()))
{
return
null
;
}
...
...
@@ -903,6 +934,10 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
public
List
<
PlatDevice
>
getFallDevice
(
String
id
)
{
PlatElder
platElder
=
getById
(
id
);
if
(
platElder
==
null
)
{
return
null
;
}
if
(
StringUtils
.
isBlank
(
platElder
.
getBedId
()))
{
return
null
;
}
...
...
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
View file @
8f63af67
...
...
@@ -98,7 +98,11 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
public
void
elderSleepSleepAnalysisTask
()
{
List
<
String
>
dayHourRangeList
=
getLastDayHourRange
();
String
currentDate
=
DateUtil
.
format
(
new
Date
(),
DatePattern
.
NORM_DATE_PATTERN
);
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
());
calendar
.
add
(
Calendar
.
DAY_OF_MONTH
,
-
1
);
Date
previousDate
=
calendar
.
getTime
();
String
currentDate
=
DateUtil
.
format
(
previousDate
,
DatePattern
.
NORM_DATE_PATTERN
);
SaasSleepAnalysisModel
analysisModel
=
saasSleepAnalysisModelService
.
getOne
(
new
QueryWrapper
<
SaasSleepAnalysisModel
>().
lambda
()
.
orderByDesc
(
BaseEntity:
:
getCreateBy
)
...
...
@@ -157,8 +161,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
continue
;
}
String
tenantId
=
elder
.
getTenantId
();
/*
String reportStartTime = "";
String reportEndTime = "";
*/
String
reportStartTime
=
""
;
String
reportEndTime
=
""
;
for
(
String
hourRange
:
dayHourRangeList
)
{
String
[]
hourRangeArray
=
hourRange
.
split
(
"~"
);
List
<
DeviceOperationLogEntity
>
deviceOperationLogEntities
=
productDeviceService
.
getDeviceLogByTimeRange
(
platDevice
.
getOriDeviceId
(),
"reportProperty"
,
5000
,
hourRangeArray
[
0
],
hourRangeArray
[
1
]);
...
...
@@ -180,10 +184,10 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
Map
<
String
,
AnalysisVO
>
statisticsMap
=
Maps
.
newHashMap
();
List
<
DeviceInfoContentBreathe
>
deviceInfoContentBreathes
;
for
(
Map
.
Entry
<
String
,
List
<
DeviceInfoContentBreathe
>>
entry
:
minuteMap
.
entrySet
())
{
/*
if (StringUtils.isEmpty(reportStartTime)) {
if
(
StringUtils
.
isEmpty
(
reportStartTime
))
{
reportStartTime
=
entry
.
getKey
();
}
reportEndTime = entry.getKey();
*/
reportEndTime
=
entry
.
getKey
();
deviceInfoContentBreathes
=
entry
.
getValue
();
DeviceInfoContentBreathe
.
Properties
breatheProperties
;
...
...
@@ -500,10 +504,10 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
int
timeHourRange
=
24
;
/*
if (StringUtils.isNotEmpty(reportStartTime) && StringUtils.isNotEmpty(reportEndTime)) {
if
(
StringUtils
.
isNotEmpty
(
reportStartTime
)
&&
StringUtils
.
isNotEmpty
(
reportEndTime
))
{
Long
durationRange
=
getDurationRange
(
reportStartTime
,
reportEndTime
);
timeHourRange
=
(
int
)
(
durationRange
/
60
);
}
*/
}
// 判断是否满足配置的呼吸心率异常类型
BigDecimal
dayBrStopRate
=
brStopCount
==
0
?
BigDecimal
.
ZERO
:
new
BigDecimal
(
timeHourRange
).
divide
(
new
BigDecimal
(
brStopCount
),
2
,
RoundingMode
.
HALF_UP
);
...
...
@@ -610,7 +614,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
platElderBreatheAbnormal
.
setTenantId
(
tenantId
);
platElderBreatheAbnormalList
.
add
(
platElderBreatheAbnormal
);
}
//
platElderBreatheAbnormalService.saveBatch(platElderBreatheAbnormalList);
//platElderBreatheAbnormalService.saveBatch(platElderBreatheAbnormalList);
int
totalActionCount
=
0
;
...
...
@@ -1030,7 +1034,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
elderSleep
.
setTenantId
(
tenantId
);
}
// TODO 起床时间和入睡时间
//
platElderSleepService.saveBatch(elderSleepList);
platElderSleepService
.
saveBatch
(
elderSleepList
);
EvaluateReportVO
elderReport
=
saasElderReportConfigService
.
getByScore
(
totalScore
);
...
...
@@ -1048,7 +1052,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
elderSleepAnalysis
.
setSleepResult
(
sleepReport
.
getResult
());
elderSleepAnalysis
.
setTenantId
(
tenantId
);
elderSleepAnalysis
.
setSleepEvaluate
(
elderReport
==
null
?
""
:
elderReport
.
getEvaluate
());
//
platElderSleepAnalysisService.save(elderSleepAnalysis);
platElderSleepAnalysisService
.
save
(
elderSleepAnalysis
);
}
}
...
...
server-service/src/main/java/com/makeit/service/platform/space/PlatRoomBedDeviceService.java
View file @
8f63af67
...
...
@@ -55,4 +55,6 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> {
List
<
PlatDevice
>
getSpaceDevice
(
String
bedId
);
List
<
PlatDevice
>
getFallDevice
(
String
bedId
);
PageVO
<
PlatDeviceDTO
>
pageBindDevice
(
PageReqDTO
<
PlatBedDeviceQueryDTO
>
page
);
}
server-service/src/main/java/com/makeit/service/platform/space/PlatRoomService.java
View file @
8f63af67
...
...
@@ -66,4 +66,8 @@ public interface PlatRoomService extends IService<PlatRoom> {
List
<
WorkStationInstitutionRoomVO
>
workStationList
(
WorkStationQueryDTO
dto
);
Page
<
WorkStationInstitutionRoomVO
>
workStationPage
(
Page
<
WorkStationQueryDTO
>
objectPage
,
WorkStationQueryDTO
data
);
List
<
PlatSpaceAndRoomVO
>
spaceList
(
List
<
String
>
orgIds
);
List
<
PlatSpaceAndRoomVO
>
roomList
(
List
<
String
>
orgIds
);
}
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomBedDeviceServiceImpl.java
View file @
8f63af67
...
...
@@ -209,7 +209,9 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
@Override
public
PlatDevice
getBreathDevice
(
String
bedId
)
{
PlatRoomBedDevice
device
=
getOne
(
new
QueryWrapper
<
PlatRoomBedDevice
>().
lambda
()
.
eq
(
PlatRoomBedDevice:
:
getBedId
,
bedId
));
.
eq
(
PlatRoomBedDevice:
:
getBedId
,
bedId
)
.
last
(
"limit 1"
)
);
if
(
device
==
null
)
{
return
null
;
...
...
@@ -254,4 +256,46 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
public
List
<
PlatDevice
>
getFallDevice
(
String
bedId
)
{
return
getDeviceInternal
(
bedId
,
PlatDeviceEnum
.
CategoryEnum
.
FALL
.
getValue
());
}
@Override
public
PageVO
<
PlatDeviceDTO
>
pageBindDevice
(
PageReqDTO
<
PlatBedDeviceQueryDTO
>
pageReqDTO
)
{
PlatBedDeviceQueryDTO
dto
=
pageReqDTO
.
getData
();
Page
<
PlatDevice
>
p
=
PageUtil
.
toMpPage
(
pageReqDTO
);
LambdaQueryWrapper
<
PlatRoomBedDevice
>
queryWrapper1
=
new
LambdaQueryWrapper
<>();
queryWrapper1
.
eq
(
PlatRoomBedDevice:
:
getRoomId
,
dto
.
getRoomId
());
queryWrapper1
.
eq
(
StringUtil
.
isNotEmpty
(
dto
.
getBedId
()),
PlatRoomBedDevice:
:
getBedId
,
dto
.
getBedId
());
List
<
PlatRoomBedDevice
>
list
=
list
(
queryWrapper1
);
List
<
String
>
listEquipmentIds
=
list
.
stream
().
map
(
item
->
item
.
getDeviceId
()).
collect
(
Collectors
.
toList
());
List
<
String
>
listBedIds
=
list
.
stream
().
map
(
item
->
item
.
getBedId
()).
collect
(
Collectors
.
toList
());
LambdaQueryWrapper
<
PlatBed
>
queryWrapper2
=
new
LambdaQueryWrapper
<>();
queryWrapper2
.
in
(
PlatBed:
:
getId
,
listBedIds
);
List
<
PlatBed
>
listBeds
=
platBedService
.
list
(
queryWrapper2
);
Map
<
String
,
String
>
map
=
listBeds
.
stream
().
collect
(
Collectors
.
toMap
(
PlatBed:
:
getId
,
PlatBed:
:
getName
,
(
k1
,
k2
)
->
k1
));
Map
<
String
,
String
>
mapName
=
new
HashMap
<>(
20
);
Map
<
String
,
String
>
mapBedId
=
new
HashMap
<>(
20
);
list
.
forEach
(
item
->
{
if
(
map
.
containsKey
(
item
.
getBedId
()))
{
mapName
.
put
(
item
.
getDeviceId
(),
map
.
get
(
item
.
getBedId
()));
mapBedId
.
put
(
item
.
getDeviceId
(),
item
.
getBedId
());
}
});
if
(!
listEquipmentIds
.
isEmpty
())
{
LambdaQueryWrapper
<
PlatDevice
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
//queryWrapper.eq(PlatDevice::getCategory, PlatDeviceEnum.CategoryEnum.HEART);
queryWrapper
.
in
(
PlatDevice:
:
getId
,
listEquipmentIds
);
Page
<
PlatDevice
>
pages
=
platDeviceService
.
page
(
p
,
queryWrapper
);
List
<
PlatDeviceDTO
>
data
=
BeanDtoVoUtils
.
listVo
(
pages
.
getRecords
(),
PlatDeviceDTO
.
class
);
data
.
forEach
(
item
->
{
item
.
setBedName
(
mapName
.
get
(
item
.
getId
()));
item
.
setBedId
(
mapBedId
.
get
(
item
.
getId
()));
});
return
PageUtil
.
toPageVO
(
data
,
pages
);
}
else
{
return
new
PageVO
<>();
}
}
}
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomDynamicServiceImpl.java
View file @
8f63af67
...
...
@@ -165,8 +165,13 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
return
new
ArrayList
<>();
}
List
<
String
>
orgIds
=
orgs
.
stream
().
map
(
PlatOrg:
:
getId
).
collect
(
Collectors
.
toList
());
//获取空间及房间
List
<
PlatSpaceAndRoomVO
>
list
=
platRoomService
.
spaceAndRoomList
(
orgIds
);
//获取空间
List
<
PlatSpaceAndRoomVO
>
spaceList
=
platRoomService
.
spaceList
(
orgIds
);
List
<
PlatSpaceAndRoomVO
>
roomList
=
platRoomService
.
roomList
(
orgIds
);
List
<
PlatSpaceAndRoomVO
>
list
=
new
ArrayList
<>();
list
.
addAll
(
spaceList
);
list
.
addAll
(
roomList
);
//父级
List
<
PlatSpaceAndRoomVO
>
listParent
=
list
.
stream
().
filter
(
item
->
StringUtil
.
isEmpty
(
item
.
getParentId
())).
collect
(
Collectors
.
toList
());
...
...
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomServiceImpl.java
View file @
8f63af67
...
...
@@ -179,5 +179,14 @@ public class PlatRoomServiceImpl extends ServiceImpl<PlatRoomMapper, PlatRoom> i
return
baseMapper
.
workStationPage
(
page
,
params
);
}
@Override
public
List
<
PlatSpaceAndRoomVO
>
spaceList
(
List
<
String
>
orgIds
)
{
return
baseMapper
.
spaceList
(
orgIds
);
}
@Override
public
List
<
PlatSpaceAndRoomVO
>
roomList
(
List
<
String
>
orgIds
)
{
return
baseMapper
.
roomList
(
orgIds
);
}
}
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatSpaceServiceImpl.java
View file @
8f63af67
...
...
@@ -39,6 +39,8 @@ import org.springframework.web.multipart.MultipartFile;
import
java.util.*
;
import
java.util.function.BiConsumer
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -413,6 +415,7 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
Integer
errorCount
=
0
;
Integer
successCount
=
0
;
boolean
errorFlag
=
false
;
Pattern
pattern
=
Pattern
.
compile
(
"^\\d+$"
);
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
PlatSpaceImportDTO
item
=
list
.
get
(
i
);
...
...
@@ -449,6 +452,17 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
}
listKey
.
add
(
key
+
"-"
+
item
.
getRoomName
());
if
(
StringUtil
.
isNotEmpty
(
item
.
getBedNumber
())){
Matcher
matcher
=
pattern
.
matcher
(
item
.
getBedNumber
());
// 进行匹配
if
(!
matcher
.
find
()){
errorVoList
.
add
(
new
ExcelErrorVo
(
i
+
3
,
excelField
.
get
(
4
),
"床位数量格式错误"
));
}
}
if
(
errorFlag
)
{
errorCount
++;
}
else
{
...
...
@@ -526,7 +540,7 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
String
threeKey
=
secondId
+
"-"
+
item
.
getUnit
();
if
(!
childrenIdMap
.
containsKey
(
threeKey
))
{
PlatSpace
platSpace
=
new
PlatSpace
();
platSpace
.
setName
(
item
.
get
Building
());
platSpace
.
setName
(
item
.
get
Unit
());
platSpace
.
setType
(
PlatSpaceEnum
.
TypeEnum
.
UNIT
.
getValue
());
platSpace
.
setOrgId
(
orgId
);
platSpace
.
setParentId
(
secondId
);
...
...
@@ -555,7 +569,7 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
String
fourKey
=
threeId
+
"-"
+
item
.
getFloor
();
if
(!
childrenIdMap
.
containsKey
(
fourKey
))
{
PlatSpace
platSpace
=
new
PlatSpace
();
platSpace
.
setName
(
item
.
get
Building
());
platSpace
.
setName
(
item
.
get
Floor
());
platSpace
.
setType
(
PlatSpaceEnum
.
TypeEnum
.
FLOOR
.
getValue
());
platSpace
.
setOrgId
(
orgId
);
platSpace
.
setParentId
(
threeId
);
...
...
@@ -572,8 +586,8 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
//房间
PlatRoomDTO
platRoomDTO
=
new
PlatRoomDTO
();
platRoomDTO
.
setName
(
item
.
getRoomName
());
if
(
item
.
getBedNumber
()!=
null
){
platRoomDTO
.
setBedNumber
(
item
.
getBedNumber
(
));
if
(
StringUtil
.
isNotEmpty
(
item
.
getBedNumber
())
){
platRoomDTO
.
setBedNumber
(
Integer
.
valueOf
(
item
.
getBedNumber
()
));
}
else
{
platRoomDTO
.
setBedNumber
(
0
);
}
...
...
server-service/src/main/java/com/makeit/service/platform/workstation/impl/WorkStationServiceImpl.java
View file @
8f63af67
...
...
@@ -178,10 +178,18 @@ public class WorkStationServiceImpl implements WorkStationService {
}
List
<
String
>
orgIds
=
orgs
.
stream
().
map
(
PlatOrg:
:
getId
).
collect
(
Collectors
.
toList
());
dto
.
setOrgIds
(
orgIds
);
}
else
{
List
<
PlatOrg
>
orgs
=
platOrgService
.
list
(
new
QueryWrapper
<
PlatOrg
>().
lambda
()
.
eq
(
PlatOrg:
:
getId
,
dto
.
getOrgIds
()));
List
<
String
>
orgIds
=
orgs
.
stream
().
filter
(
t
->
PlatOrgEnum
.
OrgTypeEnum
.
INSTITUTION
.
getValue
().
equals
(
t
.
getType
()))
.
map
(
PlatOrg:
:
getId
).
collect
(
Collectors
.
toList
());
if
(
orgIds
.
isEmpty
()){
return
new
PageVO
<>();
}
dto
.
setOrgIds
(
orgIds
);
}
if
(
dto
.
getSpaceIds
().
isEmpty
())
{
spaces
=
platSpaceService
.
list
(
new
QueryWrapper
<
PlatSpace
>().
lambda
()
.
in
(
PlatSpace:
:
getOrgId
,
dto
.
getOrgIds
()));
if
(
spaces
.
isEmpty
())
{
...
...
@@ -475,6 +483,15 @@ public class WorkStationServiceImpl implements WorkStationService {
}
List
<
String
>
orgIds
=
orgs
.
stream
().
map
(
PlatOrg:
:
getId
).
collect
(
Collectors
.
toList
());
dto
.
setOrgIds
(
orgIds
);
}
else
{
List
<
PlatOrg
>
orgs
=
platOrgService
.
list
(
new
QueryWrapper
<
PlatOrg
>().
lambda
()
.
eq
(
PlatOrg:
:
getId
,
dto
.
getOrgIds
()));
List
<
String
>
orgIds
=
orgs
.
stream
().
filter
(
t
->
PlatOrgEnum
.
OrgTypeEnum
.
HOME
.
getValue
().
equals
(
t
.
getType
()))
.
map
(
PlatOrg:
:
getId
).
collect
(
Collectors
.
toList
());
if
(
orgIds
.
isEmpty
()){
return
new
PageVO
<>();
}
dto
.
setOrgIds
(
orgIds
);
}
if
(
dto
.
getSpaceIds
().
isEmpty
())
{
...
...
@@ -561,7 +578,7 @@ public class WorkStationServiceImpl implements WorkStationService {
}
List
<
String
>
orgIds
=
orgs
.
stream
().
map
(
PlatOrg:
:
getId
).
collect
(
Collectors
.
toList
());
if
(!
dto
.
getOrgIds
().
isEmpty
()){
if
(
dto
.
getOrgIds
()!=
null
&&
!
dto
.
getOrgIds
().
isEmpty
()){
orgIds
=
dto
.
getOrgIds
();
}
...
...
server-service/src/main/java/com/makeit/service/wechat/impl/PlatElderChildrenInfoUserLoginWechatServiceImpl.java
View file @
8f63af67
...
...
@@ -94,7 +94,6 @@ public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElde
TokenUtil
.
wechatLogin
(
token
,
wechatUserVo
);
return
wechatUserVo
;
}
...
...
server-service/src/main/java/com/makeit/task/IotSyncTask.java
View file @
8f63af67
...
...
@@ -14,6 +14,7 @@ import com.makeit.module.iot.vo.DeviceState;
import
com.makeit.module.system.service.SysDictionaryCategoryService
;
import
com.makeit.module.system.vo.DictionaryVo
;
import
com.makeit.service.platform.device.PlatDeviceService
;
import
com.makeit.service.platform.elder.PlatElderDayReportDayService
;
import
com.makeit.service.platform.elder.PlatElderSleepService
;
import
com.makeit.service.saas.PlatTenantService
;
import
com.makeit.utils.DeviceCacheUtil
;
...
...
@@ -47,13 +48,15 @@ public class IotSyncTask {
private
DeviceCacheUtil
deviceCacheUtil
;
@Autowired
private
PlatElderSleepService
platElderSleepService
;
@Autowired
private
PlatElderDayReportDayService
platElderDayReportDayService
;
/**
* 一小时同步一次
* 启用状态的租户才同步
* 新增和更新平台端设备表
*/
@Scheduled
(
cron
=
"0 0
*/1 * * ?
"
)
@Scheduled
(
cron
=
"0 0
/10 * * * *
"
)
public
void
syncEquipmentInfo
()
{
savePlatDevice
();
}
...
...
@@ -158,4 +161,13 @@ public class IotSyncTask {
log
.
info
(
"定时分析长者睡眠质量结束"
);
}
/* @Scheduled(cron = "0 0 1 * * ?")
@TenantIdIgnore
public void elderCoordinateListAnalysisTask() {
log.info("开始定时分析24小时热力图");
platElderDayReportDayService.elderCoordinateListAnalysisTask();
log.info("定时分析长者24小时热力图");
}*/
}
server-service/src/main/java/com/makeit/vo/platform/auth/PlatPersonDTOVO.java
View file @
8f63af67
...
...
@@ -3,7 +3,8 @@ package com.makeit.vo.platform.auth;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.makeit.common.dto.BaseIdDTO
;
import
com.makeit.common.dto.BaseTenantDTO
;
import
com.makeit.entity.saas.PlatTenant
;
import
com.makeit.module.admin.dto.plat.PlatRoleDTOVO
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -17,7 +18,7 @@ import java.util.List;
@ApiModel
(
"租户账号 新增 编辑 详情"
)
@Data
public
class
PlatPersonDTOVO
extends
Base
Id
DTO
{
public
class
PlatPersonDTOVO
extends
Base
Tenant
DTO
{
@NotBlank
(
message
=
"用户名不能为空"
)
@Size
(
max
=
64
,
message
=
"用户名最长为64字符"
)
...
...
@@ -92,6 +93,9 @@ public class PlatPersonDTOVO extends BaseIdDTO {
@ApiModelProperty
(
value
=
"角色名称,逗号拼接"
)
private
String
roleNameJoin
;
@ApiModelProperty
(
value
=
"租户信息"
)
private
PlatTenant
platTenant
;
}
server-service/src/main/java/com/makeit/vo/platform/dataScreen/PlatAlarmStatisticsListVo.java
View file @
8f63af67
...
...
@@ -28,4 +28,6 @@ public class PlatAlarmStatisticsListVo {
private
String
alarmTime
;
@ApiModelProperty
(
value
=
"路径"
)
private
String
path
;
@ApiModelProperty
(
value
=
"告警id"
)
private
String
alarmRecordId
;
}
server-service/src/main/java/com/makeit/vo/platform/device/PlatDeviceListVO.java
View file @
8f63af67
...
...
@@ -83,5 +83,15 @@ public class PlatDeviceListVO extends BaseTenantDTO {
private
String
tenantName
;
private
String
spaceParentPath
;
private
String
spaceParentPathName
;
private
String
spaceName
;
private
String
roomName
;
private
String
bedName
;
}
server-service/src/main/java/com/makeit/vo/platform/elder/realtime/PlatElderCoordinateVO.java
View file @
8f63af67
...
...
@@ -3,7 +3,7 @@ package com.makeit.vo.platform.elder.realtime;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.
math.BigDecimal
;
import
java.
util.List
;
@Data
public
class
PlatElderCoordinateVO
{
...
...
@@ -14,11 +14,11 @@ public class PlatElderCoordinateVO {
@ApiModelProperty
(
value
=
"原始设备ID"
)
private
String
oriDeviceId
;
@ApiModelProperty
(
"x"
)
private
BigDecimal
x
;
@ApiModelProperty
(
"y"
)
private
BigDecimal
y
;
//
@ApiModelProperty("x")
//
private BigDecimal x;
//
//
@ApiModelProperty("y")
//
private BigDecimal y;
@ApiModelProperty
(
"人体目标距离雷达位置 范围:0-1000,单位cm"
)
private
Integer
distance
;
...
...
@@ -26,5 +26,8 @@ public class PlatElderCoordinateVO {
@ApiModelProperty
(
"人体目标偏离雷达法线角度范围:±60,单位°"
)
private
Integer
angle
;
@ApiModelProperty
(
"跌倒设备轨迹"
)
private
List
<
Integer
>
track
;
}
server-service/src/main/java/com/makeit/vo/platform/elder/realtime/PlatElderRealTimeHeartRespiratoryVO.java
View file @
8f63af67
...
...
@@ -18,5 +18,10 @@ public class PlatElderRealTimeHeartRespiratoryVO {
@ApiModelProperty
(
"呼吸率"
)
private
Integer
respiratoryRate
;
@ApiModelProperty
(
"体动值"
)
private
Integer
body
;
@ApiModelProperty
(
"状态"
)
private
String
status
;
}
server-service/src/main/java/com/makeit/vo/platform/space/PlatBedPanoramaVO.java
View file @
8f63af67
...
...
@@ -13,7 +13,9 @@ import lombok.Data;
*/
@Data
@ApiModel
(
"PlatBedPanoramaVO参数"
)
public
class
PlatBedPanoramaVO
extends
BaseIdDTO
{
public
class
PlatBedPanoramaVO
{
private
String
id
;
@ApiModelProperty
(
"空间全路径id"
)
private
String
spacePath
;
...
...
server-service/src/main/java/com/makeit/vo/platform/space/PlatBedVo.java
View file @
8f63af67
...
...
@@ -29,4 +29,7 @@ public class PlatBedVo extends BaseBusEntity {
@ApiModelProperty
(
value
=
"绑定设备"
)
private
String
deviceName
;
@ApiModelProperty
(
value
=
"绑定设备id"
)
private
String
deviceId
;
}
server-service/src/main/resources/mappers/PlatBedMapper.xml
View file @
8f63af67
...
...
@@ -3,9 +3,10 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.makeit.mapper.platform.space.PlatBedMapper"
>
<select
id=
"selectBySpaceIdAndStatus"
resultType=
"com.makeit.vo.platform.space.PlatBedPanoramaVO"
>
SELECT pb.id,pb.
`status`,pb.name bedName ,pm.`name` roomName,pm.space_p
ath,pe.name as elderName,pe.id as elderId,pm.id as roomId
FROM
`plat_bed`
pb
SELECT pb.id,pb.
status,pb.name as bedName ,pm.name as roomName,pm.space_path as spaceP
ath,pe.name as elderName,pe.id as elderId,pm.id as roomId
FROM
plat_bed
pb
LEFT JOIN plat_room pm on pb.room_id = pm.id
LEFT JOIN plat_elder pe on pe.bed_id = pb.id
<where>
...
...
@@ -20,8 +21,8 @@
</select>
<select
id=
"selectByRoomIdAndStatus"
resultType=
"com.makeit.vo.platform.space.PlatBedPanoramaVO"
>
SELECT pb.id,pb.
`status`,pb.name bedName ,pm.`name` roomName,pm.space_p
ath,pe.name as elderName,pe.id as elderId,pm.id as roomId
FROM
`plat_bed`
pb
SELECT pb.id,pb.
status,pb.name as bedName ,pm.name as roomName,pm.space_path as spaceP
ath,pe.name as elderName,pe.id as elderId,pm.id as roomId
FROM
plat_bed
pb
LEFT JOIN plat_room pm on pb.room_id = pm.id
LEFT JOIN plat_elder pe on pe.bed_id = pb.id and pe.del_flag = 0
<where>
...
...
@@ -117,7 +118,8 @@
pb.update_by as updateBy,
pb.update_date as updateDate,
pb.sort as sort,
d.name as deviceName
d.name as deviceName,
d.id as deviceId
from plat_bed pb
left join plat_room_bed_device prbd on prbd.bed_id = pb.id and prbd.del_flag = 0
left join plat_device d on d.id = prbd.device_id and d.del_flag = 0
...
...
server-service/src/main/resources/mappers/PlatDeviceMapper.xml
0 → 100644
View file @
8f63af67
<?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.device.PlatDeviceMapper"
>
<select
id=
"getDeviceIdsBySpaceId"
resultType=
"com.makeit.vo.platform.device.PlatDeviceListVO"
>
select
distinct
pd.*,
ps.parent_path as spaceParentPath,
ps.name as spaceName,
pr.name as roomName,
pb.name as bedName
from plat_device pd
left join plat_room_bed_device prbd on (pd.id = prbd.device_id and prbd.del_flag = 0)
left join plat_room pr on (pr.id = prbd.room_id and pr.del_flag = 0 )
left join plat_bed pb on ( pb.id = prbd.bed_id and pb.del_flag = 0)
left join plat_space ps on (ps.id = pr.space_id and ps.del_flag = 0)
<where>
pd.del_flag = 0
<if
test=
"param.spaceId != null and param.spaceId != ''"
>
and ( FIND_IN_SET(#{param.spaceId},ps.parent_path) or ps.id = #{param.spaceId})
</if>
<if
test=
"param.oriDeviceId != null and param.oriDeviceId != ''"
>
and pd.ori_device_id like concat('%',#{param.oriDeviceId},'%')
</if>
<if
test=
"param.name != null and param.name != ''"
>
and pd.name like concat('%',#{param.name},'%')
</if>
<if
test=
"param.status != null and param.status != '' "
>
and pd.status = #{param.status}
</if>
<if
test=
"param.productName != null and param.productName != '' "
>
and pd.product_name like concat('%',#{param.productName},'%')
</if>
<if
test=
"param.productId != null and param.productId != '' "
>
and pd.product_id = #{param.productId}
</if>
<if
test=
"param.orgId != null and param.orgId != '' "
>
and pd.org_id = #{param.orgId}
</if>
</where>
order by pd.update_date desc,prbd.update_date desc
</select>
<select
id=
"getDevices"
resultType=
"com.makeit.vo.platform.device.PlatDeviceListVO"
>
select
distinct
pd.*,
ps.parent_path as spaceParentPath,
ps.name as spaceName,
pr.name as roomName,
pb.name as bedName
from plat_device pd
left join plat_room_bed_device prbd on (pd.id = prbd.device_id and prbd.del_flag = 0)
left join plat_room pr on (pr.id = prbd.room_id and pr.del_flag = 0 )
left join plat_bed pb on ( pb.id = prbd.bed_id and pb.del_flag = 0)
left join plat_space ps on (ps.id = pr.space_id and ps.del_flag = 0)
<where>
pd.del_flag = 0
<if
test=
"param.deviceStatus != null and param.deviceStatus != '' "
>
and pd.status = #{param.deviceStatus}
</if>
<if
test=
"param.orgIds != null and param.orgIds.size() > 0 "
>
AND ps.org_id in
<foreach
collection=
"param.orgIds"
item=
"item"
separator=
","
open=
"("
close=
")"
index=
""
>
#{item}
</foreach>
</if>
</where>
order by pd.update_date desc,prbd.update_date desc
</select>
</mapper>
server-service/src/main/resources/mappers/PlatRoomMapper.xml
View file @
8f63af67
...
...
@@ -4,6 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.makeit.mapper.platform.space.PlatRoomMapper"
>
<select
id=
"spaceAndRoomList"
resultType=
"com.makeit.vo.platform.space.PlatSpaceAndRoomVO"
>
SELECT ps.id,ps.`name`,ps.parent_id as parentId,'1' as type FROM plat_space ps
<where>
ps.del_flag = 0
...
...
@@ -14,7 +15,7 @@
</foreach>
</if>
</where>
UNION
UNION
ALL
SELECT pr.id,pr.`name`,pr.space_id as parentId,'2' as type FROM plat_room pr
LEFT JOIN plat_space p ON p.id = pr.space_id
<where>
...
...
@@ -27,6 +28,7 @@
</if>
</where>
</select>
<select
id=
"workStationList"
resultType=
"com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO"
>
...
...
@@ -81,5 +83,35 @@
</where>
</select>
<select
id=
"spaceList"
resultType=
"com.makeit.vo.platform.space.PlatSpaceAndRoomVO"
>
SELECT ps.id,ps.`name`,ps.parent_id as parentId,'1' as type FROM plat_space ps
<where>
ps.del_flag = 0
<if
test=
"orgIds != null and orgIds.size()>0 "
>
AND ps.org_id IN
<foreach
collection=
"orgIds"
item=
"item"
separator=
","
open=
"("
close=
")"
index=
""
>
#{item}
</foreach>
</if>
</where>
</select>
<select
id=
"roomList"
resultType=
"com.makeit.vo.platform.space.PlatSpaceAndRoomVO"
>
SELECT pr.id,pr.`name`,pr.space_id as parentId,'2' as type FROM plat_room pr
LEFT JOIN plat_space p ON p.id = pr.space_id
<where>
pr.del_flag = 0
<if
test=
"orgIds != null and orgIds.size()>0 "
>
AND p.org_id IN
<foreach
collection=
"orgIds"
item=
"item"
separator=
","
open=
"("
close=
")"
index=
""
>
#{item}
</foreach>
</if>
</where>
</select>
</mapper>
server-web/src/main/java/com/makeit/mqtt/PushCallback.java
View file @
8f63af67
...
...
@@ -2,16 +2,25 @@ package com.makeit.mqtt;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.makeit.common.entity.BaseBusEntity
;
import
com.makeit.common.entity.BaseEntity
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.entity.platform.alarm.PlatAlarmConfig
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.entity.saas.PlatTenant
;
import
com.makeit.global.aspect.tenant.TenantIdIgnore
;
import
com.makeit.module.iot.enums.DeviceState
;
import
com.makeit.module.iot.vo.DeviceInfo
;
import
com.makeit.module.iot.vo.HeaderInfo
;
import
com.makeit.service.platform.alarm.alarmStrategy.IAlarm
;
import
com.makeit.service.platform.device.PlatDeviceService
;
import
com.makeit.service.saas.PlatTenantService
;
import
com.makeit.utils.AlarmConfigCacheUtil
;
import
com.makeit.utils.DeviceCacheUtil
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.eclipse.paho.client.mqttv3.IMqttDeliveryToken
;
import
org.eclipse.paho.client.mqttv3.MqttCallback
;
import
org.eclipse.paho.client.mqttv3.MqttClient
;
...
...
@@ -19,18 +28,25 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.StopWatch
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
@Component
public
class
PushCallback
implements
MqttCallback
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
MqttPushClient
.
class
);
public
static
final
String
DEVICE_BR_DATA
=
"device:brhr:data:"
;
public
static
final
String
DEVICE_SPACE_DATA
=
"device:space:data:"
;
public
static
final
String
DEVICE_FALL_DATA
=
"device:fall:data:"
;
@Autowired
private
MqttConfig
mqttConfig
;
...
...
@@ -43,6 +59,13 @@ public class PushCallback implements MqttCallback {
@Autowired
private
List
<
IAlarm
>
alarmList
;
@Autowired
private
PlatDeviceService
platDeviceService
;
@Autowired
private
PlatTenantService
platTenantService
;
@Autowired
private
StringRedisTemplate
redisTemplate
;
@Override
public
void
connectionLost
(
Throwable
cause
)
{
...
...
@@ -64,6 +87,7 @@ public class PushCallback implements MqttCallback {
DeviceInfo
device
=
JSON
.
parseObject
(
payload
,
DeviceInfo
.
class
);
// todo
checkAlarm
(
device
);
}
...
...
@@ -82,12 +106,28 @@ public class PushCallback implements MqttCallback {
public
void
checkAlarm
(
DeviceInfo
device
)
{
HeaderInfo
headers
=
device
.
getHeaders
();
List
<
HeaderInfo
.
Bind
>
bindings
=
headers
.
getBindings
();
// TODO 先这样判断
if
(
headers
.
getProductName
().
contains
(
"呼吸"
))
{
redisTemplate
.
opsForValue
().
set
(
DEVICE_BR_DATA
+
device
.
getDeviceId
(),
JSON
.
toJSONString
(
device
.
getProperties
()),
1000
,
TimeUnit
.
MILLISECONDS
);
}
if
(
headers
.
getProductName
().
contains
(
"空间"
))
{
redisTemplate
.
opsForValue
().
set
(
DEVICE_SPACE_DATA
+
device
.
getDeviceId
(),
JSON
.
toJSONString
(
device
.
getProperties
()),
1000
,
TimeUnit
.
MILLISECONDS
);
}
if
(
headers
.
getProductName
().
contains
(
"跌倒"
))
{
redisTemplate
.
opsForValue
().
set
(
DEVICE_FALL_DATA
+
device
.
getDeviceId
(),
JSON
.
toJSONString
(
device
.
getProperties
()),
1000
,
TimeUnit
.
MILLISECONDS
);
}
for
(
HeaderInfo
.
Bind
binding
:
bindings
)
{
try
{
String
iot_tenantId
=
binding
.
getId
();
StopWatch
stopWatch
=
new
StopWatch
();
stopWatch
.
start
(
"checkAlarm-1"
);
String
deviceId
=
device
.
getDeviceId
();
String
messageType
=
device
.
getMessageType
();
//更新设备状态
updateDeviceStatus
(
messageType
,
deviceId
,
iot_tenantId
);
JSONObject
properties
=
device
.
getProperties
();
...
...
@@ -120,6 +160,8 @@ public class PushCallback implements MqttCallback {
}
}
}
stopWatch
.
stop
();
logger
.
info
(
stopWatch
.
prettyPrint
());
}
catch
(
Exception
e
){
...
...
@@ -130,6 +172,28 @@ public class PushCallback implements MqttCallback {
}
@Transactional
public
void
updateDeviceStatus
(
String
messageType
,
String
deviceId
,
String
iot_tenantId
)
{
if
(
StringUtils
.
equalsAnyIgnoreCase
(
messageType
,
DeviceState
.
offline
.
getValue
(),
DeviceState
.
online
.
getValue
())){
platDeviceService
.
update
(
new
UpdateWrapper
<
PlatDevice
>().
lambda
()
.
set
(
PlatDevice:
:
getStatus
,
messageType
.
toLowerCase
())
.
eq
(
PlatDevice:
:
getOriDeviceId
,
deviceId
));
LambdaQueryWrapper
<
PlatDevice
>
deviceLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
deviceLambdaQueryWrapper
.
eq
(
PlatDevice:
:
getOriDeviceId
,
deviceId
);
List
<
PlatDevice
>
deviceList
=
platDeviceService
.
list
(
deviceLambdaQueryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
deviceList
)){
return
;
}
for
(
PlatDevice
platDevice
:
deviceList
)
{
platDevice
.
setStatus
(
messageType
.
toLowerCase
());
}
deviceCacheUtil
.
putAll
(
deviceList
);
}
}
}
server-web/src/main/resources/application-dev.yml
View file @
8f63af67
...
...
@@ -72,6 +72,7 @@ storage:
type
:
local
url
:
http://localhost:8888/${file.filePath}
# aliBaseDir: point
# aliEndpoint: obs.cn-south-1.myhuaweicloud.com
# aliAccessKeyId: HY7KT4GKCOGSRCHLXBAR
...
...
server-web/src/main/resources/application-test.yml
View file @
8f63af67
...
...
@@ -57,7 +57,7 @@ sign:
# - auth/checkCode
mybatis-plus
:
configuration
:
log-impl
:
org.apache.ibatis.logging.
stdout.StdOut
Impl
log-impl
:
org.apache.ibatis.logging.
nologging.NoLogging
Impl
file
:
filePath
:
file
...
...
@@ -140,4 +140,5 @@ voice-sms:
send
:
url
:
http://www.aozoneyun.com/Message/Message/video_send
uid
:
362
pwd
:
xmksyy123456
\ No newline at end of file
pwd
:
xmksyy123456
server-web/src/main/resources/logback-spring-test.xml
0 → 100644
View file @
8f63af67
<?xml version="1.0" encoding="UTF-8"?>
<!-- 从高到地低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
<!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志 -->
<!-- 属性描述 scan:性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration
scan=
"true"
scanPeriod=
"60 seconds"
debug=
"false"
>
<contextName>
d1money-web-ys-ems
</contextName>
<!-- 定义日志文件 输入位置 -->
<property
name=
"logback.logdir"
value=
"/home/group1_lzy/iot-server/logs"
/>
<!-- 日志最大的历史 30天 -->
<property
name=
"maxHistory"
value=
"180"
/>
<property
name=
"maxFileSize"
value=
"10MB"
/>
<!-- ERROR级别日志 -->
<!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender -->
<appender
name=
"ERROR"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 过滤器,只记录WARN级别的日志 -->
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
ERROR
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
<!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -->
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--日志输出位置 可相对、和绝对路径 -->
<fileNamePattern>
${log_dir}/app_error.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 -->
<maxHistory>
${maxHistory}
</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
${maxFileSize}
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 按照固定窗口模式生成日志文件,当文件大于20MB时,生成新的日志文件。窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志。
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern> <minIndex>1</minIndex>
<maxIndex>3</maxIndex> </rollingPolicy> -->
<!-- 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动 <triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize>
</triggeringPolicy> -->
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
</pattern>
</encoder>
</appender>
<!-- INFO级别日志 appender -->
<appender
name=
"INFO"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 过滤器,只记录INFO级别的日志 -->
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
INFO
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!-- 按天回滚 daily -->
<fileNamePattern>
${log_dir}/app_info.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<!-- 日志最大的历史 30天 -->
<maxHistory>
${maxHistory}
</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
${maxFileSize}
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
</pattern>
</encoder>
</appender>
<logger
name=
"java.sql.PreparedStatement"
value=
"DEBUG"
/>
<logger
name=
"java.sql.Connection"
value=
"DEBUG"
/>
<logger
name=
"java.sql.Statement"
value=
"DEBUG"
/>
<logger
name=
"com.ibatis"
value=
"DEBUG"
/>
<logger
name=
"com.ibatis.common.jdbc.SimpleDataSource"
value=
"DEBUG"
/>
<logger
name=
"com.ibatis.common.jdbc.ScriptRunner"
level=
"DEBUG"
/>
<logger
name=
"com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate"
value=
"DEBUG"
/>
<!-- root级别 DEBUG -->
<root
level=
"INFO"
>
<!-- 文件输出 -->
<appender-ref
ref=
"ERROR"
/>
<appender-ref
ref=
"INFO"
/>
</root>
</configuration>
\ No newline at end of file
server-web/src/main/resources/logback-spring.xml
View file @
8f63af67
...
...
@@ -8,7 +8,12 @@
value=
"%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{appName}] [%X{profile}] [%X{traceId:-},%X{spanId:-}] [%X{requestId}] [%X{userId}] [%thread] %-5level %logger{50} - %msg%n"
/>
<springProfile
name=
"prod"
>
<property
name=
"logback.logdir"
value=
"/home/group1_lzy/iot-plafform-server/logs"
/>
<property
name=
"logback.logdir"
value=
"/home/group1_lzy/iot-server/logs"
/>
<property
name=
"logback.appname"
value=
"app"
/>
</springProfile>
<springProfile
name=
"test"
>
<property
name=
"logback.logdir"
value=
"/home/group1_lzy/iot-server/logs"
/>
<property
name=
"logback.appname"
value=
"app"
/>
</springProfile>
...
...
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