Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
iot-service
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
SuperHive
back-end
iot-service
Commits
1bc9b7bf
Commit
1bc9b7bf
authored
Aug 12, 2020
by
chenfm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
通过mqtt连接状态修改设备在线状态
parent
857dff0a
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
144 additions
and
4 deletions
+144
-4
EMQFeignService.java
...in/java/com/esv/datacenter/iot/feign/EMQFeignService.java
+29
-0
DeviceInstanceEntity.java
...r/iot/module/devicemodel/entity/DeviceInstanceEntity.java
+14
-1
DeviceInstanceService.java
...iot/module/devicemodel/service/DeviceInstanceService.java
+9
-0
DeviceInstanceServiceImpl.java
...e/devicemodel/service/impl/DeviceInstanceServiceImpl.java
+18
-1
DeviceStateScheduleTask.java
.../com/esv/datacenter/iot/task/DeviceStateScheduleTask.java
+64
-0
application-local.yml
src/main/resources/application-local.yml
+5
-1
application-test.yml
src/main/resources/application-test.yml
+5
-1
No files found.
src/main/java/com/esv/datacenter/iot/feign/EMQFeignService.java
0 → 100644
View file @
1bc9b7bf
package
com
.
esv
.
datacenter
.
iot
.
feign
;
import
com.alibaba.fastjson.JSONObject
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
/**
* @description:
* @project: datacenter-iot-service
* @name: com.esv.datacenter.iot.feign.EMQFeignService
* @author: chenfm
* @email: chenfengman@esvtek.com
* @createTime: 2020/8/12 15:25
* @version: 1.0
*/
@FeignClient
(
name
=
"emq-api"
,
url
=
"${emq.api.url}"
)
public
interface
EMQFeignService
{
/**
* description
* param []
* return java.util.Map<java.lang.String,java.lang.Object>
* author chenfm
* createTime 2020/8/12 16:19
**/
@GetMapping
(
value
=
"api/v3/connections"
,
headers
=
{
"Authorization=${emq.api.auth}"
})
JSONObject
connections
();
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/entity/DeviceInstanceEntity.java
View file @
1bc9b7bf
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
entity
;
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
entity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.baomidou.mybatisplus.annotation.*
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.Date
;
import
lombok.Data
;
/**
/**
* 设备实例表
* 设备实例表
...
@@ -53,6 +53,19 @@ public class DeviceInstanceEntity implements Serializable {
...
@@ -53,6 +53,19 @@ public class DeviceInstanceEntity implements Serializable {
* 设备型号
* 设备型号
*/
*/
private
String
deviceModel
;
private
String
deviceModel
;
/**
* 通信ID
**/
private
String
communicationId
;
/**
* 在线状态
**/
private
Integer
onlineState
;
/**
* 在线状态更新时间
**/
private
Date
onlineUpdateTime
;
/**
/**
* 是否删除:0-未删除、1-已删除
* 是否删除:0-未删除、1-已删除
*/
*/
...
...
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/DeviceInstanceService.java
View file @
1bc9b7bf
...
@@ -89,5 +89,14 @@ public interface DeviceInstanceService extends IService<DeviceInstanceEntity> {
...
@@ -89,5 +89,14 @@ public interface DeviceInstanceService extends IService<DeviceInstanceEntity> {
**/
**/
List
<
DeviceInstanceVO
>
getInstanceListByTypeId
(
Long
deviceTypeId
);
List
<
DeviceInstanceVO
>
getInstanceListByTypeId
(
Long
deviceTypeId
);
/**
* description 根据通信id更新设备在线状态
* param [communicationIdList]
* return void
* author chenfm
* createTime 2020/8/12 17:37
**/
void
changeDeviceOnlineState
(
List
<
String
>
communicationIdList
);
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/impl/DeviceInstanceServiceImpl.java
View file @
1bc9b7bf
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
.
impl
;
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
...
@@ -13,12 +14,12 @@ import com.esv.datacenter.iot.module.devicemodel.entity.DeviceInstanceEntity;
...
@@ -13,12 +14,12 @@ import com.esv.datacenter.iot.module.devicemodel.entity.DeviceInstanceEntity;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceInstanceForm
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceInstanceForm
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceInstanceService
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceInstanceService
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceInstanceVO
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceInstanceVO
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
...
@@ -118,4 +119,20 @@ public class DeviceInstanceServiceImpl extends ServiceImpl<DeviceInstanceDao, De
...
@@ -118,4 +119,20 @@ public class DeviceInstanceServiceImpl extends ServiceImpl<DeviceInstanceDao, De
return
voList
;
return
voList
;
}
}
@Override
public
void
changeDeviceOnlineState
(
List
<
String
>
communicationIdList
)
{
UpdateWrapper
<
DeviceInstanceEntity
>
updateWrapper
=
new
UpdateWrapper
<>();
updateWrapper
.
in
(
"communication_id"
,
communicationIdList
);
DeviceInstanceEntity
entity
=
new
DeviceInstanceEntity
();
entity
.
setOnlineUpdateTime
(
new
Date
());
entity
.
setOnlineState
(
1
);
baseMapper
.
update
(
entity
,
updateWrapper
);
updateWrapper
=
new
UpdateWrapper
<>();
updateWrapper
.
notIn
(
"communication_id"
,
communicationIdList
);
entity
.
setOnlineState
(
0
);
baseMapper
.
update
(
entity
,
updateWrapper
);
}
}
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/task/DeviceStateScheduleTask.java
0 → 100644
View file @
1bc9b7bf
package
com
.
esv
.
datacenter
.
iot
.
task
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.esv.datacenter.iot.feign.EMQFeignService
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceInstanceService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @description:
* @project: datacenter-iot-service
* @name: com.esv.datacenter.iot.task.DeviceStateScheduleTask
* @author: chenfm
* @email: chenfengman@esvtek.com
* @createTime: 2020/8/12 15:08
* @version: 1.0
*/
@Slf4j
@Configuration
//1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling
// 2.开启定时任务
public
class
DeviceStateScheduleTask
{
private
EMQFeignService
emqFeignService
;
private
DeviceInstanceService
deviceInstanceService
;
public
DeviceStateScheduleTask
(
EMQFeignService
emqFeignService
,
DeviceInstanceService
deviceInstanceService
)
{
this
.
emqFeignService
=
emqFeignService
;
this
.
deviceInstanceService
=
deviceInstanceService
;
}
// 直接指定时间间隔: 1分钟
@Scheduled
(
fixedRate
=
60000
)
private
void
refreshDeviceState
()
{
log
.
info
(
"定时刷新设备在线状态开始, 执行时间: {}"
,
LocalDateTime
.
now
());
JSONObject
jsonObject
=
emqFeignService
.
connections
();
log
.
info
(
"获取emq客户端列表结果: {}"
,
jsonObject
.
toJSONString
());
if
(!
jsonObject
.
containsKey
(
"code"
)
||
jsonObject
.
getInteger
(
"code"
)
!=
0
)
{
log
.
error
(
"获取emq客户端列表失败"
);
return
;
}
List
<
String
>
clientIdList
=
new
ArrayList
<>();
JSONArray
jsonArray
=
jsonObject
.
getJSONArray
(
"data"
);
for
(
Object
clientObject
:
jsonArray
)
{
JSONObject
client
=
(
JSONObject
)
JSON
.
toJSON
(
clientObject
);
clientIdList
.
add
(
client
.
getString
(
"client_id"
));
}
log
.
info
(
"clientId list: {}"
,
JSON
.
toJSONString
(
clientIdList
));
deviceInstanceService
.
changeDeviceOnlineState
(
clientIdList
);
}
}
src/main/resources/application-local.yml
View file @
1bc9b7bf
...
@@ -86,3 +86,7 @@ timescale:
...
@@ -86,3 +86,7 @@ timescale:
table-field
:
table-field
:
map
:
string-text,number-numeric,integer-int8,boolean-bit(1),date-date,time-int4,datetime-timestamptz
map
:
string-text,number-numeric,integer-int8,boolean-bit(1),date-date,time-int4,datetime-timestamptz
table-prefix
:
iot_data_model_
table-prefix
:
iot_data_model_
emq
:
api
:
url
:
192.168.31.248:18083
auth
:
Basic YWRtaW46cHVibGlj
\ No newline at end of file
src/main/resources/application-test.yml
View file @
1bc9b7bf
...
@@ -86,3 +86,7 @@ timescale:
...
@@ -86,3 +86,7 @@ timescale:
table-field
:
table-field
:
map
:
string-text,number-numeric,boolean-bit(1)
map
:
string-text,number-numeric,boolean-bit(1)
table-prefix
:
iot_model_
table-prefix
:
iot_model_
emq
:
api
:
url
:
192.168.0.122:18083
auth
:
Basic YWRtaW46cHVibGlj
\ 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