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
214aae5d
authored
Jan 15, 2024
by
朱淼
Committed by
罗志长
Jan 16, 2024
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
干休所demo
parent
7ab531ac
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
966 additions
and
0 deletions
server-common/src/main/java/com/makeit/module/demo/dto/DemoDeviceDTO.java
server-common/src/main/java/com/makeit/module/demo/service/DemoCommonService.java
server-common/src/main/java/com/makeit/module/demo/service/DemoProductDeviceService.java
server-common/src/main/java/com/makeit/module/demo/vo/DemoDeviceEntity.java
server-common/src/main/java/com/makeit/module/demo/vo/DemoResponseMessage.java
server-common/src/main/java/com/makeit/module/demo/vo/DemoResult.java
server-common/src/main/java/com/makeit/module/iot/util/HeaderUtils.java
server-module/src/main/java/com/makeit/module/controller/demo/DemoDeviceController.java
server-service/src/main/java/com/makeit/entity/platform/demo/PlatAlarmRecordDemo.java
server-service/src/main/java/com/makeit/entity/platform/demo/PlatDeviceDemo.java
server-service/src/main/java/com/makeit/mapper/platform/demo/PlatAlarmRecordDemoMapper.java
server-service/src/main/java/com/makeit/mapper/platform/demo/PlatDeviceDemoMapper.java
server-service/src/main/java/com/makeit/service/platform/demo/DemoDeviceService.java
server-service/src/main/java/com/makeit/service/platform/demo/PlatAlarmRecordDemoService.java
server-service/src/main/java/com/makeit/service/platform/demo/impl/DemoDeviceServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/demo/impl/PlatAlarmRecordDemoServiceImpl.java
server-service/src/main/java/com/makeit/task/DemoDeviceTask.java
server-service/src/main/java/com/makeit/vo/platform/demo/DemoHeartRespiratoryVO.java
server-web/src/main/resources/application-dev.yml
server-web/src/main/resources/application-test.yml
server-common/src/main/java/com/makeit/module/demo/dto/DemoDeviceDTO.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
module
.
demo
.
dto
;
import
lombok.Data
;
/**
* Controller
*
* @author zm
* @version 2023/9/25
*/
@Data
public
class
DemoDeviceDTO
{
private
String
entityCode
;
private
Boolean
queryShadow
;
}
server-common/src/main/java/com/makeit/module/demo/service/DemoCommonService.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
module
.
demo
.
service
;
import
com.alibaba.fastjson.JSON
;
import
com.google.common.collect.Lists
;
import
com.makeit.module.demo.dto.DemoDeviceDTO
;
import
com.makeit.module.demo.vo.DemoResponseMessage
;
import
com.makeit.module.iot.dto.Condition
;
import
com.makeit.module.iot.dto.IotQueryParam
;
import
com.makeit.module.iot.dto.IotSort
;
import
com.makeit.module.iot.dto.Term
;
import
com.makeit.module.iot.util.HeaderUtils
;
import
com.makeit.module.iot.util.HttpRequest
;
import
com.makeit.module.iot.util.Response
;
import
com.makeit.module.iot.util.SimpleHttpRequest
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
java.io.IOException
;
import
java.util.HashMap
;
import
java.util.List
;
@Slf4j
public
class
DemoCommonService
{
@Autowired
public
HeaderUtils
headerUtils
;
@Value
(
"${demo.url:}"
)
public
String
demoUrl
;
protected
static
HttpClient
httpClient
=
HttpClientBuilder
.
create
().
build
();
public
HttpRequest
buildRequest
(
String
url
,
String
body
)
{
log
.
info
(
"接口:{},请求参数:{}"
,
url
,
body
);
HttpRequest
request
=
new
SimpleHttpRequest
(
url
,
httpClient
);
HashMap
hashMap
=
JSON
.
parseObject
(
body
,
HashMap
.
class
);
request
.
headers
(
headerUtils
.
createDemoHeadersOfParams
(
hashMap
));
request
.
requestBody
(
body
);
return
request
;
}
public
DemoResponseMessage
sendPut
(
String
url
,
HttpRequest
request
)
throws
IOException
{
Response
response
=
request
.
put
();
DemoResponseMessage
responseMessage
=
getResponseMessage
(
url
,
response
);
return
responseMessage
;
}
public
DemoResponseMessage
sendGet
(
String
url
,
HttpRequest
request
)
throws
IOException
{
Response
response
=
request
.
get
();
DemoResponseMessage
responseMessage
=
getResponseMessage
(
url
,
response
);
return
responseMessage
;
}
public
DemoResponseMessage
sendPost
(
String
url
,
HttpRequest
request
)
throws
IOException
{
Response
response
=
request
.
post
();
DemoResponseMessage
responseMessage
=
getResponseMessage
(
url
,
response
);
return
responseMessage
;
}
private
static
DemoResponseMessage
getResponseMessage
(
String
url
,
Response
response
)
throws
IOException
{
Object
result
=
JSON
.
parse
(
response
.
asBytes
());
DemoResponseMessage
responseMessage
=
JSON
.
parseObject
(
result
.
toString
(),
DemoResponseMessage
.
class
);
log
.
info
(
"接口:{},返回信息:{}"
,
url
,
JSON
.
toJSONString
(
responseMessage
));
return
responseMessage
;
}
/**
* 默认按照时间倒叙
* 可以根据terms进行条件查询 格式
* [
* {
* "terms": [
* {
* "type": "or",
* "value": "%123%",
* "termType": "like",
* "column": "name"
* }
* ]
* }
* ]
* @return
*/
public
static
DemoDeviceDTO
buildQueryParam
(
String
entityCode
,
boolean
queryShadow
)
{
DemoDeviceDTO
dto
=
new
DemoDeviceDTO
();
dto
.
setQueryShadow
(
queryShadow
);
dto
.
setEntityCode
(
entityCode
);
return
dto
;
}
/**
*
* @param pageSize 页大小
* @param column 查询列
* @param termType 动态条件类型
* @param assetType
* @param pkId
* @param type
* @return
*/
public
static
IotQueryParam
buildQueryParam
(
int
pageSize
,
String
column
,
String
termType
,
String
assetType
,
String
pkId
,
String
type
,
String
sortColumn
)
{
IotQueryParam
iotQueryParam
=
new
IotQueryParam
();
iotQueryParam
.
setPageIndex
(
0
);
iotQueryParam
.
setPageSize
(
pageSize
);
List
<
Term
>
terms
=
getTerms
(
column
,
termType
,
assetType
,
pkId
,
type
);
iotQueryParam
.
setTerms
(
terms
);
List
<
IotSort
>
iotSortList
=
buildSort
(
sortColumn
);
iotQueryParam
.
setSorts
(
iotSortList
);
return
iotQueryParam
;
}
private
static
List
<
IotSort
>
buildSort
(
String
createTime
)
{
List
<
IotSort
>
iotSortList
=
Lists
.
newArrayList
();
IotSort
iotSort
=
new
IotSort
();
iotSort
.
setOrder
(
"desc"
);
iotSort
.
setName
(
createTime
);
iotSortList
.
add
(
iotSort
);
return
iotSortList
;
}
private
static
List
<
Term
>
getTerms
(
String
column
,
String
termType
,
String
assetType
,
String
pkId
,
String
type
)
{
List
<
Term
>
terms
=
Lists
.
newArrayList
();
if
(
StringUtils
.
isEmpty
(
column
))
{
return
terms
;
}
List
<
Condition
.
Targets
>
targets
=
Lists
.
newArrayList
();
Condition
.
Targets
target
=
Condition
.
Targets
.
builder
()
.
id
(
pkId
)
.
type
(
type
).
build
();
targets
.
add
(
target
);
Condition
condition
=
Condition
.
builder
()
.
assetType
(
assetType
)
.
targets
(
targets
)
.
build
();
Term
term
=
Term
.
builder
()
.
column
(
column
)
.
termType
(
termType
)
.
value
(
condition
)
.
terms
(
Lists
.
newArrayList
())
.
options
(
Lists
.
newArrayList
())
.
build
();
terms
.
add
(
term
);
return
terms
;
}
}
server-common/src/main/java/com/makeit/module/demo/service/DemoProductDeviceService.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
module
.
demo
.
service
;
import
com.alibaba.fastjson.JSON
;
import
com.makeit.module.demo.dto.DemoDeviceDTO
;
import
com.makeit.module.demo.vo.DemoDeviceEntity
;
import
com.makeit.module.demo.vo.DemoResponseMessage
;
import
com.makeit.module.iot.util.HttpRequest
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
/**
* iot产品设备相关接口
*/
@Component
@Slf4j
public
class
DemoProductDeviceService
extends
DemoCommonService
{
public
static
final
String
DEVICE_PREFIX_URL
=
"ym-open-api/s/api/v2/common/device/"
;
/**
* 获取设备信息
*/
public
DemoDeviceEntity
queryDeviceDetail
(
String
entityCode
,
boolean
queryShadow
)
{
String
url
=
demoUrl
+
DEVICE_PREFIX_URL
+
"query-device-detail"
;
// 条件可以自己改
DemoDeviceDTO
dto
=
buildQueryParam
(
entityCode
,
queryShadow
);
String
body
=
JsonUtil
.
toJson
(
dto
);
HttpRequest
request
=
buildRequest
(
url
,
body
);
try
{
DemoResponseMessage
responseMessage
=
sendPost
(
url
,
request
);
if
(
responseMessage
.
getRetcode
()
==
0
)
{
if
(
responseMessage
.
getData
()
!=
null
){
DemoDeviceEntity
demoDeviceEntities
=
JSON
.
parseObject
(
responseMessage
.
getData
().
toString
(),
DemoDeviceEntity
.
class
);
return
demoDeviceEntities
;
}
}
log
.
error
(
"获取设备接口失败:{}"
,
responseMessage
.
getMsg
());
}
catch
(
IOException
e
)
{
log
.
error
(
"调用:{}接口异常:{}"
,
url
,
e
.
getMessage
());
}
return
new
DemoDeviceEntity
();
}
}
server-common/src/main/java/com/makeit/module/demo/vo/DemoDeviceEntity.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
module
.
demo
.
vo
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
DemoDeviceEntity
{
@Schema
(
description
=
"设备编码"
)
private
String
entityCode
;
private
String
entityName
;
private
String
status
;
private
List
<
DeviceShadowDTO
>
deviceShadowDTOList
;
@Data
public
static
class
DeviceShadowDTO
{
private
String
id
;
private
Attribute
attribute
;
private
String
value
;
private
Long
valueTime
;
}
@Data
public
static
class
Attribute
{
private
String
attributeCode
;
private
String
attributeName
;
}
}
server-common/src/main/java/com/makeit/module/demo/vo/DemoResponseMessage.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
module
.
demo
.
vo
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
@Data
public
class
DemoResponseMessage
<
T
>
{
@Schema
(
description
=
"消息提示"
)
private
String
msg
;
@Schema
(
description
=
"数据内容"
)
private
T
data
;
@Schema
(
description
=
"状态码"
)
private
int
retcode
;
}
server-common/src/main/java/com/makeit/module/demo/vo/DemoResult.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
module
.
demo
.
vo
;
import
lombok.Data
;
@Data
public
class
DemoResult
<
E
>
{
private
E
data
;
}
server-common/src/main/java/com/makeit/module/iot/util/HeaderUtils.java
View file @
214aae5d
package
com
.
makeit
.
module
.
iot
.
util
;
import
com.alibaba.fastjson.JSON
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.codec.binary.Hex
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
...
...
@@ -27,6 +30,15 @@ public class HeaderUtils {
@Value
(
"${iot.secureKey}"
)
private
String
secureKey
;
@Value
(
"${demo.brand}"
)
private
String
brand
;
@Value
(
"${demo.accessKey}"
)
private
String
accessKey
;
@Value
(
"${demo.secretKey}"
)
private
String
secretKey
;
protected
static
HttpClient
httpClient
=
HttpClientBuilder
.
create
().
build
();
public
Map
<
String
,
String
>
createHeadersOfParams
(
Map
<
String
,
Object
>
params
)
{
//时间戳
String
xTimestamp
=
String
.
valueOf
(
new
Date
().
getTime
());
...
...
@@ -71,4 +83,30 @@ public class HeaderUtils {
return
headers
;
}
public
Map
<
String
,
String
>
createDemoHeadersOfParams
(
Map
<
String
,
Object
>
params
)
{
//时间戳
String
xTimestamp
=
String
.
valueOf
(
new
Date
().
getTime
());
params
.
put
(
"AccessKey"
,
accessKey
);
params
.
put
(
"Timestamp"
,
xTimestamp
);
//将参数按ASCII排序后拼接为k1=v1&k2=v2的格式
String
paramString
=
new
TreeMap
<>(
params
).
entrySet
()
.
stream
()
.
map
(
e
->
e
.
getKey
().
concat
(
"="
).
concat
(
String
.
valueOf
(
e
.
getValue
())))
.
collect
(
Collectors
.
joining
(
"&"
));
System
.
out
.
println
(
paramString
);
paramString
=
paramString
+
"&SecretKey="
+
secretKey
;
MessageDigest
digest
=
DigestUtils
.
getMd5Digest
();
digest
.
update
(
paramString
.
getBytes
());
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
"signature"
,
Hex
.
encodeHexString
(
digest
.
digest
()).
toUpperCase
());
headers
.
put
(
"brand"
,
brand
);
headers
.
put
(
"timestamp"
,
xTimestamp
);
return
headers
;
}
}
server-module/src/main/java/com/makeit/module/controller/demo/DemoDeviceController.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
module
.
controller
.
demo
;
import
com.makeit.common.dto.BaseIdDTO
;
import
com.makeit.common.page.PageReqDTO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.common.response.ApiResponseEntity
;
import
com.makeit.common.response.ApiResponseUtils
;
import
com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO
;
import
com.makeit.entity.platform.demo.PlatDeviceDemo
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.module.demo.dto.DemoDeviceDTO
;
import
com.makeit.module.demo.vo.DemoDeviceEntity
;
import
com.makeit.service.platform.demo.DemoDeviceService
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.demo.PlatAlarmRecordDemoService
;
import
com.makeit.vo.platform.alarm.PlatAlarmRecordVO
;
import
com.makeit.vo.platform.demo.DemoHeartRespiratoryVO
;
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
;
/**
* <p>
* 设备 前端控制器
* </p>
*
* @author eugene young
* @since 2023-09-05
*/
@Api
(
tags
=
"demo设备"
)
@RestController
@RequestMapping
(
"/plat/demo/device"
)
public
class
DemoDeviceController
{
@Autowired
private
DemoDeviceService
demoDeviceService
;
@Autowired
private
PlatAlarmRecordDemoService
platAlarmRecordService
;
@ApiOperation
(
"详情"
)
@PostMapping
(
"queryDeviceDetail"
)
public
ApiResponseEntity
<
DemoDeviceEntity
>
queryDeviceDetail
(
@RequestBody
DemoDeviceDTO
dto
)
{
return
ApiResponseUtils
.
success
(
demoDeviceService
.
queryDeviceDetail
(
dto
));
}
@ApiOperation
(
"设备列表"
)
@PostMapping
(
"list"
)
public
ApiResponseEntity
<
List
<
PlatDeviceDemo
>>
list
()
{
return
ApiResponseUtils
.
success
(
demoDeviceService
.
getList
());
}
@ApiOperation
(
"报警列表"
)
@PostMapping
(
"alarmPage"
)
public
ApiResponseEntity
<
PageVO
<
PlatAlarmRecordVO
>>
page
(
@RequestBody
PageReqDTO
<
PlatAlarmRecordQueryDTO
>
dto
)
{
return
ApiResponseUtils
.
success
(
platAlarmRecordService
.
page
(
dto
));
}
@ApiOperation
(
"心率"
)
@PostMapping
(
"heartRate"
)
public
ApiResponseEntity
<
DemoHeartRespiratoryVO
>
heartRate
(
@RequestBody
DemoDeviceDTO
dto
)
{
return
ApiResponseUtils
.
success
(
demoDeviceService
.
heartRate
(
dto
));
}
@ApiOperation
(
"呼吸率"
)
@PostMapping
(
"breathRate"
)
public
ApiResponseEntity
<
DemoHeartRespiratoryVO
>
breathRate
(
@RequestBody
DemoDeviceDTO
dto
)
{
return
ApiResponseUtils
.
success
(
demoDeviceService
.
breathRate
(
dto
));
}
@ApiOperation
(
"处理"
)
@PostMapping
(
"deal"
)
public
ApiResponseEntity
<
Void
>
deal
(
@RequestBody
BaseIdDTO
dto
)
{
platAlarmRecordService
.
deal
(
dto
.
getId
());
return
ApiResponseUtils
.
success
();
}
@ApiOperation
(
"通知家属"
)
@PostMapping
(
"notice"
)
public
ApiResponseEntity
<
Void
>
notice
(
@RequestBody
BaseIdDTO
dto
)
{
demoDeviceService
.
noticeRelation
(
dto
.
getId
());
return
ApiResponseUtils
.
success
();
}
}
server-service/src/main/java/com/makeit/entity/platform/demo/PlatAlarmRecordDemo.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
entity
.
platform
.
demo
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.makeit.common.entity.BaseBusEntity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
/**
* 告警记录
* @TableName plat_alarm_record
*/
@TableName
(
value
=
"plat_alarm_record_demo"
)
@Data
public
class
PlatAlarmRecordDemo
extends
BaseBusEntity
{
/**
* 关联告警配置
*/
private
String
alarmId
;
@ApiModelProperty
(
value
=
"告警类型 数据字典 1 长者跌倒 2 呼吸异常 3 心率异常 4 行为异常"
)
private
String
alarmType
;
/**
* 告警时间
*/
private
LocalDateTime
alarmDate
;
/**
* 状态 0 待处理 1 已处理
*/
private
String
status
;
/**
* 通知家属状态 0 未通知 1 已通知
*/
private
String
noticeStatus
;
/**
* 告警内容
*/
private
String
content
;
/**
* 处理人 存名字
*/
private
String
dealUser
;
/**
* 处理时间
*/
private
LocalDateTime
dealDate
;
/**
* 组织id
*/
private
String
orgId
;
/**
* 通知人员,逗号拼接
*/
private
String
notifyUser
;
/**
* 设备id
*/
private
String
deviceId
;
/**
* 老人id,一个老人一条记录
*/
private
String
elderIds
;
//异常说明
private
String
remark
;
private
String
elderName
;
//异常值
private
String
abnormalValue
;
@ApiModelProperty
(
"区域名称"
)
private
String
regionName
;
private
Long
valueTime
;
}
server-service/src/main/java/com/makeit/entity/platform/demo/PlatDeviceDemo.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
entity
.
platform
.
demo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.makeit.common.entity.BaseBusEntity
;
import
com.makeit.module.iot.enums.DeviceState
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.time.LocalDateTime
;
/**
* <p>
* 设备
* </p>
*
* @author eugene young
* @since 2023-09-05
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"PlatDevice对象"
,
description
=
"设备"
)
public
class
PlatDeviceDemo
extends
BaseBusEntity
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"原始设备ID"
)
private
String
oriDeviceId
;
@ApiModelProperty
(
value
=
"设备名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"产品名称"
)
private
String
productName
;
@ApiModelProperty
(
value
=
"产品id"
)
private
String
productId
;
@ApiModelProperty
(
value
=
"固件版本"
)
private
String
firmwareVersion
;
@ApiModelProperty
(
value
=
"注册时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
registrationDate
;
@ApiModelProperty
(
value
=
"最后上线时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
lastOnlineData
;
@ApiModelProperty
(
value
=
"说明"
)
private
String
description
;
/**
* @see DeviceState
*/
@ApiModelProperty
(
value
=
"状态 notActive(\"notActive\",\"禁用\"),\n"
+
" offline(\"offline\",\"离线\"),\n"
+
" online(\"online\",\"在线\"); "
)
private
String
status
;
@ApiModelProperty
(
value
=
"组织id"
)
private
String
orgId
;
@ApiModelProperty
(
value
=
"城市组织id"
)
private
String
cityOrgId
;
@ApiModelProperty
(
value
=
"区组织id"
)
private
String
districtOrgId
;
@ApiModelProperty
(
value
=
"街道组织id"
)
private
String
streetOrgId
;
@ApiModelProperty
(
value
=
"组织路径"
)
private
String
orgPath
;
@ApiModelProperty
(
value
=
"设备类型 0-呼吸心率雷达 1-空间人体雷达 2-跌倒检测雷达"
)
private
String
category
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
startDate
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
endDate
;
}
server-service/src/main/java/com/makeit/mapper/platform/demo/PlatAlarmRecordDemoMapper.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
mapper
.
platform
.
demo
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.demo.PlatAlarmRecordDemo
;
/**
* @author lixl
* @description 针对表【plat_alarm_record(告警记录)】的数据库操作Mapper
* @createDate 2023-09-06 14:26:05
* @Entity com.makeit.entity.platform.alarm.PlatAlarmRecord
*/
public
interface
PlatAlarmRecordDemoMapper
extends
BaseMapper
<
PlatAlarmRecordDemo
>
{
}
server-service/src/main/java/com/makeit/mapper/platform/demo/PlatDeviceDemoMapper.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
mapper
.
platform
.
demo
;
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.demo.PlatDeviceDemo
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
org.apache.ibatis.annotations.Param
;
/**
* <p>
* 设备 Mapper 接口
* </p>
*
* @author eugene young
* @since 2023-09-05
*/
public
interface
PlatDeviceDemoMapper
extends
BaseMapper
<
PlatDeviceDemo
>
{
}
server-service/src/main/java/com/makeit/service/platform/demo/DemoDeviceService.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
service
.
platform
.
demo
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.makeit.entity.platform.demo.PlatDeviceDemo
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.module.demo.dto.DemoDeviceDTO
;
import
com.makeit.module.demo.vo.DemoDeviceEntity
;
import
com.makeit.vo.platform.demo.DemoHeartRespiratoryVO
;
import
java.util.List
;
/**
* <p>
* 设备 服务类
* </p>
*
* @author eugene young
* @since 2023-09-05
*/
public
interface
DemoDeviceService
extends
IService
<
PlatDeviceDemo
>
{
DemoDeviceEntity
queryDeviceDetail
(
DemoDeviceDTO
dto
);
List
<
PlatDeviceDemo
>
getList
();
DemoHeartRespiratoryVO
heartRate
(
DemoDeviceDTO
dto
);
DemoHeartRespiratoryVO
breathRate
(
DemoDeviceDTO
dto
);
void
noticeRelation
(
String
id
);
}
server-service/src/main/java/com/makeit/service/platform/demo/PlatAlarmRecordDemoService.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
service
.
platform
.
demo
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.makeit.common.dto.BaseIdDTO
;
import
com.makeit.common.page.PageReqDTO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO
;
import
com.makeit.entity.platform.alarm.PlatAlarmConfig
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.demo.PlatAlarmRecordDemo
;
import
com.makeit.entity.platform.elder.PlatElder
;
import
com.makeit.enums.report.PlatformTypeEnum
;
import
com.makeit.shengwang.agora.dto.PlatCallingDeviceDTO
;
import
com.makeit.shengwang.agora.vo.PlatAlarmCallDeviceVO
;
import
com.makeit.vo.platform.alarm.PlatAlarmExternalRecordVO
;
import
com.makeit.vo.platform.alarm.PlatAlarmRecordVO
;
/**
* @author lixl
* @description 针对表【plat_alarm_record(告警记录)】的数据库操作Service
* @createDate 2023-09-06 14:26:05
*/
public
interface
PlatAlarmRecordDemoService
extends
IService
<
PlatAlarmRecordDemo
>
{
PageVO
<
PlatAlarmRecordVO
>
page
(
PageReqDTO
<
PlatAlarmRecordQueryDTO
>
dto
);
PlatAlarmRecordVO
view
(
String
recordId
);
void
deal
(
String
recordId
);
}
\ No newline at end of file
server-service/src/main/java/com/makeit/service/platform/demo/impl/DemoDeviceServiceImpl.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
service
.
platform
.
demo
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.demo.PlatAlarmRecordDemo
;
import
com.makeit.entity.platform.demo.PlatDeviceDemo
;
import
com.makeit.entity.platform.device.PlatDevice
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.mapper.platform.demo.PlatDeviceDemoMapper
;
import
com.makeit.mapper.platform.device.PlatDeviceMapper
;
import
com.makeit.module.demo.dto.DemoDeviceDTO
;
import
com.makeit.module.demo.service.DemoProductDeviceService
;
import
com.makeit.module.demo.vo.DemoDeviceEntity
;
import
com.makeit.service.platform.demo.DemoDeviceService
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.demo.PlatAlarmRecordDemoService
;
import
com.makeit.vo.platform.demo.DemoHeartRespiratoryVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.ZoneId
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Random
;
/**
* <p>
* 设备 服务实现类
* </p>
*
* @author eugene young
* @since 2023-09-05
*/
@Service
public
class
DemoDeviceServiceImpl
extends
ServiceImpl
<
PlatDeviceDemoMapper
,
PlatDeviceDemo
>
implements
DemoDeviceService
{
@Autowired
private
DemoProductDeviceService
demoProductDeviceService
;
@Autowired
private
PlatAlarmRecordDemoService
platAlarmRecordService
;
@Override
public
DemoDeviceEntity
queryDeviceDetail
(
DemoDeviceDTO
dto
)
{
DemoDeviceEntity
demoDeviceEntity
=
demoProductDeviceService
.
queryDeviceDetail
(
dto
.
getEntityCode
(),
true
);
return
demoDeviceEntity
;
}
@Override
public
List
<
PlatDeviceDemo
>
getList
()
{
List
<
PlatDeviceDemo
>
platDevices
=
list
();
for
(
PlatDeviceDemo
device
:
platDevices
){
DemoDeviceEntity
demoDeviceEntity
=
demoProductDeviceService
.
queryDeviceDetail
(
device
.
getOriDeviceId
(),
true
);
device
.
setStatus
(
demoDeviceEntity
.
getStatus
());
}
return
platDevices
;
}
@Override
public
DemoHeartRespiratoryVO
heartRate
(
DemoDeviceDTO
dto
)
{
List
<
Integer
>
values
=
Arrays
.
asList
(
1
,
3
,-
1
,
2
,
0
,-
2
,-
3
);
Random
rand
=
new
Random
();
int
n
=
rand
.
nextInt
(
values
.
size
());
Integer
value
=
values
.
get
(
n
);
DemoHeartRespiratoryVO
vo
=
new
DemoHeartRespiratoryVO
();
DemoDeviceEntity
demoDeviceEntity
=
demoProductDeviceService
.
queryDeviceDetail
(
dto
.
getEntityCode
(),
true
);
if
(
"3"
.
equals
(
demoDeviceEntity
.
getStatus
())){
for
(
DemoDeviceEntity
.
DeviceShadowDTO
deviceShadowDTO
:
demoDeviceEntity
.
getDeviceShadowDTOList
()){
if
(
deviceShadowDTO
.
getAttribute
()!=
null
&&
"heartRate"
.
equals
(
deviceShadowDTO
.
getAttribute
().
getAttributeCode
())){
vo
.
setHeartRate
(
deviceShadowDTO
.
getValue
());
if
(
deviceShadowDTO
.
getValue
()!=
null
&&
Integer
.
valueOf
(
deviceShadowDTO
.
getValue
())>
3
){
vo
.
setHeartRate
(
String
.
valueOf
(
Integer
.
valueOf
(
vo
.
getHeartRate
())+
value
));
}
vo
.
setTime
(
LocalDateTime
.
now
());
}
}
}
else
{
vo
.
setTime
(
LocalDateTime
.
now
());
}
return
vo
;
}
@Override
public
DemoHeartRespiratoryVO
breathRate
(
DemoDeviceDTO
dto
)
{
DemoHeartRespiratoryVO
vo
=
new
DemoHeartRespiratoryVO
();
DemoDeviceEntity
demoDeviceEntity
=
demoProductDeviceService
.
queryDeviceDetail
(
dto
.
getEntityCode
(),
true
);
if
(
"3"
.
equals
(
demoDeviceEntity
.
getStatus
())){
for
(
DemoDeviceEntity
.
DeviceShadowDTO
deviceShadowDTO
:
demoDeviceEntity
.
getDeviceShadowDTOList
()){
if
(
deviceShadowDTO
.
getAttribute
()!=
null
&&
"breathRate"
.
equals
(
deviceShadowDTO
.
getAttribute
().
getAttributeCode
())){
vo
.
setRespiratoryRate
(
deviceShadowDTO
.
getValue
());
Instant
instant
=
Instant
.
ofEpochMilli
(
deviceShadowDTO
.
getValueTime
());
ZoneId
zone
=
ZoneId
.
systemDefault
();
vo
.
setTime
(
LocalDateTime
.
ofInstant
(
instant
,
zone
));
}
}
}
else
{
vo
.
setTime
(
LocalDateTime
.
now
());
}
return
vo
;
}
@Override
public
void
noticeRelation
(
String
id
)
{
PlatAlarmRecordDemo
platAlarmRecord
=
platAlarmRecordService
.
getById
(
id
);
platAlarmRecord
.
setNoticeStatus
(
CommonEnum
.
YES
.
getValue
());
platAlarmRecordService
.
updateById
(
platAlarmRecord
);
}
}
server-service/src/main/java/com/makeit/service/platform/demo/impl/PlatAlarmRecordDemoServiceImpl.java
0 → 100644
View file @
214aae5d
This diff is collapsed.
Click to expand it.
server-service/src/main/java/com/makeit/task/DemoDeviceTask.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
task
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.makeit.entity.platform.demo.PlatAlarmRecordDemo
;
import
com.makeit.enums.platform.alarm.PlatAlarmConfigEnum
;
import
com.makeit.enums.platform.alarm.PlatAlarmRecordEnum
;
import
com.makeit.module.demo.service.DemoProductDeviceService
;
import
com.makeit.module.demo.vo.DemoDeviceEntity
;
import
com.makeit.service.platform.demo.PlatAlarmRecordDemoService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.ZoneId
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Random
;
@Component
@Slf4j
public
class
DemoDeviceTask
{
@Autowired
private
PlatAlarmRecordDemoService
platAlarmRecordDemoService
;
@Autowired
private
DemoProductDeviceService
demoProductDeviceService
;
@Scheduled
(
cron
=
"*/1 * * * * ?"
)
public
void
syncDemoAlarm
()
{
log
.
info
(
"syncDemoAlarm开始执行"
);
List
<
String
>
names
=
Arrays
.
asList
(
"钟奕轩"
,
"林彦辰"
,
"周子恒"
,
"唐景晨"
);
Random
rand
=
new
Random
();
int
n
=
rand
.
nextInt
(
names
.
size
());
String
name
=
names
.
get
(
n
);
log
.
info
(
"name:"
+
name
);
List
<
PlatAlarmRecordDemo
>
records
=
platAlarmRecordDemoService
.
list
(
new
QueryWrapper
<
PlatAlarmRecordDemo
>().
lambda
().
orderByDesc
(
PlatAlarmRecordDemo:
:
getAlarmDate
)
);
DemoDeviceEntity
demoDeviceEntity
=
demoProductDeviceService
.
queryDeviceDetail
(
"219A02233700000"
,
true
);
if
(
demoDeviceEntity
!=
null
&&
!
demoDeviceEntity
.
getDeviceShadowDTOList
().
isEmpty
()){
if
(
records
.
isEmpty
()){
for
(
DemoDeviceEntity
.
DeviceShadowDTO
dto
:
demoDeviceEntity
.
getDeviceShadowDTOList
()){
if
(
dto
.
getAttribute
()!=
null
&&
"personState"
.
equals
(
dto
.
getAttribute
().
getAttributeCode
())){
if
(
"1"
.
equals
(
dto
.
getValue
())){
PlatAlarmRecordDemo
alarmRecord
=
new
PlatAlarmRecordDemo
();
alarmRecord
.
setElderName
(
name
);
alarmRecord
.
setAlarmType
(
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
FALL
.
getValue
());
alarmRecord
.
setContent
(
name
+
"在房间内跌倒,请及时处理"
);
alarmRecord
.
setStatus
(
PlatAlarmRecordEnum
.
AlarmRecordStatusEnum
.
UNHANDLED
.
getValue
());
Instant
instant
=
Instant
.
ofEpochMilli
(
dto
.
getValueTime
());
ZoneId
zone
=
ZoneId
.
systemDefault
();
alarmRecord
.
setAlarmDate
(
LocalDateTime
.
ofInstant
(
instant
,
zone
));
alarmRecord
.
setAlarmId
(
dto
.
getId
());
alarmRecord
.
setValueTime
(
dto
.
getValueTime
());
alarmRecord
.
setTenantId
(
"1705124341248724993"
);
platAlarmRecordDemoService
.
save
(
alarmRecord
);
break
;
}
}
}
}
else
{
PlatAlarmRecordDemo
record
=
records
.
get
(
0
);
for
(
DemoDeviceEntity
.
DeviceShadowDTO
dto
:
demoDeviceEntity
.
getDeviceShadowDTOList
()){
if
(
dto
.
getAttribute
()!=
null
&&
"personState"
.
equals
(
dto
.
getAttribute
().
getAttributeCode
())){
if
(
"1"
.
equals
(
dto
.
getValue
())
&&
!
record
.
getValueTime
().
equals
(
dto
.
getValueTime
())){
PlatAlarmRecordDemo
alarmRecord
=
new
PlatAlarmRecordDemo
();
alarmRecord
.
setElderName
(
name
);
alarmRecord
.
setAlarmType
(
PlatAlarmConfigEnum
.
AlarmTypeEnum
.
FALL
.
getValue
());
alarmRecord
.
setContent
(
name
+
"在房间内跌倒,请及时处理"
);
alarmRecord
.
setStatus
(
PlatAlarmRecordEnum
.
AlarmRecordStatusEnum
.
UNHANDLED
.
getValue
());
Instant
instant
=
Instant
.
ofEpochMilli
(
dto
.
getValueTime
());
ZoneId
zone
=
ZoneId
.
systemDefault
();
alarmRecord
.
setAlarmDate
(
LocalDateTime
.
ofInstant
(
instant
,
zone
));
alarmRecord
.
setAlarmId
(
dto
.
getId
());
alarmRecord
.
setValueTime
(
dto
.
getValueTime
());
alarmRecord
.
setTenantId
(
"1705124341248724993"
);
platAlarmRecordDemoService
.
save
(
alarmRecord
);
break
;
}
}
}
}
}
log
.
info
(
"syncDemoAlarm结束执行"
);
}
}
server-service/src/main/java/com/makeit/vo/platform/demo/DemoHeartRespiratoryVO.java
0 → 100644
View file @
214aae5d
package
com
.
makeit
.
vo
.
platform
.
demo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
@Data
public
class
DemoHeartRespiratoryVO
{
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@ApiModelProperty
(
"时间"
)
private
LocalDateTime
time
;
@ApiModelProperty
(
"心率"
)
private
String
heartRate
;
@ApiModelProperty
(
"呼吸率"
)
private
String
respiratoryRate
;
}
server-web/src/main/resources/application-dev.yml
View file @
214aae5d
...
...
@@ -180,6 +180,12 @@ elasticsearch:
password
:
scheme
:
http
demo
:
url
:
https://test-api.yunmaolink.com/
brand
:
kuangshi
accessKey
:
389a05bf1bd24cdfa3a8be97708ba586
secretKey
:
5d37ecc971ee400db4e30391902d3564
...
...
server-web/src/main/resources/application-test.yml
View file @
214aae5d
...
...
@@ -178,3 +178,9 @@ elasticsearch:
password
:
scheme
:
http
demo
:
url
:
https://test-api.yunmaolink.com/
brand
:
kuangshi
accessKey
:
389a05bf1bd24cdfa3a8be97708ba586
secretKey
:
5d37ecc971ee400db4e30391902d3564
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