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
cb84ffaf
Commit
cb84ffaf
authored
Aug 29, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 新信号评价-运行评价-方案问题修改
parent
7314f33f
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 additions
and
46 deletions
+42
-46
RunningEvaluateServiceImpl.java
...et/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
+40
-34
SchemeEvaluateServiceImpl.java
...net/wanji/opt/service/impl/SchemeEvaluateServiceImpl.java
+2
-12
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
View file @
cb84ffaf
...
...
@@ -58,6 +58,9 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
private
final
CrossTurnDataHistMapper
crossTurnDataHistMapper
;
private
final
CrossLaneDataHistMapper
crossLaneDataHistMapper
;
SimpleDateFormat
HOUR_SDF
=
new
SimpleDateFormat
(
"HH:mm"
);
SimpleDateFormat
DAY_SDF
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
public
RunningEvaluateServiceImpl
(
CrossDataRealtimeMapper
crossDataRealtimeMapper
,
CrossDataHistMapper
crossDataHistMapper
,
@Qualifier
(
"baseCrossSectionMapper"
)
BaseCrossSectionMapper
baseCrossSectionMapper
,
...
...
@@ -204,12 +207,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.
filter
(
po
->
!
Objects
.
equals
(
po
.
getStatus
(),
CrossStatusEnum
.
NORMAL
.
getCode
()))
.
collect
(
Collectors
.
toList
());
// 按采集时间小时进行聚合
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH"
);
Map
<
String
,
List
<
CrossDataHistPO
>>
timePOMap
=
crossDataHistPOList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
po
->
{
Date
date
=
new
Date
((
long
)
po
.
getBatchTime
()
*
1000
);
// 将10位时间戳转换为Date对象
return
sdf
.
format
(
date
);
// 将Date对象转换为"HH"格式的字符串
}));
Map
<
String
,
List
<
CrossDataHistPO
>>
timePOMap
=
buildTimePOMap
(
collect
);;
// 找出当前小时的记录
List
<
CrossDataHistPO
>
currentHourList
=
timePOMap
.
get
(
time
.
substring
(
0
,
2
));
// 保留小时字符串
if
(
currentHourList
!=
null
)
{
...
...
@@ -237,6 +235,16 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
return
res
;
}
private
Map
<
String
,
List
<
CrossDataHistPO
>>
buildTimePOMap
(
List
<
CrossDataHistPO
>
crossDataHistPOList
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH"
);
Map
<
String
,
List
<
CrossDataHistPO
>>
timePOMap
=
crossDataHistPOList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
po
->
{
Date
date
=
new
Date
((
long
)
po
.
getBatchTime
()
*
1000
);
// 将10位时间戳转换为Date对象
return
sdf
.
format
(
date
);
// 将Date对象转换为"HH"格式的字符串
}));
return
timePOMap
;
}
@Override
public
RunningEvaluateMetricsDetailVO
metricsDetail
(
MetricsDetailBO
bo
)
{
String
crossId
=
bo
.
getCrossId
();
...
...
@@ -366,16 +374,14 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.
values
().
stream
().
collect
(
Collectors
.
toList
());
// 从Map中获取值并收集到新的列表中
for
(
MetricHistDTO
dto
:
uniqueList
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH:mm"
);
Date
abnormalEventStartTime
=
dto
.
getStartTime
();
Integer
duration
=
dto
.
getDuration
();
Date
abnormalEventEndTime
=
DateUtil
.
offsetMinute
(
abnormalEventStartTime
,
duration
);
String
eventStartTime
=
sdf
.
format
(
abnormalEventStartTime
);
String
eventEndTime
=
sdf
.
format
(
abnormalEventEndTime
);
String
eventStartTime
=
HOUR_SDF
.
format
(
abnormalEventStartTime
);
String
eventEndTime
=
HOUR_SDF
.
format
(
abnormalEventEndTime
);
SimpleDateFormat
sdf2
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
datetime
=
new
Date
();
String
dateStr
=
sdf2
.
format
(
datetime
);
String
dateStr
=
DAY_SDF
.
format
(
datetime
);
// 获取当前计划ID
Integer
planId
=
findPlanId
(
datetime
,
dateStr
,
crossId
);
List
<
CrossSectionPO
>
crossSectionPOList
=
baseCrossSectionMapper
.
selectByCrossAndPlan
(
crossId
,
planId
);
...
...
@@ -385,6 +391,20 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
// 比较两组时间段是否相交
boolean
isIntersecting
=
isTimeIntersecting
(
eventStartTime
,
eventEndTime
,
sectionStartTime
,
sectionEndTime
);
buildResIfIntersecting
(
res
,
crossSectionPO
,
sectionStartTime
,
sectionEndTime
,
isIntersecting
,
baseCrossSchemeMapper
);
}
}
// 去除相同方案
List
<
RunningEvaluateMetricsDetailVO
.
ProblemScheme
>
uniqueRes
=
res
.
stream
()
.
distinct
()
.
collect
(
Collectors
.
toList
());
return
uniqueRes
;
}
void
buildResIfIntersecting
(
List
<
RunningEvaluateMetricsDetailVO
.
ProblemScheme
>
res
,
CrossSectionPO
crossSectionPO
,
String
sectionStartTime
,
String
sectionEndTime
,
boolean
isIntersecting
,
BaseCrossSchemeMapper
baseCrossSchemeMapper
)
{
if
(
isIntersecting
)
{
Integer
schemeId
=
crossSectionPO
.
getSchemeId
();
BaseCrossSchemePO
baseCrossSchemePO
=
baseCrossSchemeMapper
.
selectById
(
schemeId
);
...
...
@@ -398,13 +418,6 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
res
.
add
(
problemScheme
);
}
}
}
// 去除相同方案
List
<
RunningEvaluateMetricsDetailVO
.
ProblemScheme
>
uniqueRes
=
res
.
stream
()
.
distinct
()
.
collect
(
Collectors
.
toList
());
return
uniqueRes
;
}
List
<
RunningEvaluateMetricsDetailVO
.
ProblemStatus
>
buildProblemStatusList
(
List
<
MetricHistDTO
>
metricHistDTOList
)
{
...
...
@@ -667,12 +680,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
@NotNull
private
List
<
RunningEvaluateIndexStatusVO
>
buildRunningEvaluateIndexStatusVOList
(
List
<
CrossDataHistPO
>
crossDataHistPOList
,
int
status
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH"
);
Map
<
String
,
List
<
CrossDataHistPO
>>
timePOMap
=
crossDataHistPOList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
po
->
{
Date
date
=
new
Date
((
long
)
po
.
getBatchTime
()
*
1000
);
// 将10位时间戳转换为Date对象
return
sdf
.
format
(
date
);
// 将Date对象转换为"HH"格式的字符串
}));
Map
<
String
,
List
<
CrossDataHistPO
>>
timePOMap
=
buildTimePOMap
(
crossDataHistPOList
);
// 构造结果集
List
<
RunningEvaluateIndexStatusVO
>
res
=
new
ArrayList
<>();
...
...
@@ -728,16 +736,14 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.
collect
(
Collectors
.
toList
());
for
(
CrossDataHistPO
abnormalEvent
:
allList
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH:mm"
);
Date
abnormalEventStartTime
=
abnormalEvent
.
getStartTime
();
Integer
duration
=
abnormalEvent
.
getDuration
();
Date
abnormalEventEndTime
=
DateUtil
.
offsetMinute
(
abnormalEventStartTime
,
duration
);
String
eventStartTime
=
sdf
.
format
(
abnormalEventStartTime
);
String
eventEndTime
=
sdf
.
format
(
abnormalEventEndTime
);
String
eventStartTime
=
HOUR_SDF
.
format
(
abnormalEventStartTime
);
String
eventEndTime
=
HOUR_SDF
.
format
(
abnormalEventEndTime
);
SimpleDateFormat
sdf2
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
datetime
=
new
Date
();
String
dateStr
=
sdf2
.
format
(
datetime
);
String
dateStr
=
DAY_SDF
.
format
(
datetime
);
// 获取当前计划ID
Integer
planId
=
findPlanId
(
datetime
,
dateStr
,
crossId
);
List
<
CrossSectionPO
>
crossSectionPOList
=
baseCrossSectionMapper
.
selectByCrossAndPlan
(
crossId
,
planId
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/SchemeEvaluateServiceImpl.java
View file @
cb84ffaf
...
...
@@ -339,18 +339,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
// 比较两组时间段是否相交
boolean
isIntersecting
=
runningEvaluateService
.
isTimeIntersecting
(
eventStartTime
,
eventEndTime
,
sectionStartTime
,
sectionEndTime
);
if
(
isIntersecting
)
{
Integer
schemeId
=
crossSectionPO
.
getSchemeId
();
BaseCrossSchemePO
baseCrossSchemePO
=
baseCrossSchemeMapper
.
selectById
(
schemeId
);
String
schemeName
=
baseCrossSchemePO
.
getName
();
RunningEvaluateMetricsDetailVO
.
ProblemScheme
problemScheme
=
new
RunningEvaluateMetricsDetailVO
.
ProblemScheme
();
problemScheme
.
setSchemeName
(
schemeName
);
problemScheme
.
setStartTime
(
sectionStartTime
);
problemScheme
.
setEndTime
(
sectionEndTime
);
problemSchemeList
.
add
(
problemScheme
);
}
runningEvaluateService
.
buildResIfIntersecting
(
problemSchemeList
,
crossSectionPO
,
sectionStartTime
,
sectionEndTime
,
isIntersecting
,
baseCrossSchemeMapper
);
}
}
// 去除相同方案
...
...
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