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
98e11082
Commit
98e11082
authored
Jul 15, 2022
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
日志展示修改
parent
c347cd33
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
187 additions
and
71 deletions
+187
-71
common-lib/src/main/java/com/mortals/xhx/queue/TbQueueMsgMetadata.java
...c/main/java/com/mortals/xhx/queue/TbQueueMsgMetadata.java
+1
-0
common-lib/src/main/java/com/mortals/xhx/queue/kafka/KafkaTbQueueMsgMetadata.java
.../com/mortals/xhx/queue/kafka/KafkaTbQueueMsgMetadata.java
+2
-0
common-lib/src/main/java/com/mortals/xhx/queue/kafka/TbKafkaProducerTemplate.java
.../com/mortals/xhx/queue/kafka/TbKafkaProducerTemplate.java
+1
-1
common-lib/src/main/java/com/mortals/xhx/queue/rabbitmq/RabbitQueueMsgMetadata.java
...om/mortals/xhx/queue/rabbitmq/RabbitQueueMsgMetadata.java
+18
-0
common-lib/src/main/java/com/mortals/xhx/queue/rabbitmq/TbRabbitMqProducerTemplate.java
...ortals/xhx/queue/rabbitmq/TbRabbitMqProducerTemplate.java
+4
-4
device-manager-ui/admin/src/views/device/log/list.vue
device-manager-ui/admin/src/views/device/log/list.vue
+3
-1
device-manager/src/main/java/com/mortals/xhx/busiz/web/DeviceApiController.java
...n/java/com/mortals/xhx/busiz/web/DeviceApiController.java
+32
-3
device-manager/src/main/java/com/mortals/xhx/common/code/LogTypeEnum.java
...rc/main/java/com/mortals/xhx/common/code/LogTypeEnum.java
+2
-1
device-manager/src/main/java/com/mortals/xhx/common/utils/DownMsgTask.java
...c/main/java/com/mortals/xhx/common/utils/DownMsgTask.java
+46
-17
device-manager/src/main/java/com/mortals/xhx/common/utils/SendTask.java
.../src/main/java/com/mortals/xhx/common/utils/SendTask.java
+4
-2
device-manager/src/main/java/com/mortals/xhx/daemon/DemoApiController.java
...c/main/java/com/mortals/xhx/daemon/DemoApiController.java
+1
-1
device-manager/src/main/java/com/mortals/xhx/daemon/applicationservice/DeviceMsgComsumerStartedService.java
...n/applicationservice/DeviceMsgComsumerStartedService.java
+10
-14
device-manager/src/main/java/com/mortals/xhx/module/device/service/DeviceService.java
.../com/mortals/xhx/module/device/service/DeviceService.java
+2
-1
device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceLogServiceImpl.java
.../xhx/module/device/service/impl/DeviceLogServiceImpl.java
+15
-1
device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceServiceImpl.java
...als/xhx/module/device/service/impl/DeviceServiceImpl.java
+14
-13
device-manager/src/main/java/com/mortals/xhx/module/device/web/DeviceController.java
...a/com/mortals/xhx/module/device/web/DeviceController.java
+4
-2
device-manager/src/main/java/com/mortals/xhx/module/device/web/DeviceLogController.java
...om/mortals/xhx/module/device/web/DeviceLogController.java
+28
-10
No files found.
common-lib/src/main/java/com/mortals/xhx/queue/TbQueueMsgMetadata.java
View file @
98e11082
...
...
@@ -7,4 +7,5 @@ package com.mortals.xhx.queue;
* @date: 2021/11/22 10:56
*/
public
interface
TbQueueMsgMetadata
{
String
getMessageId
();
}
common-lib/src/main/java/com/mortals/xhx/queue/kafka/KafkaTbQueueMsgMetadata.java
View file @
98e11082
...
...
@@ -15,4 +15,6 @@ import org.apache.kafka.clients.producer.RecordMetadata;
@AllArgsConstructor
public
class
KafkaTbQueueMsgMetadata
implements
TbQueueMsgMetadata
{
private
RecordMetadata
metadata
;
private
String
messageId
;
}
common-lib/src/main/java/com/mortals/xhx/queue/kafka/TbKafkaProducerTemplate.java
View file @
98e11082
...
...
@@ -69,7 +69,7 @@ public class TbKafkaProducerTemplate<T extends TbQueueMsg> implements TbQueuePro
producer
.
send
(
record
,
(
metadata
,
exception
)
->
{
if
(
exception
==
null
)
{
if
(
callback
!=
null
)
{
callback
.
onSuccess
(
new
KafkaTbQueueMsgMetadata
(
metadata
));
callback
.
onSuccess
(
new
KafkaTbQueueMsgMetadata
(
metadata
,
key
));
}
}
else
{
if
(
callback
!=
null
)
{
...
...
common-lib/src/main/java/com/mortals/xhx/queue/rabbitmq/RabbitQueueMsgMetadata.java
0 → 100644
View file @
98e11082
package
com.mortals.xhx.queue.rabbitmq
;
import
com.mortals.xhx.queue.TbQueueMsgMetadata
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
org.apache.kafka.clients.producer.RecordMetadata
;
/**
* 队列元数据
*
* @author: zxfei
* @date: 2021/11/22 14:40
*/
@Data
@AllArgsConstructor
public
class
RabbitQueueMsgMetadata
implements
TbQueueMsgMetadata
{
private
String
messageId
;
}
common-lib/src/main/java/com/mortals/xhx/queue/rabbitmq/TbRabbitMqProducerTemplate.java
View file @
98e11082
...
...
@@ -96,7 +96,7 @@ public class TbRabbitMqProducerTemplate<T extends TbQueueMsg> implements TbQueue
channel
.
queueBind
(
tpi
.
getTopic
(),
tpi
.
getExchangeName
(),
tpi
.
getTopic
());
channel
.
basicPublish
(
tpi
.
getExchangeName
(),
tpi
.
getTopic
(),
properties
,
JSON
.
toJSONString
(
new
DefaultTbQueueMsg
(
msg
)).
getBytes
());
if
(
callback
!=
null
)
{
callback
.
onSuccess
(
n
ull
);
callback
.
onSuccess
(
n
ew
RabbitQueueMsgMetadata
(
msg
.
getKey
())
);
}
}
catch
(
IOException
e
)
{
log
.
error
(
"Failed publish message: [{}]."
,
msg
,
e
);
...
...
@@ -143,7 +143,8 @@ public class TbRabbitMqProducerTemplate<T extends TbQueueMsg> implements TbQueue
channel
=
connection
.
createChannel
();
channel
.
exchangeDeclare
(
tpi
.
getExchangeName
(),
BuiltinExchangeType
.
DIRECT
,
true
,
false
,
null
);
}
callback
.
onSuccess
(
null
);
// callback.onSuccess(new RabbitQueueMsgMetadata());
}
catch
(
IOException
e
)
{
log
.
error
(
"Failed publish message: {}."
,
e
);
if
(
callback
!=
null
)
{
...
...
@@ -168,14 +169,13 @@ public class TbRabbitMqProducerTemplate<T extends TbQueueMsg> implements TbQueue
private
Boolean
createTopicIfNotExist
(
TopicPartitionInfo
tpi
)
{
if
(
topics
.
contains
(
tpi
))
{
log
.
info
(
"contains topc:{}"
,
tpi
.
getTopic
());
log
.
debug
(
"contains topc:{}"
,
tpi
.
getTopic
());
return
true
;
}
topics
.
add
(
tpi
);
return
false
;
}
private
boolean
innerExists
(
String
exchangeName
,
Channel
outerChannel
)
{
boolean
result
=
true
;
try
{
...
...
device-manager-ui/admin/src/views/device/log/list.vue
View file @
98e11082
...
...
@@ -46,12 +46,14 @@
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
label
:
"
traceID
"
,
prop
:
"
traceID
"
},
{
label
:
"
设备编号
"
,
prop
:
"
deviceNum
"
},
{
label
:
"
设备名称
"
,
prop
:
"
deviceName
"
},
{
label
:
"
业务标识
"
,
prop
:
"
messageHead
"
},
{
label
:
"
日志类型
"
,
prop
:
"
logType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
内容
"
,
prop
:
"
content
"
},
...
...
device-manager/src/main/java/com/mortals/xhx/busiz/web/DeviceApiController.java
View file @
98e11082
...
...
@@ -3,15 +3,21 @@ package com.mortals.xhx.busiz.web;
import
cn.hutool.core.date.DateUnit
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.extra.servlet.ServletUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.mortals.framework.annotation.UnAuth
;
import
com.mortals.framework.ap.GlobalSysInfo
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.service.IAuthTokenService
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.service.ILogService
;
import
com.mortals.framework.service.IUser
;
import
com.mortals.framework.service.impl.FileLogServiceImpl
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.framework.util.StringUtils
;
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
;
...
...
@@ -50,12 +56,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
static
com
.
mortals
.
framework
.
ap
.
SysConstains
.
PROP_PLATFORM_MARK
;
import
static
com
.
mortals
.
xhx
.
common
.
key
.
Constant
.
DES_STR
;
import
static
com
.
mortals
.
xhx
.
common
.
key
.
Constant
.
ENCRYPT_STR
;
import
static
com
.
mortals
.
xhx
.
common
.
key
.
ErrorCode
.*;
...
...
@@ -106,6 +115,9 @@ public class DeviceApiController {
@Autowired
private
ICacheService
cacheService
;
@Autowired
protected
ILogService
logService
=
FileLogServiceImpl
.
getInstance
();
/**
* 设备注册
*
...
...
@@ -208,7 +220,7 @@ public class DeviceApiController {
//long expireTime = DateUtil.between(DateUtil.beginOfWeek(new Date()), DateUtil.endOfWeek(new Date()), DateUnit.SECOND);
cacheService
.
setnx
(
KEY_TOKEN_API_CACHE
+
token
,
""
,
604800
);
cacheService
.
setnx
(
KEY_TOKEN_API_CACHE
+
token
,
""
,
604800
);
rsp
.
setData
(
token
);
}
}
catch
(
AppException
e
)
{
...
...
@@ -479,7 +491,7 @@ public class DeviceApiController {
header
.
put
(
MessageHeader
.
MESSAGETYPE
,
Constant
.
MESSAGETYPE_HEARTBEAT
);
header
.
put
(
MessageHeader
.
DEVICECODE
,
deviceEntity
.
getDeviceCode
());
for
(
int
i
=
0
;
i
<
100
;
i
++)
{
deviceService
.
sendDeviceMessage
(
deviceEntity
,
info
,
header
,
JSON
.
toJSONString
(
req
),
null
);
deviceService
.
sendDeviceMessage
(
deviceEntity
,
info
,
header
,
JSON
.
toJSONString
(
req
),
null
,
null
);
Thread
.
sleep
(
50
);
}
//log.info(String.format("sendMsgResp:%s", JSON.toJSONString(sendDeviceMessageResp)));
...
...
@@ -504,11 +516,14 @@ public class DeviceApiController {
*/
@PostMapping
(
"receive"
)
@ApiUserAuth
public
String
receive
(
@RequestBody
DeviceReq
req
)
{
public
String
receive
(
HttpServletRequest
request
,
@RequestBody
DeviceReq
req
)
{
log
.
info
(
"【设备接收】【请求体】--> "
+
JSONObject
.
toJSONString
(
req
));
ApiResp
<
String
>
rsp
=
new
ApiResp
<>();
rsp
.
setMsg
(
ApiRespCodeEnum
.
SUCCESS
.
getLabel
());
rsp
.
setCode
(
ApiRespCodeEnum
.
SUCCESS
.
getValue
());
StringBuilder
message
=
new
StringBuilder
();
message
.
append
(
String
.
format
(
"【外部请求】类型【%s】 内容:%s"
,
DeviceMethodEnum
.
getByValue
(
req
.
getReceiveMethod
()).
getDesc
(),
JSONObject
.
toJSONString
(
req
)));
recordSysLog
(
request
,
message
.
toString
());
try
{
switch
(
DeviceMethodEnum
.
getByValue
(
req
.
getReceiveMethod
()))
{
case
ADD:
...
...
@@ -706,4 +721,18 @@ public class DeviceApiController {
return
deviceEntity
;
}
protected
void
recordSysLog
(
HttpServletRequest
request
,
String
message
)
{
if
(
this
.
logService
!=
null
)
{
String
platformMark
=
"other-platform"
;
String
requestUrl
=
request
.
getRequestURI
();
try
{
this
.
logService
.
doHandlerLog
(
platformMark
,
0L
,
"other"
,
"other"
,
requestUrl
,
message
,
ServletUtil
.
getClientIP
(
request
),
new
Date
());
}
catch
(
Exception
e
)
{
this
.
log
.
debug
(
"记录系统操作日志异常-->"
+
e
.
getMessage
());
}
}
}
}
device-manager/src/main/java/com/mortals/xhx/common/code/LogTypeEnum.java
View file @
98e11082
...
...
@@ -10,7 +10,8 @@ import java.util.Map;
*/
public
enum
LogTypeEnum
{
上报事件
(
0
,
"上行"
),
下发服务
(
1
,
"下行"
);
下发服务
(
1
,
"下行"
),
消息异常
(
99
,
"消息发送异常"
);
private
Integer
value
;
private
String
desc
;
...
...
device-manager/src/main/java/com/mortals/xhx/common/utils/DownMsgTask.java
View file @
98e11082
package
com.mortals.xhx.common.utils
;
import
cn.hutool.core.util.IdUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mortals.xhx.base.framework.ws.message.SendToAllRequest
;
...
...
@@ -19,7 +20,9 @@ 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.TbQueueCallback
;
import
com.mortals.xhx.queue.TbQueueMsgHeaders
;
import
com.mortals.xhx.queue.TbQueueMsgMetadata
;
import
com.mortals.xhx.queue.TopicPartitionInfo
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -71,12 +74,14 @@ public class DownMsgTask implements Runnable {
header
.
put
(
MessageHeader
.
MESSAGETYPE
,
item
.
getMessageType
());
header
.
put
(
MessageHeader
.
DEVICECODE
,
item
.
getDeviceCode
());
header
.
put
(
MessageHeader
.
TIMESTAMP
,
item
.
getTimestamp
().
toString
());
deviceService
.
sendDeviceMessage
(
deviceEntity
,
info
,
header
,
item
.
getData
(),
null
);
TbQueueCallback
callback
=
new
TbQueueCallback
()
{
@Override
public
void
onSuccess
(
TbQueueMsgMetadata
metadata
)
{
//下行业务消息保存日志
if
(!
Constant
.
MESSAGETYPE_HEARTBEAT
.
equals
(
item
.
getMessageType
()))
{
if
(!
Constant
.
MESSAGETYPE_HEARTBEAT
.
equalsIgnoreCase
(
item
.
getMessageType
()))
{
DeviceLogEntity
deviceLogEntity
=
new
DeviceLogEntity
();
deviceLogEntity
.
initAttrValue
();
deviceLogEntity
.
setTraceID
(
metadata
.
getMessageId
());
deviceLogEntity
.
setDeviceId
(
deviceEntity
.
getId
());
deviceLogEntity
.
setDeviceName
(
deviceEntity
.
getDeviceName
());
deviceLogEntity
.
setDeviceCode
(
deviceEntity
.
getDeviceCode
());
...
...
@@ -87,8 +92,32 @@ public class DownMsgTask implements Runnable {
deviceLogEntity
.
setCreateTime
(
new
Date
());
deviceLogService
.
save
(
deviceLogEntity
);
}
}
else
{
log
.
info
(
"未找到设备,deviceCode:{}"
,
item
.
getDeviceCode
());
log
.
info
(
"消息投递成功,设备通道编码:"
+
deviceEntity
.
getDeviceMac
());
}
@Override
public
void
onFailure
(
Throwable
t
)
{
DeviceLogEntity
deviceLogEntity
=
new
DeviceLogEntity
();
deviceLogEntity
.
initAttrValue
();
String
traceID
=
IdUtil
.
fastSimpleUUID
();
deviceLogEntity
.
setTraceID
(
traceID
);
deviceLogEntity
.
setDeviceId
(
deviceEntity
.
getId
());
deviceLogEntity
.
setDeviceName
(
deviceEntity
.
getDeviceName
());
deviceLogEntity
.
setDeviceCode
(
deviceEntity
.
getDeviceCode
());
deviceLogEntity
.
setMessageHead
(
item
.
getMessageType
());
deviceLogEntity
.
setContent
(
item
.
getData
());
deviceLogEntity
.
setLogType
(
LogTypeEnum
.
消息异常
.
getValue
());
deviceLogEntity
.
setCreateUserId
(
1L
);
deviceLogEntity
.
setCreateTime
(
new
Date
());
deviceLogService
.
save
(
deviceLogEntity
);
log
.
error
(
"traceID:"
+
traceID
,
"消息投递失败,设备通道编码:"
+
deviceEntity
.
getDeviceMac
(),
t
);
}
};
deviceService
.
sendDeviceMessage
(
deviceEntity
,
info
,
header
,
item
.
getData
(),
callback
,
null
);
}
else
{
log
.
info
(
"未找到设备,deviceCode:{}"
,
item
.
getDeviceCode
());
}
});
}
catch
(
Exception
e
)
{
...
...
device-manager/src/main/java/com/mortals/xhx/common/utils/SendTask.java
View file @
98e11082
...
...
@@ -39,8 +39,10 @@ public class SendTask implements Runnable {
try
{
Map
<
String
,
String
>
header
=
new
HashMap
<>();
header
.
put
(
HEADER_CONTENT_TYPE
,
"application/json"
);
resp
=
HttpUtil
.
doPost
(
sendUrl
,
header
,
JSON
.
toJSONString
(
deviceReqApiReq
));
log
.
debug
(
"resp:{}"
,
resp
);
String
reqStr
=
JSON
.
toJSONString
(
deviceReqApiReq
);
log
.
debug
(
"sendMessageReq:{}"
,
reqStr
);
resp
=
HttpUtil
.
doPost
(
sendUrl
,
header
,
reqStr
);
log
.
debug
(
"sendMessageResp:{}"
,
resp
);
}
catch
(
Exception
e
)
{
log
.
error
(
"异常:"
,
e
);
}
...
...
device-manager/src/main/java/com/mortals/xhx/daemon/DemoApiController.java
View file @
98e11082
...
...
@@ -170,7 +170,7 @@ public class DemoApiController {
uploadDeviceReq
.
setDeviceCode
(
deviceEntity
.
getDeviceCode
());
for
(
int
i
=
0
;
i
<
100
;
i
++)
{
deviceService
.
sendDeviceMessage
(
deviceEntity
,
info
,
header
,
JSON
.
toJSONString
(
deviceEntity
),
null
);
deviceService
.
sendDeviceMessage
(
deviceEntity
,
info
,
header
,
JSON
.
toJSONString
(
deviceEntity
),
null
,
null
);
}
}
...
...
device-manager/src/main/java/com/mortals/xhx/daemon/applicationservice/DeviceMsgComsumerStartedService.java
View file @
98e11082
package
com.mortals.xhx.daemon.applicationservice
;
import
cn.hutool.core.util.IdUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mortals.framework.ap.GlobalSysInfo
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.springcloud.service.IApplicationStartedService
;
import
com.mortals.xhx.busiz.req.DeviceReq
;
import
com.mortals.xhx.common.code.*
;
import
com.mortals.xhx.common.key.Constant
;
import
com.mortals.xhx.common.key.RedisKey
;
...
...
@@ -35,7 +34,7 @@ import java.util.concurrent.Executors;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
static
com
.
mortals
.
xhx
.
common
.
model
.
MessageHeader
.
MESSAGETYPE
;
import
static
com
.
mortals
.
xhx
.
common
.
model
.
MessageHeader
.
*
;
@Component
...
...
@@ -156,18 +155,14 @@ public class DeviceMsgComsumerStartedService implements IApplicationStartedServi
for
(
TbQueueMsg
queueMsg
:
messages
)
{
log
.
debug
(
"[WRITE MESSAGE] ->message:{}"
,
JSON
.
toJSONString
(
queueMsg
));
//做相应业务,做日志操作
// TODO: 2022/7/12 设备来源从设备编码中获取,内容不做处理
String
deviceCode
=
queueMsg
.
getHeaders
().
get
(
"deviceCode"
);
String
deviceCode
=
queueMsg
.
getHeaders
().
get
(
DEVICECODE
);
String
messageType
=
queueMsg
.
getHeaders
().
get
(
MESSAGETYPE
);
//DeviceReq deviceReq = JSON.parseObject(new String(queueMsg.getData()), DeviceReq.class);
boolean
bool
=
false
;
DeviceEntity
deviceEntity
=
deviceService
.
getExtCache
(
deviceCode
);
if
(!
ObjectUtils
.
isEmpty
(
deviceEntity
))
{
cacheService
.
set
(
RedisKey
.
KEY_DEVICE_ONLINE_CACHE
+
deviceEntity
.
getDeviceCode
(),
""
,
GlobalSysInfo
.
getParamIntValue
(
Constant
.
HEARTBEAT_TIMEOUT
,
120
));
if
(
deviceEntity
.
getDeviceStatus
()
==
DeviceStatusEnum
.
离线
.
getValue
())
{
bool
=
true
;
}
if
(
deviceEntity
.
getDeviceStatus
()
==
DeviceStatusEnum
.
离线
.
getValue
())
{
deviceEntity
.
setOnlineTime
(
new
Date
());
deviceEntity
.
setDeviceStatus
(
DeviceStatusEnum
.
在线
.
getValue
());
...
...
@@ -177,17 +172,18 @@ public class DeviceMsgComsumerStartedService implements IApplicationStartedServi
ProductEntity
productEntity
=
productService
.
get
(
deviceEntity
.
getProductId
());
if
(!
ObjectUtils
.
isEmpty
(
platformEntity
)
&&
!
ObjectUtils
.
isEmpty
(
productEntity
))
{
//新增设备通知第三方平台
deviceService
.
sendThirdParty
(
deviceEntity
,
productEntity
,
platformEntity
,
DeviceMethodEnum
.
O
FF
LINE
);
deviceService
.
sendThirdParty
(
deviceEntity
,
productEntity
,
platformEntity
,
DeviceMethodEnum
.
O
N
LINE
);
}
}
if
(!
Constant
.
MESSAGETYPE_HEARTBEAT
.
equals
(
messageType
))
{
if
(!
Constant
.
MESSAGETYPE_HEARTBEAT
.
equals
IgnoreCase
(
messageType
))
{
DeviceLogEntity
deviceLogEntity
=
new
DeviceLogEntity
();
deviceLogEntity
.
initAttrValue
();
deviceLogEntity
.
setTraceID
(
IdUtil
.
fastSimpleUUID
());
deviceLogEntity
.
setDeviceId
(
deviceEntity
.
getId
());
deviceLogEntity
.
setDeviceName
(
deviceEntity
.
getDeviceName
());
deviceLogEntity
.
setDeviceCode
(
deviceEntity
.
getDeviceCode
());
deviceLogEntity
.
setMessageHead
(
queueMsg
.
getHeaders
().
getData
().
get
(
MESSAGETYPE
)
);
deviceLogEntity
.
setContent
(
new
String
(
queueMsg
.
getData
()
));
deviceLogEntity
.
setMessageHead
(
messageType
);
deviceLogEntity
.
setContent
(
queueMsg
.
getData
(
));
deviceLogEntity
.
setLogType
(
LogTypeEnum
.
上报事件
.
getValue
());
deviceLogEntity
.
setCreateUserId
(
1L
);
deviceLogEntity
.
setCreateTime
(
new
Date
());
...
...
@@ -199,7 +195,7 @@ public class DeviceMsgComsumerStartedService implements IApplicationStartedServi
if
(
platformEntity
.
getSendMsgType
()
==
SendMsgTypeEnum
.
http
.
getValue
()
&&
!
ObjectUtils
.
isEmpty
(
platformEntity
.
getSendUrl
()))
{
//http方式
//通过线程池进行发送消息
SendTask
sendTask
=
new
SendTask
(
platformEntity
.
getSendUrl
(),
new
String
(
queueMsg
.
getData
()
));
SendTask
sendTask
=
new
SendTask
(
platformEntity
.
getSendUrl
(),
queueMsg
.
getData
(
));
sendTaskThreadPool
.
execute
(
sendTask
);
}
}
...
...
device-manager/src/main/java/com/mortals/xhx/module/device/service/DeviceService.java
View file @
98e11082
...
...
@@ -7,6 +7,7 @@ import com.mortals.xhx.module.device.dao.DeviceDao;
import
com.mortals.xhx.module.device.model.DeviceEntity
;
import
com.mortals.xhx.module.platform.model.PlatformEntity
;
import
com.mortals.xhx.module.product.model.ProductEntity
;
import
com.mortals.xhx.queue.TbQueueCallback
;
import
com.mortals.xhx.queue.TbQueueMsgHeaders
;
import
com.mortals.xhx.queue.TopicPartitionInfo
;
...
...
@@ -23,7 +24,7 @@ import java.util.List;
public
interface
DeviceService
extends
ICRUDCacheService
<
DeviceEntity
,
Long
>{
ApiResp
<
String
>
sendDeviceMessage
(
DeviceEntity
deviceEntity
,
TopicPartitionInfo
info
,
TbQueueMsgHeaders
header
,
String
message
,
Context
context
);
ApiResp
<
String
>
sendDeviceMessage
(
DeviceEntity
deviceEntity
,
TopicPartitionInfo
info
,
TbQueueMsgHeaders
header
,
String
message
,
TbQueueCallback
callback
,
Context
context
);
ApiResp
<
String
>
sendDeviceMessage
(
List
<
Long
>
deviceIds
,
TopicPartitionInfo
info
,
TbQueueMsgHeaders
header
,
String
message
,
Context
context
);
...
...
device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceLogServiceImpl.java
View file @
98e11082
package
com.mortals.xhx.module.device.service.impl
;
import
cn.hutool.core.codec.Base64
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.PageInfo
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.xhx.module.device.dao.DeviceLogDao
;
import
com.mortals.xhx.module.device.model.DeviceLogEntity
;
import
com.mortals.xhx.module.device.service.DeviceLogService
;
import
java.util.List
;
/**
* DeviceLogService
* 设备日志 service实现
...
...
@@ -14,4 +21,11 @@ import com.mortals.xhx.module.device.service.DeviceLogService;
@Service
(
"deviceLogService"
)
public
class
DeviceLogServiceImpl
extends
AbstractCRUDServiceImpl
<
DeviceLogDao
,
DeviceLogEntity
,
Long
>
implements
DeviceLogService
{
@Override
protected
void
findAfter
(
DeviceLogEntity
params
,
PageInfo
pageInfo
,
Context
context
,
List
<
DeviceLogEntity
>
list
)
throws
AppException
{
list
.
stream
().
forEach
(
item
->{
item
.
setContent
(
Base64
.
decodeStr
(
item
.
getContent
()));
});
}
}
\ No newline at end of file
device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceServiceImpl.java
View file @
98e11082
...
...
@@ -130,21 +130,22 @@ public class DeviceServiceImpl extends AbstractCRUDCacheServiceImpl<DeviceDao, D
}
@Override
public
ApiResp
<
String
>
sendDeviceMessage
(
DeviceEntity
deviceEntity
,
TopicPartitionInfo
info
,
TbQueueMsgHeaders
header
,
String
message
,
Context
context
)
{
public
ApiResp
<
String
>
sendDeviceMessage
(
DeviceEntity
deviceEntity
,
TopicPartitionInfo
info
,
TbQueueMsgHeaders
header
,
String
message
,
TbQueueCallback
callback
,
Context
context
)
{
ApiResp
<
String
>
resp
=
new
ApiResp
<>();
resp
.
setCode
(
ApiRespCodeEnum
.
SUCCESS
.
getValue
());
resp
.
setMsg
(
ApiRespCodeEnum
.
SUCCESS
.
getLabel
());
TbQueueCallback
callback
=
new
TbQueueCallback
()
{
@Override
public
void
onSuccess
(
TbQueueMsgMetadata
metadata
)
{
log
.
info
(
"消息投递成功,设备通道编码:"
+
deviceEntity
.
getDeviceMac
());
}
@Override
public
void
onFailure
(
Throwable
t
)
{
log
.
error
(
"消息投递成功,设备通道编码:"
+
deviceEntity
.
getDeviceMac
(),
t
);
}
};
// TbQueueCallback callback = new TbQueueCallback() {
// @Override
// public void onSuccess(TbQueueMsgMetadata metadata) {
//
// log.info("消息投递成功,设备通道编码:" + deviceEntity.getDeviceMac());
// }
//
// @Override
// public void onFailure(Throwable t) {
// log.error("消息投递成功,设备通道编码:" + deviceEntity.getDeviceMac(), t);
// }
// };
messageService
.
send
(
info
,
header
,
message
,
callback
);
return
resp
;
}
...
...
@@ -156,7 +157,7 @@ public class DeviceServiceImpl extends AbstractCRUDCacheServiceImpl<DeviceDao, D
deviceQuery
.
setIdList
(
deviceIds
);
List
<
DeviceEntity
>
deviceEntityList
=
this
.
find
(
deviceQuery
);
for
(
DeviceEntity
deviceEntity
:
deviceEntityList
)
{
resp
=
sendDeviceMessage
(
deviceEntity
,
info
,
header
,
message
,
context
);
resp
=
sendDeviceMessage
(
deviceEntity
,
info
,
header
,
message
,
null
,
context
);
}
return
resp
;
}
...
...
device-manager/src/main/java/com/mortals/xhx/module/device/web/DeviceController.java
View file @
98e11082
...
...
@@ -102,7 +102,7 @@ public class DeviceController extends BaseCRUDJsonBodyMappingController<DeviceSe
/**
* 下发信息
*/
@PostMapping
(
value
=
"downMsg"
)
/*
@PostMapping(value = "downMsg")
public String downMsg(@RequestParam(value = "deviceId") Long deviceId, @RequestParam(value = "content") String content) {
JSONObject jsonObject = new JSONObject();
Map<String, Object> model = new HashMap<>();
...
...
@@ -128,6 +128,8 @@ public class DeviceController extends BaseCRUDJsonBodyMappingController<DeviceSe
JSONObject obj = new JSONObject();
obj.put("content", content);
ApiResp<String> sendDeviceMessageResp = this.service.sendDeviceMessage(deviceEntity, info, header, JSON.toJSONString(obj), null);
log.info(String.format("sendMsgResp:%s", JSON.toJSONString(sendDeviceMessageResp)));
if (ApiRespCodeEnum.SUCCESS.getValue() != sendDeviceMessageResp.getCode()) {
...
...
@@ -150,7 +152,7 @@ public class DeviceController extends BaseCRUDJsonBodyMappingController<DeviceSe
jsonObject.put(KEY_RESULT_MSG, super.convertException(e));
}
return jsonObject.toJSONString();
}
}
*/
/**
...
...
device-manager/src/main/java/com/mortals/xhx/module/device/web/DeviceLogController.java
View file @
98e11082
package
com.mortals.xhx.module.device.web
;
import
cn.hutool.core.codec.Base64
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.module.device.model.DeviceLogEntity
;
...
...
@@ -9,30 +12,45 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
/**
*
* 设备日志
*
* @author zxfei
* @date 2022-06-27
*/
* 设备日志
*
* @author zxfei
* @date 2022-06-27
*/
@RestController
@RequestMapping
(
"device/log"
)
public
class
DeviceLogController
extends
BaseCRUDJsonBodyMappingController
<
DeviceLogService
,
DeviceLogEntity
,
Long
>
{
public
class
DeviceLogController
extends
BaseCRUDJsonBodyMappingController
<
DeviceLogService
,
DeviceLogEntity
,
Long
>
{
@Autowired
private
ParamService
paramService
;
public
DeviceLogController
(){
super
.
setModuleDesc
(
"设备日志"
);
public
DeviceLogController
()
{
super
.
setModuleDesc
(
"设备日志"
);
}
@Override
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
this
.
addDict
(
model
,
"logType"
,
paramService
.
getParamBySecondOrganize
(
"DeviceLog"
,
"logType"
));
this
.
addDict
(
model
,
"logType"
,
paramService
.
getParamBySecondOrganize
(
"DeviceLog"
,
"logType"
));
super
.
init
(
model
,
context
);
}
@Override
protected
void
doListBefore
(
DeviceLogEntity
query
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
List
<
OrderCol
>
orderColList
=
new
ArrayList
<>();
orderColList
.
add
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
));
query
.
setOrderColList
(
orderColList
);
super
.
doListBefore
(
query
,
model
,
context
);
}
@Override
protected
int
viewAfter
(
Long
id
,
Map
<
String
,
Object
>
model
,
DeviceLogEntity
entity
,
Context
context
)
throws
AppException
{
entity
.
setContent
(
Base64
.
decodeStr
(
entity
.
getContent
()));
return
super
.
viewAfter
(
id
,
model
,
entity
,
context
);
}
}
\ No newline at end of file
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