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
19eb34f4
Commit
19eb34f4
authored
Jan 05, 2024
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 绿波时段合并配置抽取至数据库
parent
1ac73972
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
95 additions
and
63 deletions
+95
-63
GreenwaveMergeConfig.java
.../main/java/net/wanji/opt/config/GreenwaveMergeConfig.java
+0
-19
MainlineEvaluateServiceImpl.java
...t/wanji/opt/service/impl/MainlineEvaluateServiceImpl.java
+40
-39
application-local.yaml
...ptimize-service/src/main/resources/application-local.yaml
+0
-5
GreenwaveMergeMapper.java
...va/net/wanji/databus/dao/mapper/GreenwaveMergeMapper.java
+14
-0
GreenwaveMergePO.java
.../src/main/java/net/wanji/databus/po/GreenwaveMergePO.java
+24
-0
GreenwaveMergeMapper.xml
...atabus/src/main/resources/mapper/GreenwaveMergeMapper.xml
+17
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/config/GreenwaveMergeConfig.java
deleted
100644 → 0
View file @
1ac73972
package
net
.
wanji
.
opt
.
config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2023/11/30 11:07
*/
@ConfigurationProperties
(
prefix
=
"greenwave-merge"
)
@Component
@Data
public
class
GreenwaveMergeConfig
{
List
<
String
>
weekDay
;
List
<
String
>
weekEnd
;
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/MainlineEvaluateServiceImpl.java
View file @
19eb34f4
...
...
@@ -13,7 +13,6 @@ import net.wanji.databus.dao.mapper.*;
import
net.wanji.databus.po.*
;
import
net.wanji.databus.vo.CrossIdAndNameVO
;
import
net.wanji.opt.bo.*
;
import
net.wanji.opt.config.GreenwaveMergeConfig
;
import
net.wanji.opt.dao.mapper.strategy.SceneStrategyMapper
;
import
net.wanji.opt.dao.mapper.strategy.StrategyMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveInfoMapper
;
...
...
@@ -60,7 +59,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
private
final
CrossPlanMapper
crossPlanMapper
;
private
final
BaseCrossPlanMapper
baseCrossPlanMapper
;
private
final
BaseCrossSchemeMapper
baseCrossSchemeMapper
;
private
final
GreenwaveMerge
Config
greenwaveMergeConfig
;
private
final
GreenwaveMerge
Mapper
greenwaveMergeMapper
;
SimpleDateFormat
hourMinuteFormat
=
new
SimpleDateFormat
(
"HH:mm"
);
SimpleDateFormat
dayFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
...
...
@@ -75,7 +74,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
@Qualifier
(
"baseCrossTurnInfoMapper"
)
BaseCrossTurnInfoMapper
baseCrossTurnInfoMapper
,
CrossBaseLaneInfoMapper
crossBaseLaneInfoMapper
,
@Qualifier
(
"laneInfoMapper"
)
LaneInfoMapper
laneInfoMapper
,
CrossDirDataHistMapper
crossDirDataHistMapper
,
CrossDataHistMapper
crossDataHistMapper
,
CrossTurnDataHistMapper
crossTurnDataHistMapper
,
CrossLaneDataHistMapper
crossLaneDataHistMapper
,
@Qualifier
(
"greenwaveInfoMapper"
)
GreenwaveInfoMapper
greenwaveInfoMapper
,
@Qualifier
(
"greenwaveHistMapper"
)
GreenwaveHistMapper
greenwaveHistMapper
,
@Qualifier
(
"greenwaveCrossMapper"
)
GreenwaveCrossMapper
greenwaveCrossMapper
,
@Qualifier
(
"baseCrossInfoMapper"
)
BaseCrossInfoMapper
baseCrossInfoMapper
,
@Qualifier
(
"greenwaveSceneMapper"
)
GreenwaveSceneMapper
greenwaveSceneMapper
,
@Qualifier
(
"sceneStrategyMapper"
)
SceneStrategyMapper
sceneStrategyMapper
,
@Qualifier
(
"strategyMapper"
)
StrategyMapper
strategyMapper
,
@Qualifier
(
"baseCrossSectionMapper"
)
BaseCrossSectionMapper
baseCrossSectionMapper
,
@Qualifier
(
"ridInfoMapper"
)
RidInfoMapper
ridInfoMapper
,
CrossPlanMapper
crossPlanMapper
,
@Qualifier
(
"baseCrossPlanMapper"
)
BaseCrossPlanMapper
baseCrossPlanMapper
,
@Qualifier
(
"baseCrossSchemeMapper"
)
BaseCrossSchemeMapper
baseCrossSchemeMapper
,
GreenwaveMergeConfig
greenwaveMergeConfig
)
{
CrossDirDataHistMapper
crossDirDataHistMapper
,
CrossDataHistMapper
crossDataHistMapper
,
CrossTurnDataHistMapper
crossTurnDataHistMapper
,
CrossLaneDataHistMapper
crossLaneDataHistMapper
,
@Qualifier
(
"greenwaveInfoMapper"
)
GreenwaveInfoMapper
greenwaveInfoMapper
,
@Qualifier
(
"greenwaveHistMapper"
)
GreenwaveHistMapper
greenwaveHistMapper
,
@Qualifier
(
"greenwaveCrossMapper"
)
GreenwaveCrossMapper
greenwaveCrossMapper
,
@Qualifier
(
"baseCrossInfoMapper"
)
BaseCrossInfoMapper
baseCrossInfoMapper
,
@Qualifier
(
"greenwaveSceneMapper"
)
GreenwaveSceneMapper
greenwaveSceneMapper
,
@Qualifier
(
"sceneStrategyMapper"
)
SceneStrategyMapper
sceneStrategyMapper
,
@Qualifier
(
"strategyMapper"
)
StrategyMapper
strategyMapper
,
@Qualifier
(
"baseCrossSectionMapper"
)
BaseCrossSectionMapper
baseCrossSectionMapper
,
@Qualifier
(
"ridInfoMapper"
)
RidInfoMapper
ridInfoMapper
,
CrossPlanMapper
crossPlanMapper
,
@Qualifier
(
"baseCrossPlanMapper"
)
BaseCrossPlanMapper
baseCrossPlanMapper
,
@Qualifier
(
"baseCrossSchemeMapper"
)
BaseCrossSchemeMapper
baseCrossSchemeMapper
,
@Qualifier
(
"greenwaveMergeMapper"
)
GreenwaveMergeMapper
greenwaveMergeMapper
)
{
this
.
baseCrossDirInfoMapper
=
baseCrossDirInfoMapper
;
this
.
baseCrossTurnInfoMapper
=
baseCrossTurnInfoMapper
;
this
.
laneInfoMapper
=
laneInfoMapper
;
...
...
@@ -95,7 +94,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
this
.
crossPlanMapper
=
crossPlanMapper
;
this
.
baseCrossPlanMapper
=
baseCrossPlanMapper
;
this
.
baseCrossSchemeMapper
=
baseCrossSchemeMapper
;
this
.
greenwaveMerge
Config
=
greenwaveMergeConfig
;
this
.
greenwaveMerge
Mapper
=
greenwaveMergeMapper
;
}
@Override
...
...
@@ -736,42 +735,39 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
}
private
void
mergeLineSchemeBuffer
(
Map
<
String
,
LineSchemeDTO
>
lineSchemeBuffer
,
String
mainlineName
)
{
if
(
mainlineName
.
contains
(
"转山西路至霞景路"
))
{
// 工作日合并 07:00-09:30,09:30-16:30,16:30-19:00,21:30-23:59
// 周末和节假日合并 13:30-20:00,21:30-23:59
Map
<
String
,
LineSchemeDTO
>
mergedRecords
=
new
HashMap
<>();
Iterator
<
String
>
iterator
=
lineSchemeBuffer
.
keySet
().
iterator
();
while
(
iterator
.
hasNext
()){
String
key
=
iterator
.
next
();
String
[]
keyParts
=
key
.
split
(
" "
);
String
timeRange
=
keyParts
[
keyParts
.
length
-
1
];
String
[]
times
=
timeRange
.
split
(
"-"
);
int
startTime
=
timeToInt
(
times
[
0
]);
int
endTime
=
timeToInt
(
times
[
1
]);
boolean
isWeekday
=
key
.
contains
(
"工作日"
);
List
<
int
[]>
mergingPeriods
=
getMergingPeriods
(
isWeekday
);
for
(
int
[]
mergingPeriod
:
mergingPeriods
)
{
if
(
isOverlapping
(
startTime
,
endTime
,
mergingPeriod
[
0
],
mergingPeriod
[
1
]))
{
int
mergedStartTime
=
mergingPeriod
[
0
];
int
mergedEndTime
=
mergingPeriod
[
1
];
String
newKey
=
constructNewKey
(
key
,
intToTime
(
mergedStartTime
),
intToTime
(
mergedEndTime
));
if
(
mergedRecords
.
containsKey
(
newKey
))
{
LineSchemeDTO
existingDto
=
mergedRecords
.
get
(
newKey
);
existingDto
.
getGreenwaveHistPOList
().
addAll
(
lineSchemeBuffer
.
get
(
key
).
getGreenwaveHistPOList
());
iterator
.
remove
();
}
else
{
mergedRecords
.
put
(
newKey
,
lineSchemeBuffer
.
get
(
key
));
iterator
.
remove
();
}
GreenwaveMergePO
greenwaveMergePO
=
greenwaveMergeMapper
.
selectByMainlineName
(
mainlineName
);
Map
<
String
,
LineSchemeDTO
>
mergedRecords
=
new
HashMap
<>();
Iterator
<
String
>
iterator
=
lineSchemeBuffer
.
keySet
().
iterator
();
while
(
iterator
.
hasNext
()){
String
key
=
iterator
.
next
();
String
[]
keyParts
=
key
.
split
(
" "
);
String
timeRange
=
keyParts
[
keyParts
.
length
-
1
];
String
[]
times
=
timeRange
.
split
(
"-"
);
int
startTime
=
timeToInt
(
times
[
0
]);
int
endTime
=
timeToInt
(
times
[
1
]);
boolean
isWeekday
=
key
.
contains
(
"工作日"
);
List
<
int
[]>
mergingPeriods
=
getMergingPeriods
(
isWeekday
,
greenwaveMergePO
);
for
(
int
[]
mergingPeriod
:
mergingPeriods
)
{
if
(
isOverlapping
(
startTime
,
endTime
,
mergingPeriod
[
0
],
mergingPeriod
[
1
]))
{
int
mergedStartTime
=
mergingPeriod
[
0
];
int
mergedEndTime
=
mergingPeriod
[
1
];
String
newKey
=
constructNewKey
(
key
,
intToTime
(
mergedStartTime
),
intToTime
(
mergedEndTime
));
if
(
mergedRecords
.
containsKey
(
newKey
))
{
LineSchemeDTO
existingDto
=
mergedRecords
.
get
(
newKey
);
existingDto
.
getGreenwaveHistPOList
().
addAll
(
lineSchemeBuffer
.
get
(
key
).
getGreenwaveHistPOList
());
iterator
.
remove
();
}
else
{
mergedRecords
.
put
(
newKey
,
lineSchemeBuffer
.
get
(
key
));
iterator
.
remove
();
}
}
}
lineSchemeBuffer
.
putAll
(
mergedRecords
);
}
lineSchemeBuffer
.
putAll
(
mergedRecords
);
}
private
int
timeToInt
(
String
time
)
{
...
...
@@ -779,13 +775,18 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
return
Integer
.
parseInt
(
parts
[
0
])
*
60
+
Integer
.
parseInt
(
parts
[
1
]);
}
private
List
<
int
[]>
getMergingPeriods
(
boolean
isWeekday
)
{
private
List
<
int
[]>
getMergingPeriods
(
boolean
isWeekday
,
GreenwaveMergePO
greenwaveMergePO
)
{
List
<
int
[]>
res
=
new
ArrayList
<>();
if
(
isWeekday
)
{
List
<
String
>
weekDays
=
greenwaveMergeConfig
.
getWeekDay
();
String
weekdayMerge
=
greenwaveMergePO
.
getWeekdayMerge
();
// 07:00,09:30|09:30,16:30|16:30,19:00|21:30,23:59
String
[]
split
=
weekdayMerge
.
split
(
"\\|"
);
List
<
String
>
weekDays
=
new
ArrayList
<>(
Arrays
.
asList
(
split
));
fillRes
(
weekDays
,
res
);
}
else
{
List
<
String
>
weekEnds
=
greenwaveMergeConfig
.
getWeekEnd
();
String
weekendMerge
=
greenwaveMergePO
.
getWeekendMerge
();
String
[]
split
=
weekendMerge
.
split
(
"\\|"
);
List
<
String
>
weekEnds
=
new
ArrayList
<>(
Arrays
.
asList
(
split
));
fillRes
(
weekEnds
,
res
);
}
return
res
;
...
...
signal-optimize-service/src/main/resources/application-local.yaml
View file @
19eb34f4
...
...
@@ -141,11 +141,6 @@ crossOptParam:
minVehheadTime
:
2.0
defaultVehheadTime
:
2.8
# 合并绿波时段
greenwave-merge
:
weekday
:
[
"
07:00,09:30"
,
"
09:30,16:30"
,
"
16:30,19:00"
,
"
21:30,23:59"
]
weekend
:
[
"
13:30,20:00"
,
"
21:30,23:59"
]
# 绿波方向转换
direction-mappings
:
mappings
:
...
...
wj-databus/src/main/java/net/wanji/databus/dao/mapper/GreenwaveMergeMapper.java
0 → 100644
View file @
19eb34f4
package
net
.
wanji
.
databus
.
dao
.
mapper
;
import
net.wanji.databus.po.GreenwaveMergePO
;
import
org.springframework.stereotype.Repository
;
/**
* @author Kent HAN
* @date 2022/10/31 11:03
*/
@Repository
public
interface
GreenwaveMergeMapper
{
GreenwaveMergePO
selectByMainlineName
(
String
mainlineName
);
}
wj-databus/src/main/java/net/wanji/databus/po/GreenwaveMergePO.java
0 → 100644
View file @
19eb34f4
package
net
.
wanji
.
databus
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author Kent HAN
* @date 2022/11/15 10:48
*/
@Data
public
class
GreenwaveMergePO
{
/** 主键 */
@ApiModelProperty
(
name
=
"主键"
,
notes
=
""
)
private
Integer
id
;
/** 干线名称 */
@ApiModelProperty
(
name
=
"干线名称"
,
notes
=
""
)
private
String
mainlineName
;
/** 工作日合并时段 */
@ApiModelProperty
(
name
=
"工作日合并时段"
,
notes
=
""
)
private
String
weekdayMerge
;
/** 周末合并时段 */
@ApiModelProperty
(
name
=
"周末合并时段"
,
notes
=
""
)
private
String
weekendMerge
;
}
wj-databus/src/main/resources/mapper/GreenwaveMergeMapper.xml
0 → 100644
View file @
19eb34f4
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"net.wanji.databus.dao.mapper.GreenwaveMergeMapper"
>
<sql
id=
"Base_Column_List"
>
id,mainline_name,weekday_merge,weekend_merge
</sql>
<select
id=
"selectByMainlineName"
resultType=
"net.wanji.databus.po.GreenwaveMergePO"
>
select
<include
refid=
"Base_Column_List"
></include>
from t_greenwave_merge
where mainline_name = #{mainlineName}
limit 1
</select>
</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