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
9c35f355
Commit
9c35f355
authored
Oct 19, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 信号优化,干线评价-绿波关键路口修改
parent
07b428c9
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
97 additions
and
37 deletions
+97
-37
MainlineEvaluateServiceImpl.java
...t/wanji/opt/service/impl/MainlineEvaluateServiceImpl.java
+45
-23
TrendServiceImpl.java
...ain/java/net/wanji/opt/service/impl/TrendServiceImpl.java
+27
-14
CrossSectionPOExt.java
.../java/net/wanji/databus/dao/entity/CrossSectionPOExt.java
+12
-0
BaseCrossSectionMapper.java
.../net/wanji/databus/dao/mapper/BaseCrossSectionMapper.java
+3
-0
BaseCrossSectionMapper.xml
...abus/src/main/resources/mapper/BaseCrossSectionMapper.xml
+10
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/MainlineEvaluateServiceImpl.java
View file @
9c35f355
...
@@ -684,7 +684,8 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
...
@@ -684,7 +684,8 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
MainlineSchemeAnalysisVO
res
=
new
MainlineSchemeAnalysisVO
();
MainlineSchemeAnalysisVO
res
=
new
MainlineSchemeAnalysisVO
();
res
.
setSceneData
(
calcSceneData
(
filteredList
));
res
.
setSceneData
(
calcSceneData
(
filteredList
));
res
.
setCrossData
(
calcCrossData
(
filteredList
,
lineSchemeBuffer
));
fillLineSchemeBuffer
(
filteredList
,
lineSchemeBuffer
);
res
.
setCrossData
(
calcCrossData
(
filteredList
));
res
.
setEvaluateData
(
calcEvaluateData
(
filteredList
,
lineSchemeBuffer
,
poStartTimeStamp
,
poEndTimeStamp
));
res
.
setEvaluateData
(
calcEvaluateData
(
filteredList
,
lineSchemeBuffer
,
poStartTimeStamp
,
poEndTimeStamp
));
// 时段合并
// 时段合并
mergeLineSchemeBuffer
(
lineSchemeBuffer
,
mainlineName
);
mergeLineSchemeBuffer
(
lineSchemeBuffer
,
mainlineName
);
...
@@ -693,9 +694,47 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
...
@@ -693,9 +694,47 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
return
res
;
return
res
;
}
}
private
void
fillLineSchemeBuffer
(
List
<
GreenwaveHistPO
>
filteredList
,
Map
<
String
,
LineSchemeDTO
>
lineSchemeBuffer
)
throws
ParseException
{
for
(
GreenwaveHistPO
greenwaveHistPO
:
filteredList
)
{
Integer
histGreenwaveId
=
greenwaveHistPO
.
getId
();
Date
histGreenwaveGmtModified
=
greenwaveHistPO
.
getGmtModified
();
List
<
GreenwaveCrossPO
>
greenwaveCrossPOList
=
greenwaveCrossMapper
.
selectAll
();
List
<
CrossSectionPO
>
baseCrossSectionPOList
=
baseCrossSectionMapper
.
selectAll
();
List
<
BaseCrossPlanPO
>
baseCrossPlanPOList
=
baseCrossPlanMapper
.
selectAll
();
for
(
GreenwaveCrossPO
greenwaveCrossPO
:
greenwaveCrossPOList
)
{
Integer
sectionId
=
greenwaveCrossPO
.
getSectionId
();
// 判断绿波历史发生时间是否在时段内
GreenwaveInSectionDTO
greenwaveInSectionDTO
=
isGreenwaveInSection
(
histGreenwaveGmtModified
,
sectionId
,
baseCrossSectionPOList
,
baseCrossPlanPOList
);
if
(
greenwaveInSectionDTO
.
isGreenwaveInSection
())
{
String
greenwaveName
=
greenwaveHistPO
.
getGreenwaveName
();
Integer
greenwaveId
=
greenwaveHistPO
.
getId
();
String
planName
=
greenwaveInSectionDTO
.
getPlanName
();
Integer
planId
=
greenwaveInSectionDTO
.
getPlanId
();
String
startTime
=
greenwaveInSectionDTO
.
getStartTime
();
String
endTime
=
greenwaveInSectionDTO
.
getEndTime
();
String
lineSchemeName
=
greenwaveName
+
" "
+
planName
+
" "
+
startTime
+
"-"
+
endTime
;
LineSchemeDTO
lineSchemeDTO
=
lineSchemeBuffer
.
getOrDefault
(
lineSchemeName
,
new
LineSchemeDTO
());
List
<
GreenwaveHistPO
>
greenwaveHistPOList
=
lineSchemeDTO
.
getGreenwaveHistPOList
();
greenwaveHistPOList
.
add
(
greenwaveHistPO
);
lineSchemeDTO
.
setSectionId
(
sectionId
);
lineSchemeDTO
.
setPlanId
(
planId
);
lineSchemeDTO
.
setGreenwaveId
(
greenwaveId
);
lineSchemeBuffer
.
put
(
lineSchemeName
,
lineSchemeDTO
);
}
}
}
}
private
void
mergeLineSchemeBuffer
(
Map
<
String
,
LineSchemeDTO
>
lineSchemeBuffer
,
String
mainlineName
)
{
private
void
mergeLineSchemeBuffer
(
Map
<
String
,
LineSchemeDTO
>
lineSchemeBuffer
,
String
mainlineName
)
{
if
(
mainlineName
.
contains
(
"转山西路至霞景路"
))
{
if
(
mainlineName
.
contains
(
"转山西路至霞景路"
))
{
// 工作日合并 07:00-09:30,09:30-16:30,21:30-23:59
// 工作日合并 07:00-09:30,09:30-16:30,
16:30-19:00,
21:30-23:59
// 周末和节假日合并 13:30-20:00,21:30-23:59
// 周末和节假日合并 13:30-20:00,21:30-23:59
Map
<
String
,
LineSchemeDTO
>
mergedRecords
=
new
HashMap
<>();
Map
<
String
,
LineSchemeDTO
>
mergedRecords
=
new
HashMap
<>();
...
@@ -742,6 +781,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
...
@@ -742,6 +781,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
return
Arrays
.
asList
(
return
Arrays
.
asList
(
new
int
[]
{
timeToInt
(
"07:00"
),
timeToInt
(
"09:30"
)},
new
int
[]
{
timeToInt
(
"07:00"
),
timeToInt
(
"09:30"
)},
new
int
[]
{
timeToInt
(
"09:30"
),
timeToInt
(
"16:30"
)},
new
int
[]
{
timeToInt
(
"09:30"
),
timeToInt
(
"16:30"
)},
new
int
[]
{
timeToInt
(
"16:30"
),
timeToInt
(
"19:00"
)},
new
int
[]
{
timeToInt
(
"21:30"
),
timeToInt
(
"23:59"
)}
new
int
[]
{
timeToInt
(
"21:30"
),
timeToInt
(
"23:59"
)}
);
);
}
else
{
}
else
{
...
@@ -1742,10 +1782,9 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
...
@@ -1742,10 +1782,9 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
return
calendar
.
getTime
();
return
calendar
.
getTime
();
}
}
private
List
<
MainlineSchemeAnalysisVO
.
CrossData
>
calcCrossData
(
private
List
<
MainlineSchemeAnalysisVO
.
CrossData
>
calcCrossData
(
List
<
GreenwaveHistPO
>
filteredList
)
List
<
GreenwaveHistPO
>
filteredList
,
Map
<
String
,
LineSchemeDTO
>
lineSchemeBuffer
)
throws
ParseException
{
throws
ParseException
{
List
<
MainlineSchemeAnalysisVO
.
CrossData
>
res
=
new
ArrayList
<>();
List
<
MainlineSchemeAnalysisVO
.
CrossData
>
res
=
new
ArrayList
<>();
Map
<
String
,
Integer
>
crossTimesMap
=
new
HashMap
<>();
Map
<
String
,
Integer
>
crossTimesMap
=
new
HashMap
<>();
...
@@ -1769,23 +1808,6 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
...
@@ -1769,23 +1808,6 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
histGreenwaveGmtModified
,
sectionId
,
baseCrossSectionPOList
,
baseCrossPlanPOList
);
histGreenwaveGmtModified
,
sectionId
,
baseCrossSectionPOList
,
baseCrossPlanPOList
);
if
(
greenwaveInSectionDTO
.
isGreenwaveInSection
())
{
if
(
greenwaveInSectionDTO
.
isGreenwaveInSection
())
{
crossTimesMap
.
put
(
crossId
,
crossTimesMap
.
getOrDefault
(
crossId
,
0
)
+
1
);
crossTimesMap
.
put
(
crossId
,
crossTimesMap
.
getOrDefault
(
crossId
,
0
)
+
1
);
String
greenwaveName
=
greenwaveHistPO
.
getGreenwaveName
();
Integer
greenwaveId
=
greenwaveHistPO
.
getId
();
String
planName
=
greenwaveInSectionDTO
.
getPlanName
();
Integer
planId
=
greenwaveInSectionDTO
.
getPlanId
();
String
startTime
=
greenwaveInSectionDTO
.
getStartTime
();
String
endTime
=
greenwaveInSectionDTO
.
getEndTime
();
String
lineSchemeName
=
greenwaveName
+
" "
+
planName
+
" "
+
startTime
+
"-"
+
endTime
;
LineSchemeDTO
lineSchemeDTO
=
lineSchemeBuffer
.
getOrDefault
(
lineSchemeName
,
new
LineSchemeDTO
());
List
<
GreenwaveHistPO
>
greenwaveHistPOList
=
lineSchemeDTO
.
getGreenwaveHistPOList
();
greenwaveHistPOList
.
add
(
greenwaveHistPO
);
lineSchemeDTO
.
setSectionId
(
sectionId
);
lineSchemeDTO
.
setPlanId
(
planId
);
lineSchemeDTO
.
setGreenwaveId
(
greenwaveId
);
lineSchemeBuffer
.
put
(
lineSchemeName
,
lineSchemeDTO
);
}
}
}
}
}
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/TrendServiceImpl.java
View file @
9c35f355
...
@@ -581,16 +581,35 @@ public class TrendServiceImpl implements TrendService {
...
@@ -581,16 +581,35 @@ public class TrendServiceImpl implements TrendService {
}
}
private
List
<
GreenwaveDetailVO
.
GreenwaveCross
>
buildGreenwaveCrossList
(
Integer
greenwaveId
,
String
greenwaveName
)
{
private
List
<
GreenwaveDetailVO
.
GreenwaveCross
>
buildGreenwaveCrossList
(
Integer
greenwaveId
,
String
greenwaveName
)
{
String
[]
split
=
greenwaveName
.
split
(
" "
);
// 旅游路 东向西 转山西路至霞景路路段:正向绿波 工作日 19:00-20:00
String
s
=
split
[
4
];
String
[]
split1
=
s
.
split
(
"-"
);
String
startTime
=
split1
[
0
];
String
planName
=
split
[
3
];
List
<
GreenwaveDetailVO
.
GreenwaveCross
>
res
=
new
ArrayList
<>();
List
<
GreenwaveDetailVO
.
GreenwaveCross
>
res
=
new
ArrayList
<>();
List
<
GreenwaveCrossPO
>
greenwaveCrossList
=
greenwaveCrossMapper
.
selectByGreenwaveId
(
greenwaveId
);
List
<
GreenwaveCrossPO
>
greenwaveCrossList
=
greenwaveCrossMapper
.
selectByGreenwaveId
(
greenwaveId
);
Map
<
String
,
GreenwaveCrossPO
>
uniqueCrossIdMap
=
greenwaveCrossList
.
stream
()
.
collect
(
Collectors
.
toMap
(
GreenwaveCrossPO:
:
getCrossId
,
Function
.
identity
(),
(
existing
,
replacement
)
->
existing
));
List
<
GreenwaveCrossPO
>
filteredList
=
new
ArrayList
<>(
uniqueCrossIdMap
.
values
());
// 获取绿波的路口ID列表
List
<
String
>
crossList
=
greenwaveCrossList
.
stream
()
.
map
(
GreenwaveCrossPO:
:
getCrossId
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
// 查询路口时段表基础数据
List
<
CrossSectionPOExt
>
crossSectionPoExtList
=
baseCrossSectionMapper
.
selectByCrossIdsAndStartTime
(
startTime
,
crossList
);
// 根据方案名和开始时间过滤
List
<
Integer
>
sectionIdList
=
crossSectionPoExtList
.
stream
()
.
filter
(
poExt
->
planName
.
equals
(
poExt
.
getPlanName
())
&&
startTime
.
equals
(
poExt
.
getStartTime
()))
.
map
(
CrossSectionPOExt:
:
getId
)
.
collect
(
Collectors
.
toList
());
// 根据时段ID过滤数据
List
<
GreenwaveCrossPO
>
filteredList
=
greenwaveCrossList
.
stream
()
.
filter
(
greenwaveCross
->
sectionIdList
.
contains
(
greenwaveCross
.
getSectionId
()))
.
collect
(
Collectors
.
toList
());
filteredList
.
sort
(
Comparator
.
comparing
(
GreenwaveCrossPO:
:
getSort
));
filteredList
.
sort
(
Comparator
.
comparing
(
GreenwaveCrossPO:
:
getSort
));
// 相对相位差列表
// 相对相位差列表
...
@@ -626,13 +645,7 @@ public class TrendServiceImpl implements TrendService {
...
@@ -626,13 +645,7 @@ public class TrendServiceImpl implements TrendService {
// 相位差
// 相位差
greenwaveCross
.
setOffset
(
greenwaveCrossPO
.
getOffset
());
greenwaveCross
.
setOffset
(
greenwaveCrossPO
.
getOffset
());
// 获取当前方案
// 获取当前方案ID
String
[]
split
=
greenwaveName
.
split
(
" "
);
// 旅游路 东向西 转山西路至霞景路路段:正向绿波 工作日 19:00-20:00
String
s
=
split
[
4
];
String
[]
split1
=
s
.
split
(
"-"
);
String
startTime
=
split1
[
0
];
// 获取 planId
String
planName
=
split
[
3
];
BaseCrossPlanPO
baseCrossPlanPO
=
baseCrossPlanMapper
.
selectByCrossIdAndName
(
crossId
,
planName
);
BaseCrossPlanPO
baseCrossPlanPO
=
baseCrossPlanMapper
.
selectByCrossIdAndName
(
crossId
,
planName
);
Integer
planId
=
baseCrossPlanPO
.
getId
();
Integer
planId
=
baseCrossPlanPO
.
getId
();
CrossSectionPO
crossSectionPO
=
baseCrossSectionMapper
.
selectbyStartTimeCrossIdPlanId
(
startTime
,
crossId
,
planId
);
CrossSectionPO
crossSectionPO
=
baseCrossSectionMapper
.
selectbyStartTimeCrossIdPlanId
(
startTime
,
crossId
,
planId
);
...
...
wj-databus/src/main/java/net/wanji/databus/dao/entity/CrossSectionPOExt.java
0 → 100644
View file @
9c35f355
package
net
.
wanji
.
databus
.
dao
.
entity
;
import
lombok.Data
;
/**
* @author Kent HAN
* @date 2022/11/18 16:14
*/
@Data
public
class
CrossSectionPOExt
extends
CrossSectionPO
{
private
String
planName
;
// 计划名称,如 周末、工作日
}
wj-databus/src/main/java/net/wanji/databus/dao/mapper/BaseCrossSectionMapper.java
View file @
9c35f355
package
net
.
wanji
.
databus
.
dao
.
mapper
;
package
net
.
wanji
.
databus
.
dao
.
mapper
;
import
net.wanji.databus.dao.entity.CrossSectionPO
;
import
net.wanji.databus.dao.entity.CrossSectionPO
;
import
net.wanji.databus.dao.entity.CrossSectionPOExt
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
...
@@ -38,4 +39,6 @@ public interface BaseCrossSectionMapper {
...
@@ -38,4 +39,6 @@ public interface BaseCrossSectionMapper {
List
<
CrossSectionPO
>
selectAll
();
List
<
CrossSectionPO
>
selectAll
();
CrossSectionPO
selectbyStartTimeCrossIdPlanId
(
String
startTime
,
String
crossId
,
Integer
planId
);
CrossSectionPO
selectbyStartTimeCrossIdPlanId
(
String
startTime
,
String
crossId
,
Integer
planId
);
List
<
CrossSectionPOExt
>
selectByCrossIdsAndStartTime
(
String
startTime
,
List
<
String
>
crossList
);
}
}
wj-databus/src/main/resources/mapper/BaseCrossSectionMapper.xml
View file @
9c35f355
...
@@ -104,5 +104,15 @@
...
@@ -104,5 +104,15 @@
where start_time = #{startTime} and cross_id = #{crossId} and plan_id = #{planId}
where start_time = #{startTime} and cross_id = #{crossId} and plan_id = #{planId}
</select>
</select>
<select
id=
"selectByCrossIdsAndStartTime"
resultType=
"net.wanji.databus.dao.entity.CrossSectionPOExt"
>
select t1.id, t1.start_time, t1.cross_id, t1.plan_id, t1.scheme_id, t2.name as planName
from t_base_cross_section t1 join t_base_cross_plan t2
on t1.plan_id = t2.id
where t1.cross_id in
<foreach
collection=
"crossList"
item=
"id"
separator=
","
open=
"("
close=
")"
>
#{id}
</foreach>
</select>
</mapper>
</mapper>
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