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
ab9caec1
Commit
ab9caec1
authored
Apr 15, 2025
by
duwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
异常事件时空分布(拥堵、失衡、溢出、空放)
parent
f918a55a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
37 additions
and
9 deletions
+37
-9
SceneEvaluateController.java
...ava/net/wanji/opt/controller/SceneEvaluateController.java
+10
-1
SceneEvaluateServiceImpl.java
.../net/wanji/opt/service/impl/SceneEvaluateServiceImpl.java
+20
-7
RunningEvaluateMetricsDetailVO.java
...java/net/wanji/opt/vo/RunningEvaluateMetricsDetailVO.java
+1
-1
SceneEvaluateAbnormalDistributeVO.java
...a/net/wanji/opt/vo/SceneEvaluateAbnormalDistributeVO.java
+6
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/SceneEvaluateController.java
View file @
ab9caec1
package
net
.
wanji
.
opt
.
controller
;
import
cn.hutool.core.date.DateUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
...
...
@@ -13,6 +14,7 @@ import net.wanji.opt.bo.SceneMetricsDetailBO;
import
net.wanji.opt.service.impl.SceneEvaluateServiceImpl
;
import
net.wanji.opt.vo.*
;
import
net.wanji.opt.vo.SceneMetricsDetailVO
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -32,13 +34,15 @@ import java.util.List;
@RequestMapping
(
"/sceneEvaluate"
)
@RestController
public
class
SceneEvaluateController
{
@Value
(
"${mock.flag:false}"
)
private
boolean
isMock
=
false
;
private
final
SceneEvaluateServiceImpl
sceneEvaluateService
;
public
SceneEvaluateController
(
SceneEvaluateServiceImpl
sceneEvaluateService
)
{
this
.
sceneEvaluateService
=
sceneEvaluateService
;
}
@ApiOperation
(
value
=
"异常事件时空分布"
,
notes
=
"异常事件时空分布"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/abnormalDistribute"
,
...
...
@@ -47,6 +51,11 @@ public class SceneEvaluateController {
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SceneEvaluateAbnormalDistributeVO
.
class
),
})
public
JsonViewObject
abnormalDistribute
(
@RequestBody
CrossIdAndStartEndDateBO
bo
)
{
if
(
isMock
==
true
){
bo
.
setCrossId
(
"12Q5V099C30"
);
bo
.
setStartDate
(
DateUtil
.
parse
(
"2025-04-07 08:50:00"
,
"yyyy-MM-dd HH:mm:ss"
));
bo
.
setEndDate
(
DateUtil
.
parse
(
"2025-04-07 16:30:00"
,
"yyyy-MM-dd HH:mm:ss"
));
}
SceneEvaluateAbnormalDistributeVO
res
=
sceneEvaluateService
.
abnormalDistribute
(
bo
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/SceneEvaluateServiceImpl.java
View file @
ab9caec1
...
...
@@ -75,8 +75,11 @@ public class SceneEvaluateServiceImpl implements SceneEvaluateService {
Date
endDate
=
bo
.
getEndDate
();
SceneEvaluateAbnormalDistributeVO
vo
=
new
SceneEvaluateAbnormalDistributeVO
();
//日期,状态分布(路口状态:0正常;1失衡;2拥堵;3溢出;4死锁;5空放)
List
<
SceneEvaluateAbnormalDistributeVO
.
TimeDistribution
>
timeDistributionList
=
buildTimeDistributionList
(
crossId
,
startDate
,
endDate
);
vo
.
setTimeDateDistributionList
(
buildTimeDateDistributionList
(
timeDistributionList
));
setCounts
(
timeDistributionList
,
vo
);
...
...
@@ -1144,6 +1147,7 @@ public class SceneEvaluateServiceImpl implements SceneEvaluateService {
finalTimeDistributionList
.
sort
(
Comparator
.
comparing
(
SceneEvaluateAbnormalDistributeVO
.
FinalTimeDistribution
::
getProblemDate
)
.
thenComparing
(
SceneEvaluateAbnormalDistributeVO
.
FinalTimeDistribution
::
getDistributionTime
));
// 生成时间日期分布
List
<
SceneEvaluateAbnormalDistributeVO
.
TimeDateDistribution
>
timeDateDistributionList
=
new
ArrayList
<>();
List
<
String
>
minuteSectionArray
=
TimeArrayUtil
.
getMinuteSectionArray
(
5
);
...
...
@@ -1299,6 +1303,8 @@ public class SceneEvaluateServiceImpl implements SceneEvaluateService {
int
unbalanceTimes
=
0
;
int
spilloverDuration
=
0
;
int
spilloverTimes
=
0
;
int
emptyReleaseDuration
=
0
;
int
emptyReleaseTimes
=
0
;
for
(
SceneEvaluateAbnormalDistributeVO
.
TimeDistribution
timeDistribution
:
timeDistributionList
)
{
List
<
RunningEvaluateMetricsDetailVO
.
ProblemStatus
>
problemStatusList
=
timeDistribution
.
getProblemStatusList
();
...
...
@@ -1314,15 +1320,20 @@ public class SceneEvaluateServiceImpl implements SceneEvaluateService {
}
else
if
(
status
!=
null
&&
status
.
equals
(
CrossStatusEnum
.
SPILLOVER
.
getCode
()))
{
spilloverTimes
++;
spilloverDuration
+=
durationMinutes
;
}
else
if
(
status
!=
null
&&
status
.
equals
(
CrossStatusEnum
.
EMPTY_RELEASE
.
getCode
())){
emptyReleaseTimes
++;
emptyReleaseDuration
+=
durationMinutes
;
}
}
}
vo
.
setCongestionTimes
(
congestionTimes
);
vo
.
setUnbalanceTimes
(
unbalanceTimes
);
vo
.
setSpilloverTimes
(
spilloverTimes
);
vo
.
setCongestionDuration
(
congestionDuration
);
vo
.
setUnbalanceDuration
(
unbalanceDuration
);
vo
.
setSpilloverDuration
(
spilloverDuration
);
vo
.
setEmptyReleaseTimes
(
emptyReleaseTimes
);
vo
.
setCongestionDuration
(
congestionDuration
/
60
);
//数据库里是秒,这里转成分钟
vo
.
setUnbalanceDuration
(
unbalanceDuration
/
60
);
vo
.
setSpilloverDuration
(
spilloverDuration
/
60
);
vo
.
setEmptyReleaseDuration
(
emptyReleaseDuration
/
60
);
}
private
List
<
SceneEvaluateAbnormalDistributeVO
.
TimeDistribution
>
buildTimeDistributionList
(
...
...
@@ -1343,14 +1354,16 @@ public class SceneEvaluateServiceImpl implements SceneEvaluateService {
// 路口级别全量数据
Calendar
partEnd
=
(
Calendar
)
start
.
clone
();
partEnd
.
add
(
Calendar
.
DAY_OF_MONTH
,
1
);
int
startStamp
=
(
int
)(
start
.
getTimeInMillis
()
/
1000
);
int
endStamp
=
(
int
)(
partEnd
.
getTimeInMillis
()
/
1000
);
List
<
MetricHistDTO
>
crossDTOList
=
crossDataHistMapper
.
selectMetricHistDTO
(
crossId
,
startStamp
,
endStamp
);
// int startStamp = (int)(start.getTimeInMillis() / 1000);
// int endStamp = (int)(partEnd.getTimeInMillis() / 1000);
String
startTime
=
DateUtil
.
format
(
startDate
,
"yyyy-MM-dd HH:mm:ss"
);
String
endTime
=
DateUtil
.
format
(
endDate
,
"yyyy-MM-dd HH:mm:ss"
);
List
<
MetricHistDTO
>
crossDTOList
=
crossDataHistMapper
.
selectMetricHistDTO2
(
crossId
,
startTime
,
endTime
);
// 过滤有问题的记录
List
<
MetricHistDTO
>
filteredList
=
crossDTOList
.
stream
()
.
filter
(
metricHistDTO
->
metricHistDTO
.
getStatus
()
!=
null
&&
!
metricHistDTO
.
getStatus
().
equals
(
0
))
.
collect
(
Collectors
.
toList
());
timeDistribution
.
setProblemStatusList
(
runningEvaluateService
.
buildProblemStatusList
(
filteredList
));
res
.
add
(
timeDistribution
);
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/RunningEvaluateMetricsDetailVO.java
View file @
ab9caec1
...
...
@@ -30,7 +30,7 @@ public class RunningEvaluateMetricsDetailVO {
@NoArgsConstructor
@Data
public
static
class
ProblemStatus
{
@ApiModelProperty
(
value
=
"路口状态 0正常 1 失衡 2 拥堵 3 溢出
4
空放"
)
@ApiModelProperty
(
value
=
"路口状态 0正常 1 失衡 2 拥堵 3 溢出
5
空放"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"开始时间"
)
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/SceneEvaluateAbnormalDistributeVO.java
View file @
ab9caec1
...
...
@@ -23,12 +23,16 @@ public class SceneEvaluateAbnormalDistributeVO {
Integer
unbalanceTimes
;
@ApiModelProperty
(
value
=
"溢出次数"
)
Integer
spilloverTimes
;
@ApiModelProperty
(
value
=
"空放次数"
)
Integer
emptyReleaseTimes
;
@ApiModelProperty
(
value
=
"拥堵时长(分钟)"
)
Integer
congestionDuration
;
@ApiModelProperty
(
value
=
"失衡时长(分钟)"
)
Integer
unbalanceDuration
;
@ApiModelProperty
(
value
=
"溢出时长(分钟)"
)
Integer
spilloverDuration
;
@ApiModelProperty
(
value
=
"空放时长(分钟)"
)
Integer
emptyReleaseDuration
;
@ApiModelProperty
(
value
=
"时间日期分布"
)
List
<
TimeDateDistribution
>
timeDateDistributionList
;
...
...
@@ -91,5 +95,7 @@ public class SceneEvaluateAbnormalDistributeVO {
@ApiModelProperty
(
value
=
"是否拥堵 0否 1是"
)
private
Integer
isCongestion
=
0
;
@ApiModelProperty
(
value
=
"是否空放 0否 1是"
)
private
Integer
isEmptyRelease
=
0
;
}
}
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