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
signal
traffic-signal-platform
Commits
beaf2b3c
Commit
beaf2b3c
authored
Dec 23, 2024
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 优化监测-AI干线优化
parent
a973e6d8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
30 deletions
+40
-30
GreenBeltServiceImpl.java
...anji/opt/service/signalopt/impl/GreenBeltServiceImpl.java
+40
-30
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/service/signalopt/impl/GreenBeltServiceImpl.java
View file @
beaf2b3c
...
@@ -114,12 +114,22 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
...
@@ -114,12 +114,22 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
LocalDateTime
startOfDay
=
LocalDateTime
.
of
(
currentDate
,
startTime
);
LocalDateTime
startOfDay
=
LocalDateTime
.
of
(
currentDate
,
startTime
);
// 绿波优化数据
// 绿波优化数据
List
<
StrategyGreenOptHistEntity
>
entities
=
new
ArrayList
<>();
LambdaQueryWrapper
<
StrategyGreenOptHistEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
StrategyGreenOptHistEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getGreenId
,
greenId
);
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getGreenId
,
greenId
);
queryWrapper
.
ge
(
StrategyGreenOptHistEntity:
:
getControlTime
,
startOfDay
);
queryWrapper
.
ge
(
StrategyGreenOptHistEntity:
:
getControlTime
,
startOfDay
);
List
<
StrategyGreenOptHistEntity
>
entities
=
strategyGreenOptHistMapper
.
selectList
(
queryWrapper
);
queryWrapper
.
ge
(
StrategyGreenOptHistEntity:
:
getControlMethod
,
1
);
entities
=
strategyGreenOptHistMapper
.
selectList
(
queryWrapper
);
// 如果路口没有绿波,获取当前绿波最大的一条数据
LambdaQueryWrapper
<
StrategyGreenOptHistEntity
>
queryWrapperMaxId
=
new
LambdaQueryWrapper
<>();
queryWrapperMaxId
.
eq
(
StrategyGreenOptHistEntity:
:
getGreenId
,
greenId
);
queryWrapperMaxId
.
ge
(
StrategyGreenOptHistEntity:
:
getControlMethod
,
1
);
queryWrapperMaxId
.
orderByDesc
(
StrategyGreenOptHistEntity:
:
getControlTime
);
queryWrapperMaxId
.
last
(
"limit 1"
);
entities
=
strategyGreenOptHistMapper
.
selectList
(
queryWrapperMaxId
);
// 随机路口编号,通过路口编号查询时间轴
// 随机路口编号,通过路口编号查询时间轴
String
tempCrossId
=
""
;
String
keyCrossId
=
""
;
String
keyGreenDir
=
""
;
if
(!
CollectionUtils
.
isEmpty
(
entities
))
{
if
(!
CollectionUtils
.
isEmpty
(
entities
))
{
for
(
StrategyGreenOptHistEntity
entity
:
entities
)
{
for
(
StrategyGreenOptHistEntity
entity
:
entities
)
{
GreenBeltKeyCrossFlowTimeVO
vo
=
new
GreenBeltKeyCrossFlowTimeVO
();
GreenBeltKeyCrossFlowTimeVO
vo
=
new
GreenBeltKeyCrossFlowTimeVO
();
...
@@ -130,12 +140,13 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
...
@@ -130,12 +140,13 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
vo
.
setStartTime
(
controlTime
);
vo
.
setStartTime
(
controlTime
);
String
crossGreenDetail
=
entity
.
getCrossGreenDetail
();
String
crossGreenDetail
=
entity
.
getCrossGreenDetail
();
Integer
cycle
=
entity
.
getCycle
();
Integer
cycle
=
entity
.
getCycle
();
keyCrossId
=
entity
.
getKeyCross
();
keyGreenDir
=
entity
.
getDir
();
List
<
GreenBeltInfoVO
.
CrossGreenDetail
>
crossGreenDetails
=
mapper
.
readValue
(
crossGreenDetail
,
new
TypeReference
<
List
<
GreenBeltInfoVO
.
CrossGreenDetail
>>()
{});
List
<
GreenBeltInfoVO
.
CrossGreenDetail
>
crossGreenDetails
=
mapper
.
readValue
(
crossGreenDetail
,
new
TypeReference
<
List
<
GreenBeltInfoVO
.
CrossGreenDetail
>>()
{});
if
(!
CollectionUtils
.
isEmpty
(
crossGreenDetails
))
{
if
(!
CollectionUtils
.
isEmpty
(
crossGreenDetails
))
{
List
<
GreenBeltInfoVO
.
CrossGreenDetail
>
keyCrossDetail
=
crossGreenDetails
.
stream
().
filter
(
details
->
StringUtils
.
equalsIgnoreCase
(
keyCross
,
details
.
getCrossId
())).
collect
(
Collectors
.
toList
());
List
<
GreenBeltInfoVO
.
CrossGreenDetail
>
keyCrossDetail
=
crossGreenDetails
.
stream
().
filter
(
details
->
StringUtils
.
equalsIgnoreCase
(
keyCross
,
details
.
getCrossId
())).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
keyCrossDetail
))
{
if
(!
CollectionUtils
.
isEmpty
(
keyCrossDetail
))
{
GreenBeltInfoVO
.
CrossGreenDetail
curKeyCross
=
keyCrossDetail
.
get
(
0
);
GreenBeltInfoVO
.
CrossGreenDetail
curKeyCross
=
keyCrossDetail
.
get
(
0
);
tempCrossId
=
curKeyCross
.
getCrossId
();
Double
phaseStartTime
=
curKeyCross
.
getPhaseStartTime
();
Double
phaseStartTime
=
curKeyCross
.
getPhaseStartTime
();
Double
phaseEndTime
=
curKeyCross
.
getPhaseEndTime
();
Double
phaseEndTime
=
curKeyCross
.
getPhaseEndTime
();
Double
greenTimeRatio
=
Double
.
parseDouble
(
df
.
format
(
phaseEndTime
-
phaseStartTime
/
cycle
));
Double
greenTimeRatio
=
Double
.
parseDouble
(
df
.
format
(
phaseEndTime
-
phaseStartTime
/
cycle
));
...
@@ -144,35 +155,34 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
...
@@ -144,35 +155,34 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
}
}
tempResult
.
add
(
vo
);
tempResult
.
add
(
vo
);
}
}
}
// 关键路口历史数据
// 关键路口历史数据
LambdaQueryWrapper
<
CrossDataHistPO
>
histQuery
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
CrossDataHistPO
>
histQuery
=
new
LambdaQueryWrapper
<>();
histQuery
.
eq
(
CrossDataHistPO:
:
getCrossId
,
tempCrossId
);
histQuery
.
eq
(
CrossDataHistPO:
:
getCrossId
,
keyCrossId
);
histQuery
.
ge
(
CrossDataHistPO:
:
getStartTime
,
startOfDay
);
histQuery
.
ge
(
CrossDataHistPO:
:
getStartTime
,
startOfDay
);
List
<
CrossDataHistPO
>
crossDataHistPOS
=
crossDataHistMapper
.
selectList
(
histQuery
);
List
<
CrossDataHistPO
>
crossDataHistPOS
=
crossDataHistMapper
.
selectList
(
histQuery
);
if
(!
CollectionUtils
.
isEmpty
(
crossDataHistPOS
))
{
if
(!
CollectionUtils
.
isEmpty
(
crossDataHistPOS
))
{
for
(
CrossDataHistPO
crossDataHistPO
:
crossDataHistPOS
)
{
for
(
CrossDataHistPO
crossDataHistPO
:
crossDataHistPOS
)
{
Date
crossStartTime
=
crossDataHistPO
.
getStartTime
();
Date
crossStartTime
=
crossDataHistPO
.
getStartTime
();
String
format
=
DateUtil
.
format
(
crossStartTime
,
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_SECOND
);
String
format
=
DateUtil
.
format
(
crossStartTime
,
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_SECOND
);
Date
minuteDate
=
get5MinuteDate
(
format
);
Date
minuteDate
=
get5MinuteDate
(
format
);
Integer
flow
=
crossDataHistPO
.
getFlow
();
Integer
flow
=
crossDataHistPO
.
getFlow
();
GreenBeltKeyCrossFlowTimeVO
resultVO
=
new
GreenBeltKeyCrossFlowTimeVO
();
GreenBeltKeyCrossFlowTimeVO
resultVO
=
new
GreenBeltKeyCrossFlowTimeVO
();
resultVO
.
setStartTime
(
minuteDate
);
resultVO
.
setStartTime
(
minuteDate
);
resultVO
.
setFlow
(
flow
);
resultVO
.
setFlow
(
flow
);
resultVO
.
setGreenTimeRatio
(
0.0
);
resultVO
.
setGreenTimeRatio
(
0.0
);
resultVO
.
setCrossId
(
tempCrossId
);
resultVO
.
setCrossId
(
keyCrossId
);
resultVO
.
setDirName
(
"未执行"
);
resultVO
.
setDirName
(
GreenBeltDirEnum
.
getDesc
(
keyGreenDir
));
String
crossName
=
baseCrossInfoCache
.
getCrossName
(
tempCrossId
);
String
crossName
=
baseCrossInfoCache
.
getCrossName
(
keyCrossId
);
resultVO
.
setCrossName
(
crossName
);
resultVO
.
setCrossName
(
crossName
);
for
(
GreenBeltKeyCrossFlowTimeVO
result
:
tempResult
)
{
for
(
GreenBeltKeyCrossFlowTimeVO
result
:
tempResult
)
{
if
(
StringUtils
.
equalsIgnoreCase
(
tempCrossId
,
result
.
getCrossId
())
if
(
StringUtils
.
equalsIgnoreCase
(
keyCrossId
,
result
.
getCrossId
())
&&
minuteDate
.
getTime
()
==
result
.
getStartTime
().
getTime
())
{
&&
minuteDate
.
getTime
()
==
result
.
getStartTime
().
getTime
())
{
resultVO
.
setFlow
(
flow
);
resultVO
.
setFlow
(
flow
);
resultVO
.
setGreenTimeRatio
(
result
.
getGreenTimeRatio
());
resultVO
.
setGreenTimeRatio
(
result
.
getGreenTimeRatio
());
}
}
}
results
.
add
(
resultVO
);
}
}
results
.
add
(
resultVO
);
}
}
}
}
Map
<
String
,
List
<
GreenBeltKeyCrossFlowTimeVO
>>
map
=
results
.
stream
().
collect
(
Collectors
.
groupingBy
(
GreenBeltKeyCrossFlowTimeVO:
:
getDirName
));
Map
<
String
,
List
<
GreenBeltKeyCrossFlowTimeVO
>>
map
=
results
.
stream
().
collect
(
Collectors
.
groupingBy
(
GreenBeltKeyCrossFlowTimeVO:
:
getDirName
));
...
...
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