Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
31bc9e8a
提交
31bc9e8a
authored
5月 26, 2022
作者:
17607474349
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/dev_tml' into dev_lijing
上级
d99981ab
f8e7b7d9
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
94 个修改的文件
包含
3068 行增加
和
263 行删除
+3068
-263
FenceTypeEnum.java
...ain/java/com/yiring/app/constant/alarm/FenceTypeEnum.java
+1
-1
InformMannerEnum.java
.../java/com/yiring/app/constant/alarm/InformMannerEnum.java
+2
-2
ReceiveStatusEnum.java
...java/com/yiring/app/constant/alarm/ReceiveStatusEnum.java
+58
-0
RelevanceParamEnum.java
...ava/com/yiring/app/constant/alarm/RelevanceParamEnum.java
+1
-1
RehearsalPlanStatusEnum.java
...iring/app/constant/rehearsal/RehearsalPlanStatusEnum.java
+1
-1
RiskLevelEnum.java
...java/com/yiring/app/constant/rehearsal/RiskLevelEnum.java
+1
-1
TemplateList.java
.../main/java/com/yiring/app/constant/risk/TemplateList.java
+77
-0
ThresholdStatusEnum.java
...ava/com/yiring/app/constant/risk/ThresholdStatusEnum.java
+71
-0
IScanAlarmStrategy.java
...va/com/yiring/app/design/strategy/IScanAlarmStrategy.java
+28
-0
DangerousStrategy.java
...m/yiring/app/design/strategy/fence/DangerousStrategy.java
+3
-2
AllowEntranceStrategy.java
...iring/app/design/strategy/rule/AllowEntranceStrategy.java
+62
-23
MaxPeopleNumberStrategy.java
...ing/app/design/strategy/rule/MaxPeopleNumberStrategy.java
+30
-27
MinPeopleNumberStrategy.java
...ing/app/design/strategy/rule/MinPeopleNumberStrategy.java
+34
-30
NotAllowLeaveStrategy.java
...iring/app/design/strategy/rule/NotAllowLeaveStrategy.java
+66
-27
RetentionDurationStrategy.java
...g/app/design/strategy/rule/RetentionDurationStrategy.java
+4
-13
StaticDurationStrategy.java
...ring/app/design/strategy/rule/StaticDurationStrategy.java
+4
-13
TriggerAlarmDistanceStrategy.java
...pp/design/strategy/rule/TriggerAlarmDistanceStrategy.java
+4
-13
District.java
...rc/main/java/com/yiring/app/domain/district/District.java
+3
-0
FenceAlarmPushLog.java
...ava/com/yiring/app/domain/location/FenceAlarmPushLog.java
+57
-0
FenceAlarmPushLogRepository.java
...ring/app/domain/location/FenceAlarmPushLogRepository.java
+16
-0
LocationAlarmRule.java
...ava/com/yiring/app/domain/location/LocationAlarmRule.java
+17
-0
LocationAlarmRuleRepository.java
...ring/app/domain/location/LocationAlarmRuleRepository.java
+15
-1
LocationFence.java
...in/java/com/yiring/app/domain/location/LocationFence.java
+6
-0
LocationFenceAlarm.java
...va/com/yiring/app/domain/location/LocationFenceAlarm.java
+31
-2
LocationFenceRepository.java
...m/yiring/app/domain/location/LocationFenceRepository.java
+17
-0
LocationFenceRule.java
...ava/com/yiring/app/domain/location/LocationFenceRule.java
+1
-0
LocationFenceRuleRepository.java
...ring/app/domain/location/LocationFenceRuleRepository.java
+9
-1
RiskWarn.java
app/src/main/java/com/yiring/app/domain/risk/RiskWarn.java
+90
-0
RiskWarnRepository.java
...n/java/com/yiring/app/domain/risk/RiskWarnRepository.java
+31
-0
Threshold.java
app/src/main/java/com/yiring/app/domain/risk/Threshold.java
+49
-0
FenceAlarmExcel.java
.../com/yiring/app/excel/location/fence/FenceAlarmExcel.java
+18
-12
RiskWarnExcel.java
...rc/main/java/com/yiring/app/excel/risk/RiskWarnExcel.java
+115
-0
FenceAlarmJob.java
app/src/main/java/com/yiring/app/job/FenceAlarmJob.java
+49
-0
HistoryRouteConditionParam.java
...pp/param/analysis/history/HistoryRouteConditionParam.java
+4
-4
DistrictAddParam.java
.../java/com/yiring/app/param/district/DistrictAddParam.java
+9
-1
DistrictModifyParam.java
...va/com/yiring/app/param/district/DistrictModifyParam.java
+6
-0
DistrictRealtimeConditionParam.java
...ng/app/param/district/DistrictRealtimeConditionParam.java
+30
-0
FenceAlarmConditionParam.java
...ng/app/param/location/fence/FenceAlarmConditionParam.java
+2
-2
FenceAlarmLogParam.java
...m/yiring/app/param/location/fence/FenceAlarmLogParam.java
+35
-0
FenceAlarmPushLogConditionParam.java
...param/location/fence/FenceAlarmPushLogConditionParam.java
+40
-0
FenceRealtimeConditionParam.java
...app/param/location/fence/FenceRealtimeConditionParam.java
+30
-0
LocationFenceJobParam.java
...iring/app/param/location/fence/LocationFenceJobParam.java
+5
-0
LocationFenceRuleAddParam.java
...ng/app/param/location/rule/LocationFenceRuleAddParam.java
+5
-1
RuleParam.java
...in/java/com/yiring/app/param/location/rule/RuleParam.java
+31
-0
TimeAndNumberParam.java
...om/yiring/app/param/location/rule/TimeAndNumberParam.java
+2
-9
TimeAndUserParam.java
.../com/yiring/app/param/location/rule/TimeAndUserParam.java
+2
-10
TimeParam.java
...in/java/com/yiring/app/param/location/rule/TimeParam.java
+41
-0
RiskWarnAddParam.java
...main/java/com/yiring/app/param/risk/RiskWarnAddParam.java
+83
-0
RiskWarnConditionParam.java
...ava/com/yiring/app/param/risk/RiskWarnConditionParam.java
+27
-0
RiskWarnModifyParam.java
...n/java/com/yiring/app/param/risk/RiskWarnModifyParam.java
+77
-0
ThresholdParam.java
...c/main/java/com/yiring/app/param/risk/ThresholdParam.java
+41
-0
HistoryRouteService.java
...ing/app/service/analysis/history/HistoryRouteService.java
+10
-0
HistoryRouteServiceImpl.java
...ervice/analysis/history/impl/HistoryRouteServiceImpl.java
+23
-0
DistrictService.java
...java/com/yiring/app/service/district/DistrictService.java
+17
-0
DistrictServiceImpl.java
...yiring/app/service/district/impl/DistrictServiceImpl.java
+39
-0
FenceAlarmPushLogService.java
.../app/service/location/fence/FenceAlarmPushLogService.java
+27
-0
FenceAlarmService.java
.../yiring/app/service/location/fence/FenceAlarmService.java
+32
-0
LocationFenceService.java
...ring/app/service/location/fence/LocationFenceService.java
+35
-1
FenceAlarmPushLogServiceImpl.java
...ice/location/fence/impl/FenceAlarmPushLogServiceImpl.java
+76
-0
FenceAlarmServiceImpl.java
...pp/service/location/fence/impl/FenceAlarmServiceImpl.java
+124
-5
LocationFenceServiceImpl.java
...service/location/fence/impl/LocationFenceServiceImpl.java
+62
-6
LocationFenceRuleService.java
...g/app/service/location/rule/LocationFenceRuleService.java
+8
-0
LocationFenceRuleServiceImpl.java
...vice/location/rule/impl/LocationFenceRuleServiceImpl.java
+23
-1
RiskWarnService.java
...ain/java/com/yiring/app/service/risk/RiskWarnService.java
+87
-0
RiskWarnServiceImpl.java
...com/yiring/app/service/risk/impl/RiskWarnServiceImpl.java
+0
-0
TimeUtil.java
app/src/main/java/com/yiring/app/util/TimeUtil.java
+71
-23
DistrictDetailsVo.java
...in/java/com/yiring/app/vo/district/DistrictDetailsVo.java
+55
-0
DistrictUserVo.java
.../main/java/com/yiring/app/vo/district/DistrictUserVo.java
+38
-0
DistrictVo.java
app/src/main/java/com/yiring/app/vo/district/DistrictVo.java
+6
-1
FenceAlarmLogVo.java
...ava/com/yiring/app/vo/location/fence/FenceAlarmLogVo.java
+58
-0
FenceAlarmPushLogVo.java
...com/yiring/app/vo/location/fence/FenceAlarmPushLogVo.java
+57
-0
FenceAlarmRealtimeVo.java
...om/yiring/app/vo/location/fence/FenceAlarmRealtimeVo.java
+58
-0
FenceAlarmVo.java
...n/java/com/yiring/app/vo/location/fence/FenceAlarmVo.java
+19
-2
FenceRealtimeVo.java
...ava/com/yiring/app/vo/location/fence/FenceRealtimeVo.java
+67
-0
LocationFenceGeoVo.java
.../com/yiring/app/vo/location/fence/LocationFenceGeoVo.java
+76
-0
LocationFenceVo.java
...ava/com/yiring/app/vo/location/fence/LocationFenceVo.java
+5
-0
LocationFenceRuleVo.java
.../com/yiring/app/vo/location/rule/LocationFenceRuleVo.java
+5
-1
RuleVo.java
...src/main/java/com/yiring/app/vo/location/rule/RuleVo.java
+1
-0
TimeAndNumberVo.java
...java/com/yiring/app/vo/location/rule/TimeAndNumberVo.java
+2
-5
TimeAndUserVo.java
...n/java/com/yiring/app/vo/location/rule/TimeAndUserVo.java
+1
-8
TimeVo.java
...src/main/java/com/yiring/app/vo/location/rule/TimeVo.java
+36
-0
RiskWarnDetailVo.java
...rc/main/java/com/yiring/app/vo/risk/RiskWarnDetailVo.java
+85
-0
RiskWarnVo.java
app/src/main/java/com/yiring/app/vo/risk/RiskWarnVo.java
+66
-0
ThresholdVo.java
app/src/main/java/com/yiring/app/vo/risk/ThresholdVo.java
+51
-0
AlarmTypeController.java
...in/java/com/yiring/app/web/alarm/AlarmTypeController.java
+10
-0
HistoryRouteController.java
...ring/app/web/analysis/history/HistoryRouteController.java
+11
-0
DistrictController.java
.../java/com/yiring/app/web/district/DistrictController.java
+15
-0
FenceAlarmController.java
...m/yiring/app/web/location/fence/FenceAlarmController.java
+30
-0
FenceAlarmPushLogController.java
...g/app/web/location/fence/FenceAlarmPushLogController.java
+39
-0
LocationFenceController.java
...iring/app/web/location/fence/LocationFenceController.java
+53
-6
LocationAlarmRuleController.java
...ng/app/web/location/rule/LocationAlarmRuleController.java
+1
-1
LocationFenceRuleController.java
...ng/app/web/location/rule/LocationFenceRuleController.java
+9
-5
RiskWarnController.java
...main/java/com/yiring/app/web/risk/RiskWarnController.java
+127
-0
RegEx.java
.../core/src/main/java/com/yiring/common/constant/RegEx.java
+12
-1
没有找到文件。
app/src/main/java/com/yiring/app/constant/alarm/FenceTypeEnum.java
浏览文件 @
31bc9e8a
...
@@ -67,7 +67,7 @@ public enum FenceTypeEnum {
...
@@ -67,7 +67,7 @@ public enum FenceTypeEnum {
}
}
}
}
}
}
return
"未知围栏类别"
;
throw
new
RuntimeException
(
"FenceTypeEnum获取未知围栏类别"
)
;
}
}
/**
/**
...
...
app/src/main/java/com/yiring/app/constant/alarm/InformMannerEnum.java
浏览文件 @
31bc9e8a
...
@@ -37,7 +37,7 @@ public enum InformMannerEnum {
...
@@ -37,7 +37,7 @@ public enum InformMannerEnum {
private
static
final
List
<
CodeNameVo
>
LIST
;
private
static
final
List
<
CodeNameVo
>
LIST
;
static
{
static
{
LIST
=
new
ArrayList
<
CodeNameVo
>();
LIST
=
new
ArrayList
<>();
for
(
InformMannerEnum
item
:
values
())
{
for
(
InformMannerEnum
item
:
values
())
{
LIST
.
add
(
new
CodeNameVo
(
item
.
code
,
item
.
name
));
LIST
.
add
(
new
CodeNameVo
(
item
.
code
,
item
.
name
));
}
}
...
@@ -54,7 +54,7 @@ public enum InformMannerEnum {
...
@@ -54,7 +54,7 @@ public enum InformMannerEnum {
return
item
.
getName
();
return
item
.
getName
();
}
}
}
}
return
"未知通知类型"
;
throw
new
RuntimeException
(
"InformMannerEnum获取未知通知类型"
)
;
}
}
public
static
List
<
CodeNameVo
>
getAll
()
{
public
static
List
<
CodeNameVo
>
getAll
()
{
...
...
app/src/main/java/com/yiring/app/constant/alarm/ReceiveStatusEnum.java
0 → 100644
浏览文件 @
31bc9e8a
/* (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/18 9:37
*/
public
enum
ReceiveStatusEnum
{
/**
* 成功
*/
SUCCESS
(
1
,
"成功"
),
/**
* 失败
*/
FAIL
(
2
,
"失败"
);
private
static
final
List
<
CodeNameVo
>
LIST
;
static
{
LIST
=
new
ArrayList
<>();
for
(
ReceiveStatusEnum
item
:
values
())
{
LIST
.
add
(
new
CodeNameVo
(
item
.
getCode
(),
item
.
name
));
}
}
@Getter
private
final
int
code
;
@Getter
private
final
String
name
;
ReceiveStatusEnum
(
Integer
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
String
getByCode
(
int
code
)
{
for
(
ReceiveStatusEnum
item
:
values
())
{
if
(
item
.
code
==
code
)
{
return
item
.
getName
();
}
}
throw
new
RuntimeException
(
"ReceiveStatusEnum获取未知状态"
);
}
public
static
List
<
CodeNameVo
>
findAll
()
{
return
LIST
;
}
}
app/src/main/java/com/yiring/app/constant/alarm/RelevanceParamEnum.java
浏览文件 @
31bc9e8a
...
@@ -87,7 +87,7 @@ public enum RelevanceParamEnum {
...
@@ -87,7 +87,7 @@ public enum RelevanceParamEnum {
}
}
}
}
}
}
return
"未知关联参数"
;
throw
new
RuntimeException
(
"RelevanceParamEnum获取未知关联参数"
)
;
}
}
/**
/**
...
...
app/src/main/java/com/yiring/app/constant/rehearsal/RehearsalPlanStatusEnum.java
浏览文件 @
31bc9e8a
...
@@ -58,6 +58,6 @@ public enum RehearsalPlanStatusEnum {
...
@@ -58,6 +58,6 @@ public enum RehearsalPlanStatusEnum {
return
item
.
getName
();
return
item
.
getName
();
}
}
}
}
return
"未知状态"
;
throw
new
RuntimeException
(
"RehearsalPlanStatusEnum获取异常状态"
)
;
}
}
}
}
app/src/main/java/com/yiring/app/constant/rehearsal/RiskLevelEnum.java
浏览文件 @
31bc9e8a
...
@@ -63,6 +63,6 @@ public enum RiskLevelEnum {
...
@@ -63,6 +63,6 @@ public enum RiskLevelEnum {
return
item
.
getName
();
return
item
.
getName
();
}
}
}
}
return
"未知风险"
;
throw
new
RuntimeException
(
"RiskLevelEnum获取未知风险"
)
;
}
}
}
}
app/src/main/java/com/yiring/app/constant/risk/TemplateList.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
constant
.
risk
;
import
com.yiring.app.excel.risk.RiskWarnExcel
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author tml
* @version 1.0
* @date 2022/5/24 16:32
*/
public
class
TemplateList
{
private
static
final
List
<
RiskWarnExcel
>
LIST
=
new
ArrayList
<>();
static
{
LIST
.
add
(
RiskWarnExcel
.
builder
()
.
workAreaName
(
"BTC产品库房"
)
.
point
(
"112.863173604639,30.4786075211555,0"
)
.
install
(
"产品库房北侧中间立柱东1"
)
.
monitoring
(
"有毒气体报警器"
)
.
locationNum
(
"AT-4736"
)
.
range
(
"0-1.6"
)
.
unit
(
"ppm"
)
.
lowLow
(
"0.15"
)
.
low
(
"0.2"
)
.
high
(
"0.5"
)
.
highHigh
(
"0.55"
)
.
flame
(
""
)
.
remark
(
"注意:工区、安装位置、监控参数、位号为必填,导入时备注这一列可以删除"
)
.
build
()
);
LIST
.
add
(
RiskWarnExcel
.
builder
()
.
workAreaName
(
"计量槽"
)
.
point
(
"112.863173604639,30.4786075211555,0"
)
.
install
(
"1号槽液位"
)
.
monitoring
(
"液位"
)
.
locationNum
(
"PI-2107A"
)
.
range
(
"-27.18-7.32KPa"
)
.
unit
(
"ppm"
)
.
lowLow
(
"3%"
)
.
low
(
"5%"
)
.
high
(
"70%"
)
.
highHigh
(
"73%"
)
.
flame
(
""
)
.
remark
(
"注意:区间要么都为百分比要么都不为百分比"
)
.
build
()
);
LIST
.
add
(
RiskWarnExcel
.
builder
()
.
workAreaName
(
"合成盐酸"
)
.
point
(
"112.863173604639,30.4786075211555,0"
)
.
install
(
"1号炉一楼"
)
.
monitoring
(
"火焰检测"
)
.
locationNum
(
"BSA-1401A"
)
.
range
(
""
)
.
unit
(
""
)
.
lowLow
(
""
)
.
low
(
""
)
.
high
(
""
)
.
highHigh
(
""
)
.
flame
(
"1"
)
.
remark
(
"注意:火焰检测在报警值(熄灭)这里添加预警值,等于这个数值时显示熄灭"
)
.
build
()
);
}
public
static
List
<
RiskWarnExcel
>
getTemplateList
()
{
return
LIST
;
}
}
app/src/main/java/com/yiring/app/constant/risk/ThresholdStatusEnum.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
constant
.
risk
;
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/23 17:01
*/
public
enum
ThresholdStatusEnum
{
/**
* 低低
*/
LOW_LOW
(
1
,
"低低"
),
/**
* 低
*/
LOW
(
2
,
"低"
),
/**
* 高
*/
HIGH
(
3
,
"高"
),
/**
* 高高
*/
HIGH_HIGH
(
4
,
"高高"
),
/**
* 熄灭
*/
FLAME_EXTINGUISH
(
5
,
"熄灭"
);
@Getter
private
final
Integer
code
;
@Getter
private
final
String
name
;
private
static
final
List
<
CodeNameVo
>
LIST
=
new
ArrayList
<>();
static
{
for
(
ThresholdStatusEnum
item
:
values
())
{
LIST
.
add
(
new
CodeNameVo
(
item
.
code
,
item
.
name
));
}
}
ThresholdStatusEnum
(
Integer
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
String
getByCode
(
Integer
code
)
{
for
(
ThresholdStatusEnum
item
:
values
())
{
if
(
item
.
code
.
equals
(
code
))
{
return
item
.
getName
();
}
}
throw
new
RuntimeException
(
"ThresholdStatus获取异常状态"
);
}
public
static
List
<
CodeNameVo
>
getAll
()
{
return
LIST
;
}
}
app/src/main/java/com/yiring/app/design/strategy/IScanAlarmStrategy.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
design
.
strategy
;
package
com
.
yiring
.
app
.
design
.
strategy
;
import
com.yiring.app.domain.location.LocationFenceAlarm
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
org.springframework.util.CollectionUtils
;
/**
/**
* 扫描是否满足报警策略
* 扫描是否满足报警策略
...
@@ -18,4 +23,27 @@ public interface IScanAlarmStrategy {
...
@@ -18,4 +23,27 @@ public interface IScanAlarmStrategy {
* @return 需要报警的报警信息
* @return 需要报警的报警信息
*/
*/
LocationFenceJobVo
scanAlarm
(
LocationFenceJobParam
param
);
LocationFenceJobVo
scanAlarm
(
LocationFenceJobParam
param
);
/**
* 将两个集合不相交的部分筛选出来,并封装到结果集
* @param newAlarms 集合1
* @param oldAlarms 集合2
* @param jobVo 结果集
*/
static
void
notIntersect
(
List
<
LocationFenceAlarm
>
newAlarms
,
List
<
LocationFenceAlarm
>
oldAlarms
,
LocationFenceJobVo
jobVo
)
{
if
(!
CollectionUtils
.
isEmpty
(
oldAlarms
))
{
Set
<
Long
>
newSet
=
newAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
Set
<
Long
>
oldSet
=
oldAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
newAlarms
=
newAlarms
.
stream
().
filter
(
e
->
!
oldSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
oldAlarms
=
oldAlarms
.
stream
().
filter
(
e
->
!
newSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
}
jobVo
.
setAddAlarm
(
newAlarms
);
jobVo
.
setModifyAlarm
(
oldAlarms
);
}
}
}
app/src/main/java/com/yiring/app/design/strategy/fence/DangerousStrategy.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
design
.
strategy
.
fence
;
package
com
.
yiring
.
app
.
design
.
strategy
.
fence
;
import
com.yiring.app.constant.alarm.
RelevanceParam
Enum
;
import
com.yiring.app.constant.alarm.
FenceType
Enum
;
import
com.yiring.app.design.strategy.IParamInitStrategy
;
import
com.yiring.app.design.strategy.IParamInitStrategy
;
import
com.yiring.app.param.location.rule.LocationFenceRuleAddParam
;
import
com.yiring.app.param.location.rule.LocationFenceRuleAddParam
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
/**
/**
* 重大危险源
* @author tml
* @author tml
* @version 1.0
* @version 1.0
* @date 2022/4/29 11:08
* @date 2022/4/29 11:08
...
@@ -16,7 +17,7 @@ import org.springframework.stereotype.Component;
...
@@ -16,7 +17,7 @@ import org.springframework.stereotype.Component;
public
class
DangerousStrategy
implements
IParamInitStrategy
<
LocationFenceRuleAddParam
>
{
public
class
DangerousStrategy
implements
IParamInitStrategy
<
LocationFenceRuleAddParam
>
{
public
DangerousStrategy
()
{
public
DangerousStrategy
()
{
Integer
fenceType
=
RelevanceParamEnum
.
MAX_PEOPLE_NUMBER
.
getCode
();
Integer
fenceType
=
FenceTypeEnum
.
DANGEROUS
.
getCode
();
LocationFenceTypeContext
.
register
(
fenceType
,
this
);
LocationFenceTypeContext
.
register
(
fenceType
,
this
);
}
}
...
...
app/src/main/java/com/yiring/app/design/strategy/rule/AllowEntranceStrategy.java
浏览文件 @
31bc9e8a
...
@@ -9,19 +9,19 @@ import com.yiring.app.domain.location.LocationFence;
...
@@ -9,19 +9,19 @@ import com.yiring.app.domain.location.LocationFence;
import
com.yiring.app.domain.location.LocationFenceAlarm
;
import
com.yiring.app.domain.location.LocationFenceAlarm
;
import
com.yiring.app.domain.location.LocationTag
;
import
com.yiring.app.domain.location.LocationTag
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.rule.LocationFenceRuleAddParam
;
import
com.yiring.app.param.location.rule.*
;
import
com.yiring.app.param.location.rule.RelevanceUserParam
;
import
com.yiring.app.param.location.rule.RuleParam
;
import
com.yiring.app.param.location.rule.TimeAndUserParam
;
import
com.yiring.app.util.TimeUtil
;
import
com.yiring.app.util.TimeUtil
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.auth.domain.user.UserRepository
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.core.Status
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
...
@@ -34,9 +34,13 @@ import org.springframework.util.CollectionUtils;
...
@@ -34,9 +34,13 @@ import org.springframework.util.CollectionUtils;
@Component
@Component
public
class
AllowEntranceStrategy
implements
IParamInitStrategy
<
LocationFenceRuleAddParam
>,
IScanAlarmStrategy
{
public
class
AllowEntranceStrategy
implements
IParamInitStrategy
<
LocationFenceRuleAddParam
>,
IScanAlarmStrategy
{
@Resource
private
UserRepository
userRepository
;
public
AllowEntranceStrategy
()
{
public
AllowEntranceStrategy
()
{
Integer
relevanceParam
=
RelevanceParamEnum
.
ALLOW_ENTRANCE
.
getCode
();
Integer
relevanceParam
=
RelevanceParamEnum
.
ALLOW_ENTRANCE
.
getCode
();
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
ScanAlarmContext
.
register
(
relevanceParam
,
this
);
}
}
@Override
@Override
...
@@ -51,8 +55,48 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -51,8 +55,48 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"请至少配置一个允许进入的人员"
);
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"请至少配置一个允许进入的人员"
);
}
}
}
}
ruleParam
.
setDuration
(-
1
);
//如果只设置星期没有设置时间,则默认时间是全天
ruleParam
.
setDistance
(-
1
);
for
(
TimeAndUserParam
item
:
timeAndUser
)
{
for
(
TimeParam
time
:
item
.
getTime
())
{
if
(
time
.
getWeek
()
!=
null
)
{
if
(
time
.
getBeginTime
()
==
null
)
{
time
.
setBeginTime
(
"00:00:00"
);
}
if
(
time
.
getEndTime
()
==
null
)
{
time
.
setEndTime
(
"23:59:59"
);
}
}
}
}
//检查配置的员工是否存在
Specification
<
User
>
specification
=
(
root
,
query
,
criteriaBuilder
)
->
{
CriteriaBuilder
.
In
<
Object
>
in
=
criteriaBuilder
.
in
(
root
.
get
(
User
.
Fields
.
uuid
));
HashSet
<
String
>
ids
=
new
HashSet
<>();
for
(
TimeAndUserParam
item
:
timeAndUser
)
{
for
(
RelevanceUserParam
userParam
:
item
.
getUser
())
{
ids
.
add
(
userParam
.
getUuid
());
}
}
for
(
String
uuid
:
ids
)
{
in
.
value
(
uuid
);
}
return
criteriaBuilder
.
and
(
in
);
};
Map
<
String
,
List
<
User
>>
map
=
userRepository
.
findAll
(
specification
)
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
User:
:
getUuid
));
for
(
TimeAndUserParam
item
:
timeAndUser
)
{
for
(
RelevanceUserParam
userParam
:
item
.
getUser
())
{
List
<
User
>
list
=
map
.
get
(
userParam
.
getUuid
());
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"工号为:"
+
userParam
.
getUuid
()
+
"员工不存在"
);
}
userParam
.
setRealName
(
list
.
get
(
0
).
getRealName
());
}
}
ruleParam
.
setDuration
(
null
);
ruleParam
.
setDistance
(
null
);
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
return
Result
.
ok
();
return
Result
.
ok
();
}
}
...
@@ -70,9 +114,13 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -70,9 +114,13 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
TimeAndUserParam
timeAndUserParam
=
null
;
TimeAndUserParam
timeAndUserParam
=
null
;
//筛选在当前时间生效的配置
//筛选在当前时间生效的配置
for
(
TimeAndUserParam
item
:
timeAndUserParamList
)
{
for
(
TimeAndUserParam
item
:
timeAndUserParamList
)
{
if
(
TimeUtil
.
judgeTime
(
LocalDateTime
.
now
(),
item
.
getBeginTime
(),
item
.
getEndTime
()))
{
for
(
TimeParam
time
:
item
.
getTime
())
{
timeAndUserParam
=
item
;
if
(
TimeUtil
.
judgeWeek
(
LocalDateTime
.
now
(),
time
.
getWeek
()))
{
break
;
if
(
TimeUtil
.
judgeTime
(
LocalDateTime
.
now
(),
time
.
getBeginTime
(),
time
.
getEndTime
()))
{
timeAndUserParam
=
item
;
break
;
}
}
}
}
}
}
//如果不在配置的时间内,则将报警记录中的状态刷新为结束,并且需要添加的报警为空
//如果不在配置的时间内,则将报警记录中的状态刷新为结束,并且需要添加的报警为空
...
@@ -90,7 +138,7 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -90,7 +138,7 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
.
stream
()
.
stream
()
.
filter
(
e
->
!
uuids
.
contains
(
e
.
getUser
().
getUuid
()))
.
filter
(
e
->
!
uuids
.
contains
(
e
.
getUser
().
getUuid
()))
.
map
(
e
->
{
.
map
(
e
->
{
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
build
();
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
name
(
param
.
getFenceName
()).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
return
LocationFenceAlarm
return
LocationFenceAlarm
.
builder
()
.
builder
()
...
@@ -106,16 +154,7 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -106,16 +154,7 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
})
})
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
if
(!
CollectionUtils
.
isEmpty
(
oldAlarms
))
{
IScanAlarmStrategy
.
notIntersect
(
newAlarms
,
oldAlarms
,
jobVo
);
Set
<
Long
>
newSet
=
newAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
Set
<
Long
>
oldSet
=
oldAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
newAlarms
=
newAlarms
.
stream
().
filter
(
e
->
!
oldSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
oldAlarms
=
oldAlarms
.
stream
().
filter
(
e
->
!
newSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
}
jobVo
.
setAddAlarm
(
newAlarms
);
jobVo
.
setModifyAlarm
(
oldAlarms
);
return
jobVo
;
return
jobVo
;
}
}
}
}
app/src/main/java/com/yiring/app/design/strategy/rule/MaxPeopleNumberStrategy.java
浏览文件 @
31bc9e8a
...
@@ -7,10 +7,7 @@ import com.yiring.app.design.strategy.IScanAlarmStrategy;
...
@@ -7,10 +7,7 @@ import com.yiring.app.design.strategy.IScanAlarmStrategy;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.location.*
;
import
com.yiring.app.domain.location.*
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.rule.LocationFenceRuleAddParam
;
import
com.yiring.app.param.location.rule.*
;
import
com.yiring.app.param.location.rule.RuleParam
;
import
com.yiring.app.param.location.rule.TimeAndNumberParam
;
import
com.yiring.app.param.location.rule.TimeAndUserParam
;
import
com.yiring.app.util.TimeUtil
;
import
com.yiring.app.util.TimeUtil
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
...
@@ -52,16 +49,25 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
...
@@ -52,16 +49,25 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
}
}
for
(
TimeAndNumberParam
item
:
timeAndNumber
)
{
for
(
TimeAndNumberParam
item
:
timeAndNumber
)
{
if
(
item
.
getNumber
()
==
null
||
item
.
getNumber
()
<
0
)
{
if
(
item
.
getNumber
()
==
null
||
item
.
getNumber
()
<
0
)
{
item
.
setNumber
(
0
);
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"最大人数不能空或小于零"
);
}
}
if
(
item
.
getBeginTime
()
==
null
||
item
.
getEndTime
()
==
null
)
{
}
item
.
setBeginTime
(
null
);
//如果只设置星期没有设置时间,则默认时间是全天
item
.
setEndTime
(
null
);
for
(
TimeAndNumberParam
item
:
timeAndNumber
)
{
for
(
TimeParam
time
:
item
.
getTime
())
{
if
(
time
.
getWeek
()
!=
null
)
{
if
(
time
.
getBeginTime
()
==
null
)
{
time
.
setBeginTime
(
"00:00:00"
);
}
if
(
time
.
getEndTime
()
==
null
)
{
time
.
setEndTime
(
"23:59:59"
);
}
}
}
}
}
}
//将时间和距离都设为-1
//将时间和距离都设为-1
ruleParam
.
setDuration
(
-
1
);
ruleParam
.
setDuration
(
null
);
ruleParam
.
setDistance
(
-
1
);
ruleParam
.
setDistance
(
null
);
ArrayList
<
TimeAndUserParam
>
list
=
new
ArrayList
<>();
ArrayList
<
TimeAndUserParam
>
list
=
new
ArrayList
<>();
ruleParam
.
setTimeAndUser
(
list
);
ruleParam
.
setTimeAndUser
(
list
);
return
Result
.
ok
();
return
Result
.
ok
();
...
@@ -78,11 +84,19 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
...
@@ -78,11 +84,19 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
LocationFenceJobVo
jobVo
=
new
LocationFenceJobVo
();
LocationFenceJobVo
jobVo
=
new
LocationFenceJobVo
();
List
<
TimeAndNumberParam
>
timeAndNumberParamList
=
rule
.
getTimeAndNumber
();
List
<
TimeAndNumberParam
>
timeAndNumberParamList
=
rule
.
getTimeAndNumber
();
TimeAndNumberParam
timeAndNumberParam
=
null
;
TimeAndNumberParam
timeAndNumberParam
=
null
;
StringBuilder
begin
=
new
StringBuilder
();
StringBuilder
end
=
new
StringBuilder
();
//筛选在当前时间生效的配置
//筛选在当前时间生效的配置
for
(
TimeAndNumberParam
item
:
timeAndNumberParamList
)
{
for
(
TimeAndNumberParam
item
:
timeAndNumberParamList
)
{
if
(
TimeUtil
.
judgeTime
(
LocalDateTime
.
now
(),
item
.
getBeginTime
(),
item
.
getEndTime
()))
{
for
(
TimeParam
time
:
item
.
getTime
())
{
timeAndNumberParam
=
item
;
if
(
TimeUtil
.
judgeWeek
(
LocalDateTime
.
now
(),
time
.
getWeek
()))
{
break
;
if
(
TimeUtil
.
judgeTime
(
LocalDateTime
.
now
(),
time
.
getBeginTime
(),
time
.
getEndTime
()))
{
begin
.
append
(
time
.
getWeek
()).
append
(
" "
).
append
(
time
.
getBeginTime
());
end
.
append
(
time
.
getWeek
()).
append
(
" "
).
append
(
time
.
getEndTime
());
timeAndNumberParam
=
item
;
break
;
}
}
}
}
}
}
//如果现在不在配置的时间内,或围栏中的人少于配置的最大人数,则将报警记录中的状态刷新为结束,并且需要添加的报警为空
//如果现在不在配置的时间内,或围栏中的人少于配置的最大人数,则将报警记录中的状态刷新为结束,并且需要添加的报警为空
...
@@ -94,20 +108,18 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
...
@@ -94,20 +108,18 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
int
exceed
=
tagSet
.
size
()
-
timeAndNumberParam
.
getNumber
();
int
exceed
=
tagSet
.
size
()
-
timeAndNumberParam
.
getNumber
();
List
<
LocationFenceAlarm
>
newAlarms
=
new
ArrayList
<>();
List
<
LocationFenceAlarm
>
newAlarms
=
new
ArrayList
<>();
//查询围栏内人员进入时的信息
//查询围栏内人员进入时的信息
String
beginTime
=
timeAndNumberParam
.
getBeginTime
();
String
endTime
=
timeAndNumberParam
.
getEndTime
();
List
<
LocationTurnover
>
turnoverList
=
locationTurnoverRepository
.
withinFence
(
fenceId
,
true
);
List
<
LocationTurnover
>
turnoverList
=
locationTurnoverRepository
.
withinFence
(
fenceId
,
true
);
//筛选出在配置时间段内进入的进出信息
//筛选出在配置时间段内进入的进出信息
turnoverList
=
turnoverList
=
turnoverList
turnoverList
.
stream
()
.
stream
()
.
filter
(
e
->
TimeUtil
.
judge
Time
(
e
.
getTime
(),
beginTime
,
endTime
))
.
filter
(
e
->
TimeUtil
.
judge
WeekTime
(
e
.
getTime
(),
begin
.
toString
(),
end
.
toString
()
))
.
sorted
(
Comparator
.
comparing
(
LocationTurnover:
:
getTime
).
reversed
())
.
sorted
(
Comparator
.
comparing
(
LocationTurnover:
:
getTime
).
reversed
())
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
//记录触发报警的信息(例如最大人数是3,那么前三个员工进入的不会记录)
//记录触发报警的信息(例如最大人数是3,那么前三个员工进入的不会记录)
for
(
int
i
=
0
;
i
<
exceed
;
i
++)
{
for
(
int
i
=
0
;
i
<
exceed
;
i
++)
{
LocationTurnover
turnover
=
turnoverList
.
get
(
i
);
LocationTurnover
turnover
=
turnoverList
.
get
(
i
);
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
build
();
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
name
(
param
.
getFenceName
()).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
LocationFenceAlarm
locationFenceAlarm
=
LocationFenceAlarm
LocationFenceAlarm
locationFenceAlarm
=
LocationFenceAlarm
.
builder
()
.
builder
()
...
@@ -123,16 +135,7 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
...
@@ -123,16 +135,7 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
newAlarms
.
add
(
locationFenceAlarm
);
newAlarms
.
add
(
locationFenceAlarm
);
}
}
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
if
(!
CollectionUtils
.
isEmpty
(
oldAlarms
))
{
IScanAlarmStrategy
.
notIntersect
(
newAlarms
,
oldAlarms
,
jobVo
);
Set
<
Long
>
newSet
=
newAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
Set
<
Long
>
oldSet
=
oldAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
newAlarms
=
newAlarms
.
stream
().
filter
(
e
->
!
oldSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
oldAlarms
=
oldAlarms
.
stream
().
filter
(
e
->
!
newSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
}
jobVo
.
setAddAlarm
(
newAlarms
);
jobVo
.
setModifyAlarm
(
oldAlarms
);
return
jobVo
;
return
jobVo
;
}
}
}
}
app/src/main/java/com/yiring/app/design/strategy/rule/MinPeopleNumberStrategy.java
浏览文件 @
31bc9e8a
...
@@ -7,10 +7,7 @@ import com.yiring.app.design.strategy.IScanAlarmStrategy;
...
@@ -7,10 +7,7 @@ import com.yiring.app.design.strategy.IScanAlarmStrategy;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.location.*
;
import
com.yiring.app.domain.location.*
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.rule.LocationFenceRuleAddParam
;
import
com.yiring.app.param.location.rule.*
;
import
com.yiring.app.param.location.rule.RuleParam
;
import
com.yiring.app.param.location.rule.TimeAndNumberParam
;
import
com.yiring.app.param.location.rule.TimeAndUserParam
;
import
com.yiring.app.util.TimeUtil
;
import
com.yiring.app.util.TimeUtil
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
...
@@ -40,6 +37,7 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
...
@@ -40,6 +37,7 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
public
MinPeopleNumberStrategy
()
{
public
MinPeopleNumberStrategy
()
{
Integer
relevanceParam
=
RelevanceParamEnum
.
MIN_PEOPLE_NUMBER
.
getCode
();
Integer
relevanceParam
=
RelevanceParamEnum
.
MIN_PEOPLE_NUMBER
.
getCode
();
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
ScanAlarmContext
.
register
(
relevanceParam
,
this
);
}
}
@Override
@Override
...
@@ -47,20 +45,29 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
...
@@ -47,20 +45,29 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
RuleParam
ruleParam
=
param
.
getRuleParam
();
RuleParam
ruleParam
=
param
.
getRuleParam
();
List
<
TimeAndNumberParam
>
timeAndNumber
=
ruleParam
.
getTimeAndNumber
();
List
<
TimeAndNumberParam
>
timeAndNumber
=
ruleParam
.
getTimeAndNumber
();
if
(
CollectionUtils
.
isEmpty
(
timeAndNumber
))
{
if
(
CollectionUtils
.
isEmpty
(
timeAndNumber
))
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"请至少配置一条最
小
人数的规则"
);
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"请至少配置一条最
少
人数的规则"
);
}
}
for
(
TimeAndNumberParam
item
:
timeAndNumber
)
{
for
(
TimeAndNumberParam
item
:
timeAndNumber
)
{
if
(
item
.
getNumber
()
==
null
||
item
.
getNumber
()
<
0
)
{
if
(
item
.
getNumber
()
==
null
||
item
.
getNumber
()
<
0
)
{
item
.
setNumber
(
0
);
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"最大人数不能空或小于零"
);
}
}
if
(
item
.
getBeginTime
()
==
null
||
item
.
getEndTime
()
==
null
)
{
}
item
.
setBeginTime
(
null
);
//如果只设置星期没有设置时间,则默认时间是全天
item
.
setEndTime
(
null
);
for
(
TimeAndNumberParam
item
:
timeAndNumber
)
{
for
(
TimeParam
time
:
item
.
getTime
())
{
if
(
time
.
getWeek
()
!=
null
)
{
if
(
time
.
getBeginTime
()
==
null
)
{
time
.
setBeginTime
(
"00:00:00"
);
}
if
(
time
.
getEndTime
()
==
null
)
{
time
.
setEndTime
(
"23:59:59"
);
}
}
}
}
}
}
//将时间和距离都设为-1
//将时间和距离都设为-1
ruleParam
.
setDuration
(
-
1
);
ruleParam
.
setDuration
(
null
);
ruleParam
.
setDistance
(
-
1
);
ruleParam
.
setDistance
(
null
);
ArrayList
<
TimeAndUserParam
>
list
=
new
ArrayList
<>();
ArrayList
<
TimeAndUserParam
>
list
=
new
ArrayList
<>();
ruleParam
.
setTimeAndUser
(
list
);
ruleParam
.
setTimeAndUser
(
list
);
return
Result
.
ok
();
return
Result
.
ok
();
...
@@ -77,11 +84,19 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
...
@@ -77,11 +84,19 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
LocationFenceJobVo
jobVo
=
new
LocationFenceJobVo
();
LocationFenceJobVo
jobVo
=
new
LocationFenceJobVo
();
List
<
TimeAndNumberParam
>
timeAndNumberParamList
=
rule
.
getTimeAndNumber
();
List
<
TimeAndNumberParam
>
timeAndNumberParamList
=
rule
.
getTimeAndNumber
();
TimeAndNumberParam
timeAndNumberParam
=
null
;
TimeAndNumberParam
timeAndNumberParam
=
null
;
StringBuilder
begin
=
new
StringBuilder
();
StringBuilder
end
=
new
StringBuilder
();
//筛选在当前时间生效的配置
//筛选在当前时间生效的配置
for
(
TimeAndNumberParam
item
:
timeAndNumberParamList
)
{
for
(
TimeAndNumberParam
item
:
timeAndNumberParamList
)
{
if
(
TimeUtil
.
judgeTime
(
LocalDateTime
.
now
(),
item
.
getBeginTime
(),
item
.
getEndTime
()))
{
for
(
TimeParam
time
:
item
.
getTime
())
{
timeAndNumberParam
=
item
;
if
(
TimeUtil
.
judgeWeek
(
LocalDateTime
.
now
(),
time
.
getWeek
()))
{
break
;
if
(
TimeUtil
.
judgeTime
(
LocalDateTime
.
now
(),
time
.
getBeginTime
(),
time
.
getEndTime
()))
{
begin
.
append
(
time
.
getWeek
()).
append
(
" "
).
append
(
time
.
getBeginTime
());
end
.
append
(
time
.
getWeek
()).
append
(
" "
).
append
(
time
.
getEndTime
());
timeAndNumberParam
=
item
;
break
;
}
}
}
}
}
}
//如果现在不在配置的时间内,或围栏中的人大于配置的最小人数,则将报警记录中的状态刷新为结束,并且需要添加的报警为空
//如果现在不在配置的时间内,或围栏中的人大于配置的最小人数,则将报警记录中的状态刷新为结束,并且需要添加的报警为空
...
@@ -92,21 +107,19 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
...
@@ -92,21 +107,19 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
//少的人数
//少的人数
int
missing
=
timeAndNumberParam
.
getNumber
()
-
tagSet
.
size
();
int
missing
=
timeAndNumberParam
.
getNumber
()
-
tagSet
.
size
();
List
<
LocationFenceAlarm
>
newAlarms
=
new
ArrayList
<>();
List
<
LocationFenceAlarm
>
newAlarms
=
new
ArrayList
<>();
//查询出这个围栏的信息
//查询员工’出‘这个围栏的进出信息
String
beginTime
=
timeAndNumberParam
.
getBeginTime
();
String
endTime
=
timeAndNumberParam
.
getEndTime
();
List
<
LocationTurnover
>
turnoverList
=
locationTurnoverRepository
.
withinFence
(
fenceId
,
false
);
List
<
LocationTurnover
>
turnoverList
=
locationTurnoverRepository
.
withinFence
(
fenceId
,
false
);
//筛选出在配置时间段内
出
这个围栏的进出信息
//筛选出在配置时间段内
’出‘
这个围栏的进出信息
turnoverList
=
turnoverList
=
turnoverList
turnoverList
.
stream
()
.
stream
()
.
filter
(
e
->
TimeUtil
.
judge
Time
(
e
.
getTime
(),
beginTime
,
endTime
))
.
filter
(
e
->
TimeUtil
.
judge
WeekTime
(
e
.
getTime
(),
begin
.
toString
(),
end
.
toString
()
))
.
sorted
(
Comparator
.
comparing
(
LocationTurnover:
:
getTime
).
reversed
())
.
sorted
(
Comparator
.
comparing
(
LocationTurnover:
:
getTime
).
reversed
())
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
//记录触发报警的信息(例如最小人数是3,这段时间一开始有6个人在围栏,然后出去的4个,那么只有第四个人出去才会记录)
//记录触发报警的信息(例如最小人数是3,这段时间一开始有6个人在围栏,然后出去的4个,那么只有第四个人出去才会记录)
for
(
int
i
=
0
;
i
<
missing
;
i
++)
{
for
(
int
i
=
0
;
i
<
missing
;
i
++)
{
LocationTurnover
turnover
=
turnoverList
.
get
(
i
);
LocationTurnover
turnover
=
turnoverList
.
get
(
i
);
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
build
();
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
name
(
param
.
getFenceName
()).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
LocationFenceAlarm
locationFenceAlarm
=
LocationFenceAlarm
LocationFenceAlarm
locationFenceAlarm
=
LocationFenceAlarm
.
builder
()
.
builder
()
...
@@ -122,16 +135,7 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
...
@@ -122,16 +135,7 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
newAlarms
.
add
(
locationFenceAlarm
);
newAlarms
.
add
(
locationFenceAlarm
);
}
}
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
if
(!
CollectionUtils
.
isEmpty
(
oldAlarms
))
{
IScanAlarmStrategy
.
notIntersect
(
newAlarms
,
oldAlarms
,
jobVo
);
Set
<
Long
>
newSet
=
newAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
Set
<
Long
>
oldSet
=
oldAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
newAlarms
=
newAlarms
.
stream
().
filter
(
e
->
!
oldSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
oldAlarms
=
oldAlarms
.
stream
().
filter
(
e
->
!
newSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
}
jobVo
.
setAddAlarm
(
newAlarms
);
jobVo
.
setModifyAlarm
(
oldAlarms
);
return
jobVo
;
return
jobVo
;
}
}
}
}
app/src/main/java/com/yiring/app/design/strategy/rule/NotAllowLeaveStrategy.java
浏览文件 @
31bc9e8a
...
@@ -7,21 +7,19 @@ import com.yiring.app.design.strategy.IScanAlarmStrategy;
...
@@ -7,21 +7,19 @@ import com.yiring.app.design.strategy.IScanAlarmStrategy;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.location.*
;
import
com.yiring.app.domain.location.*
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.rule.LocationFenceRuleAddParam
;
import
com.yiring.app.param.location.rule.*
;
import
com.yiring.app.param.location.rule.RelevanceUserParam
;
import
com.yiring.app.param.location.rule.RuleParam
;
import
com.yiring.app.param.location.rule.TimeAndUserParam
;
import
com.yiring.app.util.TimeUtil
;
import
com.yiring.app.util.TimeUtil
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.auth.domain.user.UserRepository
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.core.Status
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
...
@@ -37,9 +35,13 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -37,9 +35,13 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
@Resource
@Resource
private
LocationTurnoverRepository
locationTurnoverRepository
;
private
LocationTurnoverRepository
locationTurnoverRepository
;
@Resource
private
UserRepository
userRepository
;
public
NotAllowLeaveStrategy
()
{
public
NotAllowLeaveStrategy
()
{
Integer
relevanceParam
=
RelevanceParamEnum
.
NOT_ALLOW_LEAVE
.
getCode
();
Integer
relevanceParam
=
RelevanceParamEnum
.
NOT_ALLOW_LEAVE
.
getCode
();
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
ScanAlarmContext
.
register
(
relevanceParam
,
this
);
}
}
@Override
@Override
...
@@ -54,8 +56,48 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -54,8 +56,48 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"请至少配置一个不允许离开的人员"
);
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"请至少配置一个不允许离开的人员"
);
}
}
}
}
ruleParam
.
setDuration
(-
1
);
//如果只设置星期没有设置时间,则默认时间是全天
ruleParam
.
setDistance
(-
1
);
for
(
TimeAndUserParam
item
:
timeAndUser
)
{
for
(
TimeParam
time
:
item
.
getTime
())
{
if
(
time
.
getWeek
()
!=
null
)
{
if
(
time
.
getBeginTime
()
==
null
)
{
time
.
setBeginTime
(
"00:00:00"
);
}
if
(
time
.
getEndTime
()
==
null
)
{
time
.
setEndTime
(
"23:59:59"
);
}
}
}
}
//检查配置的员工是否存在
Specification
<
User
>
specification
=
(
root
,
query
,
criteriaBuilder
)
->
{
CriteriaBuilder
.
In
<
Object
>
in
=
criteriaBuilder
.
in
(
root
.
get
(
User
.
Fields
.
uuid
));
HashSet
<
String
>
ids
=
new
HashSet
<>();
for
(
TimeAndUserParam
item
:
timeAndUser
)
{
for
(
RelevanceUserParam
userParam
:
item
.
getUser
())
{
ids
.
add
(
userParam
.
getUuid
());
}
}
for
(
String
uuid
:
ids
)
{
in
.
value
(
uuid
);
}
return
criteriaBuilder
.
and
(
in
);
};
Map
<
String
,
List
<
User
>>
map
=
userRepository
.
findAll
(
specification
)
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
User:
:
getUuid
));
for
(
TimeAndUserParam
item
:
timeAndUser
)
{
for
(
RelevanceUserParam
userParam
:
item
.
getUser
())
{
List
<
User
>
list
=
map
.
get
(
userParam
.
getUuid
());
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"工号为:"
+
userParam
.
getUuid
()
+
"员工不存在"
);
}
userParam
.
setRealName
(
list
.
get
(
0
).
getRealName
());
}
}
ruleParam
.
setDuration
(
null
);
ruleParam
.
setDistance
(
null
);
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
return
Result
.
ok
();
return
Result
.
ok
();
}
}
...
@@ -71,11 +113,19 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -71,11 +113,19 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
LocationFenceJobVo
jobVo
=
new
LocationFenceJobVo
();
LocationFenceJobVo
jobVo
=
new
LocationFenceJobVo
();
List
<
TimeAndUserParam
>
timeAndUserParamList
=
rule
.
getTimeAndUser
();
List
<
TimeAndUserParam
>
timeAndUserParamList
=
rule
.
getTimeAndUser
();
TimeAndUserParam
timeAndUserParam
=
null
;
TimeAndUserParam
timeAndUserParam
=
null
;
StringBuilder
begin
=
new
StringBuilder
();
StringBuilder
end
=
new
StringBuilder
();
//筛选在当前时间生效的配置
//筛选在当前时间生效的配置
for
(
TimeAndUserParam
item
:
timeAndUserParamList
)
{
for
(
TimeAndUserParam
item
:
timeAndUserParamList
)
{
if
(
TimeUtil
.
judgeTime
(
LocalDateTime
.
now
(),
item
.
getBeginTime
(),
item
.
getEndTime
()))
{
for
(
TimeParam
time
:
item
.
getTime
())
{
timeAndUserParam
=
item
;
if
(
TimeUtil
.
judgeWeek
(
LocalDateTime
.
now
(),
time
.
getWeek
()))
{
break
;
if
(
TimeUtil
.
judgeTime
(
LocalDateTime
.
now
(),
time
.
getBeginTime
(),
time
.
getEndTime
()))
{
timeAndUserParam
=
item
;
begin
.
append
(
time
.
getWeek
()).
append
(
" "
).
append
(
time
.
getBeginTime
());
end
.
append
(
time
.
getWeek
()).
append
(
" "
).
append
(
time
.
getEndTime
());
break
;
}
}
}
}
}
}
//如果不在配置的时间内,则将报警记录中的状态刷新为结束,并且需要添加的报警为空
//如果不在配置的时间内,则将报警记录中的状态刷新为结束,并且需要添加的报警为空
...
@@ -83,15 +133,13 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -83,15 +133,13 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
jobVo
.
setModifyAlarm
(
oldAlarms
);
jobVo
.
setModifyAlarm
(
oldAlarms
);
return
jobVo
;
return
jobVo
;
}
}
String
beginTime
=
timeAndUserParam
.
getBeginTime
();
String
endTime
=
timeAndUserParam
.
getEndTime
();
//筛选出在配置时间段内出这个围栏的进出信息
//筛选出在配置时间段内出这个围栏的进出信息
List
<
LocationTurnover
>
turnoverList
=
locationTurnoverRepository
.
withinFence
(
fenceId
,
false
);
List
<
LocationTurnover
>
turnoverList
=
locationTurnoverRepository
.
withinFence
(
fenceId
,
false
);
//筛选出在配置时间段内出这个围栏的进出信息
//筛选出在配置时间段内出这个围栏的进出信息
turnoverList
=
turnoverList
=
turnoverList
turnoverList
.
stream
()
.
stream
()
.
filter
(
e
->
TimeUtil
.
judgeTime
(
e
.
getTime
(),
begin
Time
,
endTime
))
.
filter
(
e
->
TimeUtil
.
judgeTime
(
e
.
getTime
(),
begin
.
toString
(),
end
.
toString
()
))
.
sorted
(
Comparator
.
comparing
(
LocationTurnover:
:
getTime
).
reversed
())
.
sorted
(
Comparator
.
comparing
(
LocationTurnover:
:
getTime
).
reversed
())
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
//筛选出离开围栏的人员是不允许离开的人员
//筛选出离开围栏的人员是不允许离开的人员
...
@@ -104,7 +152,7 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -104,7 +152,7 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
.
stream
()
.
stream
()
.
filter
(
e
->
uuids
.
contains
(
e
.
getTag
().
getUser
().
getUuid
()))
.
filter
(
e
->
uuids
.
contains
(
e
.
getTag
().
getUser
().
getUuid
()))
.
map
(
e
->
{
.
map
(
e
->
{
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
build
();
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
name
(
param
.
getFenceName
()).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
return
LocationFenceAlarm
return
LocationFenceAlarm
.
builder
()
.
builder
()
...
@@ -120,16 +168,7 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
...
@@ -120,16 +168,7 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
})
})
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
if
(!
CollectionUtils
.
isEmpty
(
oldAlarms
))
{
IScanAlarmStrategy
.
notIntersect
(
newAlarms
,
oldAlarms
,
jobVo
);
Set
<
Long
>
newSet
=
newAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
Set
<
Long
>
oldSet
=
oldAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
newAlarms
=
newAlarms
.
stream
().
filter
(
e
->
!
oldSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
oldAlarms
=
oldAlarms
.
stream
().
filter
(
e
->
!
newSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
}
jobVo
.
setAddAlarm
(
newAlarms
);
jobVo
.
setModifyAlarm
(
oldAlarms
);
return
jobVo
;
return
jobVo
;
}
}
}
}
app/src/main/java/com/yiring/app/design/strategy/rule/RetentionDurationStrategy.java
浏览文件 @
31bc9e8a
...
@@ -19,7 +19,6 @@ import java.util.Set;
...
@@ -19,7 +19,6 @@ import java.util.Set;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
/**
/**
* 滞留时长相关策略
* 滞留时长相关策略
...
@@ -36,6 +35,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
...
@@ -36,6 +35,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
public
RetentionDurationStrategy
()
{
public
RetentionDurationStrategy
()
{
Integer
relevanceParam
=
RelevanceParamEnum
.
RETENTION_DURATION
.
getCode
();
Integer
relevanceParam
=
RelevanceParamEnum
.
RETENTION_DURATION
.
getCode
();
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
ScanAlarmContext
.
register
(
relevanceParam
,
this
);
}
}
@Override
@Override
...
@@ -44,7 +44,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
...
@@ -44,7 +44,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
if
(
ruleParam
.
getDuration
()
==
null
||
ruleParam
.
getDuration
()
<
0
)
{
if
(
ruleParam
.
getDuration
()
==
null
||
ruleParam
.
getDuration
()
<
0
)
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"滞留时长异常"
);
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"滞留时长异常"
);
}
}
ruleParam
.
setDistance
(
-
1
);
ruleParam
.
setDistance
(
null
);
ruleParam
.
setTimeAndUser
(
new
ArrayList
<>());
ruleParam
.
setTimeAndUser
(
new
ArrayList
<>());
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
return
Result
.
ok
();
return
Result
.
ok
();
...
@@ -67,7 +67,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
...
@@ -67,7 +67,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
.
stream
()
.
stream
()
.
filter
(
e
->
e
.
getTime
().
isBefore
(
time
))
.
filter
(
e
->
e
.
getTime
().
isBefore
(
time
))
.
map
(
e
->
{
.
map
(
e
->
{
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
build
();
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
name
(
param
.
getFenceName
()).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
return
LocationFenceAlarm
return
LocationFenceAlarm
.
builder
()
.
builder
()
...
@@ -83,16 +83,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
...
@@ -83,16 +83,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
})
})
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
if
(!
CollectionUtils
.
isEmpty
(
oldAlarms
))
{
IScanAlarmStrategy
.
notIntersect
(
newAlarms
,
oldAlarms
,
jobVo
);
Set
<
Long
>
newSet
=
newAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
Set
<
Long
>
oldSet
=
oldAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
newAlarms
=
newAlarms
.
stream
().
filter
(
e
->
!
oldSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
oldAlarms
=
oldAlarms
.
stream
().
filter
(
e
->
!
newSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
}
jobVo
.
setAddAlarm
(
newAlarms
);
jobVo
.
setModifyAlarm
(
oldAlarms
);
return
jobVo
;
return
jobVo
;
}
}
}
}
app/src/main/java/com/yiring/app/design/strategy/rule/StaticDurationStrategy.java
浏览文件 @
31bc9e8a
...
@@ -20,7 +20,6 @@ import java.util.List;
...
@@ -20,7 +20,6 @@ import java.util.List;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
/**
/**
* 静止时长相关策略
* 静止时长相关策略
...
@@ -34,6 +33,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
...
@@ -34,6 +33,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
public
StaticDurationStrategy
()
{
public
StaticDurationStrategy
()
{
Integer
relevanceParam
=
RelevanceParamEnum
.
STATIC_DURATION
.
getCode
();
Integer
relevanceParam
=
RelevanceParamEnum
.
STATIC_DURATION
.
getCode
();
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
ScanAlarmContext
.
register
(
relevanceParam
,
this
);
}
}
@Override
@Override
...
@@ -42,7 +42,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
...
@@ -42,7 +42,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
if
(
ruleParam
.
getDuration
()
==
null
||
ruleParam
.
getDuration
()
<
0
)
{
if
(
ruleParam
.
getDuration
()
==
null
||
ruleParam
.
getDuration
()
<
0
)
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"静止时长异常"
);
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"静止时长异常"
);
}
}
ruleParam
.
setDistance
(
-
1
);
ruleParam
.
setDistance
(
null
);
ruleParam
.
setTimeAndUser
(
new
ArrayList
<>());
ruleParam
.
setTimeAndUser
(
new
ArrayList
<>());
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
return
Result
.
ok
();
return
Result
.
ok
();
...
@@ -65,7 +65,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
...
@@ -65,7 +65,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
.
filter
(
LocationTag:
:
getSilent
)
.
filter
(
LocationTag:
:
getSilent
)
.
filter
(
e
->
e
.
getTime
().
isBefore
(
time
))
.
filter
(
e
->
e
.
getTime
().
isBefore
(
time
))
.
map
(
e
->
{
.
map
(
e
->
{
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
build
();
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
name
(
param
.
getFenceName
()).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
return
LocationFenceAlarm
return
LocationFenceAlarm
.
builder
()
.
builder
()
...
@@ -81,16 +81,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
...
@@ -81,16 +81,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
})
})
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
if
(!
CollectionUtils
.
isEmpty
(
oldAlarms
))
{
IScanAlarmStrategy
.
notIntersect
(
newAlarms
,
oldAlarms
,
jobVo
);
Set
<
Long
>
newSet
=
newAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
Set
<
Long
>
oldSet
=
oldAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
newAlarms
=
newAlarms
.
stream
().
filter
(
e
->
!
oldSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
oldAlarms
=
oldAlarms
.
stream
().
filter
(
e
->
!
newSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
}
jobVo
.
setAddAlarm
(
newAlarms
);
jobVo
.
setModifyAlarm
(
oldAlarms
);
return
jobVo
;
return
jobVo
;
}
}
}
}
app/src/main/java/com/yiring/app/design/strategy/rule/TriggerAlarmDistanceStrategy.java
浏览文件 @
31bc9e8a
...
@@ -23,7 +23,6 @@ import java.util.stream.Collectors;
...
@@ -23,7 +23,6 @@ import java.util.stream.Collectors;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
org.locationtech.jts.geom.Geometry
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
/**
/**
* 触发报警距离相关策略
* 触发报警距离相关策略
...
@@ -40,6 +39,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
...
@@ -40,6 +39,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
public
TriggerAlarmDistanceStrategy
()
{
public
TriggerAlarmDistanceStrategy
()
{
Integer
relevanceParam
=
RelevanceParamEnum
.
TRIGGER_ALARM_DISTANCE
.
getCode
();
Integer
relevanceParam
=
RelevanceParamEnum
.
TRIGGER_ALARM_DISTANCE
.
getCode
();
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
LocationFenceRuleContext
.
register
(
relevanceParam
,
this
);
ScanAlarmContext
.
register
(
relevanceParam
,
this
);
}
}
@Override
@Override
...
@@ -48,7 +48,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
...
@@ -48,7 +48,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
if
(
ruleParam
.
getDistance
()
==
null
||
ruleParam
.
getDistance
()
<
0
)
{
if
(
ruleParam
.
getDistance
()
==
null
||
ruleParam
.
getDistance
()
<
0
)
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"触发报警距离异常"
);
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"触发报警距离异常"
);
}
}
ruleParam
.
setDuration
(
-
1
);
ruleParam
.
setDuration
(
null
);
ruleParam
.
setTimeAndUser
(
new
ArrayList
<>());
ruleParam
.
setTimeAndUser
(
new
ArrayList
<>());
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
ruleParam
.
setTimeAndNumber
(
new
ArrayList
<>());
return
Result
.
ok
();
return
Result
.
ok
();
...
@@ -70,7 +70,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
...
@@ -70,7 +70,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
List
<
LocationFenceAlarm
>
newAlarms
=
locationTags
List
<
LocationFenceAlarm
>
newAlarms
=
locationTags
.
stream
()
.
stream
()
.
map
(
e
->
{
.
map
(
e
->
{
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
build
();
LocationFence
fence
=
LocationFence
.
builder
().
id
(
fenceId
).
name
(
param
.
getFenceName
()).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
AlarmType
alarmType
=
AlarmType
.
builder
().
id
(
alarmTypeId
).
build
();
return
LocationFenceAlarm
return
LocationFenceAlarm
.
builder
()
.
builder
()
...
@@ -86,16 +86,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
...
@@ -86,16 +86,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
})
})
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
//取两个集合没有相交的部分,newAlarms不重合的部分代表需要添加的报警,oldAlarms不重合的部分代表需要结束的报警
if
(!
CollectionUtils
.
isEmpty
(
oldAlarms
))
{
IScanAlarmStrategy
.
notIntersect
(
newAlarms
,
oldAlarms
,
jobVo
);
Set
<
Long
>
newSet
=
newAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
Set
<
Long
>
oldSet
=
oldAlarms
.
stream
().
map
(
e
->
e
.
getTag
().
getId
()).
collect
(
Collectors
.
toSet
());
newAlarms
=
newAlarms
.
stream
().
filter
(
e
->
!
oldSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
oldAlarms
=
oldAlarms
.
stream
().
filter
(
e
->
!
newSet
.
contains
(
e
.
getTag
().
getId
())).
collect
(
Collectors
.
toList
());
}
jobVo
.
setAddAlarm
(
newAlarms
);
jobVo
.
setModifyAlarm
(
oldAlarms
);
return
jobVo
;
return
jobVo
;
}
}
}
}
app/src/main/java/com/yiring/app/domain/district/District.java
浏览文件 @
31bc9e8a
...
@@ -51,6 +51,9 @@ public class District implements Serializable {
...
@@ -51,6 +51,9 @@ public class District implements Serializable {
@Comment
(
"区域信息名称"
)
@Comment
(
"区域信息名称"
)
private
String
name
;
private
String
name
;
@Comment
(
"地图id"
)
private
Integer
mapId
;
@Comment
(
"风险等级"
)
@Comment
(
"风险等级"
)
private
String
riskGrade
;
private
String
riskGrade
;
...
...
app/src/main/java/com/yiring/app/domain/location/FenceAlarmPushLog.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
location
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
javax.persistence.Entity
;
import
javax.persistence.JoinColumn
;
import
javax.persistence.ManyToOne
;
import
javax.persistence.Table
;
import
lombok.*
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.annotations.Comment
;
/**
* @author tml
* @version 1.0
* @date 2022/5/18 9:25
*/
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@FieldNameConstants
@Entity
@Table
(
name
=
"BS_FENCE_ALARM_PUSH_LOG"
)
@Comment
(
"围栏报警推送记录"
)
public
class
FenceAlarmPushLog
extends
BasicEntity
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
7859768330784835564L
;
@ManyToOne
@JoinColumn
(
name
=
"fence_alarm_id"
)
@JsonIgnore
@Comment
(
"围栏报警记录"
)
private
LocationFenceAlarm
fenceAlarm
;
@Comment
(
"通知方式"
)
private
Integer
informManner
;
@Comment
(
"接收状态"
)
private
Integer
status
;
@Comment
(
"接收时间"
)
private
LocalDateTime
time
;
@ManyToOne
@JoinColumn
(
name
=
"user_id"
)
@JsonIgnore
@Comment
(
"报警接收人"
)
User
user
;
}
app/src/main/java/com/yiring/app/domain/location/FenceAlarmPushLogRepository.java
0 → 100644
浏览文件 @
31bc9e8a
/* (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/18 10:29
*/
@Repository
public
interface
FenceAlarmPushLogRepository
extends
JpaRepository
<
FenceAlarmPushLog
,
Serializable
>,
JpaSpecificationExecutor
<
FenceAlarmPushLog
>
{}
app/src/main/java/com/yiring/app/domain/location/LocationAlarmRule.java
浏览文件 @
31bc9e8a
...
@@ -13,6 +13,7 @@ import lombok.experimental.FieldNameConstants;
...
@@ -13,6 +13,7 @@ import lombok.experimental.FieldNameConstants;
import
lombok.experimental.SuperBuilder
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.Where
;
import
org.hibernate.annotations.Where
;
import
org.springframework.util.CollectionUtils
;
/**
/**
* @author tml
* @author tml
...
@@ -62,4 +63,20 @@ public class LocationAlarmRule extends BasicEntity implements Serializable {
...
@@ -62,4 +63,20 @@ public class LocationAlarmRule extends BasicEntity implements Serializable {
@Comment
(
value
=
"是否删除"
)
@Comment
(
value
=
"是否删除"
)
@Column
(
nullable
=
false
)
@Column
(
nullable
=
false
)
Boolean
deleted
;
Boolean
deleted
;
/**
* 判断本实体类的报警类型集是否包含搞报警类型
* @param alarmType 报警类型
* @return true:包含 false:不包含
*/
public
boolean
typesContains
(
AlarmType
alarmType
)
{
if
(!
CollectionUtils
.
isEmpty
(
alarmTypes
))
{
for
(
AlarmType
item
:
alarmTypes
)
{
if
(
item
.
getId
().
equals
(
alarmType
.
getId
()))
{
return
true
;
}
}
}
return
false
;
}
}
}
app/src/main/java/com/yiring/app/domain/location/LocationAlarmRuleRepository.java
浏览文件 @
31bc9e8a
...
@@ -2,8 +2,11 @@
...
@@ -2,8 +2,11 @@
package
com
.
yiring
.
app
.
domain
.
location
;
package
com
.
yiring
.
app
.
domain
.
location
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Collection
;
import
java.util.List
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
/**
/**
...
@@ -13,4 +16,15 @@ import org.springframework.stereotype.Repository;
...
@@ -13,4 +16,15 @@ import org.springframework.stereotype.Repository;
*/
*/
@Repository
@Repository
public
interface
LocationAlarmRuleRepository
public
interface
LocationAlarmRuleRepository
extends
JpaRepository
<
LocationAlarmRule
,
Serializable
>,
JpaSpecificationExecutor
<
LocationAlarmRule
>
{}
extends
JpaRepository
<
LocationAlarmRule
,
Serializable
>,
JpaSpecificationExecutor
<
LocationAlarmRule
>
{
/**
* 根据多个围栏id查询
* @param fenceIds 围栏id
* @return 规则
*/
@Query
(
value
=
"SELECT * FROM BS_LOCATION_ALARM_RULE WHERE deleted = false AND fence_id IN (?1)"
,
nativeQuery
=
true
)
List
<
LocationAlarmRule
>
findAllByFenceIds
(
Collection
<
Long
>
fenceIds
);
}
app/src/main/java/com/yiring/app/domain/location/LocationFence.java
浏览文件 @
31bc9e8a
...
@@ -93,6 +93,12 @@ public class LocationFence extends BasicEntity implements Serializable {
...
@@ -93,6 +93,12 @@ public class LocationFence extends BasicEntity implements Serializable {
@Builder
.
Default
@Builder
.
Default
@ManyToMany
(
fetch
=
FetchType
.
LAZY
)
@ManyToMany
(
fetch
=
FetchType
.
LAZY
)
Set
<
LocationTag
>
tags
=
new
HashSet
<>(
0
);
Set
<
LocationTag
>
tags
=
new
HashSet
<>(
0
);
@ToString
.
Exclude
@Comment
(
"围栏中的报警记录集合"
)
@Builder
.
Default
@OneToMany
(
mappedBy
=
"fence"
)
Set
<
LocationFenceAlarm
>
fenceAlarms
=
new
HashSet
<>(
0
);
/*@SuppressWarnings({ "unused" })
/*@SuppressWarnings({ "unused" })
public enum Mode {
public enum Mode {
NORMAL("常规区域"),
NORMAL("常规区域"),
...
...
app/src/main/java/com/yiring/app/domain/location/LocationFenceAlarm.java
浏览文件 @
31bc9e8a
...
@@ -7,6 +7,9 @@ import com.yiring.common.domain.BasicEntity;
...
@@ -7,6 +7,9 @@ import com.yiring.common.domain.BasicEntity;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
import
javax.persistence.*
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldDefaults
;
...
@@ -71,8 +74,10 @@ public class LocationFenceAlarm extends BasicEntity implements Serializable {
...
@@ -71,8 +74,10 @@ public class LocationFenceAlarm extends BasicEntity implements Serializable {
@Enumerated
(
EnumType
.
STRING
)
@Enumerated
(
EnumType
.
STRING
)
Status
status
;
Status
status
;
// 推送记录集合(含接收状态)
@Builder
.
Default
// TODO
@OneToMany
(
mappedBy
=
"fenceAlarm"
)
@Comment
(
"推送记录"
)
List
<
FenceAlarmPushLog
>
pushLogs
=
new
ArrayList
<>();
@SuppressWarnings
({
"unused"
})
@SuppressWarnings
({
"unused"
})
public
enum
Status
{
public
enum
Status
{
...
@@ -93,4 +98,28 @@ public class LocationFenceAlarm extends BasicEntity implements Serializable {
...
@@ -93,4 +98,28 @@ public class LocationFenceAlarm extends BasicEntity implements Serializable {
return
flag
?
ING
:
OVER
;
return
flag
?
ING
:
OVER
;
}
}
}
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
getClass
()
!=
o
.
getClass
())
return
false
;
LocationFenceAlarm
that
=
(
LocationFenceAlarm
)
o
;
return
(
Objects
.
equals
(
fence
,
that
.
fence
)
&&
Objects
.
equals
(
point
,
that
.
point
)
&&
Objects
.
equals
(
areaId
,
that
.
areaId
)
&&
Objects
.
equals
(
user
,
that
.
user
)
&&
Objects
.
equals
(
tag
,
that
.
tag
)
&&
Objects
.
equals
(
startTime
,
that
.
startTime
)
&&
Objects
.
equals
(
endTime
,
that
.
endTime
)
&&
Objects
.
equals
(
type
,
that
.
type
)
&&
status
==
that
.
status
&&
Objects
.
equals
(
pushLogs
,
that
.
pushLogs
)
);
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
fence
,
point
,
areaId
,
user
,
tag
,
startTime
,
endTime
,
type
,
status
,
pushLogs
);
}
}
}
app/src/main/java/com/yiring/app/domain/location/LocationFenceRepository.java
浏览文件 @
31bc9e8a
...
@@ -2,11 +2,15 @@
...
@@ -2,11 +2,15 @@
package
com
.
yiring
.
app
.
domain
.
location
;
package
com
.
yiring
.
app
.
domain
.
location
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
org.locationtech.jts.geom.Geometry
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
/**
/**
...
@@ -58,4 +62,17 @@ public interface LocationFenceRepository
...
@@ -58,4 +62,17 @@ public interface LocationFenceRepository
nativeQuery
=
true
nativeQuery
=
true
)
)
List
<
LocationFence
>
findByGeometryContains
(
Long
areaId
,
Geometry
geometry
);
List
<
LocationFence
>
findByGeometryContains
(
Long
areaId
,
Geometry
geometry
);
/**
* 批量启用或停用围栏
* @param ids 围栏id集
* @param enable true:启用 false:停用
* @param now 当前时间
* @return 修改了几条
*/
@Query
(
value
=
"UPDATE LocationFence set enable = :enable, updateTime = :now WHERE id IN (:ids) AND deleted = false "
)
@Modifying
int
batchEnable
(
@Param
(
"ids"
)
Set
<
Long
>
ids
,
@Param
(
"enable"
)
boolean
enable
,
@Param
(
"now"
)
LocalDateTime
now
);
}
}
app/src/main/java/com/yiring/app/domain/location/LocationFenceRule.java
浏览文件 @
31bc9e8a
...
@@ -53,6 +53,7 @@ public class LocationFenceRule extends BasicEntity implements Serializable {
...
@@ -53,6 +53,7 @@ public class LocationFenceRule extends BasicEntity implements Serializable {
private
Integer
relevanceParamType
;
private
Integer
relevanceParamType
;
@Comment
(
"规则,用json存入"
)
@Comment
(
"规则,用json存入"
)
@Column
(
columnDefinition
=
"text"
)
private
String
rule
;
private
String
rule
;
@Comment
(
value
=
"是否删除"
)
@Comment
(
value
=
"是否删除"
)
...
...
app/src/main/java/com/yiring/app/domain/location/LocationFenceRuleRepository.java
浏览文件 @
31bc9e8a
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
package
com
.
yiring
.
app
.
domain
.
location
;
package
com
.
yiring
.
app
.
domain
.
location
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.List
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
...
@@ -13,4 +14,11 @@ import org.springframework.stereotype.Repository;
...
@@ -13,4 +14,11 @@ import org.springframework.stereotype.Repository;
*/
*/
@Repository
@Repository
public
interface
LocationFenceRuleRepository
public
interface
LocationFenceRuleRepository
extends
JpaRepository
<
LocationFenceRule
,
Serializable
>,
JpaSpecificationExecutor
<
LocationFenceRule
>
{}
extends
JpaRepository
<
LocationFenceRule
,
Serializable
>,
JpaSpecificationExecutor
<
LocationFenceRule
>
{
/**
* 根据围栏id查询规则
* @param fence 围栏id
* @return 规则
*/
List
<
LocationFenceRule
>
findAllByFence
(
LocationFence
fence
);
}
app/src/main/java/com/yiring/app/domain/risk/RiskWarn.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
risk
;
import
com.yiring.app.domain.workArea.WorkArea
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.annotations.Comment
;
import
org.locationtech.jts.geom.Point
;
/**
* @author tml
* @version 1.0
* @date 2022/5/20 17:19
*/
@Getter
@Setter
@ToString
@SuperBuilder
(
toBuilder
=
true
)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@Entity
@Table
(
name
=
"BS_RISK_WARN"
,
uniqueConstraints
=
@UniqueConstraint
(
columnNames
=
{
"locationNum"
}))
@Comment
(
"风险预警"
)
public
class
RiskWarn
extends
BasicEntity
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1345477064611048638L
;
@Comment
(
"所属工区"
)
@ManyToOne
@JoinColumn
(
name
=
"workArea_id"
)
private
WorkArea
workArea
;
@Comment
(
"安装位置"
)
private
String
install
;
@Comment
(
"经纬度"
)
@Column
(
columnDefinition
=
"geometry(PointZ,4326)"
)
private
Point
point
;
@Comment
(
"监控参数"
)
private
String
monitoring
;
@Comment
(
"位号"
)
private
String
locationNum
;
@Comment
(
"量程起始值"
)
private
BigDecimal
min
;
@Comment
(
"量程结束值"
)
private
BigDecimal
max
;
@Comment
(
"量程单位"
)
private
String
unit
;
@Comment
(
"启用"
)
private
Boolean
enable
;
@Comment
(
"最新监测值"
)
private
BigDecimal
newestMonitor
;
@Comment
(
"最新预警状态:1-正常,2-预警中"
)
private
Integer
warnStatus
;
@Comment
(
"最新阈值状态:1-低低,2-低,3-高,4-高高,5-熄灭"
)
private
Integer
thresholdStatus
;
@Comment
(
"最新风险等级::1-红色风险,2-橙色风险,3-黄色风险,4-蓝色风险"
)
private
Integer
riskLevel
;
@Comment
(
"最新状态更新时间"
)
private
LocalDateTime
newestUpdateTime
;
@ToString
.
Exclude
@Comment
(
"阈值区间信息"
)
@Builder
.
Default
@OneToMany
(
cascade
=
{
CascadeType
.
PERSIST
,
CascadeType
.
REFRESH
})
@JoinColumn
(
name
=
"risk_warn_id"
)
private
List
<
Threshold
>
thresholds
=
new
ArrayList
<>();
}
app/src/main/java/com/yiring/app/domain/risk/RiskWarnRepository.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
risk
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.util.Set
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.stereotype.Repository
;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 17:58
*/
@Repository
public
interface
RiskWarnRepository
extends
JpaRepository
<
RiskWarn
,
Serializable
>,
JpaSpecificationExecutor
<
RiskWarn
>
{
/**
* 批量启用或停用
* @param ids ids
* @param enable 启用或停用
* @param now 当前时间
* @return 修改的条数
*/
@Query
(
value
=
"UPDATE RiskWarn SET enable = :enable, updateTime = :now WHERE id IN (:ids)"
)
@Modifying
int
batchEnable
(
@Param
(
"ids"
)
Set
<
Long
>
ids
,
@Param
(
"enable"
)
boolean
enable
,
@Param
(
"now"
)
LocalDateTime
now
);
}
app/src/main/java/com/yiring/app/domain/risk/Threshold.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
risk
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.annotations.Comment
;
/**
* @author tml
* @version 1.0
* @date 2022/5/24 11:21
*/
@Getter
@Setter
@ToString
@SuperBuilder
(
toBuilder
=
true
)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@Entity
@Table
(
name
=
"BS_THRESHOLD"
)
@Comment
(
"阈值区间信息"
)
public
class
Threshold
extends
BasicEntity
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
3115736944401082777L
;
/*@ManyToOne
@JoinColumn(name = "risk_warn_id")
@Comment("对应的风险预警信息")
private RiskWarn riskWarn;*/
@Comment
(
"阈值区间起始值"
)
private
String
min
;
@Comment
(
"阈值区间结束值"
)
private
String
max
;
@Comment
(
"阈值状态"
)
private
Integer
status
;
@Comment
(
"风险等级"
)
private
Integer
riskLevel
;
}
app/src/main/java/com/yiring/app/excel/location/fence/FenceAlarmExcel.java
浏览文件 @
31bc9e8a
...
@@ -8,6 +8,7 @@ import com.yiring.app.domain.location.LocationFenceAlarm;
...
@@ -8,6 +8,7 @@ import com.yiring.app.domain.location.LocationFenceAlarm;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.stream.Collectors
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -28,37 +29,43 @@ public class FenceAlarmExcel implements Serializable {
...
@@ -28,37 +29,43 @@ public class FenceAlarmExcel implements Serializable {
@Serial
@Serial
private
static
final
long
serialVersionUID
=
4526095986813965381L
;
private
static
final
long
serialVersionUID
=
4526095986813965381L
;
@ExcelColumn
(
title
=
"地图名称"
)
@ExcelColumn
(
title
=
"地图名称"
,
width
=
10
)
private
String
mapName
;
private
String
mapName
;
@ExcelColumn
(
title
=
"围栏名称"
)
@ExcelColumn
(
title
=
"围栏名称"
,
width
=
10
)
private
String
fenceName
;
private
String
fenceName
;
@ExcelColumn
(
title
=
"围栏类别"
)
@ExcelColumn
(
title
=
"围栏类别"
,
width
=
10
)
private
String
fenceTypeName
;
private
String
fenceTypeName
;
@ExcelColumn
(
title
=
"报警人员"
)
@ExcelColumn
(
title
=
"报警人员"
,
width
=
10
)
private
String
realName
;
private
String
realName
;
@ExcelColumn
(
title
=
"标签号"
)
@ExcelColumn
(
title
=
"标签号"
,
width
=
10
)
private
String
tagId
;
private
String
tagId
;
@ExcelColumn
(
title
=
"报警开始时间"
)
@ExcelColumn
(
title
=
"报警开始时间"
,
width
=
15
)
private
LocalDateTime
startTime
;
private
LocalDateTime
startTime
;
@ExcelColumn
(
title
=
"报警结束时间"
)
@ExcelColumn
(
title
=
"报警结束时间"
,
width
=
15
)
private
LocalDateTime
endTime
;
private
LocalDateTime
endTime
;
@ExcelColumn
(
title
=
"报警类型"
)
@ExcelColumn
(
title
=
"报警类型"
,
width
=
10
)
private
String
alarmTypeName
;
private
String
alarmTypeName
;
@ExcelColumn
(
title
=
"接收人"
)
@ExcelColumn
(
title
=
"接收人"
,
width
=
15
)
private
String
recipient
;
private
String
recipient
;
@ExcelColumn
(
title
=
"报警状态"
)
@ExcelColumn
(
title
=
"报警状态"
,
width
=
10
)
private
String
statusName
;
private
String
statusName
;
public
static
FenceAlarmExcel
transform
(
LocationFenceAlarm
fenceAlarm
)
{
public
static
FenceAlarmExcel
transform
(
LocationFenceAlarm
fenceAlarm
)
{
String
recipient
=
fenceAlarm
.
getPushLogs
()
.
stream
()
.
map
(
e
->
e
.
getUser
().
getRealName
())
.
distinct
()
.
collect
(
Collectors
.
joining
(
", "
));
return
FenceAlarmExcel
return
FenceAlarmExcel
.
builder
()
.
builder
()
.
fenceName
(
fenceAlarm
.
getFence
().
getName
())
.
fenceName
(
fenceAlarm
.
getFence
().
getName
())
...
@@ -68,8 +75,7 @@ public class FenceAlarmExcel implements Serializable {
...
@@ -68,8 +75,7 @@ public class FenceAlarmExcel implements Serializable {
.
startTime
(
fenceAlarm
.
getStartTime
())
.
startTime
(
fenceAlarm
.
getStartTime
())
.
endTime
(
fenceAlarm
.
getEndTime
())
.
endTime
(
fenceAlarm
.
getEndTime
())
.
alarmTypeName
(
fenceAlarm
.
getType
().
getName
())
.
alarmTypeName
(
fenceAlarm
.
getType
().
getName
())
//todo
.
recipient
(
recipient
)
//.recipient()
.
statusName
(
fenceAlarm
.
getStatus
().
text
())
.
statusName
(
fenceAlarm
.
getStatus
().
text
())
.
build
();
.
build
();
}
}
...
...
app/src/main/java/com/yiring/app/excel/risk/RiskWarnExcel.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
excel
.
risk
;
import
com.github.liaochong.myexcel.core.annotation.ExcelColumn
;
import
com.github.liaochong.myexcel.core.annotation.ExcelModel
;
import
com.yiring.app.constant.risk.ThresholdStatusEnum
;
import
com.yiring.app.domain.risk.RiskWarn
;
import
com.yiring.app.domain.risk.Threshold
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.util.CollectionUtils
;
/**
* @author tml
* @version 1.0
* @date 2022/5/24 11:17
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ExcelModel
public
class
RiskWarnExcel
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
535906627975355631L
;
@ExcelColumn
(
title
=
"工区"
,
width
=
15
)
private
String
workAreaName
;
@ExcelColumn
(
title
=
"安装位置"
,
width
=
15
)
private
String
install
;
@ExcelColumn
(
title
=
"经纬度"
,
width
=
30
)
private
String
point
;
@ExcelColumn
(
title
=
"监控参数"
,
width
=
15
)
private
String
monitoring
;
@ExcelColumn
(
title
=
"位号"
,
width
=
10
)
private
String
locationNum
;
@ExcelColumn
(
title
=
"量程"
,
width
=
10
)
private
String
range
;
@ExcelColumn
(
title
=
"量程单位"
,
width
=
10
)
private
String
unit
;
@ExcelColumn
(
title
=
"报警值(低低)"
,
width
=
10
)
private
String
lowLow
;
@ExcelColumn
(
title
=
"报警值(低)"
,
width
=
10
)
private
String
low
;
@ExcelColumn
(
title
=
"报警值(高)"
,
width
=
10
)
private
String
high
;
@ExcelColumn
(
title
=
"报警值(高高)"
,
width
=
10
)
private
String
highHigh
;
@ExcelColumn
(
title
=
"报警值(熄灭)"
,
width
=
10
)
private
String
flame
;
@ExcelColumn
(
title
=
"备注"
,
width
=
40
)
private
String
remark
;
public
static
RiskWarnExcel
transform
(
RiskWarn
riskWarn
)
{
String
range
=
""
;
if
(
riskWarn
.
getMin
()
!=
null
&&
riskWarn
.
getMax
()
!=
null
)
{
range
=
riskWarn
.
getMin
()
+
"-"
+
riskWarn
.
getMax
();
}
String
point
=
riskWarn
.
getPoint
().
getCoordinate
().
getX
()
+
","
+
riskWarn
.
getPoint
().
getCoordinate
().
getY
()
+
","
+
riskWarn
.
getPoint
().
getCoordinate
().
getZ
();
Map
<
Integer
,
List
<
Threshold
>>
map
=
riskWarn
.
getThresholds
()
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
Threshold:
:
getStatus
));
List
<
Threshold
>
lowLowList
=
map
.
get
(
ThresholdStatusEnum
.
LOW_LOW
.
getCode
());
List
<
Threshold
>
lowList
=
map
.
get
(
ThresholdStatusEnum
.
LOW
.
getCode
());
List
<
Threshold
>
highList
=
map
.
get
(
ThresholdStatusEnum
.
HIGH
.
getCode
());
List
<
Threshold
>
highHighList
=
map
.
get
(
ThresholdStatusEnum
.
HIGH_HIGH
.
getCode
());
List
<
Threshold
>
flameList
=
map
.
get
(
ThresholdStatusEnum
.
FLAME_EXTINGUISH
.
getCode
());
String
lowLow
=
CollectionUtils
.
isEmpty
(
lowLowList
)
?
""
:
lowLowList
.
get
(
0
).
getMin
();
String
low
=
CollectionUtils
.
isEmpty
(
lowList
)
?
""
:
lowList
.
get
(
0
).
getMin
();
String
high
=
CollectionUtils
.
isEmpty
(
highList
)
?
""
:
highList
.
get
(
0
).
getMin
();
String
highHigh
=
CollectionUtils
.
isEmpty
(
highHighList
)
?
""
:
highHighList
.
get
(
0
).
getMin
();
String
flame
=
CollectionUtils
.
isEmpty
(
flameList
)
?
""
:
flameList
.
get
(
0
).
getMin
();
return
RiskWarnExcel
.
builder
()
.
workAreaName
(
riskWarn
.
getWorkArea
().
getWorkAreaName
())
.
point
(
point
)
.
install
(
riskWarn
.
getInstall
())
.
monitoring
(
riskWarn
.
getMonitoring
())
.
locationNum
(
riskWarn
.
getLocationNum
())
.
range
(
range
)
.
unit
(
riskWarn
.
getUnit
())
.
lowLow
(
lowLow
)
.
low
(
low
)
.
high
(
high
)
.
highHigh
(
highHigh
)
.
flame
(
flame
)
.
build
();
}
}
app/src/main/java/com/yiring/app/job/FenceAlarmJob.java
浏览文件 @
31bc9e8a
...
@@ -2,12 +2,15 @@
...
@@ -2,12 +2,15 @@
package
com
.
yiring
.
app
.
job
;
package
com
.
yiring
.
app
.
job
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
com.yiring.app.design.strategy.rule.ScanAlarmContext
;
import
com.yiring.app.design.strategy.rule.ScanAlarmContext
;
import
com.yiring.app.domain.location.*
;
import
com.yiring.app.domain.location.*
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.fence.LocationFenceJobParam
;
import
com.yiring.app.param.location.rule.RuleParam
;
import
com.yiring.app.param.location.rule.RuleParam
;
import
com.yiring.app.service.location.fence.FenceAlarmService
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.app.vo.location.fence.LocationFenceJobVo
;
import
com.yiring.auth.domain.user.User
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -34,6 +37,15 @@ public class FenceAlarmJob {
...
@@ -34,6 +37,15 @@ public class FenceAlarmJob {
@Resource
@Resource
private
LocationFenceAlarmRepository
locationFenceAlarmRepository
;
private
LocationFenceAlarmRepository
locationFenceAlarmRepository
;
@Resource
private
LocationAlarmRuleRepository
locationAlarmRuleRepository
;
@Resource
private
FenceAlarmPushLogRepository
fenceAlarmPushLogRepository
;
@Resource
private
FenceAlarmService
fenceAlarmService
;
@XxlJob
(
"ScanAlarmHandler"
)
@XxlJob
(
"ScanAlarmHandler"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
scanAlarmHandler
()
{
public
void
scanAlarmHandler
()
{
...
@@ -60,6 +72,7 @@ public class FenceAlarmJob {
...
@@ -60,6 +72,7 @@ public class FenceAlarmJob {
.
builder
()
.
builder
()
.
rule
(
ruleParam
)
.
rule
(
ruleParam
)
.
fenceId
(
fence
.
getId
())
.
fenceId
(
fence
.
getId
())
.
fenceName
(
fence
.
getName
())
.
alarmTypeId
(
fenceRule
.
getAlarmType
().
getId
())
.
alarmTypeId
(
fenceRule
.
getAlarmType
().
getId
())
.
tagSet
(
fence
.
getTags
())
.
tagSet
(
fence
.
getTags
())
.
mapId
(
fence
.
getMapId
())
.
mapId
(
fence
.
getMapId
())
...
@@ -73,6 +86,8 @@ public class FenceAlarmJob {
...
@@ -73,6 +86,8 @@ public class FenceAlarmJob {
jobVo
.
merge
(
locationFenceJobVo
);
jobVo
.
merge
(
locationFenceJobVo
);
}
}
}
}
//异步将新添加的报警信息推送给前端
fenceAlarmService
.
alarmPushWeb
(
jobVo
.
getAddAlarm
());
//添加报警和关闭报警
//添加报警和关闭报警
locationFenceAlarmRepository
.
saveAllAndFlush
(
jobVo
.
getAddAlarm
());
locationFenceAlarmRepository
.
saveAllAndFlush
(
jobVo
.
getAddAlarm
());
List
<
Long
>
ids
=
jobVo
.
getModifyAlarm
().
stream
().
map
(
LocationFenceAlarm:
:
getId
).
collect
(
Collectors
.
toList
());
List
<
Long
>
ids
=
jobVo
.
getModifyAlarm
().
stream
().
map
(
LocationFenceAlarm:
:
getId
).
collect
(
Collectors
.
toList
());
...
@@ -82,5 +97,39 @@ public class FenceAlarmJob {
...
@@ -82,5 +97,39 @@ public class FenceAlarmJob {
JSON
.
toJSONString
(
jobVo
.
getAddAlarm
()),
JSON
.
toJSONString
(
jobVo
.
getAddAlarm
()),
JSON
.
toJSONString
(
jobVo
.
getModifyAlarm
())
JSON
.
toJSONString
(
jobVo
.
getModifyAlarm
())
);
);
//todo 推送报警信息
//添加报警推送记录,可以考虑异步执行
Set
<
Long
>
fenceIds
=
jobVo
.
getAddAlarm
().
stream
().
map
(
e
->
e
.
getFence
().
getId
()).
collect
(
Collectors
.
toSet
());
List
<
LocationAlarmRule
>
locationAlarmRuleList
=
locationAlarmRuleRepository
.
findAllByFenceIds
(
fenceIds
);
List
<
FenceAlarmPushLog
>
pushLogList
=
new
ArrayList
<>();
for
(
LocationFenceAlarm
fenceAlarm
:
jobVo
.
getAddAlarm
())
{
//筛选出该条报警记录对应的报警规则
locationAlarmRuleList
=
locationAlarmRuleList
.
stream
()
.
filter
(
e
->
fenceAlarm
.
getFence
().
getId
().
equals
(
e
.
getLocationFence
().
getId
()))
.
filter
(
e
->
e
.
typesContains
(
fenceAlarm
.
getType
()))
.
collect
(
Collectors
.
toList
());
//一条报警记录可能对应多个报警规则(报警给谁的规则),报警规则的接收人和通知方式用笛卡尔积存到数据库
for
(
LocationAlarmRule
alarmRule
:
locationAlarmRuleList
)
{
List
<
Integer
>
informManners
=
JSONArray
.
parseArray
(
alarmRule
.
getInformManner
(),
Integer
.
class
);
for
(
User
user
:
alarmRule
.
getUsers
())
{
for
(
Integer
informManner
:
informManners
)
{
FenceAlarmPushLog
pushLog
=
FenceAlarmPushLog
.
builder
()
.
fenceAlarm
(
fenceAlarm
)
.
informManner
(
informManner
)
.
user
(
user
)
.
build
();
pushLogList
.
add
(
pushLog
);
}
}
}
}
//落库
fenceAlarmPushLogRepository
.
saveAllAndFlush
(
pushLogList
);
log
.
info
(
"FenceAlarmJob.scanAlarmHandler: 生成的推送记录:[{}]"
,
JSON
.
toJSONString
(
pushLogList
));
}
}
}
}
app/src/main/java/com/yiring/app/param/analysis/history/HistoryRouteConditionParam.java
浏览文件 @
31bc9e8a
...
@@ -29,20 +29,20 @@ public class HistoryRouteConditionParam implements Serializable {
...
@@ -29,20 +29,20 @@ public class HistoryRouteConditionParam implements Serializable {
@Serial
@Serial
private
static
final
long
serialVersionUID
=
2386493816691457426L
;
private
static
final
long
serialVersionUID
=
2386493816691457426L
;
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
,
required
=
true
)
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1
0019
"
,
required
=
true
)
@NotNull
(
message
=
"请选择地图"
)
@NotNull
(
message
=
"请选择地图"
)
private
Long
mapId
;
private
Long
mapId
;
@ApiModelProperty
(
value
=
"用户id"
,
example
=
"1"
,
required
=
true
)
@ApiModelProperty
(
value
=
"用户id"
,
example
=
"1
522770547178475520
"
,
required
=
true
)
@NotNull
(
message
=
"请选择员工"
)
@NotNull
(
message
=
"请选择员工"
)
private
Long
userId
;
private
Long
userId
;
@ApiModelProperty
(
value
=
"开始时间"
,
example
=
"2022-05-0
6
14:00:00"
,
required
=
true
)
@ApiModelProperty
(
value
=
"开始时间"
,
example
=
"2022-05-0
1
14:00:00"
,
required
=
true
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@NotNull
(
message
=
"请选择开始时间"
)
@NotNull
(
message
=
"请选择开始时间"
)
private
LocalDateTime
beginTime
;
private
LocalDateTime
beginTime
;
@ApiModelProperty
(
value
=
"结束时间"
,
example
=
"2022-05-
06
14:05:00"
,
required
=
true
)
@ApiModelProperty
(
value
=
"结束时间"
,
example
=
"2022-05-
20
14:05:00"
,
required
=
true
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@NotNull
(
message
=
"请选择结束时间"
)
@NotNull
(
message
=
"请选择结束时间"
)
private
LocalDateTime
endTime
;
private
LocalDateTime
endTime
;
...
...
app/src/main/java/com/yiring/app/param/district/DistrictAddParam.java
浏览文件 @
31bc9e8a
...
@@ -2,12 +2,14 @@
...
@@ -2,12 +2,14 @@
package
com
.
yiring
.
app
.
param
.
district
;
package
com
.
yiring
.
app
.
param
.
district
;
import
com.yiring.app.domain.district.District
;
import
com.yiring.app.domain.district.District
;
import
com.yiring.common.constant.RegEx
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
lombok.*
;
import
lombok.*
;
import
org.hibernate.validator.constraints.Length
;
import
org.hibernate.validator.constraints.Length
;
import
org.locationtech.jts.geom.Geometry
;
import
org.locationtech.jts.geom.Geometry
;
...
@@ -33,9 +35,14 @@ public class DistrictAddParam implements Serializable {
...
@@ -33,9 +35,14 @@ public class DistrictAddParam implements Serializable {
@Length
(
max
=
10
,
message
=
"区域名称不能超过10个字符"
)
@Length
(
max
=
10
,
message
=
"区域名称不能超过10个字符"
)
private
String
name
;
private
String
name
;
@ApiModelProperty
(
value
=
"风险等级"
,
example
=
"1"
,
required
=
true
)
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"地图id不能为空"
)
private
Integer
mapId
;
@ApiModelProperty
(
value
=
"风险等级"
,
example
=
"#FF0000"
,
required
=
true
)
@NotEmpty
(
message
=
"风险等级不能为空"
)
@NotEmpty
(
message
=
"风险等级不能为空"
)
@Length
(
min
=
6
,
max
=
7
,
message
=
"请选择正确的颜色"
)
@Length
(
min
=
6
,
max
=
7
,
message
=
"请选择正确的颜色"
)
@Pattern
(
regexp
=
RegEx
.
COLOUR_RGB
,
message
=
"颜色格式不正确"
)
private
String
riskGrade
;
private
String
riskGrade
;
@ApiModelProperty
(
value
=
"消抖时间(秒)"
,
example
=
"10"
,
required
=
true
)
@ApiModelProperty
(
value
=
"消抖时间(秒)"
,
example
=
"10"
,
required
=
true
)
...
@@ -54,6 +61,7 @@ public class DistrictAddParam implements Serializable {
...
@@ -54,6 +61,7 @@ public class DistrictAddParam implements Serializable {
return
District
return
District
.
builder
()
.
builder
()
.
name
(
name
)
.
name
(
name
)
.
mapId
(
mapId
)
.
deleted
(
false
)
.
deleted
(
false
)
.
riskGrade
(
riskGrade
)
.
riskGrade
(
riskGrade
)
.
debouncingDuration
(
debouncingDuration
)
.
debouncingDuration
(
debouncingDuration
)
...
...
app/src/main/java/com/yiring/app/param/district/DistrictModifyParam.java
浏览文件 @
31bc9e8a
...
@@ -2,11 +2,13 @@
...
@@ -2,11 +2,13 @@
package
com
.
yiring
.
app
.
param
.
district
;
package
com
.
yiring
.
app
.
param
.
district
;
import
com.yiring.app.domain.district.District
;
import
com.yiring.app.domain.district.District
;
import
com.yiring.common.constant.RegEx
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -38,8 +40,12 @@ public class DistrictModifyParam implements Serializable {
...
@@ -38,8 +40,12 @@ public class DistrictModifyParam implements Serializable {
@Length
(
max
=
10
,
message
=
"区域名称不能超过10个字符"
)
@Length
(
max
=
10
,
message
=
"区域名称不能超过10个字符"
)
private
String
name
;
private
String
name
;
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
)
private
Integer
mapId
;
@ApiModelProperty
(
value
=
"风险等级"
,
example
=
"1"
,
required
=
true
)
@ApiModelProperty
(
value
=
"风险等级"
,
example
=
"1"
,
required
=
true
)
@Length
(
min
=
6
,
max
=
7
,
message
=
"请选择正确的颜色"
)
@Length
(
min
=
6
,
max
=
7
,
message
=
"请选择正确的颜色"
)
@Pattern
(
regexp
=
RegEx
.
COLOUR_RGB
,
message
=
"颜色格式不正确"
)
private
String
riskGrade
;
private
String
riskGrade
;
@ApiModelProperty
(
value
=
"消抖时间(秒)"
,
example
=
"10"
,
required
=
true
)
@ApiModelProperty
(
value
=
"消抖时间(秒)"
,
example
=
"10"
,
required
=
true
)
...
...
app/src/main/java/com/yiring/app/param/district/DistrictRealtimeConditionParam.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
district
;
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/5/19 15:57
*/
@ApiModel
(
"实时区域查询条件"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
DistrictRealtimeConditionParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
5749083087928117992L
;
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
)
private
Integer
mapId
;
}
app/src/main/java/com/yiring/app/param/location/fence/FenceAlarmConditionParam.java
浏览文件 @
31bc9e8a
...
@@ -35,12 +35,12 @@ public class FenceAlarmConditionParam implements Serializable {
...
@@ -35,12 +35,12 @@ public class FenceAlarmConditionParam implements Serializable {
@ApiModelProperty
(
value
=
"报警人员真名"
,
example
=
"张三"
)
@ApiModelProperty
(
value
=
"报警人员真名"
,
example
=
"张三"
)
private
String
realName
;
private
String
realName
;
@ApiModelProperty
(
value
=
"报警状态"
,
example
=
"true
|false
"
)
@ApiModelProperty
(
value
=
"报警状态"
,
example
=
"true"
)
private
Boolean
status
;
private
Boolean
status
;
@ApiModelProperty
(
value
=
"报警开始时间"
,
example
=
"2022-05-06 14:00:00"
)
@ApiModelProperty
(
value
=
"报警开始时间"
,
example
=
"2022-05-06 14:00:00"
)
private
LocalDateTime
beginTime
;
private
LocalDateTime
beginTime
;
@ApiModelProperty
(
value
=
"报警结束时间"
,
example
=
"2022-05-7 14:00:00"
)
@ApiModelProperty
(
value
=
"报警结束时间"
,
example
=
"2022-05-
0
7 14:00:00"
)
private
LocalDateTime
endTime
;
private
LocalDateTime
endTime
;
}
}
app/src/main/java/com/yiring/app/param/location/fence/FenceAlarmLogParam.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
fence
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/20 9:44
*/
@ApiModel
(
"实时报警记录"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
FenceAlarmLogParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
3164664481416232633L
;
@ApiModelProperty
(
value
=
"开始时间"
,
example
=
"2022-05-01 00:00:00"
,
required
=
true
)
@NotNull
(
message
=
"开始时间不能为空"
)
private
LocalDateTime
beginTime
;
@ApiModelProperty
(
value
=
"结束时间"
,
example
=
"2022-10-30 00:00:00"
,
required
=
true
)
@NotNull
(
message
=
"结束时间不能为空"
)
private
LocalDateTime
endTime
;
}
app/src/main/java/com/yiring/app/param/location/fence/FenceAlarmPushLogConditionParam.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
fence
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.Set
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/18 10:08
*/
@ApiModel
(
"围栏报警推送记录"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
FenceAlarmPushLogConditionParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
3348481008334535142L
;
@ApiModelProperty
(
value
=
"围栏报警记录id"
,
example
=
"1"
)
@NotNull
(
message
=
"围栏报警记录id不能为空"
)
private
Long
fenceAlarmId
;
@ApiModelProperty
(
value
=
"通知方式: 1-app消息 2-短信通知 3-电话通知"
,
example
=
"[1,2,3]"
,
dataType
=
"array"
)
private
Set
<
Integer
>
informManner
;
@ApiModelProperty
(
value
=
"接受状态: 1-成功 2-失败"
,
example
=
"1"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"联系电话"
,
example
=
"18283943672"
)
private
String
phone
;
}
app/src/main/java/com/yiring/app/param/location/fence/FenceRealtimeConditionParam.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
fence
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/19 17:26
*/
@ApiModel
(
"实时围栏信息查询条件"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
FenceRealtimeConditionParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
8094425977297009035L
;
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"地图id不能为空"
)
private
Integer
mapId
;
}
app/src/main/java/com/yiring/app/param/location/fence/LocationFenceJobParam.java
浏览文件 @
31bc9e8a
...
@@ -40,6 +40,11 @@ public class LocationFenceJobParam implements Serializable {
...
@@ -40,6 +40,11 @@ public class LocationFenceJobParam implements Serializable {
private
Long
fenceId
;
private
Long
fenceId
;
/**
/**
* 围栏名称
*/
private
String
fenceName
;
/**
* 报警类别id
* 报警类别id
*/
*/
private
Long
alarmTypeId
;
private
Long
alarmTypeId
;
...
...
app/src/main/java/com/yiring/app/param/location/rule/LocationFenceRuleAddParam.java
浏览文件 @
31bc9e8a
...
@@ -45,7 +45,11 @@ public class LocationFenceRuleAddParam implements Serializable {
...
@@ -45,7 +45,11 @@ public class LocationFenceRuleAddParam implements Serializable {
@NotNull
(
message
=
"所属的报警类别id不能为空"
)
@NotNull
(
message
=
"所属的报警类别id不能为空"
)
private
Long
alarmTypeId
;
private
Long
alarmTypeId
;
@ApiModelProperty
(
value
=
"设置的关联参数类型"
,
example
=
"1"
,
required
=
true
)
@ApiModelProperty
(
value
=
"设置的关联参数类型:1-最多人数,2-最少人数,3-允许进入人员,4-不允许离开人员,5-静止时长,6-滞留时长,7-触发报警距离"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"所属的关联参数类别不能为空"
)
@NotNull
(
message
=
"所属的关联参数类别不能为空"
)
@Range
(
min
=
RelevanceParamEnum
.
MIN
,
max
=
RelevanceParamEnum
.
MAX
,
message
=
"关联参数类别异常"
)
@Range
(
min
=
RelevanceParamEnum
.
MIN
,
max
=
RelevanceParamEnum
.
MAX
,
message
=
"关联参数类别异常"
)
private
Integer
relevanceParamType
;
private
Integer
relevanceParamType
;
...
...
app/src/main/java/com/yiring/app/param/location/rule/RuleParam.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
import
com.yiring.app.util.TimeUtil
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -48,4 +52,31 @@ public class RuleParam implements Serializable {
...
@@ -48,4 +52,31 @@ public class RuleParam implements Serializable {
private
List
<
TimeAndNumberParam
>
timeAndNumber
;
private
List
<
TimeAndNumberParam
>
timeAndNumber
;
private
List
<
TimeAndUserParam
>
timeAndUser
;
private
List
<
TimeAndUserParam
>
timeAndUser
;
/**
* 设置全时间生效
*/
public
void
setTimeAndNumberAll
()
{
Integer
number
=
timeAndNumber
.
get
(
0
).
getNumber
();
List
<
TimeParam
>
list
=
TimeUtil
.
WEEK
.
stream
()
.
map
(
e
->
TimeParam
.
builder
().
week
(
e
).
beginTime
(
"00:00:00"
).
endTime
(
"23:59:59"
).
build
())
.
collect
(
Collectors
.
toList
());
TimeAndNumberParam
timeAndNumberParam
=
TimeAndNumberParam
.
builder
().
number
(
number
).
time
(
list
).
build
();
List
<
TimeAndNumberParam
>
arrayList
=
new
ArrayList
<>();
arrayList
.
add
(
timeAndNumberParam
);
timeAndNumber
=
arrayList
;
}
public
void
setTimeAndUserAll
()
{
Set
<
RelevanceUserParam
>
user
=
timeAndUser
.
get
(
0
).
getUser
();
List
<
TimeParam
>
list
=
TimeUtil
.
WEEK
.
stream
()
.
map
(
e
->
TimeParam
.
builder
().
week
(
e
).
beginTime
(
"00:00:00"
).
endTime
(
"23:59:59"
).
build
())
.
collect
(
Collectors
.
toList
());
TimeAndUserParam
timeAndUserParam
=
TimeAndUserParam
.
builder
().
user
(
user
).
time
(
list
).
build
();
List
<
TimeAndUserParam
>
arrayList
=
new
ArrayList
<>();
arrayList
.
add
(
timeAndUserParam
);
timeAndUser
=
arrayList
;
}
}
}
app/src/main/java/com/yiring/app/param/location/rule/TimeAndNumberParam.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
import
com.yiring.common.constant.RegEx
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java
x.validation.constraints.Pattern
;
import
java
.util.List
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -27,13 +26,7 @@ public class TimeAndNumberParam implements Serializable {
...
@@ -27,13 +26,7 @@ public class TimeAndNumberParam implements Serializable {
@Serial
@Serial
private
static
final
long
serialVersionUID
=
-
6796977663003158881L
;
private
static
final
long
serialVersionUID
=
-
6796977663003158881L
;
@ApiModelProperty
(
value
=
"起始时间"
,
example
=
"星期一 08:00:00"
)
private
List
<
TimeParam
>
time
;
@Pattern
(
regexp
=
RegEx
.
TIME_RULE
,
message
=
"时间格式不正确"
)
private
String
beginTime
;
@ApiModelProperty
(
value
=
"终止时间"
,
example
=
"星期一 18:00:00"
)
@Pattern
(
regexp
=
RegEx
.
TIME_RULE
,
message
=
"时间格式不正确"
)
private
String
endTime
;
@ApiModelProperty
(
value
=
"人数"
,
example
=
"100"
)
@ApiModelProperty
(
value
=
"人数"
,
example
=
"100"
)
private
Integer
number
;
private
Integer
number
;
...
...
app/src/main/java/com/yiring/app/param/location/rule/TimeAndUserParam.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
import
com.yiring.common.constant.RegEx
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.Set
;
import
javax.validation.constraints.Pattern
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -28,13 +26,7 @@ public class TimeAndUserParam implements Serializable {
...
@@ -28,13 +26,7 @@ public class TimeAndUserParam implements Serializable {
@Serial
@Serial
private
static
final
long
serialVersionUID
=
-
7037620599825901175L
;
private
static
final
long
serialVersionUID
=
-
7037620599825901175L
;
@ApiModelProperty
(
value
=
"起始时间"
,
example
=
"星期一 08:00:00"
)
private
List
<
TimeParam
>
time
;
@Pattern
(
regexp
=
RegEx
.
TIME_RULE
,
message
=
"时间格式不正确"
)
private
String
beginTime
;
@ApiModelProperty
(
value
=
"终止时间"
,
example
=
"星期一 18:00:00"
)
@Pattern
(
regexp
=
RegEx
.
TIME_RULE
,
message
=
"时间格式不正确"
)
private
String
endTime
;
private
Set
<
RelevanceUserParam
>
user
;
private
Set
<
RelevanceUserParam
>
user
;
}
}
app/src/main/java/com/yiring/app/param/location/rule/TimeParam.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
location
.
rule
;
import
com.yiring.common.constant.RegEx
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.validation.constraints.Pattern
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 10:08
*/
@ApiModel
(
"TimeParam"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
TimeParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
3657642913058744140L
;
@ApiModelProperty
(
value
=
"星期"
,
example
=
"星期一"
)
@Pattern
(
regexp
=
RegEx
.
TIME_RULE
,
message
=
"时间格式不正确"
)
private
String
week
;
@ApiModelProperty
(
value
=
"起始时间"
,
example
=
"08:00:00"
)
@Pattern
(
regexp
=
RegEx
.
TIME_RULE
,
message
=
"时间格式不正确"
)
private
String
beginTime
;
@ApiModelProperty
(
value
=
"终止时间"
,
example
=
"18:00:00"
)
@Pattern
(
regexp
=
RegEx
.
TIME_RULE
,
message
=
"时间格式不正确"
)
private
String
endTime
;
}
app/src/main/java/com/yiring/app/param/risk/RiskWarnAddParam.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
risk
;
import
com.yiring.app.domain.risk.RiskWarn
;
import
com.yiring.app.domain.risk.Threshold
;
import
com.yiring.app.domain.workArea.WorkArea
;
import
com.yiring.common.constant.RegEx
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
lombok.Data
;
import
org.locationtech.jts.geom.Point
;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 15:04
*/
@ApiModel
(
"风险预警管理"
)
@Data
public
class
RiskWarnAddParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
322828089862736394L
;
@ApiModelProperty
(
value
=
"所属工区id"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"工区不能为空"
)
private
Long
workAreaId
;
@ApiModelProperty
(
value
=
"安装位置"
,
example
=
"组件厂区二楼"
,
required
=
true
)
@NotNull
(
message
=
"安装位置不能为空"
)
private
String
install
;
@ApiModelProperty
(
value
=
"经纬度"
,
required
=
true
,
dataType
=
"java.lang.String"
)
@NotNull
(
message
=
"经纬度不能为空"
)
private
Point
point
;
@ApiModelProperty
(
value
=
"监控参数"
,
example
=
"有毒气体报警器"
,
required
=
true
)
@NotNull
(
message
=
"监控参数不能为空"
)
private
String
monitoring
;
@ApiModelProperty
(
value
=
"位号"
,
example
=
"AT-4736"
,
required
=
true
)
@NotNull
(
message
=
"位号不能为空"
)
private
String
locationNum
;
@ApiModelProperty
(
value
=
"量程起始值"
,
example
=
"1.3"
)
@Pattern
(
regexp
=
RegEx
.
DIGIT_DECIMALS
,
message
=
"量程的数字格式不正确,只能为整数或小数"
)
private
BigDecimal
min
;
@ApiModelProperty
(
value
=
"量程结束值"
,
example
=
"50.2"
)
@Pattern
(
regexp
=
RegEx
.
DIGIT_DECIMALS
,
message
=
"量程的数字格式不正确,只能为整数或小数"
)
private
BigDecimal
max
;
@ApiModelProperty
(
value
=
"量程单位"
,
example
=
"ppm"
)
private
String
unit
;
private
List
<
ThresholdParam
>
thresholds
;
public
RiskWarn
transform
()
{
WorkArea
workArea
=
new
WorkArea
();
workArea
.
setId
(
workAreaId
);
List
<
Threshold
>
list
=
thresholds
.
stream
().
map
(
ThresholdParam:
:
transform
).
collect
(
Collectors
.
toList
());
return
RiskWarn
.
builder
()
.
workArea
(
workArea
)
.
install
(
install
)
.
point
(
point
)
.
monitoring
(
monitoring
)
.
locationNum
(
locationNum
)
.
min
(
min
)
.
max
(
max
)
.
unit
(
unit
)
.
enable
(
true
)
.
thresholds
(
list
)
.
build
();
}
}
app/src/main/java/com/yiring/app/param/risk/RiskWarnConditionParam.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
risk
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
lombok.Data
;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 17:23
*/
@ApiModel
(
"风险预警管理"
)
@Data
public
class
RiskWarnConditionParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
6509069447006234492L
;
@ApiModelProperty
(
value
=
"工区id"
,
example
=
"1"
)
private
Long
workAreaId
;
@ApiModelProperty
(
value
=
"监控参数"
,
example
=
"有毒气体报警器"
)
private
String
monitoring
;
}
app/src/main/java/com/yiring/app/param/risk/RiskWarnModifyParam.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
risk
;
import
com.yiring.app.domain.risk.RiskWarn
;
import
com.yiring.app.domain.risk.Threshold
;
import
com.yiring.app.domain.workArea.WorkArea
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
lombok.Data
;
import
org.locationtech.jts.geom.Point
;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 15:04
*/
@ApiModel
(
"风险预警管理"
)
@Data
public
class
RiskWarnModifyParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1728064881609580496L
;
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
,
required
=
true
)
private
Long
id
;
@ApiModelProperty
(
value
=
"所属工区id"
,
example
=
"1"
,
required
=
true
)
private
Long
workAreaId
;
@ApiModelProperty
(
value
=
"安装位置"
,
example
=
"组件厂区二楼"
,
required
=
true
)
private
String
install
;
@ApiModelProperty
(
value
=
"经纬度"
,
required
=
true
,
dataType
=
"java.lang.String"
)
private
Point
point
;
@ApiModelProperty
(
value
=
"监控参数"
,
example
=
"有毒气体报警器"
,
required
=
true
)
private
String
monitoring
;
@ApiModelProperty
(
value
=
"位号"
,
example
=
"AT-4736"
,
required
=
true
)
private
String
locationNum
;
@ApiModelProperty
(
value
=
"量程起始值"
,
example
=
"1.3"
)
private
BigDecimal
min
;
@ApiModelProperty
(
value
=
"量程结束值"
,
example
=
"50.2"
)
private
BigDecimal
max
;
@ApiModelProperty
(
value
=
"量程单位"
,
example
=
"ppm"
)
private
String
unit
;
private
List
<
ThresholdParam
>
thresholds
;
public
RiskWarn
transform
()
{
WorkArea
workArea
=
new
WorkArea
();
workArea
.
setId
(
workAreaId
);
List
<
Threshold
>
list
=
thresholds
.
stream
().
map
(
ThresholdParam:
:
transform
).
collect
(
Collectors
.
toList
());
return
RiskWarn
.
builder
()
.
id
(
id
)
.
workArea
(
workArea
)
.
install
(
install
)
.
point
(
point
)
.
monitoring
(
monitoring
)
.
locationNum
(
locationNum
)
.
min
(
min
)
.
max
(
max
)
.
unit
(
unit
)
.
enable
(
true
)
.
thresholds
(
list
)
.
build
();
}
}
app/src/main/java/com/yiring/app/param/risk/ThresholdParam.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
param
.
risk
;
import
com.yiring.app.domain.risk.Threshold
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
lombok.*
;
/**
* @author tml
* @version 1.0
* @date 2022/5/20 17:42
*/
@ApiModel
(
"风险预警管理"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
ThresholdParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
5075164198170220832L
;
@ApiModelProperty
(
value
=
"阈值区间起始值"
,
example
=
"1.5"
)
private
String
min
;
@ApiModelProperty
(
value
=
"阈值区间结束值"
,
example
=
"20.2"
)
private
String
max
;
@ApiModelProperty
(
value
=
"阈值状态:1-低低,2-低,3-高,4-高高,5-熄灭"
,
example
=
"1"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"风险等级:1-红色风险,2-橙色风险,3-黄色风险,4-蓝色风险"
,
example
=
"1"
)
private
Integer
riskLevel
;
public
Threshold
transform
()
{
return
Threshold
.
builder
().
min
(
min
).
max
(
max
).
status
(
status
).
riskLevel
(
riskLevel
).
build
();
}
}
app/src/main/java/com/yiring/app/service/analysis/history/HistoryRouteService.java
浏览文件 @
31bc9e8a
...
@@ -4,8 +4,10 @@ package com.yiring.app.service.analysis.history;
...
@@ -4,8 +4,10 @@ package com.yiring.app.service.analysis.history;
import
com.yiring.app.param.analysis.history.HistoryRouteConditionParam
;
import
com.yiring.app.param.analysis.history.HistoryRouteConditionParam
;
import
com.yiring.app.vo.analysis.history.HistoryRouteVo
;
import
com.yiring.app.vo.analysis.history.HistoryRouteVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
com.yiring.common.vo.PageVo
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.Valid
;
/**
/**
* @author tml
* @author tml
...
@@ -21,6 +23,14 @@ public interface HistoryRouteService {
...
@@ -21,6 +23,14 @@ public interface HistoryRouteService {
Result
<
PageVo
<
HistoryRouteVo
>>
findByCondition
(
HistoryRouteConditionParam
param
);
Result
<
PageVo
<
HistoryRouteVo
>>
findByCondition
(
HistoryRouteConditionParam
param
);
/**
/**
* 分页条件查询
* @param param 条件
* @param pageParam 分页参数
* @return 历史轨迹信息
*/
Result
<
PageVo
<
HistoryRouteVo
>>
findByPage
(
@Valid
HistoryRouteConditionParam
param
,
@Valid
PageParam
pageParam
);
/**
* 导出历史轨迹信息
* 导出历史轨迹信息
* @param param 地图、员工和时间条件
* @param param 地图、员工和时间条件
* @param response 历史轨迹信息
* @param response 历史轨迹信息
...
...
app/src/main/java/com/yiring/app/service/analysis/history/impl/HistoryRouteServiceImpl.java
浏览文件 @
31bc9e8a
...
@@ -12,6 +12,7 @@ import com.yiring.app.vo.analysis.history.HistoryRouteVo;
...
@@ -12,6 +12,7 @@ import com.yiring.app.vo.analysis.history.HistoryRouteVo;
import
com.yiring.app.vo.map.MapVo
;
import
com.yiring.app.vo.map.MapVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
com.yiring.common.vo.PageVo
;
import
java.io.OutputStream
;
import
java.io.OutputStream
;
import
java.net.URLEncoder
;
import
java.net.URLEncoder
;
...
@@ -25,6 +26,7 @@ import javax.persistence.criteria.Predicate;
...
@@ -25,6 +26,7 @@ import javax.persistence.criteria.Predicate;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
...
@@ -63,6 +65,27 @@ public class HistoryRouteServiceImpl implements HistoryRouteService {
...
@@ -63,6 +65,27 @@ public class HistoryRouteServiceImpl implements HistoryRouteService {
}
}
@Override
@Override
public
Result
<
PageVo
<
HistoryRouteVo
>>
findByPage
(
HistoryRouteConditionParam
param
,
PageParam
pageParam
)
{
Pageable
pageable
=
PageParam
.
toPageable
(
pageParam
);
Specification
<
LocationLog
>
specification
=
getSpecification
(
param
);
ArrayList
<
MapVo
.
MapVoReuslt
>
list1
=
new
ArrayList
<>();
List
<
LocationLog
>
list
=
locationLogRepository
.
findAll
(
specification
,
pageable
)
.
stream
()
.
collect
(
Collectors
.
toList
());
List
<
HistoryRouteVo
>
voList
=
list
.
stream
()
.
map
(
e
->
{
HistoryRouteVo
routeVo
=
HistoryRouteVo
.
transform
(
e
);
routeVo
.
setMapName
(
mapUtil
.
getMapName
(
e
.
getAreaId
().
intValue
()));
return
routeVo
;
})
.
collect
(
Collectors
.
toList
());
PageVo
<
HistoryRouteVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
}
@Override
public
void
exportHistoryRoute
(
HistoryRouteConditionParam
param
,
HttpServletResponse
response
)
{
public
void
exportHistoryRoute
(
HistoryRouteConditionParam
param
,
HttpServletResponse
response
)
{
Result
<
PageVo
<
HistoryRouteVo
>>
result
=
findByCondition
(
param
);
Result
<
PageVo
<
HistoryRouteVo
>>
result
=
findByCondition
(
param
);
if
(
Status
.
OK
.
value
()
!=
result
.
getStatus
())
{
if
(
Status
.
OK
.
value
()
!=
result
.
getStatus
())
{
...
...
app/src/main/java/com/yiring/app/service/district/DistrictService.java
浏览文件 @
31bc9e8a
...
@@ -3,6 +3,9 @@ package com.yiring.app.service.district;
...
@@ -3,6 +3,9 @@ package com.yiring.app.service.district;
import
com.yiring.app.param.district.DistrictAddParam
;
import
com.yiring.app.param.district.DistrictAddParam
;
import
com.yiring.app.param.district.DistrictModifyParam
;
import
com.yiring.app.param.district.DistrictModifyParam
;
import
com.yiring.app.param.district.DistrictRealtimeConditionParam
;
import
com.yiring.app.vo.district.DistrictDetailsVo
;
import
com.yiring.app.vo.district.DistrictUserVo
;
import
com.yiring.app.vo.district.DistrictVo
;
import
com.yiring.app.vo.district.DistrictVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
...
@@ -42,4 +45,18 @@ public interface DistrictService {
...
@@ -42,4 +45,18 @@ public interface DistrictService {
* @return 区域信息
* @return 区域信息
*/
*/
Result
<
PageVo
<
DistrictVo
>>
findByNameLike
(
String
name
);
Result
<
PageVo
<
DistrictVo
>>
findByNameLike
(
String
name
);
/**
* 查询实时区域列表信息
* @param param 条件
* @return 区域列表
*/
Result
<
PageVo
<
DistrictDetailsVo
>>
findRealtimeList
(
DistrictRealtimeConditionParam
param
);
/**
* 查询区域内员工数量
* @param param 条件
* @return 区域列表
*/
Result
<
PageVo
<
DistrictUserVo
>>
findDistrictUser
(
DistrictRealtimeConditionParam
param
);
}
}
app/src/main/java/com/yiring/app/service/district/impl/DistrictServiceImpl.java
浏览文件 @
31bc9e8a
...
@@ -5,18 +5,25 @@ import com.yiring.app.domain.district.District;
...
@@ -5,18 +5,25 @@ import com.yiring.app.domain.district.District;
import
com.yiring.app.domain.district.DistrictRepository
;
import
com.yiring.app.domain.district.DistrictRepository
;
import
com.yiring.app.param.district.DistrictAddParam
;
import
com.yiring.app.param.district.DistrictAddParam
;
import
com.yiring.app.param.district.DistrictModifyParam
;
import
com.yiring.app.param.district.DistrictModifyParam
;
import
com.yiring.app.param.district.DistrictRealtimeConditionParam
;
import
com.yiring.app.service.district.DistrictService
;
import
com.yiring.app.service.district.DistrictService
;
import
com.yiring.app.util.JpaUtil
;
import
com.yiring.app.util.JpaUtil
;
import
com.yiring.app.vo.district.DistrictDetailsVo
;
import
com.yiring.app.vo.district.DistrictUserVo
;
import
com.yiring.app.vo.district.DistrictVo
;
import
com.yiring.app.vo.district.DistrictVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.util.Commons
;
import
com.yiring.common.util.Commons
;
import
com.yiring.common.vo.PageVo
;
import
com.yiring.common.vo.PageVo
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.persistence.criteria.Predicate
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
...
@@ -90,4 +97,36 @@ public class DistrictServiceImpl implements DistrictService {
...
@@ -90,4 +97,36 @@ public class DistrictServiceImpl implements DistrictService {
PageVo
<
DistrictVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
PageVo
<
DistrictVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
return
Result
.
ok
(
pageVo
);
}
}
@Override
public
Result
<
PageVo
<
DistrictDetailsVo
>>
findRealtimeList
(
DistrictRealtimeConditionParam
param
)
{
Specification
<
District
>
specification
=
getSpecification
(
param
);
List
<
District
>
districtList
=
districtRepository
.
findAll
(
specification
);
List
<
DistrictDetailsVo
>
voList
=
districtList
.
stream
()
.
map
(
DistrictDetailsVo:
:
transform
)
.
collect
(
Collectors
.
toList
());
PageVo
<
DistrictDetailsVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
}
@Override
public
Result
<
PageVo
<
DistrictUserVo
>>
findDistrictUser
(
DistrictRealtimeConditionParam
param
)
{
Specification
<
District
>
specification
=
getSpecification
(
param
);
List
<
District
>
districtList
=
districtRepository
.
findAll
(
specification
);
List
<
DistrictUserVo
>
voList
=
districtList
.
stream
().
map
(
DistrictUserVo:
:
transform
).
collect
(
Collectors
.
toList
());
PageVo
<
DistrictUserVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
}
private
Specification
<
District
>
getSpecification
(
DistrictRealtimeConditionParam
param
)
{
return
(
root
,
query
,
criteriaBuilder
)
->
{
ArrayList
<
Predicate
>
list
=
new
ArrayList
<>();
if
(
param
.
getMapId
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
District
.
Fields
.
mapId
),
param
.
getMapId
()));
}
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
return
criteriaBuilder
.
and
(
array
);
};
}
}
}
app/src/main/java/com/yiring/app/service/location/fence/FenceAlarmPushLogService.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
location
.
fence
;
import
com.yiring.app.param.location.fence.FenceAlarmPushLogConditionParam
;
import
com.yiring.app.vo.location.fence.FenceAlarmPushLogVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
javax.validation.Valid
;
/**
* @author tml
* @version 1.0
* @date 2022/5/18 10:26
*/
public
interface
FenceAlarmPushLogService
{
/**
* 查询围栏报警推送记录列表
* @param conditionParam 条件参数
* @param pageParam 分页参数
* @return 推送记录
*/
Result
<
PageVo
<
FenceAlarmPushLogVo
>>
findList
(
@Valid
FenceAlarmPushLogConditionParam
conditionParam
,
@Valid
PageParam
pageParam
);
}
app/src/main/java/com/yiring/app/service/location/fence/FenceAlarmService.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
location
.
fence
;
package
com
.
yiring
.
app
.
service
.
location
.
fence
;
import
com.yiring.app.domain.location.LocationFenceAlarm
;
import
com.yiring.app.param.location.fence.FenceAlarmConditionParam
;
import
com.yiring.app.param.location.fence.FenceAlarmConditionParam
;
import
com.yiring.app.param.location.fence.FenceAlarmLogParam
;
import
com.yiring.app.param.location.fence.FenceRealtimeConditionParam
;
import
com.yiring.app.vo.IdNameVo
;
import
com.yiring.app.vo.IdNameVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmLogVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmRealtimeVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
com.yiring.common.vo.PageVo
;
import
java.util.List
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.Valid
;
/**
/**
* @author tml
* @author tml
...
@@ -32,6 +40,30 @@ public interface FenceAlarmService {
...
@@ -32,6 +40,30 @@ public interface FenceAlarmService {
/**
/**
* 导出围栏报警数据
* 导出围栏报警数据
* @param param 查询条件
* @param param 查询条件
* @param response response
*/
*/
void
export
(
FenceAlarmConditionParam
param
,
HttpServletResponse
response
);
void
export
(
FenceAlarmConditionParam
param
,
HttpServletResponse
response
);
Result
<
FenceAlarmVo
>
findOne
(
IdParam
idParam
);
/**
* 推送报警信息给前端
* @param newAlarm 新生成的报警信息
*/
void
alarmPushWeb
(
List
<
LocationFenceAlarm
>
newAlarm
);
/**
* 查询报警记录统计
* @param fenceAlarmLogParam 条件
* @return 报警记录统计
*/
Result
<
PageVo
<
FenceAlarmLogVo
>>
findAlarmLog
(
FenceAlarmLogParam
fenceAlarmLogParam
);
/**
* 查询正在报警的报警记录
* @param param 条件
* @param pageParam 分页参数
* @return 报警信息
*/
Result
<
PageVo
<
FenceAlarmRealtimeVo
>>
fenRealtimeList
(
@Valid
FenceRealtimeConditionParam
param
,
PageParam
pageParam
);
}
}
app/src/main/java/com/yiring/app/service/location/fence/LocationFenceService.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
location
.
fence
;
package
com
.
yiring
.
app
.
service
.
location
.
fence
;
import
com.yiring.app.param.location.fence.FenceRealtimeConditionParam
;
import
com.yiring.app.param.location.fence.LocationFenceAddParam
;
import
com.yiring.app.param.location.fence.LocationFenceAddParam
;
import
com.yiring.app.param.location.fence.LocationFenceConditionParam
;
import
com.yiring.app.param.location.fence.LocationFenceConditionParam
;
import
com.yiring.app.param.location.fence.LocationFenceModifyParam
;
import
com.yiring.app.param.location.fence.LocationFenceModifyParam
;
import
com.yiring.app.vo.CodeNameVo
;
import
com.yiring.app.vo.CodeNameVo
;
import
com.yiring.app.vo.location.fence.FenceRealtimeVo
;
import
com.yiring.app.vo.location.fence.LocationFenceGeoVo
;
import
com.yiring.app.vo.location.fence.LocationFenceSearchVo
;
import
com.yiring.app.vo.location.fence.LocationFenceSearchVo
;
import
com.yiring.app.vo.location.fence.LocationFenceVo
;
import
com.yiring.app.vo.location.fence.LocationFenceVo
;
import
com.yiring.auth.param.IdsParam
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.param.PageParam
;
...
@@ -49,11 +53,18 @@ public interface LocationFenceService {
...
@@ -49,11 +53,18 @@ public interface LocationFenceService {
Result
<
PageVo
<
LocationFenceVo
>>
findList
(
LocationFenceConditionParam
conditionParam
,
PageParam
pageParam
);
Result
<
PageVo
<
LocationFenceVo
>>
findList
(
LocationFenceConditionParam
conditionParam
,
PageParam
pageParam
);
/**
/**
* 查询围栏的位置信息列表
* @param conditionParam 条件
* @return 是否成功
*/
Result
<
PageVo
<
LocationFenceGeoVo
>>
findGeoList
(
LocationFenceConditionParam
conditionParam
);
/**
* 根据id查询围栏信息
* 根据id查询围栏信息
* @param param id
* @param param id
* @return 详细信息
* @return 详细信息
*/
*/
Result
<
LocationFenceVo
>
findById
(
@Valid
IdParam
param
);
Result
<
LocationFenceVo
>
findById
(
IdParam
param
);
/**
/**
* 根据名称模糊查询围栏信息
* 根据名称模糊查询围栏信息
...
@@ -67,4 +78,27 @@ public interface LocationFenceService {
...
@@ -67,4 +78,27 @@ public interface LocationFenceService {
* @return 地图下拉框
* @return 地图下拉框
*/
*/
Result
<
PageVo
<
CodeNameVo
>>
findMapList
();
Result
<
PageVo
<
CodeNameVo
>>
findMapList
();
/**
* 启用或停用一个围栏
* @param idParam 围栏id
* @param enable true:启用 false:停用
* @return 是否成功
*/
Result
<
String
>
enable
(
IdParam
idParam
,
Boolean
enable
);
/**
* 批量启用或停用围栏
* @param idsParam 围栏id集
* @param enable true:启用 false:停用
* @return 是否成功
*/
Result
<
String
>
batchEnable
(
@Valid
IdsParam
idsParam
,
Boolean
enable
);
/**
* 查询实时围栏信息
* @param param 条件
* @return 是否成功
*/
Result
<
PageVo
<
FenceRealtimeVo
>>
fenRealtimeList
(
FenceRealtimeConditionParam
param
);
}
}
app/src/main/java/com/yiring/app/service/location/fence/impl/FenceAlarmPushLogServiceImpl.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
location
.
fence
.
impl
;
import
com.yiring.app.domain.location.FenceAlarmPushLog
;
import
com.yiring.app.domain.location.FenceAlarmPushLogRepository
;
import
com.yiring.app.param.location.fence.FenceAlarmPushLogConditionParam
;
import
com.yiring.app.service.location.fence.FenceAlarmPushLogService
;
import
com.yiring.app.vo.location.fence.FenceAlarmPushLogVo
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.persistence.criteria.*
;
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
;
/**
* @author tml
* @version 1.0
* @date 2022/5/18 10:27
*/
@Slf4j
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
class
FenceAlarmPushLogServiceImpl
implements
FenceAlarmPushLogService
{
@Resource
private
FenceAlarmPushLogRepository
fenceAlarmPushLogRepository
;
@Override
public
Result
<
PageVo
<
FenceAlarmPushLogVo
>>
findList
(
FenceAlarmPushLogConditionParam
conditionParam
,
PageParam
pageParam
)
{
Pageable
pageable
=
PageParam
.
toPageable
(
pageParam
);
Specification
<
FenceAlarmPushLog
>
specification
=
(
root
,
query
,
criteriaBuilder
)
->
{
ArrayList
<
Predicate
>
list
=
new
ArrayList
<>();
if
(
conditionParam
.
getFenceAlarmId
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
FenceAlarmPushLog
.
Fields
.
fenceAlarm
),
conditionParam
.
getFenceAlarmId
()
)
);
}
if
(
conditionParam
.
getInformManner
()
!=
null
)
{
CriteriaBuilder
.
In
<
Object
>
in
=
criteriaBuilder
.
in
(
root
.
get
(
FenceAlarmPushLog
.
Fields
.
informManner
));
for
(
Integer
item
:
conditionParam
.
getInformManner
())
{
in
.
value
(
item
);
}
list
.
add
(
in
);
}
if
(
conditionParam
.
getStatus
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
FenceAlarmPushLog
.
Fields
.
status
),
conditionParam
.
getStatus
()));
}
if
(
conditionParam
.
getPhone
()
!=
null
)
{
Join
<
Object
,
Object
>
join
=
root
.
join
(
FenceAlarmPushLog
.
Fields
.
user
,
JoinType
.
LEFT
);
list
.
add
(
criteriaBuilder
.
like
(
join
.
get
(
User
.
Fields
.
mobile
),
"%"
+
conditionParam
.
getPhone
()
+
"%"
));
}
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
return
criteriaBuilder
.
and
(
array
);
};
Page
<
FenceAlarmPushLog
>
page
=
fenceAlarmPushLogRepository
.
findAll
(
specification
,
pageable
);
List
<
FenceAlarmPushLogVo
>
voList
=
page
.
get
().
map
(
FenceAlarmPushLogVo:
:
transform
).
collect
(
Collectors
.
toList
());
PageVo
<
FenceAlarmPushLogVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
}
}
app/src/main/java/com/yiring/app/service/location/fence/impl/FenceAlarmServiceImpl.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
location
.
fence
.
impl
;
package
com
.
yiring
.
app
.
service
.
location
.
fence
.
impl
;
import
static
com
.
yiring
.
app
.
domain
.
location
.
LocationFenceAlarm
.
Status
.
ING
;
import
static
java
.
util
.
stream
.
Collectors
.
toList
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder
;
import
com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.location.LocationFence
;
import
com.yiring.app.domain.location.LocationFence
;
import
com.yiring.app.domain.location.LocationFenceAlarm
;
import
com.yiring.app.domain.location.LocationFenceAlarm
;
import
com.yiring.app.domain.location.LocationFenceAlarmRepository
;
import
com.yiring.app.domain.location.LocationFenceAlarmRepository
;
import
com.yiring.app.domain.location.LocationFenceRepository
;
import
com.yiring.app.domain.location.LocationFenceRepository
;
import
com.yiring.app.excel.location.fence.FenceAlarmExcel
;
import
com.yiring.app.excel.location.fence.FenceAlarmExcel
;
import
com.yiring.app.param.location.fence.FenceAlarmConditionParam
;
import
com.yiring.app.param.location.fence.FenceAlarmConditionParam
;
import
com.yiring.app.param.location.fence.FenceAlarmLogParam
;
import
com.yiring.app.param.location.fence.FenceRealtimeConditionParam
;
import
com.yiring.app.service.location.fence.FenceAlarmService
;
import
com.yiring.app.service.location.fence.FenceAlarmService
;
import
com.yiring.app.util.MapUtil
;
import
com.yiring.app.util.MapUtil
;
import
com.yiring.app.vo.IdNameVo
;
import
com.yiring.app.vo.IdNameVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmLogVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmRealtimeVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmVo
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.core.Result
;
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.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
com.yiring.common.vo.PageVo
;
import
java.io.OutputStream
;
import
java.io.OutputStream
;
...
@@ -21,18 +34,20 @@ import java.net.URLEncoder;
...
@@ -21,18 +34,20 @@ import java.net.URLEncoder;
import
java.nio.charset.StandardCharsets
;
import
java.nio.charset.StandardCharsets
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Executors
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.persistence.criteria.Join
;
import
javax.persistence.criteria.*
;
import
javax.persistence.criteria.JoinType
;
import
javax.persistence.criteria.Predicate
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.messaging.simp.SimpMessagingTemplate
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
...
@@ -53,6 +68,9 @@ public class FenceAlarmServiceImpl implements FenceAlarmService {
...
@@ -53,6 +68,9 @@ public class FenceAlarmServiceImpl implements FenceAlarmService {
private
LocationFenceRepository
locationFenceRepository
;
private
LocationFenceRepository
locationFenceRepository
;
@Resource
@Resource
SimpMessagingTemplate
simpMessagingTemplate
;
@Resource
private
MapUtil
mapUtil
;
private
MapUtil
mapUtil
;
@Override
@Override
...
@@ -126,6 +144,107 @@ public class FenceAlarmServiceImpl implements FenceAlarmService {
...
@@ -126,6 +144,107 @@ public class FenceAlarmServiceImpl implements FenceAlarmService {
}
}
}
}
@Override
public
Result
<
FenceAlarmVo
>
findOne
(
IdParam
idParam
)
{
Optional
<
LocationFenceAlarm
>
optional
=
locationFenceAlarmRepository
.
findById
(
idParam
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"报警记录不存在"
);
}
FenceAlarmVo
vo
=
FenceAlarmVo
.
transform
(
optional
.
get
());
return
Result
.
ok
(
vo
);
}
@Async
@Override
public
void
alarmPushWeb
(
List
<
LocationFenceAlarm
>
newAlarm
)
{
JSONArray
jsonArray
=
new
JSONArray
();
for
(
LocationFenceAlarm
item
:
newAlarm
)
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"fence"
,
item
.
getFence
().
getName
());
jsonObject
.
put
(
"map"
,
mapUtil
.
getMapName
(
item
.
getAreaId
().
intValue
()));
jsonObject
.
put
(
"user"
,
item
.
getUser
().
getRealName
());
jsonObject
.
put
(
"tagId"
,
item
.
getTag
().
getId
());
jsonObject
.
put
(
"startTime"
,
item
.
getStartTime
());
jsonObject
.
put
(
"AlarmType"
,
item
.
getType
().
getName
());
jsonObject
.
put
(
"status"
,
item
.
getStatus
().
text
());
jsonArray
.
add
(
jsonObject
);
}
simpMessagingTemplate
.
convertAndSend
(
"/topic/position"
,
jsonArray
.
toJSONString
());
}
@Override
public
Result
<
PageVo
<
FenceAlarmLogVo
>>
findAlarmLog
(
FenceAlarmLogParam
param
)
{
Specification
<
LocationFenceAlarm
>
specification
=
(
root
,
query
,
criteriaBuilder
)
->
{
ArrayList
<
Predicate
>
list
=
new
ArrayList
<>();
if
(
param
.
getBeginTime
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
greaterThanOrEqualTo
(
root
.
get
(
LocationFenceAlarm
.
Fields
.
startTime
),
param
.
getBeginTime
()
)
);
}
if
(
param
.
getEndTime
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
lessThanOrEqualTo
(
root
.
get
(
LocationFenceAlarm
.
Fields
.
startTime
),
param
.
getEndTime
())
);
}
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
return
criteriaBuilder
.
and
(
array
);
};
List
<
LocationFenceAlarm
>
alarmList
=
locationFenceAlarmRepository
.
findAll
(
specification
);
Map
<
Integer
,
List
<
LocationFenceAlarm
>>
map
=
alarmList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
e
->
e
.
getFence
().
getFenceType
()));
List
<
FenceAlarmLogVo
>
voList
=
map
.
keySet
()
.
stream
()
.
map
(
e
->
FenceAlarmLogVo
.
builder
()
.
fenceType
(
e
)
.
fenceTypeName
(
FenceTypeEnum
.
getByCode
(
e
))
.
number
(
map
.
get
(
e
).
size
())
.
build
()
)
.
collect
(
toList
());
for
(
FenceAlarmLogVo
item
:
voList
)
{
List
<
LocationFenceAlarm
>
list
=
map
.
get
(
item
.
getFenceType
());
Map
<
AlarmType
,
List
<
LocationFenceAlarm
>>
listMap
=
list
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
LocationFenceAlarm:
:
getType
));
List
<
FenceAlarmLogVo
.
AlarmTypeVo
>
alarmTypeVos
=
listMap
.
keySet
()
.
stream
()
.
map
(
e
->
new
FenceAlarmLogVo
.
AlarmTypeVo
(
e
.
getId
(),
e
.
getName
(),
listMap
.
get
(
e
).
size
()))
.
collect
(
toList
());
item
.
setAlarmTypeVos
(
alarmTypeVos
);
}
PageVo
<
FenceAlarmLogVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
}
@Override
public
Result
<
PageVo
<
FenceAlarmRealtimeVo
>>
fenRealtimeList
(
FenceRealtimeConditionParam
param
,
PageParam
pageParam
)
{
Pageable
pageable
=
PageParam
.
toPageable
(
pageParam
);
Specification
<
LocationFenceAlarm
>
specification
=
(
root
,
query
,
criteriaBuilder
)
->
{
ArrayList
<
Predicate
>
list
=
new
ArrayList
<>();
if
(
param
.
getMapId
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
LocationFenceAlarm
.
Fields
.
areaId
),
param
.
getMapId
()));
}
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
LocationFenceAlarm
.
Fields
.
status
),
ING
));
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
return
criteriaBuilder
.
and
(
array
);
};
Page
<
LocationFenceAlarm
>
page
=
locationFenceAlarmRepository
.
findAll
(
specification
,
pageable
);
List
<
FenceAlarmRealtimeVo
>
voList
=
page
.
get
().
map
(
FenceAlarmRealtimeVo:
:
transform
).
collect
(
toList
());
PageVo
<
FenceAlarmRealtimeVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
}
private
Specification
<
LocationFenceAlarm
>
getSpecification
(
FenceAlarmConditionParam
param
)
{
private
Specification
<
LocationFenceAlarm
>
getSpecification
(
FenceAlarmConditionParam
param
)
{
return
(
root
,
query
,
criteriaBuilder
)
->
{
return
(
root
,
query
,
criteriaBuilder
)
->
{
ArrayList
<
Predicate
>
list
=
new
ArrayList
<>();
ArrayList
<
Predicate
>
list
=
new
ArrayList
<>();
...
@@ -138,7 +257,7 @@ public class FenceAlarmServiceImpl implements FenceAlarmService {
...
@@ -138,7 +257,7 @@ public class FenceAlarmServiceImpl implements FenceAlarmService {
}
}
if
(
param
.
getRealName
()
!=
null
)
{
if
(
param
.
getRealName
()
!=
null
)
{
Join
<
Object
,
Object
>
join
=
root
.
join
(
LocationFenceAlarm
.
Fields
.
user
,
JoinType
.
LEFT
);
Join
<
Object
,
Object
>
join
=
root
.
join
(
LocationFenceAlarm
.
Fields
.
user
,
JoinType
.
LEFT
);
list
.
add
(
criteriaBuilder
.
equal
(
join
.
get
(
User
.
Fields
.
realName
),
param
.
getRealName
()
));
list
.
add
(
criteriaBuilder
.
like
(
join
.
get
(
User
.
Fields
.
realName
),
"%"
+
param
.
getRealName
()
+
"%"
));
}
}
if
(
param
.
getStatus
()
!=
null
)
{
if
(
param
.
getStatus
()
!=
null
)
{
list
.
add
(
list
.
add
(
...
@@ -158,7 +277,7 @@ public class FenceAlarmServiceImpl implements FenceAlarmService {
...
@@ -158,7 +277,7 @@ public class FenceAlarmServiceImpl implements FenceAlarmService {
}
}
if
(
param
.
getEndTime
()
!=
null
)
{
if
(
param
.
getEndTime
()
!=
null
)
{
list
.
add
(
list
.
add
(
criteriaBuilder
.
lessThanOrEqualTo
(
root
.
get
(
LocationFenceAlarm
.
Fields
.
end
Time
),
param
.
getEndTime
())
criteriaBuilder
.
lessThanOrEqualTo
(
root
.
get
(
LocationFenceAlarm
.
Fields
.
start
Time
),
param
.
getEndTime
())
);
);
}
}
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
...
...
app/src/main/java/com/yiring/app/service/location/fence/impl/LocationFenceServiceImpl.java
浏览文件 @
31bc9e8a
...
@@ -5,21 +5,26 @@ import com.alibaba.fastjson.JSONArray;
...
@@ -5,21 +5,26 @@ import com.alibaba.fastjson.JSONArray;
import
com.yiring.app.constant.RedisKey
;
import
com.yiring.app.constant.RedisKey
;
import
com.yiring.app.domain.location.LocationFence
;
import
com.yiring.app.domain.location.LocationFence
;
import
com.yiring.app.domain.location.LocationFenceRepository
;
import
com.yiring.app.domain.location.LocationFenceRepository
;
import
com.yiring.app.param.location.fence.FenceRealtimeConditionParam
;
import
com.yiring.app.param.location.fence.LocationFenceAddParam
;
import
com.yiring.app.param.location.fence.LocationFenceAddParam
;
import
com.yiring.app.param.location.fence.LocationFenceConditionParam
;
import
com.yiring.app.param.location.fence.LocationFenceConditionParam
;
import
com.yiring.app.param.location.fence.LocationFenceModifyParam
;
import
com.yiring.app.param.location.fence.LocationFenceModifyParam
;
import
com.yiring.app.service.location.fence.LocationFenceService
;
import
com.yiring.app.service.location.fence.LocationFenceService
;
import
com.yiring.app.util.JpaUtil
;
import
com.yiring.app.util.JpaUtil
;
import
com.yiring.app.vo.CodeNameVo
;
import
com.yiring.app.vo.CodeNameVo
;
import
com.yiring.app.vo.location.fence.FenceRealtimeVo
;
import
com.yiring.app.vo.location.fence.LocationFenceGeoVo
;
import
com.yiring.app.vo.location.fence.LocationFenceSearchVo
;
import
com.yiring.app.vo.location.fence.LocationFenceSearchVo
;
import
com.yiring.app.vo.location.fence.LocationFenceVo
;
import
com.yiring.app.vo.location.fence.LocationFenceVo
;
import
com.yiring.app.vo.map.MapVo
;
import
com.yiring.app.vo.map.MapVo
;
import
com.yiring.auth.param.IdsParam
;
import
com.yiring.common.core.Redis
;
import
com.yiring.common.core.Redis
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
com.yiring.common.vo.PageVo
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.Optional
;
...
@@ -32,6 +37,7 @@ import org.springframework.data.domain.Pageable;
...
@@ -32,6 +37,7 @@ import org.springframework.data.domain.Pageable;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
/**
/**
* 围栏信息service
* 围栏信息service
...
@@ -92,13 +98,34 @@ public class LocationFenceServiceImpl implements LocationFenceService {
...
@@ -92,13 +98,34 @@ public class LocationFenceServiceImpl implements LocationFenceService {
if
(
optional
.
isEmpty
())
{
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"要删除的围栏信息不存在"
);
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"要删除的围栏信息不存在"
);
}
}
if
(!
CollectionUtils
.
isEmpty
(
optional
.
get
().
getRules
()))
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"要删除的围栏已经配置了规则,不能删除"
);
}
optional
.
get
().
setDeleted
(
true
);
optional
.
get
().
setDeleted
(
true
);
return
Result
.
ok
();
return
Result
.
ok
();
}
}
@Override
@Override
public
Result
<
PageVo
<
LocationFenceVo
>>
findList
(
LocationFenceConditionParam
conditionParam
,
PageParam
pageParam
)
{
public
Result
<
PageVo
<
LocationFenceVo
>>
findList
(
LocationFenceConditionParam
conditionParam
,
PageParam
pageParam
)
{
Specification
<
LocationFence
>
specification
=
(
root
,
query
,
criteriaBuilder
)
->
{
Specification
<
LocationFence
>
specification
=
getSpecification
(
conditionParam
);
Pageable
pageable
=
PageParam
.
toPageable
(
pageParam
);
Page
<
LocationFence
>
fencePage
=
locationFenceRepository
.
findAll
(
specification
,
pageable
);
List
<
LocationFenceVo
>
voList
=
fencePage
.
get
().
map
(
LocationFenceVo:
:
transform
).
collect
(
Collectors
.
toList
());
PageVo
<
LocationFenceVo
>
pageVo
=
PageVo
.
build
(
voList
,
fencePage
.
getTotalElements
());
return
Result
.
ok
(
pageVo
);
}
@Override
public
Result
<
PageVo
<
LocationFenceGeoVo
>>
findGeoList
(
LocationFenceConditionParam
conditionParam
)
{
Specification
<
LocationFence
>
specification
=
getSpecification
(
conditionParam
);
List
<
LocationFence
>
list
=
locationFenceRepository
.
findAll
(
specification
);
List
<
LocationFenceGeoVo
>
voList
=
list
.
stream
().
map
(
LocationFenceGeoVo:
:
transform
).
collect
(
Collectors
.
toList
());
PageVo
<
LocationFenceGeoVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
}
private
Specification
<
LocationFence
>
getSpecification
(
LocationFenceConditionParam
conditionParam
)
{
return
(
root
,
query
,
criteriaBuilder
)
->
{
ArrayList
<
Predicate
>
list
=
new
ArrayList
<>();
ArrayList
<
Predicate
>
list
=
new
ArrayList
<>();
if
(
conditionParam
.
getMapId
()
!=
null
)
{
if
(
conditionParam
.
getMapId
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
"mapId"
),
conditionParam
.
getMapId
()));
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
"mapId"
),
conditionParam
.
getMapId
()));
...
@@ -109,11 +136,6 @@ public class LocationFenceServiceImpl implements LocationFenceService {
...
@@ -109,11 +136,6 @@ public class LocationFenceServiceImpl implements LocationFenceService {
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
return
criteriaBuilder
.
and
(
array
);
return
criteriaBuilder
.
and
(
array
);
};
};
Pageable
pageable
=
PageParam
.
toPageable
(
pageParam
);
Page
<
LocationFence
>
fencePage
=
locationFenceRepository
.
findAll
(
specification
,
pageable
);
List
<
LocationFenceVo
>
voList
=
fencePage
.
get
().
map
(
LocationFenceVo:
:
transform
).
collect
(
Collectors
.
toList
());
PageVo
<
LocationFenceVo
>
pageVo
=
PageVo
.
build
(
voList
,
fencePage
.
getTotalElements
());
return
Result
.
ok
(
pageVo
);
}
}
@Override
@Override
...
@@ -150,4 +172,38 @@ public class LocationFenceServiceImpl implements LocationFenceService {
...
@@ -150,4 +172,38 @@ public class LocationFenceServiceImpl implements LocationFenceService {
PageVo
<
CodeNameVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
PageVo
<
CodeNameVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
return
Result
.
ok
(
pageVo
);
}
}
@Override
public
Result
<
String
>
enable
(
IdParam
idParam
,
Boolean
enable
)
{
Optional
<
LocationFence
>
optional
=
locationFenceRepository
.
findById
(
idParam
.
getId
());
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"围栏不存在"
);
}
optional
.
get
().
setEnable
(
enable
);
return
Result
.
ok
();
}
@Override
public
Result
<
String
>
batchEnable
(
IdsParam
idsParam
,
Boolean
enable
)
{
int
i
=
locationFenceRepository
.
batchEnable
(
idsParam
.
toIds
(),
enable
,
LocalDateTime
.
now
());
String
s
=
enable
?
"启用了"
:
"停用了"
;
return
Result
.
ok
(
s
+
i
+
"个围栏"
);
}
@Override
public
Result
<
PageVo
<
FenceRealtimeVo
>>
fenRealtimeList
(
FenceRealtimeConditionParam
param
)
{
Specification
<
LocationFence
>
specification
=
(
root
,
query
,
criteriaBuilder
)
->
{
ArrayList
<
Predicate
>
list
=
new
ArrayList
<>();
if
(
param
.
getMapId
()
!=
null
)
{
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
LocationFence
.
Fields
.
mapId
),
param
.
getMapId
()));
}
list
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
LocationFence
.
Fields
.
enable
),
true
));
Predicate
[]
array
=
list
.
toArray
(
new
Predicate
[
0
]);
return
criteriaBuilder
.
and
(
array
);
};
List
<
LocationFence
>
list
=
locationFenceRepository
.
findAll
(
specification
);
List
<
FenceRealtimeVo
>
voList
=
list
.
stream
().
map
(
FenceRealtimeVo:
:
transform
).
collect
(
Collectors
.
toList
());
PageVo
<
FenceRealtimeVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
}
}
}
app/src/main/java/com/yiring/app/service/location/rule/LocationFenceRuleService.java
浏览文件 @
31bc9e8a
...
@@ -6,6 +6,7 @@ import com.yiring.app.param.location.rule.LocationFenceRuleModifyParam;
...
@@ -6,6 +6,7 @@ import com.yiring.app.param.location.rule.LocationFenceRuleModifyParam;
import
com.yiring.app.vo.location.rule.LocationFenceRuleVo
;
import
com.yiring.app.vo.location.rule.LocationFenceRuleVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.vo.PageVo
;
/**
/**
* @author tml
* @author tml
...
@@ -40,4 +41,11 @@ public interface LocationFenceRuleService {
...
@@ -40,4 +41,11 @@ public interface LocationFenceRuleService {
* @return 规则信息
* @return 规则信息
*/
*/
Result
<
LocationFenceRuleVo
>
findRule
(
IdParam
idParam
);
Result
<
LocationFenceRuleVo
>
findRule
(
IdParam
idParam
);
/**
* 根据围栏id查询报警信息
* @param idParam 围栏id
* @return 规则信息
*/
Result
<
PageVo
<
LocationFenceRuleVo
>>
findByFenceId
(
IdParam
idParam
);
}
}
app/src/main/java/com/yiring/app/service/location/rule/impl/LocationFenceRuleServiceImpl.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
location
.
rule
.
impl
;
package
com
.
yiring
.
app
.
service
.
location
.
rule
.
impl
;
import
com.yiring.app.domain.location.LocationFence
;
import
com.yiring.app.domain.location.LocationFenceRule
;
import
com.yiring.app.domain.location.LocationFenceRule
;
import
com.yiring.app.domain.location.LocationFenceRuleRepository
;
import
com.yiring.app.domain.location.LocationFenceRuleRepository
;
import
com.yiring.app.param.location.rule.LocationFenceRuleAddParam
;
import
com.yiring.app.param.location.rule.LocationFenceRuleAddParam
;
...
@@ -11,7 +12,11 @@ import com.yiring.app.vo.location.rule.LocationFenceRuleVo;
...
@@ -11,7 +12,11 @@ import com.yiring.app.vo.location.rule.LocationFenceRuleVo;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.vo.PageVo
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -62,9 +67,26 @@ public class LocationFenceRuleServiceImpl implements LocationFenceRuleService {
...
@@ -62,9 +67,26 @@ public class LocationFenceRuleServiceImpl implements LocationFenceRuleService {
public
Result
<
LocationFenceRuleVo
>
findRule
(
IdParam
idParam
)
{
public
Result
<
LocationFenceRuleVo
>
findRule
(
IdParam
idParam
)
{
Optional
<
LocationFenceRule
>
optional
=
locationFenceRuleRepository
.
findById
(
idParam
.
getId
());
Optional
<
LocationFenceRule
>
optional
=
locationFenceRuleRepository
.
findById
(
idParam
.
getId
());
if
(
optional
.
isEmpty
())
{
if
(
optional
.
isEmpty
())
{
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"要
删除
的规则不存在"
);
return
Result
.
no
(
Status
.
EXPECTATION_FAILED
,
"要
查询
的规则不存在"
);
}
}
LocationFenceRuleVo
ruleVo
=
LocationFenceRuleVo
.
transform
(
optional
.
get
());
LocationFenceRuleVo
ruleVo
=
LocationFenceRuleVo
.
transform
(
optional
.
get
());
return
Result
.
ok
(
ruleVo
);
return
Result
.
ok
(
ruleVo
);
}
}
@Override
public
Result
<
PageVo
<
LocationFenceRuleVo
>>
findByFenceId
(
IdParam
idParam
)
{
LocationFence
fence
=
LocationFence
.
builder
().
id
(
idParam
.
getId
()).
build
();
List
<
LocationFenceRule
>
ruleList
=
locationFenceRuleRepository
.
findAllByFence
(
fence
);
List
<
LocationFenceRuleVo
>
voList
=
ruleList
.
stream
()
.
map
(
LocationFenceRuleVo:
:
transform
)
.
sorted
(
Comparator
.
comparing
(
LocationFenceRuleVo:
:
getRelevanceParamType
)
.
thenComparing
(
LocationFenceRuleVo:
:
getId
)
)
.
collect
(
Collectors
.
toList
());
PageVo
<
LocationFenceRuleVo
>
pageVo
=
PageVo
.
build
(
voList
,
voList
.
size
());
return
Result
.
ok
(
pageVo
);
}
}
}
app/src/main/java/com/yiring/app/service/risk/RiskWarnService.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
service
.
risk
;
import
com.yiring.app.param.risk.RiskWarnAddParam
;
import
com.yiring.app.param.risk.RiskWarnConditionParam
;
import
com.yiring.app.param.risk.RiskWarnModifyParam
;
import
com.yiring.app.vo.risk.RiskWarnDetailVo
;
import
com.yiring.app.vo.risk.RiskWarnVo
;
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
java.util.Set
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.Valid
;
import
org.springframework.web.multipart.MultipartFile
;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 17:42
*/
public
interface
RiskWarnService
{
/**
* 添加一条
* @param param 风险预警信息
* @return 是否成功
*/
Result
<
String
>
addOne
(
@Valid
RiskWarnAddParam
param
);
/**
* 修改一条
* @param param 风险预警信息
* @return 是否成功
*/
Result
<
String
>
modifyOne
(
@Valid
RiskWarnModifyParam
param
);
/**
* 删除一条
* @param idParam id
* @return 是否成功
*/
Result
<
String
>
removeOne
(
@Valid
IdParam
idParam
);
/**
* 查询一条
* @param idParam id
* @return 风险预警详细信息
*/
Result
<
RiskWarnDetailVo
>
findOne
(
@Valid
IdParam
idParam
);
/**
* 查询列表
* @param conditionParam 条件
* @param pageParam 分页参数
* @return 列表
*/
Result
<
PageVo
<
RiskWarnVo
>>
findList
(
@Valid
RiskWarnConditionParam
conditionParam
,
@Valid
PageParam
pageParam
);
/**
* 导出
* @param conditionParam 条件
* @param response response
*/
void
exportRiskWarn
(
@Valid
RiskWarnConditionParam
conditionParam
,
HttpServletResponse
response
);
/**
* 导入
* @param file excel文件
* @return 是否成功
*/
Result
<
String
>
importRiskWarn
(
MultipartFile
file
);
/**
* 导出模板
* @param response response
*/
void
exportTemplate
(
HttpServletResponse
response
);
/**
* 批量启用或停用
* @param ids ids
* @param enable 启用:true-启用,false-停用
* @return 是否成功
*/
Result
<
String
>
batchEnable
(
Set
<
Long
>
ids
,
boolean
enable
);
}
app/src/main/java/com/yiring/app/service/risk/impl/RiskWarnServiceImpl.java
0 → 100644
浏览文件 @
31bc9e8a
差异被折叠。
点击展开。
app/src/main/java/com/yiring/app/util/TimeUtil.java
浏览文件 @
31bc9e8a
...
@@ -4,6 +4,8 @@ package com.yiring.app.util;
...
@@ -4,6 +4,8 @@ package com.yiring.app.util;
import
com.yiring.common.constant.RegEx
;
import
com.yiring.common.constant.RegEx
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
/**
* @author tml
* @author tml
...
@@ -12,6 +14,18 @@ import java.time.format.DateTimeFormatter;
...
@@ -12,6 +14,18 @@ import java.time.format.DateTimeFormatter;
*/
*/
public
class
TimeUtil
{
public
class
TimeUtil
{
public
static
final
List
<
String
>
WEEK
=
new
ArrayList
<>();
static
{
WEEK
.
add
(
"星期一"
);
WEEK
.
add
(
"星期二"
);
WEEK
.
add
(
"星期三"
);
WEEK
.
add
(
"星期四"
);
WEEK
.
add
(
"星期五"
);
WEEK
.
add
(
"星期六"
);
WEEK
.
add
(
"星期日"
);
}
/**
/**
* 判断一个时间是否在配置的时间内
* 判断一个时间是否在配置的时间内
* @param time 判断的时间
* @param time 判断的时间
...
@@ -19,8 +33,8 @@ public class TimeUtil {
...
@@ -19,8 +33,8 @@ public class TimeUtil {
* @param endTime 配置的结束时间
* @param endTime 配置的结束时间
* @return true:在 false:不在
* @return true:在 false:不在
*/
*/
public
static
boolean
judgeTime
(
LocalDateTime
time
,
String
beginTime
,
String
endTime
)
{
public
static
boolean
judge
Week
Time
(
LocalDateTime
time
,
String
beginTime
,
String
endTime
)
{
if
(!
beginTime
.
matches
(
RegEx
.
TIME_RULE
)
||
!
endTime
.
matches
(
RegEx
.
TIME_RULE
))
{
if
(!
beginTime
.
matches
(
RegEx
.
WEEK_TIME_RULE
)
||
!
endTime
.
matches
(
RegEx
.
WEEK_
TIME_RULE
))
{
throw
new
IllegalArgumentException
(
"时间格式不正确"
);
throw
new
IllegalArgumentException
(
"时间格式不正确"
);
}
}
DateTimeFormatter
pattern
=
DateTimeFormatter
.
ofPattern
(
"E HH:mm:ss"
);
DateTimeFormatter
pattern
=
DateTimeFormatter
.
ofPattern
(
"E HH:mm:ss"
);
...
@@ -28,28 +42,62 @@ public class TimeUtil {
...
@@ -28,28 +42,62 @@ public class TimeUtil {
int
beginWeek
=
transform
(
beginTime
.
charAt
(
2
));
int
beginWeek
=
transform
(
beginTime
.
charAt
(
2
));
int
endWeek
=
transform
(
endTime
.
charAt
(
2
));
int
endWeek
=
transform
(
endTime
.
charAt
(
2
));
int
nowWeek
=
transform
(
source
.
charAt
(
1
));
int
nowWeek
=
transform
(
source
.
charAt
(
1
));
if
(
nowWeek
<
beginWeek
||
nowWeek
>
endWeek
)
{
return
false
;
String
beginHour
=
beginTime
.
substring
(
4
,
6
);
}
String
endHour
=
endTime
.
substring
(
4
,
6
);
int
beginHour
=
Integer
.
parseInt
(
beginTime
.
substring
(
4
,
6
));
String
nowHour
=
source
.
substring
(
3
,
5
);
int
endHour
=
Integer
.
parseInt
(
endTime
.
substring
(
4
,
6
));
int
nowHour
=
Integer
.
parseInt
(
beginTime
.
substring
(
3
,
5
));
String
beginMinute
=
beginTime
.
substring
(
7
,
9
);
if
(
nowHour
<
beginHour
||
nowHour
>
endHour
)
{
String
endMinute
=
endTime
.
substring
(
7
,
9
);
return
false
;
String
nowMinute
=
source
.
substring
(
6
,
8
);
}
int
beginMinute
=
Integer
.
parseInt
(
beginTime
.
substring
(
7
,
9
));
String
beginSecond
=
beginTime
.
substring
(
10
);
int
endMinute
=
Integer
.
parseInt
(
endTime
.
substring
(
7
,
9
));
String
endSecond
=
endTime
.
substring
(
10
);
int
nowMinute
=
Integer
.
parseInt
(
beginTime
.
substring
(
6
,
8
));
String
nowSecond
=
source
.
substring
(
9
);
if
(
nowMinute
<
beginMinute
||
nowHour
>
endMinute
)
{
return
false
;
String
beginString
=
beginWeek
+
beginHour
+
beginMinute
+
beginSecond
;
}
String
endString
=
endWeek
+
endHour
+
endMinute
+
endSecond
;
int
beginSecond
=
Integer
.
parseInt
(
beginTime
.
substring
(
10
));
String
nowString
=
nowWeek
+
nowHour
+
nowMinute
+
nowSecond
;
int
endSecond
=
Integer
.
parseInt
(
endTime
.
substring
(
10
));
int
begin
=
Integer
.
parseInt
(
beginString
);
int
nowSecond
=
Integer
.
parseInt
(
beginTime
.
substring
(
9
));
int
end
=
Integer
.
parseInt
(
endString
);
if
(
nowSecond
<
beginSecond
||
nowSecond
>
endSecond
)
{
int
now
=
Integer
.
parseInt
(
nowString
);
return
false
;
return
now
>=
begin
&&
now
<=
end
;
}
public
static
boolean
judgeWeek
(
LocalDateTime
time
,
String
week
)
{
if
(
week
.
matches
(
RegEx
.
WEEK_RULE
))
{
throw
new
IllegalArgumentException
(
"星期格式不正确"
);
}
}
return
true
;
DateTimeFormatter
pattern
=
DateTimeFormatter
.
ofPattern
(
"E"
);
String
timeFormat
=
time
.
format
(
pattern
);
char
a
=
timeFormat
.
charAt
(
1
);
char
b
=
week
.
charAt
(
2
);
return
a
==
b
;
}
public
static
boolean
judgeTime
(
LocalDateTime
time
,
String
beginTime
,
String
endTime
)
{
DateTimeFormatter
pattern
=
DateTimeFormatter
.
ofPattern
(
"HH:mm:ss"
);
String
source
=
time
.
format
(
pattern
);
String
beginHour
=
beginTime
.
substring
(
0
,
2
);
String
endHour
=
endTime
.
substring
(
0
,
2
);
String
nowHour
=
source
.
substring
(
0
,
2
);
String
beginMinute
=
beginTime
.
substring
(
3
,
5
);
String
endMinute
=
endTime
.
substring
(
3
,
5
);
String
nowMinute
=
source
.
substring
(
3
,
5
);
String
beginSecond
=
beginTime
.
substring
(
6
);
String
endSecond
=
endTime
.
substring
(
6
);
String
nowSecond
=
source
.
substring
(
6
);
String
beginString
=
beginHour
+
beginMinute
+
beginSecond
;
String
endString
=
endHour
+
endMinute
+
endSecond
;
String
nowString
=
nowHour
+
nowMinute
+
nowSecond
;
int
begin
=
Integer
.
parseInt
(
beginString
);
int
end
=
Integer
.
parseInt
(
endString
);
int
now
=
Integer
.
parseInt
(
nowString
);
return
now
>=
begin
&&
now
<=
end
;
}
}
private
static
int
transform
(
char
source
)
{
private
static
int
transform
(
char
source
)
{
...
...
app/src/main/java/com/yiring/app/vo/district/DistrictDetailsVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
district
;
import
com.yiring.app.domain.district.District
;
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.locationtech.jts.geom.Geometry
;
/**
* @author tml
* @version 1.0
* @date 2022/5/19 16:02
*/
@ApiModel
(
"区域信息"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
DistrictDetailsVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
3900485837172743182L
;
@ApiModelProperty
(
value
=
"区域id"
,
example
=
"1"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"区域名称"
,
example
=
"生产区域"
)
private
String
name
;
@ApiModelProperty
(
value
=
"风险等级(区域颜色)"
,
example
=
"f##0000"
)
private
String
riskGrade
;
@ApiModelProperty
(
value
=
"空间信息"
,
dataType
=
"java.lang.String"
)
private
Geometry
geometry
;
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
)
private
Integer
mapId
;
public
static
DistrictDetailsVo
transform
(
District
district
)
{
return
DistrictDetailsVo
.
builder
()
.
id
(
district
.
getId
())
.
name
(
district
.
getName
())
.
riskGrade
(
district
.
getRiskGrade
())
.
geometry
(
district
.
getGeometry
())
.
mapId
(
builder
().
mapId
)
.
build
();
}
}
app/src/main/java/com/yiring/app/vo/district/DistrictUserVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
district
;
import
com.yiring.app.domain.district.District
;
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/5/20 14:41
*/
@ApiModel
(
"区域内员工数量"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
DistrictUserVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
6164018365847108448L
;
@ApiModelProperty
(
value
=
"区域名称"
,
example
=
"生产区域"
)
private
String
name
;
@ApiModelProperty
(
value
=
"此区域的员工数量"
,
example
=
"20"
)
private
Integer
userNum
;
public
static
DistrictUserVo
transform
(
District
district
)
{
return
DistrictUserVo
.
builder
().
name
(
district
.
getName
()).
userNum
(
district
.
getTags
().
size
()).
build
();
}
}
app/src/main/java/com/yiring/app/vo/district/DistrictVo.java
浏览文件 @
31bc9e8a
...
@@ -12,6 +12,7 @@ import lombok.AllArgsConstructor;
...
@@ -12,6 +12,7 @@ import lombok.AllArgsConstructor;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
org.locationtech.jts.geom.Geometry
;
/**
/**
* 区域信息VO
* 区域信息VO
...
@@ -19,7 +20,7 @@ import lombok.NoArgsConstructor;
...
@@ -19,7 +20,7 @@ import lombok.NoArgsConstructor;
* @version 1.0
* @version 1.0
* @date 2022/4/27 9:10
* @date 2022/4/27 9:10
*/
*/
@ApiModel
(
"
DistrictVo
"
)
@ApiModel
(
"
区域信息
"
)
@Data
@Data
@Builder
@Builder
@NoArgsConstructor
@NoArgsConstructor
...
@@ -39,12 +40,16 @@ public class DistrictVo implements Serializable {
...
@@ -39,12 +40,16 @@ public class DistrictVo implements Serializable {
@ApiModelProperty
(
value
=
"风险等级(区域颜色)"
,
example
=
"f##0000"
)
@ApiModelProperty
(
value
=
"风险等级(区域颜色)"
,
example
=
"f##0000"
)
private
String
riskGrade
;
private
String
riskGrade
;
@ApiModelProperty
(
value
=
"区域位置信息"
,
dataType
=
"java.lang.String"
)
private
Geometry
geometry
;
public
static
DistrictVo
transform
(
District
district
)
{
public
static
DistrictVo
transform
(
District
district
)
{
return
DistrictVo
return
DistrictVo
.
builder
()
.
builder
()
.
id
(
district
.
getId
())
.
id
(
district
.
getId
())
.
name
(
district
.
getName
())
.
name
(
district
.
getName
())
.
riskGrade
(
district
.
getRiskGrade
())
.
riskGrade
(
district
.
getRiskGrade
())
.
geometry
(
district
.
getGeometry
())
.
build
();
.
build
();
}
}
}
}
app/src/main/java/com/yiring/app/vo/location/fence/FenceAlarmLogVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
location
.
fence
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.List
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/20 9:50
*/
@ApiModel
(
"围栏报警数据记录"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
FenceAlarmLogVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
5038611185916574099L
;
@ApiModelProperty
(
value
=
"围栏类别:1-普通围栏,2-特殊作业,3-重大危险源"
,
example
=
"1"
)
private
Integer
fenceType
;
@ApiModelProperty
(
value
=
"围栏类别名称"
,
example
=
"普通围栏"
)
private
String
fenceTypeName
;
@ApiModelProperty
(
value
=
"报警数量"
,
example
=
"20"
)
private
Integer
number
;
@ApiModelProperty
(
value
=
"报警类型相关数据记录"
)
private
List
<
AlarmTypeVo
>
alarmTypeVos
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
static
class
AlarmTypeVo
{
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"报警类型id"
,
example
=
"1524218162491428864"
)
private
Long
alarmType
;
@ApiModelProperty
(
value
=
"报警类型名称"
,
example
=
"超员报警"
)
private
String
alarmTypeName
;
@ApiModelProperty
(
value
=
"报警数量"
,
example
=
"20"
)
private
Integer
number
;
}
}
app/src/main/java/com/yiring/app/vo/location/fence/FenceAlarmPushLogVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
location
.
fence
;
import
com.yiring.app.constant.alarm.InformMannerEnum
;
import
com.yiring.app.constant.alarm.ReceiveStatusEnum
;
import
com.yiring.app.domain.location.FenceAlarmPushLog
;
import
io.swagger.annotations.ApiModel
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.annotations.Comment
;
/**
* @author tml
* @version 1.0
* @date 2022/5/18 9:56
*/
@ApiModel
(
"围栏报警推送记录"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
FenceAlarmPushLogVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
4628469269093052929L
;
@Comment
(
"报警接受人"
)
private
String
name
;
@Comment
(
"联系电话"
)
private
String
phone
;
@Comment
(
"通知方式: 1-app消息 2-短信通知 3-电话通知"
)
private
String
informManner
;
@Comment
(
"通知状态: 1-成功 2-失败"
)
private
String
status
;
@Comment
(
"接受时间"
)
private
LocalDateTime
time
;
public
static
FenceAlarmPushLogVo
transform
(
FenceAlarmPushLog
pushLog
)
{
return
FenceAlarmPushLogVo
.
builder
()
.
name
(
pushLog
.
getUser
().
getRealName
()
+
"("
+
pushLog
.
getUser
().
getDepartment
().
getName
()
+
")"
)
.
phone
(
pushLog
.
getUser
().
getMobile
())
.
informManner
(
InformMannerEnum
.
getByCode
(
pushLog
.
getInformManner
()))
.
status
(
ReceiveStatusEnum
.
getByCode
(
pushLog
.
getStatus
()))
.
time
(
pushLog
.
getTime
())
.
build
();
}
}
app/src/main/java/com/yiring/app/vo/location/fence/FenceAlarmRealtimeVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
location
.
fence
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.yiring.app.domain.location.LocationFenceAlarm
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author tml
* @version 1.0
* @date 2022/5/20 9:48
*/
@ApiModel
(
"实时围栏报警信息"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
FenceAlarmRealtimeVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
16864683628344917L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"报警信息id"
,
example
=
"2"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"所在围栏名称"
,
example
=
"一号围栏"
)
private
String
fenceName
;
@ApiModelProperty
(
value
=
"触警人"
,
example
=
"张三"
)
private
String
user
;
@ApiModelProperty
(
value
=
"报警时间"
,
example
=
"2022-05-20 10:00:00"
)
private
LocalDateTime
startTime
;
@ApiModelProperty
(
value
=
"报警类型"
,
example
=
"超员报警"
)
private
String
alarmType
;
public
static
FenceAlarmRealtimeVo
transform
(
LocationFenceAlarm
locationFenceAlarm
)
{
return
FenceAlarmRealtimeVo
.
builder
()
.
id
(
locationFenceAlarm
.
getId
())
.
fenceName
(
locationFenceAlarm
.
getFence
().
getName
())
.
user
(
locationFenceAlarm
.
getUser
().
getRealName
())
.
startTime
(
locationFenceAlarm
.
getStartTime
())
.
alarmType
(
locationFenceAlarm
.
getType
().
getName
())
.
build
();
}
}
app/src/main/java/com/yiring/app/vo/location/fence/FenceAlarmVo.java
浏览文件 @
31bc9e8a
...
@@ -4,12 +4,14 @@ package com.yiring.app.vo.location.fence;
...
@@ -4,12 +4,14 @@ package com.yiring.app.vo.location.fence;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.constant.alarm.InformMannerEnum
;
import
com.yiring.app.domain.location.LocationFenceAlarm
;
import
com.yiring.app.domain.location.LocationFenceAlarm
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.stream.Collectors
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -70,7 +72,22 @@ public class FenceAlarmVo implements Serializable {
...
@@ -70,7 +72,22 @@ public class FenceAlarmVo implements Serializable {
@ApiModelProperty
(
value
=
"报警状态"
,
example
=
"报警中"
)
@ApiModelProperty
(
value
=
"报警状态"
,
example
=
"报警中"
)
private
String
statusName
;
private
String
statusName
;
@ApiModelProperty
(
value
=
"通知方式"
,
example
=
"app消息, 短信, 电话"
)
private
String
informManner
;
public
static
FenceAlarmVo
transform
(
LocationFenceAlarm
fenceAlarm
)
{
public
static
FenceAlarmVo
transform
(
LocationFenceAlarm
fenceAlarm
)
{
String
recipient
=
fenceAlarm
.
getPushLogs
()
.
stream
()
.
map
(
e
->
e
.
getUser
().
getRealName
())
.
distinct
()
.
collect
(
Collectors
.
joining
(
", "
));
String
informManner
=
fenceAlarm
.
getPushLogs
()
.
stream
()
.
map
(
e
->
InformMannerEnum
.
getByCode
(
e
.
getInformManner
()))
.
distinct
()
.
collect
(
Collectors
.
joining
(
", "
));
return
FenceAlarmVo
return
FenceAlarmVo
.
builder
()
.
builder
()
.
id
(
fenceAlarm
.
getId
())
.
id
(
fenceAlarm
.
getId
())
...
@@ -83,9 +100,9 @@ public class FenceAlarmVo implements Serializable {
...
@@ -83,9 +100,9 @@ public class FenceAlarmVo implements Serializable {
.
startTime
(
fenceAlarm
.
getStartTime
())
.
startTime
(
fenceAlarm
.
getStartTime
())
.
endTime
(
fenceAlarm
.
getEndTime
())
.
endTime
(
fenceAlarm
.
getEndTime
())
.
alarmTypeName
(
fenceAlarm
.
getType
().
getName
())
.
alarmTypeName
(
fenceAlarm
.
getType
().
getName
())
//todo
.
recipient
(
recipient
)
//.recipient()
.
statusName
(
fenceAlarm
.
getStatus
().
text
())
.
statusName
(
fenceAlarm
.
getStatus
().
text
())
.
informManner
(
informManner
)
.
build
();
.
build
();
}
}
}
}
app/src/main/java/com/yiring/app/vo/location/fence/FenceRealtimeVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
location
.
fence
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.domain.location.LocationFence
;
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.locationtech.jts.geom.Geometry
;
/**
* @author tml
* @version 1.0
* @date 2022/5/20 9:11
*/
@ApiModel
(
"围栏实时数据"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
FenceRealtimeVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
5364975855865067076L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"围栏id"
,
example
=
"1527096652123344896"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"围栏名称"
,
example
=
"一号围栏"
)
private
String
name
;
@ApiModelProperty
(
value
=
"地图id"
,
example
=
"1"
)
private
Integer
mapId
;
@ApiModelProperty
(
value
=
"地图名称"
,
example
=
"总图"
)
private
String
mapName
;
@ApiModelProperty
(
value
=
"围栏类别:1-普通围栏,2-特殊作业,3-重大危险源"
,
example
=
"1"
)
private
Integer
fenceType
;
@ApiModelProperty
(
value
=
"围栏类别名称"
,
example
=
"普通围栏"
)
private
String
fenceTypeName
;
@ApiModelProperty
(
value
=
"空间信息"
,
dataType
=
"java.lang.String"
)
private
Geometry
geometry
;
public
static
FenceRealtimeVo
transform
(
LocationFence
fence
)
{
return
FenceRealtimeVo
.
builder
()
.
id
(
fence
.
getId
())
.
name
(
fence
.
getName
())
.
mapId
(
fence
.
getMapId
().
intValue
())
.
mapName
(
fence
.
getMapName
())
.
fenceType
(
fence
.
getFenceType
())
.
fenceTypeName
(
FenceTypeEnum
.
getByCode
(
fence
.
getFenceType
()))
.
geometry
(
fence
.
getGeometry
())
.
build
();
}
}
app/src/main/java/com/yiring/app/vo/location/fence/LocationFenceGeoVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
location
.
fence
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.yiring.app.domain.location.LocationFence
;
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.locationtech.jts.geom.Geometry
;
/**
* @author tml
* @version 1.0
* @date 2022/5/26 9:08
*/
@ApiModel
(
"电子围栏地图信息"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
LocationFenceGeoVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
7736396772271720214L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"id"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"type"
)
private
String
type
;
@ApiModelProperty
(
"properties"
)
private
Properties
properties
;
@ApiModelProperty
(
value
=
"位置信息"
)
private
Geometry
geometry
;
public
static
LocationFenceGeoVo
transform
(
LocationFence
locationFence
)
{
return
LocationFenceGeoVo
.
builder
()
.
id
(
locationFence
.
getId
())
.
type
(
"Feature"
)
.
properties
(
new
Properties
(
locationFence
.
getId
(),
locationFence
.
getName
(),
locationFence
.
getGeometry
().
getGeometryType
()
)
)
.
geometry
(
locationFence
.
getGeometry
())
.
build
();
}
@Data
@AllArgsConstructor
@NoArgsConstructor
static
class
Properties
{
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"id"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"围栏名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"位置类型"
)
private
String
type
;
}
}
app/src/main/java/com/yiring/app/vo/location/fence/LocationFenceVo.java
浏览文件 @
31bc9e8a
...
@@ -45,6 +45,10 @@ public class LocationFenceVo implements Serializable {
...
@@ -45,6 +45,10 @@ public class LocationFenceVo implements Serializable {
@ApiModelProperty
(
value
=
"地图名称"
)
@ApiModelProperty
(
value
=
"地图名称"
)
private
String
mapName
;
private
String
mapName
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"摄像头id"
)
private
Long
videoId
;
@ApiModelProperty
(
value
=
"摄像头名称"
)
@ApiModelProperty
(
value
=
"摄像头名称"
)
private
String
videoName
;
private
String
videoName
;
...
@@ -77,6 +81,7 @@ public class LocationFenceVo implements Serializable {
...
@@ -77,6 +81,7 @@ public class LocationFenceVo implements Serializable {
.
id
(
locationFence
.
getId
())
.
id
(
locationFence
.
getId
())
.
name
(
locationFence
.
getName
())
.
name
(
locationFence
.
getName
())
.
mapName
(
locationFence
.
getMapName
())
.
mapName
(
locationFence
.
getMapName
())
.
videoId
(
locationFence
.
getVideo
().
getId
())
.
videoName
(
locationFence
.
getVideo
().
getVideoName
())
.
videoName
(
locationFence
.
getVideo
().
getVideoName
())
.
fenceType
(
locationFence
.
getFenceType
())
.
fenceType
(
locationFence
.
getFenceType
())
.
fenceTypeName
(
FenceTypeEnum
.
getByCode
(
locationFence
.
getFenceType
()))
.
fenceTypeName
(
FenceTypeEnum
.
getByCode
(
locationFence
.
getFenceType
()))
...
...
app/src/main/java/com/yiring/app/vo/location/rule/LocationFenceRuleVo.java
浏览文件 @
31bc9e8a
...
@@ -52,8 +52,11 @@ public class LocationFenceRuleVo implements Serializable {
...
@@ -52,8 +52,11 @@ public class LocationFenceRuleVo implements Serializable {
@ApiModelProperty
(
value
=
"所属的报警类别id"
,
example
=
"1"
,
required
=
true
)
@ApiModelProperty
(
value
=
"所属的报警类别id"
,
example
=
"1"
,
required
=
true
)
private
Long
alarmTypeId
;
private
Long
alarmTypeId
;
@ApiModelProperty
(
value
=
"所属的报警类别名称"
,
example
=
"超员报警"
,
required
=
true
)
private
String
alarmTypeName
;
@ApiModelProperty
(
@ApiModelProperty
(
value
=
"设置的关联参数类型
(1:最大人数,2:最小人数,3:允许进入人员,4:不允许离开人员,5:静止时长(分钟),6:滞留时长(分钟),7:触发报警距离)
"
,
value
=
"设置的关联参数类型
:1-最多人数,2-最少人数,3-允许进入人员,4-不允许离开人员,5-静止时长,6-滞留时长,7-触发报警距离
"
,
example
=
"1"
,
example
=
"1"
,
required
=
true
required
=
true
)
)
...
@@ -75,6 +78,7 @@ public class LocationFenceRuleVo implements Serializable {
...
@@ -75,6 +78,7 @@ public class LocationFenceRuleVo implements Serializable {
.
fenceType
(
locationFenceRule
.
getFence
().
getFenceType
())
.
fenceType
(
locationFenceRule
.
getFence
().
getFenceType
())
.
fenceTypeName
(
FenceTypeEnum
.
getByCode
(
locationFenceRule
.
getFence
().
getFenceType
()))
.
fenceTypeName
(
FenceTypeEnum
.
getByCode
(
locationFenceRule
.
getFence
().
getFenceType
()))
.
alarmTypeId
(
locationFenceRule
.
getAlarmType
().
getId
())
.
alarmTypeId
(
locationFenceRule
.
getAlarmType
().
getId
())
.
alarmTypeName
(
locationFenceRule
.
getAlarmType
().
getName
())
.
relevanceParamType
(
locationFenceRule
.
getRelevanceParamType
())
.
relevanceParamType
(
locationFenceRule
.
getRelevanceParamType
())
.
relevanceParamTypeName
(
RelevanceParamEnum
.
getByCode
(
locationFenceRule
.
getRelevanceParamType
()))
.
relevanceParamTypeName
(
RelevanceParamEnum
.
getByCode
(
locationFenceRule
.
getRelevanceParamType
()))
.
ruleVo
(
ruleVo
)
.
ruleVo
(
ruleVo
)
...
...
app/src/main/java/com/yiring/app/vo/location/rule/RuleVo.java
浏览文件 @
31bc9e8a
...
@@ -36,6 +36,7 @@ public class RuleVo implements Serializable {
...
@@ -36,6 +36,7 @@ public class RuleVo implements Serializable {
@ApiModelProperty
(
value
=
"选择的播放语音名称"
,
example
=
"紧急语音"
)
@ApiModelProperty
(
value
=
"选择的播放语音名称"
,
example
=
"紧急语音"
)
private
String
voiceName
;
private
String
voiceName
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"选择的播放设备id"
,
example
=
"1"
)
@ApiModelProperty
(
value
=
"选择的播放设备id"
,
example
=
"1"
)
private
Long
playEquipmentId
;
private
Long
playEquipmentId
;
...
...
app/src/main/java/com/yiring/app/vo/location/rule/TimeAndNumberVo.java
浏览文件 @
31bc9e8a
...
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
...
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Set
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -25,11 +26,7 @@ public class TimeAndNumberVo implements Serializable {
...
@@ -25,11 +26,7 @@ public class TimeAndNumberVo implements Serializable {
@Serial
@Serial
private
static
final
long
serialVersionUID
=
-
6796977663003158881L
;
private
static
final
long
serialVersionUID
=
-
6796977663003158881L
;
@ApiModelProperty
(
value
=
"起始时间"
,
example
=
"星期一 08:00:00"
)
private
Set
<
TimeVo
>
time
;
private
String
beginTime
;
@ApiModelProperty
(
value
=
"终止时间"
,
example
=
"星期一 18:00:00"
)
private
String
endTime
;
@ApiModelProperty
(
value
=
"人数"
,
example
=
"100"
)
@ApiModelProperty
(
value
=
"人数"
,
example
=
"100"
)
private
Integer
number
;
private
Integer
number
;
...
...
app/src/main/java/com/yiring/app/vo/location/rule/TimeAndUserVo.java
浏览文件 @
31bc9e8a
...
@@ -2,12 +2,10 @@
...
@@ -2,12 +2,10 @@
package
com
.
yiring
.
app
.
vo
.
location
.
rule
;
package
com
.
yiring
.
app
.
vo
.
location
.
rule
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Set
;
import
java.util.Set
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.SuperBuilder
;
import
lombok.experimental.SuperBuilder
;
...
@@ -20,7 +18,6 @@ import lombok.experimental.SuperBuilder;
...
@@ -20,7 +18,6 @@ import lombok.experimental.SuperBuilder;
@ApiModel
(
"报警类型中的允许进入人员或不允许离开人员"
)
@ApiModel
(
"报警类型中的允许进入人员或不允许离开人员"
)
@Data
@Data
@SuperBuilder
(
toBuilder
=
true
)
@SuperBuilder
(
toBuilder
=
true
)
@Builder
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@AllArgsConstructor
public
class
TimeAndUserVo
implements
Serializable
{
public
class
TimeAndUserVo
implements
Serializable
{
...
@@ -28,11 +25,7 @@ public class TimeAndUserVo implements Serializable {
...
@@ -28,11 +25,7 @@ public class TimeAndUserVo implements Serializable {
@Serial
@Serial
private
static
final
long
serialVersionUID
=
-
7037620599825901175L
;
private
static
final
long
serialVersionUID
=
-
7037620599825901175L
;
@ApiModelProperty
(
value
=
"起始时间"
,
example
=
"星期一 08:00:00"
)
private
Set
<
TimeVo
>
time
;
private
String
beginTime
;
@ApiModelProperty
(
value
=
"终止时间"
,
example
=
"星期一 18:00:00"
)
private
String
endTime
;
private
Set
<
RelevanceUserVo
>
user
;
private
Set
<
RelevanceUserVo
>
user
;
}
}
app/src/main/java/com/yiring/app/vo/location/rule/TimeVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
location
.
rule
;
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/5/23 11:53
*/
@ApiModel
(
"TimeVo"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
TimeVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
3275638425715878794L
;
@ApiModelProperty
(
value
=
"星期"
,
example
=
"星期一"
)
private
String
week
;
@ApiModelProperty
(
value
=
"起始时间"
,
example
=
"08:00:00"
)
private
String
beginTime
;
@ApiModelProperty
(
value
=
"终止时间"
,
example
=
"18:00:00"
)
private
String
endTime
;
}
app/src/main/java/com/yiring/app/vo/risk/RiskWarnDetailVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
risk
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.yiring.app.domain.risk.RiskWarn
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
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
;
import
org.locationtech.jts.geom.Point
;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 16:06
*/
@ApiModel
(
"风险预警管理"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
RiskWarnDetailVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
519127002530795898L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"工区名称"
,
example
=
"组装工区"
)
private
String
workAreaName
;
@ApiModelProperty
(
value
=
"经纬度"
,
dataType
=
"java.lang.String"
)
private
Point
point
;
@ApiModelProperty
(
value
=
"安装位置"
,
example
=
"组装厂区二楼"
)
private
String
install
;
@ApiModelProperty
(
value
=
"监控参数"
,
example
=
"有毒气体报警器"
)
private
String
monitoring
;
@ApiModelProperty
(
value
=
"位号"
,
example
=
"AT-4736"
)
private
String
locationNum
;
@ApiModelProperty
(
value
=
"量程"
,
example
=
"0-100PPm"
)
private
String
range
;
@ApiModelProperty
(
value
=
"量程单位"
,
example
=
"PPm"
)
private
String
unit
;
@ApiModelProperty
(
value
=
"是否启用"
,
example
=
"true"
)
private
Boolean
enable
;
private
List
<
ThresholdVo
>
thresholdVos
;
public
static
RiskWarnDetailVo
transform
(
RiskWarn
riskWarn
)
{
List
<
ThresholdVo
>
list
=
riskWarn
.
getThresholds
()
.
stream
()
.
map
(
ThresholdVo:
:
transform
)
.
collect
(
Collectors
.
toList
());
String
range
=
riskWarn
.
getMin
()
+
"-"
+
riskWarn
.
getMax
();
return
RiskWarnDetailVo
.
builder
()
.
id
(
riskWarn
.
getId
())
.
workAreaName
(
riskWarn
.
getWorkArea
().
getWorkAreaName
())
.
point
(
riskWarn
.
getPoint
())
.
install
(
riskWarn
.
getInstall
())
.
monitoring
(
riskWarn
.
getMonitoring
())
.
locationNum
(
riskWarn
.
getLocationNum
())
.
range
(
range
)
.
unit
(
riskWarn
.
getUnit
())
.
enable
(
riskWarn
.
getEnable
())
.
thresholdVos
(
list
)
.
build
();
}
}
app/src/main/java/com/yiring/app/vo/risk/RiskWarnVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
risk
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.yiring.app.domain.risk.RiskWarn
;
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/5/23 15:40
*/
@ApiModel
(
"风险预警管理"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
RiskWarnVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
6006976424270409054L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"工区名称"
,
example
=
"组装工区"
)
private
String
workAreaName
;
@ApiModelProperty
(
value
=
"安装位置"
,
example
=
"组装厂区二楼"
)
private
String
install
;
@ApiModelProperty
(
value
=
"监控参数"
,
example
=
"有毒气体报警器"
)
private
String
monitoring
;
@ApiModelProperty
(
value
=
"位号"
,
example
=
"AT-4736"
)
private
String
locationNum
;
@ApiModelProperty
(
value
=
"量程"
,
example
=
"0-100PPm"
)
private
String
range
;
@ApiModelProperty
(
value
=
"是否启用"
,
example
=
"true"
)
private
Boolean
enable
;
public
static
RiskWarnVo
transform
(
RiskWarn
riskWarn
)
{
String
range
=
riskWarn
.
getMin
().
toString
()
+
"-"
+
riskWarn
.
getMax
().
toString
();
return
RiskWarnVo
.
builder
()
.
id
(
riskWarn
.
getId
())
.
workAreaName
(
riskWarn
.
getWorkArea
().
getWorkAreaName
())
.
install
(
riskWarn
.
getInstall
())
.
monitoring
(
riskWarn
.
getMonitoring
())
.
locationNum
(
riskWarn
.
getLocationNum
())
.
range
(
range
)
.
enable
(
riskWarn
.
getEnable
())
.
build
();
}
}
app/src/main/java/com/yiring/app/vo/risk/ThresholdVo.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
vo
.
risk
;
import
com.yiring.app.constant.rehearsal.RiskLevelEnum
;
import
com.yiring.app.domain.risk.Threshold
;
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/5/20 17:42
*/
@ApiModel
(
"风险预警管理"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
ThresholdVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
5075164198170220832L
;
@ApiModelProperty
(
value
=
"阈值区间起始值"
,
example
=
"1.5"
)
private
String
min
;
@ApiModelProperty
(
value
=
"阈值区间结束值"
,
example
=
"20.2"
)
private
String
max
;
@ApiModelProperty
(
value
=
"阈值状态"
,
example
=
"1"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"风险等级:1-红色风险,2-橙色风险,3-黄色风险,4-蓝色风险"
,
example
=
"1"
)
private
String
riskLevel
;
public
static
ThresholdVo
transform
(
Threshold
threshold
)
{
return
ThresholdVo
.
builder
()
.
min
(
threshold
.
getMin
())
.
max
(
threshold
.
getMax
())
.
status
(
threshold
.
getStatus
())
.
riskLevel
(
RiskLevelEnum
.
getByCode
(
threshold
.
getRiskLevel
()))
.
build
();
}
}
app/src/main/java/com/yiring/app/web/alarm/AlarmTypeController.java
浏览文件 @
31bc9e8a
...
@@ -4,6 +4,7 @@ package com.yiring.app.web.alarm;
...
@@ -4,6 +4,7 @@ package com.yiring.app.web.alarm;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.constant.alarm.RelevanceParamEnum
;
import
com.yiring.app.constant.alarm.RelevanceParamEnum
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.job.FenceAlarmJob
;
import
com.yiring.app.param.alarm.AlarmConditionParam
;
import
com.yiring.app.param.alarm.AlarmConditionParam
;
import
com.yiring.app.param.alarm.AlarmTypeAddParam
;
import
com.yiring.app.param.alarm.AlarmTypeAddParam
;
import
com.yiring.app.param.alarm.AlarmTypeModifyParam
;
import
com.yiring.app.param.alarm.AlarmTypeModifyParam
;
...
@@ -45,6 +46,9 @@ public class AlarmTypeController {
...
@@ -45,6 +46,9 @@ public class AlarmTypeController {
@Resource
@Resource
private
AlarmService
alarmService
;
private
AlarmService
alarmService
;
@Resource
private
FenceAlarmJob
fenceAlarmJob
;
@ApiOperation
(
value
=
"添加报警类型"
)
@ApiOperation
(
value
=
"添加报警类型"
)
@PostMapping
(
"/addAlarmType"
)
@PostMapping
(
"/addAlarmType"
)
public
Result
<
String
>
addAlarmType
(
@Valid
AlarmTypeAddParam
param
)
{
public
Result
<
String
>
addAlarmType
(
@Valid
AlarmTypeAddParam
param
)
{
...
@@ -101,4 +105,10 @@ public class AlarmTypeController {
...
@@ -101,4 +105,10 @@ public class AlarmTypeController {
public
void
exportAlarmType
(
@Valid
AlarmConditionParam
conditionParam
,
HttpServletResponse
response
)
{
public
void
exportAlarmType
(
@Valid
AlarmConditionParam
conditionParam
,
HttpServletResponse
response
)
{
alarmService
.
exportAlarmType
(
conditionParam
,
response
);
alarmService
.
exportAlarmType
(
conditionParam
,
response
);
}
}
@ApiOperation
(
value
=
"test"
)
@PostMapping
(
"/test"
)
public
void
test
()
{
fenceAlarmJob
.
scanAlarmHandler
();
}
}
}
app/src/main/java/com/yiring/app/web/analysis/history/HistoryRouteController.java
浏览文件 @
31bc9e8a
...
@@ -5,6 +5,7 @@ import com.yiring.app.param.analysis.history.HistoryRouteConditionParam;
...
@@ -5,6 +5,7 @@ import com.yiring.app.param.analysis.history.HistoryRouteConditionParam;
import
com.yiring.app.service.analysis.history.HistoryRouteService
;
import
com.yiring.app.service.analysis.history.HistoryRouteService
;
import
com.yiring.app.vo.analysis.history.HistoryRouteVo
;
import
com.yiring.app.vo.analysis.history.HistoryRouteVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
com.yiring.common.vo.PageVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
...
@@ -13,6 +14,7 @@ import javax.servlet.http.HttpServletResponse;
...
@@ -13,6 +14,7 @@ import javax.servlet.http.HttpServletResponse;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.MediaType
;
import
org.springframework.validation.annotation.Validated
;
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.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
...
@@ -39,6 +41,15 @@ public class HistoryRouteController {
...
@@ -39,6 +41,15 @@ public class HistoryRouteController {
return
historyRouteService
.
findByCondition
(
param
);
return
historyRouteService
.
findByCondition
(
param
);
}
}
@ApiOperation
(
"分页查询历史轨迹"
)
@GetMapping
(
"/findByPage"
)
public
Result
<
PageVo
<
HistoryRouteVo
>>
findByPage
(
@Valid
HistoryRouteConditionParam
param
,
@Valid
PageParam
pageParam
)
{
return
historyRouteService
.
findByPage
(
param
,
pageParam
);
}
@ApiOperation
(
value
=
"导出历史轨迹"
,
produces
=
MediaType
.
APPLICATION_OCTET_STREAM_VALUE
)
@ApiOperation
(
value
=
"导出历史轨迹"
,
produces
=
MediaType
.
APPLICATION_OCTET_STREAM_VALUE
)
@PostMapping
(
"/exportHistoryRoute"
)
@PostMapping
(
"/exportHistoryRoute"
)
public
void
exportHistoryRoute
(
@Valid
HistoryRouteConditionParam
param
,
HttpServletResponse
response
)
{
public
void
exportHistoryRoute
(
@Valid
HistoryRouteConditionParam
param
,
HttpServletResponse
response
)
{
...
...
app/src/main/java/com/yiring/app/web/district/DistrictController.java
浏览文件 @
31bc9e8a
...
@@ -3,7 +3,10 @@ package com.yiring.app.web.district;
...
@@ -3,7 +3,10 @@ package com.yiring.app.web.district;
import
com.yiring.app.param.district.DistrictAddParam
;
import
com.yiring.app.param.district.DistrictAddParam
;
import
com.yiring.app.param.district.DistrictModifyParam
;
import
com.yiring.app.param.district.DistrictModifyParam
;
import
com.yiring.app.param.district.DistrictRealtimeConditionParam
;
import
com.yiring.app.service.district.DistrictService
;
import
com.yiring.app.service.district.DistrictService
;
import
com.yiring.app.vo.district.DistrictDetailsVo
;
import
com.yiring.app.vo.district.DistrictUserVo
;
import
com.yiring.app.vo.district.DistrictVo
;
import
com.yiring.app.vo.district.DistrictVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
...
@@ -60,4 +63,16 @@ public class DistrictController {
...
@@ -60,4 +63,16 @@ public class DistrictController {
}
}
return
districtService
.
findByNameLike
(
name
);
return
districtService
.
findByNameLike
(
name
);
}
}
@ApiOperation
(
value
=
"查询实时区域列表"
)
@GetMapping
(
"/findRealtimeList"
)
public
Result
<
PageVo
<
DistrictDetailsVo
>>
findRealtimeList
(
@Valid
DistrictRealtimeConditionParam
param
)
{
return
districtService
.
findRealtimeList
(
param
);
}
@ApiOperation
(
value
=
"查询区域内员工数量统计"
)
@GetMapping
(
"/findDistrictUser"
)
public
Result
<
PageVo
<
DistrictUserVo
>>
findDistrictUser
(
@Valid
DistrictRealtimeConditionParam
param
)
{
return
districtService
.
findDistrictUser
(
param
);
}
}
}
app/src/main/java/com/yiring/app/web/location/fence/FenceAlarmController.java
浏览文件 @
31bc9e8a
...
@@ -2,11 +2,16 @@
...
@@ -2,11 +2,16 @@
package
com
.
yiring
.
app
.
web
.
location
.
fence
;
package
com
.
yiring
.
app
.
web
.
location
.
fence
;
import
com.yiring.app.param.location.fence.FenceAlarmConditionParam
;
import
com.yiring.app.param.location.fence.FenceAlarmConditionParam
;
import
com.yiring.app.param.location.fence.FenceAlarmLogParam
;
import
com.yiring.app.param.location.fence.FenceRealtimeConditionParam
;
import
com.yiring.app.service.location.fence.FenceAlarmService
;
import
com.yiring.app.service.location.fence.FenceAlarmService
;
import
com.yiring.app.vo.IdNameVo
;
import
com.yiring.app.vo.IdNameVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmLogVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmRealtimeVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmVo
;
import
com.yiring.app.vo.location.fence.FenceAlarmVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.domain.BasicEntity
;
import
com.yiring.common.domain.BasicEntity
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
com.yiring.common.vo.PageVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -57,4 +62,29 @@ public class FenceAlarmController {
...
@@ -57,4 +62,29 @@ public class FenceAlarmController {
public
void
export
(
@Valid
FenceAlarmConditionParam
param
,
HttpServletResponse
response
)
{
public
void
export
(
@Valid
FenceAlarmConditionParam
param
,
HttpServletResponse
response
)
{
fenceAlarmService
.
export
(
param
,
response
);
fenceAlarmService
.
export
(
param
,
response
);
}
}
@ApiOperation
(
"根据id查询报警记录"
)
@GetMapping
(
"/findOne"
)
public
Result
<
FenceAlarmVo
>
findOne
(
@Valid
IdParam
idParam
)
{
return
fenceAlarmService
.
findOne
(
idParam
);
}
@ApiOperation
(
value
=
"查询报警记录统计"
)
@GetMapping
(
"/findAlarmLog"
)
public
Result
<
PageVo
<
FenceAlarmLogVo
>>
findAlarmLog
(
@Valid
FenceAlarmLogParam
fenceAlarmLogParam
)
{
return
fenceAlarmService
.
findAlarmLog
(
fenceAlarmLogParam
);
}
@ApiOperation
(
"查询正在报警的报警记录"
)
@GetMapping
(
"/fenRealtimeList"
)
public
Result
<
PageVo
<
FenceAlarmRealtimeVo
>>
fenRealtimeList
(
@Valid
FenceRealtimeConditionParam
param
,
@Valid
PageParam
pageParam
)
{
if
(
Objects
.
isNull
(
pageParam
.
getSortField
()))
{
pageParam
.
setSortField
(
BasicEntity
.
Fields
.
createTime
);
pageParam
.
setSortOrder
(
Sort
.
Direction
.
DESC
);
}
return
fenceAlarmService
.
fenRealtimeList
(
param
,
pageParam
);
}
}
}
app/src/main/java/com/yiring/app/web/location/fence/FenceAlarmPushLogController.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
web
.
location
.
fence
;
import
com.yiring.app.param.location.fence.FenceAlarmPushLogConditionParam
;
import
com.yiring.app.service.location.fence.FenceAlarmPushLogService
;
import
com.yiring.app.vo.location.fence.FenceAlarmPushLogVo
;
import
com.yiring.common.core.Result
;
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.validation.Valid
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author tml
* @version 1.0
* @date 2022/5/18 10:21
*/
@Api
(
tags
=
"围栏报警推送记录"
)
@RestController
@RequestMapping
(
"/push/log"
)
public
class
FenceAlarmPushLogController
{
@Resource
private
FenceAlarmPushLogService
fenceAlarmPushLogService
;
@ApiOperation
(
value
=
"查询推送记录列表"
)
@GetMapping
(
"/findList"
)
public
Result
<
PageVo
<
FenceAlarmPushLogVo
>>
findList
(
@Valid
FenceAlarmPushLogConditionParam
conditionParam
,
@Valid
PageParam
pageParam
)
{
return
fenceAlarmPushLogService
.
findList
(
conditionParam
,
pageParam
);
}
}
app/src/main/java/com/yiring/app/web/location/fence/LocationFenceController.java
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
web
.
location
.
fence
;
package
com
.
yiring
.
app
.
web
.
location
.
fence
;
import
com.yiring.app.constant.alarm.FenceTypeEnum
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.param.location.fence.FenceRealtimeConditionParam
;
import
com.yiring.app.param.location.fence.LocationFenceAddParam
;
import
com.yiring.app.param.location.fence.LocationFenceAddParam
;
import
com.yiring.app.param.location.fence.LocationFenceConditionParam
;
import
com.yiring.app.param.location.fence.LocationFenceConditionParam
;
import
com.yiring.app.param.location.fence.LocationFenceModifyParam
;
import
com.yiring.app.param.location.fence.LocationFenceModifyParam
;
import
com.yiring.app.service.location.fence.LocationFenceService
;
import
com.yiring.app.service.location.fence.LocationFenceService
;
import
com.yiring.app.vo.CodeNameVo
;
import
com.yiring.app.vo.CodeNameVo
;
import
com.yiring.app.vo.location.fence.FenceRealtimeVo
;
import
com.yiring.app.vo.location.fence.LocationFenceGeoVo
;
import
com.yiring.app.vo.location.fence.LocationFenceSearchVo
;
import
com.yiring.app.vo.location.fence.LocationFenceSearchVo
;
import
com.yiring.app.vo.location.fence.LocationFenceVo
;
import
com.yiring.app.vo.location.fence.LocationFenceVo
;
import
com.yiring.auth.param.IdsParam
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.param.PageParam
;
...
@@ -16,15 +21,13 @@ import com.yiring.common.vo.PageVo;
...
@@ -16,15 +21,13 @@ import com.yiring.common.vo.PageVo;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
/**
* @author tml
* @author tml
...
@@ -61,7 +64,7 @@ public class LocationFenceController {
...
@@ -61,7 +64,7 @@ public class LocationFenceController {
}
}
@ApiOperation
(
"根据条件分页查询围栏信息"
)
@ApiOperation
(
"根据条件分页查询围栏信息"
)
@PostMapping
(
"/
LocationFenceVo
"
)
@PostMapping
(
"/
findList
"
)
public
Result
<
PageVo
<
LocationFenceVo
>>
findList
(
public
Result
<
PageVo
<
LocationFenceVo
>>
findList
(
@Valid
LocationFenceConditionParam
conditionParam
,
@Valid
LocationFenceConditionParam
conditionParam
,
@Valid
PageParam
pageParam
@Valid
PageParam
pageParam
...
@@ -73,7 +76,13 @@ public class LocationFenceController {
...
@@ -73,7 +76,13 @@ public class LocationFenceController {
return
locationFenceService
.
findList
(
conditionParam
,
pageParam
);
return
locationFenceService
.
findList
(
conditionParam
,
pageParam
);
}
}
@ApiOperation
(
"根据条id查询围栏信息"
)
@ApiOperation
(
"根据条件查询围栏地图位置信息"
)
@GetMapping
(
"/findGeoList"
)
public
Result
<
PageVo
<
LocationFenceGeoVo
>>
findGeoList
(
@Valid
LocationFenceConditionParam
conditionParam
)
{
return
locationFenceService
.
findGeoList
(
conditionParam
);
}
@ApiOperation
(
"根据id查询围栏信息"
)
@PostMapping
(
"/findById"
)
@PostMapping
(
"/findById"
)
public
Result
<
LocationFenceVo
>
findById
(
@Valid
IdParam
param
)
{
public
Result
<
LocationFenceVo
>
findById
(
@Valid
IdParam
param
)
{
return
locationFenceService
.
findById
(
param
);
return
locationFenceService
.
findById
(
param
);
...
@@ -89,9 +98,47 @@ public class LocationFenceController {
...
@@ -89,9 +98,47 @@ public class LocationFenceController {
return
locationFenceService
.
findByNameLike
(
name
);
return
locationFenceService
.
findByNameLike
(
name
);
}
}
@ApiOperation
(
"查询围栏类型下拉框"
)
@GetMapping
(
"/findFenceType"
)
public
Result
<
PageVo
<
CodeNameVo
>>
findFenceType
()
{
List
<
CodeNameVo
>
list
=
FenceTypeEnum
.
getAll
();
PageVo
<
CodeNameVo
>
pageVo
=
PageVo
.
build
(
list
,
list
.
size
());
return
Result
.
ok
(
pageVo
);
}
@ApiOperation
(
"获取地图下拉框"
)
@ApiOperation
(
"获取地图下拉框"
)
@PostMapping
(
"/findMapList"
)
@PostMapping
(
"/findMapList"
)
public
Result
<
PageVo
<
CodeNameVo
>>
findMapList
()
{
public
Result
<
PageVo
<
CodeNameVo
>>
findMapList
()
{
return
locationFenceService
.
findMapList
();
return
locationFenceService
.
findMapList
();
}
}
@ApiOperation
(
"启用一个围栏"
)
@PostMapping
(
"/enable"
)
public
Result
<
String
>
enable
(
@Valid
IdParam
idParam
)
{
return
locationFenceService
.
enable
(
idParam
,
true
);
}
@ApiOperation
(
"停用一个围栏"
)
@PostMapping
(
"/unEnable"
)
public
Result
<
String
>
unEnable
(
@Valid
IdParam
idParam
)
{
return
locationFenceService
.
enable
(
idParam
,
false
);
}
@ApiOperation
(
"批量启用一个围栏"
)
@PostMapping
(
"/batchEnable"
)
public
Result
<
String
>
batchEnable
(
@Valid
IdsParam
idsParam
)
{
return
locationFenceService
.
batchEnable
(
idsParam
,
true
);
}
@ApiOperation
(
"批量停用一个围栏"
)
@PostMapping
(
"/batchUnEnable"
)
public
Result
<
String
>
batchUnEnable
(
@Valid
IdsParam
idsParam
)
{
return
locationFenceService
.
batchEnable
(
idsParam
,
false
);
}
@ApiOperation
(
"实时查询围栏信息"
)
@GetMapping
(
"/fenRealtimeList"
)
public
Result
<
PageVo
<
FenceRealtimeVo
>>
fenRealtimeList
(
@Valid
FenceRealtimeConditionParam
param
)
{
return
locationFenceService
.
fenRealtimeList
(
param
);
}
}
}
app/src/main/java/com/yiring/app/web/location/rule/LocationAlarmRuleController.java
浏览文件 @
31bc9e8a
...
@@ -33,7 +33,7 @@ import org.springframework.web.bind.annotation.*;
...
@@ -33,7 +33,7 @@ import org.springframework.web.bind.annotation.*;
@Validated
@Validated
@SuppressWarnings
({
"deprecation"
})
@SuppressWarnings
({
"deprecation"
})
@Api
(
tags
=
"报警规则"
,
description
=
"AlarmRule"
)
@Api
(
tags
=
"报警规则
:报警给谁
"
,
description
=
"AlarmRule"
)
@RestController
@RestController
@RequestMapping
(
"/alarm/rule"
)
@RequestMapping
(
"/alarm/rule"
)
public
class
LocationAlarmRuleController
{
public
class
LocationAlarmRuleController
{
...
...
app/src/main/java/com/yiring/app/web/location/rule/LocationFenceRuleController.java
浏览文件 @
31bc9e8a
...
@@ -9,15 +9,13 @@ import com.yiring.app.vo.location.rule.LocationFenceRuleVo;
...
@@ -9,15 +9,13 @@ import com.yiring.app.vo.location.rule.LocationFenceRuleVo;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.vo.PageVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
/**
* @author tml
* @author tml
...
@@ -27,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -27,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
@Validated
@Validated
@SuppressWarnings
({
"deprecation"
})
@SuppressWarnings
({
"deprecation"
})
@Api
(
tags
=
"
电子围栏报警规则
"
,
description
=
"FenceRule"
)
@Api
(
tags
=
"
报警规则:什么情况报警
"
,
description
=
"FenceRule"
)
@RestController
@RestController
@RequestMapping
(
"/location/rule"
)
@RequestMapping
(
"/location/rule"
)
public
class
LocationFenceRuleController
{
public
class
LocationFenceRuleController
{
...
@@ -66,4 +64,10 @@ public class LocationFenceRuleController {
...
@@ -66,4 +64,10 @@ public class LocationFenceRuleController {
public
Result
<
LocationFenceRuleVo
>
findRule
(
@Valid
IdParam
idParam
)
{
public
Result
<
LocationFenceRuleVo
>
findRule
(
@Valid
IdParam
idParam
)
{
return
locationFenceRuleService
.
findRule
(
idParam
);
return
locationFenceRuleService
.
findRule
(
idParam
);
}
}
@ApiOperation
(
"根据围栏id查询报警规则"
)
@GetMapping
(
"/findByFenceId"
)
public
Result
<
PageVo
<
LocationFenceRuleVo
>>
findByFenceId
(
@Valid
IdParam
idParam
)
{
return
locationFenceRuleService
.
findByFenceId
(
idParam
);
}
}
}
app/src/main/java/com/yiring/app/web/risk/RiskWarnController.java
0 → 100644
浏览文件 @
31bc9e8a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
web
.
risk
;
import
com.yiring.app.constant.rehearsal.RiskLevelEnum
;
import
com.yiring.app.constant.risk.ThresholdStatusEnum
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.app.param.risk.RiskWarnAddParam
;
import
com.yiring.app.param.risk.RiskWarnConditionParam
;
import
com.yiring.app.param.risk.RiskWarnModifyParam
;
import
com.yiring.app.service.risk.RiskWarnService
;
import
com.yiring.app.vo.CodeNameVo
;
import
com.yiring.app.vo.risk.RiskWarnDetailVo
;
import
com.yiring.app.vo.risk.RiskWarnVo
;
import
com.yiring.auth.param.IdsParam
;
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.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
java.util.List
;
import
java.util.Objects
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.Valid
;
import
org.springframework.data.domain.Sort
;
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
;
import
org.springframework.web.multipart.MultipartFile
;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 17:16
*/
@Api
(
tags
=
"风险预警管理"
)
@Validated
@RestController
@RequestMapping
(
"/risk/warn"
)
public
class
RiskWarnController
{
@Resource
private
RiskWarnService
riskWarnService
;
@ApiOperation
(
"添加一条"
)
@PostMapping
(
"/addOne"
)
public
Result
<
String
>
addOne
(
@Valid
RiskWarnAddParam
param
)
{
return
riskWarnService
.
addOne
(
param
);
}
@ApiOperation
(
"修改一条"
)
@PostMapping
(
"/modifyOne"
)
public
Result
<
String
>
modifyOne
(
@Valid
RiskWarnModifyParam
param
)
{
return
riskWarnService
.
modifyOne
(
param
);
}
@ApiOperation
(
"删除一条"
)
@PostMapping
(
"/removeOne"
)
public
Result
<
String
>
removeOne
(
@Valid
IdParam
idParam
)
{
return
riskWarnService
.
removeOne
(
idParam
);
}
@ApiOperation
(
"查询一条"
)
@GetMapping
(
"/findOne"
)
public
Result
<
RiskWarnDetailVo
>
findOne
(
@Valid
IdParam
idParam
)
{
return
riskWarnService
.
findOne
(
idParam
);
}
@ApiOperation
(
"查询列表"
)
@GetMapping
(
"/findList"
)
public
Result
<
PageVo
<
RiskWarnVo
>>
findList
(
@Valid
RiskWarnConditionParam
conditionParam
,
@Valid
PageParam
pageParam
)
{
if
(
Objects
.
isNull
(
pageParam
.
getSortField
()))
{
pageParam
.
setSortField
(
AlarmType
.
Fields
.
createTime
);
pageParam
.
setSortOrder
(
Sort
.
Direction
.
DESC
);
}
return
riskWarnService
.
findList
(
conditionParam
,
pageParam
);
}
@ApiOperation
(
"查询阈值状态下拉框"
)
@GetMapping
(
"/findThresholds"
)
public
Result
<
PageVo
<
CodeNameVo
>>
findThresholds
()
{
List
<
CodeNameVo
>
list
=
ThresholdStatusEnum
.
getAll
();
PageVo
<
CodeNameVo
>
pageVo
=
PageVo
.
build
(
list
,
list
.
size
());
return
Result
.
ok
(
pageVo
);
}
@ApiOperation
(
"查询风险等级下拉框"
)
@GetMapping
(
"/findRiskLevels"
)
public
Result
<
PageVo
<
CodeNameVo
>>
findRiskLevels
()
{
List
<
CodeNameVo
>
list
=
RiskLevelEnum
.
getAll
();
PageVo
<
CodeNameVo
>
pageVo
=
PageVo
.
build
(
list
,
list
.
size
());
return
Result
.
ok
(
pageVo
);
}
@ApiOperation
(
value
=
"导出"
,
produces
=
MediaType
.
APPLICATION_OCTET_STREAM_VALUE
)
@GetMapping
(
"/exportRiskWarn"
)
public
void
exportRiskWarn
(
@Valid
RiskWarnConditionParam
conditionParam
,
HttpServletResponse
response
)
{
riskWarnService
.
exportRiskWarn
(
conditionParam
,
response
);
}
@ApiOperation
(
"导入"
)
@PostMapping
(
"/importRiskWarn"
)
public
Result
<
String
>
importRiskWarn
(
MultipartFile
file
)
{
return
riskWarnService
.
importRiskWarn
(
file
);
}
@ApiOperation
(
value
=
"导出模板"
,
produces
=
MediaType
.
APPLICATION_OCTET_STREAM_VALUE
)
@GetMapping
(
"/exportTemplate"
)
public
void
exportTemplate
(
HttpServletResponse
response
)
{
riskWarnService
.
exportTemplate
(
response
);
}
@ApiOperation
(
"批量启用或停用"
)
@ApiImplicitParam
(
value
=
"启用:true-启用,false-停用"
,
required
=
true
)
@PostMapping
(
"/batchEnable"
)
public
Result
<
String
>
batchEnable
(
@Valid
IdsParam
idsParam
,
boolean
enable
)
{
return
riskWarnService
.
batchEnable
(
idsParam
.
toIds
(),
enable
);
}
}
basic-common/core/src/main/java/com/yiring/common/constant/RegEx.java
浏览文件 @
31bc9e8a
...
@@ -26,5 +26,16 @@ public class RegEx {
...
@@ -26,5 +26,16 @@ public class RegEx {
/**
/**
* 报警规则的时间格式
* 报警规则的时间格式
*/
*/
public
static
final
String
TIME_RULE
=
"^星期[一二三四五六日]\\ (2[0-4]|[0-1]\\d)(\\:[0-5]\\d){2}$"
;
public
static
final
String
WEEK_TIME_RULE
=
"^星期[一二三四五六日]\\ (2[0-4]|[0-1]\\d)(\\:[0-5]\\d){2}$"
;
public
static
final
String
TIME_RULE
=
"^(2[0-4]|[0-1]\\d)(\\:[0-5]\\d){2}$"
;
public
static
final
String
WEEK_RULE
=
"^星期[一二三四五六日]$"
;
public
static
final
String
COLOUR_RGB
=
"^#(\\d|[A-F a-f]){6}$"
;
/**
* 数字或小数
*/
public
static
final
String
DIGIT_DECIMALS
=
"^(-?\\d+)|(-?\\d+.\\d+)$"
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论