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
4590005a
Commit
4590005a
authored
Apr 01, 2025
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 诱导屏逻辑去除策略表逻辑校验
parent
90d8a528
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
58 additions
and
58 deletions
+58
-58
InducesMonitorTask.java
.../src/main/java/net/wanji/opt/task/InducesMonitorTask.java
+58
-58
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/task/InducesMonitorTask.java
View file @
4590005a
...
...
@@ -102,67 +102,67 @@ public class InducesMonitorTask {
List
<
GreenwaveInducesHist
>
greenwaveInducesHistss
=
greenwaveInducesHistService
.
list
();
for
(
GreenwaveInfoPO
greenwaveInfoPO
:
greenwaveInfoPOList
)
{
AtomicBoolean
flag
=
new
AtomicBoolean
(
fals
e
);
//是否已发布优化
AtomicBoolean
flag
=
new
AtomicBoolean
(
tru
e
);
//是否已发布优化
AtomicReference
<
Integer
>
strategyId
=
new
AtomicReference
<
Integer
>(
0
);
//1、查询所有绿波带路口信息,获取路口下的绿波策略计划
List
<
GreenwaveCrossPO
>
greenwaveCrossList
=
greenwaveCrossMapper
.
selectByGreenwaveId
(
greenwaveInfoPO
.
getId
());
greenwaveCrossList
.
stream
().
forEach
(
o
->
{
//System.out.println("绿波路口--->"+greenwaveInfoPO.getId()+"=="+o.getCrossId());
//创建路口策略列表
List
<
StrategyPlanInfoEntity
>
strategyPlanInfoEntityList
=
strategyPlanInfoMapper
.
selectByCrossId
(
o
.
getCrossId
());
//strategyPlanInfoEntityList.stream().filter(x->Objects.nonNull(x.getCrossId()) && x.getCrossId().equals(o.getCrossId()) ).forEach(x->
for
(
StrategyPlanInfoEntity
strategyPlanInfoEntity
:
strategyPlanInfoEntityList
)
{
System
.
out
.
println
(
"策略计划--->"
+
greenwaveInfoPO
.
getId
()
+
"=="
+
strategyPlanInfoEntity
.
getPlanDetails
());
//2、检查绿波时段,判断是否在绿波时段内,如果不在,则判断是否执行过上屏操作,如果执行过,则调用下屏服务(此出屏幕自动处理,无需逻辑)
//[{"dailyPlanId":1,"weeks":[1,2,3,4,5]}]
List
<
StrategyControlDetailList
.
ExecutePlan
.
PlanDetail
>
planDetails
=
new
ArrayList
<>();
try
{
planDetails
=
JacksonUtils
.
getInstance
().
readValue
(
strategyPlanInfoEntity
.
getPlanDetails
(),
new
TypeReference
<
List
<
StrategyControlDetailList
.
ExecutePlan
.
PlanDetail
>>()
{
});
}
catch
(
JsonProcessingException
e
)
{
log
.
error
(
"策略周计划详情转换失败:"
+
strategyPlanInfoEntity
.
getPlanId
()
+
"---"
+
e
.
getMessage
());
}
//处理日计划的时间拼合处理
if
(!
CollectionUtils
.
isEmpty
(
planDetails
))
{
for
(
StrategyControlDetailList
.
ExecutePlan
.
PlanDetail
planDetail
:
planDetails
)
{
Integer
dailyPlanId
=
planDetail
.
getDailyPlanId
();
List
<
Integer
>
weeks
=
planDetail
.
getWeeks
();
//获取当前周几,判断是否在时间范围内
if
(
weeks
.
contains
(
LocalDate
.
now
().
getDayOfWeek
().
getValue
()))
{
LambdaQueryWrapper
<
StrategyDailyPlanInfoEntity
>
dailyPlanQueryWrapper
=
new
LambdaQueryWrapper
<>();
dailyPlanQueryWrapper
.
eq
(
StrategyDailyPlanInfoEntity:
:
getCrossId
,
strategyPlanInfoEntity
.
getCrossId
());
dailyPlanQueryWrapper
.
eq
(
StrategyDailyPlanInfoEntity:
:
getDailyPlanId
,
dailyPlanId
);
List
<
StrategyDailyPlanInfoEntity
>
dailyPlanInfoEntities
=
strategyDailyPlanInfoMapper
.
selectList
(
dailyPlanQueryWrapper
);
dailyPlanInfoEntities
.
stream
().
forEach
(
p
->
{
System
.
out
.
println
(
"plan detail->"
+
p
.
getDailyPlanDetails
());
List
<
StrategyControlDetailList
.
DailyPlan
.
DailyPlanDetail
>
dailyPlanDetails
=
new
ArrayList
<>();
try
{
dailyPlanDetails
=
JacksonUtils
.
getInstance
().
readValue
(
p
.
getDailyPlanDetails
(),
new
TypeReference
<
List
<
StrategyControlDetailList
.
DailyPlan
.
DailyPlanDetail
>>()
{
});
}
catch
(
JsonProcessingException
e
)
{
log
.
error
(
"策略日计划详情转换失败:"
+
p
.
getDailyPlanId
()
+
"---"
+
e
.
getMessage
());
}
for
(
StrategyControlDetailList
.
DailyPlan
.
DailyPlanDetail
dailyPlanDetail
:
dailyPlanDetails
)
{
//[{"strategy":1,"times":["00:00","20:00"]},{"strategy":2,"times":["20:00","23:59"]}]
if
(!
CollectionUtils
.
isEmpty
(
dailyPlanDetail
.
getTimes
()))
{
LocalTime
startTime
=
LocalTime
.
parse
(
dailyPlanDetail
.
getTimes
().
get
(
0
));
LocalTime
endTime
=
LocalTime
.
parse
(
dailyPlanDetail
.
getTimes
().
get
(
1
));
// 判断当前时间是否在范围内
if
(
LocalTime
.
now
().
isAfter
(
startTime
)
&&
LocalTime
.
now
().
isBefore
(
endTime
))
{
System
.
out
.
println
(
"当前时间在范围内: "
+
LocalTime
.
now
());
//System.out.println("绿波路口--->"+greenwaveInfoPO.getId()+"=="+o.getCrossId());
flag
.
set
(
true
);
log
.
info
(
"当前诱导屏在策略执行时间内flag=true内容:{}"
,
greenwaveInfoPO
.
getId
());
strategyId
.
set
(
p
.
getDailyPlanId
());
}
}
}
});
}
}
}
}
});
//
greenwaveCrossList.stream().forEach(o -> {
//
//System.out.println("绿波路口--->"+greenwaveInfoPO.getId()+"=="+o.getCrossId());
//
//创建路口策略列表
//
List<StrategyPlanInfoEntity> strategyPlanInfoEntityList = strategyPlanInfoMapper.selectByCrossId(o.getCrossId());
//
//strategyPlanInfoEntityList.stream().filter(x->Objects.nonNull(x.getCrossId()) && x.getCrossId().equals(o.getCrossId()) ).forEach(x->
//
for (StrategyPlanInfoEntity strategyPlanInfoEntity : strategyPlanInfoEntityList) {
//
System.out.println("策略计划--->" + greenwaveInfoPO.getId() + "==" + strategyPlanInfoEntity.getPlanDetails());
//
//2、检查绿波时段,判断是否在绿波时段内,如果不在,则判断是否执行过上屏操作,如果执行过,则调用下屏服务(此出屏幕自动处理,无需逻辑)
//
//[{"dailyPlanId":1,"weeks":[1,2,3,4,5]}]
//
List<StrategyControlDetailList.ExecutePlan.PlanDetail> planDetails = new ArrayList<>();
//
try {
//
planDetails = JacksonUtils.getInstance().readValue(strategyPlanInfoEntity.getPlanDetails(), new TypeReference<List<StrategyControlDetailList.ExecutePlan.PlanDetail>>() {
//
});
//
} catch (JsonProcessingException e) {
//
log.error("策略周计划详情转换失败:" + strategyPlanInfoEntity.getPlanId() + "---" + e.getMessage());
//
}
//
//处理日计划的时间拼合处理
//
if (!CollectionUtils.isEmpty(planDetails)) {
//
for (StrategyControlDetailList.ExecutePlan.PlanDetail planDetail : planDetails) {
//
Integer dailyPlanId = planDetail.getDailyPlanId();
//
List<Integer> weeks = planDetail.getWeeks();
//
//获取当前周几,判断是否在时间范围内
//
if (weeks.contains(LocalDate.now().getDayOfWeek().getValue())) {
//
LambdaQueryWrapper<StrategyDailyPlanInfoEntity> dailyPlanQueryWrapper = new LambdaQueryWrapper<>();
//
dailyPlanQueryWrapper.eq(StrategyDailyPlanInfoEntity::getCrossId, strategyPlanInfoEntity.getCrossId());
//
dailyPlanQueryWrapper.eq(StrategyDailyPlanInfoEntity::getDailyPlanId, dailyPlanId);
//
List<StrategyDailyPlanInfoEntity> dailyPlanInfoEntities = strategyDailyPlanInfoMapper.selectList(dailyPlanQueryWrapper);
//
dailyPlanInfoEntities.stream().forEach(p -> {
//
System.out.println("plan detail->" + p.getDailyPlanDetails());
//
List<StrategyControlDetailList.DailyPlan.DailyPlanDetail> dailyPlanDetails = new ArrayList<>();
//
try {
//
dailyPlanDetails = JacksonUtils.getInstance().readValue(p.getDailyPlanDetails(), new TypeReference<List<StrategyControlDetailList.DailyPlan.DailyPlanDetail>>() {
//
});
//
} catch (JsonProcessingException e) {
//
log.error("策略日计划详情转换失败:" + p.getDailyPlanId() + "---" + e.getMessage());
//
}
//
for (StrategyControlDetailList.DailyPlan.DailyPlanDetail dailyPlanDetail : dailyPlanDetails) {
//
//[{"strategy":1,"times":["00:00","20:00"]},{"strategy":2,"times":["20:00","23:59"]}]
//
if (!CollectionUtils.isEmpty(dailyPlanDetail.getTimes())) {
//
LocalTime startTime = LocalTime.parse(dailyPlanDetail.getTimes().get(0));
//
LocalTime endTime = LocalTime.parse(dailyPlanDetail.getTimes().get(1));
//
// 判断当前时间是否在范围内
//
if (LocalTime.now().isAfter(startTime) && LocalTime.now().isBefore(endTime)) {
//
System.out.println("当前时间在范围内: " + LocalTime.now());
//
//System.out.println("绿波路口--->"+greenwaveInfoPO.getId()+"=="+o.getCrossId());
//
flag.set(true);
//
log.info("当前诱导屏在策略执行时间内flag=true内容:{}", greenwaveInfoPO.getId());
//
strategyId.set(p.getDailyPlanId());
//
}
//
}
//
}
//
});
//
}
//
}
//
}
//
}
//
});
//3、如果在绿波时段内,未上屏,则获取固定配时绿波信息
//4、获取优化绿波方案,如果不存在,则执行固定绿波方案
//如果在绿波时段内,未上屏,则获取固定配时绿波信息
...
...
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