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
a1e76031
Commit
a1e76031
authored
Dec 13, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 修改全息信号评价接口
parent
ada82b8f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
55 deletions
+30
-55
EvaluateServiceImpl.java
.../java/net/wanji/opt/service/impl/EvaluateServiceImpl.java
+23
-35
EvaluateCrossDetailVO.java
...src/main/java/net/wanji/opt/vo/EvaluateCrossDetailVO.java
+7
-20
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/EvaluateServiceImpl.java
View file @
a1e76031
...
@@ -2,7 +2,6 @@ package net.wanji.opt.service.impl;
...
@@ -2,7 +2,6 @@ package net.wanji.opt.service.impl;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.gson.Gson
;
import
com.google.gson.Gson
;
import
com.google.gson.GsonBuilder
;
import
com.google.gson.GsonBuilder
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -16,8 +15,6 @@ import net.wanji.databus.po.CrossDirDataRealtimePO;
...
@@ -16,8 +15,6 @@ import net.wanji.databus.po.CrossDirDataRealtimePO;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper
;
import
net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper
;
import
net.wanji.opt.dto.CrossIdAndMinutesDTO
;
import
net.wanji.opt.dto.CrossIdAndMinutesDTO
;
import
net.wanji.opt.dto.OptDataExtend
;
import
net.wanji.opt.po.base.CrossSchemeOptLogPO
;
import
net.wanji.opt.service.EvaluateService
;
import
net.wanji.opt.service.EvaluateService
;
import
net.wanji.opt.vo.EvaluateCrossDetailVO
;
import
net.wanji.opt.vo.EvaluateCrossDetailVO
;
import
net.wanji.opt.vo.EvaluateMetricsVO
;
import
net.wanji.opt.vo.EvaluateMetricsVO
;
...
@@ -63,7 +60,6 @@ public class EvaluateServiceImpl implements EvaluateService {
...
@@ -63,7 +60,6 @@ public class EvaluateServiceImpl implements EvaluateService {
String
crossName
=
crossInfoPO
.
getName
();
String
crossName
=
crossInfoPO
.
getName
();
evaluateCrossDetailVO
.
setCrossName
(
crossName
);
evaluateCrossDetailVO
.
setCrossName
(
crossName
);
fillOptData
(
evaluateCrossDetailVO
,
crossId
);
Integer
minutes
=
crossIdAndMinutesDTO
.
getMinutes
();
Integer
minutes
=
crossIdAndMinutesDTO
.
getMinutes
();
fillRealtimeData
(
evaluateCrossDetailVO
,
crossId
,
minutes
);
fillRealtimeData
(
evaluateCrossDetailVO
,
crossId
,
minutes
);
...
@@ -245,47 +241,39 @@ public class EvaluateServiceImpl implements EvaluateService {
...
@@ -245,47 +241,39 @@ public class EvaluateServiceImpl implements EvaluateService {
private
void
fillRealtimeData
(
EvaluateCrossDetailVO
evaluateCrossDetailVO
,
String
crossId
,
Integer
minutes
)
{
private
void
fillRealtimeData
(
EvaluateCrossDetailVO
evaluateCrossDetailVO
,
String
crossId
,
Integer
minutes
)
{
CrossDataRealtimePO
crossDataRealtimePO
=
crossDataRealtimeMapper
.
selectByCrossId
(
crossId
);
CrossDataRealtimePO
crossDataRealtimePO
=
crossDataRealtimeMapper
.
selectByCrossId
(
crossId
);
evaluateCrossDetailVO
.
setSceneStartTime
(
crossDataRealtimePO
.
getStartTime
());
evaluateCrossDetailVO
.
setDuration
(
crossDataRealtimePO
.
getDuration
());
// 服务水平
// 计算服务水平
Double
sturation
=
crossDataRealtimePO
.
getSturation
();
Double
sturation
=
crossDataRealtimePO
.
getSturation
();
String
serviceLevel
=
CrossUtil
.
getServiceLevel
(
sturation
);
String
serviceLevel
=
CrossUtil
.
getServiceLevel
(
sturation
);
evaluateCrossDetailVO
.
setServiceLevel
(
serviceLevel
);
evaluateCrossDetailVO
.
setServiceLevel
(
serviceLevel
);
// 计算路口流量
// 获取当前时间之前某分钟的10位时间戳
// 路口流量
// 获取当前时间前 minutes 分钟的10位时间戳
long
currentSeconds
=
DateUtil
.
currentSeconds
();
long
currentSeconds
=
DateUtil
.
currentSeconds
();
// todo 测试用 固定当前时间为1676082800
long
preSeconds
=
currentSeconds
-
(
minutes
+
5
)
*
60L
;
currentSeconds
=
1676082800
;
long
preSeconds
=
currentSeconds
-
minutes
*
60
;
List
<
CrossDataHistPO
>
crossDataHistPOS
=
crossDataHistMapper
.
selectByCrossIdAndTimestamp
(
crossId
,
preSeconds
);
List
<
CrossDataHistPO
>
crossDataHistPOS
=
crossDataHistMapper
.
selectByCrossIdAndTimestamp
(
crossId
,
preSeconds
);
if
(
CollectionUtil
.
isNotEmpty
(
crossDataHistPOS
))
{
if
(
CollectionUtil
.
isNotEmpty
(
crossDataHistPOS
))
{
// 路口流量
double
avg
=
crossDataHistPOS
.
stream
()
double
avg
=
crossDataHistPOS
.
stream
()
.
mapToInt
(
CrossDataHistPO:
:
getFlow
)
.
mapToInt
(
CrossDataHistPO:
:
getFlow
)
.
average
().
orElse
(
0.0
);
.
average
().
orElse
(
0.0
);
evaluateCrossDetailVO
.
setFlow
((
int
)
avg
);
evaluateCrossDetailVO
.
setFlow
((
int
)
Math
.
round
(
avg
));
// 最大排队长度
double
maxQueue
=
crossDataHistPOS
.
stream
()
.
mapToDouble
(
CrossDataHistPO:
:
getQueueLength
)
.
max
().
orElse
(
0.0
);
evaluateCrossDetailVO
.
setLength
((
int
)
Math
.
round
(
maxQueue
));
// 路口平均延误
double
avgDelay
=
crossDataHistPOS
.
stream
()
.
mapToInt
(
CrossDataHistPO:
:
getDelayTime
)
.
average
().
orElse
(
0.0
);
evaluateCrossDetailVO
.
setDelayTime
((
int
)
Math
.
round
(
avgDelay
));
// 路口平均速度
double
avgSpeed
=
crossDataHistPOS
.
stream
()
.
mapToDouble
(
CrossDataHistPO:
:
getSpeed
)
.
average
().
orElse
(
0.0
);
evaluateCrossDetailVO
.
setSpeed
((
int
)
Math
.
round
(
avgSpeed
));
}
}
evaluateCrossDetailVO
.
setLength
(
crossDataRealtimePO
.
getQueueLength
());
evaluateCrossDetailVO
.
setStopTimes
(
crossDataRealtimePO
.
getStopTimes
());
}
}
private
void
fillOptData
(
EvaluateCrossDetailVO
evaluateCrossDetailVO
,
String
crossId
)
{
// 选择数据批次时间最大的记录
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
if
(
CollectionUtil
.
isNotEmpty
(
maxList
))
{
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
// 解析dataExtend
String
dataExtend
=
crossSchemeOptLogPO
.
getDataExtend
();
OptDataExtend
optDataExtend
=
gson
.
fromJson
(
dataExtend
,
OptDataExtend
.
class
);
evaluateCrossDetailVO
.
setSceneName
(
optDataExtend
.
getSceneName
());
evaluateCrossDetailVO
.
setStrategyName
(
optDataExtend
.
getStrategyName
());
evaluateCrossDetailVO
.
setIdeaName
(
optDataExtend
.
getIdeaName
());
evaluateCrossDetailVO
.
setOptStartTime
(
crossSchemeOptLogPO
.
getStartTime
());
Date
endTime
=
crossSchemeOptLogPO
.
getEndTime
();
if
(
ObjectUtil
.
isEmpty
(
endTime
))
{
evaluateCrossDetailVO
.
setOptStatus
(
2
);
}
else
{
evaluateCrossDetailVO
.
setOptStatus
(
1
);
}
}
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/EvaluateCrossDetailVO.java
View file @
a1e76031
...
@@ -18,30 +18,17 @@ import java.util.Date;
...
@@ -18,30 +18,17 @@ import java.util.Date;
public
class
EvaluateCrossDetailVO
{
public
class
EvaluateCrossDetailVO
{
@ApiModelProperty
(
value
=
"路口名称"
)
@ApiModelProperty
(
value
=
"路口名称"
)
private
String
crossName
;
private
String
crossName
;
@ApiModelProperty
(
value
=
"当前场景"
)
private
String
sceneName
;
@ApiModelProperty
(
value
=
"优化策略"
)
private
String
strategyName
;
@ApiModelProperty
(
value
=
"优化方法"
)
private
String
ideaName
;
@ApiModelProperty
(
value
=
"场景开始时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy/MM/dd HH:mm"
,
timezone
=
"GMT+8"
)
private
Date
sceneStartTime
;
@ApiModelProperty
(
value
=
"持续时间(单位:分钟)"
)
private
Integer
duration
;
@ApiModelProperty
(
value
=
"优化开始时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy/MM/dd HH:mm"
,
timezone
=
"GMT+8"
)
private
Date
optStartTime
;
@ApiModelProperty
(
value
=
"优化状态 1已完成 2持续优化"
)
Integer
optStatus
;
@ApiModelProperty
(
value
=
"服务水平"
)
@ApiModelProperty
(
value
=
"服务水平"
)
String
serviceLevel
;
String
serviceLevel
;
@ApiModelProperty
(
value
=
"路口流量"
)
@ApiModelProperty
(
value
=
"路口流量"
)
private
Integer
flow
;
private
Integer
flow
;
@ApiModelProperty
(
value
=
"排队长度"
)
private
Double
length
;
@ApiModelProperty
(
value
=
"最大排队长度"
)
@ApiModelProperty
(
value
=
"停车次数(次)"
)
private
Integer
length
;
private
Double
stopTimes
;
@ApiModelProperty
(
value
=
"路口平均延误"
)
private
Integer
delayTime
;
@ApiModelProperty
(
value
=
"路口平均速度"
)
private
Integer
speed
;
@ApiModelProperty
(
value
=
"轨迹开始时间"
)
@ApiModelProperty
(
value
=
"轨迹开始时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
...
...
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