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
1c2f4fab
Commit
1c2f4fab
authored
Dec 12, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改设备更新线程实现逻辑
parent
0c5faa7b
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
114 additions
and
21 deletions
+114
-21
device-manager/src/main/java/com/mortals/xhx/base/framework/listener/DirectDynamicListener.java
...ls/xhx/base/framework/listener/DirectDynamicListener.java
+9
-7
device-manager/src/main/java/com/mortals/xhx/busiz/web/DeviceApiController.java
...n/java/com/mortals/xhx/busiz/web/DeviceApiController.java
+12
-6
device-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
...er/src/main/java/com/mortals/xhx/common/key/RedisKey.java
+6
-0
device-manager/src/main/java/com/mortals/xhx/daemon/applicationservice/DeviceComsumersRegisterService.java
...on/applicationservice/DeviceComsumersRegisterService.java
+5
-0
device-manager/src/main/java/com/mortals/xhx/daemon/applicationservice/DeviceMsgComsumerStartedService.java
...n/applicationservice/DeviceMsgComsumerStartedService.java
+3
-1
device-manager/src/main/java/com/mortals/xhx/daemon/task/DeviceStatTaskImpl.java
.../java/com/mortals/xhx/daemon/task/DeviceStatTaskImpl.java
+10
-5
device-manager/src/main/java/com/mortals/xhx/module/device/model/DeviceAlarmInfoEntity.java
...ortals/xhx/module/device/model/DeviceAlarmInfoEntity.java
+1
-2
device-manager/src/main/java/com/mortals/xhx/thread/DeviceUpdateComsumerThread.java
...va/com/mortals/xhx/thread/DeviceUpdateComsumerThread.java
+68
-0
No files found.
device-manager/src/main/java/com/mortals/xhx/base/framework/listener/DirectDynamicListener.java
View file @
1c2f4fab
...
...
@@ -82,14 +82,16 @@ public class DirectDynamicListener implements MessageListener {
if
(
deviceEntity
.
getDeviceStatus
()
==
DeviceStatusEnum
.
离线
.
getValue
())
{
deviceEntity
.
setOnlineTime
(
new
Date
());
deviceEntity
.
setDeviceStatus
(
DeviceStatusEnum
.
在线
.
getValue
());
DeviceEntity
entity
=
new
DeviceEntity
();
entity
.
setOnlineTime
(
new
Date
());
entity
.
setDeviceStatus
(
DeviceStatusEnum
.
在线
.
getValue
());
DeviceEntity
condition
=
new
DeviceEntity
();
condition
.
setId
(
deviceEntity
.
getId
());
int
update
=
deviceService
.
getDeviceDao
().
update
(
entity
,
condition
);
//
DeviceEntity entity = new DeviceEntity();
//
entity.setOnlineTime(new Date());
//
entity.setDeviceStatus(DeviceStatusEnum.在线.getValue());
//
DeviceEntity condition = new DeviceEntity();
//
condition.setId(deviceEntity.getId());
//
int update = deviceService.getDeviceDao().update(entity, condition);
// deviceService.update(deviceEntity);
deviceService
.
putCache
(
deviceEntity
.
getId
().
toString
(),
deviceEntity
);
//deviceService.putCache(deviceEntity.getId().toString(),deviceEntity);
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
deviceEntity
);
PlatformEntity
platformEntity
=
platformService
.
getCache
(
deviceEntity
.
getPlatformId
().
toString
());
ProductEntity
productEntity
=
productService
.
get
(
deviceEntity
.
getProductId
());
...
...
device-manager/src/main/java/com/mortals/xhx/busiz/web/DeviceApiController.java
View file @
1c2f4fab
...
...
@@ -249,7 +249,7 @@ public class DeviceApiController {
entity
.
setId
(
deviceEntity
.
getId
());
entity
.
setOnlineTime
(
new
Date
());
entity
.
setDeviceStatus
(
DeviceStatusEnum
.
在线
.
getValue
());
Long
lpush
=
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_ONLINE_QUEUE
,
entity
);
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_ONLINE_QUEUE
,
entity
);
//deviceService.getDeviceDao().update(deviceEntity);
rsp
.
setData
(
deviceResp
);
...
...
@@ -441,7 +441,8 @@ public class DeviceApiController {
updateDevice
(
req
,
platformEntity
,
productEntity
,
deviceEntity
);
deviceEntity
.
setUpdateTime
(
new
Date
());
deviceEntity
.
setUpdateUserId
(
1L
);
deviceService
.
update
(
deviceEntity
,
null
);
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
deviceEntity
);
//deviceService.update(deviceEntity, null);
}
if
(
deviceEntity
.
getDeviceStatus
()
==
DeviceStatusEnum
.
未激活
.
getValue
())
{
...
...
@@ -927,7 +928,9 @@ public class DeviceApiController {
deviceEntity
.
setLeadingOfficial
(
req
.
getLeadingOfficial
());
deviceEntity
.
setDeviceInFloor
(
req
.
getDeviceInFloor
());
deviceEntity
.
setDeviceInBuilding
(
req
.
getDeviceInBuilding
());
deviceService
.
update
(
deviceEntity
);
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
deviceEntity
);
//deviceService.update(deviceEntity);
}
...
...
@@ -951,7 +954,8 @@ public class DeviceApiController {
deviceEntity
.
setUpdateTime
(
new
Date
());
deviceEntity
.
setUpdateUserId
(
1L
);
deviceEntity
.
setSwitchSend
(
false
);
deviceService
.
update
(
deviceEntity
);
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
deviceEntity
);
//deviceService.update(deviceEntity);
}
...
...
@@ -965,7 +969,8 @@ public class DeviceApiController {
deviceEntity
.
setSwitchSend
(
false
);
deviceEntity
.
setUpdateTime
(
new
Date
());
deviceEntity
.
setUpdateUserId
(
1L
);
deviceService
.
update
(
deviceEntity
);
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
deviceEntity
);
//deviceService.update(deviceEntity);
}
private
void
deviceStop
(
DeviceReq
req
)
throws
AppException
{
...
...
@@ -977,7 +982,8 @@ public class DeviceApiController {
deviceEntity
.
setSwitchSend
(
false
);
deviceEntity
.
setUpdateTime
(
new
Date
());
deviceEntity
.
setUpdateUserId
(
1L
);
deviceService
.
update
(
deviceEntity
);
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
deviceEntity
);
//deviceService.update(deviceEntity);
}
private
DeviceEntity
checkDeviceExist
(
DeviceReq
req
)
{
...
...
device-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
View file @
1c2f4fab
...
...
@@ -20,6 +20,12 @@ public class RedisKey {
*/
public
static
final
String
KEY_DEVICE_ONLINE_QUEUE
=
"device:queue"
;
/**
* 设备更新队列
*/
public
static
final
String
KEY_DEVICE_UPDATE_QUEUE
=
"device:update:queue"
;
/**
* 设备通知外部更新队列
*/
...
...
device-manager/src/main/java/com/mortals/xhx/daemon/applicationservice/DeviceComsumersRegisterService.java
View file @
1c2f4fab
...
...
@@ -10,6 +10,7 @@ import com.mortals.xhx.module.device.model.DeviceEntity;
import
com.mortals.xhx.module.device.service.DeviceService
;
import
com.mortals.xhx.module.platform.service.PlatformService
;
import
com.mortals.xhx.module.product.service.ProductService
;
import
com.mortals.xhx.thread.DeviceUpdateComsumerThread
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -40,11 +41,15 @@ public class DeviceComsumersRegisterService implements IApplicationStartedServic
private
SendTaskThreadPool
sendTaskThreadPool
;
@Autowired
private
DirectDynamicListener
directDynamicListener
;
@Autowired
private
DeviceUpdateComsumerThread
deviceUpdateComsumerThread
;
@Override
public
void
start
()
{
log
.
info
(
"初始化发送线程数量"
);
sendTaskThreadPool
.
init
(
20
);
log
.
info
(
"设备更新消费线程启动"
);
deviceUpdateComsumerThread
.
start
();
log
.
info
(
"服务端消息队列初始化服务开始.."
);
deviceService
.
find
(
new
DeviceEntity
())
...
...
device-manager/src/main/java/com/mortals/xhx/daemon/applicationservice/DeviceMsgComsumerStartedService.java
View file @
1c2f4fab
...
...
@@ -173,7 +173,9 @@ public class DeviceMsgComsumerStartedService implements IApplicationStartedServi
if
(
deviceEntity
.
getDeviceStatus
()
==
DeviceStatusEnum
.
离线
.
getValue
())
{
deviceEntity
.
setOnlineTime
(
new
Date
());
deviceEntity
.
setDeviceStatus
(
DeviceStatusEnum
.
在线
.
getValue
());
deviceService
.
update
(
deviceEntity
);
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
deviceEntity
);
// deviceService.update(deviceEntity);
PlatformEntity
platformEntity
=
platformService
.
getCache
(
deviceEntity
.
getPlatformId
().
toString
());
ProductEntity
productEntity
=
productService
.
getCache
(
deviceEntity
.
getProductId
().
toString
());
...
...
device-manager/src/main/java/com/mortals/xhx/daemon/task/DeviceStatTaskImpl.java
View file @
1c2f4fab
...
...
@@ -30,7 +30,7 @@ import java.util.List;
import
java.util.stream.Collectors
;
/**
* 设备状态修正
* 设备状态修正
todo 修改更新设备信息在单一线程中
*/
@Slf4j
@Service
(
"DeviceStatTask"
)
...
...
@@ -51,7 +51,7 @@ public class DeviceStatTaskImpl implements ITaskExcuteService {
log
.
info
(
"设备状态修正任务"
);
List
<
DeviceEntity
>
waitDeviceInfos
=
new
ArrayList
<>();
while
(
true
)
{
DeviceEntity
deviceEntity
=
cacheService
.
lpop
(
RedisKey
.
KEY_DEVICE_ONLINE_QUEUE
,
DeviceEntity
.
class
);
DeviceEntity
deviceEntity
=
cacheService
.
blpop
(
RedisKey
.
KEY_DEVICE_ONLINE_QUEUE
,
10
,
DeviceEntity
.
class
);
if
(
ObjectUtils
.
isEmpty
(
deviceEntity
))
{
log
.
info
(
"deviceEntity:{}"
,
deviceEntity
==
null
);
break
;
...
...
@@ -64,10 +64,12 @@ public class DeviceStatTaskImpl implements ITaskExcuteService {
log
.
error
(
"线程休眠异常!"
,
e
);
}
}
log
.
info
(
"waitDeviceInfos size:{}"
,
waitDeviceInfos
.
size
());
if
(!
ObjectUtils
.
isEmpty
(
waitDeviceInfos
))
{
deviceService
.
update
(
waitDeviceInfos
);
for
(
DeviceEntity
waitDeviceInfo
:
waitDeviceInfos
)
{
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
waitDeviceInfo
);
}
// deviceService.update(waitDeviceInfos);
}
//获取所有在线设备
List
<
DeviceEntity
>
deviceList
=
deviceService
.
find
(
new
DeviceQuery
().
deviceStatus
(
DeviceStatusEnum
.
在线
.
getValue
()));
...
...
@@ -85,8 +87,11 @@ public class DeviceStatTaskImpl implements ITaskExcuteService {
if
(!
ObjectUtils
.
isEmpty
(
deviceOfflineList
))
{
log
.
info
(
"修正设备数量:size:{}"
,
deviceOfflineList
.
size
());
deviceService
.
update
(
deviceOfflineList
);
// deviceService.update(deviceOfflineList);
deviceOfflineList
.
forEach
(
deviceEntity
->
{
cacheService
.
lpush
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
deviceEntity
);
PlatformEntity
platformEntity
=
platformService
.
getCache
(
deviceEntity
.
getPlatformId
().
toString
());
ProductEntity
productEntity
=
productService
.
getCache
(
deviceEntity
.
getProductId
().
toString
());
if
(!
ObjectUtils
.
isEmpty
(
platformEntity
)
&&
!
ObjectUtils
.
isEmpty
(
productEntity
))
{
...
...
device-manager/src/main/java/com/mortals/xhx/module/device/model/DeviceAlarmInfoEntity.java
View file @
1c2f4fab
...
...
@@ -25,9 +25,8 @@ public class DeviceAlarmInfoEntity extends DeviceAlarmInfoVo {
*/
private
Long
alarmDevice
;
/**
* 告警类型
,
(0.离线)
* 告警类型(0.离线)
*/
@Excel
(
name
=
"告警类型,"
,
readConverterExp
=
"告警类型,(0.离线)"
)
private
Integer
alarmType
;
/**
* 告警级别(0.危险,1.次要,2.一般)
...
...
device-manager/src/main/java/com/mortals/xhx/thread/DeviceUpdateComsumerThread.java
0 → 100644
View file @
1c2f4fab
package
com.mortals.xhx.thread
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.util.AbstractThread
;
import
com.mortals.xhx.common.key.RedisKey
;
import
com.mortals.xhx.module.device.model.DeviceEntity
;
import
com.mortals.xhx.module.device.service.DeviceService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 设备消息更新线程
*
* @author zxfei
*/
@Slf4j
@Service
@Order
(
value
=
1
)
public
class
DeviceUpdateComsumerThread
extends
AbstractThread
{
@Autowired
private
ICacheService
cacheService
;
@Autowired
private
DeviceService
deviceService
;
@Override
protected
int
getSleepTime
()
{
return
1000
;
}
@Override
protected
void
process
()
throws
Exception
{
log
.
info
(
"update device thread process"
);
List
<
DeviceEntity
>
waitUpdateDeviceList
=
new
ArrayList
<>();
while
(
true
)
{
DeviceEntity
deviceEntity
=
cacheService
.
lpop
(
RedisKey
.
KEY_DEVICE_UPDATE_QUEUE
,
DeviceEntity
.
class
);
if
(
ObjectUtils
.
isEmpty
(
deviceEntity
))
{
log
.
info
(
"deviceEntity:{}"
,
deviceEntity
==
null
);
break
;
}
else
{
waitUpdateDeviceList
.
add
(
deviceEntity
);
}
}
if
(!
ObjectUtils
.
isEmpty
(
waitUpdateDeviceList
))
{
log
.
info
(
"updateDeviceList size:{}"
,
waitUpdateDeviceList
.
size
());
deviceService
.
update
(
waitUpdateDeviceList
);
}
}
@Override
protected
void
threadClosed
()
{
// TODO Auto-generated method stub
super
.
close
();
}
}
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