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
7b036473
Commit
7b036473
authored
Aug 21, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 新信号评价-运行评价-失衡情况
parent
5a1eb2d0
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
80 additions
and
24 deletions
+80
-24
RunningEvaluateController.java
...a/net/wanji/opt/controller/RunningEvaluateController.java
+15
-3
RunningEvaluateService.java
...in/java/net/wanji/opt/service/RunningEvaluateService.java
+3
-2
RunningEvaluateServiceImpl.java
...et/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
+58
-15
RunningEvaluateIndexStatusVO.java
...n/java/net/wanji/opt/vo/RunningEvaluateIndexStatusVO.java
+4
-4
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/RunningEvaluateController.java
View file @
7b036473
...
@@ -9,7 +9,7 @@ import net.wanji.databus.bo.CrossIdAndStartEndDateBO;
...
@@ -9,7 +9,7 @@ import net.wanji.databus.bo.CrossIdAndStartEndDateBO;
import
net.wanji.databus.vo.RunningEvaluateCrossListVO
;
import
net.wanji.databus.vo.RunningEvaluateCrossListVO
;
import
net.wanji.opt.bo.CrossNameBO
;
import
net.wanji.opt.bo.CrossNameBO
;
import
net.wanji.opt.service.impl.RunningEvaluateServiceImpl
;
import
net.wanji.opt.service.impl.RunningEvaluateServiceImpl
;
import
net.wanji.opt.vo.RunningEvaluate
Congestion
StatusVO
;
import
net.wanji.opt.vo.RunningEvaluate
Index
StatusVO
;
import
net.wanji.opt.vo.RunningEvaluateCrossEvaluateVO
;
import
net.wanji.opt.vo.RunningEvaluateCrossEvaluateVO
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
@@ -64,10 +64,22 @@ public class RunningEvaluateController {
...
@@ -64,10 +64,22 @@ public class RunningEvaluateController {
@PostMapping
(
value
=
"/congestionStatus"
,
@PostMapping
(
value
=
"/congestionStatus"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
RunningEvaluate
Congestion
StatusVO
.
class
),
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
RunningEvaluate
Index
StatusVO
.
class
),
})
})
public
JsonViewObject
congestionStatus
(
@RequestBody
CrossIdAndStartEndDateBO
bo
)
{
public
JsonViewObject
congestionStatus
(
@RequestBody
CrossIdAndStartEndDateBO
bo
)
{
List
<
RunningEvaluateCongestionStatusVO
>
res
=
runningEvaluateService
.
congestionStatus
(
bo
);
List
<
RunningEvaluateIndexStatusVO
>
res
=
runningEvaluateService
.
congestionStatus
(
bo
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
@ApiOperation
(
value
=
"失衡情况"
,
notes
=
"失衡情况"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/unbalanceStatus"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
RunningEvaluateIndexStatusVO
.
class
),
})
public
JsonViewObject
unbalanceStatus
(
@RequestBody
CrossIdAndStartEndDateBO
bo
)
{
List
<
RunningEvaluateIndexStatusVO
>
res
=
runningEvaluateService
.
unbalanceStatus
(
bo
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/RunningEvaluateService.java
View file @
7b036473
...
@@ -3,7 +3,7 @@ package net.wanji.opt.service;
...
@@ -3,7 +3,7 @@ package net.wanji.opt.service;
import
net.wanji.databus.bo.CrossIdAndStartEndDateBO
;
import
net.wanji.databus.bo.CrossIdAndStartEndDateBO
;
import
net.wanji.databus.vo.RunningEvaluateCrossListVO
;
import
net.wanji.databus.vo.RunningEvaluateCrossListVO
;
import
net.wanji.opt.bo.CrossNameBO
;
import
net.wanji.opt.bo.CrossNameBO
;
import
net.wanji.opt.vo.RunningEvaluate
Congestion
StatusVO
;
import
net.wanji.opt.vo.RunningEvaluate
Index
StatusVO
;
import
net.wanji.opt.vo.RunningEvaluateCrossEvaluateVO
;
import
net.wanji.opt.vo.RunningEvaluateCrossEvaluateVO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -13,6 +13,7 @@ public interface RunningEvaluateService {
...
@@ -13,6 +13,7 @@ public interface RunningEvaluateService {
RunningEvaluateCrossEvaluateVO
crossEvaluate
(
CrossIdAndStartEndDateBO
bo
);
RunningEvaluateCrossEvaluateVO
crossEvaluate
(
CrossIdAndStartEndDateBO
bo
);
List
<
RunningEvaluate
Congestion
StatusVO
>
congestionStatus
(
CrossIdAndStartEndDateBO
bo
);
List
<
RunningEvaluate
Index
StatusVO
>
congestionStatus
(
CrossIdAndStartEndDateBO
bo
);
List
<
RunningEvaluateIndexStatusVO
>
unbalanceStatus
(
CrossIdAndStartEndDateBO
bo
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
View file @
7b036473
...
@@ -2,6 +2,7 @@ package net.wanji.opt.service.impl;
...
@@ -2,6 +2,7 @@ package net.wanji.opt.service.impl;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.enums.CrossStatusEnum
;
import
net.wanji.common.utils.tool.CrossUtil
;
import
net.wanji.common.utils.tool.CrossUtil
;
import
net.wanji.common.utils.tool.TimeArrayUtil
;
import
net.wanji.common.utils.tool.TimeArrayUtil
;
import
net.wanji.databus.bo.CrossIdAndStartEndDateBO
;
import
net.wanji.databus.bo.CrossIdAndStartEndDateBO
;
...
@@ -14,8 +15,9 @@ import net.wanji.databus.po.CrossDataRealtimePO;
...
@@ -14,8 +15,9 @@ import net.wanji.databus.po.CrossDataRealtimePO;
import
net.wanji.databus.vo.RunningEvaluateCrossListVO
;
import
net.wanji.databus.vo.RunningEvaluateCrossListVO
;
import
net.wanji.opt.bo.CrossNameBO
;
import
net.wanji.opt.bo.CrossNameBO
;
import
net.wanji.opt.service.RunningEvaluateService
;
import
net.wanji.opt.service.RunningEvaluateService
;
import
net.wanji.opt.vo.RunningEvaluate
Congestion
StatusVO
;
import
net.wanji.opt.vo.RunningEvaluate
Index
StatusVO
;
import
net.wanji.opt.vo.RunningEvaluateCrossEvaluateVO
;
import
net.wanji.opt.vo.RunningEvaluateCrossEvaluateVO
;
import
org.jetbrains.annotations.NotNull
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -36,7 +38,9 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
...
@@ -36,7 +38,9 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
private
final
CrossDataHistMapper
crossDataHistMapper
;
private
final
CrossDataHistMapper
crossDataHistMapper
;
private
final
BaseCrossSectionMapper
baseCrossSectionMapper
;
private
final
BaseCrossSectionMapper
baseCrossSectionMapper
;
public
RunningEvaluateServiceImpl
(
CrossDataRealtimeMapper
crossDataRealtimeMapper
,
CrossDataHistMapper
crossDataHistMapper
,
@Qualifier
(
"baseCrossSectionMapper"
)
BaseCrossSectionMapper
baseCrossSectionMapper
)
{
public
RunningEvaluateServiceImpl
(
CrossDataRealtimeMapper
crossDataRealtimeMapper
,
CrossDataHistMapper
crossDataHistMapper
,
@Qualifier
(
"baseCrossSectionMapper"
)
BaseCrossSectionMapper
baseCrossSectionMapper
)
{
this
.
crossDataRealtimeMapper
=
crossDataRealtimeMapper
;
this
.
crossDataRealtimeMapper
=
crossDataRealtimeMapper
;
this
.
crossDataHistMapper
=
crossDataHistMapper
;
this
.
crossDataHistMapper
=
crossDataHistMapper
;
this
.
baseCrossSectionMapper
=
baseCrossSectionMapper
;
this
.
baseCrossSectionMapper
=
baseCrossSectionMapper
;
...
@@ -96,26 +100,56 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
...
@@ -96,26 +100,56 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
}
}
@Override
@Override
public
List
<
RunningEvaluateCongestionStatusVO
>
congestionStatus
(
CrossIdAndStartEndDateBO
bo
)
{
public
List
<
RunningEvaluateIndexStatusVO
>
congestionStatus
(
CrossIdAndStartEndDateBO
bo
)
{
String
crossId
=
bo
.
getCrossId
();
String
crossId
=
bo
.
getCrossId
();
int
status
=
CrossStatusEnum
.
CONGESTION
.
getCode
();
return
buildRes
(
bo
,
crossId
,
status
);
}
@NotNull
private
List
<
RunningEvaluateIndexStatusVO
>
buildRes
(
CrossIdAndStartEndDateBO
bo
,
String
crossId
,
int
status
)
{
List
<
CrossDataHistPO
>
crossDataHistPOList
=
buildCrossDataHistPOList
(
bo
,
crossId
);
List
<
CrossDataHistPO
>
crossDataHistPOList
=
buildCrossDataHistPOList
(
bo
,
crossId
);
List
<
CrossDataHistPO
>
collect
=
crossDataHistPOList
.
stream
()
.
filter
(
po
->
po
.
getStatus
()
==
status
)
.
collect
(
Collectors
.
toList
());
List
<
RunningEvaluateIndexStatusVO
>
res
=
buildRunningEvaluateIndexStatusVOList
(
collect
,
status
);
return
res
;
}
@Override
public
List
<
RunningEvaluateIndexStatusVO
>
unbalanceStatus
(
CrossIdAndStartEndDateBO
bo
)
{
String
crossId
=
bo
.
getCrossId
();
int
status
=
CrossStatusEnum
.
UNBALANCE
.
getCode
();
return
buildRes
(
bo
,
crossId
,
status
);
}
@NotNull
private
List
<
RunningEvaluateIndexStatusVO
>
buildRunningEvaluateIndexStatusVOList
(
List
<
CrossDataHistPO
>
crossDataHistPOList
,
int
status
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH"
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH"
);
Map
<
String
,
List
<
CrossDataHistPO
>>
timePOMap
=
crossDataHistPOList
.
stream
()
Map
<
String
,
List
<
CrossDataHistPO
>>
timePOMap
=
crossDataHistPOList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
po
->
{
.
collect
(
Collectors
.
groupingBy
(
po
->
{
Date
date
=
new
Date
((
long
)
po
.
getBatchTime
()
*
1000
);
// 将10位时间戳转换为Date对象
Date
date
=
new
Date
((
long
)
po
.
getBatchTime
()
*
1000
);
// 将10位时间戳转换为Date对象
return
sdf
.
format
(
date
);
// 将Date对象转换为"HH"格式的字符串
return
sdf
.
format
(
date
);
// 将Date对象转换为"HH"格式的字符串
}));
}));
// 构造结果集
// 构造结果集
List
<
RunningEvaluate
Congestion
StatusVO
>
res
=
new
ArrayList
<>();
List
<
RunningEvaluate
Index
StatusVO
>
res
=
new
ArrayList
<>();
List
<
String
>
timeArray
=
TimeArrayUtil
.
getTimeArray
();
List
<
String
>
timeArray
=
TimeArrayUtil
.
getTimeArray
();
for
(
String
time
:
timeArray
)
{
for
(
String
time
:
timeArray
)
{
RunningEvaluate
CongestionStatusVO
vo
=
new
RunningEvaluateCongestion
StatusVO
();
RunningEvaluate
IndexStatusVO
vo
=
new
RunningEvaluateIndex
StatusVO
();
vo
.
setTime
(
time
);
vo
.
setTime
(
time
);
List
<
CrossDataHistPO
>
subList
=
timePOMap
.
get
(
time
.
substring
(
0
,
2
));
// 保留小时字符串
List
<
CrossDataHistPO
>
subList
=
timePOMap
.
get
(
time
.
substring
(
0
,
2
));
// 保留小时字符串
if
(
subList
!=
null
)
{
if
(
subList
!=
null
)
{
Double
avgCongestionIndex
=
calcAvg
CongestionIndex
(
subList
);
Double
avgCongestionIndex
=
calcAvg
Index
(
subList
,
status
);
vo
.
set
Congestion
Index
(
avgCongestionIndex
);
vo
.
setIndex
(
avgCongestionIndex
);
}
}
res
.
add
(
vo
);
res
.
add
(
vo
);
...
@@ -123,12 +157,21 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
...
@@ -123,12 +157,21 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
return
res
;
return
res
;
}
}
private
Double
calcAvgCongestionIndex
(
List
<
CrossDataHistPO
>
subList
)
{
private
Double
calcAvgIndex
(
List
<
CrossDataHistPO
>
subList
,
int
status
)
{
Double
average
=
0.0
;
double
average
=
subList
.
stream
()
if
(
status
==
CrossStatusEnum
.
CONGESTION
.
getCode
())
{
average
=
subList
.
stream
()
.
mapToDouble
(
CrossDataHistPO:
:
getCongestionIndex
)
.
mapToDouble
(
CrossDataHistPO:
:
getCongestionIndex
)
.
average
()
.
average
()
.
orElse
(
0.0
);
.
orElse
(
0.0
);
}
else
if
(
status
==
CrossStatusEnum
.
UNBALANCE
.
getCode
())
{
average
=
subList
.
stream
()
.
mapToDouble
(
CrossDataHistPO:
:
getUnbalanceIndex
)
.
average
()
.
orElse
(
0.0
);
}
DecimalFormat
df
=
new
DecimalFormat
(
"#.00"
);
DecimalFormat
df
=
new
DecimalFormat
(
"#.00"
);
String
formattedAverage
=
df
.
format
(
average
);
String
formattedAverage
=
df
.
format
(
average
);
...
@@ -177,15 +220,15 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
...
@@ -177,15 +220,15 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
private
List
<
CrossDataHistPO
>
buildSpilloverEvents
(
List
<
CrossDataHistPO
>
crossDataHistPOList
)
{
private
List
<
CrossDataHistPO
>
buildSpilloverEvents
(
List
<
CrossDataHistPO
>
crossDataHistPOList
)
{
return
buildEvents
(
crossDataHistPOList
,
3
);
return
buildEvents
(
crossDataHistPOList
,
CrossStatusEnum
.
SPILLOVER
.
getCode
()
);
}
}
private
List
<
CrossDataHistPO
>
buildUnbalanceEvents
(
List
<
CrossDataHistPO
>
crossDataHistPOList
)
{
private
List
<
CrossDataHistPO
>
buildUnbalanceEvents
(
List
<
CrossDataHistPO
>
crossDataHistPOList
)
{
return
buildEvents
(
crossDataHistPOList
,
1
);
return
buildEvents
(
crossDataHistPOList
,
CrossStatusEnum
.
UNBALANCE
.
getCode
()
);
}
}
private
List
<
CrossDataHistPO
>
buildCongestionEvents
(
List
<
CrossDataHistPO
>
crossDataHistPOList
)
{
private
List
<
CrossDataHistPO
>
buildCongestionEvents
(
List
<
CrossDataHistPO
>
crossDataHistPOList
)
{
return
buildEvents
(
crossDataHistPOList
,
2
);
return
buildEvents
(
crossDataHistPOList
,
CrossStatusEnum
.
CONGESTION
.
getCode
()
);
}
}
private
List
<
CrossDataHistPO
>
buildEvents
(
List
<
CrossDataHistPO
>
crossDataHistPOList
,
int
status
)
{
private
List
<
CrossDataHistPO
>
buildEvents
(
List
<
CrossDataHistPO
>
crossDataHistPOList
,
int
status
)
{
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/RunningEvaluate
Congestion
StatusVO.java
→
signal-optimize-service/src/main/java/net/wanji/opt/vo/RunningEvaluate
Index
StatusVO.java
View file @
7b036473
...
@@ -7,13 +7,13 @@ import lombok.NoArgsConstructor;
...
@@ -7,13 +7,13 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@NoArgsConstructor
@Data
@Data
@ApiModel
(
value
=
"RunningEvaluate
CongestionStatusVO"
,
description
=
"查询拥堵
情况返回值"
)
@ApiModel
(
value
=
"RunningEvaluate
IndexStatusVO"
,
description
=
"查询拥堵、失衡、溢出
情况返回值"
)
public
class
RunningEvaluate
Congestion
StatusVO
{
public
class
RunningEvaluate
Index
StatusVO
{
@ApiModelProperty
(
value
=
"时间"
)
@ApiModelProperty
(
value
=
"时间"
)
private
String
time
;
private
String
time
;
@ApiModelProperty
(
value
=
"
拥堵指数
"
)
@ApiModelProperty
(
value
=
"
纵坐标数值
"
)
private
Double
congestionI
ndex
;
private
Double
i
ndex
;
}
}
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