Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
caa2e86a
提交
caa2e86a
authored
4月 27, 2022
作者:
涂茂林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:报警类型的增删改查,导出
上级
f6a96c21
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
838 行增加
和
34 行删除
+838
-34
FenceTypeEnum.java
...ain/java/com/yiring/app/constant/alarm/FenceTypeEnum.java
+30
-28
RelevanceParamEnum.java
...ava/com/yiring/app/constant/alarm/RelevanceParamEnum.java
+100
-0
AlarmType.java
app/src/main/java/com/yiring/app/domain/alarm/AlarmType.java
+72
-0
AlarmTypeRepository.java
...java/com/yiring/app/domain/alarm/AlarmTypeRepository.java
+30
-0
District.java
...rc/main/java/com/yiring/app/domain/district/District.java
+1
-0
AlarmTypeExcel.java
.../main/java/com/yiring/app/excel/alarm/AlarmTypeExcel.java
+58
-0
AlarmConditionParam.java
.../java/com/yiring/app/param/alarm/AlarmConditionParam.java
+38
-0
AlarmTypeAddParam.java
...in/java/com/yiring/app/param/alarm/AlarmTypeAddParam.java
+64
-0
AlarmTypeModifyParam.java
...java/com/yiring/app/param/alarm/AlarmTypeModifyParam.java
+64
-0
AlarmService.java
.../main/java/com/yiring/app/service/alarm/AlarmService.java
+62
-0
AlarmServiceImpl.java
...a/com/yiring/app/service/alarm/impl/AlarmServiceImpl.java
+160
-0
CodeNameVo.java
app/src/main/java/com/yiring/app/vo/CodeNameVo.java
+6
-6
AlarmTypeVo.java
app/src/main/java/com/yiring/app/vo/alarm/AlarmTypeVo.java
+56
-0
AlarmTypeController.java
...in/java/com/yiring/app/web/alarm/AlarmTypeController.java
+97
-0
没有找到文件。
app/src/main/java/com/yiring/app/constant/
district/RiskGrad
eEnum.java
→
app/src/main/java/com/yiring/app/constant/
alarm/FenceTyp
eEnum.java
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
constant
.
district
;
package
com
.
yiring
.
app
.
constant
.
alarm
;
import
com.yiring.app.vo.
KeyValu
eVo
;
import
com.yiring.app.vo.
CodeNam
eVo
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
lombok.Getter
;
import
lombok.Getter
;
/**
/**
*
区域信息风险等级
枚举
*
围栏类别
枚举
* @author tml
* @author tml
* @version 1.0
* @version 1.0
* @date 2022/4/2
6 10:57
* @date 2022/4/2
7 13:36
*/
*/
public
enum
RiskGrad
eEnum
{
public
enum
FenceTyp
eEnum
{
/**
/**
*
蓝色(安全)
*
普通围栏
*/
*/
BLUE
(
1
,
"蓝
"
),
ORDINARY
(
1
,
"普通围栏
"
),
/**
/**
*
黄色(预警)
*
特殊作业
*/
*/
yellow
(
2
,
"黄
"
),
SPECIAL
(
2
,
"特殊作业
"
),
/**
/**
*
红色(异常)
*
重大危险源
*/
*/
RED
(
3
,
"红"
);
DANGEROUS
(
3
,
"重大危险源"
);
private
static
final
List
<
CodeNameVo
>
LIST
;
public
static
final
int
MIN
=
1
;
public
static
final
int
MIN
=
1
;
public
static
final
int
MAX
=
3
;
public
static
final
int
MAX
=
3
;
p
rivate
static
final
List
<
KeyValueVo
>
LIST
;
p
ublic
static
final
int
TOTAL
=
3
;
static
{
static
{
LIST
=
new
ArrayList
<>();
LIST
=
new
ArrayList
<>();
for
(
RiskGrad
eEnum
item
:
values
())
{
for
(
FenceTyp
eEnum
item
:
values
())
{
LIST
.
add
(
KeyValueVo
.
builder
().
key
(
item
.
key
).
value
(
item
.
valu
e
).
build
());
LIST
.
add
(
CodeNameVo
.
builder
().
code
(
item
.
code
).
name
(
item
.
nam
e
).
build
());
}
}
}
}
@Getter
@Getter
private
final
Integer
key
;
private
final
Integer
code
;
@Getter
@Getter
private
final
String
valu
e
;
private
final
String
nam
e
;
RiskGradeEnum
(
Integer
key
,
String
valu
e
)
{
FenceTypeEnum
(
Integer
code
,
String
nam
e
)
{
this
.
key
=
key
;
this
.
code
=
code
;
this
.
value
=
valu
e
;
this
.
name
=
nam
e
;
}
}
/**
/**
* 根据key获取value
* 根据key获取value
* @param key
等级
key
* @param key
围栏类别
key
* @return
等级
* @return
围栏类别
*/
*/
public
static
String
getByKey
(
Integer
key
)
{
public
static
String
getByKey
(
Integer
key
)
{
if
(
key
!=
null
)
{
if
(
key
!=
null
)
{
for
(
RiskGrad
eEnum
item
:
values
())
{
for
(
FenceTyp
eEnum
item
:
values
())
{
if
(
item
.
key
.
equals
(
key
))
{
if
(
item
.
code
.
equals
(
key
))
{
return
item
.
valu
e
;
return
item
.
nam
e
;
}
}
}
}
}
}
return
"未知
等级
"
;
return
"未知
围栏类别
"
;
}
}
/**
/**
* 获取所有
等级
* 获取所有
围栏类别
* @return 所有
等级
集合
* @return 所有
围栏类别
集合
*/
*/
public
static
List
<
KeyValu
eVo
>
getAll
()
{
public
static
List
<
CodeNam
eVo
>
getAll
()
{
return
LIST
;
return
LIST
;
}
}
}
}
app/src/main/java/com/yiring/app/constant/alarm/RelevanceParamEnum.java
0 → 100644
浏览文件 @
caa2e86a
/* (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/4/27 13:43
*/
public
enum
RelevanceParamEnum
{
/**
* 最大人数
*/
MAX_PEOPLE_NUMBER
(
1
,
"最大人数"
),
/**
* 最小人数
*/
MIN_PEOPLE_NUMBER
(
2
,
"最小人数"
),
/**
* 允许进入人员
*/
ALLOW_ENTRANCE
(
3
,
"允许进入人员"
),
/**
* 不允许离开人员
*/
NOT_ALLOW_LEAVE
(
4
,
"不允许离开人员"
),
/**
* 静止时长
*/
STATIC_DURATION
(
5
,
"静止时长(分钟)"
),
/**
* 滞留时长
*/
RETENTION_DURATION
(
6
,
"滞留时长(分钟)"
),
/**
* 触发报警距离
*/
TRIGGER_ALARM_DISTANCE
(
7
,
"触发报警距离"
);
private
static
final
List
<
CodeNameVo
>
LIST
;
public
static
final
int
MIN
=
1
;
public
static
final
int
MAX
=
7
;
public
static
final
int
TOTAL
=
7
;
static
{
LIST
=
new
ArrayList
<>();
for
(
RelevanceParamEnum
item
:
values
())
{
LIST
.
add
(
CodeNameVo
.
builder
().
code
(
item
.
code
).
name
(
item
.
name
).
build
());
}
}
@Getter
private
final
Integer
code
;
@Getter
private
final
String
name
;
RelevanceParamEnum
(
Integer
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
/**
* 根据key获取value
* @param key 关联参数key
* @return 关联参数
*/
public
static
String
getByKey
(
Integer
key
)
{
if
(
key
!=
null
)
{
for
(
RelevanceParamEnum
item
:
values
())
{
if
(
item
.
code
.
equals
(
key
))
{
return
item
.
name
;
}
}
}
return
"未知关联参数"
;
}
/**
* 获取所有关联参数
* @return 所有关联参数集合
*/
public
static
List
<
CodeNameVo
>
getAll
()
{
return
LIST
;
}
}
app/src/main/java/com/yiring/app/domain/alarm/AlarmType.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
alarm
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.annotations.Where
;
import
org.hibernate.snowflake.SnowflakeId
;
import
org.springframework.data.annotation.CreatedDate
;
import
org.springframework.data.annotation.LastModifiedDate
;
import
org.springframework.data.jpa.domain.support.AuditingEntityListener
;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 11:20
*/
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@Entity
@Where
(
clause
=
"deleted = false"
)
@Table
(
name
=
"BS_Alarm_Type"
)
@Comment
(
"报警类型信息"
)
@EntityListeners
(
AuditingEntityListener
.
class
)
public
class
AlarmType
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
735021155587741700L
;
@Id
@Comment
(
"主键id"
)
@GeneratedValue
(
generator
=
SnowflakeId
.
GENERATOR
)
@GenericGenerator
(
name
=
SnowflakeId
.
GENERATOR
,
strategy
=
SnowflakeId
.
Strategy
.
LONG
)
private
Long
id
;
@Comment
(
"报警类型名称"
)
@Column
(
unique
=
true
)
private
String
name
;
@Comment
(
"围栏类型"
)
private
Integer
fenceType
;
@Comment
(
"关联参数类型"
)
private
Integer
relevanceParam
;
@Comment
(
"备注"
)
private
String
comment
;
@Comment
(
"创建时间"
)
@CreatedDate
@Column
(
nullable
=
false
)
private
LocalDateTime
createTime
;
@Comment
(
"最后修改时间"
)
@LastModifiedDate
@Column
(
nullable
=
false
)
private
LocalDateTime
lastUpdateTime
;
@Comment
(
value
=
"是否删除"
)
@Column
(
nullable
=
false
)
Boolean
deleted
;
}
app/src/main/java/com/yiring/app/domain/alarm/AlarmTypeRepository.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
alarm
;
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/4/27 14:41
*/
@Repository
public
interface
AlarmTypeRepository
extends
JpaRepository
<
AlarmType
,
Serializable
>,
JpaSpecificationExecutor
<
AlarmType
>
{
/**
* 查询名称是否存在
* @param name 名称
* @return true:存在 false:不存在
*/
Boolean
existsByName
(
String
name
);
/**
* 根据名称查询
* @param name 名称
* @return 是否存在
*/
AlarmType
findByName
(
String
name
);
}
app/src/main/java/com/yiring/app/domain/district/District.java
浏览文件 @
caa2e86a
...
@@ -46,6 +46,7 @@ public class District implements Serializable {
...
@@ -46,6 +46,7 @@ public class District implements Serializable {
private
Long
id
;
private
Long
id
;
@Comment
(
"区域信息名称"
)
@Comment
(
"区域信息名称"
)
@Column
(
unique
=
true
)
private
String
name
;
private
String
name
;
@Comment
(
"风险等级"
)
@Comment
(
"风险等级"
)
...
...
app/src/main/java/com/yiring/app/excel/alarm/AlarmTypeExcel.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
excel
.
alarm
;
import
com.github.liaochong.myexcel.core.annotation.ExcelColumn
;
import
com.github.liaochong.myexcel.core.annotation.ExcelModel
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.constant.alarm.RelevanceParamEnum
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 16:44
*/
@ExcelModel
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
AlarmTypeExcel
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
2986256700153819605L
;
@ExcelColumn
(
title
=
"名称"
)
private
String
name
;
@ExcelColumn
(
title
=
"围栏类别"
)
private
String
fenceType
;
@ExcelColumn
(
title
=
"关联参数"
)
private
String
relevanceParam
;
@ExcelColumn
(
title
=
"备注"
,
width
=
15
)
private
String
comment
;
public
static
List
<
AlarmTypeExcel
>
transforms
(
List
<
AlarmType
>
alarmTypeList
)
{
return
alarmTypeList
.
stream
().
map
(
AlarmTypeExcel:
:
transform
).
collect
(
Collectors
.
toList
());
}
public
static
AlarmTypeExcel
transform
(
AlarmType
alarmType
)
{
return
AlarmTypeExcel
.
builder
()
.
name
(
alarmType
.
getName
())
.
fenceType
(
FenceTypeEnum
.
getByKey
(
alarmType
.
getFenceType
()))
.
relevanceParam
(
RelevanceParamEnum
.
getByKey
(
alarmType
.
getRelevanceParam
()))
.
comment
(
alarmType
.
getComment
())
.
build
();
}
}
app/src/main/java/com/yiring/app/param/alarm/AlarmConditionParam.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
alarm
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.constant.alarm.RelevanceParamEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.validator.constraints.Range
;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 14:28
*/
@ApiModel
(
"AlarmConditionParam(报警类型的条件param)"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
AlarmConditionParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
7543624294916003641L
;
@ApiModelProperty
(
value
=
"围栏类别"
,
example
=
"1"
)
@Range
(
min
=
FenceTypeEnum
.
MIN
,
max
=
FenceTypeEnum
.
MAX
,
message
=
"请选择正确的围栏类别"
)
private
Integer
fenceType
;
@ApiModelProperty
(
value
=
"关联参数"
,
example
=
"1"
)
@Range
(
min
=
RelevanceParamEnum
.
MIN
,
max
=
RelevanceParamEnum
.
MAX
,
message
=
"请选择正确的关联参数"
)
private
Integer
relevanceParam
;
}
app/src/main/java/com/yiring/app/param/alarm/AlarmTypeAddParam.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
alarm
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.constant.alarm.RelevanceParamEnum
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.validator.constraints.Length
;
import
org.hibernate.validator.constraints.Range
;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 11:28
*/
@ApiModel
(
"AlarmTypeAddParam(报警类型的添加param)"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
AlarmTypeAddParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
6124966765550463652L
;
@ApiModelProperty
(
value
=
"报警类型名称"
,
example
=
"超员报警"
,
required
=
true
)
@NotEmpty
(
message
=
"报警类型名称不能为空"
)
@Length
(
max
=
10
,
message
=
"区域名称不能超过10个字符"
)
private
String
name
;
@ApiModelProperty
(
value
=
"围栏类别"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"围栏类别不能为空"
)
@Range
(
min
=
FenceTypeEnum
.
MIN
,
max
=
FenceTypeEnum
.
MAX
,
message
=
"请选择正确的围栏类别"
)
private
Integer
fenceType
;
@ApiModelProperty
(
value
=
"关联参数"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"关联参数不能为空"
)
@Range
(
min
=
RelevanceParamEnum
.
MIN
,
max
=
RelevanceParamEnum
.
MAX
,
message
=
"请选择正确的关联参数"
)
private
Integer
relevanceParam
;
@ApiModelProperty
(
value
=
"备注"
,
example
=
"超员报警备注"
)
@Length
(
max
=
255
,
message
=
"区域名称不能超过10个字符"
)
private
String
comment
;
public
AlarmType
transform
()
{
return
AlarmType
.
builder
()
.
name
(
name
)
.
fenceType
(
fenceType
)
.
relevanceParam
(
relevanceParam
)
.
comment
(
comment
)
.
deleted
(
false
)
.
build
();
}
}
app/src/main/java/com/yiring/app/param/alarm/AlarmTypeModifyParam.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
alarm
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.validator.constraints.Length
;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 11:28
*/
@ApiModel
(
"AlarmTypeModifyParam(报警类型修改param)"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
AlarmTypeModifyParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
6124966765550463652L
;
@ApiModelProperty
(
value
=
"报警类型id"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"报警类型id不能为空"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"报警类型名称"
,
example
=
"超员报警"
,
required
=
true
)
@NotEmpty
(
message
=
"报警类型名称不能为空"
)
@Length
(
max
=
10
,
message
=
"区域名称不能超过10个字符"
)
private
String
name
;
@ApiModelProperty
(
value
=
"围栏类别"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"围栏类别不能为空"
)
private
Integer
fenceType
;
@ApiModelProperty
(
value
=
"关联参数"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"关联参数不能为空"
)
private
Integer
relevanceParam
;
@ApiModelProperty
(
value
=
"备注"
,
example
=
"超员报警备注"
)
@Length
(
max
=
255
,
message
=
"区域名称不能超过10个字符"
)
private
String
comment
;
public
AlarmType
transform
()
{
return
AlarmType
.
builder
()
.
id
(
id
)
.
name
(
name
)
.
fenceType
(
fenceType
)
.
relevanceParam
(
relevanceParam
)
.
comment
(
comment
)
.
deleted
(
false
)
.
build
();
}
}
app/src/main/java/com/yiring/app/service/alarm/AlarmService.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
alarm
;
import
com.yiring.app.param.alarm.AlarmConditionParam
;
import
com.yiring.app.param.alarm.AlarmTypeAddParam
;
import
com.yiring.app.param.alarm.AlarmTypeModifyParam
;
import
com.yiring.app.vo.alarm.AlarmTypeVo
;
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
javax.servlet.http.HttpServletResponse
;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 14:34
*/
public
interface
AlarmService
{
/**
* 添加报警类型
* @param param 报警类型信息
* @return 是否成功
*/
Result
<
String
>
addAlarmType
(
AlarmTypeAddParam
param
);
/**
* 修改报警类型
* @param param 报警类型信息
* @return 是否成功
*/
Result
<
String
>
modifyAlarmType
(
AlarmTypeModifyParam
param
);
/**
* 删除报警类型
* @param param 报警类型id
* @return 是否成功
*/
Result
<
String
>
removeAlarmType
(
IdParam
param
);
/**
* 根据id查询报警类型
* @param param 报警类型id
* @return 报警类型
*/
Result
<
AlarmTypeVo
>
findById
(
IdParam
param
);
/**
* 根据条件查询
* @param conditionParam 条件
* @param pageParam 分页参数
* @return 报警类型列表
*/
Result
<
PageVo
<
AlarmTypeVo
>>
findByCondition
(
AlarmConditionParam
conditionParam
,
PageParam
pageParam
);
/**
* 报警类型导出
* @param conditionParam 条件
* @param response response
*/
void
exportAlarmType
(
AlarmConditionParam
conditionParam
,
HttpServletResponse
response
);
}
app/src/main/java/com/yiring/app/service/alarm/impl/AlarmServiceImpl.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
alarm
.
impl
;
import
com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.alarm.AlarmTypeRepository
;
import
com.yiring.app.excel.alarm.AlarmTypeExcel
;
import
com.yiring.app.param.alarm.AlarmConditionParam
;
import
com.yiring.app.param.alarm.AlarmTypeAddParam
;
import
com.yiring.app.param.alarm.AlarmTypeModifyParam
;
import
com.yiring.app.service.alarm.AlarmService
;
import
com.yiring.app.util.JpaUtil
;
import
com.yiring.app.vo.alarm.AlarmTypeVo
;
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.io.OutputStream
;
import
java.net.URLEncoder
;
import
java.nio.charset.StandardCharsets
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.concurrent.Executors
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.persistence.criteria.Predicate
;
import
javax.servlet.http.HttpServletResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.Workbook
;
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
;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 14:39
*/
@Slf4j
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
class
AlarmServiceImpl
implements
AlarmService
{
@Resource
private
AlarmTypeRepository
alarmTypeRepository
;
@Override
public
Result
<
String
>
addAlarmType
(
AlarmTypeAddParam
param
)
{
Boolean
exists
=
alarmTypeRepository
.
existsByName
(
param
.
getName
());
if
(
exists
)
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"名称已被占用"
);
}
alarmTypeRepository
.
saveAndFlush
(
param
.
transform
());
return
Result
.
ok
();
}
@Override
public
Result
<
String
>
modifyAlarmType
(
AlarmTypeModifyParam
param
)
{
AlarmType
alarmType
;
AlarmType
byName
=
alarmTypeRepository
.
findByName
(
param
.
getName
());
if
(
byName
!=
null
)
{
if
(!
byName
.
getId
().
equals
(
param
.
getId
()))
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"名称已被占用"
);
}
alarmType
=
byName
;
}
else
{
Optional
<
AlarmType
>
optional
=
alarmTypeRepository
.
findById
(
param
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"修改的报警类型不存在"
);
}
alarmType
=
optional
.
get
();
}
JpaUtil
.
copyNotNullProperties
(
param
,
alarmType
);
return
Result
.
ok
();
}
@Override
public
Result
<
String
>
removeAlarmType
(
IdParam
param
)
{
Optional
<
AlarmType
>
optional
=
alarmTypeRepository
.
findById
(
param
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"删除的报警类型不存在"
);
}
optional
.
get
().
setDeleted
(
true
);
return
Result
.
ok
();
}
@Override
public
Result
<
AlarmTypeVo
>
findById
(
IdParam
param
)
{
Optional
<
AlarmType
>
optional
=
alarmTypeRepository
.
findById
(
param
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"查询的报警类型不存在"
);
}
AlarmTypeVo
vo
=
AlarmTypeVo
.
transform
(
optional
.
get
());
return
Result
.
ok
(
vo
);
}
@Override
public
Result
<
PageVo
<
AlarmTypeVo
>>
findByCondition
(
AlarmConditionParam
conditionParam
,
PageParam
pageParam
)
{
Pageable
pageable
=
PageParam
.
toPageable
(
pageParam
);
Specification
<
AlarmType
>
specification
=
getSpecification
(
conditionParam
);
Page
<
AlarmType
>
page
=
alarmTypeRepository
.
findAll
(
specification
,
pageable
);
List
<
AlarmTypeVo
>
list
=
page
.
get
().
map
(
AlarmTypeVo:
:
transform
).
collect
(
Collectors
.
toList
());
PageVo
<
AlarmTypeVo
>
pageVo
=
PageVo
.
build
(
list
,
page
.
getTotalElements
());
return
Result
.
ok
(
pageVo
);
}
@Override
public
void
exportAlarmType
(
AlarmConditionParam
conditionParam
,
HttpServletResponse
response
)
{
Specification
<
AlarmType
>
specification
=
getSpecification
(
conditionParam
);
List
<
AlarmType
>
alarmTypeList
=
alarmTypeRepository
.
findAll
(
specification
);
List
<
AlarmTypeExcel
>
list
=
AlarmTypeExcel
.
transforms
(
alarmTypeList
);
try
(
DefaultStreamExcelBuilder
<
AlarmTypeExcel
>
streamExcelBuilder
=
DefaultStreamExcelBuilder
.
of
(
AlarmTypeExcel
.
class
)
.
threadPool
(
Executors
.
newFixedThreadPool
(
2
))
.
rowHeight
(
14
)
.
titleRowHeight
(
14
)
.
style
(
"cell->vertical-align:center;text-align:center"
,
"title->vertical-align:center;text-align:center;font-weight:bold;font-family:等线"
)
.
start
()
)
{
streamExcelBuilder
.
append
(
list
);
String
fileName
=
URLEncoder
.
encode
(
"报警类型列表.xlsx"
,
StandardCharsets
.
UTF_8
);
response
.
setContentType
(
"application/octet-stream"
);
response
.
setHeader
(
"Access-Control-Expose-Headers"
,
"Content-Disposition"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
fileName
);
OutputStream
out
=
response
.
getOutputStream
();
Workbook
workbook
=
streamExcelBuilder
.
fixedTitles
().
build
();
workbook
.
write
(
out
);
workbook
.
close
();
out
.
flush
();
out
.
close
();
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
throw
new
RuntimeException
(
"报警类型列表导出失败: "
+
e
.
getMessage
());
}
}
private
Specification
<
AlarmType
>
getSpecification
(
AlarmConditionParam
conditionParam
)
{
return
(
root
,
query
,
criteriaBuilder
)
->
{
List
<
Predicate
>
list
=
new
ArrayList
<>();
if
(
conditionParam
.
getFenceType
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
"fenceType"
),
conditionParam
.
getFenceType
()));
}
if
(
conditionParam
.
getRelevanceParam
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
"relevanceParam"
),
conditionParam
.
getRelevanceParam
()));
}
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
list
.
size
()]);
return
criteriaBuilder
.
and
(
array
);
};
}
}
app/src/main/java/com/yiring/app/vo/
KeyValu
eVo.java
→
app/src/main/java/com/yiring/app/vo/
CodeNam
eVo.java
浏览文件 @
caa2e86a
...
@@ -11,7 +11,7 @@ import lombok.Data;
...
@@ -11,7 +11,7 @@ import lombok.Data;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
/**
/**
*
key-valu
e格式数据Vo
*
code-nam
e格式数据Vo
* @author tml
* @author tml
* @version 1.0
* @version 1.0
* @date 2022/4/26 11:02
* @date 2022/4/26 11:02
...
@@ -21,14 +21,14 @@ import lombok.NoArgsConstructor;
...
@@ -21,14 +21,14 @@ import lombok.NoArgsConstructor;
@Builder
@Builder
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@AllArgsConstructor
public
class
KeyValu
eVo
implements
Serializable
{
public
class
CodeNam
eVo
implements
Serializable
{
@Serial
@Serial
private
static
final
long
serialVersionUID
=
-
7565315836652536620L
;
private
static
final
long
serialVersionUID
=
-
7565315836652536620L
;
@ApiModelProperty
(
value
=
"
key
"
,
example
=
"1"
,
required
=
true
)
@ApiModelProperty
(
value
=
"
code
"
,
example
=
"1"
,
required
=
true
)
private
Integer
key
;
private
Integer
code
;
@ApiModelProperty
(
value
=
"
value"
,
example
=
"值
"
,
required
=
true
)
@ApiModelProperty
(
value
=
"
name"
,
example
=
"名称
"
,
required
=
true
)
private
String
valu
e
;
private
String
nam
e
;
}
}
app/src/main/java/com/yiring/app/vo/alarm/AlarmTypeVo.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
alarm
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.constant.alarm.RelevanceParamEnum
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 11:55
*/
@ApiModel
(
"AlarmTypeVo(报警信息)"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
AlarmTypeVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
4743016000753778197L
;
@ApiModelProperty
(
value
=
"报警类型id"
,
example
=
"1518841086628335616"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"报警类型名称"
,
example
=
"超员报警"
)
private
String
name
;
@ApiModelProperty
(
value
=
"围栏类别"
,
example
=
"普通围栏"
)
private
String
fenceType
;
@ApiModelProperty
(
value
=
"关联参数"
,
example
=
"最多人数"
)
private
String
relevanceParam
;
@ApiModelProperty
(
value
=
"备注"
,
example
=
"备注"
)
private
String
comment
;
public
static
AlarmTypeVo
transform
(
AlarmType
alarmType
)
{
return
AlarmTypeVo
.
builder
()
.
id
(
alarmType
.
getId
())
.
name
(
alarmType
.
getName
())
.
fenceType
(
FenceTypeEnum
.
getByKey
(
alarmType
.
getFenceType
()))
.
relevanceParam
(
RelevanceParamEnum
.
getByKey
(
alarmType
.
getRelevanceParam
()))
.
comment
(
alarmType
.
getComment
())
.
build
();
}
}
app/src/main/java/com/yiring/app/web/alarm/AlarmTypeController.java
0 → 100644
浏览文件 @
caa2e86a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
web
.
alarm
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.constant.alarm.RelevanceParamEnum
;
import
com.yiring.app.param.alarm.AlarmConditionParam
;
import
com.yiring.app.param.alarm.AlarmTypeAddParam
;
import
com.yiring.app.param.alarm.AlarmTypeModifyParam
;
import
com.yiring.app.service.alarm.AlarmService
;
import
com.yiring.app.vo.CodeNameVo
;
import
com.yiring.app.vo.alarm.AlarmTypeVo
;
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
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.Valid
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.http.MediaType
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 报警类型控制器
* @author tml
* @version 1.0
* @date 2022/4/27 14:18
*/
@Slf4j
@Validated
@Api
(
tags
=
"AlarmTypeController(报警类型)"
)
@RestController
@RequestMapping
(
"/alarm/type"
)
public
class
AlarmTypeController
{
@Resource
private
AlarmService
alarmService
;
@ApiOperation
(
value
=
"添加报警类型"
)
@PostMapping
(
"/addAlarmType"
)
public
Result
<
String
>
addAlarmType
(
@Valid
AlarmTypeAddParam
param
)
{
return
alarmService
.
addAlarmType
(
param
);
}
@ApiOperation
(
value
=
"修改报警类型"
)
@PostMapping
(
"/modifyAlarmType"
)
public
Result
<
String
>
modifyAlarmType
(
@Valid
AlarmTypeModifyParam
param
)
{
return
alarmService
.
modifyAlarmType
(
param
);
}
@ApiOperation
(
value
=
"删除报警类型"
)
@PostMapping
(
"/removeAlarmType"
)
public
Result
<
String
>
removeAlarmType
(
@Valid
IdParam
param
)
{
return
alarmService
.
removeAlarmType
(
param
);
}
@ApiOperation
(
value
=
"根据id查询报警类型"
)
@PostMapping
(
"/findById"
)
public
Result
<
AlarmTypeVo
>
findById
(
@Valid
IdParam
param
)
{
return
alarmService
.
findById
(
param
);
}
@ApiOperation
(
value
=
"根据条件查询"
)
@PostMapping
(
"/findByCondition"
)
public
Result
<
PageVo
<
AlarmTypeVo
>>
findByCondition
(
@Valid
AlarmConditionParam
conditionParam
,
@Valid
PageParam
pageParam
)
{
return
alarmService
.
findByCondition
(
conditionParam
,
pageParam
);
}
@ApiOperation
(
value
=
"获取所有围栏类别"
)
@GetMapping
(
"/findAllFenceType"
)
public
Result
<
PageVo
<
CodeNameVo
>>
findAllFenceType
()
{
PageVo
<
CodeNameVo
>
pageVo
=
PageVo
.
build
(
FenceTypeEnum
.
getAll
(),
FenceTypeEnum
.
TOTAL
);
return
Result
.
ok
(
pageVo
);
}
@ApiOperation
(
value
=
"获取所有关联参数"
)
@GetMapping
(
"/findAllRelevanceParam"
)
public
Result
<
PageVo
<
CodeNameVo
>>
findAllRelevanceParam
()
{
PageVo
<
CodeNameVo
>
pageVo
=
PageVo
.
build
(
RelevanceParamEnum
.
getAll
(),
RelevanceParamEnum
.
TOTAL
);
return
Result
.
ok
(
pageVo
);
}
@ApiOperation
(
value
=
"报警类型导出"
,
produces
=
MediaType
.
APPLICATION_OCTET_STREAM_VALUE
)
@PostMapping
(
"/exportAlarmType"
)
public
void
exportAlarmType
(
@Valid
AlarmConditionParam
conditionParam
,
HttpServletResponse
response
)
{
alarmService
.
exportAlarmType
(
conditionParam
,
response
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论