Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
1fbfdcde
提交
1fbfdcde
authored
5月 06, 2022
作者:
涂茂林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:电子围栏报警规则
上级
aadc9b1f
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
637 行增加
和
10 行删除
+637
-10
InformMannerEnum.java
.../java/com/yiring/app/constant/alarm/InformMannerEnum.java
+63
-0
LocationAlarmRule.java
...ava/com/yiring/app/domain/location/LocationAlarmRule.java
+22
-5
LocationAlarmRuleRepository.java
...ring/app/domain/location/LocationAlarmRuleRepository.java
+16
-0
LocationAlarmRuleAddParam.java
...ng/app/param/location/rule/LocationAlarmRuleAddParam.java
+83
-0
LocationAlarmRuleModifyParam.java
...app/param/location/rule/LocationAlarmRuleModifyParam.java
+80
-0
LocationAlarmRuleParam.java
...iring/app/param/location/rule/LocationAlarmRuleParam.java
+37
-0
LocationAlarmRuleService.java
...g/app/service/location/rule/LocationAlarmRuleService.java
+54
-0
LocationAlarmRuleServiceImpl.java
...vice/location/rule/impl/LocationAlarmRuleServiceImpl.java
+136
-0
LocationAlarmRuleVo.java
.../com/yiring/app/vo/location/rule/LocationAlarmRuleVo.java
+84
-0
AlarmTypeController.java
...in/java/com/yiring/app/web/alarm/AlarmTypeController.java
+1
-1
LocationFenceController.java
...iring/app/web/location/fence/LocationFenceController.java
+1
-1
LocationAlarmRuleController.java
...ng/app/web/location/rule/LocationAlarmRuleController.java
+59
-2
LocationFenceRuleController.java
...ng/app/web/location/rule/LocationFenceRuleController.java
+1
-1
没有找到文件。
app/src/main/java/com/yiring/app/constant/alarm/InformMannerEnum.java
0 → 100644
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
constant
.
alarm
;
import
com.yiring.app.vo.CodeNameVo
;
import
java.util.ArrayList
;
import
java.util.List
;
import
lombok.Getter
;
/**
* 通知方式枚举
* @author tml
* @version 1.0
* @date 2022/5/5 16:05
*/
public
enum
InformMannerEnum
{
/**
* app消息通知
*/
APP
(
1
,
"app消息"
),
/**
* 短信通知
*/
MESSAGES
(
2
,
"短信通知"
),
/**
* 电话通知
*/
PHONE
(
3
,
"电话通知"
);
@Getter
private
final
Integer
code
;
@Getter
private
final
String
name
;
private
static
final
List
<
CodeNameVo
>
LIST
;
static
{
LIST
=
new
ArrayList
<
CodeNameVo
>();
for
(
InformMannerEnum
item
:
values
())
{
LIST
.
add
(
new
CodeNameVo
(
item
.
code
,
item
.
name
));
}
}
InformMannerEnum
(
Integer
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
String
getByCode
(
Integer
code
)
{
for
(
InformMannerEnum
item
:
values
())
{
if
(
item
.
getCode
().
equals
(
code
))
{
return
item
.
getName
();
}
}
return
"未知通知类型"
;
}
public
static
List
<
CodeNameVo
>
getAll
()
{
return
LIST
;
}
}
app/src/main/java/com/yiring/app/domain/location/LocationAlarmRule.java
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
location
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.persistence.Entity
;
import
javax.persistence.JoinColumn
;
import
javax.persistence.ManyToOne
;
import
javax.persistence.Table
;
import
java.util.Set
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
...
...
@@ -28,7 +28,7 @@ import org.hibernate.annotations.Where;
@FieldNameConstants
@Where
(
clause
=
"deleted = false"
)
@Entity
@Table
(
name
=
"BS_LOCATION_
FENC
E"
)
@Table
(
name
=
"BS_LOCATION_
ALARM_RUL
E"
)
@Comment
(
"电子围栏的报警规则"
)
public
class
LocationAlarmRule
extends
BasicEntity
implements
Serializable
{
...
...
@@ -45,4 +45,21 @@ public class LocationAlarmRule extends BasicEntity implements Serializable {
@ManyToOne
@JoinColumn
(
name
=
"fence_id"
)
private
LocationFence
locationFence
;
@Comment
(
"接收人集合"
)
@ManyToMany
@ToString
.
Exclude
private
Set
<
User
>
users
;
@Comment
(
"通知方式"
)
private
String
informManner
;
@Comment
(
"报警类型"
)
@ManyToOne
@JoinColumn
(
name
=
"alarm_type_id"
)
private
AlarmType
alarmType
;
@Comment
(
value
=
"是否删除"
)
@Column
(
nullable
=
false
)
Boolean
deleted
;
}
app/src/main/java/com/yiring/app/domain/location/LocationAlarmRuleRepository.java
0 → 100644
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
location
;
import
java.io.Serializable
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.stereotype.Repository
;
/**
* @author tml
* @version 1.0
* @date 2022/5/5 15:13
*/
@Repository
public
interface
LocationAlarmRuleRepository
extends
JpaRepository
<
LocationAlarmRule
,
Serializable
>,
JpaSpecificationExecutor
<
LocationAlarmRule
>
{}
app/src/main/java/com/yiring/app/param/location/rule/LocationAlarmRuleAddParam.java
0 → 100644
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.location.LocationAlarmRule
;
import
com.yiring.app.domain.location.LocationFence
;
import
com.yiring.auth.domain.user.User
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.HashSet
;
import
java.util.Set
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/5 15:41
*/
@ApiModel
(
"添加配置报警类别的报警规则"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
LocationAlarmRuleAddParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
388296602724939033L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"地图id不能为空"
)
private
Long
mapId
;
@ApiModelProperty
(
value
=
"地图名称"
,
example
=
"一层"
,
required
=
true
)
@NotEmpty
(
message
=
"地图名称不能为空"
)
private
String
mapName
;
@ApiModelProperty
(
value
=
"电子围栏id"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"电子围栏id不能为空"
)
private
Long
fenceId
;
@ApiModelProperty
(
value
=
"报警类型id"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"报警类型id不能为空"
)
private
Long
alarmId
;
@ApiModelProperty
(
value
=
"接收人集合"
,
required
=
true
)
@NotNull
(
message
=
"接收人id不能为空"
)
private
Set
<
Long
>
users
;
@ApiModelProperty
(
value
=
"通知方式集合"
,
required
=
true
)
@NotNull
(
message
=
"通知方式不能为空"
)
private
Set
<
Integer
>
informManner
;
public
LocationAlarmRule
transform
()
{
LocationFence
locationFence
=
LocationFence
.
builder
().
id
(
fenceId
).
build
();
HashSet
<
User
>
set
=
new
HashSet
<>();
for
(
Long
item
:
this
.
users
)
{
set
.
add
(
User
.
builder
().
id
(
item
).
build
());
}
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmId
).
build
();
String
json
=
JSON
.
toJSONString
(
informManner
);
return
LocationAlarmRule
.
builder
()
.
mapId
(
mapId
)
.
mapName
(
mapName
)
.
locationFence
(
locationFence
)
.
users
(
set
)
.
alarmType
(
alarmType
)
.
informManner
(
json
)
.
deleted
(
false
)
.
build
();
}
}
app/src/main/java/com/yiring/app/param/location/rule/LocationAlarmRuleModifyParam.java
0 → 100644
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
import
com.alibaba.fastjson.JSON
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.location.LocationAlarmRule
;
import
com.yiring.app.domain.location.LocationFence
;
import
com.yiring.auth.domain.user.User
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.HashSet
;
import
java.util.Set
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/5 15:41
*/
@ApiModel
(
"修改配置报警类别的报警规则"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
LocationAlarmRuleModifyParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
388296602724939033L
;
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
,
required
=
true
)
@NotEmpty
(
message
=
"规则id不能为空"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
,
required
=
true
)
private
Long
mapId
;
@ApiModelProperty
(
value
=
"地图名称"
,
example
=
"一层"
,
required
=
true
)
private
String
mapName
;
@ApiModelProperty
(
value
=
"报警类型id"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"报警类型id不能为空"
)
private
Long
alarmId
;
@ApiModelProperty
(
value
=
"电子围栏id"
,
example
=
"1"
,
required
=
true
)
private
Long
fenceId
;
@ApiModelProperty
(
value
=
"接收人集合"
,
required
=
true
)
private
Set
<
Long
>
users
;
@ApiModelProperty
(
value
=
"通知方式集合"
,
required
=
true
)
private
Set
<
Integer
>
informManner
;
public
LocationAlarmRule
transform
()
{
LocationFence
locationFence
=
LocationFence
.
builder
().
id
(
fenceId
).
build
();
HashSet
<
User
>
set
=
new
HashSet
<>();
for
(
Long
item
:
this
.
users
)
{
set
.
add
(
User
.
builder
().
id
(
item
).
build
());
}
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmId
).
build
();
String
json
=
JSON
.
toJSONString
(
informManner
);
return
LocationAlarmRule
.
builder
()
.
id
(
id
)
.
mapId
(
mapId
)
.
mapName
(
mapName
)
.
locationFence
(
locationFence
)
.
users
(
set
)
.
alarmType
(
alarmType
)
.
informManner
(
json
)
.
deleted
(
false
)
.
build
();
}
}
app/src/main/java/com/yiring/app/param/location/rule/LocationAlarmRuleParam.java
0 → 100644
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.Set
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/5 15:17
*/
@ApiModel
(
"电子围栏报警规则的条件参数"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
LocationAlarmRuleParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
6107090049902663508L
;
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
)
private
Long
mapId
;
@ApiModelProperty
(
value
=
"围栏id"
,
example
=
"1"
)
private
Long
fenceId
;
@ApiModelProperty
(
value
=
"通知方式"
,
example
=
"1"
)
private
Set
<
Integer
>
informManner
;
}
app/src/main/java/com/yiring/app/service/location/rule/LocationAlarmRuleService.java
0 → 100644
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
location
.
rule
;
import
com.yiring.app.param.location.rule.LocationAlarmRuleAddParam
;
import
com.yiring.app.param.location.rule.LocationAlarmRuleModifyParam
;
import
com.yiring.app.param.location.rule.LocationAlarmRuleParam
;
import
com.yiring.app.vo.location.rule.LocationAlarmRuleVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
/**
* @author tml
* @version 1.0
* @date 2022/5/5 16:55
*/
public
interface
LocationAlarmRuleService
{
/**
* 添加一条规则
* @param param 规则信息
* @return 是否成功
*/
Result
<
String
>
addRule
(
LocationAlarmRuleAddParam
param
);
/**
* 修改一条规则
* @param param 规则信息
* @return 是否成功
*/
Result
<
String
>
modifyRule
(
LocationAlarmRuleModifyParam
param
);
/**
* 删除一条规则
* @param idParam 规则id
* @return 是否成功
*/
Result
<
String
>
removeRule
(
IdParam
idParam
);
/**
* 根据id查询规则
* @param idParam 规则id
* @return 规则信息
*/
Result
<
LocationAlarmRuleVo
>
findById
(
IdParam
idParam
);
/**
* 根据条件查询规则信息
* @param param 条件
* @param pageParam 分页参数
* @return 规则信息
*/
Result
<
PageVo
<
LocationAlarmRuleVo
>>
findByCondition
(
LocationAlarmRuleParam
param
,
PageParam
pageParam
);
}
app/src/main/java/com/yiring/app/service/location/rule/impl/LocationAlarmRuleServiceImpl.java
0 → 100644
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
location
.
rule
.
impl
;
import
com.yiring.app.domain.location.LocationAlarmRule
;
import
com.yiring.app.domain.location.LocationAlarmRuleRepository
;
import
com.yiring.app.param.location.rule.LocationAlarmRuleAddParam
;
import
com.yiring.app.param.location.rule.LocationAlarmRuleModifyParam
;
import
com.yiring.app.param.location.rule.LocationAlarmRuleParam
;
import
com.yiring.app.service.location.rule.LocationAlarmRuleService
;
import
com.yiring.app.util.JpaUtil
;
import
com.yiring.app.vo.location.rule.LocationAlarmRuleVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.persistence.criteria.Predicate
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
/**
* @author tml
* @version 1.0
* @date 2022/5/5 16:59
*/
@Service
@Slf4j
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
class
LocationAlarmRuleServiceImpl
implements
LocationAlarmRuleService
{
@Resource
private
LocationAlarmRuleRepository
locationAlarmRuleRepository
;
@Override
public
Result
<
String
>
addRule
(
LocationAlarmRuleAddParam
param
)
{
LocationAlarmRule
locationAlarmRule
=
param
.
transform
();
locationAlarmRuleRepository
.
saveAndFlush
(
locationAlarmRule
);
return
Result
.
ok
();
}
@Override
public
Result
<
String
>
modifyRule
(
LocationAlarmRuleModifyParam
param
)
{
LocationAlarmRule
locationAlarmRule
=
param
.
transform
();
Optional
<
LocationAlarmRule
>
optional
=
locationAlarmRuleRepository
.
findById
(
param
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"要修改的规则不存在"
);
}
JpaUtil
.
copyNotNullProperties
(
locationAlarmRule
,
optional
.
get
());
return
Result
.
ok
();
}
@Override
public
Result
<
String
>
removeRule
(
IdParam
idParam
)
{
Optional
<
LocationAlarmRule
>
optional
=
locationAlarmRuleRepository
.
findById
(
idParam
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"要修改的规则不存在"
);
}
optional
.
get
().
setDeleted
(
true
);
return
Result
.
ok
();
}
@Override
public
Result
<
LocationAlarmRuleVo
>
findById
(
IdParam
idParam
)
{
Optional
<
LocationAlarmRule
>
optional
=
locationAlarmRuleRepository
.
findById
(
idParam
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"查询的规则不存在"
);
}
LocationAlarmRuleVo
ruleVo
=
LocationAlarmRuleVo
.
transform
(
optional
.
get
());
return
Result
.
ok
(
ruleVo
);
}
@Override
public
Result
<
PageVo
<
LocationAlarmRuleVo
>>
findByCondition
(
LocationAlarmRuleParam
param
,
PageParam
pageParam
)
{
Pageable
pageable
=
PageParam
.
toPageable
(
pageParam
);
Specification
<
LocationAlarmRule
>
specification
=
(
root
,
query
,
criteriaBuilder
)
->
{
List
<
Predicate
>
list
=
new
ArrayList
<>();
if
(
param
.
getMapId
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
"mapId"
),
param
.
getMapId
()));
}
if
(
param
.
getFenceId
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
"locationFence"
),
param
.
getFenceId
()));
}
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
return
criteriaBuilder
.
and
(
array
);
};
Set
<
Integer
>
informManner
=
param
.
getInformManner
();
if
(
CollectionUtils
.
isEmpty
(
informManner
))
{
Page
<
LocationAlarmRule
>
rulePage
=
locationAlarmRuleRepository
.
findAll
(
specification
,
pageable
);
List
<
LocationAlarmRuleVo
>
voList
=
rulePage
.
get
()
.
map
(
LocationAlarmRuleVo:
:
transform
)
.
collect
(
Collectors
.
toList
());
PageVo
<
LocationAlarmRuleVo
>
pageVo
=
PageVo
.
build
(
voList
,
rulePage
.
getTotalElements
());
return
Result
.
ok
(
pageVo
);
}
List
<
LocationAlarmRule
>
list
=
locationAlarmRuleRepository
.
findAll
(
specification
,
pageable
.
getSort
());
List
<
LocationAlarmRule
>
ruleList
=
list
.
stream
()
.
filter
(
e
->
{
for
(
Integer
item
:
informManner
)
{
boolean
contains
=
e
.
getInformManner
().
contains
(
item
.
toString
());
if
(!
contains
)
{
return
false
;
}
}
return
true
;
})
.
collect
(
Collectors
.
toList
());
int
pageBegin
=
(
pageParam
.
getPageNo
()
-
1
)
*
pageParam
.
getPageSize
();
int
pageEnd
=
pageBegin
+
10
;
if
(
pageBegin
>
ruleList
.
size
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"分页参数异常"
);
}
if
(
pageEnd
>
ruleList
.
size
())
{
pageEnd
=
ruleList
.
size
();
}
List
<
LocationAlarmRule
>
pageList
=
ruleList
.
subList
(
pageBegin
,
pageEnd
);
List
<
LocationAlarmRuleVo
>
page
=
pageList
.
stream
()
.
map
(
LocationAlarmRuleVo:
:
transform
)
.
collect
(
Collectors
.
toList
());
PageVo
<
LocationAlarmRuleVo
>
pageVo
=
PageVo
.
build
(
page
,
ruleList
.
size
());
return
Result
.
ok
(
pageVo
);
}
}
app/src/main/java/com/yiring/app/vo/location/rule/LocationAlarmRuleVo.java
0 → 100644
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
location
.
rule
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.yiring.app.constant.alarm.InformMannerEnum
;
import
com.yiring.app.domain.location.LocationAlarmRule
;
import
com.yiring.app.vo.CodeNameVo
;
import
com.yiring.app.vo.user.UserVo
;
import
com.yiring.auth.domain.user.User
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/5 15:27
*/
@ApiModel
(
"电子围栏报警规则信息"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
LocationAlarmRuleVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
8291558248133685661L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
,
required
=
true
)
private
Long
id
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
,
required
=
true
)
private
Long
mapId
;
@ApiModelProperty
(
value
=
"地图名称"
,
example
=
"一层"
,
required
=
true
)
private
String
mapName
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"电子围栏id"
,
example
=
"1"
,
required
=
true
)
private
Long
fenceId
;
@ApiModelProperty
(
value
=
"电子围栏名称"
,
example
=
"1"
,
required
=
true
)
private
String
fenceName
;
@ApiModelProperty
(
value
=
"接收人集合"
,
required
=
true
)
private
List
<
UserVo
>
users
;
@ApiModelProperty
(
value
=
"通知方式集合"
,
required
=
true
)
private
List
<
CodeNameVo
>
informManner
;
public
static
LocationAlarmRuleVo
transform
(
LocationAlarmRule
locationAlarmRule
)
{
Set
<
User
>
users
=
locationAlarmRule
.
getUsers
();
List
<
UserVo
>
userVos
=
users
.
stream
().
map
(
UserVo:
:
transformDept
).
collect
(
Collectors
.
toList
());
String
informManner
=
locationAlarmRule
.
getInformManner
();
List
<
Integer
>
list
=
JSON
.
parseArray
(
informManner
,
Integer
.
class
);
ArrayList
<
CodeNameVo
>
codeNameVos
=
new
ArrayList
<>();
for
(
Integer
item
:
list
)
{
codeNameVos
.
add
(
new
CodeNameVo
(
item
,
InformMannerEnum
.
getByCode
(
item
)));
}
return
LocationAlarmRuleVo
.
builder
()
.
id
(
locationAlarmRule
.
getId
())
.
mapId
(
locationAlarmRule
.
getMapId
())
.
mapName
(
locationAlarmRule
.
getMapName
())
.
fenceId
(
locationAlarmRule
.
getLocationFence
().
getId
())
.
fenceName
(
locationAlarmRule
.
getLocationFence
().
getName
())
.
users
(
userVos
)
.
informManner
(
codeNameVos
)
.
build
();
}
}
app/src/main/java/com/yiring/app/web/alarm/AlarmTypeController.java
浏览文件 @
1fbfdcde
...
...
@@ -37,7 +37,7 @@ import org.springframework.web.bind.annotation.RestController;
*/
@Slf4j
@Validated
@Api
(
tags
=
"AlarmType
Controller
(报警类型)"
)
@Api
(
tags
=
"AlarmType(报警类型)"
)
@RestController
@RequestMapping
(
"/alarm/type"
)
public
class
AlarmTypeController
{
...
...
app/src/main/java/com/yiring/app/web/location/fence/LocationFenceController.java
浏览文件 @
1fbfdcde
...
...
@@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.*;
* @date 2022/4/28 11:50
*/
@RestController
@Api
(
tags
=
"
LocationFenceController
(围栏信息)"
)
@Api
(
tags
=
"
Fence
(围栏信息)"
)
@Validated
@Slf4j
@RequestMapping
(
"location/fence"
)
...
...
app/src/main/java/com/yiring/app/web/location/rule/LocationAlarmRuleController.java
浏览文件 @
1fbfdcde
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
web
.
location
.
rule
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.param.location.rule.LocationAlarmRuleAddParam
;
import
com.yiring.app.param.location.rule.LocationAlarmRuleModifyParam
;
import
com.yiring.app.param.location.rule.LocationAlarmRuleParam
;
import
com.yiring.app.service.location.rule.LocationAlarmRuleService
;
import
com.yiring.app.vo.location.rule.LocationAlarmRuleVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
java.util.Objects
;
import
javax.annotation.Resource
;
import
javax.validation.Valid
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -14,7 +30,48 @@ import org.springframework.web.bind.annotation.RestController;
*/
@Slf4j
@Validated
@Api
(
tags
=
"
LocationAlarmRuleController(电子围栏报警规则
)"
)
@Api
(
tags
=
"
AlarmRule(电子围栏报警规则,配置报警给谁
)"
)
@RestController
@RequestMapping
(
"/alarm/rule"
)
public
class
LocationAlarmRuleController
{}
public
class
LocationAlarmRuleController
{
@Resource
private
LocationAlarmRuleService
locationAlarmRuleService
;
@ApiOperation
(
value
=
"添加一条电子围栏报警规则"
)
@PostMapping
(
"/addRule"
)
public
Result
<
String
>
addRule
(
@Valid
LocationAlarmRuleAddParam
param
)
{
return
locationAlarmRuleService
.
addRule
(
param
);
}
@ApiOperation
(
value
=
"修改一条电子围栏报警规则"
)
@PostMapping
(
"/modifyRule"
)
public
Result
<
String
>
modifyRule
(
@Valid
LocationAlarmRuleModifyParam
param
)
{
return
locationAlarmRuleService
.
modifyRule
(
param
);
}
@ApiOperation
(
value
=
"删除一条电子围栏报警规则"
)
@PostMapping
(
"/removeRule"
)
public
Result
<
String
>
removeRule
(
@Valid
IdParam
idParam
)
{
return
locationAlarmRuleService
.
removeRule
(
idParam
);
}
@ApiOperation
(
value
=
"根据id查询一条电子围栏报警规则"
)
@PostMapping
(
"/findById"
)
public
Result
<
LocationAlarmRuleVo
>
findById
(
@Valid
IdParam
idParam
)
{
return
locationAlarmRuleService
.
findById
(
idParam
);
}
@ApiOperation
(
value
=
"根据条件查询电子围栏报警规则"
)
@PostMapping
(
"/findByCondition"
)
public
Result
<
PageVo
<
LocationAlarmRuleVo
>>
findByCondition
(
@Valid
LocationAlarmRuleParam
param
,
@Valid
PageParam
pageParam
)
{
if
(
Objects
.
isNull
(
pageParam
.
getSortField
()))
{
pageParam
.
setSortField
(
AlarmType
.
Fields
.
createTime
);
pageParam
.
setSortOrder
(
Sort
.
Direction
.
DESC
);
}
return
locationAlarmRuleService
.
findByCondition
(
param
,
pageParam
);
}
}
app/src/main/java/com/yiring/app/web/location/rule/LocationFenceRuleController.java
浏览文件 @
1fbfdcde
...
...
@@ -27,7 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
*/
@Slf4j
@Validated
@Api
(
tags
=
"
LocationFenceRuleController(电子围栏报警规则
)"
)
@Api
(
tags
=
"
FenceRule(电子围栏报警规则,什么情况下会报警
)"
)
@RestController
@RequestMapping
(
"/location/rule"
)
public
class
LocationFenceRuleController
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论