Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
traffic-signal-platform
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
jinan
traffic-signal-platform
Commits
89938984
Commit
89938984
authored
Apr 16, 2025
by
zhoushiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
干线周报接口-优化计算
parent
c886e08d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
73 additions
and
72 deletions
+73
-72
OptimizeStatisticTask.java
...c/main/java/net/wanji/opt/task/OptimizeStatisticTask.java
+71
-70
CodeGeneratorMYSQLPlus.java
wj-gernerator/src/main/java/CodeGeneratorMYSQLPlus.java
+2
-2
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/task/OptimizeStatisticTask.java
View file @
89938984
...
@@ -248,77 +248,78 @@ public class OptimizeStatisticTask {
...
@@ -248,77 +248,78 @@ public class OptimizeStatisticTask {
Map
<
String
,
List
<
StrategyCrossResultEntity
>>
groupByCross
=
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
StrategyCrossResultEntity:
:
getCrossId
));
Map
<
String
,
List
<
StrategyCrossResultEntity
>>
groupByCross
=
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
StrategyCrossResultEntity:
:
getCrossId
));
for
(
Map
.
Entry
<
String
,
List
<
StrategyCrossResultEntity
>>
entry
:
groupByCross
.
entrySet
())
{
for
(
Map
.
Entry
<
String
,
List
<
StrategyCrossResultEntity
>>
entry
:
groupByCross
.
entrySet
())
{
List
<
StrategyCrossResultEntity
>
value
=
entry
.
getValue
();
List
<
StrategyCrossResultEntity
>
value
=
entry
.
getValue
();
StrategyCrossResultEntity
minTime
=
value
.
stream
().
min
(
Comparator
.
comparing
(
o
->
o
.
getIssueTime
())).
orElse
(
new
StrategyCrossResultEntity
());
StrategyCrossResultEntity
maxTime
=
value
.
stream
().
max
(
Comparator
.
comparing
(
o
->
o
.
getIssueTime
())).
orElse
(
new
StrategyCrossResultEntity
());
int
duration
=
value
.
stream
().
mapToInt
(
o
->
o
.
getDuration
()).
sum
();
long
count
=
value
.
size
();
//优化控制时段-开始时间
String
controlStartTime
=
DateUtil
.
formatDate
(
minTime
.
getIssueTime
(),
"yyyy-MM-dd HH:mm:ss"
);
//优化控制时段-截止时间
String
controlEndTime
=
new
DateTime
(
maxTime
.
getIssueTime
()).
plusSeconds
(
duration
).
toString
(
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd HH:mm:ss"
));
for
(
StrategyCrossResultEntity
result
:
value
)
{
DateTime
optStartTime
=
DateTime
.
parse
(
controlStartTime
,
DateTimeFormat
.
forPattern
(
EsDateIndexUtil
.
YMD_HM_FORMATTER
)).
minusMinutes
(
15
);
//优化控制时段-开始时间
String
optStartTimeStr
=
controlStartTime
.
substring
(
0
,
controlStartTime
.
indexOf
(
" "
)
+
1
)
+
Tools
.
fillZeroFront
(
optStartTime
.
getHourOfDay
()
+
""
,
2
)
+
":"
+
Tools
.
fillZeroFront
((
int
)
Math
.
ceil
(
optStartTime
.
getMinuteOfHour
()
/
5
)
*
5
+
""
,
2
)
+
":00"
;
String
controlStartTime
=
DateUtil
.
formatDate
(
result
.
getIssueTime
(),
"yyyy-MM-dd HH:mm:ss"
);
//优化控制时段-截止时间
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
String
controlEndTime
=
new
DateTime
(
result
.
getIssueTime
()).
plusSeconds
(
result
.
getDuration
()).
toString
(
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd HH:mm:ss"
));
params
.
put
(
"crossId"
,
entry
.
getKey
());
params
.
put
(
"startDate"
,
optStartTimeStr
);
DateTime
optStartTime
=
DateTime
.
parse
(
controlStartTime
,
DateTimeFormat
.
forPattern
(
EsDateIndexUtil
.
YMD_HM_FORMATTER
)).
minusMinutes
(
15
);
params
.
put
(
"endDate"
,
controlEndTime
);
String
optStartTimeStr
=
controlStartTime
.
substring
(
0
,
controlStartTime
.
indexOf
(
" "
)
+
1
)
+
Tools
.
fillZeroFront
(
optStartTime
.
getHourOfDay
()
+
""
,
2
)
+
":"
+
Tools
.
fillZeroFront
((
int
)
Math
.
ceil
(
optStartTime
.
getMinuteOfHour
()
/
5
)
*
5
+
""
,
2
)
+
":00"
;
params
.
put
(
"groupType"
,
"0"
);
params
.
put
(
"objectType"
,
"4"
);
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
//本周指标数据
params
.
put
(
"crossId"
,
result
.
getCrossId
());
List
<
CrossLaneDataHistPoExtend
>
thisWeekList
=
greenwaveHistoryMapper
.
findCrossObjectIndex
(
params
);
params
.
put
(
"startDate"
,
optStartTimeStr
);
AnalysisReportCrossOptimizeDetail
thisData
=
this
.
getWeedData
(
thisWeekList
);
params
.
put
(
"endDate"
,
controlEndTime
);
params
.
put
(
"groupType"
,
"0"
);
//上周策略同期-开始时间
params
.
put
(
"objectType"
,
"4"
);
DateTime
lastWeekDateStartTime
=
optStartTime
.
minusWeeks
(
1
).
minusMinutes
(
15
);
//本周指标数据
;
List
<
CrossLaneDataHistPoExtend
>
thisWeekList
=
greenwaveHistoryMapper
.
findCrossObjectIndex
(
params
);
String
lastWeekStartTime
=
lastWeekDateStartTime
.
toString
(
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd HH:mm:ss"
));
AnalysisReportCrossOptimizeDetail
thisData
=
this
.
getWeedData
(
thisWeekList
);
String
lastOptStartTimeStr
=
lastWeekStartTime
.
substring
(
0
,
lastWeekStartTime
.
indexOf
(
" "
)
+
1
)
+
Tools
.
fillZeroFront
(
lastWeekDateStartTime
.
getHourOfDay
()
+
""
,
2
)
+
":"
+
Tools
.
fillZeroFront
((
int
)
Math
.
ceil
(
lastWeekDateStartTime
.
getMinuteOfHour
()
/
5
)
*
5
+
""
,
2
)
+
":00"
;
//上周策略同期-截止时间
//上周策略同期-开始时间
String
lastWeekEndTime
=
lastWeekDateStartTime
.
plusSeconds
(
minTime
.
getDuration
()).
toString
(
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd HH:mm:ss"
));
DateTime
lastWeekDateStartTime
=
optStartTime
.
minusWeeks
(
1
).
minusMinutes
(
15
);
params
.
put
(
"startDate"
,
lastOptStartTimeStr
);
;
params
.
put
(
"endDate"
,
lastWeekEndTime
);
String
lastWeekStartTime
=
lastWeekDateStartTime
.
toString
(
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd HH:mm:ss"
));
//上周指标数据
String
lastOptStartTimeStr
=
lastWeekStartTime
.
substring
(
0
,
lastWeekStartTime
.
indexOf
(
" "
)
+
1
)
+
Tools
.
fillZeroFront
(
lastWeekDateStartTime
.
getHourOfDay
()
+
""
,
2
)
+
":"
+
Tools
.
fillZeroFront
((
int
)
Math
.
ceil
(
lastWeekDateStartTime
.
getMinuteOfHour
()
/
5
)
*
5
+
""
,
2
)
+
":00"
;
List
<
CrossLaneDataHistPoExtend
>
lastWeekList
=
greenwaveHistoryMapper
.
findCrossObjectIndex
(
params
);
//上周策略同期-截止时间
AnalysisReportCrossOptimizeDetail
lastData
=
this
.
getWeedData
(
lastWeekList
);
String
lastWeekEndTime
=
lastWeekDateStartTime
.
plusSeconds
(
result
.
getDuration
()).
toString
(
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd HH:mm:ss"
));
params
.
put
(
"startDate"
,
lastOptStartTimeStr
);
DateTime
issueTime
=
new
DateTime
(
minTime
.
getIssueTime
());
params
.
put
(
"endDate"
,
lastWeekEndTime
);
//上周指标数据
AnalysisReportCrossOptimizeDetail
detail
=
new
AnalysisReportCrossOptimizeDetail
();
List
<
CrossLaneDataHistPoExtend
>
lastWeekList
=
greenwaveHistoryMapper
.
findCrossObjectIndex
(
params
);
detail
.
setCrossId
(
minTime
.
getCrossId
());
AnalysisReportCrossOptimizeDetail
lastData
=
this
.
getWeedData
(
lastWeekList
);
detail
.
setYearWeek
(
Integer
.
parseInt
(
issueTime
.
getYear
()
+
""
+
issueTime
.
getWeekOfWeekyear
()));
detail
.
setWeekDay
(
issueTime
.
getDayOfWeek
()
+
1
);
DateTime
issueTime
=
new
DateTime
(
result
.
getIssueTime
());
detail
.
setWeekStartTime
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
beginOfWeek
(
minTime
.
getIssueTime
()).
toLocalDateTime
());
;
AnalysisReportCrossOptimizeDetail
detail
=
new
AnalysisReportCrossOptimizeDetail
();
detail
.
setWeekEndTime
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
endOfWeek
(
minTime
.
getIssueTime
()).
toLocalDateTime
());
detail
.
setCrossId
(
result
.
getCrossId
());
detail
.
setOptimizeCount
((
int
)
count
);
detail
.
setYearWeek
(
Integer
.
parseInt
(
issueTime
.
getYear
()
+
""
+
issueTime
.
getWeekOfWeekyear
()));
detail
.
setOptimizeDuration
(
duration
);
detail
.
setWeekDay
(
issueTime
.
getDayOfWeek
()
+
1
);
detail
.
setOptimizeStartTime
(
LocalDateTime
.
parse
(
controlStartTime
,
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
detail
.
setWeekStartTime
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
beginOfWeek
(
result
.
getIssueTime
()).
toLocalDateTime
());
detail
.
setOptimizeEndTime
(
LocalDateTime
.
parse
(
controlEndTime
,
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
;
detail
.
setStragetyId
(
minTime
.
getCurrentAlgo
());
detail
.
setWeekEndTime
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
endOfWeek
(
result
.
getIssueTime
()).
toLocalDateTime
());
detail
.
setCapacity
(
thisData
.
getCapacity
());
detail
.
setOptimizeCount
(
1
);
detail
.
setStopTimes
(
thisData
.
getStopTimes
());
detail
.
setOptimizeDuration
(
result
.
getDuration
());
detail
.
setDelayTime
(
thisData
.
getDelayTime
());
detail
.
setOptimizeStartTime
(
LocalDateTime
.
parse
(
controlStartTime
,
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
detail
.
setMaxQueueLength
(
thisData
.
getMaxQueueLength
());
detail
.
setOptimizeEndTime
(
LocalDateTime
.
parse
(
controlEndTime
,
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
detail
.
setLastWeekCapacity
(
lastData
.
getCapacity
());
detail
.
setStragetyId
(
result
.
getCurrentAlgo
());
detail
.
setLastWeekStopTimes
(
lastData
.
getStopTimes
());
detail
.
setCapacity
(
thisData
.
getCapacity
());
detail
.
setLastWeekDelayTime
(
lastData
.
getDelayTime
());
detail
.
setStopTimes
(
thisData
.
getStopTimes
());
detail
.
setLastWeekMaxQueueLength
(
lastData
.
getMaxQueueLength
());
detail
.
setDelayTime
(
thisData
.
getDelayTime
());
detail
.
setMaxQueueLength
(
thisData
.
getMaxQueueLength
());
String
eventSerialNumber
=
minTime
.
getEventId
();
detail
.
setLastWeekCapacity
(
lastData
.
getCapacity
());
Map
<
String
,
Object
>
eventParma
=
new
HashMap
<>();
detail
.
setLastWeekStopTimes
(
lastData
.
getStopTimes
());
eventParma
.
put
(
"eventSerialNumber"
,
eventSerialNumber
);
detail
.
setLastWeekDelayTime
(
lastData
.
getDelayTime
());
List
<
EventInfo
>
eventInfoList
=
eventInfoMapper
.
findByMap
(
eventParma
);
detail
.
setLastWeekMaxQueueLength
(
lastData
.
getMaxQueueLength
());
//获取事件方向
if
(!
eventInfoList
.
isEmpty
())
{
String
eventSerialNumber
=
result
.
getEventId
();
String
dir
=
eventInfoList
.
get
(
0
).
getDir
();
Map
<
String
,
Object
>
eventParma
=
new
HashMap
<>();
detail
.
setDirs
(
CommonUtils
.
getEventHappenDirName
(
dir
));
eventParma
.
put
(
"eventSerialNumber"
,
eventSerialNumber
);
}
List
<
EventInfo
>
eventInfoList
=
eventInfoMapper
.
findByMap
(
eventParma
);
optimizeList
.
add
(
detail
);
//获取事件方向
if
(
optimizeList
.
size
()
%
500
==
0
)
{
if
(!
eventInfoList
.
isEmpty
())
{
analysisReportCrossOptimizeDetailMapper
.
insertBatch
(
optimizeList
);
String
dir
=
eventInfoList
.
get
(
0
).
getDir
();
optimizeList
.
clear
();
detail
.
setDirs
(
CommonUtils
.
getEventHappenDirName
(
dir
));
log
.
info
(
"计算路口周报-路口优分批入库耗时:{}ms,size:{} ,starDate:{}"
,
System
.
currentTimeMillis
()
-
et1
,
optimizeList
.
size
(),
startDate
);
}
optimizeList
.
add
(
detail
);
if
(
optimizeList
.
size
()
%
500
==
0
)
{
analysisReportCrossOptimizeDetailMapper
.
insertBatch
(
optimizeList
);
optimizeList
.
clear
();
log
.
info
(
"计算路口周报-路口优分批入库耗时:{}ms,size:{} ,starDate:{}"
,
System
.
currentTimeMillis
()
-
et1
,
optimizeList
.
size
(),
startDate
);
}
}
}
}
}
//==========================================================================================================//
//==========================================================================================================//
...
...
wj-gernerator/src/main/java/CodeGeneratorMYSQLPlus.java
View file @
89938984
...
@@ -22,7 +22,7 @@ import java.util.List;
...
@@ -22,7 +22,7 @@ import java.util.List;
*/
*/
public
class
CodeGeneratorMYSQLPlus
{
public
class
CodeGeneratorMYSQLPlus
{
static
String
baseOutputDir
=
"./signal-optimize-service"
;
static
String
baseOutputDir
=
"./signal-optimize-service"
;
static
String
subModulePackage
=
".
judgeanalysis
"
;
static
String
subModulePackage
=
".
report
"
;
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
// 生成地址 : // System.getProperty("user.dir") == 得到当前项目的实际地址
// 生成地址 : // System.getProperty("user.dir") == 得到当前项目的实际地址
...
@@ -32,7 +32,7 @@ public class CodeGeneratorMYSQLPlus {
...
@@ -32,7 +32,7 @@ public class CodeGeneratorMYSQLPlus {
System
.
out
.
println
(
outputDir
);
System
.
out
.
println
(
outputDir
);
// 表名, 注意大小写
// 表名, 注意大小写
String
[]
tableNames
=
new
String
[]{
"t_analysis_
problem_green_day
"
};
String
[]
tableNames
=
new
String
[]{
"t_analysis_
report_cross_optimize_detail
"
};
// 数据库地址
// 数据库地址
String
url
=
"jdbc:mysql://localhost:3306/wjdit_ecosystem_db_v1.0.0?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8"
;
String
url
=
"jdbc:mysql://localhost:3306/wjdit_ecosystem_db_v1.0.0?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8"
;
...
...
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