Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
device-new-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
device-new-platform
Commits
5167988d
Commit
5167988d
authored
Jun 08, 2022
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加设备导入导出功能
parent
e7b92ac0
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
225 additions
and
3 deletions
+225
-3
device-manager/src/main/java/com/mortals/xhx/base/login/interceptor/AuthJsonInterceptor.java
...rtals/xhx/base/login/interceptor/AuthJsonInterceptor.java
+11
-0
device-manager/src/main/java/com/mortals/xhx/busiz/req/DeviceMsgReq.java
...src/main/java/com/mortals/xhx/busiz/req/DeviceMsgReq.java
+52
-0
device-manager/src/main/java/com/mortals/xhx/busiz/web/DeviceApiController.java
...n/java/com/mortals/xhx/busiz/web/DeviceApiController.java
+35
-1
device-manager/src/main/java/com/mortals/xhx/common/utils/DownMsgTask.java
...c/main/java/com/mortals/xhx/common/utils/DownMsgTask.java
+75
-0
device-manager/src/main/java/com/mortals/xhx/module/device/model/vo/DeviceVo.java
...java/com/mortals/xhx/module/device/model/vo/DeviceVo.java
+2
-2
doc/api.md
doc/api.md
+50
-0
No files found.
device-manager/src/main/java/com/mortals/xhx/base/login/interceptor/AuthJsonInterceptor.java
View file @
5167988d
package
com.mortals.xhx.base.login.interceptor
;
import
com.mortals.framework.annotation.UnAuth
;
import
com.mortals.xhx.base.framework.config.InterceptorConfig
;
import
com.mortals.framework.ap.CookieService
;
import
com.mortals.framework.ap.SysConstains
;
...
...
@@ -13,9 +14,12 @@ import com.mortals.framework.web.interceptor.BaseInterceptor;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.method.HandlerMethod
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.lang.reflect.Method
;
@Order
(
1
)
@Component
public
class
AuthJsonInterceptor
extends
BaseInterceptor
{
...
...
@@ -35,6 +39,13 @@ public class AuthJsonInterceptor extends BaseInterceptor {
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
try
{
HandlerMethod
handlerMethod
=
(
HandlerMethod
)
handler
;
Method
method
=
handlerMethod
.
getMethod
();
UnAuth
annotation
=
method
.
getAnnotation
(
UnAuth
.
class
);
if
(
annotation
!=
null
)
{
//取消校验
return
true
;
}
String
uri
=
request
.
getServletPath
();
if
(
config
.
needCheckAuth
(
uri
))
{
boolean
auth
=
this
.
checkAuth
(
request
,
uri
,
config
.
getSecurityKey
());
...
...
device-manager/src/main/java/com/mortals/xhx/busiz/req/DeviceMsgReq.java
0 → 100644
View file @
5167988d
package
com.mortals.xhx.busiz.req
;
import
com.alibaba.fastjson.JSON
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.Date
;
@Data
public
class
DeviceMsgReq
implements
Serializable
{
/**
* 设备编码
*/
private
String
deviceCode
;
/**
* 消息类型
*/
private
String
messageType
;
/**
* 时间戳(毫秒)
*/
private
Long
timestamp
;
/**
* 消息内容
*/
private
String
data
;
public
static
void
main
(
String
[]
args
)
{
ArrayList
<
DeviceMsgReq
>
deq
=
new
ArrayList
<>();
DeviceMsgReq
deviceMsgReq
=
new
DeviceMsgReq
();
deviceMsgReq
.
setDeviceCode
(
"a1"
);
deviceMsgReq
.
setMessageType
(
"heart_beat"
);
deviceMsgReq
.
setData
(
"{xxxx}"
);
deviceMsgReq
.
setTimestamp
(
new
Date
().
getTime
());
deq
.
add
(
deviceMsgReq
);
deviceMsgReq
=
new
DeviceMsgReq
();
deviceMsgReq
.
setDeviceCode
(
"a2"
);
deviceMsgReq
.
setMessageType
(
"heart_beat"
);
deviceMsgReq
.
setData
(
"{bbbbbb}"
);
deviceMsgReq
.
setTimestamp
(
new
Date
().
getTime
());
deq
.
add
(
deviceMsgReq
);
System
.
out
.
println
(
JSON
.
toJSONString
(
deq
));
}
}
device-manager/src/main/java/com/mortals/xhx/busiz/web/DeviceApiController.java
View file @
5167988d
...
...
@@ -3,6 +3,7 @@ package com.mortals.xhx.busiz.web;
import
cn.hutool.core.util.IdUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mortals.framework.annotation.UnAuth
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.service.IAuthTokenService
;
import
com.mortals.framework.util.AESUtil
;
...
...
@@ -11,6 +12,7 @@ import com.mortals.xhx.base.framework.annotation.ApiUserAuth;
import
com.mortals.xhx.base.login.web.LoginForm
;
import
com.mortals.xhx.base.system.user.model.UserEntity
;
import
com.mortals.xhx.base.system.user.service.UserService
;
import
com.mortals.xhx.busiz.req.DeviceMsgReq
;
import
com.mortals.xhx.busiz.req.DeviceReq
;
import
com.mortals.xhx.busiz.req.UploadDeviceReq
;
import
com.mortals.xhx.busiz.rsp.*
;
...
...
@@ -19,6 +21,8 @@ import com.mortals.xhx.common.key.Constant;
import
com.mortals.xhx.common.model.DefaultTbQueueMsgHeaders
;
import
com.mortals.xhx.common.model.MessageHeader
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.common.utils.DownMsgTask
;
import
com.mortals.xhx.common.utils.SendTaskThreadPool
;
import
com.mortals.xhx.module.device.model.DeviceEntity
;
import
com.mortals.xhx.module.device.service.DeviceService
;
import
com.mortals.xhx.module.platform.model.PlatformEntity
;
...
...
@@ -37,6 +41,7 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -75,7 +80,8 @@ public class DeviceApiController {
private
String
messageTtl
;
@Value
(
"${token.secret}"
)
private
String
secret
;
@Autowired
private
SendTaskThreadPool
sendTaskThreadPool
;
/**
* 设备注册
...
...
@@ -198,6 +204,34 @@ public class DeviceApiController {
}
/**
* 设备数据上报
*
* @param list
* @return
*/
@PostMapping
(
"callback"
)
@UnAuth
public
String
callback
(
@RequestBody
List
<
DeviceMsgReq
>
list
)
{
log
.
debug
(
"【设备数据消息接收】【请求体】--> "
+
JSONObject
.
toJSONString
(
list
));
ApiResp
<
String
>
rsp
=
new
ApiResp
<>();
rsp
.
setMsg
(
ApiRespCodeEnum
.
SUCCESS
.
getLabel
());
rsp
.
setCode
(
ApiRespCodeEnum
.
SUCCESS
.
getValue
());
try
{
DownMsgTask
downMsgTask
=
new
DownMsgTask
(
list
,
platformService
,
productService
,
deviceService
);
sendTaskThreadPool
.
execute
(
downMsgTask
);
}
catch
(
Exception
e
)
{
log
.
error
(
"接收数据失败"
,
e
);
rsp
.
setCode
(
ApiRespCodeEnum
.
FAILED
.
getValue
());
rsp
.
setMsg
(
e
.
getMessage
());
return
JSON
.
toJSONString
(
rsp
);
}
log
.
debug
(
"响应【设备数据消息接收】【响应体】--> "
+
JSONObject
.
toJSONString
(
rsp
));
return
JSON
.
toJSONString
(
rsp
);
}
/**
* 设备数据上报
*
...
...
device-manager/src/main/java/com/mortals/xhx/common/utils/DownMsgTask.java
0 → 100644
View file @
5167988d
package
com.mortals.xhx.common.utils
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mortals.xhx.base.framework.ws.message.SendToAllRequest
;
import
com.mortals.xhx.base.framework.ws.util.WebSocketUtil
;
import
com.mortals.xhx.busiz.req.DeviceMsgReq
;
import
com.mortals.xhx.busiz.req.DeviceReq
;
import
com.mortals.xhx.common.code.DeviceOnlineStatusEnum
;
import
com.mortals.xhx.common.key.Constant
;
import
com.mortals.xhx.common.model.DefaultTbQueueMsgHeaders
;
import
com.mortals.xhx.common.model.MessageHeader
;
import
com.mortals.xhx.module.device.model.DeviceEntity
;
import
com.mortals.xhx.module.device.model.DeviceLogEntity
;
import
com.mortals.xhx.module.device.service.DeviceLogService
;
import
com.mortals.xhx.module.device.service.DeviceService
;
import
com.mortals.xhx.module.platform.model.PlatformEntity
;
import
com.mortals.xhx.module.platform.service.PlatformService
;
import
com.mortals.xhx.module.product.model.ProductEntity
;
import
com.mortals.xhx.module.product.service.ProductService
;
import
com.mortals.xhx.queue.TbQueueMsgHeaders
;
import
com.mortals.xhx.queue.TopicPartitionInfo
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.util.ObjectUtils
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.List
;
/**
* 接收消息
*
* @author: zxfei
* @date: 2022/4/28 10:56
* @description:
**/
@Slf4j
@AllArgsConstructor
public
class
DownMsgTask
implements
Runnable
{
private
List
<
DeviceMsgReq
>
list
;
private
PlatformService
platformService
;
private
ProductService
productService
;
private
DeviceService
deviceService
;
@Override
public
void
run
()
{
try
{
list
.
stream
().
sorted
(
Comparator
.
comparing
(
DeviceMsgReq:
:
getTimestamp
)).
forEach
(
item
->
{
//根据设备编码查询设备
DeviceEntity
deviceEntity
=
deviceService
.
getExtCache
(
item
.
getDeviceCode
());
if
(!
ObjectUtils
.
isEmpty
(
deviceEntity
))
{
//将上报信息转发到mq中
PlatformEntity
platformEntity
=
platformService
.
get
(
deviceEntity
.
getPlatformId
());
if
(
ObjectUtils
.
isEmpty
(
platformEntity
))
{
log
.
error
(
"当前设备未配置所属系统平台,请在后台配置后再激活!"
);
return
;
}
ProductEntity
productEntity
=
productService
.
get
(
deviceEntity
.
getProductId
());
if
(
ObjectUtils
.
isEmpty
(
productEntity
))
{
log
.
error
(
"当前设备未配置所属产品,请在后台配置后再激活!"
);
return
;
}
String
exchangeName
=
platformEntity
.
getPlatformSn
()
+
Constant
.
EXCHANGE_SPLIT
+
productEntity
.
getProductCode
();
TopicPartitionInfo
info
=
TopicPartitionInfo
.
builder
().
exchangeName
(
exchangeName
).
topic
(
Constant
.
UPLOAD_TOPIC
+
deviceEntity
.
getDeviceMac
()).
build
();
TbQueueMsgHeaders
header
=
new
DefaultTbQueueMsgHeaders
();
header
.
put
(
MessageHeader
.
MESSAGETYPE
,
Constant
.
MESSAGETYPE_HEARTBEAT
);
deviceService
.
sendDeviceMessage
(
deviceEntity
,
info
,
header
,
JSON
.
toJSONString
(
item
.
getData
()),
null
);
}
});
}
catch
(
Exception
e
)
{
log
.
error
(
"异常:"
,
e
);
}
}
}
device-manager/src/main/java/com/mortals/xhx/module/device/model/vo/DeviceVo.java
View file @
5167988d
...
...
@@ -29,8 +29,8 @@ public class DeviceVo extends BaseEntityLong {
/**
* 产品编码
*/
@Excel
(
name
=
"产品编码"
,
combo
=
{
"排队机"
,
"窗口屏"
,
"呼叫器"
,
"集中显示屏"
,
"导视机"
,
"评
级
器"
,
"自助服务终端"
,
"填单机"
,
"样表机"
}
,
readConverterExp
=
"pdj=排队机,ckp=窗口屏,hjq=呼叫器,jzxsp=集中显示屏,dsj=导视机,pjq=评
级
器,zzfwzd=自助服务终端,tdj=填单机,ybj=样表机"
)
@Excel
(
name
=
"产品编码"
,
combo
=
{
"排队机"
,
"窗口屏"
,
"呼叫器"
,
"集中显示屏"
,
"导视机"
,
"评
价
器"
,
"自助服务终端"
,
"填单机"
,
"样表机"
}
,
readConverterExp
=
"pdj=排队机,ckp=窗口屏,hjq=呼叫器,jzxsp=集中显示屏,dsj=导视机,pjq=评
价
器,zzfwzd=自助服务终端,tdj=填单机,ybj=样表机"
)
private
String
productCode
;
...
...
doc/api.md
View file @
5167988d
...
...
@@ -205,6 +205,56 @@ data|object|数据对象|-
```
### 接收第三方平台命令消息
**请求URL:**
m/api/callback
**请求方式:**
POST
**内容类型:**
application/json;charset=utf-8
**简要描述:**
以数组方式进行提交
**请求参数:**
参数名称|类型|备注|必填|其它
:------|:---|:---|:---|:---
deviceCode|String|设备编码,如MAC地址|是|-
messageType|String|消息类型|是|如heart_beat
timestamp|Long|产品编码|是|见产品编码附录
data|String|数据体,内容自行定义|否|-
**请求样例:**
```
[
{
"data":"{xxxx}",
"deviceCode":"a1",
"messageType":"heart_beat",
"timestamp":1654656951795
},
{
"data":"{bbbbbb}",
"deviceCode":"a2",
"messageType":"heart_beat",
"timestamp":1654656951795
}
]
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.接收成功)|-
msg|String|消息|-
**响应消息样例:**
```
```
### 回调各个平台通知消息
...
...
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