Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
W
wj-datacenter-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
wj-datacenter-platform
Commits
a522ea42
Commit
a522ea42
authored
Nov 17, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 计算绿波带宽定时任务
parent
4af07631
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
112 additions
and
30 deletions
+112
-30
CrossGreenWaveInfoCache.java
...a/net/wanji/datacenter/cache/CrossGreenWaveInfoCache.java
+1
-4
CrossSchemePhaseLightsCache.java
...t/wanji/datacenter/cache/CrossSchemePhaseLightsCache.java
+4
-0
CrossSchemePhaseDirTurnDTO.java
...wanji/datacenter/pojo/dto/CrossSchemePhaseDirTurnDTO.java
+2
-0
DataCenterTask.java
...c/main/java/net/wanji/datacenter/task/DataCenterTask.java
+105
-0
WeekFreeFlowSpeedTask.java
...java/net/wanji/datacenter/task/WeekFreeFlowSpeedTask.java
+0
-26
No files found.
wj-datacenter-service/src/main/java/net/wanji/datacenter/cache/CrossGreenWaveInfoCache.java
View file @
a522ea42
...
...
@@ -6,14 +6,11 @@ import net.wanji.databus.dao.entity.GreenwaveInfoPO;
import
net.wanji.databus.dao.mapper.GreenwaveCrossMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveInfoMapper
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.time.LocalTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.temporal.TemporalAccessor
;
import
java.util.Comparator
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -28,7 +25,7 @@ import java.util.stream.Collectors;
@Slf4j
public
class
CrossGreenWaveInfoCache
implements
InitializingBean
{
;
public
static
final
Map
<
Integer
,
List
<
GreenwaveCrossPO
>>
greenWaveInfoMap
=
new
HashMap
<>();
public
static
final
Map
<
Integer
,
List
<
GreenwaveCrossPO
>>
greenWaveInfoMap
=
new
HashMap
<>();
@Resource
private
GreenwaveInfoMapper
greenwaveInfoMapper
;
...
...
wj-datacenter-service/src/main/java/net/wanji/datacenter/cache/CrossSchemePhaseLightsCache.java
View file @
a522ea42
...
...
@@ -51,6 +51,8 @@ public class CrossSchemePhaseLightsCache implements CommandLineRunner {
Integer
phaseId
=
crossPhasePO
.
getId
();
String
phaseNo
=
crossPhasePO
.
getPhaseNo
();
Integer
redTime
=
crossPhasePO
.
getRedTime
();
Integer
phaseTime
=
crossPhasePO
.
getPhaseTime
();
Integer
greenTime
=
crossPhasePO
.
getGreenTime
();
List
<
CrossPhaseLightsPO
>
crossPhaseLightsPOList
=
baseCrossPhaseLightsMapper
.
selectByPhaseId
(
phaseId
);
if
(!
CollectionUtils
.
isEmpty
(
crossPhaseLightsPOList
))
{
for
(
CrossPhaseLightsPO
crossPhaseLightsPO
:
crossPhaseLightsPOList
)
{
...
...
@@ -66,6 +68,8 @@ public class CrossSchemePhaseLightsCache implements CommandLineRunner {
if
(
turn
==
20
)
{
continue
;
}
crossSchemePhaseDirTurnDTO
.
setPhaseTime
(
phaseTime
);
crossSchemePhaseDirTurnDTO
.
setGreenTime
(
greenTime
);
crossSchemePhaseDirTurnDTO
.
setRedTime
(
redTime
);
crossSchemePhaseDirTurnDTO
.
setLightsTurn
(
turn
);
crossSchemePhaseDirTurnDTOList
.
add
(
crossSchemePhaseDirTurnDTO
);
...
...
wj-datacenter-service/src/main/java/net/wanji/datacenter/pojo/dto/CrossSchemePhaseDirTurnDTO.java
View file @
a522ea42
...
...
@@ -13,5 +13,7 @@ public class CrossSchemePhaseDirTurnDTO {
private
String
phaseNo
;
private
Integer
lightsDir
;
private
Integer
lightsTurn
;
private
Integer
phaseTime
;
private
Integer
greenTime
;
private
Integer
redTime
;
}
wj-datacenter-service/src/main/java/net/wanji/datacenter/task/DataCenterTask.java
0 → 100644
View file @
a522ea42
package
net
.
wanji
.
datacenter
.
task
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.databus.dao.entity.BaseCrossSchemePO
;
import
net.wanji.databus.dao.entity.CrossSectionPO
;
import
net.wanji.databus.dao.entity.GreenwaveCrossPO
;
import
net.wanji.databus.dao.mapper.BaseCrossSchemeMapper
;
import
net.wanji.databus.dao.mapper.BaseCrossSectionMapper
;
import
net.wanji.datacenter.cache.CrossGreenWaveInfoCache
;
import
net.wanji.datacenter.cache.CrossSchemePhaseLightsCache
;
import
net.wanji.datacenter.cache.WeekDirFreeFlowSpeedCache
;
import
net.wanji.datacenter.pojo.dto.CrossSchemePhaseDirTurnDTO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
/**
* @author duanruiming
* @description 每天凌晨更新自由流速度
* @date 2023/10/14 9:22
*/
@Component
@Slf4j
public
class
DataCenterTask
{
@Resource
private
WeekDirFreeFlowSpeedCache
weekDirFreeFlowSpeedCache
;
@Resource
private
BaseCrossSectionMapper
baseCrossSectionMapper
;
@Resource
private
BaseCrossSchemeMapper
baseCrossSchemeMapper
;
@Scheduled
(
cron
=
"0 0 0 * * ?"
)
public
void
getWeekFreeFlowSpeed
()
throws
Exception
{
weekDirFreeFlowSpeedCache
.
run
();
}
@Scheduled
(
initialDelay
=
1000
*
60
,
fixedRate
=
1000
*
60
*
60
)
public
void
getGreenWaveWidth
()
throws
Exception
{
try
{
Map
<
Integer
,
List
<
GreenwaveCrossPO
>>
greenWaveInfoMap
=
CrossGreenWaveInfoCache
.
greenWaveInfoMap
;
int
greenwaveWidth
=
100
;
for
(
Map
.
Entry
<
Integer
,
List
<
GreenwaveCrossPO
>>
entry
:
greenWaveInfoMap
.
entrySet
())
{
Integer
greenId
=
entry
.
getKey
();
Double
lastCrossDistance
=
0.0
;
// 当前路口与上一路口距离
int
crossTimeOffset
=
0
;
// 上一路口到当前路口设计速度下时间差
int
greenDelayTime
=
0
;
// 每个路口绿波开始时间
List
<
GreenwaveCrossPO
>
greenwaveCrossPOList
=
entry
.
getValue
();
if
(!
CollectionUtils
.
isEmpty
(
greenwaveCrossPOList
))
{
for
(
GreenwaveCrossPO
greenwaveCrossPO
:
greenwaveCrossPOList
)
{
String
crossId
=
greenwaveCrossPO
.
getCrossId
();
Integer
sectionId
=
greenwaveCrossPO
.
getSectionId
();
Integer
inDir
=
greenwaveCrossPO
.
getInDir
();
Integer
offset
=
greenwaveCrossPO
.
getOffset
();
crossTimeOffset
+=
(
int
)
(
lastCrossDistance
/
(
100
/
6
));
// 自由流速度60
if
(
sectionId
!=
null
)
{
CrossSectionPO
crossSectionPO
=
baseCrossSectionMapper
.
selectById
(
sectionId
);
if
(
Objects
.
nonNull
(
crossSectionPO
))
{
Integer
schemeId
=
crossSectionPO
.
getSchemeId
();
BaseCrossSchemePO
baseCrossSchemePO
=
baseCrossSchemeMapper
.
selectById
(
schemeId
);
if
(
Objects
.
nonNull
(
baseCrossSchemePO
))
{
String
schemeNo
=
baseCrossSchemePO
.
getSchemeNo
();
List
<
CrossSchemePhaseDirTurnDTO
>
crossSchemePhaseDirTurnDTOList
=
CrossSchemePhaseLightsCache
.
crossSchemePhaseDirTurnDTOList
;
if
(!
CollectionUtils
.
isEmpty
(
crossSchemePhaseDirTurnDTOList
))
{
// 过滤路口编号,方案号,直行或者圆饼灯,
List
<
CrossSchemePhaseDirTurnDTO
>
currenSchemeList
=
crossSchemePhaseDirTurnDTOList
.
stream
().
filter
(
po
->
StringUtils
.
equals
(
crossId
,
po
.
getCrossId
())
&&
StringUtils
.
equals
(
po
.
getSchemeNo
(),
schemeNo
)
&&
(
Objects
.
equals
(
po
.
getLightsTurn
(),
3
)
||
Objects
.
equals
(
po
.
getLightsTurn
(),
1
))).
collect
(
Collectors
.
toList
());
Integer
lastPhaseTime
=
0
;
// 上一个相位的时间
for
(
CrossSchemePhaseDirTurnDTO
dto
:
currenSchemeList
)
{
// 当前路口方案绿波方向的绿灯时间
lastPhaseTime
+=
dto
.
getPhaseTime
();
if
(
Objects
.
equals
(
inDir
,
dto
.
getLightsDir
()))
{
lastPhaseTime
-=
dto
.
getPhaseTime
();
greenDelayTime
=
lastPhaseTime
>
greenDelayTime
?
lastPhaseTime
:
greenDelayTime
;
Integer
greenWaveStartIndex
=
offset
+
greenDelayTime
+
crossTimeOffset
;
Integer
greenWaveEndIndex
=
offset
+
dto
.
getPhaseTime
();
greenwaveWidth
=
Math
.
min
(
greenwaveWidth
,
greenWaveEndIndex
-
greenWaveStartIndex
);
}
}
}
}
}
}
lastCrossDistance
=
greenwaveCrossPO
.
getNextCrossLen
();
}
}
log
.
info
(
"当前绿波编号:{}, 绿波带宽:{}"
,
greenId
,
greenwaveWidth
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"获取绿波带宽异常"
,
e
);
throw
new
Exception
(
"获取绿波带宽异常"
,
e
);
}
}
}
wj-datacenter-service/src/main/java/net/wanji/datacenter/task/WeekFreeFlowSpeedTask.java
deleted
100644 → 0
View file @
4af07631
package
net
.
wanji
.
datacenter
.
task
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.datacenter.cache.WeekDirFreeFlowSpeedCache
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
* @author duanruiming
* @description 每天凌晨更新自由流速度
* @date 2023/10/14 9:22
*/
@Component
@Slf4j
public
class
WeekFreeFlowSpeedTask
{
@Resource
private
WeekDirFreeFlowSpeedCache
weekDirFreeFlowSpeedCache
;
@Scheduled
(
cron
=
"0 0 0 * * ?"
)
public
void
getWeekFreeFlowSpeed
()
throws
Exception
{
weekDirFreeFlowSpeedCache
.
run
();
}
}
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