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
6f435dc1
authored
Sep 06, 2023
by
lzy
Browse files
Options
_('Browse Files')
Download
Plain Diff
绑定设备
parents
2432fac0
51a3266d
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
599 additions
and
176 deletions
server-api/server-api.iml
server-common/pom.xml
server-common/src/main/java/com/makeit/enums/CodeMessageEnum.java
server-common/src/main/java/com/makeit/module/iot/mqtt/DeviceInfo.java
server-common/src/main/java/com/makeit/module/iot/mqtt/HeaderInfo.java
server-common/src/main/java/com/makeit/module/iot/mqtt/MqttConfig.java
server-common/src/main/java/com/makeit/module/iot/mqtt/MqttPushClient.java
server-common/src/main/java/com/makeit/module/iot/mqtt/PushCallback.java
server-common/src/main/java/com/makeit/module/iot/service/IotTokenService.java
server-common/src/main/java/com/makeit/module/iot/vo/DeviceInstanceEntity.java
server-common/src/main/resources/locale/business_messages.properties
server-module/server-module.iml
server-service/src/main/java/com/makeit/dto/platform/space/PlatRoomBindDeviceDTO.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/space/PlatBedService.java
server-service/src/main/java/com/makeit/service/platform/space/PlatRoomService.java
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatBedServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomServiceImpl.java
server-web/platform-web.iml
server-web/src/main/resources/application-dev.yml
server-web/src/test/java/com/makeit/iotapi/IotTest.java
server-api/server-api.iml
View file @
6f435dc1
...
...
@@ -20,7 +20,6 @@
<orderEntry
type=
"inheritedJdk"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
<orderEntry
type=
"module"
module-name=
"server-common"
/>
<orderEntry
type=
"module"
module-name=
"server-common"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter:2.5.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot:2.5.6"
level=
"project"
/>
...
...
@@ -162,6 +161,13 @@
<orderEntry
type=
"library"
name=
"Maven: io.opentracing:opentracing-noop:0.33.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-ram:3.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-kms:2.11.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.integration:spring-integration-stream:5.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.integration:spring-integration-core:5.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-messaging:5.3.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.retry:spring-retry:1.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.annotation:javax.annotation-api:1.3.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.integration:spring-integration-mqtt:5.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:dysmsapi20170525:2.0.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:tea-util:0.2.13"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:endpoint-util:0.0.6"
level=
"project"
/>
...
...
server-common/pom.xml
View file @
6f435dc1
...
...
@@ -84,6 +84,16 @@
<dependency>
<groupId>
org.springframework.integration
</groupId>
<artifactId>
spring-integration-stream
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.integration
</groupId>
<artifactId>
spring-integration-mqtt
</artifactId>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
dysmsapi20170525
</artifactId>
</dependency>
...
...
server-common/src/main/java/com/makeit/enums/CodeMessageEnum.java
View file @
6f435dc1
...
...
@@ -94,131 +94,20 @@ public enum CodeMessageEnum {
PLATFORM_ERROR_ELDER_CERTIFICATENUMBER_DUPLICATE
(
500
,
"PLATFORM.ERROR.ELDER.CERTIFICATENUMBER.DUPLICATE"
),
PLATFORM_ERROR_SPACE_NAME_DUPLICATE
(
500
,
"PLATFORM.ERROR.SPACE.NAME.DUPLICATE"
),
PLATFORM_ERROR_SPACE_NOT_DEL
(
500
,
"PLATFORM.ERROR.SPACE.NOT.DEL"
),
PLATFORM_ERROR_ROOM_EXIT_BAD
(
500
,
"PLATFORM.ERROR.ROOM.EXIT.BAD"
),
PLATFORM_ERROR_ROOM_BAD_NUMBER_NOT_AUTH
(
500
,
"PLATFORM.ERROR.ROOM.BAD.NUMBER.NOT.AUTH"
),
PLATFORM_ERROR_BAD_NAME_EXIT
(
500
,
"PLATFORM.ERROR.BAD.NAME.EXIT"
),
PLATFORM_ERROR_BAD_NOT_DEL
(
500
,
"PLATFORM.ERROR.BAD.NOT.DEL"
),
SYSTEM_ERROR_CANT_CHANGE_TENANT_STATUS
(
500
,
"当前时间要在开始时间和结束时间之间才能设置为启用"
),
SYSTEM_ERROR_CANT_REMOVE_TENANT_USER_LINK
(
500
,
"已经关联了租户的管理员账号不允许删除"
),
SYSTEM_ERROR_TENANT_ID_NOT_BLANK
(
510
,
"租户id不能为空"
),
SYSTEM_ERROR_TENANT_NOT_EXIST
(
510
,
"该租户不存在或者被禁用"
),
SYSTEM_ERROR_AUTH_DEPT_LEVEL
(
500
,
"部门标签只能是集团、品牌、酒店(品牌和酒店可以同层级)、部门这样的顺序"
),
SYSTEM_ERROR_ROLE_ADMIN_CANT_ADD
(
500
,
"不能在该节点下新增非管理员角色"
),
SYSTEM_ERROR_ROLE_ADMIN_CANT_EDIT
(
500
,
"管理员角色不能修改"
),
SYSTEM_ERROR_SAVE_CANT_DO
(
700
,
"有事件处于拟稿不能进行此操作"
),
SYSTEM_ERROR_WAIT_FIRST_CANT_DO
(
700
,
"有事件处于待初审不能进行此操作"
),
SYSTEM_ERROR_WAIT_SECOND_CANT_DO
(
700
,
"有事件处于待终审不能进行此操作"
),
SYSTEM_ERROR_EFFECT_CANT_DO
(
700
,
"有事件已生效不能进行此操作"
),
SYSTEM_ERROR_NO_EFFECT_CANT_DO
(
700
,
"有事件未生效不能进行此操作"
),
SYSTEM_ERROR_RECORD_NOT_EFFECT_CANT_DO
(
500
,
"本人该事件未生效不能举报"
),
//SYSTEM_ERROR_RECORD_REPORT_CANT_DO(500, "本人已举报过该事件不能重复举报"),
SYSTEM_ERROR_RECORD_REPORT_CANT_DO
(
500
,
"该事件已被本人或其他人举报不能重复举报"
),
SYSTEM_ERROR_RECORD_REPORT_RESULT_CANT_DO
(
500
,
"已受理或已驳回的举报的不能撤回"
),
// SYSTEM_ERROR_RECORD_NO_EFFECT_CANT_INVALID(500, "含不是已生效的事件不能作废"),
// SYSTEM_ERROR_RECORD_INVALID_CANT_INVALID(500, "含已作废的事件不能作废"),
// SYSTEM_ERROR_RECORD_SETTLEMENT_CANT_INVALID(500, "含已结算的事件不能作废"),
SYSTEM_ERROR_RECORD_NO_EFFECT_CANT_DO
(
700
,
"已生效的事件才能进行此操作"
),
SYSTEM_ERROR_RECORD_INVALID_CANT_DO
(
700
,
"包含已作废的事件不能进行此操作"
),
SYSTEM_ERROR_RECORD_SETTLEMENT_CANT_DO
(
700
,
"包含已结算的事件不能进行此操作"
),
SYSTEM_ERROR_RECORD_SETTLEMENT_CANT_SUBMIT
(
700
,
"奖扣事件月度积分已结算,不能再提交事件申请"
),
SYSTEM_ERROR_RECORD_AWARD_DATE_EXCEED
(
600
,
"奖扣时间已超过%s"
),
SYSTEM_ERROR_RECORD_VALID_TIME_DAY_EXCEED
(
600
,
"%s天内已提交超过%s次"
),
SYSTEM_ERROR_RECORD_MULTIPLE_EXCEED
(
600
,
"最多只能录入%s次"
),
SYSTEM_ERROR_EVENT_NOT_EXIST
(
600
,
"该事件不存在或者被禁用"
),
SYSTEM_ERROR_AUDIT_ROLE_NOT_EXIST
(
600
,
"审核角色不存在或者被禁用"
),
//SYSTEM_ERROR_FIRST_AUDIT_ROLE_NOT_EXIST(500,"初审角色不存在或者被禁用"),
//SYSTEM_ERROR_SECOND_AUDIT_ROLE_NOT_EXIST(500,"终审角色不存在或者被禁用"),
SYS_ERROR_SINGLE_AWARD_INTEGRAL_LIMIT
(
700
,
"超出单次奖扣额度,请修改后再提交"
),
SYS_ERROR_MONTH_AWARD_INTEGRAL_LIMIT
(
700
,
"超出当月累计奖扣额度,请修改后再提交"
),
SYSTEM_ERROR_SETTLEMENT_CANT_DO
(
700
,
"月度内还有事件正在审核中,请审核后再次结算"
),
// 标签模块 10000 - 20000
SYSTEM_ERROR_LABEL_NAME_EXIT
(
10000
,
"标签编号已存在"
),
SYSTEM_ERROR_LABEL_UPLOAD_EXIT
(
10001
,
"请上传excel"
),
SYSTEM_ERROR_LABEL_NOT_DATA
(
10002
,
"请至少上传一条数据"
),
SYSTEM_ERROR_LABEL_NOT_APPLY
(
10003
,
"该用户已申请了该标签"
),
//参数设置 20000 30000
SYSTEM_ERROR_CUSTOM_GROUP_NAME_EXIT
(
20000
,
"名称已存在"
),
SYSTEM_ERROR_CUSTOM_GROUP_USER_NOT_EXIT
(
20001
,
"请至少选择一个人员"
),
SYSTEM_ERROR_PROCESS_CONFIG_EXIT
(
20030
,
"该事件已设置"
),
SYSTEM_ERROR_AWARD_INTEGRAL_CONFIG_EXIT
(
20060
,
"名称已存在"
),
SYSTEM_ERROR_PERIOD_MONTH_FORMAT
(
500
,
"该月份不存在"
),
SYSTEM_ERROR_PERIOD_MONTH_NOT_EXIST
(
800
,
"未配置年度起始月份"
),
TNT_INCIDENT_CATEGORY_ERROR_LEVEL
(
6001
,
"事件分类层级最多为3层"
),
TNT_INCIDENT_CATEGORY_ERROR_BLANK_ID
(
6003
,
"事件分类id不能为空"
),
TNT_INCIDENT_CATEGORY_ERROR_CHILDREN_NO_BLANK
(
6003
,
"事件分类子类数据需要为空"
),
TNT_INCIDENT_UPDATE_NO_ID
(
6004
,
"修改数据主键id不能为空"
),
TNT_INCIDENT_HOTEL_ID_NO_BLANK
(
6005
,
"hotelId不能为空"
),
TNT_INCIDENT_DEPT_ID_NO_BLANK
(
6006
,
"部门id不能为空"
),
TNT_INCIDENT_STANDARD_REPETITION
(
6007
,
"标准事件重复"
),
TNT_INCIDENT_STANDARD_AUDIT_PERSON_ERROR
(
6008
,
"审核人员错误,请使用正确审核人员"
),
TNT_INCIDENT_STANDARD_AUDIT_STATUS_ERROR
(
6009
,
"事件状态有误,无法审核"
),
TNT_INCIDENT_SYS_REPETITION_ERROR
(
6010
,
"系统事件重复,无法添加"
),
TNT_INCIDENT_TENANT_ID_NO_BLANK
(
60011
,
"租户id不能为空"
),
TNT_INCIDENT_CATEGORY_HAVE_EVENT
(
60012
,
"事件分类下存在事件"
),
TNT_DEPT_MAP_NOT_NULL
(
60013
,
"请求map不能为空"
),
TNT_DEPT_ID_FALSE
(
60014
,
"部门id有误,不存在这个部门id"
),
TNT_EVENT_EXPIRATION_DATE_TIMEOUT
(
60015
,
"事件失效日期已过期"
),
TNT_EVENT_MAINTAIN_FLOW_EXIST
(
60016
,
"事件维护流程正在申请中"
),
TNT_STANDARD_EVENT_HAVE_EVENT
(
60017
,
"事件已存在申请记录"
),
TNT_ATTENDANCE_REPETITION
(
60018
,
"已签到,无法再次签到"
),
TNT_INCIDENT_STANDARD_DEL_ERROR
(
60019
,
"事件存在申请记录,不允许删除"
),
TNT_INCIDENT_STANDARD_DEL_HAVE_AUDIT_ERROR
(
60019
,
"事件存在修改记录无法删除"
),
TNT_INCIDENT_STANDARD_UPDATE_ERROR
(
60020
,
"事件维护流程正在申请中,不能编辑"
),
TNT_INCIDENT_STANDARD_MANAGE_DEPT_ID_ERROR
(
60021
,
"选择为公共标准事件时,时间管理部门id不能为空"
),
TNT_INCIDENT_DURATION_TIME_ERROR
(
60022
,
"失效日期不能小于今日日期"
),
TNT_INCIDENT_INTEGRAL_CONFIGURATION_NULL_ERROR
(
60023
,
"签到积分配置表不能为空"
),
TNT_INCIDENT_INTEGRAL_NOT_CONFIG_ERROR
(
60024
,
"部门不存在消息模板"
),
TNT_START_MONTH_NULL_ERROR
(
60025
,
"季度开始月份未配置"
),
TNT_REWARD_LEVEL_COUNT_ERROR
(
60029
,
"配置总数人数已存在,不能存在两个相同总人数的配置"
),
TNT_PROCESS_FIRST_CONFIG_NULL_ERROR
(
60026
,
"初审流程设置未配置"
),
TNT_PROCESS_FINAL_CONFIG_NULL_ERROR
(
60026
,
"终审流程设置未配置"
),
TNT_INCIDENT_CATEGORY_REPETITION_ERROR
(
60027
,
"事件名称重复"
),
TNT_INCIDENT_CATEGORY_NULL_ERROR
(
60028
,
"事件分类为空"
),
TNT_SYS_EVENT_CATEGORY_NULL_ERROR
(
60029
,
"系统事件分类不存在"
),
TNT_REWARD_LEVEL_CONFIG_CATEGORY_EXIT
(
60030
,
"该等级已存在"
),
TNT_INCIDENT_INTEGRAL_CONFIGURATION_TIME_NULL_ERROR
(
60031
,
"签到积分配置表事件不存在"
),
TNT_REWARD_LEVEL_COUNT_LIST_NULL_ERROR
(
60032
,
"奖励级别人数列表不能为空"
),
TNT_REWARD_LEVEL_COUNT_TOTAL_AMOUNT_LEST_ERROR
(
60033
,
"奖励级别人数总数不能小于档级人数总和"
),
TNT_EVENT_CATEGORY_IMPORT_ERROR
(
60033
,
"事件导入错误,文件格式有误"
),
TNT_PERIOD_NULL_ERROR
(
60034
,
"结算周期为空,请在月度结算模块设置结算周期"
),
TNT_REWARD_LEVEL_NULL_ERROR
(
60035
,
"奖励级别配置为空"
),
TNT_REWARD_LEVEL_STATEMENT_CATEGORY_NULL_ERROR
(
60035
,
"维度配置不能为空"
),
TNT_GRADES_LEVEL_DEPT_CUSTOMER_NULL_ERROR
(
60035
,
"部门id列表,自定义小组列表不能都为空"
),
TNT_GRADES_LEVEL_TYPE_NULL_ERROR
(
60036
,
"查询档级奖金时,type不能为空"
),
TNT_GRADES_LEVEL_DEPT_ID_NULL_ERROR
(
60037
,
"查询档级奖金时,部门id不能为空"
),
TNT_GRADES_LEVEL_DEPT_CUSTOMER_ID_NULL_ERROR
(
60038
,
"查询档级奖金时,部门id、分组id不存在"
),
TNT_MESSAGE_VIEW_DEPT_ID_ID_ERROR
(
60039
,
"部门id和历史数据id不能为空"
),
PLATFORM_ERROR_SPACE_NAME_DUPLICATE
(
500
,
"PLATFORM.ERROR.SPACE.NAME.DUPLICATE"
),
PLATFORM_ERROR_SPACE_NOT_DEL
(
500
,
"PLATFORM.ERROR.SPACE.NOT.DEL"
),
PLATFORM_ERROR_ROOM_EXIT_BAD
(
500
,
"PLATFORM.ERROR.ROOM.EXIT.BAD"
),
PLATFORM_ERROR_ROOM_BAD_NUMBER_NOT_AUTH
(
500
,
"PLATFORM.ERROR.ROOM.BAD.NUMBER.NOT.AUTH"
),
PLATFORM_ERROR_BAD_NAME_EXIT
(
500
,
"PLATFORM.ERROR.BAD.NAME.EXIT"
),
PLATFORM_ERROR_BAD_NOT_DEL
(
500
,
"PLATFORM.ERROR.BAD.NOT.DEL"
),
PLATFORM_ERROR_ROOM_OTHER_USED_NOT_DEL
(
500
,
"PLATFORM.ERROR.ROOM.OTHER.USED.NOT.DEL"
),
SYSTEM_ERROR_CANT_CHANGE_TENANT_STATUS
(
500
,
"SYSTEM.ERROR.CANT.CHANGE.TENANT.STATUS"
),
SYSTEM_ERROR_CANT_REMOVE_TENANT_USER_LINK
(
500
,
"SYSTEM.ERROR.CANT.REMOVE.TENANT.USER.LINK"
),
SYSTEM_ERROR_TENANT_ID_NOT_BLANK
(
510
,
"SYSTEM.ERROR.TENANT.ID.NOT.BLANK"
),
SYSTEM_ERROR_TENANT_NOT_EXIST
(
510
,
"SYSTEM.ERROR.TENANT.NOT.EXIST"
),
SYSTEM_ERROR_ROLE_ADMIN_CANT_ADD
(
500
,
"SYSTEM.ERROR.ROLE.ADMIN.CANT.ADD"
),
SYSTEM_ERROR_ROLE_ADMIN_CANT_EDIT
(
500
,
"SYSTEM.ERROR.ROLE.ADMIN.CANT.EDIT"
),
;
;
...
...
server-common/src/main/java/com/makeit/module/iot/mqtt/DeviceInfo.java
0 → 100644
View file @
6f435dc1
package
com
.
makeit
.
module
.
iot
.
mqtt
;
import
lombok.Data
;
/**
* 接收设备的数据实体类
*/
@Data
public
class
DeviceInfo
{
private
String
deviceId
;
private
Long
timestamp
;
private
String
messageType
;
private
HeaderInfo
headers
;
private
String
properties
;
/**
* {
* "deviceId": "1694547143952007168",
* "headers": {
* "bindings": [{
* "id": "1694915814306185216",
* "type": "org"
* }],
* "deviceName": "设备测试",
* "productName": "测试产品2",
* "productId": "1694546594502377472",
* "_uid": "Iopp3Ep8avkvFYCekKxrwmhDCdJ3y4YO",
* "creatorId": "1199596756811550720",
* "traceparent": "00-c141385bf0a33bd88f7b50e41c2a7d03-76e248a7fa43f731-01"* },
* "messageType": "REPORT_PROPERTY",
* "properties": {
* "test": 555
* } ,
* "timestamp": 1693993159292
* }
*/
}
server-common/src/main/java/com/makeit/module/iot/mqtt/HeaderInfo.java
0 → 100644
View file @
6f435dc1
package
com
.
makeit
.
module
.
iot
.
mqtt
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
HeaderInfo
{
private
String
deviceName
;
private
String
productName
;
private
String
productId
;
private
String
_uid
;
private
String
creatorId
;
private
String
traceparent
;
private
List
<
Bind
>
bindings
;
@Data
public
class
Bind
{
private
String
id
;
private
String
type
;
}
}
server-common/src/main/java/com/makeit/module/iot/mqtt/MqttConfig.java
0 → 100644
View file @
6f435dc1
package
com
.
makeit
.
module
.
iot
.
mqtt
;
import
com.makeit.module.iot.service.IotTokenService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.stereotype.Component
;
@Component
@ConfigurationProperties
(
"mqtt"
)
public
class
MqttConfig
{
@Autowired
private
MqttPushClient
mqttPushClient
;
@Autowired
private
IotTokenService
iotTokenService
;
private
String
username
;
private
String
password
;
private
String
hostUrl
;
private
String
clientId
;
private
String
defaultTopic
;
private
int
timeout
;
private
int
keepalive
;
public
MqttConfig
()
{
super
();
}
public
MqttConfig
(
MqttPushClient
mqttPushClient
,
String
username
,
String
password
,
String
hostUrl
,
String
clientId
,
String
defaultTopic
,
int
timeout
,
int
keepalive
)
{
super
();
this
.
mqttPushClient
=
mqttPushClient
;
this
.
username
=
username
;
this
.
password
=
password
;
this
.
hostUrl
=
hostUrl
;
this
.
clientId
=
clientId
;
this
.
defaultTopic
=
defaultTopic
;
this
.
timeout
=
timeout
;
this
.
keepalive
=
keepalive
;
}
@Bean
public
MqttPushClient
getMqttPushClient
()
{
String
iotToken
=
iotTokenService
.
getIotToken
();
clientId
=
StringUtils
.
isNotEmpty
(
iotToken
)
?
iotToken
:
clientId
;
mqttPushClient
.
connect
(
hostUrl
,
clientId
,
username
,
password
,
timeout
,
keepalive
);
// 订阅主题
mqttPushClient
.
subscribe
(
"/device/*/*/**"
,
0
);
return
mqttPushClient
;
}
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
public
String
getHostUrl
()
{
return
hostUrl
;
}
public
void
setHostUrl
(
String
hostUrl
)
{
this
.
hostUrl
=
hostUrl
;
}
public
String
getClientId
()
{
return
clientId
;
}
public
void
setClientId
(
String
clientId
)
{
this
.
clientId
=
clientId
;
}
public
String
getDefaultTopic
()
{
return
defaultTopic
;
}
public
void
setDefaultTopic
(
String
defaultTopic
)
{
this
.
defaultTopic
=
defaultTopic
;
}
public
int
getTimeout
()
{
return
timeout
;
}
public
void
setTimeout
(
int
timeout
)
{
this
.
timeout
=
timeout
;
}
public
int
getKeepalive
()
{
return
keepalive
;
}
public
void
setKeepalive
(
int
keepalive
)
{
this
.
keepalive
=
keepalive
;
}
public
void
setMqttPushClient
(
MqttPushClient
mqttPushClient
)
{
this
.
mqttPushClient
=
mqttPushClient
;
}
}
server-common/src/main/java/com/makeit/module/iot/mqtt/MqttPushClient.java
0 → 100644
View file @
6f435dc1
package
com
.
makeit
.
module
.
iot
.
mqtt
;
import
org.eclipse.paho.client.mqttv3.*
;
import
org.eclipse.paho.client.mqttv3.persist.MemoryPersistence
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
MqttPushClient
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
MqttPushClient
.
class
);
@Autowired
private
PushCallback
pushCallback
;
private
static
MqttClient
mqttClient
;
public
static
MqttClient
getMqttClient
()
{
return
mqttClient
;
}
public
static
void
setMqttClient
(
MqttClient
mqttClient
)
{
MqttPushClient
.
mqttClient
=
mqttClient
;
}
/**
* 客户端连接
*
* @param host
* @param clientId
* @param username
* @param password
* @param timeout
* @param keepalive
*/
public
void
connect
(
String
host
,
String
clientId
,
String
username
,
String
password
,
int
timeout
,
int
keepalive
)
{
MqttClient
client
;
try
{
client
=
new
MqttClient
(
host
,
clientId
,
new
MemoryPersistence
());
MqttConnectOptions
options
=
new
MqttConnectOptions
();
options
.
setCleanSession
(
true
);
options
.
setUserName
(
username
);
options
.
setPassword
(
password
.
toCharArray
());
options
.
setConnectionTimeout
(
timeout
);
options
.
setKeepAliveInterval
(
keepalive
);
MqttPushClient
.
setMqttClient
(
client
);
try
{
client
.
setCallback
(
pushCallback
);
client
.
connect
(
options
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
/**
* 发布
*
* @param qos
* @param retained
* @param topic
* @param pushMessage
*/
public
void
publish
(
int
qos
,
boolean
retained
,
String
topic
,
String
pushMessage
)
{
MqttMessage
message
=
new
MqttMessage
();
message
.
setQos
(
qos
);
message
.
setRetained
(
retained
);
message
.
setPayload
(
pushMessage
.
getBytes
());
MqttTopic
mqttTopic
=
MqttPushClient
.
getMqttClient
().
getTopic
(
topic
);
if
(
mqttTopic
==
null
)
{
logger
.
error
(
"topic not exist"
);
}
MqttDeliveryToken
token
;
try
{
token
=
mqttTopic
.
publish
(
message
);
token
.
waitForCompletion
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
public
void
subscribe
(
String
defaultTopic
,
int
qos
)
{
logger
.
info
(
"开始订阅主题"
+
defaultTopic
);
try
{
MqttPushClient
.
getMqttClient
().
subscribe
(
defaultTopic
,
qos
);
}
catch
(
MqttException
e
)
{
e
.
printStackTrace
();
logger
.
error
(
e
.
getMessage
());
}
}
}
server-common/src/main/java/com/makeit/module/iot/mqtt/PushCallback.java
0 → 100644
View file @
6f435dc1
package
com
.
makeit
.
module
.
iot
.
mqtt
;
import
com.alibaba.fastjson.JSON
;
import
org.eclipse.paho.client.mqttv3.IMqttDeliveryToken
;
import
org.eclipse.paho.client.mqttv3.MqttCallback
;
import
org.eclipse.paho.client.mqttv3.MqttClient
;
import
org.eclipse.paho.client.mqttv3.MqttMessage
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
PushCallback
implements
MqttCallback
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
MqttPushClient
.
class
);
@Autowired
private
MqttConfig
mqttConfig
;
private
static
MqttClient
client
;
@Override
public
void
connectionLost
(
Throwable
cause
)
{
logger
.
info
(
"连接断开,可以重连"
);
if
(
client
==
null
||
!
client
.
isConnected
())
{
mqttConfig
.
getMqttPushClient
();
}
}
@Override
public
void
messageArrived
(
String
topic
,
MqttMessage
message
)
throws
Exception
{
// 收到消息并设置返回字符串格式
String
payload
=
new
String
(
message
.
getPayload
(),
"UTF-8"
);
logger
.
info
(
"接收消息主题:{}, 接收消息QoS:{}"
,
topic
,
message
.
getQos
());
logger
.
info
(
"接收消息内容:payload格式:{}"
,
payload
);
// 解析数据
DeviceInfo
device
=
JSON
.
parseObject
(
payload
,
DeviceInfo
.
class
);
// todo
}
@Override
public
void
deliveryComplete
(
IMqttDeliveryToken
token
)
{
logger
.
info
(
"deliveryComplete--------------"
+
token
.
isComplete
());
}
}
server-common/src/main/java/com/makeit/module/iot/service/IotTokenService.java
0 → 100644
View file @
6f435dc1
package
com
.
makeit
.
module
.
iot
.
service
;
import
com.makeit.module.iot.util.HttpRequest
;
import
com.makeit.module.iot.vo.ResponseMessage
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
/**
* iot 获取token服务类
*/
@Component
@Slf4j
public
class
IotTokenService
extends
IotCommonService
{
/**
* 获取iotToken
*/
public
String
getIotToken
()
{
String
url
=
iotUrl
+
"token"
;
String
body
=
"{\"expires\": -1}"
;
HttpRequest
request
=
buildRequest
(
url
,
body
);
try
{
ResponseMessage
responseMessage
=
sendPost
(
url
,
request
);
if
(
responseMessage
.
getStatus
()
==
200
)
{
return
responseMessage
.
getResult
().
toString
();
}
log
.
error
(
"获取token接口失败:{}"
,
responseMessage
.
getMessage
());
}
catch
(
IOException
e
)
{
log
.
error
(
"调用:{}接口异常:{}"
,
url
,
e
.
getMessage
());
}
return
""
;
}
}
server-common/src/main/java/com/makeit/module/iot/vo/DeviceInstanceEntity.java
View file @
6f435dc1
...
...
@@ -17,7 +17,9 @@ public class DeviceInstanceEntity {
private
String
name
;
@Schema
(
description
=
"设备类型"
)
@Schema
(
description
=
"设备类型 device(\"直连设备\"),\n"
+
" childrenDevice(\"网关子设备\"),\n"
+
" gateway(\"网关设备\")"
)
private
String
deviceType
;
@Schema
(
description
=
"说明"
)
...
...
server-common/src/main/resources/locale/business_messages.properties
View file @
6f435dc1
...
...
@@ -45,7 +45,7 @@ SYSTEM.ERROR.START.LE.END=开始时间要小于等于结束时间
SYSTEM.ERROR.CANT.CHANGE.TENANT.STATUS
=
当前时间要在开始时间和结束时间之间才能设置为启用
SYSTEM.ERROR.CANT.REMOVE.TENANT.USER.LINK
=
已经关联了
厂别
的管理员账号不允许删除
SYSTEM.ERROR.CANT.REMOVE.TENANT.USER.LINK
=
已经关联了
租户
的管理员账号不允许删除
SYSTEM.ERROR.TMP.CODE.BLANK
=
验证码不能为空
#SYSTEM.ERROR.TMP.TOKEN.BLANK=token不能为空
...
...
@@ -55,7 +55,7 @@ SYSTEM.ERROR.TOKEN.BLANK.OR.NOT.EXIST=token失效或不存在
SYSTEM.ERROR.NO.PERMISSION
=
无权限访问
SYSTEM.ERROR.TENANT.ID.NOT.BLANK
=
租户id不能为空
SYSTEM.ERROR.TENANT.NOT.EXIST
=
该
厂别
不存在或者被禁用
SYSTEM.ERROR.TENANT.NOT.EXIST
=
该
租户
不存在或者被禁用
SYSTEM.ERROR.DUPLICATE.REQUEST
=
请勿重复请求
...
...
@@ -95,4 +95,10 @@ PLATFORM.ERROR.SPACE.NOT.DEL=该空间下存在下级或者房间,不可删除
PLATFORM.ERROR.ROOM.EXIT.BAD
=
房间中存在床位,不可删除
PLATFORM.ERROR.ROOM.BAD.NUMBER.NOT.AUTH
=
床位数量不能改小
PLATFORM.ERROR.BAD.NAME.EXIT
=
床位名称已存在
PLATFORM.ERROR.BAD.NOT.DEL
=
床位已绑定长者或设备,不可删除
\ No newline at end of file
PLATFORM.ERROR.BAD.NOT.DEL
=
床位已绑定长者或设备,不可删除
PLATFORM.ERROR.ROOM.OTHER.USED.NOT.DEL
=
该房间下有床位有其他长者入住
SYSTEM.ERROR.ROLE.ADMIN.CANT.ADD
=
不能在该节点下新增非管理员角色
SYSTEM.ERROR.ROLE.ADMIN.CANT.EDIT
=
管理员角色不能修改
server-module/server-module.iml
View file @
6f435dc1
...
...
@@ -20,7 +20,6 @@
<orderEntry
type=
"inheritedJdk"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
<orderEntry
type=
"module"
module-name=
"server-common"
/>
<orderEntry
type=
"module"
module-name=
"server-common"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter:2.5.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot:2.5.6"
level=
"project"
/>
...
...
@@ -162,6 +161,13 @@
<orderEntry
type=
"library"
name=
"Maven: io.opentracing:opentracing-noop:0.33.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-ram:3.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-kms:2.11.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.integration:spring-integration-stream:5.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.integration:spring-integration-core:5.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-messaging:5.3.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.retry:spring-retry:1.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.annotation:javax.annotation-api:1.3.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.integration:spring-integration-mqtt:5.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:dysmsapi20170525:2.0.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:tea-util:0.2.13"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:endpoint-util:0.0.6"
level=
"project"
/>
...
...
server-service/src/main/java/com/makeit/dto/platform/space/PlatRoomBindDeviceDTO.java
0 → 100644
View file @
6f435dc1
package
com
.
makeit
.
dto
.
platform
.
space
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @Author:lzy
* @Date:2023/9/6 18:11
* @Describe:
*/
@Data
@ApiModel
(
"PlatRoomBindDeviceDTO 设备绑定"
)
public
class
PlatRoomBindDeviceDTO
{
@ApiModelProperty
(
value
=
"房间ID"
)
private
String
roomId
;
@ApiModelProperty
(
value
=
"设备Id"
)
private
List
<
String
>
listEquipmentId
;
@ApiModelProperty
(
value
=
"床位Id"
)
private
String
bedId
;
}
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderServiceImpl.java
View file @
6f435dc1
...
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.makeit.common.dto.StatusDTO
;
import
com.makeit.common.page.PageReqDTO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.dto.platform.elder.*
;
...
...
@@ -16,6 +17,7 @@ import com.makeit.entity.platform.space.PlatBed;
import
com.makeit.entity.platform.space.PlatRoom
;
import
com.makeit.entity.platform.space.PlatSpace
;
import
com.makeit.enums.CodeMessageEnum
;
import
com.makeit.enums.CommonEnum
;
import
com.makeit.enums.FileSuffixEnum
;
import
com.makeit.exception.BusinessException
;
import
com.makeit.mapper.platform.elder.PlatElderMapper
;
...
...
@@ -31,7 +33,6 @@ import com.makeit.utils.data.excel.ExcelUtil;
import
com.makeit.utils.old.StringUtils
;
import
com.makeit.utils.sql.join.JoinUtil
;
import
com.makeit.utils.sys.FileUtil
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
com.makeit.vo.platform.elder.PlatElderExportVO
;
import
com.makeit.vo.platform.elder.PlatElderListVO
;
import
com.makeit.vo.wechat.elder.PlatElderChildrenInfoWechatVO
;
...
...
@@ -321,6 +322,13 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
BeanUtils
.
copyProperties
(
dto
,
db
);
updateById
(
db
);
StatusDTO
statusDTO
=
new
StatusDTO
();
statusDTO
.
setId
(
dto
.
getBedId
());
statusDTO
.
setStatus
(
CommonEnum
.
NO
.
getValue
());
platBedService
.
changeStatus
(
statusDTO
);
}
@Transactional
...
...
@@ -329,6 +337,14 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
PlatElder
db
=
getById
(
dto
.
getId
());
if
(
CommonEnum
.
YES
.
getValue
().
equals
(
dto
.
getDelRoomStatus
()))
{
if
(
platRoomService
.
hasUsedBedByBedId
(
db
.
getBedId
(),
CommonEnum
.
NO
.
getValue
(),
db
.
getBedId
()))
{
throw
new
BusinessException
(
CodeMessageEnum
.
PLATFORM_ERROR_ROOM_OTHER_USED_NOT_DEL
);
}
}
db
.
setSpaceId
(
null
);
db
.
setStreetSpaceId
(
null
);
db
.
setBuildingSpaceId
(
null
);
...
...
@@ -342,6 +358,16 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
//TODO ywc 是否删除房间 及其校验没做
StatusDTO
statusDTO
=
new
StatusDTO
();
statusDTO
.
setId
(
db
.
getBedId
());
statusDTO
.
setStatus
(
CommonEnum
.
YES
.
getValue
());
platBedService
.
changeStatus
(
statusDTO
);
if
(
CommonEnum
.
YES
.
getValue
().
equals
(
dto
.
getDelRoomStatus
()))
{
platRoomService
.
delCascade
(
Arrays
.
asList
(
platBedService
.
getById
(
db
.
getBedId
()).
getRoomId
()));
}
}
@Override
...
...
server-service/src/main/java/com/makeit/service/platform/space/PlatBedService.java
View file @
6f435dc1
package
com
.
makeit
.
service
.
platform
.
space
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.makeit.common.dto.StatusDTO
;
import
com.makeit.common.page.PageReqDTO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.dto.platform.device.PlatDeviceDTO
;
...
...
@@ -51,6 +52,7 @@ public interface PlatBedService extends IService<PlatBed> {
*/
void
del
(
String
id
);
void
changeStatus
(
StatusDTO
dto
);
/**
* 未绑定设备列表
* @param pageReqDTO
...
...
server-service/src/main/java/com/makeit/service/platform/space/PlatRoomService.java
View file @
6f435dc1
...
...
@@ -19,18 +19,19 @@ public interface PlatRoomService extends IService<PlatRoom> {
/**
* 添加房间
*
* @param dto
*/
void
add
(
PlatRoomDTO
dto
);
/**
*
* @param dto
*/
void
edit
(
PlatRoomDTO
dto
);
/**
* 详情
*
* @param id
* @return
*/
...
...
@@ -38,12 +39,20 @@ public interface PlatRoomService extends IService<PlatRoom> {
/**
* 删除
*
* @param ids
*/
void
del
(
List
<
String
>
ids
);
void
delCascade
(
List
<
String
>
ids
);
boolean
hasUsedBed
(
String
id
,
String
status
,
String
notBedId
);
boolean
hasUsedBedByBedId
(
String
bedId
,
String
status
,
String
notBedId
);
/**
* 列表
*
* @param page
* @return
*/
...
...
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatBedServiceImpl.java
View file @
6f435dc1
...
...
@@ -3,6 +3,7 @@ package com.makeit.service.platform.space.impl;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.makeit.common.dto.StatusDTO
;
import
com.makeit.common.page.PageReqDTO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.dto.platform.device.PlatDeviceDTO
;
...
...
@@ -28,9 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -52,21 +51,21 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
public
void
add
(
PlatRoom
platRoom
)
{
LambdaQueryWrapper
<
PlatBed
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
PlatBed:
:
getRoomId
,
platRoom
.
getId
());
queryWrapper
.
eq
(
PlatBed:
:
getRoomId
,
platRoom
.
getId
());
queryWrapper
.
orderByDesc
(
PlatBed:
:
getSort
);
List
<
PlatBed
>
list
=
list
(
queryWrapper
);
if
(
platRoom
.
getBedNumber
()
>=
1
)
{
if
(
platRoom
.
getBedNumber
()
>=
1
)
{
int
start
=
1
;
int
end
=
platRoom
.
getBedNumber
();
if
(!
list
.
isEmpty
())
{
start
=
list
.
get
(
0
).
getSort
()
+
1
;
if
(!
list
.
isEmpty
())
{
start
=
list
.
get
(
0
).
getSort
()
+
1
;
end
=
platRoom
.
getBedNumber
()
-
list
.
size
();
}
List
<
PlatBed
>
listBad
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
end
;
i
++)
{
int
location
=
start
+
i
;
for
(
int
i
=
0
;
i
<
end
;
i
++)
{
int
location
=
start
+
i
;
PlatBed
platBed
=
new
PlatBed
();
platBed
.
setName
(
"床位"
+
location
);
platBed
.
setSort
(
location
);
...
...
@@ -76,7 +75,7 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
listBad
.
add
(
platBed
);
}
if
(!
listBad
.
isEmpty
())
{
if
(!
listBad
.
isEmpty
())
{
saveBatch
(
listBad
);
}
}
...
...
@@ -88,9 +87,9 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
PlatBedQueryDTO
dto
=
pageReqDTO
.
getData
();
Page
<
PlatBed
>
p
=
PageUtil
.
toMpPage
(
pageReqDTO
);
LambdaQueryWrapper
<
PlatBed
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getName
()),
PlatBed:
:
getName
,
dto
.
getName
());
queryWrapper
.
eq
(
StringUtil
.
isNotEmpty
(
dto
.
getRoomId
()),
PlatBed:
:
getRoomId
,
dto
.
getRoomId
());
Page
<
PlatBed
>
pages
=
page
(
p
,
queryWrapper
);
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getName
()),
PlatBed:
:
getName
,
dto
.
getName
());
queryWrapper
.
eq
(
StringUtil
.
isNotEmpty
(
dto
.
getRoomId
()),
PlatBed:
:
getRoomId
,
dto
.
getRoomId
());
Page
<
PlatBed
>
pages
=
page
(
p
,
queryWrapper
);
return
PageUtil
.
toPageVO
(
pages
.
getRecords
(),
pages
);
}
...
...
@@ -101,10 +100,10 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
PlatBed
platBed
=
getById
(
dto
.
getId
());
LambdaQueryWrapper
<
PlatBed
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
PlatBed:
:
getRoomId
,
platBed
.
getRoomId
());
queryWrapper
.
eq
(
PlatBed:
:
getName
,
dto
.
getName
());
queryWrapper
.
ne
(
PlatBed:
:
getId
,
dto
.
getId
());
if
(
count
(
queryWrapper
)
>
0
)
{
queryWrapper
.
eq
(
PlatBed:
:
getRoomId
,
platBed
.
getRoomId
());
queryWrapper
.
eq
(
PlatBed:
:
getName
,
dto
.
getName
());
queryWrapper
.
ne
(
PlatBed:
:
getId
,
dto
.
getId
());
if
(
count
(
queryWrapper
)
>
0
)
{
throw
new
BusinessException
(
CodeMessageEnum
.
PLATFORM_ERROR_BAD_NAME_EXIT
);
}
...
...
@@ -120,7 +119,7 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
public
void
del
(
String
id
)
{
PlatBed
platBed
=
getById
(
id
);
if
(
CommonEnum
.
NO
.
getValue
().
equals
(
platBed
.
getStatus
()))
{
if
(
CommonEnum
.
NO
.
getValue
().
equals
(
platBed
.
getStatus
()))
{
throw
new
BusinessException
(
CodeMessageEnum
.
PLATFORM_ERROR_BAD_NOT_DEL
);
}
...
...
@@ -133,6 +132,22 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
removeById
(
id
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
changeStatus
(
StatusDTO
dto
)
{
if
(
Arrays
.
stream
(
CommonEnum
.
values
()).
noneMatch
(
e
->
e
.
getValue
().
equals
(
dto
.
getStatus
())))
{
throw
new
BusinessException
(
CodeMessageEnum
.
SYSTEM_ERROR
);
}
PlatBed
bed
=
getById
(
dto
.
getId
());
if
(
bed
.
getStatus
().
equals
(
dto
.
getStatus
()))
{
throw
new
BusinessException
(
CodeMessageEnum
.
SYSTEM_ERROR
);
}
bed
.
setStatus
(
dto
.
getStatus
());
updateById
(
bed
);
}
@Override
public
PageVO
<
PlatDeviceDTO
>
pageDevice
(
PageReqDTO
<
PlatDeviceDTO
>
pageReqDTO
)
{
...
...
@@ -141,18 +156,17 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
List
<
PlatRoomBedDevice
>
list
=
platRoomBedDeviceService
.
list
(
queryWrapper1
);
List
<
String
>
listEquipmentIds
=
list
.
stream
().
map
(
item
->
item
.
getEquipmentId
()).
collect
(
Collectors
.
toList
());
PlatDeviceDTO
dto
=
pageReqDTO
.
getData
();
Page
<
PlatDevice
>
p
=
PageUtil
.
toMpPage
(
pageReqDTO
);
LambdaQueryWrapper
<
PlatDevice
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
PlatDevice:
:
getCategory
,
PlatDeviceEnum
.
CategoryEnum
.
HEART
);
queryWrapper
.
notIn
(
PlatDevice:
:
getId
,
listEquipmentIds
);
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getOriDeviceId
()),
PlatDevice:
:
getOriDeviceId
,
dto
.
getOriDeviceId
());
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getName
()),
PlatDevice:
:
getName
,
dto
.
getName
());
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getProductName
()),
PlatDevice:
:
getProductName
,
dto
.
getProductName
());
queryWrapper
.
eq
(
StringUtil
.
isNotEmpty
(
dto
.
getStatus
()),
PlatDevice:
:
getStatus
,
dto
.
getStatus
());
Page
<
PlatDevice
>
pages
=
platDeviceService
.
page
(
p
,
queryWrapper
);
List
<
PlatDeviceDTO
>
listRecord
=
BeanDtoVoUtils
.
listVo
(
pages
.
getRecords
(),
PlatDeviceDTO
.
class
);
queryWrapper
.
notIn
(
PlatDevice:
:
getId
,
listEquipmentIds
);
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getOriDeviceId
()),
PlatDevice:
:
getOriDeviceId
,
dto
.
getOriDeviceId
());
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getName
()),
PlatDevice:
:
getName
,
dto
.
getName
());
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getProductName
()),
PlatDevice:
:
getProductName
,
dto
.
getProductName
());
queryWrapper
.
eq
(
StringUtil
.
isNotEmpty
(
dto
.
getStatus
()),
PlatDevice:
:
getStatus
,
dto
.
getStatus
());
Page
<
PlatDevice
>
pages
=
platDeviceService
.
page
(
p
,
queryWrapper
);
List
<
PlatDeviceDTO
>
listRecord
=
BeanDtoVoUtils
.
listVo
(
pages
.
getRecords
(),
PlatDeviceDTO
.
class
);
return
PageUtil
.
toPageVO
(
listRecord
,
pages
);
}
...
...
@@ -167,10 +181,15 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
List
<
String
>
listBedIds
=
list
.
stream
().
map
(
item
->
item
.
getBedId
()).
collect
(
Collectors
.
toList
());
LambdaQueryWrapper
<
PlatBed
>
queryWrapper2
=
new
LambdaQueryWrapper
<>();
Map
<
String
,
String
>
map
=
listBed
.
stream
().
collect
(
Collectors
.
toMap
(
PlatBed:
:
getEquipmentId
,
PlatBed:
:
getName
,(
k1
,
k2
)->
k1
));
queryWrapper2
.
in
(
PlatBed:
:
getId
,
listBedIds
);
List
<
PlatBed
>
listBeds
=
list
(
queryWrapper2
);
Map
<
String
,
String
>
map
=
listBeds
.
stream
().
collect
(
Collectors
.
toMap
(
PlatBed:
:
getId
,
PlatBed:
:
getName
,(
k1
,
k2
)->
k1
));
Map
<
String
,
String
>
mapName
=
new
HashMap
<>();
list
.
forEach
(
item
->{
if
(
map
.
containsKey
(
item
.
getBedId
())){
mapName
.
put
(
item
.
getEquipmentId
(),
map
.
get
(
item
.
getBedId
()));
}
});
List
<
PlatDeviceDTO
>
data
=
new
ArrayList
<>();
if
(!
listEquipmentIds
.
isEmpty
()){
...
...
@@ -181,10 +200,9 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
data
=
BeanDtoVoUtils
.
listVo
(
listDevices
,
PlatDeviceDTO
.
class
);
data
.
forEach
(
item
->{
item
.
setBedName
(
map
.
get
(
item
.
getId
()));
item
.
setBedName
(
map
Name
.
get
(
item
.
getId
()));
});
}
return
data
;
}
}
server-service/src/main/java/com/makeit/service/platform/space/impl/PlatRoomServiceImpl.java
View file @
6f435dc1
package
com
.
makeit
.
service
.
platform
.
space
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.makeit.common.page.PageReqDTO
;
...
...
@@ -37,7 +38,7 @@ public class PlatRoomServiceImpl extends ServiceImpl<PlatRoomMapper, PlatRoom> i
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
add
(
PlatRoomDTO
dto
)
{
PlatRoom
platRoom
=
BeanDtoVoUtils
.
convert
(
dto
,
PlatRoom
.
class
);
PlatRoom
platRoom
=
BeanDtoVoUtils
.
convert
(
dto
,
PlatRoom
.
class
);
save
(
platRoom
);
platBedService
.
add
(
platRoom
);
...
...
@@ -48,7 +49,7 @@ public class PlatRoomServiceImpl extends ServiceImpl<PlatRoomMapper, PlatRoom> i
public
void
edit
(
PlatRoomDTO
dto
)
{
PlatRoom
platRoom
=
getById
(
dto
.
getId
());
if
(
platRoom
.
getBedNumber
()
>
dto
.
getBedNumber
())
{
if
(
platRoom
.
getBedNumber
()
>
dto
.
getBedNumber
())
{
throw
new
BusinessException
(
CodeMessageEnum
.
PLATFORM_ERROR_ROOM_BAD_NUMBER_NOT_AUTH
);
}
...
...
@@ -65,7 +66,7 @@ public class PlatRoomServiceImpl extends ServiceImpl<PlatRoomMapper, PlatRoom> i
@Override
public
PlatRoomDTO
view
(
String
id
)
{
PlatRoom
room
=
getById
(
id
);
PlatRoomDTO
data
=
BeanDtoVoUtils
.
convert
(
room
,
PlatRoomDTO
.
class
);
PlatRoomDTO
data
=
BeanDtoVoUtils
.
convert
(
room
,
PlatRoomDTO
.
class
);
return
data
;
}
...
...
@@ -74,20 +75,50 @@ public class PlatRoomServiceImpl extends ServiceImpl<PlatRoomMapper, PlatRoom> i
public
void
del
(
List
<
String
>
ids
)
{
LambdaQueryWrapper
<
PlatBed
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
in
(
PlatBed:
:
getRoomId
,
ids
);
if
(
platBedService
.
count
(
queryWrapper
)
>
0
)
{
queryWrapper
.
in
(
PlatBed:
:
getRoomId
,
ids
);
if
(
platBedService
.
count
(
queryWrapper
)
>
0
)
{
throw
new
BusinessException
(
CodeMessageEnum
.
PLATFORM_ERROR_ROOM_EXIT_BAD
);
}
removeByIds
(
ids
);
}
@Transactional
@Override
public
void
delCascade
(
List
<
String
>
ids
)
{
removeByIds
(
ids
);
platBedService
.
remove
(
new
QueryWrapper
<
PlatBed
>().
lambda
()
.
in
(
PlatBed:
:
getRoomId
,
ids
));
}
@Override
public
boolean
hasUsedBed
(
String
id
,
String
status
,
String
notBedId
)
{
return
platBedService
.
count
(
new
QueryWrapper
<
PlatBed
>().
lambda
()
.
in
(
PlatBed:
:
getRoomId
,
id
)
.
eq
(
StringUtil
.
isNotBlank
(
status
),
PlatBed:
:
getStatus
,
status
)
.
ne
(
StringUtil
.
isNotBlank
(
notBedId
),
PlatBed:
:
getId
,
notBedId
)
)
>
0
;
}
@Override
public
boolean
hasUsedBedByBedId
(
String
bedId
,
String
status
,
String
notBedId
)
{
PlatBed
bed
=
platBedService
.
getById
(
bedId
);
return
platBedService
.
count
(
new
QueryWrapper
<
PlatBed
>().
lambda
()
.
in
(
PlatBed:
:
getRoomId
,
bed
.
getRoomId
())
.
eq
(
StringUtil
.
isNotBlank
(
status
),
PlatBed:
:
getStatus
,
status
)
.
ne
(
StringUtil
.
isNotBlank
(
notBedId
),
PlatBed:
:
getId
,
notBedId
)
)
>
0
;
}
@Override
public
PageVO
<
PlatRoom
>
page
(
PageReqDTO
<
PlatRoomQueryDTO
>
page
)
{
PlatRoomQueryDTO
dto
=
page
.
getData
();
Page
<
PlatRoom
>
p
=
PageUtil
.
toMpPage
(
page
);
LambdaQueryWrapper
<
PlatRoom
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getName
()),
PlatRoom:
:
getName
,
dto
.
getName
());
Page
<
PlatRoom
>
pages
=
page
(
p
,
queryWrapper
);
queryWrapper
.
like
(
StringUtil
.
isNotEmpty
(
dto
.
getName
()),
PlatRoom:
:
getName
,
dto
.
getName
());
Page
<
PlatRoom
>
pages
=
page
(
p
,
queryWrapper
);
return
PageUtil
.
toPageVO
(
pages
.
getRecords
(),
pages
);
}
...
...
server-web/platform-web.iml
View file @
6f435dc1
...
...
@@ -25,7 +25,6 @@
</content>
<orderEntry
type=
"inheritedJdk"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
<orderEntry
type=
"module"
module-name=
"server-common"
/>
<orderEntry
type=
"library"
name=
"Maven: org.projectlombok:lombok:1.18.22"
level=
"project"
/>
<orderEntry
type=
"module"
module-name=
"server-common"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6"
level=
"project"
/>
...
...
@@ -156,6 +155,13 @@
<orderEntry
type=
"library"
name=
"Maven: io.opentracing:opentracing-noop:0.33.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-ram:3.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-kms:2.11.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.integration:spring-integration-stream:5.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.integration:spring-integration-core:5.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-messaging:5.3.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.retry:spring-retry:1.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.annotation:javax.annotation-api:1.3.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.integration:spring-integration-mqtt:5.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:dysmsapi20170525:2.0.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:tea-util:0.2.13"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:endpoint-util:0.0.6"
level=
"project"
/>
...
...
server-web/src/main/resources/application-dev.yml
View file @
6f435dc1
...
...
@@ -91,4 +91,13 @@ libreOffice: C:\\Program Files\\LibreOffice\\program\\soffice
iot
:
url
:
http://iot.meiqicloud.com/api/
clientId
:
fyxmb5h52iKwE2Hi
secureKey
:
22fZbnH36wdHn7ZTyKKHraFw233npcez
\ No newline at end of file
secureKey
:
22fZbnH36wdHn7ZTyKKHraFw233npcez
mqtt
:
username
:
admin|1693982115969
password
:
8e3795ef7b5e95869fa8c323b865b3a9
hostUrl
:
tcp://124.71.33.17:11883
clientId
:
ab3a2fd694c8c838aba2686df3a80e7b
defaultTopic
:
timeout
:
10
keepalive
:
60
\ No newline at end of file
server-web/src/test/java/com/makeit/iotapi/IotTest.java
View file @
6f435dc1
...
...
@@ -3,6 +3,7 @@ package com.makeit.iotapi;
import
com.makeit.module.admin.vo.plat.PlatTenantVO
;
import
com.makeit.module.iot.service.IotOrgService
;
import
com.makeit.module.iot.service.IotProductDeviceService
;
import
com.makeit.module.iot.service.IotTokenService
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
...
...
@@ -11,6 +12,8 @@ import org.springframework.boot.test.context.SpringBootTest;
public
class
IotTest
{
@Autowired
private
IotTokenService
tokenService
;
@Autowired
private
IotOrgService
iotOrgService
;
@Autowired
private
IotProductDeviceService
iotProductDeviceService
;
...
...
@@ -25,6 +28,11 @@ public class IotTest {
@Test
void
getIotToken
()
{
tokenService
.
getIotToken
();
}
@Test
void
getEquipmentInfo
()
{
iotProductDeviceService
.
getEquipmentInfo
();
}
...
...
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