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
ab52b423
Commit
ab52b423
authored
Apr 09, 2025
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 海信绿波图两个路口绿灯开始时间,准备开始
parent
4ce5e91c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
54 additions
and
6 deletions
+54
-6
GreenBeltChartDTO.java
...ce/src/main/java/net/wanji/opt/dto/GreenBeltChartDTO.java
+2
-0
HisenseGreenChartTask.java
...c/main/java/net/wanji/opt/task/HisenseGreenChartTask.java
+52
-6
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/dto/GreenBeltChartDTO.java
View file @
ab52b423
...
...
@@ -22,5 +22,7 @@ public class GreenBeltChartDTO {
private
List
<
Double
>
backDistances
;
private
Map
<
String
,
List
<
List
<
Double
>>>
crossRedTimesMap
;
private
Map
<
String
,
List
<
List
<
Double
>>>
backCrossRedTimesMap
;
private
Map
<
String
,
List
<
List
<
Double
>>>
crossGreenTimesMap
;
private
Map
<
String
,
List
<
List
<
Double
>>>
backCrossGreenTimesMap
;
private
List
<
Map
<
String
,
List
<
Double
>>>
greenwaveStartGroup
;
}
signal-optimize-service/src/main/java/net/wanji/opt/task/HisenseGreenChartTask.java
View file @
ab52b423
...
...
@@ -78,14 +78,19 @@ public class HisenseGreenChartTask {
List
<
Double
>
offsets
=
new
ArrayList
<>();
List
<
Double
>
distances
=
new
ArrayList
<>();
// 正向红灯时间
Map
<
String
,
List
<
List
<
Double
>>>
crossRedTimesMap
=
getCrossRedTimeMap
(
mapper
,
greenDirGreenTimeMap
,
value
,
indexDir
,
travelTime
,
offsets
,
distances
);
Map
<
String
,
List
<
List
<
Double
>>>
crossRedTimesMap
=
new
LinkedHashMap
<>();
Map
<
String
,
List
<
List
<
Double
>>>
crossGreenTimesMap
=
new
LinkedHashMap
<>();
getCrossRedTimeMap
(
mapper
,
greenDirGreenTimeMap
,
value
,
indexDir
,
travelTime
,
offsets
,
distances
,
crossRedTimesMap
,
crossGreenTimesMap
);
// 反向红灯时间
Integer
indexOutDir
=
indexDTO
.
getOutDir
();
List
<
GreenCrossDirDTO
>
backValue
=
value
.
stream
().
sorted
(
Comparator
.
comparingInt
(
GreenCrossDirDTO:
:
getSort
).
reversed
()).
collect
(
Collectors
.
toList
());
List
<
Double
>
backOffsets
=
new
ArrayList
<>();
List
<
Double
>
backDistances
=
new
ArrayList
<>();
Double
backTravelTime
=
getTravelTime
(
realTimeMap
,
greenId
,
indexOutDir
,
totalDistance
);
Map
<
String
,
List
<
List
<
Double
>>>
backCrossRedTimesMap
=
getCrossRedTimeMap
(
mapper
,
greenDirGreenTimeMap
,
backValue
,
indexOutDir
,
backTravelTime
,
backOffsets
,
backDistances
);
Map
<
String
,
List
<
List
<
Double
>>>
backCrossRedTimesMap
=
new
LinkedHashMap
<>();
Map
<
String
,
List
<
List
<
Double
>>>
backCrossGreenTimesMap
=
new
LinkedHashMap
<>();
getCrossRedTimeMap
(
mapper
,
greenDirGreenTimeMap
,
backValue
,
indexOutDir
,
backTravelTime
,
backOffsets
,
backDistances
,
crossGreenTimesMap
,
backCrossGreenTimesMap
);
greenBeltChartDTO
.
setGreenId
(
greenId
);
greenBeltChartDTO
.
setDir
(
indexDir
);
greenBeltChartDTO
.
setBackDir
(
indexOutDir
);
...
...
@@ -97,6 +102,8 @@ public class HisenseGreenChartTask {
greenBeltChartDTO
.
setBackDistances
(
backDistances
);
greenBeltChartDTO
.
setCrossRedTimesMap
(
crossRedTimesMap
);
greenBeltChartDTO
.
setBackCrossRedTimesMap
(
backCrossRedTimesMap
);
greenBeltChartDTO
.
setCrossGreenTimesMap
(
crossGreenTimesMap
);
greenBeltChartDTO
.
setBackCrossGreenTimesMap
(
backCrossGreenTimesMap
);
greenBeltChartDTOS
.
add
(
greenBeltChartDTO
);
}
...
...
@@ -106,6 +113,39 @@ public class HisenseGreenChartTask {
List
<
GreenCrossDirDTO
>
value
=
entry
.
getValue
();
if
(!
CollectionUtils
.
isEmpty
(
value
))
{
for
(
int
i
=
0
;
i
<
value
.
size
();
i
++)
{
GreenCrossDirDTO
firstDto
=
value
.
get
(
i
);
String
firstCrossId
=
firstDto
.
getCrossId
();
Integer
inDir
=
firstDto
.
getInDir
();
if
(
i
<
value
.
size
())
{
GreenCrossDirDTO
secondDto
=
value
.
get
(
i
+
1
);
String
secondCrossId
=
secondDto
.
getCrossId
();
for
(
GreenBeltChartDTO
greenBeltChartDTO
:
greenBeltChartDTOS
)
{
Integer
beltGreenId
=
greenBeltChartDTO
.
getGreenId
();
Integer
beltDir
=
greenBeltChartDTO
.
getDir
();
if
(
Objects
.
equals
(
greenId
,
beltGreenId
)
&&
Objects
.
equals
(
inDir
,
beltDir
))
{
Double
speed
=
greenBeltChartDTO
.
getSpeed
();
List
<
Double
>
distances
=
greenBeltChartDTO
.
getDistances
();
Double
distance
=
distances
.
get
(
i
);
Double
travelTime
=
distance
/
speed
;
Map
<
String
,
List
<
List
<
Double
>>>
crossGreenTimesMap
=
greenBeltChartDTO
.
getCrossGreenTimesMap
();
List
<
List
<
Double
>>
firstList
=
crossGreenTimesMap
.
get
(
firstCrossId
);
List
<
List
<
Double
>>
secondList
=
crossGreenTimesMap
.
get
(
secondCrossId
);
// 第一个路口循环绿灯开始时间
for
(
int
i1
=
0
;
i1
<
firstList
.
size
();
i1
++)
{
List
<
Double
>
greenStartEnd
=
firstList
.
get
(
i1
);
for
(
int
i2
=
0
;
i2
<
greenStartEnd
.
size
();
i2
++)
{
Double
greenStart
=
greenStartEnd
.
get
(
0
);
Double
greenEnd
=
greenStartEnd
.
get
(
1
);
for
(
int
j
=
greenStart
.
intValue
();
j
<=
greenEnd
.
intValue
();
j
++)
{
int
firstStartPoint
=
j
+
travelTime
.
intValue
();
}
}
}
}
}
}
}
}
...
...
@@ -134,11 +174,12 @@ public class HisenseGreenChartTask {
}
private
static
Map
<
String
,
List
<
List
<
Double
>>>
getCrossRedTimeMap
(
ObjectMapper
mapper
,
HashMap
<
String
,
SchemeGreenDirGreenTimeDTO
>
greenDirGreenTimeMap
,
List
<
GreenCrossDirDTO
>
value
,
Integer
indexDir
,
Double
travelTime
,
List
<
Double
>
offsets
,
List
<
Double
>
distances
)
throws
Exception
{
Map
<
String
,
List
<
List
<
Double
>>>
crossRedTimesMap
=
new
LinkedHashMap
<>();
List
<
GreenCrossDirDTO
>
value
,
Integer
indexDir
,
Double
travelTime
,
List
<
Double
>
offsets
,
List
<
Double
>
distances
,
Map
<
String
,
List
<
List
<
Double
>>>
crossRedTimesMap
,
Map
<
String
,
List
<
List
<
Double
>>>
crossGreenTimesMap
)
throws
Exception
{
for
(
GreenCrossDirDTO
greenCrossDirDTO
:
value
)
{
List
<
List
<
Double
>>
crossRedTimes
=
new
ArrayList
<>();
List
<
List
<
Double
>>
crossGreenTimes
=
new
ArrayList
<>();
String
crossId
=
greenCrossDirDTO
.
getCrossId
();
Integer
distance
=
greenCrossDirDTO
.
getDistance
();
distances
.
add
(
distance
*
1.0
);
...
...
@@ -168,16 +209,21 @@ public class HisenseGreenChartTask {
crossRedTimes
.
add
(
Arrays
.
asList
(
cycleIndex
+
offset
+
greenEndTime
,
cycleIndex
+
offset
+
cycleLen
+
greenStartTime
));
// 两个周期,第二个周期是补充相位差
crossRedTimes
.
add
(
Arrays
.
asList
(
cycleIndex
+
offset
+
cycleLen
+
greenEndTime
,
cycleIndex
+
offset
+
cycleLen
+
endCycleExt
));
// 绿灯时间
crossGreenTimes
.
add
(
Arrays
.
asList
(
cycleIndex
+
offset
+
greenStartTime
,
cycleIndex
+
offset
+
greenEndTime
));
crossGreenTimes
.
add
(
Arrays
.
asList
(
cycleIndex
+
offset
+
greenStartTime
+
cycleLen
,
cycleIndex
+
offset
+
greenEndTime
+
cycleLen
));
}
else
{
// 红灯结束时间 < 相位差, 相位差包含绿灯,endCycleExt都是红灯
// 相位差中绿灯时间
Double
offsetGreen
=
greenEndTime
-
endCycleExt
;
crossRedTimes
.
add
(
Arrays
.
asList
(
cycleIndex
+
offsetGreen
,
cycleIndex
+
offset
+
greenStartTime
));
crossRedTimes
.
add
(
Arrays
.
asList
(
cycleIndex
+
offset
+
greenEndTime
,
cycleIndex
+
offset
+
cycleLen
+
greenStartTime
));
// 绿灯时间
crossGreenTimes
.
add
(
Arrays
.
asList
(
cycleIndex
+
offset
+
greenStartTime
,
cycleIndex
+
offset
+
greenEndTime
));
}
}
crossRedTimesMap
.
put
(
crossId
,
crossRedTimes
);
crossGreenTimesMap
.
put
(
crossId
,
crossGreenTimes
);
log
.
debug
(
"当前路口编号:{},当前协调方向:{}, 红灯点位信息:{}"
,
crossId
,
indexDir
,
mapper
.
writeValueAsString
(
crossRedTimes
));
}
return
crossRedTimesMap
;
...
...
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