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
0bbed52f
Commit
0bbed52f
authored
Apr 18, 2025
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 绿波图异常逻辑优化
parent
72528379
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
37 deletions
+39
-37
HisenseGreenChartTask.java
...c/main/java/net/wanji/opt/task/HisenseGreenChartTask.java
+39
-37
No files found.
signal-optimize-data-compute/src/main/java/net/wanji/opt/task/HisenseGreenChartTask.java
View file @
0bbed52f
...
...
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
*/
@Component
@Slf4j
@Profile
(
"
docker
"
)
@Profile
(
"
test
"
)
public
class
HisenseGreenChartTask
{
@Resource
...
...
@@ -47,7 +47,7 @@ public class HisenseGreenChartTask {
private
GreenChartSchemeHistMapper
greenChartSchemeHistMapper
;
@Scheduled
(
fixedRate
=
1
0
*
60
*
1000
,
initialDelay
=
1
*
60
*
1000
)
@Scheduled
(
fixedRate
=
1
*
60
*
1000
,
initialDelay
=
1
*
60
*
1000
)
public
void
getGreenChart
()
{
try
{
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
...
...
@@ -83,9 +83,7 @@ public class HisenseGreenChartTask {
// 1.根据绿波带长度和速度计算行程时间
// 2.根据相位差,行程时间,海信环图计算绿灯红灯点位 正向 crossRedTimesMap 反向backCrossRedTimesMap
//Map<Integer, List<GreenCrossDirDTO>> greenMap = greenCrossDirCache.stream().collect(Collectors.groupingBy(GreenCrossDirDTO::getGreenId));
// todo 测试只需要绿波编号1
Map
<
Integer
,
List
<
GreenCrossDirDTO
>>
greenMap
=
greenCrossDirCache
.
stream
().
filter
(
po
->
Objects
.
equals
(
1
,
po
.
getGreenId
())).
collect
(
Collectors
.
groupingBy
(
GreenCrossDirDTO:
:
getGreenId
));
Map
<
Integer
,
List
<
GreenCrossDirDTO
>>
greenMap
=
greenCrossDirCache
.
stream
().
collect
(
Collectors
.
groupingBy
(
GreenCrossDirDTO:
:
getGreenId
));
List
<
GreenBeltChartDTO
>
greenBeltChartDTOS
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
Integer
,
List
<
GreenCrossDirDTO
>>
entry
:
greenMap
.
entrySet
())
{
GreenBeltChartDTO
greenBeltChartDTO
=
new
GreenBeltChartDTO
();
...
...
@@ -184,8 +182,8 @@ public class HisenseGreenChartTask {
greenChartSchemeHist
.
setQueryDate
(
date
);
greenChartSchemeHistMapper
.
insert
(
greenChartSchemeHist
);
}
log
.
info
(
"绿波图实体参数:{}"
,
mapper
.
writeValueAsString
(
results
));
log
.
info
(
"绿波路口方案环图信息:{}"
,
mapper
.
writeValueAsString
(
greenSchemeRingPhaseMap
));
log
.
debug
(
"绿波图实体参数:{}"
,
mapper
.
writeValueAsString
(
results
));
log
.
debug
(
"绿波路口方案环图信息:{}"
,
mapper
.
writeValueAsString
(
greenSchemeRingPhaseMap
));
}
}
catch
(
Exception
e
)
{
log
.
error
(
"通过海信方案处理绿波波定时任务失败:{}"
,
e
);
...
...
@@ -234,40 +232,42 @@ public class HisenseGreenChartTask {
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
);
Double
greenStart
=
greenStartEnd
.
get
(
0
);
Double
greenEnd
=
greenStartEnd
.
get
(
1
);
int
index
=
0
;
Double
start
=
0.0
;
Double
end
=
0.0
;
Double
start2
=
0.0
;
Double
end2
=
0.0
;
for
(
int
j
=
greenStart
.
intValue
();
j
<=
greenEnd
.
intValue
();
j
++)
{
int
firstStartPoint
=
j
+
travelTime
.
intValue
();
for
(
int
i3
=
0
;
i3
<
secondList
.
size
();
i3
++)
{
List
<
Double
>
greenStartEnd2
=
secondList
.
get
(
i3
);
Double
greenStart2
=
greenStartEnd2
.
get
(
0
);
Double
greenEnd2
=
greenStartEnd2
.
get
(
1
);
if
(!
CollectionUtils
.
isEmpty
(
firstList
)
&&
!
CollectionUtils
.
isEmpty
(
secondList
))
{
for
(
int
i1
=
0
;
i1
<
firstList
.
size
();
i1
++)
{
List
<
Double
>
greenStartEnd
=
firstList
.
get
(
i1
);
Double
greenStart
=
greenStartEnd
.
get
(
0
);
Double
greenEnd
=
greenStartEnd
.
get
(
1
);
int
index
=
0
;
Double
start
=
0.0
;
Double
end
=
0.0
;
Double
start2
=
0.0
;
Double
end2
=
0.0
;
for
(
int
j
=
greenStart
.
intValue
();
j
<=
greenEnd
.
intValue
();
j
++)
{
int
firstStartPoint
=
j
+
travelTime
.
intValue
();
for
(
int
i3
=
0
;
i3
<
secondList
.
size
();
i3
++)
{
List
<
Double
>
greenStartEnd2
=
secondList
.
get
(
i3
);
Double
greenStart2
=
greenStartEnd2
.
get
(
0
);
Double
greenEnd2
=
greenStartEnd2
.
get
(
1
);
if
(
greenStart
<=
j
&&
j
<=
greenEnd
&&
greenStart2
<=
firstStartPoint
&&
firstStartPoint
<=
greenEnd2
)
{
if
(
greenStart
<=
j
&&
j
<=
greenEnd
&&
greenStart2
<=
firstStartPoint
&&
firstStartPoint
<=
greenEnd2
)
{
if
(
index
==
0
)
{
start
=
j
*
1.0
;
start2
=
firstStartPoint
*
1.0
;
}
else
{
Double
tempEnd
=
j
*
1.0
;
end
=
end
>
tempEnd
?
end
:
tempEnd
;
Double
tempEnd2
=
firstStartPoint
*
1.0
;
end2
=
end2
>
tempEnd2
?
end2
:
tempEnd2
;
if
(
index
==
0
)
{
start
=
j
*
1.0
;
start2
=
firstStartPoint
*
1.0
;
}
else
{
Double
tempEnd
=
j
*
1.0
;
end
=
end
>
tempEnd
?
end
:
tempEnd
;
Double
tempEnd2
=
firstStartPoint
*
1.0
;
end2
=
end2
>
tempEnd2
?
end2
:
tempEnd2
;
}
++
index
;
}
++
index
;
}
}
firstGreenStartList
.
add
(
Arrays
.
asList
(
start
,
end
));
secondGreenStartList
.
add
(
Arrays
.
asList
(
start2
,
end2
));
}
firstGreenStartList
.
add
(
Arrays
.
asList
(
start
,
end
));
secondGreenStartList
.
add
(
Arrays
.
asList
(
start2
,
end2
));
}
}
greenStartMap
.
put
(
firstCrossId
,
firstGreenStartList
);
...
...
@@ -311,6 +311,10 @@ public class HisenseGreenChartTask {
String
crossKey
=
CommonUtils
.
getStrJoin
(
String
.
valueOf
(
crossId
),
String
.
valueOf
(
indexDir
));
// 获取海信环相位信息
SchemeGreenDirGreenTimeDTO
firstGreenTimeDTO
=
greenDirGreenTimeMap
.
get
(
crossKey
);
if
(
Objects
.
isNull
(
firstGreenTimeDTO
))
{
log
.
error
(
"当前路口:{}, 没有环相位信息异常"
,
crossKey
);
continue
;
}
Integer
cycleLen
=
firstGreenTimeDTO
.
getCycleLen
();
// * 1.0转Double
Double
offset
=
firstGreenTimeDTO
.
getOffset
()
*
1.0
;
...
...
@@ -375,8 +379,6 @@ public class HisenseGreenChartTask {
private
Map
<
String
,
GreenwaveRealtimePO
>
getGreenRealTimeMap
()
{
Map
<
String
,
GreenwaveRealtimePO
>
realTimeMap
=
new
HashMap
<>();
LambdaQueryWrapper
<
GreenwaveRealtimePO
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
// todo 测试绿波1
queryWrapper
.
eq
(
GreenwaveRealtimePO:
:
getGreenId
,
1
);
List
<
GreenwaveRealtimePO
>
greenwaveRealtimePOList
=
greenwaveRealtimeMapper
.
selectList
(
queryWrapper
);
for
(
GreenwaveRealtimePO
greenwaveRealtimePO
:
greenwaveRealtimePOList
)
{
Integer
greenId
=
greenwaveRealtimePO
.
getGreenId
();
...
...
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