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
aac981f3
Commit
aac981f3
authored
Aug 10, 2020
by
chenfm
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/chenfm' into chenfm
parents
7d773f3a
ffa9caa3
Changes
62
Show whitespace changes
Inline
Side-by-side
Showing
62 changed files
with
1960 additions
and
345 deletions
+1960
-345
ApplicationLoadRunner.java
...atacenter/iot/common/component/ApplicationLoadRunner.java
+15
-0
RedisComponent.java
...m/esv/datacenter/iot/common/component/RedisComponent.java
+19
-0
TimescaleComponent.java
...v/datacenter/iot/common/component/TimescaleComponent.java
+16
-2
DateUtils.java
...in/java/com/esv/datacenter/iot/common/util/DateUtils.java
+98
-0
ReqUtils.java
...ain/java/com/esv/datacenter/iot/common/util/ReqUtils.java
+18
-3
ValidatorListById.java
...center/iot/common/validator/groups/ValidatorListById.java
+15
-0
DataPermHandler.java
...om/esv/datacenter/iot/config/mybatis/DataPermHandler.java
+1
-1
DataModelAlarmRuleController.java
...le/datamodel/controller/DataModelAlarmRuleController.java
+17
-8
DataModelController.java
.../iot/module/datamodel/controller/DataModelController.java
+1
-1
DataModelAlarmRuleDao.java
...enter/iot/module/datamodel/dao/DataModelAlarmRuleDao.java
+13
-2
DataModelAlarmRuleDto.java
...enter/iot/module/datamodel/dto/DataModelAlarmRuleDto.java
+66
-0
DataModelAlarmRuleEntity.java
...iot/module/datamodel/entity/DataModelAlarmRuleEntity.java
+8
-1
DataModelAlarmRuleService.java
...t/module/datamodel/service/DataModelAlarmRuleService.java
+20
-0
DataModelService.java
...center/iot/module/datamodel/service/DataModelService.java
+3
-2
DataModelAlarmRuleServiceImpl.java
...datamodel/service/impl/DataModelAlarmRuleServiceImpl.java
+70
-2
DataModelPropertyServiceImpl.java
.../datamodel/service/impl/DataModelPropertyServiceImpl.java
+23
-0
DataModelServiceImpl.java
...t/module/datamodel/service/impl/DataModelServiceImpl.java
+19
-5
DataModelBriefVO.java
.../datacenter/iot/module/datamodel/vo/DataModelBriefVO.java
+33
-0
DataModelDetailVO.java
...datacenter/iot/module/datamodel/vo/DataModelDetailVO.java
+24
-0
DataModelPropertyVO.java
...tacenter/iot/module/datamodel/vo/DataModelPropertyVO.java
+0
-20
DeviceInstanceController.java
...dule/devicemodel/controller/DeviceInstanceController.java
+121
-0
DeviceTypeController.java
...t/module/devicemodel/controller/DeviceTypeController.java
+165
-0
DeviceDataMapDao.java
...tacenter/iot/module/devicemodel/dao/DeviceDataMapDao.java
+14
-2
DeviceInstanceDao.java
...acenter/iot/module/devicemodel/dao/DeviceInstanceDao.java
+29
-0
DeviceModelDao.java
...datacenter/iot/module/devicemodel/dao/DeviceModelDao.java
+0
-17
DeviceModelInstanceDao.java
...er/iot/module/devicemodel/dao/DeviceModelInstanceDao.java
+0
-17
DeviceModelPropertyDao.java
...er/iot/module/devicemodel/dao/DeviceModelPropertyDao.java
+0
-17
DeviceTypeDao.java
.../datacenter/iot/module/devicemodel/dao/DeviceTypeDao.java
+29
-0
DeviceInstanceDto.java
...acenter/iot/module/devicemodel/dto/DeviceInstanceDto.java
+67
-0
DeviceDataMapEntity.java
...er/iot/module/devicemodel/entity/DeviceDataMapEntity.java
+4
-4
DeviceInstanceEntity.java
...r/iot/module/devicemodel/entity/DeviceInstanceEntity.java
+16
-8
DeviceModelPropertyEntity.java
.../module/devicemodel/entity/DeviceModelPropertyEntity.java
+0
-88
DeviceTypeEntity.java
...enter/iot/module/devicemodel/entity/DeviceTypeEntity.java
+6
-6
DeviceDataMapForm.java
...center/iot/module/devicemodel/form/DeviceDataMapForm.java
+33
-0
DeviceInstanceForm.java
...enter/iot/module/devicemodel/form/DeviceInstanceForm.java
+72
-0
DeviceTypeForm.java
...atacenter/iot/module/devicemodel/form/DeviceTypeForm.java
+57
-0
DeviceDataMapService.java
.../iot/module/devicemodel/service/DeviceDataMapService.java
+42
-2
DeviceInstanceService.java
...iot/module/devicemodel/service/DeviceInstanceService.java
+93
-0
DeviceModelInstanceService.java
...odule/devicemodel/service/DeviceModelInstanceService.java
+0
-16
DeviceModelPropertyService.java
...odule/devicemodel/service/DeviceModelPropertyService.java
+0
-16
DeviceModelService.java
...er/iot/module/devicemodel/service/DeviceModelService.java
+0
-16
DeviceTypeService.java
...ter/iot/module/devicemodel/service/DeviceTypeService.java
+95
-0
DeviceDataMapServiceImpl.java
...le/devicemodel/service/impl/DeviceDataMapServiceImpl.java
+40
-0
DeviceInstanceServiceImpl.java
...e/devicemodel/service/impl/DeviceInstanceServiceImpl.java
+121
-0
DeviceModelInstanceServiceImpl.java
...icemodel/service/impl/DeviceModelInstanceServiceImpl.java
+0
-14
DeviceModelPropertyServiceImpl.java
...icemodel/service/impl/DeviceModelPropertyServiceImpl.java
+0
-14
DeviceModelServiceImpl.java
...dule/devicemodel/service/impl/DeviceModelServiceImpl.java
+0
-14
DeviceTypeServiceImpl.java
...odule/devicemodel/service/impl/DeviceTypeServiceImpl.java
+141
-0
DeviceInstanceVO.java
...atacenter/iot/module/devicemodel/vo/DeviceInstanceVO.java
+65
-0
DeviceTypeBriefVO.java
...tacenter/iot/module/devicemodel/vo/DeviceTypeBriefVO.java
+33
-0
DeviceTypeVO.java
...sv/datacenter/iot/module/devicemodel/vo/DeviceTypeVO.java
+49
-0
TestController.java
...datacenter/iot/module/test/controller/TestController.java
+27
-0
application-dev.yml
src/main/resources/application-dev.yml
+3
-3
application-local.yml
src/main/resources/application-local.yml
+3
-5
DataModelAlarmRuleDao.xml
...main/resources/mapper/datamodel/DataModelAlarmRuleDao.xml
+7
-0
DataModelDao.xml
src/main/resources/mapper/datamodel/DataModelDao.xml
+2
-2
DataModelPropertyDao.xml
src/main/resources/mapper/datamodel/DataModelPropertyDao.xml
+1
-1
DeviceDataMapDao.xml
src/main/resources/mapper/devicemodel/DeviceDataMapDao.xml
+8
-1
DeviceInstanceDao.xml
src/main/resources/mapper/devicemodel/DeviceInstanceDao.xml
+44
-0
DeviceModelPropertyDao.xml
...n/resources/mapper/devicemodel/DeviceModelPropertyDao.xml
+0
-26
DeviceTypeDao.xml
src/main/resources/mapper/devicemodel/DeviceTypeDao.xml
+13
-3
DataModelControllerTest.java
.../module/datamodel/controller/DataModelControllerTest.java
+81
-6
No files found.
src/main/java/com/esv/datacenter/iot/common/component/ApplicationLoadRunner.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
common
.
component
;
import
com.esv.datacenter.iot.module.datamodel.service.DataModelAlarmRuleService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
...
...
@@ -22,8 +24,21 @@ public class ApplicationLoadRunner implements ApplicationRunner {
@Value
(
"${spring.application.name}"
)
private
String
applicationName
;
@Autowired
private
DataModelAlarmRuleService
dataModelAlarmRuleService
;
@Override
public
void
run
(
ApplicationArguments
var
)
{
log
.
info
(
"-------------------- [{}]初始化完成 --------------------"
,
applicationName
);
// 初始化缓存数据模型告警规则
try
{
dataModelAlarmRuleService
.
cacheInitAlarmRule
();
log
.
info
(
"-------------------- 缓存数据模型告警规则初始化成功 --------------------"
);
}
catch
(
Exception
e
)
{
log
.
error
(
"-------------------- 缓存数据模型告警规则初始化失败 --------------------"
);
log
.
error
(
e
.
getMessage
(),
e
);
}
}
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/common/component/RedisComponent.java
View file @
aac981f3
...
...
@@ -2,6 +2,7 @@ package com.esv.datacenter.iot.common.component;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.CacheManager
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
...
...
@@ -126,6 +127,24 @@ public class RedisComponent {
}
}
/**
* @description 普通缓存放入(缓存时间不过期,慎用!!!)
* @param key:
* @param value:
* @return boolean
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 19:27
**/
public
boolean
set
(
String
key
,
Object
value
)
{
try
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
return
false
;
}
}
/**
* 递增
*
...
...
src/main/java/com/esv/datacenter/iot/common/component/TimescaleComponent.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
common
.
component
;
import
com.esv.datacenter.iot.common.util.DateUtils
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelPropertyEntity
;
import
com.zaxxer.hikari.HikariDataSource
;
import
io.micrometer.core.instrument.util.TimeUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -186,6 +188,18 @@ public class TimescaleComponent {
case
"number"
:
sb
.
append
(
defaultValue
);
break
;
case
"integer"
:
sb
.
append
(
defaultValue
);
break
;
case
"date"
:
sb
.
append
(
"'"
).
append
(
defaultValue
).
append
(
"'::date"
);
break
;
case
"time"
:
sb
.
append
(
DateUtils
.
getMilliSecondsOfDay
(
defaultValue
));
break
;
case
"datetime"
:
sb
.
append
(
"'"
).
append
(
defaultValue
).
append
(
"'"
);
break
;
default
:
sb
.
append
(
"'"
).
append
(
defaultValue
).
append
(
"'::text"
);
break
;
...
...
@@ -201,9 +215,9 @@ public class TimescaleComponent {
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"CREATE INDEX "
)
.
append
(
table
)
.
append
(
"_
instan
ce_id_idx ON "
)
.
append
(
"_
devi
ce_id_idx ON "
)
.
append
(
table
)
.
append
(
" (
instan
ce_id);"
);
.
append
(
" (
devi
ce_id);"
);
return
sb
.
toString
();
}
...
...
src/main/java/com/esv/datacenter/iot/common/util/DateUtils.java
View file @
aac981f3
...
...
@@ -6,6 +6,7 @@ import org.joda.time.format.DateTimeFormat;
import
org.joda.time.format.DateTimeFormatter
;
import
java.util.Date
;
import
java.util.Objects
;
/**
* @description: 日期工具类
...
...
@@ -321,4 +322,101 @@ public class DateUtils {
DateTime
dateTime
=
new
DateTime
(
target
);
return
dateTime
.
isAfter
(
startTime
.
getTime
())
&&
dateTime
.
isBefore
(
endTime
.
getTime
());
}
/**
* @description 判断是否有效日期时间(yyyy-MM-dd HH:mm:ss)
* @param dateTimeStr:
* @param format:
* @return boolean
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 16:21
**/
public
static
boolean
isValidDatetime
(
String
dateTimeStr
,
String
format
)
{
if
(
Objects
.
isNull
(
StringUtils
.
trimToNull
(
format
)))
{
format
=
DATE_FORMAT1
;
}
try
{
Date
datetime
=
parse
(
dateTimeStr
,
format
);
if
(!
dateTimeStr
.
equals
(
format
(
datetime
,
format
)))
{
return
false
;
}
}
catch
(
Exception
e
)
{
return
false
;
}
return
true
;
}
/**
* @description 判断是否有效日期(yyyy-MM-dd)
* @param dateStr:
* @param format:
* @return boolean
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 16:20
**/
public
static
boolean
isValidDate
(
String
dateStr
,
String
format
)
{
if
(
Objects
.
isNull
(
StringUtils
.
trimToNull
(
format
)))
{
format
=
DATE_FORMAT3
;
}
try
{
Date
date
=
parse
(
dateStr
,
format
);
if
(!
dateStr
.
equals
(
format
(
date
,
format
)))
{
return
false
;
}
}
catch
(
Exception
e
)
{
return
false
;
}
return
true
;
}
/**
* @description 校验是否有效时间(HH:mm:ss)
* @param time:
* @param format:
* @return boolean
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 16:08
**/
public
static
boolean
isValidTime
(
String
time
,
String
format
)
{
if
(
Objects
.
isNull
(
StringUtils
.
trimToNull
(
format
)))
{
format
=
DATE_FORMAT1
;
}
String
datetime
=
"1970-01-01 "
+
time
;
try
{
Date
date
=
parse
(
datetime
,
format
);
if
(!
datetime
.
equals
(
format
(
date
,
format
)))
{
return
false
;
}
}
catch
(
Exception
e
)
{
return
false
;
}
return
true
;
}
/**
* @description 获取距离当天0点0分0秒的秒数
* @param time:
* @return int
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 16:17
**/
public
static
int
getSecondsOfDay
(
String
time
)
{
String
[]
hms
=
time
.
split
(
":"
);
int
timeOfDay
=
3600
*
Integer
.
parseInt
(
hms
[
0
])
+
60
*
Integer
.
parseInt
(
hms
[
1
])
+
Integer
.
parseInt
(
hms
[
2
]);
return
timeOfDay
;
}
/**
* @description 获取距离当天0点0分0秒的毫秒数
* @param time:
* @return int
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 16:17
**/
public
static
int
getMilliSecondsOfDay
(
String
time
)
{
return
getSecondsOfDay
(
time
)
*
1000
;
}
}
src/main/java/com/esv/datacenter/iot/common/util/ReqUtils.java
View file @
aac981f3
...
...
@@ -75,9 +75,24 @@ public class ReqUtils {
* createTime 2020/05/25 13:55
**/
public
static
Long
getRequestTenantId
()
{
String
userId
=
getRequestHeader
(
GatewayHeaders
.
TENANT_ID
);
if
(
StringUtils
.
isNotBlank
(
userId
))
{
return
Long
.
parseLong
(
userId
);
String
tenantId
=
getRequestHeader
(
GatewayHeaders
.
TENANT_ID
);
if
(
StringUtils
.
isNotBlank
(
tenantId
))
{
return
Long
.
parseLong
(
tenantId
);
}
else
{
return
null
;
}
}
/**
* @description 获取当前请求的部门ID
* @return java.lang.Long
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 15:56
**/
public
static
Long
getRequestDepartmentId
()
{
String
departmentId
=
getRequestHeader
(
GatewayHeaders
.
DEPARTMENT_ID
);
if
(
StringUtils
.
isNotBlank
(
departmentId
))
{
return
Long
.
parseLong
(
departmentId
);
}
else
{
return
null
;
}
...
...
src/main/java/com/esv/datacenter/iot/common/validator/groups/ValidatorListById.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
common
.
validator
.
groups
;
import
javax.validation.groups.Default
;
/**
* @description: 参数校验分组:通过ID获取记录列表
* @project: SpringCloudTemplate
* @name: com.esv.springcloud.template.common.validator.groups.ValidatorDelete
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/03/12 17:58
* @version:1.0
*/
public
interface
ValidatorListById
extends
Default
{
}
src/main/java/com/esv/datacenter/iot/config/mybatis/DataPermHandler.java
View file @
aac981f3
...
...
@@ -26,7 +26,7 @@ public class DataPermHandler implements TenantHandler {
/**
* 不需要数据权限查询的表
**/
private
final
List
<
String
>
filterTableNames
=
Arrays
.
asList
(
"device_data_alarm"
);
private
final
List
<
String
>
filterTableNames
=
Arrays
.
asList
(
"d
ata_model_alarm_rule"
,
"d
evice_data_alarm"
);
@Override
public
Expression
getTenantId
(
boolean
where
)
{
...
...
src/main/java/com/esv/datacenter/iot/module/datamodel/controller/DataModelAlarmRuleController.java
View file @
aac981f3
...
...
@@ -10,13 +10,10 @@ import com.esv.datacenter.iot.module.datamodel.service.DataModelAlarmRuleService
import
com.esv.datacenter.iot.module.datamodel.service.DataModelService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
/**
* @description:
* @description:
数据模型告警规则Controller
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/05 16:27
* @version:1.0
...
...
@@ -36,7 +33,7 @@ public class DataModelAlarmRuleController {
}
/**
* @description 保存告警规则
* @description 保存
数据模型
告警规则
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
...
...
@@ -46,7 +43,7 @@ public class DataModelAlarmRuleController {
public
EResponse
save
(
@RequestBody
@Validated
(
ValidatorInsert
.
class
)
DataModelAlarmRuleForm
form
)
throws
EException
{
// 模型ID有效性校验
if
(!
dataModelService
.
isModelExits
(
form
.
getModelId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的模型ID
值
"
);
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的模型ID"
);
}
// 保存告警规则
...
...
@@ -66,9 +63,21 @@ public class DataModelAlarmRuleController {
public
EResponse
list
(
@RequestBody
@Validated
(
ValidatorList
.
class
)
DataModelAlarmRuleForm
form
)
throws
EException
{
// 模型ID有效性校验
if
(!
dataModelService
.
isModelExits
(
form
.
getModelId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的模型ID
值
"
);
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的模型ID"
);
}
return
EResponse
.
ok
(
dataModelAlarmRuleService
.
getAlarmRuleList
(
form
.
getModelId
()));
}
/**
* @description 缓存数据模型告警规则
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 15:58
**/
@GetMapping
(
"/updateCache"
)
public
EResponse
updateCache
()
throws
EException
{
dataModelAlarmRuleService
.
cacheInitAlarmRule
();
return
EResponse
.
ok
();
}
}
src/main/java/com/esv/datacenter/iot/module/datamodel/controller/DataModelController.java
View file @
aac981f3
...
...
@@ -155,7 +155,7 @@ public class DataModelController {
**/
private
void
checkIsValidModelId
(
Long
modelId
)
{
if
(!
dataModelService
.
isModelExits
(
modelId
))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的模型
id值
"
);
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的模型
ID
"
);
}
}
...
...
src/main/java/com/esv/datacenter/iot/module/datamodel/dao/DataModelAlarmRuleDao.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
datamodel
.
dao
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelAlarmRuleEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.esv.datacenter.iot.module.datamodel.dto.DataModelAlarmRuleDto
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelAlarmRuleEntity
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* 数据模型告警规则表
*
...
...
@@ -14,4 +17,12 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public
interface
DataModelAlarmRuleDao
extends
BaseMapper
<
DataModelAlarmRuleEntity
>
{
/**
* @description 查询所有数据模型告警规则
* @return java.util.List<com.esv.datacenter.iot.module.datamodel.dto.DataModelAlarmRuleDto>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 15:48
**/
List
<
DataModelAlarmRuleDto
>
selectAll
();
}
src/main/java/com/esv/datacenter/iot/module/datamodel/dto/DataModelAlarmRuleDto.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
datamodel
.
dto
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/06 14:47
* @version:1.0
*/
@Data
public
class
DataModelAlarmRuleDto
{
/**
*
*/
private
Long
id
;
/**
* 模型ID
*/
private
Long
modelId
;
/**
* 模型属性ID
*/
private
Long
propertyId
;
/**
* 判定规则代码(字典表)
*/
private
Integer
ruleExpression
;
/**
* 告警等级(字典表)
*/
private
Integer
alarmLevel
;
/**
* 阈值
*/
private
String
threshold
;
/**
* 属性代码
*/
private
String
propertyCode
;
/**
* 属性名称
*/
private
String
propertyName
;
/**
* 属性类型(字典表)
*/
private
Integer
propertyType
;
/**
* 属性默认值
*/
private
String
propertyDefaultValue
;
/**
* 属性单位
*/
private
String
propertyUnit
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/datamodel/entity/DataModelAlarmRuleEntity.java
View file @
aac981f3
...
...
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.io.Serializable
;
import
java.util.Date
;
import
lombok.Data
;
/**
* 数据模型告警规则表
...
...
@@ -79,4 +81,9 @@ public class DataModelAlarmRuleEntity implements Serializable {
*/
private
Date
updateTime
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/datamodel/service/DataModelAlarmRuleService.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
datamodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.module.datamodel.dto.DataModelAlarmRuleDto
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelAlarmRuleEntity
;
import
com.esv.datacenter.iot.module.datamodel.form.AlarmRuleItemForm
;
import
com.esv.datacenter.iot.module.datamodel.form.DataModelAlarmRuleForm
;
import
com.esv.datacenter.iot.module.datamodel.vo.AlarmRuleItemVO
;
...
...
@@ -34,5 +36,23 @@ public interface DataModelAlarmRuleService extends IService<DataModelAlarmRuleEn
**/
List
<
AlarmRuleItemVO
>
getAlarmRuleList
(
Long
modelId
);
/**
* @description 缓存数据模型告警规则
* @return void
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 14:49
**/
void
cacheInitAlarmRule
();
/**
* @description 设置缓存数据模型告警规则
* @param modelId:
* @param alarmRuleItemList:
* @return void
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 14:49
**/
void
setCacheAlarmRule
(
Long
modelId
,
List
<
DataModelAlarmRuleDto
>
alarmRuleItemList
);
}
src/main/java/com/esv/datacenter/iot/module/datamodel/service/DataModelService.java
View file @
aac981f3
...
...
@@ -5,6 +5,7 @@ import com.esv.datacenter.iot.common.vo.PageResultVO;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity
;
import
com.esv.datacenter.iot.module.datamodel.form.DataModelForm
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataDataModelDetailVO
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataModelBriefVO
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataModelVO
;
import
java.util.List
;
...
...
@@ -65,11 +66,11 @@ public interface DataModelService extends IService<DataModelEntity> {
/**
* @description 获取所有模型列表
* @return java.util.List<com.esv.datacenter.iot.module.dmodel.vo.
Model
VO>
* @return java.util.List<com.esv.datacenter.iot.module.dmodel.vo.
DataModelBrief
VO>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/01 13:04
**/
List
<
DataModelVO
>
getAllModeList
();
List
<
DataModel
Brief
VO
>
getAllModeList
();
/**
* @description 判断模型是否存在
...
...
src/main/java/com/esv/datacenter/iot/module/datamodel/service/impl/DataModelAlarmRuleServiceImpl.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
datamodel
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.common.component.RedisComponent
;
import
com.esv.datacenter.iot.common.util.ReqUtils
;
import
com.esv.datacenter.iot.module.datamodel.dao.DataModelAlarmRuleDao
;
import
com.esv.datacenter.iot.module.datamodel.dto.DataModelAlarmRuleDto
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelAlarmRuleEntity
;
import
com.esv.datacenter.iot.module.datamodel.form.AlarmRuleItemForm
;
import
com.esv.datacenter.iot.module.datamodel.form.DataModelAlarmRuleForm
;
import
com.esv.datacenter.iot.module.datamodel.service.DataModelAlarmRuleService
;
import
com.esv.datacenter.iot.module.datamodel.vo.AlarmRuleItemVO
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.*
;
@Service
(
"dataModelAlarmRuleService"
)
public
class
DataModelAlarmRuleServiceImpl
extends
ServiceImpl
<
DataModelAlarmRuleDao
,
DataModelAlarmRuleEntity
>
implements
DataModelAlarmRuleService
{
@Value
(
"${spring.application.name}"
)
private
String
applicationName
;
@Autowired
private
RedisComponent
redisComponent
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
saveAlarmRule
(
DataModelAlarmRuleForm
form
)
{
...
...
@@ -31,6 +42,7 @@ public class DataModelAlarmRuleServiceImpl extends ServiceImpl<DataModelAlarmRul
// 新增模型告警规则
String
[]
notBlandParams
=
new
String
[]{
"propertyId"
,
"ruleExpression"
,
"alarmLevel"
,
"threshold"
};
List
<
AlarmRuleItemForm
>
alarmRuleItemList
=
form
.
getAlarmRuleItemList
();
List
<
DataModelAlarmRuleDto
>
alarmRuleDtoList
=
new
ArrayList
<>();
for
(
AlarmRuleItemForm
ruleItemForm
:
alarmRuleItemList
)
{
// 告警规则必填校验
ReqUtils
.
checkParamsNotBlank
(
JSON
.
parseObject
(
ruleItemForm
.
toString
()),
notBlandParams
);
...
...
@@ -38,6 +50,8 @@ public class DataModelAlarmRuleServiceImpl extends ServiceImpl<DataModelAlarmRul
DataModelAlarmRuleEntity
entity
=
new
DataModelAlarmRuleEntity
();
BeanUtils
.
copyProperties
(
ruleItemForm
,
entity
);
entity
.
setModelId
(
form
.
getModelId
());
entity
.
setTenantId
(
ReqUtils
.
getRequestTenantId
());
entity
.
setDepartmentId
(
ReqUtils
.
getRequestDepartmentId
());
this
.
getBaseMapper
().
insert
(
entity
);
// 更新排序
...
...
@@ -45,7 +59,15 @@ public class DataModelAlarmRuleServiceImpl extends ServiceImpl<DataModelAlarmRul
sortEntity
.
setId
(
entity
.
getId
());
sortEntity
.
setSortNum
(
entity
.
getId
());
this
.
getBaseMapper
().
updateById
(
sortEntity
);
// 设置缓存数据
DataModelAlarmRuleDto
dto
=
new
DataModelAlarmRuleDto
();
BeanUtils
.
copyProperties
(
entity
,
dto
);
alarmRuleDtoList
.
add
(
dto
);
}
// 缓存数据模型告警规则
this
.
setCacheAlarmRule
(
modelId
,
alarmRuleDtoList
);
}
@Override
...
...
@@ -63,4 +85,50 @@ public class DataModelAlarmRuleServiceImpl extends ServiceImpl<DataModelAlarmRul
return
voList
;
}
@Override
public
void
cacheInitAlarmRule
()
{
List
<
DataModelAlarmRuleDto
>
dataModelAlarmRuleDtoList
=
this
.
getBaseMapper
().
selectAll
();
if
(
Objects
.
isNull
(
dataModelAlarmRuleDtoList
)
||
0
==
dataModelAlarmRuleDtoList
.
size
())
{
return
;
}
Long
modelId
=
-
99L
;
List
<
DataModelAlarmRuleDto
>
alarmRuleDtoList
=
null
;
Map
<
Long
,
Object
>
alarmRuleMap
=
new
HashMap
<>(
32
);
for
(
DataModelAlarmRuleDto
entity
:
dataModelAlarmRuleDtoList
)
{
if
(!
entity
.
getModelId
().
equals
(
modelId
))
{
if
(
null
!=
alarmRuleDtoList
&&
0
<
alarmRuleDtoList
.
size
())
{
alarmRuleMap
.
put
(
modelId
,
alarmRuleDtoList
);
}
alarmRuleDtoList
=
new
ArrayList
<>();
}
modelId
=
entity
.
getModelId
();
DataModelAlarmRuleDto
dto
=
new
DataModelAlarmRuleDto
();
BeanUtils
.
copyProperties
(
entity
,
dto
);
alarmRuleDtoList
.
add
(
dto
);
}
if
(!
alarmRuleMap
.
containsKey
(
modelId
))
{
alarmRuleMap
.
put
(
modelId
,
alarmRuleDtoList
);
}
// 初始化缓存数据模型告警规则
for
(
Map
.
Entry
<
Long
,
Object
>
entry
:
alarmRuleMap
.
entrySet
()){
this
.
setCacheAlarmRule
(
entry
.
getKey
(),
(
List
<
DataModelAlarmRuleDto
>)
entry
.
getValue
());
}
}
@Override
public
void
setCacheAlarmRule
(
Long
modelId
,
List
<
DataModelAlarmRuleDto
>
alarmRuleItemList
)
{
String
cacheKey
=
applicationName
+
"::data_model::alarm_rule::"
+
modelId
;
if
(
null
==
alarmRuleItemList
||
0
==
alarmRuleItemList
.
size
())
{
redisComponent
.
del
(
cacheKey
);
}
else
{
JSONArray
jsonArray
=
new
JSONArray
();
alarmRuleItemList
.
forEach
(
dto
->
{
jsonArray
.
add
(
JSONObject
.
parse
(
dto
.
toString
()));
});
redisComponent
.
set
(
cacheKey
,
jsonArray
.
toString
());
}
}
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/datamodel/service/impl/DataModelPropertyServiceImpl.java
View file @
aac981f3
...
...
@@ -7,6 +7,7 @@ import com.esv.datacenter.iot.common.component.BaseDataComponent;
import
com.esv.datacenter.iot.common.em.DbDeletedEnum
;
import
com.esv.datacenter.iot.common.exception.EException
;
import
com.esv.datacenter.iot.common.response.ECode
;
import
com.esv.datacenter.iot.common.util.DateUtils
;
import
com.esv.datacenter.iot.common.util.ReqUtils
;
import
com.esv.datacenter.iot.module.datamodel.dao.DataModelPropertyDao
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelPropertyEntity
;
...
...
@@ -122,6 +123,28 @@ public class DataModelPropertyServiceImpl extends ServiceImpl<DataModelPropertyD
throw
new
EException
(
ECode
.
PARAM_ERROR
.
code
(),
"无效的默认值["
+
propertyDefaultValue
+
"]"
);
}
break
;
case
"integer"
:
try
{
Long
.
parseLong
(
propertyDefaultValue
);
}
catch
(
Exception
e
)
{
throw
new
EException
(
ECode
.
PARAM_ERROR
.
code
(),
"无效的默认值["
+
propertyDefaultValue
+
"]"
);
}
break
;
case
"date"
:
if
(!
DateUtils
.
isValidDate
(
propertyDefaultValue
,
null
))
{
throw
new
EException
(
ECode
.
PARAM_ERROR
.
code
(),
"无效的默认值["
+
propertyDefaultValue
+
"]"
);
}
break
;
case
"time"
:
if
(!
DateUtils
.
isValidTime
(
propertyDefaultValue
,
null
))
{
throw
new
EException
(
ECode
.
PARAM_ERROR
.
code
(),
"无效的默认值["
+
propertyDefaultValue
+
"]"
);
}
break
;
case
"datetime"
:
if
(!
DateUtils
.
isValidDatetime
(
propertyDefaultValue
,
null
))
{
throw
new
EException
(
ECode
.
PARAM_ERROR
.
code
(),
"无效的默认值["
+
propertyDefaultValue
+
"]"
);
}
break
;
default
:
break
;
}
...
...
src/main/java/com/esv/datacenter/iot/module/datamodel/service/impl/DataModelServiceImpl.java
View file @
aac981f3
...
...
@@ -17,7 +17,9 @@ import com.esv.datacenter.iot.module.datamodel.form.DataModelPropertyForm;
import
com.esv.datacenter.iot.module.datamodel.service.DataModelPropertyService
;
import
com.esv.datacenter.iot.module.datamodel.service.DataModelService
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataDataModelDetailVO
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataModelBriefVO
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataModelVO
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceDataMapService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -34,6 +36,8 @@ public class DataModelServiceImpl extends ServiceImpl<DataModelDao, DataModelEnt
private
TimescaleComponent
timescaleComponent
;
@Autowired
private
DataModelPropertyService
dataModelPropertyService
;
@Autowired
private
DeviceDataMapService
deviceDataMapService
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -122,6 +126,12 @@ public class DataModelServiceImpl extends ServiceImpl<DataModelDao, DataModelEnt
// 判断是否修改模型属性并校验
List
<
DataModelPropertyForm
>
propertyList
=
form
.
getPropertyList
();
if
(
null
!=
propertyList
&&
0
<
propertyList
.
size
())
{
// 如果有设备模型使用,不能更新
int
count
=
deviceDataMapService
.
getCountByDataModelId
(
modelId
);
if
(
0
<
count
)
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"改模型已被设备使用,不能修改属性"
);
}
// 保存模型属性
this
.
dataModelPropertyService
.
saveModelProperty
(
modelId
,
propertyList
);
...
...
@@ -136,6 +146,12 @@ public class DataModelServiceImpl extends ServiceImpl<DataModelDao, DataModelEnt
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteModel
(
Long
modelId
)
{
// 如果有设备模型使用,不能删除
int
count
=
deviceDataMapService
.
getCountByDataModelId
(
modelId
);
if
(
0
<
count
)
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"改模型已被设备使用,不能删除"
);
}
// 逻辑删除模型
DataModelEntity
modelEntity
=
new
DataModelEntity
();
modelEntity
.
setId
(
modelId
);
...
...
@@ -153,15 +169,13 @@ public class DataModelServiceImpl extends ServiceImpl<DataModelDao, DataModelEnt
}
@Override
public
List
<
DataModelVO
>
getAllModeList
()
{
public
List
<
DataModel
Brief
VO
>
getAllModeList
()
{
List
<
DataModelEntity
>
modelEntityList
=
this
.
getBaseMapper
().
selectList
(
new
LambdaQueryWrapper
<
DataModelEntity
>()
.
orderByAsc
(
DataModelEntity:
:
getName
));
List
<
DataModelVO
>
dataModelVOList
=
new
ArrayList
<>();
List
<
DataModel
Brief
VO
>
dataModelVOList
=
new
ArrayList
<>();
for
(
DataModelEntity
entity
:
modelEntityList
)
{
DataModel
VO
vo
=
new
DataModel
VO
();
DataModel
BriefVO
vo
=
new
DataModelBrief
VO
();
BeanUtils
.
copyProperties
(
entity
,
vo
);
vo
.
setCreateTime
(
entity
.
getCreateTime
().
getTime
());
vo
.
setUpdateTime
(
entity
.
getUpdateTime
().
getTime
());
dataModelVOList
.
add
(
vo
);
}
...
...
src/main/java/com/esv/datacenter/iot/module/datamodel/vo/DataModelBriefVO.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
datamodel
.
vo
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/07/31 16:12
* @version:1.0
*/
@Data
public
class
DataModelBriefVO
{
/**
*
*/
private
Long
id
;
/**
* 模型名称
*/
private
String
name
;
/**
* 模型描述
*/
private
String
description
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/datamodel/vo/DataModelDetailVO.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
datamodel
.
vo
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.util.List
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/10 14:44
* @version:1.0
*/
@Data
public
class
DataModelDetailVO
extends
DataModelBriefVO
{
List
<
DataModelPropertyVO
>
propertyList
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/datamodel/vo/DataModelPropertyVO.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
datamodel
.
vo
;
import
com.baomidou.mybatisplus.annotation.FieldFill
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableLogic
;
import
lombok.Data
;
/**
...
...
@@ -18,16 +14,7 @@ public class DataModelPropertyVO {
/**
*
*/
@TableId
private
Long
id
;
/**
* 租户ID
*/
private
Long
tenantId
;
/**
* 部门ID
*/
private
Long
departmentId
;
/**
* 模型ID
*/
...
...
@@ -56,20 +43,13 @@ public class DataModelPropertyVO {
* 排列序号
*/
private
Long
sortNum
;
/**
* 是否删除:0-未删除、1-已删除
*/
@TableLogic
private
Boolean
deleted
;
/**
* 创建者
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
String
createUser
;
/**
* 修改者
*/
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
private
String
updateUser
;
/**
* 创建时间
...
...
src/main/java/com/esv/datacenter/iot/module/devicemodel/controller/DeviceInstanceController.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
controller
;
import
com.alibaba.fastjson.JSONObject
;
import
com.esv.datacenter.iot.common.exception.EException
;
import
com.esv.datacenter.iot.common.response.ECode
;
import
com.esv.datacenter.iot.common.response.EResponse
;
import
com.esv.datacenter.iot.common.validator.groups.*
;
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.DeviceTypeService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @description: 设备实例Controller
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/07 10:35
* @version:1.0
*/
@Slf4j
@RestController
@RequestMapping
(
"/deviceModel/instance"
)
@Validated
public
class
DeviceInstanceController
{
private
DeviceTypeService
deviceTypeService
;
private
DeviceInstanceService
deviceInstanceService
;
public
DeviceInstanceController
(
DeviceTypeService
deviceTypeService
,
DeviceInstanceService
deviceInstanceService
)
{
this
.
deviceTypeService
=
deviceTypeService
;
this
.
deviceInstanceService
=
deviceInstanceService
;
}
/**
* @description 新增设备实例
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 10:36
**/
@PostMapping
(
"/add"
)
public
EResponse
add
(
@RequestBody
@Validated
(
ValidatorInsert
.
class
)
DeviceInstanceForm
form
)
throws
EException
{
if
(!
deviceTypeService
.
isValidTypeId
(
form
.
getDeviceTypeId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的设备类型ID"
);
}
Long
id
=
deviceInstanceService
.
insertDeviceInstance
(
form
);
JSONObject
data
=
new
JSONObject
();
data
.
put
(
"id"
,
id
);
return
EResponse
.
ok
(
data
);
}
/**
* @description 删除设备实例
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 10:51
**/
@PostMapping
(
"/delete"
)
public
EResponse
delete
(
@RequestBody
@Validated
(
ValidatorDelete
.
class
)
DeviceInstanceForm
form
)
throws
EException
{
if
(!
deviceInstanceService
.
isValidId
(
form
.
getId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的设备ID"
);
}
deviceInstanceService
.
deleteInstance
(
form
.
getId
());
return
EResponse
.
ok
();
}
/**
* @description 编辑设备实例信息
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 11:03
**/
@PostMapping
(
"/edit"
)
public
EResponse
edit
(
@RequestBody
@Validated
(
ValidatorUpdate
.
class
)
DeviceInstanceForm
form
)
throws
EException
{
if
(!
deviceInstanceService
.
isValidId
(
form
.
getId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的设备ID"
);
}
deviceInstanceService
.
updateInstance
(
form
);
return
EResponse
.
ok
();
}
/**
* @description 分页查询设备实例
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 14:08
**/
@PostMapping
(
"/list"
)
public
EResponse
list
(
@RequestBody
@Validated
(
ValidatorList
.
class
)
DeviceInstanceForm
form
)
throws
EException
{
return
EResponse
.
ok
(
deviceInstanceService
.
getInstance4Page
(
form
));
}
/**
* @description 通过设备类型ID获取设备列表
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/10 10:24
**/
@PostMapping
(
"/getInstanceByDeviceTypeId"
)
public
EResponse
getInstanceByDeviceTypeId
(
@RequestBody
@Validated
(
ValidatorListById
.
class
)
DeviceInstanceForm
form
)
throws
EException
{
if
(!
deviceTypeService
.
isValidTypeId
(
form
.
getDeviceTypeId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的设备类型ID"
);
}
return
EResponse
.
ok
(
deviceInstanceService
.
getInstanceListByTypeId
(
form
.
getDeviceTypeId
()));
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/controller/DeviceTypeController.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
controller
;
import
com.alibaba.fastjson.JSONObject
;
import
com.esv.datacenter.iot.common.exception.EException
;
import
com.esv.datacenter.iot.common.response.ECode
;
import
com.esv.datacenter.iot.common.response.EResponse
;
import
com.esv.datacenter.iot.common.validator.groups.*
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceDataMapForm
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceTypeForm
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceDataMapService
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceInstanceService
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceTypeService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Objects
;
/**
* @description: 设备类型Controller
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/06 20:14
* @version:1.0
*/
@Slf4j
@RestController
@RequestMapping
(
"/deviceModel"
)
@Validated
public
class
DeviceTypeController
{
private
DeviceTypeService
deviceTypeService
;
private
DeviceInstanceService
deviceInstanceService
;
private
DeviceDataMapService
deviceDataMapService
;
public
DeviceTypeController
(
DeviceTypeService
deviceTypeService
,
DeviceInstanceService
deviceInstanceService
,
DeviceDataMapService
deviceDataMapService
)
{
this
.
deviceTypeService
=
deviceTypeService
;
this
.
deviceInstanceService
=
deviceInstanceService
;
this
.
deviceDataMapService
=
deviceDataMapService
;
}
/**
* @description 新增设备类型
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 20:16
**/
@PostMapping
(
"/add"
)
public
EResponse
add
(
@RequestBody
@Validated
(
ValidatorInsert
.
class
)
DeviceTypeForm
form
)
throws
EException
{
Long
id
=
deviceTypeService
.
insertDeviceType
(
form
);
JSONObject
data
=
new
JSONObject
();
data
.
put
(
"id"
,
id
);
return
EResponse
.
ok
(
data
);
}
/**
* @description 更新设备类型信息
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 20:20
**/
@PostMapping
(
"/edit"
)
public
EResponse
edit
(
@RequestBody
@Validated
(
ValidatorUpdate
.
class
)
DeviceTypeForm
form
)
throws
EException
{
if
(!
deviceTypeService
.
isValidTypeId
(
form
.
getId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的设备类型ID"
);
}
deviceTypeService
.
updateDeviceType
(
form
);
return
EResponse
.
ok
();
}
/**
* @description 删除设备类型
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 20:35
**/
@PostMapping
(
"/delete"
)
public
EResponse
delete
(
@RequestBody
@Validated
(
ValidatorDelete
.
class
)
DeviceTypeForm
form
)
throws
EException
{
if
(!
deviceTypeService
.
isValidTypeId
(
form
.
getId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的设备类型ID"
);
}
int
deviceInstanceCount
=
deviceInstanceService
.
getInstanceCountByTypeId
(
form
.
getId
());
if
(
0
<
deviceInstanceCount
)
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"该设备类型有设备实例,不能删除"
);
}
deviceTypeService
.
deleteDeviceType
(
form
.
getId
());
return
EResponse
.
ok
();
}
/**
* @description 分页查询设备类型
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 9:45
**/
@PostMapping
(
"/list"
)
public
EResponse
list
(
@RequestBody
@Validated
(
ValidatorList
.
class
)
DeviceTypeForm
form
)
throws
EException
{
String
name
=
StringUtils
.
trimToNull
(
form
.
getName
());
if
(
Objects
.
isNull
(
name
))
{
form
.
setName
(
null
);
}
else
{
form
.
setName
(
"%"
+
name
+
"%"
);
}
return
EResponse
.
ok
(
deviceTypeService
.
getType4Page
(
form
));
}
/**
* @description 获取设备类型列表
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 9:57
**/
@PostMapping
(
"/all"
)
public
EResponse
all
()
throws
EException
{
return
EResponse
.
ok
(
deviceTypeService
.
getTypeList
());
}
/**
* @description 通过设备类型ID获取对应的数据模型列表
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 14:39
**/
@PostMapping
(
"/getDataModelByDeviceTypeId"
)
public
EResponse
getDataModelByDeviceTypeId
(
@RequestBody
@Validated
(
ValidatorDetail
.
class
)
DeviceTypeForm
form
)
throws
EException
{
if
(!
deviceTypeService
.
isValidTypeId
(
form
.
getId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的设备类型ID"
);
}
return
EResponse
.
ok
(
deviceTypeService
.
getDataModelByDeviceTypeId
(
form
.
getId
()));
}
/**
* @description 保存设备类型与数据模型的映射记录
* @param form:
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 14:46
**/
@PostMapping
(
"/saveDataModelByDeviceTypeId"
)
public
EResponse
saveDataModelByDeviceTypeId
(
@RequestBody
@Validated
(
ValidatorInsert
.
class
)
DeviceDataMapForm
form
)
throws
EException
{
if
(!
deviceTypeService
.
isValidTypeId
(
form
.
getDeviceTypeId
()))
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"无效的设备类型ID"
);
}
deviceDataMapService
.
saveDeviceDataMap
(
form
.
getDeviceTypeId
(),
form
.
getDataModelId
());
return
EResponse
.
ok
();
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/dao/DeviceDataMapDao.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
dao
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceDataMapEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* 设备数据模型映射表
* 设备
类型-
数据模型映射表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 1
0:23:24
* @date 2020-08-06 1
6:15:13
*/
@Mapper
public
interface
DeviceDataMapDao
extends
BaseMapper
<
DeviceDataMapEntity
>
{
/**
* @description 通过设备类型ID获取对应的数据模型列表
* @param entity:
* @return java.util.List<com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 14:31
**/
List
<
DataModelEntity
>
selectDataModelByDeviceTypeId
(
DeviceDataMapEntity
entity
);
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/dao/DeviceInstanceDao.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceInstanceEntity
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceInstanceForm
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 设备实例表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 16:15:13
*/
@Mapper
public
interface
DeviceInstanceDao
extends
BaseMapper
<
DeviceInstanceEntity
>
{
/**
* @description 分页查询
* @param page:
* @param queryObj:
* @return com.baomidou.mybatisplus.core.metadata.IPage
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 13:37
**/
IPage
select4Page
(
IPage
page
,
DeviceInstanceForm
queryObj
);
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/dao/DeviceModelDao.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
dao
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 设备模型表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 10:23:24
*/
@Mapper
public
interface
DeviceModelDao
extends
BaseMapper
<
DeviceModelEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/dao/DeviceModelInstanceDao.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
dao
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelInstanceEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 设备模型实例表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 10:23:24
*/
@Mapper
public
interface
DeviceModelInstanceDao
extends
BaseMapper
<
DeviceModelInstanceEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/dao/DeviceModelPropertyDao.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
dao
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelPropertyEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 设备模型属性表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 10:23:24
*/
@Mapper
public
interface
DeviceModelPropertyDao
extends
BaseMapper
<
DeviceModelPropertyEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/dao/DeviceTypeDao.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
dao
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.esv.datacenter.iot.module.datamodel.form.DataModelForm
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceTypeEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceTypeForm
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 设备类型表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 16:15:13
*/
@Mapper
public
interface
DeviceTypeDao
extends
BaseMapper
<
DeviceTypeEntity
>
{
/**
* @description 分页查询
* @param page:
* @param queryObj:
* @return com.baomidou.mybatisplus.core.metadata.IPage
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 9:34
**/
IPage
select4Page
(
IPage
page
,
DeviceTypeForm
queryObj
);
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/dto/DeviceInstanceDto.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
dto
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.util.Date
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/07 13:43
* @version:1.0
*/
@Data
public
class
DeviceInstanceDto
{
/**
*
*/
private
Long
id
;
/**
* 设备类型ID
*/
private
Long
deviceTypeId
;
/**
* 设备类型名称
*/
private
String
deviceTypeName
;
/**
* 设备名称
*/
private
String
name
;
/**
* 设备描述
*/
private
String
description
;
/**
* 设备业务ID
*/
private
String
businessId
;
/**
* 设备型号
*/
private
String
deviceModel
;
/**
* 创建者
*/
private
String
createUser
;
/**
* 修改者
*/
private
String
updateUser
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/entity/DeviceDataMapEntity.java
View file @
aac981f3
...
...
@@ -10,11 +10,11 @@ import java.util.Date;
import
lombok.Data
;
/**
* 设备数据模型映射表
* 设备
类型-
数据模型映射表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 1
0:23:24
* @date 2020-08-06 1
6:15:13
*/
@Data
@TableName
(
"device_data_map"
)
...
...
@@ -37,9 +37,9 @@ public class DeviceDataMapEntity implements Serializable {
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Long
departmentId
;
/**
* 设备
模
型ID
* 设备
类
型ID
*/
private
Long
device
Model
Id
;
private
Long
device
Type
Id
;
/**
* 数据模型ID
*/
...
...
src/main/java/com/esv/datacenter/iot/module/devicemodel/entity/Device
Model
InstanceEntity.java
→
src/main/java/com/esv/datacenter/iot/module/devicemodel/entity/DeviceInstanceEntity.java
View file @
aac981f3
...
...
@@ -7,15 +7,15 @@ import java.util.Date;
import
lombok.Data
;
/**
* 设备
模型
实例表
* 设备实例表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 1
0:23:24
* @date 2020-08-06 1
6:15:13
*/
@Data
@TableName
(
"device_
model_
instance"
)
public
class
Device
Model
InstanceEntity
implements
Serializable
{
@TableName
(
"device_instance"
)
public
class
DeviceInstanceEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
...
...
@@ -34,17 +34,25 @@ public class DeviceModelInstanceEntity implements Serializable {
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Long
departmentId
;
/**
*
模
型ID
*
设备类
型ID
*/
private
Long
model
Id
;
private
Long
deviceType
Id
;
/**
*
实例
名称
*
设备
名称
*/
private
String
name
;
/**
*
实例
描述
*
设备
描述
*/
private
String
description
;
/**
* 设备业务ID
*/
private
String
businessId
;
/**
* 设备型号
*/
private
String
deviceModel
;
/**
* 是否删除:0-未删除、1-已删除
*/
...
...
src/main/java/com/esv/datacenter/iot/module/devicemodel/entity/DeviceModelPropertyEntity.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
entity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
java.io.Serializable
;
import
java.util.Date
;
import
lombok.Data
;
/**
* 设备模型属性表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 10:23:24
*/
@Data
@TableName
(
"device_model_property"
)
public
class
DeviceModelPropertyEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
*
*/
@TableId
private
Long
id
;
/**
* 租户ID
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Long
tenantId
;
/**
* 部门ID
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Long
departmentId
;
/**
* 模型ID
*/
private
Long
modelId
;
/**
* 属性代码
*/
private
String
propertyCode
;
/**
* 属性名称
*/
private
String
propertyName
;
/**
* 属性类型(字典表)
*/
private
Integer
propertyType
;
/**
* 属性默认值
*/
private
String
propertyDefaultValue
;
/**
* 属性单位
*/
private
String
propertyUnit
;
/**
* 排列序号
*/
private
Long
sortNum
;
/**
* 是否删除:0-未删除、1-已删除
*/
@TableLogic
private
Boolean
deleted
;
/**
* 创建者
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
String
createUser
;
/**
* 修改者
*/
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
private
String
updateUser
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/entity/Device
Model
Entity.java
→
src/main/java/com/esv/datacenter/iot/module/devicemodel/entity/Device
Type
Entity.java
View file @
aac981f3
...
...
@@ -7,15 +7,15 @@ import java.util.Date;
import
lombok.Data
;
/**
* 设备
模
型表
* 设备
类
型表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 1
0:23:24
* @date 2020-08-06 1
6:15:13
*/
@Data
@TableName
(
"device_
model
"
)
public
class
Device
Model
Entity
implements
Serializable
{
@TableName
(
"device_
type
"
)
public
class
Device
Type
Entity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
...
...
@@ -34,11 +34,11 @@ public class DeviceModelEntity implements Serializable {
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Long
departmentId
;
/**
*
模型
名称
* 名称
*/
private
String
name
;
/**
*
模型
描述
* 描述
*/
private
String
description
;
/**
...
...
src/main/java/com/esv/datacenter/iot/module/devicemodel/form/DeviceDataMapForm.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
form
;
import
com.esv.datacenter.iot.common.validator.groups.ValidatorInsert
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
javax.validation.constraints.NotNull
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/07 14:40
* @version:1.0
*/
@Data
public
class
DeviceDataMapForm
{
/**
* 设备类型ID
*/
@NotNull
(
message
=
"[设备类型ID]不能为空"
,
groups
=
{
ValidatorInsert
.
class
})
private
Long
deviceTypeId
;
/**
* 数据模型ID
*/
private
String
dataModelId
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/form/DeviceInstanceForm.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
form
;
import
com.esv.datacenter.iot.common.validator.groups.*
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
org.hibernate.validator.constraints.Length
;
import
org.hibernate.validator.constraints.Range
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/07 10:21
* @version:1.0
*/
@Data
public
class
DeviceInstanceForm
{
/**
*
*/
@NotNull
(
message
=
"[设备ID]不能为空"
,
groups
=
{
ValidatorDelete
.
class
,
ValidatorUpdate
.
class
})
private
Long
id
;
/**
* 设备类型ID
*/
@NotNull
(
message
=
"[设备类型ID]不能为空"
,
groups
=
{
ValidatorInsert
.
class
,
ValidatorList
.
class
,
ValidatorListById
.
class
})
private
Long
deviceTypeId
;
/**
* 设备名称
*/
@Length
(
max
=
50
,
message
=
"[设备名称]长度不合法"
,
groups
=
{
ValidatorInsert
.
class
,
ValidatorUpdate
.
class
,
ValidatorList
.
class
})
@NotBlank
(
message
=
"[设备名称]不能为空"
,
groups
=
{
ValidatorInsert
.
class
})
private
String
name
;
/**
* 设备描述
*/
@Length
(
max
=
200
,
message
=
"[设备描述]长度不合法"
,
groups
=
{
ValidatorInsert
.
class
,
ValidatorUpdate
.
class
})
@NotBlank
(
message
=
"[设备描述]不能为空"
,
groups
=
{
ValidatorInsert
.
class
})
private
String
description
;
/**
* 设备业务ID
*/
@Length
(
max
=
50
,
message
=
"[设备业务ID]长度不合法"
,
groups
=
{
ValidatorInsert
.
class
,
ValidatorUpdate
.
class
,
ValidatorList
.
class
})
private
String
businessId
;
/**
* 设备型号
*/
@Length
(
max
=
200
,
message
=
"[设备型号]长度不合法"
,
groups
=
{
ValidatorInsert
.
class
,
ValidatorUpdate
.
class
,
ValidatorList
.
class
})
private
String
deviceModel
;
/**
* 页码
**/
@Range
(
min
=
1
,
max
=
65535
,
message
=
"无效的pageNum"
,
groups
=
{
ValidatorList
.
class
})
@NotNull
(
message
=
"参数pageNum不能为空"
,
groups
=
{
ValidatorList
.
class
})
private
Integer
pageNum
;
/**
* 每页记录条数
**/
@Range
(
min
=
1
,
max
=
100
,
message
=
"pageSize"
,
groups
=
{
ValidatorList
.
class
})
@NotNull
(
message
=
"参数pageSize不能为空"
,
groups
=
{
ValidatorList
.
class
})
private
Integer
pageSize
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/form/DeviceTypeForm.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
form
;
import
com.esv.datacenter.iot.common.validator.groups.*
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
org.hibernate.validator.constraints.Length
;
import
org.hibernate.validator.constraints.Range
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/06 16:34
* @version:1.0
*/
@Data
public
class
DeviceTypeForm
{
/**
*
*/
@NotNull
(
message
=
"[设备类型ID]不能为空"
,
groups
=
{
ValidatorUpdate
.
class
,
ValidatorDelete
.
class
,
ValidatorDetail
.
class
})
private
Long
id
;
/**
* 名称
*/
@Length
(
max
=
50
,
message
=
"[设备类型名称]长度不合法"
,
groups
=
{
ValidatorInsert
.
class
,
ValidatorUpdate
.
class
,
ValidatorList
.
class
})
@NotBlank
(
message
=
"[设备类型名称]不能为空"
,
groups
=
{
ValidatorInsert
.
class
})
private
String
name
;
/**
* 描述
*/
@Length
(
max
=
200
,
message
=
"[设备类型描述]长度不合法"
,
groups
=
{
ValidatorInsert
.
class
,
ValidatorUpdate
.
class
})
@NotBlank
(
message
=
"[设备类型描述]不能为空"
,
groups
=
{
ValidatorInsert
.
class
})
private
String
description
;
/**
* 页码
**/
@Range
(
min
=
1
,
max
=
65535
,
message
=
"无效的pageNum"
,
groups
=
{
ValidatorList
.
class
})
@NotNull
(
message
=
"参数pageNum不能为空"
,
groups
=
{
ValidatorList
.
class
})
private
Integer
pageNum
;
/**
* 每页记录条数
**/
@Range
(
min
=
1
,
max
=
100
,
message
=
"pageSize"
,
groups
=
{
ValidatorList
.
class
})
@NotNull
(
message
=
"参数pageSize不能为空"
,
groups
=
{
ValidatorList
.
class
})
private
Integer
pageSize
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/DeviceDataMapService.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceDataMapEntity
;
import
java.util.List
;
/**
* 设备数据模型映射Service
* 设备
类型-
数据模型映射Service
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 1
0:23:24
* @date 2020-08-06 1
6:15:13
*/
public
interface
DeviceDataMapService
extends
IService
<
DeviceDataMapEntity
>
{
/**
* @description 统计指定数据模型的使用数量
* @param dataModelId:
* @return int
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 16:25
**/
int
getCountByDataModelId
(
Long
dataModelId
);
/**
* @description 通过设备类型ID删除映射记录
* @param deviceTypeId:
* @return void
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 20:30
**/
void
deleteByDeviceTypeId
(
Long
deviceTypeId
);
/**
* @description 保存设备类型与数据模型的映射记录
* @param deviceTypeId:
* @param dataModelIds:
* @return void
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 14:18
**/
void
saveDeviceDataMap
(
Long
deviceTypeId
,
String
dataModelIds
);
/**
* @description 通过设备类型ID获取对应的数据模型列表
* @param deviceTypeId:
* @return java.util.List<com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 14:26
**/
List
<
DataModelEntity
>
getDataModelByDeviceTypeId
(
Long
deviceTypeId
);
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/DeviceInstanceService.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.common.vo.PageResultVO
;
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.vo.DeviceInstanceVO
;
import
java.util.List
;
/**
* 设备实例Service
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 16:15:13
*/
public
interface
DeviceInstanceService
extends
IService
<
DeviceInstanceEntity
>
{
/**
* @description 查询指定设备类型ID的设备实例数量
* @param deviceTypeId:
* @return int
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 20:25
**/
int
getInstanceCountByTypeId
(
Long
deviceTypeId
);
/**
* @description 新增设备实例
* @param form:
* @return java.lang.Long
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 10:40
**/
Long
insertDeviceInstance
(
DeviceInstanceForm
form
);
/**
* @description 删除设备实例
* @param id:
* @return void
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 10:49
**/
void
deleteInstance
(
Long
id
);
/**
* @description 编辑设备实例信息
* @param form:
* @return void
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 10:58
**/
void
updateInstance
(
DeviceInstanceForm
form
);
/**
* @description 判断是否有效实例ID
* @param id:
* @return java.lang.Boolean
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 10:47
**/
Boolean
isValidId
(
Long
id
);
/**
* @description 通过ID获取设备实例
* @param id:
* @return com.esv.datacenter.iot.module.devicemodel.entity.DeviceInstanceEntity
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 10:47
**/
DeviceInstanceEntity
getInstanceById
(
Long
id
);
/**
* @description 分页查询
* @param form:
* @return com.esv.datacenter.iot.common.vo.PageResultVO
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 13:39
**/
PageResultVO
getInstance4Page
(
DeviceInstanceForm
form
);
/**
* @description 查询指定设备类型ID的设备实例列表
* @param deviceTypeId:
* @return int
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 20:25
**/
List
<
DeviceInstanceVO
>
getInstanceListByTypeId
(
Long
deviceTypeId
);
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/DeviceModelInstanceService.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelInstanceEntity
;
/**
* 设备模型实例Service
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 10:23:24
*/
public
interface
DeviceModelInstanceService
extends
IService
<
DeviceModelInstanceEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/DeviceModelPropertyService.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelPropertyEntity
;
/**
* 设备模型属性Service
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 10:23:24
*/
public
interface
DeviceModelPropertyService
extends
IService
<
DeviceModelPropertyEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/DeviceModelService.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelEntity
;
/**
* 设备模型Service
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 10:23:24
*/
public
interface
DeviceModelService
extends
IService
<
DeviceModelEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/DeviceTypeService.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.common.vo.PageResultVO
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataModelBriefVO
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataModelDetailVO
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceTypeEntity
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceTypeForm
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeBriefVO
;
import
lombok.Data
;
import
java.util.List
;
/**
* 设备类型Service
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-08-06 16:15:13
*/
public
interface
DeviceTypeService
extends
IService
<
DeviceTypeEntity
>
{
/**
* @description 新增设备类型
* @param form:
* @return java.lang.Long
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 19:55
**/
Long
insertDeviceType
(
DeviceTypeForm
form
);
/**
* @description 更新设备类型
* @param form:
* @return void
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 20:08
**/
void
updateDeviceType
(
DeviceTypeForm
form
);
/**
* @description 通过设备类型ID查询记录
* @param id:
* @return com.esv.datacenter.iot.module.devicemodel.entity.DeviceTypeEntity
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 20:22
**/
DeviceTypeEntity
getDeviceTypeById
(
Long
id
);
/**
* @description 删除设备类型
* @param id:
* @return void
* @author huangChaobin@esvtek.com
* @createTime 2020/08/06 20:24
**/
void
deleteDeviceType
(
Long
id
);
/**
* @description 分页查询
* @param form:
* @return com.esv.datacenter.iot.common.vo.PageResultVO
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 9:35
**/
PageResultVO
getType4Page
(
DeviceTypeForm
form
);
/**
* @description 是否有效的设备类型ID
* @param id:
* @return java.lang.Boolean
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 9:48
**/
Boolean
isValidTypeId
(
Long
id
);
/**
* @description 获取设备类型列表
* @return java.util.List<com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeBriefVO>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 9:54
**/
List
<
DeviceTypeBriefVO
>
getTypeList
();
/**
* @description 通过设备类型ID获取对应的数据模型列表
* @param deviceTypeId:
* @return java.util.List<com.esv.datacenter.iot.module.datamodel.vo.DataModelDetailVO>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/07 14:34
**/
List
<
DataModelDetailVO
>
getDataModelByDeviceTypeId
(
Long
deviceTypeId
);
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/impl/DeviceDataMapServiceImpl.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity
;
import
com.esv.datacenter.iot.module.devicemodel.dao.DeviceDataMapDao
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceDataMapEntity
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceDataMapService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.Objects
;
@Service
(
"deviceDataMapService"
)
public
class
DeviceDataMapServiceImpl
extends
ServiceImpl
<
DeviceDataMapDao
,
DeviceDataMapEntity
>
implements
DeviceDataMapService
{
@Override
public
int
getCountByDataModelId
(
Long
dataModelId
)
{
return
this
.
getBaseMapper
().
selectCount
(
new
LambdaQueryWrapper
<
DeviceDataMapEntity
>()
.
eq
(
DeviceDataMapEntity:
:
getDataModelId
,
dataModelId
));
}
@Override
public
void
deleteByDeviceTypeId
(
Long
deviceTypeId
)
{
this
.
getBaseMapper
().
delete
(
new
LambdaQueryWrapper
<
DeviceDataMapEntity
>()
.
eq
(
DeviceDataMapEntity:
:
getDeviceTypeId
,
deviceTypeId
));
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
saveDeviceDataMap
(
Long
deviceTypeId
,
String
dataModelIds
)
{
this
.
getBaseMapper
().
delete
(
new
LambdaQueryWrapper
<
DeviceDataMapEntity
>().
eq
(
DeviceDataMapEntity:
:
getDeviceTypeId
,
deviceTypeId
));
if
(
Objects
.
nonNull
(
StringUtils
.
trimToNull
(
dataModelIds
)))
{
String
[]
dataModelIdList
=
dataModelIds
.
split
(
","
);
for
(
String
dataModelId
:
dataModelIdList
)
{
DeviceDataMapEntity
entity
=
new
DeviceDataMapEntity
();
entity
.
setDeviceTypeId
(
deviceTypeId
);
entity
.
setDataModelId
(
Long
.
parseLong
(
dataModelId
));
this
.
getBaseMapper
().
insert
(
entity
);
}
}
}
@Override
public
List
<
DataModelEntity
>
getDataModelByDeviceTypeId
(
Long
deviceTypeId
)
{
DeviceDataMapEntity
entity
=
new
DeviceDataMapEntity
();
entity
.
setDeviceTypeId
(
deviceTypeId
);
return
this
.
getBaseMapper
().
selectDataModelByDeviceTypeId
(
entity
);
}
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/impl/DeviceInstanceServiceImpl.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.common.exception.EException
;
import
com.esv.datacenter.iot.common.response.ECode
;
import
com.esv.datacenter.iot.common.vo.PageResultVO
;
import
com.esv.datacenter.iot.module.devicemodel.dao.DeviceInstanceDao
;
import
com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto
;
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.service.DeviceInstanceService
;
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.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
@Service
(
"deviceInstanceService"
)
public
class
DeviceInstanceServiceImpl
extends
ServiceImpl
<
DeviceInstanceDao
,
DeviceInstanceEntity
>
implements
DeviceInstanceService
{
@Override
public
int
getInstanceCountByTypeId
(
Long
deviceTypeId
)
{
return
this
.
getBaseMapper
().
selectCount
(
new
LambdaQueryWrapper
<
DeviceInstanceEntity
>()
.
eq
(
DeviceInstanceEntity:
:
getDeviceTypeId
,
deviceTypeId
));
}
@Override
public
Long
insertDeviceInstance
(
DeviceInstanceForm
form
)
{
int
count
=
this
.
getBaseMapper
().
selectCount
(
new
LambdaQueryWrapper
<
DeviceInstanceEntity
>()
.
eq
(
DeviceInstanceEntity:
:
getName
,
form
.
getName
()));
if
(
0
<
count
)
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"设备名称["
+
form
.
getName
()
+
"]已存在"
);
}
DeviceInstanceEntity
entity
=
new
DeviceInstanceEntity
();
BeanUtils
.
copyProperties
(
form
,
entity
);
this
.
getBaseMapper
().
insert
(
entity
);
return
entity
.
getId
();
}
@Override
public
void
deleteInstance
(
Long
id
)
{
this
.
getBaseMapper
().
deleteById
(
id
);
}
@Override
public
void
updateInstance
(
DeviceInstanceForm
form
)
{
if
(
Objects
.
nonNull
(
StringUtils
.
trimToNull
(
form
.
getName
())))
{
int
count
=
this
.
getBaseMapper
().
selectCount
(
new
LambdaQueryWrapper
<
DeviceInstanceEntity
>()
.
ne
(
DeviceInstanceEntity:
:
getId
,
form
.
getId
())
.
eq
(
DeviceInstanceEntity:
:
getName
,
form
.
getName
()));
if
(
0
<
count
)
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"设备名称["
+
form
.
getName
()
+
"]已存在"
);
}
}
DeviceInstanceEntity
entity
=
new
DeviceInstanceEntity
();
BeanUtils
.
copyProperties
(
form
,
entity
);
this
.
getBaseMapper
().
updateById
(
entity
);
}
@Override
public
Boolean
isValidId
(
Long
id
)
{
DeviceInstanceEntity
entity
=
this
.
getInstanceById
(
id
);
if
(
Objects
.
isNull
(
entity
))
{
return
false
;
}
else
{
return
true
;
}
}
@Override
public
DeviceInstanceEntity
getInstanceById
(
Long
id
)
{
return
this
.
getBaseMapper
().
selectById
(
id
);
}
@Override
public
PageResultVO
getInstance4Page
(
DeviceInstanceForm
form
)
{
IPage
<
DeviceInstanceDto
>
page
=
new
Page
<>(
form
.
getPageNum
(),
form
.
getPageSize
());
this
.
baseMapper
.
select4Page
(
page
,
form
);
List
<
DeviceInstanceDto
>
entityList
=
page
.
getRecords
();
List
<
DeviceInstanceVO
>
voList
=
new
ArrayList
<>();
for
(
DeviceInstanceDto
entity
:
entityList
)
{
DeviceInstanceVO
vo
=
new
DeviceInstanceVO
();
BeanUtils
.
copyProperties
(
entity
,
vo
);
vo
.
setCreateTime
(
entity
.
getCreateTime
().
getTime
());
vo
.
setUpdateTime
(
entity
.
getUpdateTime
().
getTime
());
voList
.
add
(
vo
);
}
return
new
PageResultVO
(
page
,
voList
);
}
@Override
public
List
<
DeviceInstanceVO
>
getInstanceListByTypeId
(
Long
deviceTypeId
)
{
List
<
DeviceInstanceEntity
>
entityList
=
this
.
getBaseMapper
().
selectList
(
new
LambdaQueryWrapper
<
DeviceInstanceEntity
>()
.
eq
(
DeviceInstanceEntity:
:
getDeviceTypeId
,
deviceTypeId
)
.
orderByAsc
(
DeviceInstanceEntity:
:
getName
));
List
<
DeviceInstanceVO
>
voList
=
new
ArrayList
<>();
for
(
DeviceInstanceEntity
entity
:
entityList
)
{
DeviceInstanceVO
vo
=
new
DeviceInstanceVO
();
BeanUtils
.
copyProperties
(
entity
,
vo
);
vo
.
setCreateTime
(
entity
.
getCreateTime
().
getTime
());
vo
.
setUpdateTime
(
entity
.
getUpdateTime
().
getTime
());
voList
.
add
(
vo
);
}
return
voList
;
}
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/impl/DeviceModelInstanceServiceImpl.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.module.devicemodel.dao.DeviceModelInstanceDao
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelInstanceEntity
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceModelInstanceService
;
import
org.springframework.stereotype.Service
;
@Service
(
"deviceModelInstanceService"
)
public
class
DeviceModelInstanceServiceImpl
extends
ServiceImpl
<
DeviceModelInstanceDao
,
DeviceModelInstanceEntity
>
implements
DeviceModelInstanceService
{
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/impl/DeviceModelPropertyServiceImpl.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.module.devicemodel.dao.DeviceModelPropertyDao
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelPropertyEntity
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceModelPropertyService
;
import
org.springframework.stereotype.Service
;
@Service
(
"deviceModelPropertyService"
)
public
class
DeviceModelPropertyServiceImpl
extends
ServiceImpl
<
DeviceModelPropertyDao
,
DeviceModelPropertyEntity
>
implements
DeviceModelPropertyService
{
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/impl/DeviceModelServiceImpl.java
deleted
100644 → 0
View file @
7d773f3a
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.module.devicemodel.dao.DeviceModelDao
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelEntity
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceModelService
;
import
org.springframework.stereotype.Service
;
@Service
(
"deviceModelService"
)
public
class
DeviceModelServiceImpl
extends
ServiceImpl
<
DeviceModelDao
,
DeviceModelEntity
>
implements
DeviceModelService
{
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/devicemodel/service/impl/DeviceTypeServiceImpl.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.common.exception.EException
;
import
com.esv.datacenter.iot.common.response.ECode
;
import
com.esv.datacenter.iot.common.vo.PageResultVO
;
import
com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity
;
import
com.esv.datacenter.iot.module.datamodel.service.DataModelPropertyService
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataModelBriefVO
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataModelDetailVO
;
import
com.esv.datacenter.iot.module.datamodel.vo.DataModelPropertyVO
;
import
com.esv.datacenter.iot.module.devicemodel.dao.DeviceTypeDao
;
import
com.esv.datacenter.iot.module.devicemodel.entity.DeviceTypeEntity
;
import
com.esv.datacenter.iot.module.devicemodel.form.DeviceTypeForm
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceDataMapService
;
import
com.esv.datacenter.iot.module.devicemodel.service.DeviceTypeService
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeBriefVO
;
import
com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeVO
;
import
org.springframework.beans.BeanUtils
;
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.Objects
;
@Service
(
"deviceTypeService"
)
public
class
DeviceTypeServiceImpl
extends
ServiceImpl
<
DeviceTypeDao
,
DeviceTypeEntity
>
implements
DeviceTypeService
{
@Autowired
private
DeviceDataMapService
deviceDataMapService
;
@Autowired
private
DataModelPropertyService
dataModelPropertyService
;
@Override
public
Long
insertDeviceType
(
DeviceTypeForm
form
)
{
// 判断设备名称是否有重复
int
count
=
this
.
getBaseMapper
().
selectCount
(
new
LambdaQueryWrapper
<
DeviceTypeEntity
>()
.
eq
(
DeviceTypeEntity:
:
getName
,
form
.
getName
()));
if
(
0
<
count
)
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"设备类型["
+
form
.
getName
()
+
"]已存在"
);
}
DeviceTypeEntity
entity
=
new
DeviceTypeEntity
();
BeanUtils
.
copyProperties
(
form
,
entity
);
this
.
getBaseMapper
().
insert
(
entity
);
return
entity
.
getId
();
}
@Override
public
void
updateDeviceType
(
DeviceTypeForm
form
)
{
// 判断设备名称是否有重复
int
count
=
this
.
getBaseMapper
().
selectCount
(
new
LambdaQueryWrapper
<
DeviceTypeEntity
>()
.
ne
(
DeviceTypeEntity:
:
getId
,
form
.
getId
())
.
eq
(
DeviceTypeEntity:
:
getName
,
form
.
getName
()));
if
(
0
<
count
)
{
throw
new
EException
(
ECode
.
BIZ_PARAM_ERROR
.
code
(),
"设备类型["
+
form
.
getName
()
+
"]已存在"
);
}
DeviceTypeEntity
entity
=
new
DeviceTypeEntity
();
BeanUtils
.
copyProperties
(
form
,
entity
);
this
.
getBaseMapper
().
updateById
(
entity
);
}
@Override
public
DeviceTypeEntity
getDeviceTypeById
(
Long
id
)
{
return
this
.
getBaseMapper
().
selectById
(
id
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteDeviceType
(
Long
id
)
{
// 删除设备类型记录
this
.
getBaseMapper
().
deleteById
(
id
);
// 删除设备类型与数据类型对应的映射记录
this
.
deviceDataMapService
.
deleteByDeviceTypeId
(
id
);
}
@Override
public
PageResultVO
getType4Page
(
DeviceTypeForm
form
)
{
IPage
<
DeviceTypeEntity
>
page
=
new
Page
<>(
form
.
getPageNum
(),
form
.
getPageSize
());
this
.
baseMapper
.
select4Page
(
page
,
form
);
List
<
DeviceTypeEntity
>
entityList
=
page
.
getRecords
();
List
<
DeviceTypeVO
>
voList
=
new
ArrayList
<>();
for
(
DeviceTypeEntity
entity
:
entityList
)
{
DeviceTypeVO
vo
=
new
DeviceTypeVO
();
BeanUtils
.
copyProperties
(
entity
,
vo
);
vo
.
setCreateTime
(
entity
.
getCreateTime
().
getTime
());
vo
.
setUpdateTime
(
entity
.
getUpdateTime
().
getTime
());
voList
.
add
(
vo
);
}
return
new
PageResultVO
(
page
,
voList
);
}
@Override
public
Boolean
isValidTypeId
(
Long
id
)
{
DeviceTypeEntity
entity
=
this
.
getDeviceTypeById
(
id
);
if
(
Objects
.
isNull
(
entity
))
{
return
false
;
}
else
{
return
true
;
}
}
@Override
public
List
<
DeviceTypeBriefVO
>
getTypeList
()
{
List
<
DeviceTypeEntity
>
entityList
=
this
.
getBaseMapper
().
selectList
(
new
LambdaQueryWrapper
<
DeviceTypeEntity
>()
.
orderByAsc
(
DeviceTypeEntity:
:
getName
));
List
<
DeviceTypeBriefVO
>
voList
=
new
ArrayList
<>();
for
(
DeviceTypeEntity
entity
:
entityList
)
{
DeviceTypeBriefVO
vo
=
new
DeviceTypeBriefVO
();
BeanUtils
.
copyProperties
(
entity
,
vo
);
voList
.
add
(
vo
);
}
return
voList
;
}
@Override
public
List
<
DataModelDetailVO
>
getDataModelByDeviceTypeId
(
Long
deviceTypeId
)
{
List
<
DataModelEntity
>
entityList
=
deviceDataMapService
.
getDataModelByDeviceTypeId
(
deviceTypeId
);
List
<
DataModelDetailVO
>
voList
=
new
ArrayList
<>();
for
(
DataModelEntity
entity
:
entityList
)
{
DataModelDetailVO
vo
=
new
DataModelDetailVO
();
BeanUtils
.
copyProperties
(
entity
,
vo
);
vo
.
setPropertyList
(
dataModelPropertyService
.
getModelPropertyList
(
entity
.
getId
()));
voList
.
add
(
vo
);
}
return
voList
;
}
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/devicemodel/vo/DeviceInstanceVO.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
vo
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/07 13:41
* @version:1.0
*/
@Data
public
class
DeviceInstanceVO
{
/**
*
*/
private
Long
id
;
/**
* 设备类型ID
*/
private
Long
deviceTypeId
;
/**
* 设备类型名称
*/
private
String
deviceTypeName
;
/**
* 设备名称
*/
private
String
name
;
/**
* 设备描述
*/
private
String
description
;
/**
* 设备业务ID
*/
private
String
businessId
;
/**
* 设备型号
*/
private
String
deviceModel
;
/**
* 创建者
*/
private
String
createUser
;
/**
* 修改者
*/
private
String
updateUser
;
/**
* 创建时间
*/
private
Long
createTime
;
/**
* 修改时间
*/
private
Long
updateTime
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/vo/DeviceTypeBriefVO.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
vo
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/07 9:39
* @version:1.0
*/
@Data
public
class
DeviceTypeBriefVO
{
/**
*
*/
private
Long
id
;
/**
* 名称
*/
private
String
name
;
/**
* 描述
*/
private
String
description
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/devicemodel/vo/DeviceTypeVO.java
0 → 100644
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
devicemodel
.
vo
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/07 9:39
* @version:1.0
*/
@Data
public
class
DeviceTypeVO
{
/**
*
*/
private
Long
id
;
/**
* 名称
*/
private
String
name
;
/**
* 描述
*/
private
String
description
;
/**
* 创建者
*/
private
String
createUser
;
/**
* 修改者
*/
private
String
updateUser
;
/**
* 创建时间
*/
private
Long
createTime
;
/**
* 修改时间
*/
private
Long
updateTime
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/test/controller/TestController.java
View file @
aac981f3
package
com
.
esv
.
datacenter
.
iot
.
module
.
test
.
controller
;
import
com.alibaba.fastjson.JSONArray
;
import
com.esv.datacenter.iot.common.component.RedisComponent
;
import
com.esv.datacenter.iot.common.response.EResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringEscapeUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @description:
* @project: freight-base-service
...
...
@@ -20,9 +26,30 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j
public
class
TestController
{
@Autowired
RedisComponent
redisComponent
;
@GetMapping
(
"/ping"
)
public
EResponse
ping
()
{
return
EResponse
.
ok
();
}
@GetMapping
(
"/getCache"
)
public
EResponse
getCache
(
HttpServletRequest
request
)
{
String
key
=
request
.
getParameter
(
"key"
);
String
str
=
(
String
)
redisComponent
.
get
(
key
);
log
.
info
(
str
);
return
EResponse
.
ok
(
str
);
}
@GetMapping
(
"/getCache4List"
)
public
EResponse
getCache4List
(
HttpServletRequest
request
)
{
String
key
=
request
.
getParameter
(
"key"
);
String
str
=
(
String
)
redisComponent
.
get
(
key
);
log
.
info
(
str
);
JSONArray
array
=
JSONArray
.
parseArray
(
str
);
log
.
info
(
array
.
toJSONString
());
return
EResponse
.
ok
(
array
);
}
}
src/main/resources/application-dev.yml
View file @
aac981f3
...
...
@@ -71,7 +71,7 @@ feign-base-service-name: datacenter-base-service
db
:
dict
:
table-field
:
map
:
1-string,2-number,3-
boolean
map
:
1-string,2-number,3-
integer,4-boolean,5-date,6-time,7-datetime
timescale
:
data-source
:
jdbc-url
:
jdbc:postgresql://192.168.31.248:5432/iot
...
...
@@ -84,5 +84,5 @@ timescale:
maximum-pool-size
:
1
max-lifetime
:
0
table-field
:
map
:
string-text,number-numeric,boolean-bit(1)
table-prefix
:
iot_model_
\ No newline at end of file
map
:
string-text,number-numeric,integer-int8,boolean-bit(1),date-date,time-int4,datetime-timestamptz
table-prefix
:
iot_data_model_
\ No newline at end of file
src/main/resources/application-local.yml
View file @
aac981f3
...
...
@@ -71,7 +71,7 @@ feign-base-service-name: datacenter-base-service
db
:
dict
:
table-field
:
map
:
1-string,2-number,3-
boolean
map
:
1-string,2-number,3-
integer,4-boolean,5-date,6-time,7-datetime
timescale
:
data-source
:
jdbc-url
:
jdbc:postgresql://192.168.31.248:5432/iot
...
...
@@ -84,7 +84,5 @@ timescale:
maximum-pool-size
:
10
max-lifetime
:
0
table-field
:
map
:
string-text,number-numeric,
boolean-bit(1)
map
:
string-text,number-numeric,
integer-int8,boolean-bit(1),date-date,time-int4,datetime-timestamptz
table-prefix
:
iot_data_model_
\ No newline at end of file
rdbms
:
table-prefix
:
iot_device_model_
\ No newline at end of file
src/main/resources/mapper/datamodel/DataModelAlarmRuleDao.xml
View file @
aac981f3
...
...
@@ -20,5 +20,12 @@
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
<select
id=
"selectAll"
resultType=
"com.esv.datacenter.iot.module.datamodel.dto.DataModelAlarmRuleDto"
>
select a.id, a.model_id, a.property_id, a.rule_expression, a.alarm_level, a.threshold,
b.property_code, b.property_name, b.property_type, b.property_default_value, b.property_unit
from data_model_alarm_rule a, data_model_property b
where a.model_id = b.model_id and a.property_id = b.id
ORDER BY model_id ASC
</select>
</mapper>
\ No newline at end of file
src/main/resources/mapper/datamodel/DataModelDao.xml
View file @
aac981f3
...
...
@@ -21,7 +21,7 @@
<select
id=
"select4Page"
parameterType=
"com.esv.datacenter.iot.module.datamodel.form.DataModelForm"
resultType=
"com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity"
>
select *
from
base_object
_model
from
data
_model
where deleted = false
<if
test=
"queryObj.name != null"
>
and name like #{queryObj.name}
...
...
@@ -30,7 +30,7 @@
</select>
<update
id=
"logicDeleteModel"
parameterType=
"com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity"
>
update
base_object
_model
update
data
_model
set deleted = #{deleted}
where id = #{id}
</update>
...
...
src/main/resources/mapper/datamodel/DataModelPropertyDao.xml
View file @
aac981f3
...
...
@@ -23,7 +23,7 @@
</resultMap>
<update
id=
"logicDeleteModelProperty"
parameterType=
"com.esv.datacenter.iot.module.datamodel.entity.DataModelPropertyEntity"
>
update
base_object
_model_property
update
data
_model_property
set deleted = #{deleted}
where model_id = #{modelId}
</update>
...
...
src/main/resources/mapper/devicemodel/DeviceDataMapDao.xml
View file @
aac981f3
...
...
@@ -8,7 +8,7 @@
<result
property=
"id"
column=
"id"
/>
<result
property=
"tenantId"
column=
"tenant_id"
/>
<result
property=
"departmentId"
column=
"department_id"
/>
<result
property=
"device
ModelId"
column=
"device_model
_id"
/>
<result
property=
"device
TypeId"
column=
"device_type
_id"
/>
<result
property=
"dataModelId"
column=
"data_model_id"
/>
<result
property=
"createUser"
column=
"create_user"
/>
<result
property=
"updateUser"
column=
"update_user"
/>
...
...
@@ -16,5 +16,12 @@
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
<select
id=
"selectDataModelByDeviceTypeId"
parameterType=
"com.esv.datacenter.iot.module.devicemodel.entity.DeviceDataMapEntity"
resultType=
"com.esv.datacenter.iot.module.datamodel.entity.DataModelEntity"
>
select b.id, b.name, b.description
from device_data_map a, data_model b
where a.data_model_id = b.id and a.device_type_id = #{deviceTypeId}
ORDER BY b.name ASC
</select>
</mapper>
\ No newline at end of file
src/main/resources/mapper/devicemodel/Device
Model
InstanceDao.xml
→
src/main/resources/mapper/devicemodel/DeviceInstanceDao.xml
View file @
aac981f3
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.esv.datacenter.iot.module.devicemodel.dao.Device
Model
InstanceDao"
>
<mapper
namespace=
"com.esv.datacenter.iot.module.devicemodel.dao.DeviceInstanceDao"
>
<!-- 可根据自己的需求,是否要使用 -->
<resultMap
type=
"com.esv.datacenter.iot.module.devicemodel.entity.Device
ModelInstanceEntity"
id=
"deviceModel
InstanceMap"
>
<resultMap
type=
"com.esv.datacenter.iot.module.devicemodel.entity.Device
InstanceEntity"
id=
"device
InstanceMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"tenantId"
column=
"tenant_id"
/>
<result
property=
"departmentId"
column=
"department_id"
/>
<result
property=
"
modelId"
column=
"model
_id"
/>
<result
property=
"
deviceTypeId"
column=
"device_type
_id"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"description"
column=
"description"
/>
<result
property=
"businessId"
column=
"business_id"
/>
<result
property=
"deviceModel"
column=
"device_model"
/>
<result
property=
"deleted"
column=
"deleted"
/>
<result
property=
"createUser"
column=
"create_user"
/>
<result
property=
"updateUser"
column=
"update_user"
/>
...
...
@@ -18,5 +20,25 @@
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
<!-- 分页查询 -->
<select
id=
"select4Page"
parameterType=
"com.esv.datacenter.iot.module.devicemodel.form.DeviceInstanceForm"
resultType=
"com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto"
>
select a.*, b.name as deviceTypeName
from device_instance a, device_type b
where a.device_type_id = b.id and a.deleted = false
<if
test=
"queryObj.deviceTypeId != null"
>
and a.device_type_id = #{queryObj.deviceTypeId}
</if>
<if
test=
"queryObj.name != null"
>
and a.name like CONCAT('%', #{queryObj.name}, '%')
</if>
<if
test=
"queryObj.businessId != null"
>
and a.business_id like CONCAT('%', #{queryObj.businessId}, '%')
</if>
<if
test=
"queryObj.deviceModel != null"
>
and a.device_model like CONCAT('%', #{queryObj.deviceModel}, '%')
</if>
ORDER BY a.name ASC
</select>
</mapper>
\ No newline at end of file
src/main/resources/mapper/devicemodel/DeviceModelPropertyDao.xml
deleted
100644 → 0
View file @
7d773f3a
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.esv.datacenter.iot.module.devicemodel.dao.DeviceModelPropertyDao"
>
<!-- 可根据自己的需求,是否要使用 -->
<resultMap
type=
"com.esv.datacenter.iot.module.devicemodel.entity.DeviceModelPropertyEntity"
id=
"deviceModelPropertyMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"tenantId"
column=
"tenant_id"
/>
<result
property=
"departmentId"
column=
"department_id"
/>
<result
property=
"modelId"
column=
"model_id"
/>
<result
property=
"propertyCode"
column=
"property_code"
/>
<result
property=
"propertyName"
column=
"property_name"
/>
<result
property=
"propertyType"
column=
"property_type"
/>
<result
property=
"propertyDefaultValue"
column=
"property_default_value"
/>
<result
property=
"propertyUnit"
column=
"property_unit"
/>
<result
property=
"sortNum"
column=
"sort_num"
/>
<result
property=
"deleted"
column=
"deleted"
/>
<result
property=
"createUser"
column=
"create_user"
/>
<result
property=
"updateUser"
column=
"update_user"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
</mapper>
\ No newline at end of file
src/main/resources/mapper/devicemodel/Device
Model
Dao.xml
→
src/main/resources/mapper/devicemodel/Device
Type
Dao.xml
View file @
aac981f3
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.esv.datacenter.iot.module.devicemodel.dao.Device
Model
Dao"
>
<mapper
namespace=
"com.esv.datacenter.iot.module.devicemodel.dao.Device
Type
Dao"
>
<!-- 可根据自己的需求,是否要使用 -->
<resultMap
type=
"com.esv.datacenter.iot.module.devicemodel.entity.Device
ModelEntity"
id=
"deviceModel
Map"
>
<resultMap
type=
"com.esv.datacenter.iot.module.devicemodel.entity.Device
TypeEntity"
id=
"deviceType
Map"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"tenantId"
column=
"tenant_id"
/>
<result
property=
"departmentId"
column=
"department_id"
/>
...
...
@@ -17,5 +17,16 @@
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
<!-- 分页查询 -->
<select
id=
"select4Page"
parameterType=
"com.esv.datacenter.iot.module.devicemodel.form.DeviceTypeForm"
resultType=
"com.esv.datacenter.iot.module.devicemodel.entity.DeviceTypeEntity"
>
select *
from device_type
where deleted = false
<if
test=
"queryObj.name != null"
>
and name like #{queryObj.name}
</if>
ORDER BY name ASC
</select>
</mapper>
\ No newline at end of file
src/test/java/com/esv/datacenter/iot/module/datamodel/controller/DataModelControllerTest.java
View file @
aac981f3
...
...
@@ -3,8 +3,8 @@ package com.esv.datacenter.iot.module.datamodel.controller;
import
com.alibaba.fastjson.JSONObject
;
import
com.esv.datacenter.iot.BaseTestController
;
import
com.esv.datacenter.iot.common.response.ECode
;
import
com.esv.datacenter.iot.module.datamodel.form.DataModelPropertyForm
;
import
com.esv.datacenter.iot.module.datamodel.form.DataModelForm
;
import
com.esv.datacenter.iot.module.datamodel.form.DataModelPropertyForm
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Assert
;
import
org.junit.FixMethodOrder
;
...
...
@@ -39,24 +39,99 @@ import java.util.List;
public
class
DataModelControllerTest
extends
BaseTestController
{
/**
*
*
创建数据模型
**/
@Test
public
void
a1_add_success_test
()
throws
Exception
{
String
url
=
"/
m
odel/add"
;
String
url
=
"/
dataM
odel/add"
;
// 构造数据
DataModelForm
form
=
new
DataModelForm
();
form
.
setName
(
"
测试模型
"
);
form
.
setName
(
"
hcb-测试模型-1639
"
);
form
.
setDescription
(
"这是一个测试模型"
);
List
<
DataModelPropertyForm
>
propertyList
=
new
ArrayList
<>();
DataModelPropertyForm
dataModelPropertyForm
=
new
DataModelPropertyForm
();
dataModelPropertyForm
.
setPropertyCode
(
"
id
"
);
dataModelPropertyForm
.
setPropertyName
(
"
主键
"
);
dataModelPropertyForm
.
setPropertyCode
(
"
t1
"
);
dataModelPropertyForm
.
setPropertyName
(
"
string
"
);
dataModelPropertyForm
.
setPropertyType
(
1
);
dataModelPropertyForm
.
setPropertyDefaultValue
(
"hello world"
);
propertyList
.
add
(
dataModelPropertyForm
);
form
.
setPropertyList
(
propertyList
);
dataModelPropertyForm
=
new
DataModelPropertyForm
();
dataModelPropertyForm
.
setPropertyCode
(
"t2"
);
dataModelPropertyForm
.
setPropertyName
(
"number"
);
dataModelPropertyForm
.
setPropertyType
(
2
);
dataModelPropertyForm
.
setPropertyDefaultValue
(
"3.14"
);
propertyList
.
add
(
dataModelPropertyForm
);
form
.
setPropertyList
(
propertyList
);
dataModelPropertyForm
=
new
DataModelPropertyForm
();
dataModelPropertyForm
.
setPropertyCode
(
"t3"
);
dataModelPropertyForm
.
setPropertyName
(
"integer"
);
dataModelPropertyForm
.
setPropertyType
(
3
);
dataModelPropertyForm
.
setPropertyDefaultValue
(
"100"
);
propertyList
.
add
(
dataModelPropertyForm
);
form
.
setPropertyList
(
propertyList
);
dataModelPropertyForm
=
new
DataModelPropertyForm
();
dataModelPropertyForm
.
setPropertyCode
(
"t4"
);
dataModelPropertyForm
.
setPropertyName
(
"boolean"
);
dataModelPropertyForm
.
setPropertyType
(
4
);
dataModelPropertyForm
.
setPropertyDefaultValue
(
"true"
);
propertyList
.
add
(
dataModelPropertyForm
);
form
.
setPropertyList
(
propertyList
);
dataModelPropertyForm
=
new
DataModelPropertyForm
();
dataModelPropertyForm
.
setPropertyCode
(
"t5"
);
dataModelPropertyForm
.
setPropertyName
(
"date"
);
dataModelPropertyForm
.
setPropertyType
(
5
);
dataModelPropertyForm
.
setPropertyDefaultValue
(
"1970-01-01"
);
propertyList
.
add
(
dataModelPropertyForm
);
form
.
setPropertyList
(
propertyList
);
dataModelPropertyForm
=
new
DataModelPropertyForm
();
dataModelPropertyForm
.
setPropertyCode
(
"t6"
);
dataModelPropertyForm
.
setPropertyName
(
"time"
);
dataModelPropertyForm
.
setPropertyType
(
6
);
dataModelPropertyForm
.
setPropertyDefaultValue
(
"00:00:00"
);
propertyList
.
add
(
dataModelPropertyForm
);
form
.
setPropertyList
(
propertyList
);
dataModelPropertyForm
=
new
DataModelPropertyForm
();
dataModelPropertyForm
.
setPropertyCode
(
"t7"
);
dataModelPropertyForm
.
setPropertyName
(
"datetime"
);
dataModelPropertyForm
.
setPropertyType
(
7
);
dataModelPropertyForm
.
setPropertyDefaultValue
(
"1970-01-01 00:00:00"
);
propertyList
.
add
(
dataModelPropertyForm
);
form
.
setPropertyList
(
propertyList
);
MvcResult
mvcResult
=
this
.
getMockMvc
().
perform
(
MockMvcRequestBuilders
.
post
(
url
)
.
contentType
(
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
.
headers
(
this
.
getDefaultHttpHeaders
())
.
content
(
form
.
toString
()))
.
andDo
(
MockMvcResultHandlers
.
print
())
.
andExpect
(
MockMvcResultMatchers
.
status
().
isOk
())
.
andReturn
();
String
responseStr
=
mvcResult
.
getResponse
().
getContentAsString
();
log
.
info
(
responseStr
);
JSONObject
result
=
JSONObject
.
parseObject
(
responseStr
);
Assert
.
assertEquals
(
ECode
.
SUCCESS
.
code
(),
result
.
getIntValue
(
"code"
));
}
/**
* 删除数据模型
**/
@Test
public
void
b1_delete_success_test
()
throws
Exception
{
String
url
=
"/dataModel/delete"
;
// 构造数据
DataModelForm
form
=
new
DataModelForm
();
form
.
setId
(
4L
);
MvcResult
mvcResult
=
this
.
getMockMvc
().
perform
(
MockMvcRequestBuilders
.
post
(
url
)
.
contentType
(
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
.
headers
(
this
.
getDefaultHttpHeaders
())
...
...
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