Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
ZHHT-IRN-BD-ANALYSIS
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
李凯旋
ZHHT-IRN-BD-ANALYSIS
Commits
f2717a21
Commit
f2717a21
authored
Nov 11, 2022
by
吴延飞
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
7f147cd5
70ffd196
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
326 additions
and
178 deletions
+326
-178
pom.xml
realtime/hologram-streaming/pom.xml
+10
-0
Cycle.java
...am-streaming/src/main/java/com/zhht/irn/entity/Cycle.java
+9
-9
DirectionNorm.java
...ming/src/main/java/com/zhht/irn/entity/DirectionNorm.java
+0
-17
LaneNorm.java
...streaming/src/main/java/com/zhht/irn/entity/LaneNorm.java
+11
-5
Stage.java
...am-streaming/src/main/java/com/zhht/irn/entity/Stage.java
+18
-7
StageForDirection.java
.../src/main/java/com/zhht/irn/entity/StageForDirection.java
+15
-0
TravelEvent.java
...eaming/src/main/java/com/zhht/irn/entity/TravelEvent.java
+35
-15
LaneMetricJob.java
...eaming/src/main/java/com/zhht/irn/flow/LaneMetricJob.java
+2
-3
LaneNormJob.java
...treaming/src/main/java/com/zhht/irn/flow/LaneNormJob.java
+0
-0
LaneNormJob.java
...streaming/src/main/java/com/zhht/irn/job/LaneNormJob.java
+0
-0
LaneNormProcessFunction.java
...in/java/com/zhht/irn/process/LaneNormProcessFunction.java
+0
-0
GreenRadioSink.java
...aming/src/main/java/com/zhht/irn/sink/GreenRadioSink.java
+5
-5
LaneNormSink.java
...reaming/src/main/java/com/zhht/irn/sink/LaneNormSink.java
+19
-4
CarSource.java
...treaming/src/main/java/com/zhht/irn/source/CarSource.java
+23
-23
CirlceSource.java
...aming/src/main/java/com/zhht/irn/source/CirlceSource.java
+99
-85
DateUtils.java
...streaming/src/main/java/com/zhht/irn/utils/DateUtils.java
+77
-2
CycleWindowAssigner.java
...rc/main/java/com/zhht/irn/window/CycleWindowAssigner.java
+2
-2
mysql.properties
...me/hologram-streaming/src/main/resources/mysql.properties
+1
-1
No files found.
realtime/hologram-streaming/pom.xml
View file @
f2717a21
...
@@ -69,6 +69,16 @@
...
@@ -69,6 +69,16 @@
<artifactId>
lombok
</artifactId>
<artifactId>
lombok
</artifactId>
<version>
1.18.20
</version>
<version>
1.18.20
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.apache.flink
</groupId>
<artifactId>
flink-table-api-java
</artifactId>
<version>
1.12.1
</version>
</dependency>
<dependency>
<groupId>
org.apache.flink
</groupId>
<artifactId>
flink-table-api-java-bridge_2.11
</artifactId>
<version>
1.12.0
</version>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
realtime/hologram-streaming/src/main/java/com/zhht/irn/entity/Cycle.java
View file @
f2717a21
...
@@ -16,9 +16,9 @@ public class Cycle {
...
@@ -16,9 +16,9 @@ public class Cycle {
//信控机编号
//信控机编号
private
String
signalCode
;
private
String
signalCode
;
// 周期开始时间
// 周期开始时间
private
Date
beginDateTime
;
private
String
beginDateTime
;
// 周期结束时间
// 周期结束时间
private
Date
endDateTime
;
private
String
endDateTime
;
// 开始模式编码
// 开始模式编码
private
String
beginControlModelCode
;
private
String
beginControlModelCode
;
// 结束模式编码
// 结束模式编码
...
@@ -30,7 +30,7 @@ public class Cycle {
...
@@ -30,7 +30,7 @@ public class Cycle {
// 周期时长,单位 秒
// 周期时长,单位 秒
private
int
duration
;
private
int
duration
;
// 周期序号
// 周期序号
private
int
cycleOrder
;
private
Long
cycleOrder
;
//绿信比
//绿信比
private
Double
greenRatio
;
private
Double
greenRatio
;
//损失时间
//损失时间
...
@@ -54,19 +54,19 @@ public class Cycle {
...
@@ -54,19 +54,19 @@ public class Cycle {
this
.
crossCode
=
crossCode
;
this
.
crossCode
=
crossCode
;
}
}
public
Date
getBeginDateTime
()
{
public
String
getBeginDateTime
()
{
return
beginDateTime
;
return
beginDateTime
;
}
}
public
void
setBeginDateTime
(
Date
beginDateTime
)
{
public
void
setBeginDateTime
(
String
beginDateTime
)
{
this
.
beginDateTime
=
beginDateTime
;
this
.
beginDateTime
=
beginDateTime
;
}
}
public
Date
getEndDateTime
()
{
public
String
getEndDateTime
()
{
return
endDateTime
;
return
endDateTime
;
}
}
public
void
setEndDateTime
(
Date
endDateTime
)
{
public
void
setEndDateTime
(
String
endDateTime
)
{
this
.
endDateTime
=
endDateTime
;
this
.
endDateTime
=
endDateTime
;
}
}
...
@@ -78,11 +78,11 @@ public class Cycle {
...
@@ -78,11 +78,11 @@ public class Cycle {
this
.
duration
=
duration
;
this
.
duration
=
duration
;
}
}
public
int
getCycleOrder
()
{
public
Long
getCycleOrder
()
{
return
cycleOrder
;
return
cycleOrder
;
}
}
public
void
setCycleOrder
(
int
cycleOrder
)
{
public
void
setCycleOrder
(
Long
cycleOrder
)
{
this
.
cycleOrder
=
cycleOrder
;
this
.
cycleOrder
=
cycleOrder
;
}
}
...
...
realtime/hologram-streaming/src/main/java/com/zhht/irn/entity/DirectionNorm.java
deleted
100644 → 0
View file @
7f147cd5
package
com
.
zhht
.
irn
.
entity
;
import
lombok.Data
;
import
java.util.List
;
/**
* @Description: 方向指标
* @Author :Marinh
* @Param:
* @retrun:
* @Creat :2022-10-29-20:47
**/
@Data
public
class
DirectionNorm
extends
LaneNorm
{
}
realtime/hologram-streaming/src/main/java/com/zhht/irn/entity/LaneNorm.java
View file @
f2717a21
...
@@ -11,22 +11,28 @@ public class LaneNorm extends Stage{
...
@@ -11,22 +11,28 @@ public class LaneNorm extends Stage{
private
String
corssId
;
private
String
corssId
;
//车道编号
//车道编号
private
String
laneId
;
private
String
laneId
;
//车道名称
private
String
laneName
;
//车道可视长度
private
Integer
laneLength
;
//相位编号
//相位编号
private
String
phaseId
;
private
String
phaseId
;
//方向
//方向
private
String
direction
;
private
String
direction
;
//交通流量
//交通流量
private
String
trafficCapacity
;
private
Double
trafficCapacity
;
//最大排队长度
//最大排队长度
private
String
maxQueueLength
;
private
Integer
maxQueueLength
;
//有效绿灯时间
//有效绿灯时间
private
String
effectGreenTime
;
private
String
effectGreenTime
;
//通行能力
//通行能力
private
String
passCapacity
;
private
Double
passCapacity
;
//饱和度
//饱和度
private
String
saturation
;
private
Double
saturation
;
//剩余承载力
//剩余承载力
private
String
residualCapacity
;
private
Double
residualCapacity
;
//识别空间占有率
//识别空间占有率
private
String
spotSpaceShare
;
private
String
spotSpaceShare
;
//层级
private
Integer
order
;
}
}
realtime/hologram-streaming/src/main/java/com/zhht/irn/entity/Stage.java
View file @
f2717a21
package
com
.
zhht
.
irn
.
entity
;
package
com
.
zhht
.
irn
.
entity
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
/**
/**
* 相位实体类
* 相位实体类
...
@@ -14,9 +15,9 @@ public class Stage {
...
@@ -14,9 +15,9 @@ public class Stage {
// 相位编号
// 相位编号
private
String
phaseValue
;
private
String
phaseValue
;
// 相位开始时间
// 相位开始时间
private
Date
beginDateTime
;
private
String
beginDateTime
;
// 相位结束时间
// 相位结束时间
private
Date
endDateTime
;
private
String
endDateTime
;
// 开始模式编码
// 开始模式编码
private
String
beginControlModelCode
;
private
String
beginControlModelCode
;
// 结束模式编码
// 结束模式编码
...
@@ -39,9 +40,19 @@ public class Stage {
...
@@ -39,9 +40,19 @@ public class Stage {
private
Double
greenRatio
;
private
Double
greenRatio
;
// 阶段有效绿灯时长
// 阶段有效绿灯时长
private
int
validGreen
;
private
int
validGreen
;
//损失时间
//损失时间
private
int
lossTime
;
private
int
lossTime
;
//相位允许通行的方向
private
List
<
StageForDirection
>
stageForDirectionList
;
public
List
<
StageForDirection
>
getStageForDirectionList
()
{
return
stageForDirectionList
;
}
public
void
setStageForDirectionList
(
List
<
StageForDirection
>
stageForDirectionList
)
{
this
.
stageForDirectionList
=
stageForDirectionList
;
}
public
String
getPhaseValue
()
{
public
String
getPhaseValue
()
{
return
phaseValue
;
return
phaseValue
;
...
@@ -131,19 +142,19 @@ public class Stage {
...
@@ -131,19 +142,19 @@ public class Stage {
this
.
lossTime
=
lossTime
;
this
.
lossTime
=
lossTime
;
}
}
public
Date
getBeginDateTime
()
{
public
String
getBeginDateTime
()
{
return
beginDateTime
;
return
beginDateTime
;
}
}
public
void
setBeginDateTime
(
Date
beginDateTime
)
{
public
void
setBeginDateTime
(
String
beginDateTime
)
{
this
.
beginDateTime
=
beginDateTime
;
this
.
beginDateTime
=
beginDateTime
;
}
}
public
Date
getEndDateTime
()
{
public
String
getEndDateTime
()
{
return
endDateTime
;
return
endDateTime
;
}
}
public
void
setEndDateTime
(
Date
endDateTime
)
{
public
void
setEndDateTime
(
String
endDateTime
)
{
this
.
endDateTime
=
endDateTime
;
this
.
endDateTime
=
endDateTime
;
}
}
...
...
realtime/hologram-streaming/src/main/java/com/zhht/irn/entity/StageForDirection.java
0 → 100644
View file @
f2717a21
package
com
.
zhht
.
irn
.
entity
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.Map
;
/**
* 相位实体类
*/
@Data
public
class
StageForDirection
{
private
String
direction
;
private
String
traffic_flow_direction
;
}
realtime/hologram-streaming/src/main/java/com/zhht/irn/entity/TravelEvent.java
View file @
f2717a21
...
@@ -23,16 +23,16 @@ public class TravelEvent {
...
@@ -23,16 +23,16 @@ public class TravelEvent {
private
String
recordId
;
private
String
recordId
;
// 记录时间
// 记录时间
private
Date
recordTime
;
private
String
recordTime
;
// 事件发生时车道ID
// 事件发生时车道ID
private
Lo
ng
eventLineId
;
private
Stri
ng
eventLineId
;
// 事件发生时速度
// 事件发生时速度
private
Double
eventSpeed
;
private
Double
eventSpeed
;
// 事件时间
// 事件时间
private
Date
eventTime
;
private
String
eventTime
;
// 事件类型
// 事件类型
private
EventType
eventType
;
private
EventType
eventType
;
...
@@ -40,6 +40,26 @@ public class TravelEvent {
...
@@ -40,6 +40,26 @@ public class TravelEvent {
// 备注
// 备注
private
String
remark
;
private
String
remark
;
private
String
arrayTime
;
private
String
inCorssTime
;
public
String
getArrayTime
()
{
return
arrayTime
;
}
public
void
setArrayTime
(
String
arrayTime
)
{
this
.
arrayTime
=
arrayTime
;
}
public
String
getInCorssTime
()
{
return
inCorssTime
;
}
public
void
setInCorssTime
(
String
inCorssTime
)
{
this
.
inCorssTime
=
inCorssTime
;
}
public
Integer
getId
()
{
public
Integer
getId
()
{
return
id
;
return
id
;
}
}
...
@@ -64,19 +84,11 @@ public class TravelEvent {
...
@@ -64,19 +84,11 @@ public class TravelEvent {
this
.
recordId
=
recordId
;
this
.
recordId
=
recordId
;
}
}
public
Date
getRecordTime
()
{
public
String
getEventLineId
()
{
return
recordTime
;
}
public
void
setRecordTime
(
Date
recordTime
)
{
this
.
recordTime
=
recordTime
;
}
public
Long
getEventLineId
()
{
return
eventLineId
;
return
eventLineId
;
}
}
public
void
setEventLineId
(
Lo
ng
eventLineId
)
{
public
void
setEventLineId
(
Stri
ng
eventLineId
)
{
this
.
eventLineId
=
eventLineId
;
this
.
eventLineId
=
eventLineId
;
}
}
...
@@ -88,11 +100,19 @@ public class TravelEvent {
...
@@ -88,11 +100,19 @@ public class TravelEvent {
this
.
eventSpeed
=
eventSpeed
;
this
.
eventSpeed
=
eventSpeed
;
}
}
public
Date
getEventTime
()
{
public
String
getRecordTime
()
{
return
recordTime
;
}
public
void
setRecordTime
(
String
recordTime
)
{
this
.
recordTime
=
recordTime
;
}
public
String
getEventTime
()
{
return
eventTime
;
return
eventTime
;
}
}
public
void
setEventTime
(
Date
eventTime
)
{
public
void
setEventTime
(
String
eventTime
)
{
this
.
eventTime
=
eventTime
;
this
.
eventTime
=
eventTime
;
}
}
...
...
realtime/hologram-streaming/src/main/java/com/zhht/irn/flow/LaneMetricJob.java
View file @
f2717a21
...
@@ -49,11 +49,11 @@ public class LaneMetricJob {
...
@@ -49,11 +49,11 @@ public class LaneMetricJob {
// 旅行事件数据流的 watermark 生成逻辑
// 旅行事件数据流的 watermark 生成逻辑
WatermarkStrategy
<
TravelEvent
>
travelEventWatermarkStrategy
=
WatermarkStrategy
.<
TravelEvent
>
forBoundedOutOfOrderness
(
Duration
.
ofSeconds
(
30
))
WatermarkStrategy
<
TravelEvent
>
travelEventWatermarkStrategy
=
WatermarkStrategy
.<
TravelEvent
>
forBoundedOutOfOrderness
(
Duration
.
ofSeconds
(
30
))
.
withTimestampAssigner
((
travelEvent
,
timestamp
)
->
travelEvent
.
getEventTime
().
getTime
(
));
.
withTimestampAssigner
((
travelEvent
,
timestamp
)
->
DateUtils
.
dateToStamp
(
travelEvent
.
getEventTime
()
));
// 周期结束数据流的 cycle 生成逻辑
// 周期结束数据流的 cycle 生成逻辑
WatermarkStrategy
<
Cycle
>
cycleWatermarkStrategy
=
WatermarkStrategy
.<
Cycle
>
forBoundedOutOfOrderness
(
Duration
.
ofSeconds
(
10
))
WatermarkStrategy
<
Cycle
>
cycleWatermarkStrategy
=
WatermarkStrategy
.<
Cycle
>
forBoundedOutOfOrderness
(
Duration
.
ofSeconds
(
10
))
.
withTimestampAssigner
((
cycle
,
timeStamp
)
->
cycle
.
getBeginDateTime
().
getTime
(
));
.
withTimestampAssigner
((
cycle
,
timeStamp
)
->
DateUtils
.
dateToStamp
(
cycle
.
getBeginDateTime
()
));
// 获取实时旅行事件数据流
// 获取实时旅行事件数据流
// DataStream<TravelEvent> eventStream = FlinkUtils.createKafkaStream(args, env)
// DataStream<TravelEvent> eventStream = FlinkUtils.createKafkaStream(args, env)
...
@@ -75,7 +75,6 @@ public class LaneMetricJob {
...
@@ -75,7 +75,6 @@ public class LaneMetricJob {
.
map
((
record
)
->
{
.
map
((
record
)
->
{
System
.
out
.
println
(
record
);
System
.
out
.
println
(
record
);
Cycle
cycle
=
JSON
.
parseObject
(
record
,
Cycle
.
class
);
Cycle
cycle
=
JSON
.
parseObject
(
record
,
Cycle
.
class
);
System
.
out
.
println
(
cycle
);
return
cycle
;
return
cycle
;
})
})
// 给数据流添加水印
// 给数据流添加水印
...
...
realtime/hologram-streaming/src/main/java/com/zhht/irn/flow/LaneNormJob.java
deleted
100644 → 0
View file @
7f147cd5
This diff is collapsed.
Click to expand it.
realtime/hologram-streaming/src/main/java/com/zhht/irn/job/LaneNormJob.java
0 → 100644
View file @
f2717a21
This diff is collapsed.
Click to expand it.
realtime/hologram-streaming/src/main/java/com/zhht/irn/process/LaneNormProcessFunction.java
0 → 100644
View file @
f2717a21
This diff is collapsed.
Click to expand it.
realtime/hologram-streaming/src/main/java/com/zhht/irn/sink/GreenRadioSink.java
View file @
f2717a21
...
@@ -52,10 +52,10 @@ public class GreenRadioSink extends RichSinkFunction<Cycle> {
...
@@ -52,10 +52,10 @@ public class GreenRadioSink extends RichSinkFunction<Cycle> {
insertCyclePstmt
.
setLong
(
1
,
cycle
.
getId
());
insertCyclePstmt
.
setLong
(
1
,
cycle
.
getId
());
insertCyclePstmt
.
setString
(
2
,
cycle
.
getCrossCode
());
insertCyclePstmt
.
setString
(
2
,
cycle
.
getCrossCode
());
insertCyclePstmt
.
setString
(
3
,
cycle
.
getSignalCode
());
insertCyclePstmt
.
setString
(
3
,
cycle
.
getSignalCode
());
insertCyclePstmt
.
setString
(
4
,
DateUtils
.
dateToString
(
cycle
.
getBeginDateTime
(),
"yyyy-MM-DD HH:mm:ss"
));
insertCyclePstmt
.
setString
(
4
,
cycle
.
getBeginDateTime
(
));
insertCyclePstmt
.
setString
(
5
,
DateUtils
.
dateToString
(
cycle
.
getEndDateTime
(),
"yyyy-MM-DD HH:mm:ss"
));
insertCyclePstmt
.
setString
(
5
,
cycle
.
getEndDateTime
(
));
insertCyclePstmt
.
setInt
(
6
,
cycle
.
getDuration
());
insertCyclePstmt
.
setInt
(
6
,
cycle
.
getDuration
());
insertCyclePstmt
.
set
Int
(
7
,
cycle
.
getCycleOrder
());
insertCyclePstmt
.
set
Long
(
7
,
cycle
.
getCycleOrder
());
insertCyclePstmt
.
setDouble
(
8
,
cycle
.
getGreenRatio
());
insertCyclePstmt
.
setDouble
(
8
,
cycle
.
getGreenRatio
());
insertCyclePstmt
.
setInt
(
9
,
cycle
.
getLossTime
());
insertCyclePstmt
.
setInt
(
9
,
cycle
.
getLossTime
());
insertCyclePstmt
.
setString
(
10
,
DateUtils
.
getTodayTime
());
insertCyclePstmt
.
setString
(
10
,
DateUtils
.
getTodayTime
());
...
@@ -66,8 +66,8 @@ public class GreenRadioSink extends RichSinkFunction<Cycle> {
...
@@ -66,8 +66,8 @@ public class GreenRadioSink extends RichSinkFunction<Cycle> {
insertPhasePstmt
.
setLong
(
1
,
cycle
.
getCycleOrder
());
insertPhasePstmt
.
setLong
(
1
,
cycle
.
getCycleOrder
());
insertPhasePstmt
.
setString
(
2
,
phase
.
getCrossCode
());
insertPhasePstmt
.
setString
(
2
,
phase
.
getCrossCode
());
insertPhasePstmt
.
setString
(
3
,
phase
.
getPhaseValue
());
insertPhasePstmt
.
setString
(
3
,
phase
.
getPhaseValue
());
insertCyclePstmt
.
setString
(
4
,
DateUtils
.
dateToString
(
cycle
.
getBeginDateTime
(),
"yyyy-MM-DD HH:mm:ss"
));
insertCyclePstmt
.
setString
(
4
,
cycle
.
getBeginDateTime
(
));
insertCyclePstmt
.
setString
(
5
,
DateUtils
.
dateToString
(
cycle
.
getEndDateTime
(),
"yyyy-MM-DD HH:mm:ss"
));
insertCyclePstmt
.
setString
(
5
,
cycle
.
getEndDateTime
(
));
insertPhasePstmt
.
setInt
(
6
,
cycle
.
getDuration
());
insertPhasePstmt
.
setInt
(
6
,
cycle
.
getDuration
());
insertPhasePstmt
.
setInt
(
7
,
phase
.
getPhaseOrder
());
insertPhasePstmt
.
setInt
(
7
,
phase
.
getPhaseOrder
());
insertPhasePstmt
.
setDouble
(
8
,
phase
.
getGreenRatio
());
insertPhasePstmt
.
setDouble
(
8
,
phase
.
getGreenRatio
());
...
...
realtime/hologram-streaming/src/main/java/com/zhht/irn/sink/LaneNormSink.java
View file @
f2717a21
package
com
.
zhht
.
irn
.
sink
;
package
com
.
zhht
.
irn
.
sink
;
import
com.zhht.irn.entity.LaneNorm
;
import
com.zhht.irn.entity.LaneNorm
;
import
com.zhht.irn.utils.DateUtils
;
import
com.zhht.irn.utils.MySQLUtils
;
import
com.zhht.irn.utils.MySQLUtils
;
import
org.apache.flink.api.java.tuple.Tuple2
;
import
org.apache.flink.api.java.tuple.Tuple2
;
import
org.apache.flink.configuration.Configuration
;
import
org.apache.flink.configuration.Configuration
;
...
@@ -30,15 +31,15 @@ public class LaneNormSink extends RichSinkFunction<LaneNorm> {
...
@@ -30,15 +31,15 @@ public class LaneNormSink extends RichSinkFunction<LaneNorm> {
// path暂定为固定值
// path暂定为固定值
String
path
=
"E:\\zhht\\ZHHT-IRN-BD-ANALYSIS\\realtime\\hologram-streaming\\src\\main\\resources\\mysql.properties"
;
String
path
=
"E:\\zhht\\ZHHT-IRN-BD-ANALYSIS\\realtime\\hologram-streaming\\src\\main\\resources\\mysql.properties"
;
connection
=
MySQLUtils
.
getConnection
(
path
);
connection
=
MySQLUtils
.
getConnection
(
path
);
insertPstmt
=
connection
.
prepareStatement
(
"insert into wyf_test(cross_code,lxb) values (?,?)"
);
insertPstmt
=
connection
.
prepareStatement
(
"insert into "
+
updatePstmt
=
connection
.
prepareStatement
(
"update wyf_test set lxb=? where cross_code=?"
);
"app_cross_lane_norm(cross_id,lane_id,direction,cycle_id,max_queue_length,effect_green_time,pass_capacity,traffic_capacity,saturation,residual_capacity,"
+
"spot_space_share,lane_name,`order`,update_time) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
);
}
}
@Override
@Override
public
void
close
()
throws
Exception
{
public
void
close
()
throws
Exception
{
super
.
close
();
super
.
close
();
if
(
insertPstmt
!=
null
)
insertPstmt
.
close
();
if
(
insertPstmt
!=
null
)
insertPstmt
.
close
();
if
(
updatePstmt
!=
null
)
updatePstmt
.
close
();
if
(
connection
!=
null
)
connection
.
close
();
if
(
connection
!=
null
)
connection
.
close
();
}
}
...
@@ -49,6 +50,20 @@ public class LaneNormSink extends RichSinkFunction<LaneNorm> {
...
@@ -49,6 +50,20 @@ public class LaneNormSink extends RichSinkFunction<LaneNorm> {
*/
*/
@Override
@Override
public
void
invoke
(
LaneNorm
value
,
SinkFunction
.
Context
context
)
throws
Exception
{
public
void
invoke
(
LaneNorm
value
,
SinkFunction
.
Context
context
)
throws
Exception
{
insertPstmt
.
setString
(
1
,
value
.
getCorssId
());
insertPstmt
.
setString
(
2
,
value
.
getLaneId
());
insertPstmt
.
setString
(
3
,
value
.
getDirection
());
insertPstmt
.
setLong
(
4
,
value
.
getCycleOrder
());
insertPstmt
.
setDouble
(
5
,
value
.
getMaxQueueLength
());
insertPstmt
.
setString
(
6
,
value
.
getEffectGreenTime
());
insertPstmt
.
setDouble
(
7
,
value
.
getPassCapacity
());
insertPstmt
.
setDouble
(
8
,
value
.
getTrafficCapacity
());
insertPstmt
.
setDouble
(
9
,
value
.
getSaturation
());
insertPstmt
.
setDouble
(
10
,
value
.
getResidualCapacity
());
insertPstmt
.
setString
(
11
,
value
.
getSpotSpaceShare
());
insertPstmt
.
setString
(
12
,
value
.
getLaneName
());
insertPstmt
.
setInt
(
13
,
value
.
getOrder
());
insertPstmt
.
setString
(
14
,
DateUtils
.
getTodayTime
());
insertPstmt
.
execute
();
}
}
}
}
realtime/hologram-streaming/src/main/java/com/zhht/irn/source/CarSource.java
View file @
f2717a21
...
@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
...
@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import
com.zhht.irn.entity.Car
;
import
com.zhht.irn.entity.Car
;
import
com.zhht.irn.entity.Cycle
;
import
com.zhht.irn.entity.Cycle
;
import
com.zhht.irn.entity.Stage
;
import
com.zhht.irn.entity.Stage
;
import
com.zhht.irn.entity.TravelEvent
;
import
com.zhht.irn.enums.EventType
;
import
com.zhht.irn.utils.DateUtils
;
import
com.zhht.irn.utils.DateUtils
;
import
org.apache.flink.streaming.api.functions.source.SourceFunction
;
import
org.apache.flink.streaming.api.functions.source.SourceFunction
;
...
@@ -17,54 +19,52 @@ import java.util.*;
...
@@ -17,54 +19,52 @@ import java.util.*;
* @retrun:
* @retrun:
* @Creat :2022-11-01-14:40
* @Creat :2022-11-01-14:40
**/
**/
public
class
CarSource
implements
SourceFunction
<
Car
>
{
public
class
CarSource
implements
SourceFunction
<
TravelEvent
>
{
private
static
boolean
isRunning
=
true
;
private
static
boolean
isRunning
=
true
;
public
static
String
[]
lanePosition
=
new
String
[]{
"南左转"
,
"南直行"
,
"南右转"
,
"北左转"
,
"北直行"
,
"北右转"
,
"东左转"
,
"东直行"
,
"东右转"
,
"西左转"
,
"西直行"
,
"西右转"
};
public
static
String
[]
lanePosition
=
new
String
[]{
"南左转"
,
"南直行"
,
"南右转"
,
"北左转"
,
"北直行"
,
"北右转"
,
"东左转"
,
"东直行"
,
"东右转"
,
"西左转"
,
"西直行"
,
"西右转"
};
public
static
String
[]
inlane
=
new
String
[]{
"
1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"
9"
,
"10"
,
"11"
,
"12"
};
public
static
String
[]
inlane
=
new
String
[]{
"
01"
,
"02"
,
"03"
,
"04"
,
"05"
,
"06"
,
"07"
,
"08"
,
"0
9"
,
"10"
,
"11"
,
"12"
};
public
static
String
[]
status
=
new
String
[]{
"arrived"
,
"inCross"
,
"outCross"
,
"away"
};
public
static
String
[]
status
=
new
String
[]{
"arrived"
,
"inCross"
,
"outCross"
,
"away"
};
@Override
@Override
public
void
run
(
SourceContext
<
Car
>
sourceContext
)
throws
Exception
{
public
void
run
(
SourceContext
<
TravelEvent
>
sourceContext
)
throws
Exception
{
while
(
isRunning
){
while
(
isRunning
){
Calendar
beforeTime
=
Calendar
.
getInstance
();
Date
date
=
new
Date
();
Date
date
=
new
Date
();
List
<
Car
>
cars
=
getCar
(
beforeTime
,
date
);
List
<
TravelEvent
>
cars
=
getCar
(
date
);
for
(
Car
car:
cars
){
for
(
TravelEvent
car:
cars
){
sourceContext
.
collect
(
car
);
sourceContext
.
collect
(
car
);
}
}
//每个3秒发送一条数据
//每个3秒发送一条数据
Thread
.
sleep
(
1
0
);
Thread
.
sleep
(
200
0
);
}
}
}
}
public
static
List
<
Car
>
getCar
(
Calendar
beforeTime
,
Date
date
){
public
static
List
<
TravelEvent
>
getCar
(
Date
date
){
Calendar
aftertime
=
Calendar
.
getInstance
();
Calendar
aftertime
=
Calendar
.
getInstance
();
Date
date1
=
new
Date
();
Date
date1
=
new
Date
();
//模拟到达事件
//模拟到达事件
List
<
Car
>
cars
=
new
ArrayList
<>();
List
<
TravelEvent
>
cars
=
new
ArrayList
<>();
String
uuid
=
UUID
.
randomUUID
()+
""
;
String
uuid
=
UUID
.
randomUUID
()+
""
;
String
carId
=
UUID
.
randomUUID
()+
""
;
String
inLaneId
=
inlane
[
new
Random
().
nextInt
(
12
)];
String
inLaneId
=
inlane
[
new
Random
().
nextInt
(
12
)];
Car
arraycar
=
new
Car
();
TravelEvent
arraycar
=
new
TravelEvent
();
arraycar
.
setRecordId
(
uuid
);
arraycar
.
setRecordId
(
uuid
);
arraycar
.
setCrossId
(
"1307020
1
"
);
arraycar
.
setCrossId
(
"1307020
2
"
);
arraycar
.
setEvenTime
(
DateUtils
.
formatTime
(
date1
));
arraycar
.
setEven
t
Time
(
DateUtils
.
formatTime
(
date1
));
arraycar
.
setEventLineId
(
inLaneId
);
arraycar
.
setEventLineId
(
inLaneId
);
arraycar
.
setEventSpeed
(
new
Random
().
nextInt
(
60
)+
""
);
arraycar
.
setEventSpeed
(
55.5
);
arraycar
.
setEventType
(
"arrived"
);
arraycar
.
setEventType
(
EventType
.
ARRIVED
);
arraycar
.
setId
(
carId
);
arraycar
.
setId
(
0
);
cars
.
add
(
arraycar
);
cars
.
add
(
arraycar
);
//模拟进入路口事件
//模拟进入路口事件
String
afterTimeSecond
=
DateUtils
.
getAfterTimeSecond
(
aftertime
,
new
Random
().
nextInt
(
18
0
));
String
afterTimeSecond
=
DateUtils
.
getAfterTimeSecond
(
new
Random
().
nextInt
(
14
0
));
Car
incrosscar
=
new
Car
();
TravelEvent
incrosscar
=
new
TravelEvent
();
incrosscar
.
setCrossId
(
"1307020
1
"
);
incrosscar
.
setCrossId
(
"1307020
2
"
);
incrosscar
.
setEvenTime
(
afterTimeSecond
);
incrosscar
.
setEven
t
Time
(
afterTimeSecond
);
incrosscar
.
setEventLineId
(
inLaneId
);
incrosscar
.
setEventLineId
(
inLaneId
);
incrosscar
.
setRecordId
(
uuid
);
incrosscar
.
setRecordId
(
uuid
);
incrosscar
.
setId
(
carId
);
incrosscar
.
setId
(
0
);
incrosscar
.
setEventSpeed
(
new
Random
().
nextInt
(
60
)+
""
);
incrosscar
.
setEventSpeed
(
55.2
);
incrosscar
.
setEventType
(
"inCross"
);
incrosscar
.
setEventType
(
EventType
.
INCROSS
);
cars
.
add
(
incrosscar
);
cars
.
add
(
incrosscar
);
return
cars
;
return
cars
;
}
}
...
...
realtime/hologram-streaming/src/main/java/com/zhht/irn/source/CirlceSource.java
View file @
f2717a21
//package com.zhht.irn.source;
package
com
.
zhht
.
irn
.
source
;
//
//import com.alibaba.fastjson.JSON;
import
com.alibaba.fastjson.JSON
;
//import com.zhht.irn.entity.Cycle;
import
com.zhht.irn.entity.Cycle
;
//import com.zhht.irn.entity.Stage;
import
com.zhht.irn.entity.Stage
;
//import com.zhht.irn.utils.DateUtils;
import
com.zhht.irn.utils.DateUtils
;
//import org.apache.flink.streaming.api.functions.source.SourceFunction;
import
org.apache.flink.streaming.api.functions.source.SourceFunction
;
//import org.apache.flink.util.TimeUtils;
import
org.apache.flink.util.TimeUtils
;
//
//import java.sql.Timestamp;
import
java.sql.Timestamp
;
//import java.util.*;
import
java.util.*
;
//
///**
/**
// * @Description:
* @Description:
// * @Author :Marinh
* @Author :Marinh
// * @Param:
* @Param:
// * @retrun:
* @retrun:
// * @Creat :2022-11-01-14:40
* @Creat :2022-11-01-14:40
// **/
**/
//public class CirlceSource implements SourceFunction<Cycle> {
public
class
CirlceSource
implements
SourceFunction
<
Cycle
>
{
// private static boolean isRunning = true;
private
static
boolean
isRunning
=
true
;
// private static int i = 0;
private
static
Long
cycleOrder
=
0L
;
//
// @Override
@Override
// public void run(SourceFunction.SourceContext<Cycle> sourceContext) throws Exception {
public
void
run
(
SourceFunction
.
SourceContext
<
Cycle
>
sourceContext
)
throws
Exception
{
// while (isRunning){
while
(
isRunning
){
// Calendar beforeTime = Calendar.getInstance();
//每个3秒发送一条数据
// Date date = new Date();
Thread
.
sleep
(
120000
);
// sourceContext.collect(getCycle(beforeTime,date));
Calendar
beforeTime
=
Calendar
.
getInstance
();
// //每个3秒发送一条数据
Date
date
=
new
Date
();
// Thread.sleep(60000);
sourceContext
.
collect
(
getCycle
(
beforeTime
,
date
));
// }
cycleOrder
++;
// }
}
//
}
// public static Cycle getCycle(Calendar beforeTime,Date date){
// Cycle cycle = new Cycle();
public
static
Cycle
getCycle
(
Calendar
beforeTime
,
Date
date
){
// cycle.setId(new Timestamp(System.currentTimeMillis()).getTime());
Cycle
cycle
=
new
Cycle
();
// cycle.setCrossCode("13070201");
cycle
.
setId
(
new
Timestamp
(
System
.
currentTimeMillis
()).
getTime
());
// cycle.setBeginDateTime(DateUtils.getBeforeTime(beforeTime,2));//2分钟一个周期
cycle
.
setCrossCode
(
"13070202"
);
// cycle.setEndDateTime(DateUtils.formatTime(date));
cycle
.
setBeginDateTime
(
DateUtils
.
getBeforeTime
(
beforeTime
,
2
));
//2分钟一个周期
// cycle.setDuration(120);
cycle
.
setEndDateTime
(
DateUtils
.
formatTime
(
date
));
// cycle.setCycleOrder(1);
cycle
.
setDuration
(
120
);
// ArrayList<Stage> phases = new ArrayList<>();
cycle
.
setCycleOrder
(
cycleOrder
);
// for(int i=0;i<3;i++){
ArrayList
<
Stage
>
phases
=
new
ArrayList
<>();
// Stage phase = new Stage();
for
(
int
i
=
0
;
i
<
4
;
i
++){
// phase.setPhaseValue("10"+i);
Stage
phase
=
new
Stage
();
// if(i==0){
phase
.
setPhaseValue
(
"10"
+
i
);
// phase.setPhaseValue("1");
if
(
i
==
0
){
//南北直行
// phase.setBeginTime(DateUtils.getBeforeTimeSecond(beforeTime,120));
phase
.
setPhaseValue
(
"8"
);
// phase.setEndTime(DateUtils.getBeforeTimeSecond(beforeTime,90));
phase
.
setBeginDateTime
(
DateUtils
.
getBeforeTimeSecond
(
120
));
// phase.setDuration(30);
phase
.
setEndDateTime
(
DateUtils
.
getBeforeTimeSecond
(
90
));
// phase.setGreen(30);
phase
.
setDuration
(
30
);
// phase.setAllRed(87);
phase
.
setGreen
(
30
);
// phase.setGreen(3);
phase
.
setAllRed
(
87
);
// }
phase
.
setYellow
(
3
);
// if(i==1){
phase
.
setCycleOrder
(
cycleOrder
);
// phase.setPhaseValue("2");
}
// phase.setBeginTime(DateUtils.getBeforeTimeSecond(beforeTime,90));
if
(
i
==
1
){
//南北左转
// phase.setEndTime(DateUtils.getBeforeTimeSecond(beforeTime,60));
phase
.
setPhaseValue
(
"0"
);
// phase.setDuration(30);
phase
.
setBeginDateTime
(
DateUtils
.
getBeforeTimeSecond
(
90
));
// phase.setGreen(30);
phase
.
setEndDateTime
(
DateUtils
.
getBeforeTimeSecond
(
60
));
// phase.setAllRed(87);
phase
.
setDuration
(
30
);
// phase.setGreen(3);
phase
.
setGreen
(
30
);
// }
phase
.
setAllRed
(
87
);
// if(i==2){
phase
.
setYellow
(
3
);
// phase.setPhaseValue("3");
phase
.
setCycleOrder
(
cycleOrder
);
// phase.setBeginTime(DateUtils.getBeforeTimeSecond(beforeTime,60));
}
// phase.setEndTime(DateUtils.getBeforeTimeSecond(beforeTime,0));
if
(
i
==
2
){
//东西直行
// phase.setDuration(60);
phase
.
setPhaseValue
(
"9"
);
// phase.setGreen(60);
phase
.
setBeginDateTime
(
DateUtils
.
getBeforeTimeSecond
(
60
));
// phase.setAllRed(57);
phase
.
setEndDateTime
(
DateUtils
.
getBeforeTimeSecond
(
0
));
// phase.setGreen(3);
phase
.
setDuration
(
60
);
// }
phase
.
setGreen
(
60
);
// phases.add(phase);
phase
.
setAllRed
(
57
);
// }
phase
.
setYellow
(
3
);
// cycle.setStageList(phases);
phase
.
setCycleOrder
(
cycleOrder
);
// return cycle;
}
// }
if
(
i
==
3
){
//东西左转
//
phase
.
setPhaseValue
(
"4"
);
// @Override
phase
.
setBeginDateTime
(
DateUtils
.
getBeforeTimeSecond
(
60
));
// public void cancel() {
phase
.
setEndDateTime
(
DateUtils
.
getBeforeTimeSecond
(
0
));
// isRunning=false;
phase
.
setDuration
(
60
);
// }
phase
.
setGreen
(
60
);
//
phase
.
setAllRed
(
57
);
//}
phase
.
setYellow
(
3
);
phase
.
setCycleOrder
(
cycleOrder
);
}
phases
.
add
(
phase
);
}
cycle
.
setStageList
(
phases
);
return
cycle
;
}
@Override
public
void
cancel
()
{
isRunning
=
false
;
}
}
realtime/hologram-streaming/src/main/java/com/zhht/irn/utils/DateUtils.java
View file @
f2717a21
...
@@ -39,6 +39,25 @@ public class DateUtils {
...
@@ -39,6 +39,25 @@ public class DateUtils {
}
}
public
static
Long
dateDiff
(
String
startTime
,
String
endTime
)
{
// 按照传入的格式生成一个simpledateformate对象
SimpleDateFormat
sd
=
new
SimpleDateFormat
(
timeFormat
);
long
ns
=
1000
;
// 一秒钟的毫秒数
long
diff
;
long
sec
=
0
;
// 获得两个时间的毫秒时间差异
try
{
diff
=
sd
.
parse
(
endTime
).
getTime
()
-
sd
.
parse
(
startTime
).
getTime
();
sec
=
diff
/
ns
;
// 计算差多少秒
}
catch
(
ParseException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
return
sec
;
}
public
static
Map
getLM
()
{
public
static
Map
getLM
()
{
String
currentDateTime
=
DateUtils
.
getCurrentDateTime
(
dateFormat
);
String
currentDateTime
=
DateUtils
.
getCurrentDateTime
(
dateFormat
);
...
@@ -215,6 +234,26 @@ public class DateUtils {
...
@@ -215,6 +234,26 @@ public class DateUtils {
}
}
}
}
/**
* 判断时间是否在当前时间十分钟之类
* @param s
* @return
*/
public
static
boolean
compareDataIsBefore10Min
(
String
s
){
try
{
String
res
;
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Date
date
=
new
Date
();
Date
afterDate
=
new
Date
(
simpleDateFormat
.
parse
(
s
).
getTime
()
+
600000
);
return
date
.
compareTo
(
afterDate
)>
0
?
false
:
true
;
}
catch
(
Exception
e
){
return
false
;
}
}
/**
/**
* 获取当前时间
* 获取当前时间
* 字符串格式
* 字符串格式
...
@@ -321,7 +360,8 @@ public class DateUtils {
...
@@ -321,7 +360,8 @@ public class DateUtils {
return
time
;
return
time
;
}
}
public
static
String
getBeforeTimeSecond
(
Calendar
beforeTime
,
int
before
){
public
static
String
getBeforeTimeSecond
(
int
before
){
Calendar
beforeTime
=
Calendar
.
getInstance
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
beforeTime
.
add
(
Calendar
.
SECOND
,
-
before
);
// 多少秒之前
beforeTime
.
add
(
Calendar
.
SECOND
,
-
before
);
// 多少秒之前
Date
beforeD
=
beforeTime
.
getTime
();
Date
beforeD
=
beforeTime
.
getTime
();
...
@@ -329,7 +369,8 @@ public class DateUtils {
...
@@ -329,7 +369,8 @@ public class DateUtils {
return
time
;
return
time
;
}
}
public
static
String
getAfterTimeSecond
(
Calendar
afterTime
,
int
before
){
public
static
String
getAfterTimeSecond
(
int
before
){
Calendar
afterTime
=
Calendar
.
getInstance
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
afterTime
.
add
(
Calendar
.
SECOND
,
before
);
// 多少秒之后
afterTime
.
add
(
Calendar
.
SECOND
,
before
);
// 多少秒之后
Date
beforeD
=
afterTime
.
getTime
();
Date
beforeD
=
afterTime
.
getTime
();
...
@@ -1345,6 +1386,40 @@ public class DateUtils {
...
@@ -1345,6 +1386,40 @@ public class DateUtils {
return
daysStrList
;
return
daysStrList
;
}
}
public
static
boolean
belongCalendar
(
String
dBegin
,
String
dEnd
,
String
dDate
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
timeFormat
);
Date
beginTime
=
null
;
Date
endTime
=
null
;
Date
nowTime
=
null
;
try
{
beginTime
=
sdf
.
parse
(
dBegin
);
endTime
=
sdf
.
parse
(
dEnd
);
nowTime
=
sdf
.
parse
(
dDate
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
if
(
nowTime
.
getTime
()
==
beginTime
.
getTime
()
||
nowTime
.
getTime
()
==
endTime
.
getTime
())
{
return
true
;
}
Calendar
date
=
Calendar
.
getInstance
();
date
.
setTime
(
nowTime
);
Calendar
begin
=
Calendar
.
getInstance
();
begin
.
setTime
(
beginTime
);
Calendar
end
=
Calendar
.
getInstance
();
end
.
setTime
(
endTime
);
if
(
date
.
after
(
begin
)
&&
date
.
before
(
end
))
{
return
true
;
}
else
{
return
false
;
}
}
...
...
realtime/hologram-streaming/src/main/java/com/zhht/irn/window/CycleWindowAssigner.java
View file @
f2717a21
...
@@ -18,8 +18,8 @@ import java.util.Collections;
...
@@ -18,8 +18,8 @@ import java.util.Collections;
public
class
CycleWindowAssigner
extends
WindowAssigner
<
CoGroupedStreams
.
TaggedUnion
<
Cycle
,
TravelEvent
>,
TimeWindow
>
{
public
class
CycleWindowAssigner
extends
WindowAssigner
<
CoGroupedStreams
.
TaggedUnion
<
Cycle
,
TravelEvent
>,
TimeWindow
>
{
@Override
@Override
public
Collection
<
TimeWindow
>
assignWindows
(
CoGroupedStreams
.
TaggedUnion
<
Cycle
,
TravelEvent
>
element
,
long
timestamp
,
WindowAssignerContext
context
)
{
public
Collection
<
TimeWindow
>
assignWindows
(
CoGroupedStreams
.
TaggedUnion
<
Cycle
,
TravelEvent
>
element
,
long
timestamp
,
WindowAssignerContext
context
)
{
long
start
=
element
.
getOne
().
getBeginDateTime
().
getTime
(
);
long
start
=
DateUtils
.
dateToStamp
(
element
.
getOne
().
getBeginDateTime
()
);
long
end
=
element
.
getOne
().
getEndDateTime
().
getTime
(
);
long
end
=
DateUtils
.
dateToStamp
(
element
.
getOne
().
getEndDateTime
()
);
return
Collections
.
singletonList
(
new
TimeWindow
(
start
,
end
));
return
Collections
.
singletonList
(
new
TimeWindow
(
start
,
end
));
}
}
...
...
realtime/hologram-streaming/src/main/resources/mysql.properties
View file @
f2717a21
driver
=
com.mysql.jdbc.Driver
driver
=
com.mysql.jdbc.Driver
host
=
127.0.0.1
host
=
127.0.0.1
port
=
1330
5
port
=
1330
6
username
=
root
username
=
root
password
=
mima
password
=
mima
database
=
test
database
=
test
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