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
e4540ad6
Commit
e4540ad6
authored
Sep 25, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 优化异常,设置默认值
parent
0cf88a56
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
70 additions
and
42 deletions
+70
-42
SchemeEvaluateController.java
...va/net/wanji/opt/controller/SchemeEvaluateController.java
+1
-1
SchemeEvaluateService.java
...ain/java/net/wanji/opt/service/SchemeEvaluateService.java
+2
-2
SchemeEvaluateServiceImpl.java
...net/wanji/opt/service/impl/SchemeEvaluateServiceImpl.java
+67
-39
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/SchemeEvaluateController.java
View file @
e4540ad6
...
...
@@ -80,7 +80,7 @@ public class SchemeEvaluateController {
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SchemeEvaluateSchemeDetailOverallVO
.
class
),
})
public
JsonViewObject
schemeDetailOverall
(
@RequestBody
SchemeDetailOverallBO
schemeDetailOverallBO
)
throws
Parse
Exception
{
throws
Exception
{
SchemeEvaluateSchemeDetailOverallVO
res
=
schemeEvaluateService
.
schemeDetailOverall
(
schemeDetailOverallBO
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/SchemeEvaluateService.java
View file @
e4540ad6
...
...
@@ -17,9 +17,9 @@ public interface SchemeEvaluateService {
List
<
SchemeEvaluateCrossSchemeListVO
>
crossSchemeList
(
CrossSchemeListBO
crossSchemeListBO
);
SchemeEvaluateSchemeDetailOverallVO
schemeDetailOverall
(
SchemeDetailOverallBO
schemeDetailOverallBO
)
throws
Parse
Exception
;
SchemeEvaluateSchemeDetailOverallVO
schemeDetailOverall
(
SchemeDetailOverallBO
schemeDetailOverallBO
)
throws
Exception
;
SchemeEvaluateSchemeDetailedProblemVO
detailedProblem
(
SchemeDetailOverallBO
schemeDetailOverallBO
)
throws
Parse
Exception
;
SchemeEvaluateSchemeDetailedProblemVO
detailedProblem
(
SchemeDetailOverallBO
schemeDetailOverallBO
)
throws
Exception
;
List
<
SchemeEvaluateCurveChartVO
>
curveChart
(
CurveChartBO
curveChartBO
)
throws
ParseException
,
NoSuchFieldException
,
IllegalAccessException
;
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/SchemeEvaluateServiceImpl.java
View file @
e4540ad6
...
...
@@ -953,22 +953,30 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
.
mapToDouble
(
CrossDirDataHistPO:
:
getEffusionRate
)
.
max
();
if
(
effusionMax
.
isPresent
())
{
int
intMax
=
(
int
)
Math
.
round
(
effusionMax
.
getAsDouble
()
*
100
);
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildEffusionOverallMetrics
(
effusion
Max
);
buildEffusionOverallMetrics
(
int
Max
);
overallMetricsList
.
add
(
overallMetrics
);
}
else
{
throw
new
RuntimeException
(
"该时段无溢流率数据"
);
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildEffusionOverallMetrics
(
0
);
overallMetricsList
.
add
(
overallMetrics
);
// throw new RuntimeException("该时段无溢流率数据");
}
// 绿灯间隔清空率取最大
OptionalDouble
clearRateMax
=
crossDataHistPOList
.
stream
()
.
mapToDouble
(
CrossDataHistPO:
:
getClearRate
)
.
max
();
if
(
clearRateMax
.
isPresent
())
{
int
intMax
=
(
int
)
Math
.
round
(
clearRateMax
.
getAsDouble
());
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildClearRateOverallMetrics
(
clearRate
Max
);
buildClearRateOverallMetrics
(
int
Max
);
overallMetricsList
.
add
(
overallMetrics
);
}
else
{
throw
new
RuntimeException
(
"该时段无绿灯间隔清空率数据"
);
// throw new RuntimeException("该时段无绿灯间隔清空率数据");
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildClearRateOverallMetrics
(
0
);
overallMetricsList
.
add
(
overallMetrics
);
}
// 路口级别三急一速数量
Integer
emergencyCount
=
crossDataHistMapper
.
selectCrossEmergencyCount
(
crossId
,
startTimeStamp
,
endTimeStamp
);
...
...
@@ -1026,11 +1034,15 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
.
filter
(
Objects:
:
nonNull
)
.
max
();
if
(
greenLightEfficiencyMax
.
isPresent
())
{
int
intGreenLightEfficiencyMax
=
(
int
)
Math
.
round
(
greenLightEfficiencyMax
.
getAsDouble
()
*
100
);
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildGreenLightUseOverallMetrics
(
g
reenLightEfficiencyMax
);
buildGreenLightUseOverallMetrics
(
intG
reenLightEfficiencyMax
);
overallMetricsList
.
add
(
overallMetrics
);
}
else
{
throw
new
RuntimeException
(
"该时段无绿灯有效利用率数据"
);
// throw new RuntimeException("该时段无绿灯有效利用率数据");
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildGreenLightUseOverallMetrics
(
0
);
overallMetricsList
.
add
(
overallMetrics
);
}
// 饱和度取最大
OptionalDouble
saturationMax
=
crossDataHistPOList
.
stream
()
...
...
@@ -1038,11 +1050,15 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
.
filter
(
Objects:
:
nonNull
)
.
max
();
if
(
saturationMax
.
isPresent
())
{
int
intMax
=
(
int
)
Math
.
round
(
saturationMax
.
getAsDouble
());
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildSaturationMaxOverallMetrics
(
saturation
Max
);
buildSaturationMaxOverallMetrics
(
int
Max
);
overallMetricsList
.
add
(
overallMetrics
);
}
else
{
throw
new
RuntimeException
(
"该时段无饱和度数据"
);
// throw new RuntimeException("该时段无饱和度数据");
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildSaturationMaxOverallMetrics
(
0
);
overallMetricsList
.
add
(
overallMetrics
);
}
// 负载均衡度取最大
OptionalDouble
loadBalanceMax
=
crossDataHistPOList
.
stream
()
...
...
@@ -1051,11 +1067,15 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
.
mapToDouble
(
Double:
:
doubleValue
)
// 将Double转换为double
.
max
();
if
(
loadBalanceMax
.
isPresent
())
{
int
intMax
=
(
int
)
Math
.
round
(
loadBalanceMax
.
getAsDouble
());
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildLoadBalanceOverallMetrics
(
loadBalance
Max
);
buildLoadBalanceOverallMetrics
(
int
Max
);
overallMetricsList
.
add
(
overallMetrics
);
}
else
{
throw
new
RuntimeException
(
"该时段无负载均衡度数据"
);
// throw new RuntimeException("该时段无负载均衡度数据");
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildLoadBalanceOverallMetrics
(
0
);
overallMetricsList
.
add
(
overallMetrics
);
}
vo
.
setOverallMetricsList
(
overallMetricsList
);
// 查询方向指标数值(都取最大),并与评价标准比较:如果饱和度<0.8,则需绿灯利用率大于50%;如果饱和度>0.8,则需绿灯利用率大于80%
...
...
@@ -1079,8 +1099,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
vo
.
setStrategyEvaluateList
(
strategyEvaluateList
);
}
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildClearRateOverallMetrics
(
OptionalDouble
clearRateMax
)
{
int
intMax
=
(
int
)
Math
.
round
(
clearRateMax
.
getAsDouble
());
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildClearRateOverallMetrics
(
int
intMax
)
{
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
new
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
();
overallMetrics
.
setMetricCode
(
StrategyAndMetricsEnum
.
Metrics
.
CLEAR_RATE
.
getCode
());
...
...
@@ -1090,8 +1109,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
return
overallMetrics
;
}
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildEffusionOverallMetrics
(
OptionalDouble
effusionMax
)
{
int
intMax
=
(
int
)
Math
.
round
(
effusionMax
.
getAsDouble
()
*
100
);
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildEffusionOverallMetrics
(
int
intMax
)
{
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
new
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
();
overallMetrics
.
setMetricCode
(
StrategyAndMetricsEnum
.
Metrics
.
EFFUSION_RATE
.
getCode
());
...
...
@@ -1114,8 +1132,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
}
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildLoadBalanceOverallMetrics
(
OptionalDouble
loadBalanceMax
)
{
int
intMax
=
(
int
)
Math
.
round
(
loadBalanceMax
.
getAsDouble
());
int
intMax
)
{
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
new
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
();
overallMetrics
.
setMetricCode
(
StrategyAndMetricsEnum
.
Metrics
.
LOAD_BALANCE
.
getCode
());
...
...
@@ -1126,8 +1143,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
}
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildSaturationMaxOverallMetrics
(
OptionalDouble
saturationMax
)
{
int
intMax
=
(
int
)
Math
.
round
(
saturationMax
.
getAsDouble
());
int
intMax
)
{
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
new
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
();
overallMetrics
.
setMetricCode
(
StrategyAndMetricsEnum
.
Metrics
.
SATURATION
.
getCode
());
...
...
@@ -1138,8 +1154,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
}
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildGreenLightUseOverallMetrics
(
OptionalDouble
greenLightEfficiencyMax
)
{
int
intGreenLightEfficiencyMax
=
(
int
)
Math
.
round
(
greenLightEfficiencyMax
.
getAsDouble
()
*
100
);
int
intGreenLightEfficiencyMax
)
{
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
new
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
();
overallMetrics
.
setMetricCode
(
StrategyAndMetricsEnum
.
Metrics
.
GREEN_LIGHT_EFFICIENCY
.
getCode
());
...
...
@@ -1159,44 +1174,64 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
.
mapToDouble
(
CrossDataHistPO:
:
getQueueLength
)
.
max
();
if
(
queueLengthMax
.
isPresent
())
{
// 四舍五入并转换为 int 类型
int
intQueueLengthAverage
=
(
int
)
Math
.
round
(
queueLengthMax
.
getAsDouble
());
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildQueueLengthOverallMetrics
(
queueLengthMax
);
buildQueueLengthOverallMetrics
(
intQueueLengthAverage
);
overallMetricsList
.
add
(
overallMetrics
);
}
else
{
throw
new
RuntimeException
(
"该时段无最大排队数据"
);
// throw new RuntimeException("该时段无最大排队数据");
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildQueueLengthOverallMetrics
(
0
);
overallMetricsList
.
add
(
overallMetrics
);
}
// 延误取最大
OptionalInt
delayTimeMax
=
crossDataHistPOList
.
stream
()
.
mapToInt
(
CrossDataHistPO:
:
getDelayTime
)
.
max
();
if
(
delayTimeMax
.
isPresent
())
{
int
intDelayTimeAverage
=
delayTimeMax
.
getAsInt
();
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildDelayTimeOverallMetrics
(
delayTimeMax
);
buildDelayTimeOverallMetrics
(
intDelayTimeAverage
);
overallMetricsList
.
add
(
overallMetrics
);
}
else
{
throw
new
RuntimeException
(
"该时段无延误数据"
);
// throw new RuntimeException("该时段无延误数据");
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildDelayTimeOverallMetrics
(
0
);
overallMetricsList
.
add
(
overallMetrics
);
}
// 停车次数取最大
OptionalDouble
stopTimesMax
=
crossDataHistPOList
.
stream
()
.
mapToDouble
(
CrossDataHistPO:
:
getStopTimes
)
.
max
();
if
(
stopTimesMax
.
isPresent
())
{
// 四舍五入并转换为 int 类型
int
intStopTimesAverage
=
(
int
)
Math
.
round
(
stopTimesMax
.
getAsDouble
());
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildStopTimesOverallMetrics
(
stopTimesMax
);
buildStopTimesOverallMetrics
(
intStopTimesAverage
);
overallMetricsList
.
add
(
overallMetrics
);
}
else
{
throw
new
RuntimeException
(
"该时段无停车次数数据"
);
// throw new RuntimeException("该时段无停车次数数据");
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildStopTimesOverallMetrics
(
0
);
overallMetricsList
.
add
(
overallMetrics
);
}
// 不停车通过率取最大
OptionalDouble
noStopRateMax
=
crossDirDataHistPOList
.
stream
()
.
mapToDouble
(
CrossDirDataHistPO:
:
getNoStopRate
)
.
max
();
if
(
noStopRateMax
.
isPresent
())
{
// 先乘以100,再四舍五入并转换为 int 类型
int
intStopTimesAverage
=
(
int
)
Math
.
round
(
noStopRateMax
.
getAsDouble
()
*
100
);
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildNoStopRateOverallMetrics
(
noStopRateMax
);
buildNoStopRateOverallMetrics
(
intStopTimesAverage
);
overallMetricsList
.
add
(
overallMetrics
);
}
else
{
throw
new
RuntimeException
(
"该时段无不停车通过率数据"
);
// throw new RuntimeException("该时段无不停车通过率数据");
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
buildNoStopRateOverallMetrics
(
0
);
overallMetricsList
.
add
(
overallMetrics
);
}
vo
.
setOverallMetricsList
(
overallMetricsList
);
// 查询方向指标数值(都取最大),并与评价标准比较
...
...
@@ -1242,9 +1277,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
}
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildNoStopRateOverallMetrics
(
OptionalDouble
noStopRateAverage
)
{
// 先乘以100,再四舍五入并转换为 int 类型
int
intStopTimesAverage
=
(
int
)
Math
.
round
(
noStopRateAverage
.
getAsDouble
()
*
100
);
int
intStopTimesAverage
)
{
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
new
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
();
overallMetrics
.
setMetricCode
(
StrategyAndMetricsEnum
.
Metrics
.
NO_STOP_RATE
.
getCode
());
...
...
@@ -1255,9 +1288,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
}
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildStopTimesOverallMetrics
(
OptionalDouble
stopTimesAverage
)
{
// 四舍五入并转换为 int 类型
int
intStopTimesAverage
=
(
int
)
Math
.
round
(
stopTimesAverage
.
getAsDouble
());
int
intStopTimesAverage
)
{
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
new
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
();
overallMetrics
.
setMetricCode
(
StrategyAndMetricsEnum
.
Metrics
.
STOP_TIMES
.
getCode
());
...
...
@@ -1268,8 +1299,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
}
private
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildDelayTimeOverallMetrics
(
OptionalInt
delayTimeAverage
)
{
int
intDelayTimeAverage
=
delayTimeAverage
.
getAsInt
();
int
intDelayTimeAverage
)
{
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
new
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
();
overallMetrics
.
setMetricCode
(
StrategyAndMetricsEnum
.
Metrics
.
AVERAGE_DELAY
.
getCode
());
...
...
@@ -1281,9 +1311,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
@NotNull
private
static
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
buildQueueLengthOverallMetrics
(
OptionalDouble
queueLengthAverage
)
{
// 四舍五入并转换为 int 类型
int
intQueueLengthAverage
=
(
int
)
Math
.
round
(
queueLengthAverage
.
getAsDouble
());
int
intQueueLengthAverage
)
{
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
overallMetrics
=
new
SchemeEvaluateSchemeDetailOverallVO
.
OverallMetrics
();
overallMetrics
.
setMetricCode
(
StrategyAndMetricsEnum
.
Metrics
.
MAX_QUEUE_LENGTH
.
getCode
());
...
...
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