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
5a1eb2d0
Commit
5a1eb2d0
authored
Aug 21, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 新信号评价-运行评价-拥堵情况
parent
c9bb6cd6
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
100 additions
and
16 deletions
+100
-16
SignalEvaluateServiceImpl.java
...net/wanji/web/service/impl/SignalEvaluateServiceImpl.java
+1
-1
RunningEvaluateController.java
...a/net/wanji/opt/controller/RunningEvaluateController.java
+15
-2
RunningEvaluateService.java
...in/java/net/wanji/opt/service/RunningEvaluateService.java
+6
-2
RunningEvaluateServiceImpl.java
...et/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
+57
-9
RunningEvaluateCongestionStatusVO.java
...a/net/wanji/opt/vo/RunningEvaluateCongestionStatusVO.java
+19
-0
TimeArrayUtil.java
.../main/java/net/wanji/common/utils/tool/TimeArrayUtil.java
+1
-1
CrossIdAndStartEndDateBO.java
...n/java/net/wanji/databus/bo/CrossIdAndStartEndDateBO.java
+1
-1
No files found.
signal-control-service/src/main/java/net/wanji/web/service/impl/SignalEvaluateServiceImpl.java
View file @
5a1eb2d0
package
net
.
wanji
.
web
.
service
.
impl
;
import
net.wanji.
web.common.util.date
.TimeArrayUtil
;
import
net.wanji.
common.utils.tool
.TimeArrayUtil
;
import
net.wanji.web.mapper.FlowQueueMapper
;
import
net.wanji.web.po.FlowQueuePO
;
import
net.wanji.web.service.SignalEvaluateService
;
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controller/RunningEvaluateController.java
View file @
5a1eb2d0
...
...
@@ -5,10 +5,11 @@ 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.
RunningEvaluateCrossEvalu
ateBO
;
import
net.wanji.databus.bo.
CrossIdAndStartEndD
ateBO
;
import
net.wanji.databus.vo.RunningEvaluateCrossListVO
;
import
net.wanji.opt.bo.CrossNameBO
;
import
net.wanji.opt.service.impl.RunningEvaluateServiceImpl
;
import
net.wanji.opt.vo.RunningEvaluateCongestionStatusVO
;
import
net.wanji.opt.vo.RunningEvaluateCrossEvaluateVO
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
...
@@ -53,9 +54,21 @@ public class RunningEvaluateController {
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
RunningEvaluateCrossEvaluateVO
.
class
),
})
public
JsonViewObject
crossEvaluate
(
@RequestBody
RunningEvaluateCrossEvalu
ateBO
bo
)
{
public
JsonViewObject
crossEvaluate
(
@RequestBody
CrossIdAndStartEndD
ateBO
bo
)
{
RunningEvaluateCrossEvaluateVO
res
=
runningEvaluateService
.
crossEvaluate
(
bo
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
@ApiOperation
(
value
=
"拥堵情况"
,
notes
=
"拥堵情况"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/congestionStatus"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
RunningEvaluateCongestionStatusVO
.
class
),
})
public
JsonViewObject
congestionStatus
(
@RequestBody
CrossIdAndStartEndDateBO
bo
)
{
List
<
RunningEvaluateCongestionStatusVO
>
res
=
runningEvaluateService
.
congestionStatus
(
bo
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/service/RunningEvaluateService.java
View file @
5a1eb2d0
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.databus.bo.
RunningEvaluateCrossEvalu
ateBO
;
import
net.wanji.databus.bo.
CrossIdAndStartEndD
ateBO
;
import
net.wanji.databus.vo.RunningEvaluateCrossListVO
;
import
net.wanji.opt.bo.CrossNameBO
;
import
net.wanji.opt.vo.RunningEvaluateCongestionStatusVO
;
import
net.wanji.opt.vo.RunningEvaluateCrossEvaluateVO
;
import
java.util.List
;
...
...
@@ -10,5 +11,8 @@ import java.util.List;
public
interface
RunningEvaluateService
{
List
<
RunningEvaluateCrossListVO
>
crossList
(
CrossNameBO
crossNameBO
);
RunningEvaluateCrossEvaluateVO
crossEvaluate
(
RunningEvaluateCrossEvaluateBO
bo
);
RunningEvaluateCrossEvaluateVO
crossEvaluate
(
CrossIdAndStartEndDateBO
bo
);
List
<
RunningEvaluateCongestionStatusVO
>
congestionStatus
(
CrossIdAndStartEndDateBO
bo
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
View file @
5a1eb2d0
...
...
@@ -3,7 +3,8 @@ package net.wanji.opt.service.impl;
import
cn.hutool.core.date.DateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.CrossUtil
;
import
net.wanji.databus.bo.RunningEvaluateCrossEvaluateBO
;
import
net.wanji.common.utils.tool.TimeArrayUtil
;
import
net.wanji.databus.bo.CrossIdAndStartEndDateBO
;
import
net.wanji.databus.dao.entity.CrossSectionPO
;
import
net.wanji.databus.dao.mapper.BaseCrossSectionMapper
;
import
net.wanji.databus.dao.mapper.CrossDataHistMapper
;
...
...
@@ -13,10 +14,12 @@ import net.wanji.databus.po.CrossDataRealtimePO;
import
net.wanji.databus.vo.RunningEvaluateCrossListVO
;
import
net.wanji.opt.bo.CrossNameBO
;
import
net.wanji.opt.service.RunningEvaluateService
;
import
net.wanji.opt.vo.RunningEvaluateCongestionStatusVO
;
import
net.wanji.opt.vo.RunningEvaluateCrossEvaluateVO
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Service
;
import
java.text.DecimalFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -56,23 +59,17 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
}
@Override
public
RunningEvaluateCrossEvaluateVO
crossEvaluate
(
RunningEvaluateCrossEvalu
ateBO
bo
)
{
public
RunningEvaluateCrossEvaluateVO
crossEvaluate
(
CrossIdAndStartEndD
ateBO
bo
)
{
RunningEvaluateCrossEvaluateVO
vo
=
new
RunningEvaluateCrossEvaluateVO
();
String
crossId
=
bo
.
getCrossId
();
Date
startDate
=
bo
.
getStartDate
();
Date
endDate
=
bo
.
getEndDate
();
endDate
=
DateUtil
.
offsetDay
(
endDate
,
1
);
// 包含最后一天
List
<
CrossDataHistPO
>
crossDataHistPOList
=
buildCrossDataHistPOList
(
bo
,
crossId
);
CrossDataRealtimePO
crossDataRealtimePO
=
crossDataRealtimeMapper
.
selectByCrossId
(
crossId
);
Double
sturation
=
crossDataRealtimePO
.
getSturation
();
String
serviceLevel
=
CrossUtil
.
getServiceLevel
(
sturation
);
vo
.
setServiceLevel
(
serviceLevel
);
int
startStamp
=
(
int
)
(
startDate
.
getTime
()
/
1000
);
// 10位时间戳
int
endStamp
=
(
int
)
(
endDate
.
getTime
()
/
1000
);
List
<
CrossDataHistPO
>
crossDataHistPOList
=
crossDataHistMapper
.
selectByCrossIdAndStartEnd
(
crossId
,
startStamp
,
endStamp
);
List
<
CrossDataHistPO
>
congestionEventList
=
buildCongestionEvents
(
crossDataHistPOList
);
// 获取拥堵事件集合
vo
.
setCongestionTimes
(
congestionEventList
.
size
());
...
...
@@ -87,6 +84,57 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
return
vo
;
}
private
List
<
CrossDataHistPO
>
buildCrossDataHistPOList
(
CrossIdAndStartEndDateBO
bo
,
String
crossId
)
{
Date
startDate
=
bo
.
getStartDate
();
Date
endDate
=
bo
.
getEndDate
();
endDate
=
DateUtil
.
offsetDay
(
endDate
,
1
);
// 包含最后一天
int
startStamp
=
(
int
)
(
startDate
.
getTime
()
/
1000
);
// 10位时间戳
int
endStamp
=
(
int
)
(
endDate
.
getTime
()
/
1000
);
List
<
CrossDataHistPO
>
crossDataHistPOList
=
crossDataHistMapper
.
selectByCrossIdAndStartEnd
(
crossId
,
startStamp
,
endStamp
);
return
crossDataHistPOList
;
}
@Override
public
List
<
RunningEvaluateCongestionStatusVO
>
congestionStatus
(
CrossIdAndStartEndDateBO
bo
)
{
String
crossId
=
bo
.
getCrossId
();
List
<
CrossDataHistPO
>
crossDataHistPOList
=
buildCrossDataHistPOList
(
bo
,
crossId
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH"
);
Map
<
String
,
List
<
CrossDataHistPO
>>
timePOMap
=
crossDataHistPOList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
po
->
{
Date
date
=
new
Date
((
long
)
po
.
getBatchTime
()
*
1000
);
// 将10位时间戳转换为Date对象
return
sdf
.
format
(
date
);
// 将Date对象转换为"HH"格式的字符串
}));
// 构造结果集
List
<
RunningEvaluateCongestionStatusVO
>
res
=
new
ArrayList
<>();
List
<
String
>
timeArray
=
TimeArrayUtil
.
getTimeArray
();
for
(
String
time
:
timeArray
)
{
RunningEvaluateCongestionStatusVO
vo
=
new
RunningEvaluateCongestionStatusVO
();
vo
.
setTime
(
time
);
List
<
CrossDataHistPO
>
subList
=
timePOMap
.
get
(
time
.
substring
(
0
,
2
));
// 保留小时字符串
if
(
subList
!=
null
)
{
Double
avgCongestionIndex
=
calcAvgCongestionIndex
(
subList
);
vo
.
setCongestionIndex
(
avgCongestionIndex
);
}
res
.
add
(
vo
);
}
return
res
;
}
private
Double
calcAvgCongestionIndex
(
List
<
CrossDataHistPO
>
subList
)
{
double
average
=
subList
.
stream
()
.
mapToDouble
(
CrossDataHistPO:
:
getCongestionIndex
)
.
average
()
.
orElse
(
0.0
);
DecimalFormat
df
=
new
DecimalFormat
(
"#.00"
);
String
formattedAverage
=
df
.
format
(
average
);
return
Double
.
parseDouble
(
formattedAverage
);
}
private
Integer
calcSchemeProblems
(
List
<
CrossDataHistPO
>
congestionEventList
,
List
<
CrossDataHistPO
>
unbalanceEventList
,
List
<
CrossDataHistPO
>
spilloverEventList
,
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/RunningEvaluateCongestionStatusVO.java
0 → 100644
View file @
5a1eb2d0
package
net
.
wanji
.
opt
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@NoArgsConstructor
@Data
@ApiModel
(
value
=
"RunningEvaluateCongestionStatusVO"
,
description
=
"查询拥堵情况返回值"
)
public
class
RunningEvaluateCongestionStatusVO
{
@ApiModelProperty
(
value
=
"时间"
)
private
String
time
;
@ApiModelProperty
(
value
=
"拥堵指数"
)
private
Double
congestionIndex
;
}
signal-control-service/src/main/java/net/wanji/web/common/util/date
/TimeArrayUtil.java
→
wj-common/src/main/java/net/wanji/common/utils/tool
/TimeArrayUtil.java
View file @
5a1eb2d0
package
net
.
wanji
.
web
.
common
.
util
.
date
;
package
net
.
wanji
.
common
.
utils
.
tool
;
import
java.text.MessageFormat
;
import
java.util.ArrayList
;
...
...
wj-databus/src/main/java/net/wanji/databus/bo/
RunningEvaluateCrossEvalu
ateBO.java
→
wj-databus/src/main/java/net/wanji/databus/bo/
CrossIdAndStartEndD
ateBO.java
View file @
5a1eb2d0
...
...
@@ -7,7 +7,7 @@ import lombok.Data;
import
java.util.Date
;
@Data
public
class
RunningEvaluateCrossEvalu
ateBO
{
public
class
CrossIdAndStartEndD
ateBO
{
@ApiModelProperty
(
value
=
"路口ID"
)
private
String
crossId
;
...
...
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