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
7f50efb6
Commit
7f50efb6
authored
Aug 28, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 新信号评价-方案评价-异常事件时空分布
parent
d6d90541
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
215 additions
and
1 deletion
+215
-1
SceneEvaluateController.java
...ava/net/wanji/opt/controller/SceneEvaluateController.java
+46
-0
SceneEvaluateService.java
...main/java/net/wanji/opt/service/SceneEvaluateService.java
+9
-0
RunningEvaluateServiceImpl.java
...et/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
+1
-1
SceneEvaluateServiceImpl.java
.../net/wanji/opt/service/impl/SceneEvaluateServiceImpl.java
+112
-0
SceneEvaluateabnormalDistributeVO.java
...a/net/wanji/opt/vo/SceneEvaluateabnormalDistributeVO.java
+47
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/SceneEvaluateController.java
0 → 100644
View file @
7f50efb6
package
net
.
wanji
.
opt
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.bo.CrossIdAndStartEndDateBO
;
import
net.wanji.opt.service.impl.SceneEvaluateServiceImpl
;
import
net.wanji.opt.vo.SceneEvaluateabnormalDistributeVO
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.ws.rs.core.MediaType
;
/**
* 运行评价
*
* @author Kent HAN
*/
@Api
(
value
=
"SceneEvaluateController"
,
description
=
"场景评价"
)
@RequestMapping
(
"/sceneEvaluate"
)
@RestController
public
class
SceneEvaluateController
{
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"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SceneEvaluateabnormalDistributeVO
.
class
),
})
public
JsonViewObject
abnormalDistribute
(
@RequestBody
CrossIdAndStartEndDateBO
bo
)
{
SceneEvaluateabnormalDistributeVO
res
=
sceneEvaluateService
.
abnormalDistribute
(
bo
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/service/SceneEvaluateService.java
0 → 100644
View file @
7f50efb6
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.databus.bo.CrossIdAndStartEndDateBO
;
import
net.wanji.opt.vo.SceneEvaluateabnormalDistributeVO
;
public
interface
SceneEvaluateService
{
SceneEvaluateabnormalDistributeVO
abnormalDistribute
(
CrossIdAndStartEndDateBO
bo
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
View file @
7f50efb6
...
@@ -406,7 +406,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
...
@@ -406,7 +406,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
return
uniqueRes
;
return
uniqueRes
;
}
}
private
List
<
RunningEvaluateMetricsDetailVO
.
ProblemStatus
>
buildProblemStatusList
(
List
<
RunningEvaluateMetricsDetailVO
.
ProblemStatus
>
buildProblemStatusList
(
List
<
MetricHistDTO
>
metricHistDTOList
)
{
List
<
MetricHistDTO
>
metricHistDTOList
)
{
List
<
RunningEvaluateMetricsDetailVO
.
ProblemStatus
>
res
=
new
ArrayList
<>();
List
<
RunningEvaluateMetricsDetailVO
.
ProblemStatus
>
res
=
new
ArrayList
<>();
// 验证数据是否正确
// 验证数据是否正确
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/SceneEvaluateServiceImpl.java
0 → 100644
View file @
7f50efb6
package
net
.
wanji
.
opt
.
service
.
impl
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.enums.CrossStatusEnum
;
import
net.wanji.databus.bo.CrossIdAndStartEndDateBO
;
import
net.wanji.databus.dao.mapper.CrossDataHistMapper
;
import
net.wanji.databus.dto.MetricHistDTO
;
import
net.wanji.opt.service.SceneEvaluateService
;
import
net.wanji.opt.vo.RunningEvaluateMetricsDetailVO
;
import
net.wanji.opt.vo.SceneEvaluateabnormalDistributeVO
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @author Kent HAN
* @date 2023/8/28 16:38
*/
@Slf4j
@Service
public
class
SceneEvaluateServiceImpl
implements
SceneEvaluateService
{
private
final
CrossDataHistMapper
crossDataHistMapper
;
private
final
RunningEvaluateServiceImpl
runningEvaluateService
;
public
SceneEvaluateServiceImpl
(
CrossDataHistMapper
crossDataHistMapper
,
RunningEvaluateServiceImpl
runningEvaluateService
)
{
this
.
crossDataHistMapper
=
crossDataHistMapper
;
this
.
runningEvaluateService
=
runningEvaluateService
;
}
@Override
public
SceneEvaluateabnormalDistributeVO
abnormalDistribute
(
CrossIdAndStartEndDateBO
bo
)
{
String
crossId
=
bo
.
getCrossId
();
Date
startDate
=
bo
.
getStartDate
();
Date
endDate
=
bo
.
getEndDate
();
SceneEvaluateabnormalDistributeVO
vo
=
new
SceneEvaluateabnormalDistributeVO
();
List
<
SceneEvaluateabnormalDistributeVO
.
TimeDistribution
>
timeDistributionList
=
buildTimeDistributionList
(
crossId
,
startDate
,
endDate
);
vo
.
setTimeDistributionList
(
timeDistributionList
);
setCounts
(
timeDistributionList
,
vo
);
return
vo
;
}
private
static
void
setCounts
(
List
<
SceneEvaluateabnormalDistributeVO
.
TimeDistribution
>
timeDistributionList
,
SceneEvaluateabnormalDistributeVO
vo
)
{
int
congestionDuration
=
0
;
int
congestionTimes
=
0
;
int
unbalanceDuration
=
0
;
int
unbalanceTimes
=
0
;
int
spilloverDuration
=
0
;
int
spilloverTimes
=
0
;
for
(
SceneEvaluateabnormalDistributeVO
.
TimeDistribution
timeDistribution
:
timeDistributionList
)
{
List
<
RunningEvaluateMetricsDetailVO
.
ProblemStatus
>
problemStatusList
=
timeDistribution
.
getProblemStatusList
();
for
(
RunningEvaluateMetricsDetailVO
.
ProblemStatus
problemStatus
:
problemStatusList
)
{
Integer
status
=
problemStatus
.
getStatus
();
Integer
durationMinutes
=
problemStatus
.
getDurationMinutes
();
if
(
status
!=
null
&&
status
.
equals
(
CrossStatusEnum
.
CONGESTION
.
getCode
()))
{
congestionTimes
++;
congestionDuration
+=
durationMinutes
;
}
else
if
(
status
!=
null
&&
status
.
equals
(
CrossStatusEnum
.
UNBALANCE
.
getCode
()))
{
unbalanceTimes
++;
unbalanceDuration
+=
durationMinutes
;
}
else
if
(
status
!=
null
&&
status
.
equals
(
CrossStatusEnum
.
SPILLOVER
.
getCode
()))
{
spilloverTimes
++;
spilloverDuration
+=
durationMinutes
;
}
}
}
vo
.
setCongestionTimes
(
congestionTimes
);
vo
.
setUnbalanceTimes
(
unbalanceTimes
);
vo
.
setSpilloverTimes
(
spilloverTimes
);
vo
.
setCongestionDuration
(
congestionDuration
);
vo
.
setUnbalanceDuration
(
unbalanceDuration
);
vo
.
setSpilloverDuration
(
spilloverDuration
);
}
private
List
<
SceneEvaluateabnormalDistributeVO
.
TimeDistribution
>
buildTimeDistributionList
(
String
crossId
,
Date
startDate
,
Date
endDate
)
{
List
<
SceneEvaluateabnormalDistributeVO
.
TimeDistribution
>
res
=
new
ArrayList
<>();
Calendar
start
=
Calendar
.
getInstance
();
Calendar
end
=
Calendar
.
getInstance
();
start
.
setTime
(
startDate
);
end
.
setTime
(
endDate
);
// 使 endDate 包含在内
end
.
add
(
Calendar
.
DATE
,
1
);
for
(
Date
date
=
start
.
getTime
();
start
.
before
(
end
);
start
.
add
(
Calendar
.
DATE
,
1
),
date
=
start
.
getTime
())
{
SceneEvaluateabnormalDistributeVO
.
TimeDistribution
timeDistribution
=
new
SceneEvaluateabnormalDistributeVO
.
TimeDistribution
();
timeDistribution
.
setProblemDate
(
date
);
// 获取问题列表
// 路口级别全量数据
int
startStamp
=
(
int
)
(
startDate
.
getTime
()
/
1000
);
// 10位时间戳
int
endStamp
=
(
int
)
(
endDate
.
getTime
()
/
1000
);
List
<
MetricHistDTO
>
crossDTOList
=
crossDataHistMapper
.
selectMetricHistDTO
(
crossId
,
startStamp
,
endStamp
);
// 过滤有问题的记录
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
);
}
return
res
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/SceneEvaluateabnormalDistributeVO.java
0 → 100644
View file @
7f50efb6
package
net
.
wanji
.
opt
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2023/2/9 8:38
*/
@Data
@NoArgsConstructor
@ApiModel
(
value
=
"SceneEvaluateabnormalDistributeVO"
,
description
=
"异常事件时空分布"
)
public
class
SceneEvaluateabnormalDistributeVO
{
@ApiModelProperty
(
value
=
"拥堵次数"
)
Integer
congestionTimes
;
@ApiModelProperty
(
value
=
"失衡次数"
)
Integer
unbalanceTimes
;
@ApiModelProperty
(
value
=
"溢出次数"
)
Integer
spilloverTimes
;
@ApiModelProperty
(
value
=
"拥堵时长(分钟)"
)
Integer
congestionDuration
;
@ApiModelProperty
(
value
=
"失衡时长(分钟)"
)
Integer
unbalanceDuration
;
@ApiModelProperty
(
value
=
"溢出时长(分钟)"
)
Integer
spilloverDuration
;
@ApiModelProperty
(
value
=
"时间分布"
)
List
<
TimeDistribution
>
timeDistributionList
;
@NoArgsConstructor
@Data
public
static
class
TimeDistribution
{
@ApiModelProperty
(
value
=
"日期"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"M/d"
,
timezone
=
"GMT+8"
)
private
Date
problemDate
;
@ApiModelProperty
(
value
=
"状态列表"
)
private
List
<
RunningEvaluateMetricsDetailVO
.
ProblemStatus
>
problemStatusList
;
}
}
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