Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
my-flink-project
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
AI算法平台
my-flink-project
Commits
d3b9546e
Commit
d3b9546e
authored
Dec 11, 2023
by
薄玉虎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.增加人员超员算法场景
2.增加现场离岗算法场景 3.优化时间间隔算法逻辑:每个摄像头会有自己的时间间隔
parent
5fb44595
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
146 additions
and
9 deletions
+146
-9
src/main/java/com/censoft/flink/StreamingJob.java
src/main/java/com/censoft/flink/StreamingJob.java
+2
-1
src/main/java/com/censoft/flink/transform/AlarmSecondFilterFunction.java
...om/censoft/flink/transform/AlarmSecondFilterFunction.java
+5
-4
src/main/java/com/censoft/flink/transform/AlgorithmTypeFlatMapFunction.java
...censoft/flink/transform/AlgorithmTypeFlatMapFunction.java
+1
-1
src/main/java/com/censoft/flink/transform/PersonNumberFilterFunction.java
...m/censoft/flink/transform/PersonNumberFilterFunction.java
+2
-2
src/main/java/com/censoft/flink/transform/PersonNumberMaxFilterFunction.java
...ensoft/flink/transform/PersonNumberMaxFilterFunction.java
+67
-0
src/main/java/com/censoft/flink/transform/PersonNumberMinFilterFunction.java
...ensoft/flink/transform/PersonNumberMinFilterFunction.java
+68
-0
src/main/resources/mybatis.xml
src/main/resources/mybatis.xml
+1
-1
No files found.
src/main/java/com/censoft/flink/StreamingJob.java
View file @
d3b9546e
...
...
@@ -84,6 +84,7 @@ public class StreamingJob {
if
(
cameraPo
==
null
){
return
null
;
}
List
<
AlgorithmPushResultBoxDto
>
result
=
algorithmPushDto
.
getResult
();
warnPushBase
.
setAlarmDeviceName
(
cameraPo
.
getCameraName
());
//获取摄像头归属
warnPushBase
.
setBelong
(
cameraPo
.
getBelong
());
...
...
@@ -95,7 +96,7 @@ public class StreamingJob {
}
warnPushBase
.
setGradeName
(
"预警"
);
//获取
摄像头名称
//获取
算法场景类型
String
algorithmName
=
getAlgorithmPoById
(
algorithmPoList
,
Long
.
valueOf
(
algorithmPushDto
.
getAlgorithmName
()))
.
getAlgorithmName
();
warnPushBase
.
setGradeType
(
algorithmName
);
...
...
src/main/java/com/censoft/flink/transform/AlarmSecondFilterFunction.java
View file @
d3b9546e
...
...
@@ -46,18 +46,19 @@ public class AlarmSecondFilterFunction implements AlgorithmBaseFilterFunction {
@Override
public
boolean
filter
(
AlgorithmPushDto
algorithmPushDto
)
{
String
algorithmType
=
algorithmPushDto
.
getAlgorithmType
()
+
"_"
+
algorithmPushDto
.
getSort
();
// String algorithmType = algorithmPushDto.getAlgorithmType() + "_" + algorithmPushDto.getSort();
String
cameraName
=
algorithmPushDto
.
getCameraName
();
Long
alarmTimeStamp
=
cache
.
get
(
algorithmTyp
e
);
Long
alarmTimeStamp
=
cache
.
get
(
cameraNam
e
);
if
(
alarmTimeStamp
==
null
)
{
alarmTimeStamp
=
0L
;
cache
.
put
(
algorithmTyp
e
,
alarmTimeStamp
);
cache
.
put
(
cameraNam
e
,
alarmTimeStamp
);
}
//判断是否超过报警间隔
if
(
alarmTimeStamp
+
alarmSecond
<=
algorithmPushDto
.
getTimeStamp
())
{
cache
.
put
(
algorithmTyp
e
,
algorithmPushDto
.
getTimeStamp
());
cache
.
put
(
cameraNam
e
,
algorithmPushDto
.
getTimeStamp
());
return
true
;
}
System
.
out
.
println
(
algorithmPushDto
.
getCameraName
()+
"--"
+
algorithmPushDto
.
getAlgorithmName
()+
"--"
+
"未超过报警时间间隔"
);
...
...
src/main/java/com/censoft/flink/transform/AlgorithmTypeFlatMapFunction.java
View file @
d3b9546e
...
...
@@ -29,7 +29,7 @@ public class AlgorithmTypeFlatMapFunction implements FlatMapFunction<AlgorithmPu
//2、将相同label的Key值分出多个预警
List
<
AlgorithmPushResultBoxDto
>
boxDtos
=
algorithmPushDto
.
getResult
();
System
.
out
.
println
(
algorithmPushDto
.
toString
());
//
System.out.println(algorithmPushDto.toString());
List
<
String
>
types
=
boxDtos
.
stream
()
...
...
src/main/java/com/censoft/flink/transform/PersonNumberFilterFunction.java
View file @
d3b9546e
...
...
@@ -72,11 +72,11 @@ public class PersonNumberFilterFunction implements AlgorithmBaseFilterFunction {
if
(
personNumber
>
personNumberMax
)
{
algorithmPushDto
.
setRemark
(
"人员超岗,数量:"
+
personNumber
);
algorithmPushDto
.
setRemark
(
"人员超岗,
人员
数量:"
+
personNumber
);
return
true
;
}
if
(
personNumber
<
personNumberMin
)
{
algorithmPushDto
.
setRemark
(
"人员脱岗,数量:"
+
personNumber
);
algorithmPushDto
.
setRemark
(
"人员脱岗,
人员
数量:"
+
personNumber
);
return
true
;
}
return
false
;
...
...
src/main/java/com/censoft/flink/transform/PersonNumberMaxFilterFunction.java
0 → 100644
View file @
d3b9546e
package
com
.
censoft
.
flink
.
transform
;
import
cn.hutool.core.util.NumberUtil
;
import
com.censoft.flink.domain.AlgorithmPushDto
;
import
com.censoft.flink.domain.AlgorithmSceneBasePo
;
import
com.censoft.flink.domain.AlgorithmScenePiecePo
;
import
com.censoft.flink.domain.AlgorithmScenePieceVariablePo
;
import
com.censoft.flink.exception.ParameterTransformException
;
import
java.util.Optional
;
/**
* @author 周昊
* @desc 人员脱岗超员算法筛选
*/
public
class
PersonNumberMaxFilterFunction
implements
AlgorithmBaseFilterFunction
{
//personNumberMax 最多人员数量
private
final
Integer
personNumberMax
;
//最多人员数量 参数KEY
private
static
String
personNumberMaxKey
=
"person_number_max"
;
public
PersonNumberMaxFilterFunction
(
Integer
personNumberMax
)
{
this
.
personNumberMax
=
personNumberMax
;
}
public
static
PersonNumberMaxFilterFunction
getFilterFunction
(
AlgorithmSceneBasePo
algorithmSceneBasePo
,
AlgorithmScenePiecePo
algorithmScenePiecePo
)
{
//参数准备
Optional
<
AlgorithmScenePieceVariablePo
>
maxVariablePo
=
algorithmScenePiecePo
.
getVariablePos
()
.
stream
()
.
filter
(
po
->
personNumberMaxKey
.
equals
(
po
.
getVariableKey
()))
.
findFirst
();
//判断参数是否存在,如果不存在抛出异常
if
(!
maxVariablePo
.
isPresent
()
)
{
throw
new
ParameterTransformException
();
}
Integer
personNumberMax
=
Integer
.
valueOf
(
maxVariablePo
.
get
().
getVariableValue
());
return
new
PersonNumberMaxFilterFunction
(
personNumberMax
);
}
@Override
public
boolean
filter
(
AlgorithmPushDto
algorithmPushDto
)
{
//判断是否为0/1的情况
int
personNumber
;
if
(
algorithmPushDto
.
getResult
().
size
()
==
1
){
String
remark
=
algorithmPushDto
.
getResult
().
get
(
0
).
getRemark
();
if
(
NumberUtil
.
isInteger
(
remark
)){
personNumber
=
Integer
.
valueOf
(
remark
);
}
else
{
personNumber
=
0
;
}
}
else
{
personNumber
=
algorithmPushDto
.
getResult
().
size
();
}
if
(
personNumber
>=
personNumberMax
)
{
algorithmPushDto
.
setRemark
(
"人员超岗,人员数量:"
+
personNumber
);
return
true
;
}
return
false
;
}
}
src/main/java/com/censoft/flink/transform/PersonNumberMinFilterFunction.java
0 → 100644
View file @
d3b9546e
package
com
.
censoft
.
flink
.
transform
;
import
cn.hutool.core.util.NumberUtil
;
import
com.censoft.flink.domain.AlgorithmPushDto
;
import
com.censoft.flink.domain.AlgorithmSceneBasePo
;
import
com.censoft.flink.domain.AlgorithmScenePiecePo
;
import
com.censoft.flink.domain.AlgorithmScenePieceVariablePo
;
import
com.censoft.flink.exception.ParameterTransformException
;
import
java.util.Optional
;
/**
* @author 周昊
* @desc 人员脱岗超员算法筛选
*/
public
class
PersonNumberMinFilterFunction
implements
AlgorithmBaseFilterFunction
{
//personNumberMin 最少人员数量
private
final
Integer
personNumberMin
;
//最少人员数量 参数KEY
private
static
String
personNumberMinKey
=
"person_number_min"
;
public
PersonNumberMinFilterFunction
(
Integer
personNumberMin
)
{
this
.
personNumberMin
=
personNumberMin
;
}
public
static
PersonNumberMinFilterFunction
getFilterFunction
(
AlgorithmSceneBasePo
algorithmSceneBasePo
,
AlgorithmScenePiecePo
algorithmScenePiecePo
)
{
//参数准备
Optional
<
AlgorithmScenePieceVariablePo
>
minVariablePo
=
algorithmScenePiecePo
.
getVariablePos
()
.
stream
()
.
filter
(
po
->
personNumberMinKey
.
equals
(
po
.
getVariableKey
()))
.
findFirst
();
//判断参数是否存在,如果不存在抛出异常
if
(
!
minVariablePo
.
isPresent
())
{
throw
new
ParameterTransformException
();
}
Integer
personNumberMin
=
Integer
.
valueOf
(
minVariablePo
.
get
().
getVariableValue
());
return
new
PersonNumberMinFilterFunction
(
personNumberMin
);
}
@Override
public
boolean
filter
(
AlgorithmPushDto
algorithmPushDto
)
{
//判断是否为0/1的情况
int
personNumber
;
if
(
algorithmPushDto
.
getResult
().
size
()
==
1
){
String
remark
=
algorithmPushDto
.
getResult
().
get
(
0
).
getRemark
();
if
(
NumberUtil
.
isInteger
(
remark
)){
personNumber
=
Integer
.
valueOf
(
remark
);
}
else
{
personNumber
=
0
;
}
}
else
{
personNumber
=
algorithmPushDto
.
getResult
().
size
();
}
if
(
personNumber
<=
personNumberMin
)
{
algorithmPushDto
.
setRemark
(
"人员脱岗,人员数量:"
+
personNumber
);
return
true
;
}
return
false
;
}
}
src/main/resources/mybatis.xml
View file @
d3b9546e
...
...
@@ -9,7 +9,7 @@
<!-- 下面是配置一下数据源,其实后面我们就不这样配置了,都在.yml文件中配置-->
<dataSource
type=
"POOLED"
>
<property
name=
"driver"
value=
"com.mysql.cj.jdbc.Driver"
/>
<property
name=
"url"
value=
"jdbc:mysql://1
27.0.0.
1:3306/ry-vue?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong&allowMultiQueries=true"
/>
<property
name=
"url"
value=
"jdbc:mysql://1
72.16.20.21
1:3306/ry-vue?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong&allowMultiQueries=true"
/>
<property
name=
"username"
value=
"root"
/>
<property
name=
"password"
value=
"123456"
/>
</dataSource>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment