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
2a5e6692
Commit
2a5e6692
authored
Apr 14, 2025
by
duwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
空放时长接口开发
parent
c5aa8951
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
55 additions
and
12 deletions
+55
-12
RunningEvaluateController.java
...a/net/wanji/opt/controller/RunningEvaluateController.java
+14
-1
RunningEvaluateService.java
...in/java/net/wanji/opt/service/RunningEvaluateService.java
+2
-0
RunningEvaluateServiceImpl.java
...et/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
+21
-6
RunningEvaluateIndexStatusVO.java
...n/java/net/wanji/opt/vo/RunningEvaluateIndexStatusVO.java
+3
-1
RunningEvaluateMetricsDetailVO.java
...java/net/wanji/opt/vo/RunningEvaluateMetricsDetailVO.java
+1
-1
CrossStatusEnum.java
...src/main/java/net/wanji/common/enums/CrossStatusEnum.java
+2
-1
CrossDataRealtimePO.java
...c/main/java/net/wanji/databus/po/CrossDataRealtimePO.java
+10
-0
CrossDataHistMapper.xml
wj-databus/src/main/resources/mapper/CrossDataHistMapper.xml
+2
-2
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/RunningEvaluateController.java
View file @
2a5e6692
...
...
@@ -49,7 +49,7 @@ public class RunningEvaluateController {
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
@ApiOperation
(
value
=
"路口评价"
,
notes
=
"路口评价"
,
response
=
JsonViewObject
.
class
,
@ApiOperation
(
value
=
"路口评价
(拥堵、溢出、失衡、空放)
"
,
notes
=
"路口评价"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/crossEvaluate"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
...
...
@@ -100,6 +100,19 @@ public class RunningEvaluateController {
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
//TODO 空放指数
@ApiOperation
(
value
=
"空放情况"
,
notes
=
"空放情况"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/emptyReleaseStatus"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
RunningEvaluateStatusVO
.
class
),
})
public
JsonViewObject
emptyReleaseStatus
(
@RequestBody
CrossIdAndStartEndDateBO
bo
)
{
RunningEvaluateStatusVO
res
=
runningEvaluateService
.
emptyReleaseStatus
(
bo
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
@ApiOperation
(
value
=
"方案问题"
,
notes
=
"方案问题"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/schemeProblems"
,
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/RunningEvaluateService.java
View file @
2a5e6692
...
...
@@ -21,6 +21,8 @@ public interface RunningEvaluateService {
RunningEvaluateStatusVO
spilloverStatus
(
CrossIdAndStartEndDateBO
bo
);
RunningEvaluateStatusVO
emptyReleaseStatus
(
CrossIdAndStartEndDateBO
bo
);
List
<
RunningEvaluateSchemeProblemsVO
>
schemeProblems
(
CrossIdAndStartEndDateBO
bo
);
RunningEvaluateMetricsDetailVO
metricsDetail
(
MetricsDetailBO
bo
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
View file @
2a5e6692
...
...
@@ -168,7 +168,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.
filter
(
Objects:
:
nonNull
)
.
mapToInt
(
Integer:
:
intValue
)
.
sum
();
vo
.
setCongestionSum
(
congestionSum
);
//拥堵时长
vo
.
setCongestionSum
(
congestionSum
/
60
);
//拥堵时长, 产品在表中用秒,我改成分钟
List
<
CrossDataHistPO
>
unbalanceEventList
=
buildUnbalanceEvents
(
crossDataHistPOList
);
// 获取失衡事件集合
vo
.
setUnbalanceTimes
(
unbalanceEventList
.
size
());
//失衡次数
...
...
@@ -178,7 +178,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.
filter
(
Objects:
:
nonNull
)
.
mapToInt
(
Integer:
:
intValue
)
.
sum
();
vo
.
setUnbalanceSum
(
unbalanceSum
);
//失衡时长
vo
.
setUnbalanceSum
(
unbalanceSum
/
60
);
//失衡时长
List
<
CrossDataHistPO
>
spilloverEventList
=
buildSpilloverEvents
(
crossDataHistPOList
);
// 获取溢出事件集合
vo
.
setSpilloverTimes
(
spilloverEventList
.
size
());
//溢出次数
...
...
@@ -188,7 +188,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.
filter
(
Objects:
:
nonNull
)
.
mapToInt
(
Integer:
:
intValue
)
.
sum
();
vo
.
setSpilloverSum
(
spilloverSum
);
//溢出时长
vo
.
setSpilloverSum
(
spilloverSum
/
60
);
//溢出时长
// 相位空放指标
Date
startDate
=
bo
.
getStartDate
();
...
...
@@ -212,7 +212,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.
mapToInt
(
Integer:
:
intValue
)
.
sum
();
vo
.
setEmptyPhaseTimes
(
emptyPhaseCount
);
vo
.
setEmptyPhaseSum
(
emptyPhaseSum
);
vo
.
setEmptyPhaseSum
(
emptyPhaseSum
/
60
);
//空放时长
Integer
schemeProblems
=
calcSchemeProblems
(
congestionEventList
,
unbalanceEventList
,
spilloverEventList
,
crossId
);
// 计算方案问题
...
...
@@ -238,6 +238,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
}
int
startStamp
=
(
int
)
(
startDate
.
getTime
()
/
1000
);
// 10位时间戳
int
endStamp
=
(
int
)
(
endDate
.
getTime
()
/
1000
);
List
<
CrossDataHistPO
>
crossDataHistPOList
=
crossDataHistMapper
.
selectByCrossIdAndStartEnd
(
crossId
,
startStamp
,
endStamp
);
return
crossDataHistPOList
;
...
...
@@ -267,6 +268,11 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
return
evaluateStatus
(
bo
,
CrossStatusEnum
.
SPILLOVER
);
}
@Override
public
RunningEvaluateStatusVO
emptyReleaseStatus
(
CrossIdAndStartEndDateBO
bo
)
{
return
evaluateStatus
(
bo
,
CrossStatusEnum
.
EMPTY_RELEASE
);
}
public
RunningEvaluateStatusVO
evaluateStatus
(
CrossIdAndStartEndDateBO
bo
,
CrossStatusEnum
statusEnum
)
{
RunningEvaluateStatusVO
runningEvaluateStatusVO
=
new
RunningEvaluateStatusVO
();
String
crossId
=
bo
.
getCrossId
();
...
...
@@ -278,7 +284,10 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
int
startStamp
=
(
int
)
(
startDate
.
getTime
()
/
1000
);
// 10位时间戳
int
endStamp
=
(
int
)
(
endDate
.
getTime
()
/
1000
);
runningEvaluateStatusVO
.
setRunningEvaluateIndexStatusVOList
(
buildRes
(
bo
,
crossId
,
status
));
//查询路口统计表 t_cross_data_hist
List
<
RunningEvaluateIndexStatusVO
>
runningEvaluateIndexStatusVOS
=
buildRes
(
bo
,
crossId
,
status
);
runningEvaluateStatusVO
.
setRunningEvaluateIndexStatusVOList
(
runningEvaluateIndexStatusVOS
);
// 获取问题列表
// 路口级别全量数据
List
<
MetricHistDTO
>
crossDTOList
=
crossDataHistMapper
.
selectMetricHistDTO
(
...
...
@@ -605,7 +614,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
Integer
duration1
=
metricHistDTO
.
getDuration
();
DateTime
endTime
=
DateUtil
.
offsetMinute
(
startTime1
,
duration1
);
problemStatus
.
setEndTime
(
endTime
);
problemStatus
.
setDurationMinutes
(
duration1
);
problemStatus
.
setDurationMinutes
(
duration1
/
60
);
// 计算持续时间(分钟)
res
.
add
(
problemStatus
);
}
...
...
@@ -861,6 +870,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
vo
.
setTime
(
time
);
List
<
CrossDataHistPO
>
subList
=
timePOMap
.
get
(
time
.
substring
(
0
,
2
));
// 保留小时字符串
if
(
subList
!=
null
)
{
//根据状态计算平均值(拥堵、溢出、失衡、空放)
Double
avgCongestionIndex
=
calcAvgIndex
(
subList
,
status
);
vo
.
setIndex
(
avgCongestionIndex
);
}
...
...
@@ -888,6 +898,11 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.
mapToDouble
(
CrossDataHistPO:
:
getSpilloverIndex
)
.
average
()
.
orElse
(
0.0
);
}
else
if
(
status
==
CrossStatusEnum
.
EMPTY_RELEASE
.
getCode
())
{
average
=
subList
.
stream
()
.
mapToDouble
(
CrossDataHistPO:
:
getEmptyReleaseIndex
)
.
average
()
.
orElse
(
0.0
);
}
DecimalFormat
df
=
new
DecimalFormat
(
"#.00"
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/RunningEvaluateIndexStatusVO.java
View file @
2a5e6692
...
...
@@ -12,7 +12,9 @@ public class RunningEvaluateIndexStatusVO {
@ApiModelProperty
(
value
=
"时间"
)
private
String
time
;
/**
* 各个指标的数值(拥堵,失衡,溢出,空放)
*/
@ApiModelProperty
(
value
=
"纵坐标数值"
)
private
Double
index
=
0.0
;
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/RunningEvaluateMetricsDetailVO.java
View file @
2a5e6692
...
...
@@ -30,7 +30,7 @@ public class RunningEvaluateMetricsDetailVO {
@NoArgsConstructor
@Data
public
static
class
ProblemStatus
{
@ApiModelProperty
(
value
=
"路口状态 0正常 1 失衡 2 拥堵 3 溢出"
)
@ApiModelProperty
(
value
=
"路口状态 0正常 1 失衡 2 拥堵 3 溢出
4 空放
"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"开始时间"
)
...
...
wj-common/src/main/java/net/wanji/common/enums/CrossStatusEnum.java
View file @
2a5e6692
...
...
@@ -7,7 +7,8 @@ public enum CrossStatusEnum {
UNBALANCE
(
1
,
"失衡"
),
CONGESTION
(
2
,
"拥堵"
),
SPILLOVER
(
3
,
"溢出"
),
DEADLOCK
(
4
,
"死锁"
);
DEADLOCK
(
4
,
"死锁"
),
EMPTY_RELEASE
(
5
,
"空放"
);
private
Integer
code
;
private
String
name
;
...
...
wj-databus/src/main/java/net/wanji/databus/po/CrossDataRealtimePO.java
View file @
2a5e6692
...
...
@@ -61,6 +61,11 @@ public class CrossDataRealtimePO {
*/
@ApiModelProperty
(
value
=
"是否拥堵:0否;1是"
,
notes
=
""
)
private
Integer
isCongestion
;
/**
* 是否空放:0否;1是
*/
@ApiModelProperty
(
value
=
"是否空放:0否;1是"
,
notes
=
""
)
private
Integer
isEmptyRelease
;
/**
* 失衡指数
*/
...
...
@@ -76,6 +81,11 @@ public class CrossDataRealtimePO {
*/
@ApiModelProperty
(
value
=
"拥堵指数"
,
notes
=
""
)
private
Double
congestionIndex
;
/**
* 空放指数
*/
@ApiModelProperty
(
value
=
"空放指数"
,
notes
=
""
)
private
Double
emptyReleaseIndex
;
/**
* 路口失衡方向:1,2,3...
*/
...
...
wj-databus/src/main/resources/mapper/CrossDataHistMapper.xml
View file @
2a5e6692
...
...
@@ -48,8 +48,8 @@
</resultMap>
<sql
id=
"Base_Column_List"
>
cross_id, status, type, traffic_index, start_time, end_time, duration, is_unbalance, is_spillover, is_congestion,
unbalance_index, spillover_index, congestion_index, unbalance_dirs, spillover_dirs, congestion_dirs,
cross_id, status, type, traffic_index, start_time, end_time, duration, is_unbalance, is_spillover, is_congestion,
is_emptyrelease,
unbalance_index, spillover_index, congestion_index,
emptyrelease_index,
unbalance_dirs, spillover_dirs, congestion_dirs,
flow, flow_rate, speed, queue_length, stop_times, delay_time, sturation, batch_time, gmt_create, gmt_modified,
clear_rate,load_balance,not_clear_car_nums,green_light_efficiency,effusion_rate,
no_stop_rate,one_stop_rate,two_stop_rate,three_stop_rate,non_motor_flow,v_85,
...
...
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