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
28daef5b
Commit
28daef5b
authored
May 08, 2024
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 态势监测-入参优化
parent
5c4624a2
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
126 additions
and
14 deletions
+126
-14
TrendController.java
...c/main/java/net/wanji/opt/controller/TrendController.java
+18
-6
TrendService.java
...ice/src/main/java/net/wanji/opt/service/TrendService.java
+5
-3
TrendServiceImpl.java
...ain/java/net/wanji/opt/service/impl/TrendServiceImpl.java
+57
-5
CommonCrossIdVO.java
...rvice/src/main/java/net/wanji/opt/vo/CommonCrossIdVO.java
+18
-0
CrossStatusTimeRateVO.java
...src/main/java/net/wanji/opt/vo/CrossStatusTimeRateVO.java
+28
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/TrendController.java
View file @
28daef5b
...
@@ -226,8 +226,8 @@ public class TrendController {
...
@@ -226,8 +226,8 @@ public class TrendController {
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
List
.
class
),
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
List
.
class
),
})
})
public
JsonViewObject
hotspotCross
(
@RequestBody
String
crossId
)
throws
Exception
{
public
JsonViewObject
hotspotCross
(
@RequestBody
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
{
List
<
HotspotCrossVO
>
hotspotCrossVOS
=
trendService
.
hotspotCross
(
c
rossId
);
List
<
HotspotCrossVO
>
hotspotCrossVOS
=
trendService
.
hotspotCross
(
c
ommonCrossIdVO
);
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
}
}
...
@@ -238,8 +238,8 @@ public class TrendController {
...
@@ -238,8 +238,8 @@ public class TrendController {
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
List
.
class
),
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
List
.
class
),
})
})
public
JsonViewObject
crossTurnData
(
@RequestBody
String
crossId
)
throws
Exception
{
public
JsonViewObject
crossTurnData
(
@RequestBody
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
{
List
<
HotspotCrossTurnVO
>
hotspotCrossVOS
=
trendService
.
crossTurnData
(
c
rossId
);
List
<
HotspotCrossTurnVO
>
hotspotCrossVOS
=
trendService
.
crossTurnData
(
c
ommonCrossIdVO
);
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
}
}
...
@@ -250,8 +250,8 @@ public class TrendController {
...
@@ -250,8 +250,8 @@ public class TrendController {
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
List
.
class
),
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
List
.
class
),
})
})
public
JsonViewObject
crossLaneData
(
@RequestBody
String
crossId
)
throws
Exception
{
public
JsonViewObject
crossLaneData
(
@RequestBody
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
{
List
<
HotspotCrossLaneVO
>
hotspotCrossVOS
=
trendService
.
crossLaneData
(
c
rossId
);
List
<
HotspotCrossLaneVO
>
hotspotCrossVOS
=
trendService
.
crossLaneData
(
c
ommonCrossIdVO
);
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
}
}
...
@@ -262,4 +262,16 @@ public class TrendController {
...
@@ -262,4 +262,16 @@ public class TrendController {
List
<
RunningEvaluateMetricsDetailVO
>
hotspotCrossVOS
=
trendService
.
top5Flow
();
List
<
RunningEvaluateMetricsDetailVO
>
hotspotCrossVOS
=
trendService
.
top5Flow
();
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
}
}
@ApiOperation
(
value
=
"路口交通状态"
,
notes
=
"路口交通状态时长比例"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/crossStatusTimeRate"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossStatusTimeRateVO
.
class
),
})
public
JsonViewObject
crossStatusTimeRate
(
@RequestBody
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
{
CrossStatusTimeRateVO
crossStatusTimeRateVO
=
trendService
.
crossStatusTimeRate
(
commonCrossIdVO
);
return
JsonViewObject
.
newInstance
().
success
(
crossStatusTimeRateVO
);
}
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/service/TrendService.java
View file @
28daef5b
...
@@ -47,11 +47,13 @@ public interface TrendService {
...
@@ -47,11 +47,13 @@ public interface TrendService {
OptTypeVO
optType
(
CrossIdBO
crossIdBO
);
OptTypeVO
optType
(
CrossIdBO
crossIdBO
);
List
<
HotspotCrossVO
>
hotspotCross
(
String
crossId
)
throws
Exception
;
List
<
HotspotCrossVO
>
hotspotCross
(
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
;
List
<
HotspotCrossTurnVO
>
crossTurnData
(
String
crossId
)
throws
Exception
;
List
<
HotspotCrossTurnVO
>
crossTurnData
(
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
;
List
<
HotspotCrossLaneVO
>
crossLaneData
(
String
crossId
)
throws
Exception
;
List
<
HotspotCrossLaneVO
>
crossLaneData
(
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
;
List
<
RunningEvaluateMetricsDetailVO
>
top5Flow
()
throws
Exception
;
List
<
RunningEvaluateMetricsDetailVO
>
top5Flow
()
throws
Exception
;
CrossStatusTimeRateVO
crossStatusTimeRate
(
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/TrendServiceImpl.java
View file @
28daef5b
...
@@ -1680,8 +1680,9 @@ public class TrendServiceImpl implements TrendService {
...
@@ -1680,8 +1680,9 @@ public class TrendServiceImpl implements TrendService {
@Override
@Override
public
List
<
HotspotCrossVO
>
hotspotCross
(
String
crossId
)
throws
Exception
{
public
List
<
HotspotCrossVO
>
hotspotCross
(
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
{
try
{
try
{
String
crossId
=
commonCrossIdVO
.
getCrossId
();
List
<
HotspotCrossVO
>
hotspotCrossVOS
=
new
ArrayList
<>();
List
<
HotspotCrossVO
>
hotspotCrossVOS
=
new
ArrayList
<>();
List
<
AbnormalCrossListVO
>
signalCrossRealTimeList
=
List
<
AbnormalCrossListVO
>
signalCrossRealTimeList
=
crossDataRealtimeMapper
.
selectAbnormalCross
(
null
,
null
,
null
);
crossDataRealtimeMapper
.
selectAbnormalCross
(
null
,
null
,
null
);
...
@@ -1704,7 +1705,7 @@ public class TrendServiceImpl implements TrendService {
...
@@ -1704,7 +1705,7 @@ public class TrendServiceImpl implements TrendService {
histQuery
.
eq
(
CrossDirDataHistPO:
:
getCrossId
,
abnormalCrossListVO
.
getId
())
histQuery
.
eq
(
CrossDirDataHistPO:
:
getCrossId
,
abnormalCrossListVO
.
getId
())
.
between
(
CrossDirDataHistPO:
:
getBatchTime
,
abnormalCrossListVO
.
getBatchTime
()
-
3600
,
abnormalCrossListVO
.
getBatchTime
());
.
between
(
CrossDirDataHistPO:
:
getBatchTime
,
abnormalCrossListVO
.
getBatchTime
()
-
3600
,
abnormalCrossListVO
.
getBatchTime
());
List
<
CrossDirDataHistPO
>
histPOS
=
crossDirDataHistMapper
.
selectList
(
histQuery
);
List
<
CrossDirDataHistPO
>
histPOS
=
crossDirDataHistMapper
.
selectList
(
histQuery
);
if
(!
CollectionUtils
.
isEmpty
(
histPOS
)
)
{
if
(!
CollectionUtils
.
isEmpty
(
histPOS
))
{
Map
<
Date
,
List
<
CrossDirDataHistPO
>>
map
=
histPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDirDataHistPO:
:
getStartTime
));
Map
<
Date
,
List
<
CrossDirDataHistPO
>>
map
=
histPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDirDataHistPO:
:
getStartTime
));
if
(!
map
.
isEmpty
())
{
if
(!
map
.
isEmpty
())
{
for
(
Map
.
Entry
<
Date
,
List
<
CrossDirDataHistPO
>>
entry
:
map
.
entrySet
())
{
for
(
Map
.
Entry
<
Date
,
List
<
CrossDirDataHistPO
>>
entry
:
map
.
entrySet
())
{
...
@@ -1738,9 +1739,10 @@ public class TrendServiceImpl implements TrendService {
...
@@ -1738,9 +1739,10 @@ public class TrendServiceImpl implements TrendService {
}
}
@Override
@Override
public
List
<
HotspotCrossTurnVO
>
crossTurnData
(
String
crossId
)
throws
Exception
{
public
List
<
HotspotCrossTurnVO
>
crossTurnData
(
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
{
List
<
HotspotCrossTurnVO
>
results
=
new
ArrayList
<>();
List
<
HotspotCrossTurnVO
>
results
=
new
ArrayList
<>();
try
{
try
{
String
crossId
=
commonCrossIdVO
.
getCrossId
();
Date
date
=
new
Date
(
1705456500000L
);
Date
date
=
new
Date
(
1705456500000L
);
long
dateTime
=
date
.
getTime
()
/
1000
;
long
dateTime
=
date
.
getTime
()
/
1000
;
LambdaQueryWrapper
<
CrossTurnDataHistPO
>
turnQuery
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
CrossTurnDataHistPO
>
turnQuery
=
new
LambdaQueryWrapper
<>();
...
@@ -1776,13 +1778,14 @@ public class TrendServiceImpl implements TrendService {
...
@@ -1776,13 +1778,14 @@ public class TrendServiceImpl implements TrendService {
}
}
@Override
@Override
public
List
<
HotspotCrossLaneVO
>
crossLaneData
(
String
crossId
)
throws
Exception
{
public
List
<
HotspotCrossLaneVO
>
crossLaneData
(
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
{
List
<
HotspotCrossLaneVO
>
results
=
new
ArrayList
<>();
List
<
HotspotCrossLaneVO
>
results
=
new
ArrayList
<>();
try
{
try
{
String
crossId
=
commonCrossIdVO
.
getCrossId
();
Date
date
=
new
Date
(
1705456500000L
);
Date
date
=
new
Date
(
1705456500000L
);
long
dateTime
=
date
.
getTime
()
/
1000
;
long
dateTime
=
date
.
getTime
()
/
1000
;
List
<
CrossLaneDataHistPOExt
>
crossLaneDataHistPOS
=
List
<
CrossLaneDataHistPOExt
>
crossLaneDataHistPOS
=
crossLaneDataHistMapper
.
selectByCrossIdAndTimeSpan
(
crossId
,
(
int
)
(
dateTime
-
3600
),
(
int
)
dateTime
);
crossLaneDataHistMapper
.
selectByCrossIdAndTimeSpan
(
crossId
,
(
int
)
(
dateTime
-
3600
),
(
int
)
dateTime
);
if
(!
CollectionUtils
.
isEmpty
(
crossLaneDataHistPOS
))
{
if
(!
CollectionUtils
.
isEmpty
(
crossLaneDataHistPOS
))
{
Map
<
Date
,
List
<
CrossLaneDataHistPOExt
>>
collect
=
crossLaneDataHistPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossLaneDataHistPOExt:
:
getStartTime
));
Map
<
Date
,
List
<
CrossLaneDataHistPOExt
>>
collect
=
crossLaneDataHistPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossLaneDataHistPOExt:
:
getStartTime
));
for
(
Map
.
Entry
<
Date
,
List
<
CrossLaneDataHistPOExt
>>
entry
:
collect
.
entrySet
())
{
for
(
Map
.
Entry
<
Date
,
List
<
CrossLaneDataHistPOExt
>>
entry
:
collect
.
entrySet
())
{
...
@@ -1847,4 +1850,53 @@ public class TrendServiceImpl implements TrendService {
...
@@ -1847,4 +1850,53 @@ public class TrendServiceImpl implements TrendService {
}
}
return
hotspotCrossVOS
;
return
hotspotCrossVOS
;
}
}
@Override
public
CrossStatusTimeRateVO
crossStatusTimeRate
(
CommonCrossIdVO
commonCrossIdVO
)
throws
Exception
{
CrossStatusTimeRateVO
crossStatusTimeRateVO
=
new
CrossStatusTimeRateVO
();
try
{
String
crossId
=
commonCrossIdVO
.
getCrossId
();
Instant
instant
=
Instant
.
ofEpochSecond
(
1705456500L
);
LocalDateTime
localDateTime
=
LocalDateTime
.
ofInstant
(
instant
,
ZoneId
.
of
(
"+8"
));
// 00:00
LocalDateTime
startOfDay
=
localDateTime
.
withHour
(
0
).
withMinute
(
0
).
withSecond
(
0
);
int
startBatchTime
=
Long
.
valueOf
(
Date
.
from
(
startOfDay
.
atZone
(
ZoneId
.
of
(
"+8"
)).
toInstant
()).
getTime
()
/
1000
).
intValue
();
// 23:59
LocalDateTime
endOfDay
=
startOfDay
.
plus
(
1
,
ChronoUnit
.
DAYS
).
minus
(
1
,
ChronoUnit
.
SECONDS
);
int
endBatchTime
=
Long
.
valueOf
(
Date
.
from
(
endOfDay
.
atZone
(
ZoneId
.
of
(
"+8"
)).
toInstant
()).
getTime
()
/
1000
).
intValue
();
List
<
CrossDataHistPO
>
crossDataHistPOS
=
crossDataHistMapper
.
selectByCrossIdAndStartEnd
(
crossId
,
startBatchTime
,
endBatchTime
);
if
(!
CollectionUtils
.
isEmpty
(
crossDataHistPOS
))
{
Map
<
Integer
,
List
<
CrossDataHistPO
>>
statusMap
=
crossDataHistPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataHistPO:
:
getStatus
));
crossStatusTimeRateVO
.
setCrossId
(
crossId
);
for
(
Map
.
Entry
<
Integer
,
List
<
CrossDataHistPO
>>
entry
:
statusMap
.
entrySet
())
{
Integer
status
=
entry
.
getKey
();
List
<
CrossDataHistPO
>
value
=
entry
.
getValue
();
float
temp
=
value
.
size
()
/
(
float
)
crossDataHistPOS
.
size
()
*
100
;
temp
=
temp
<
1
?
0
:
temp
;
int
rate
=
Math
.
round
(
temp
);
if
(
status
==
0
)
{
crossStatusTimeRateVO
.
setUnblockedTimeRate
(
rate
);
}
if
(
status
==
1
)
{
crossStatusTimeRateVO
.
setUnbalanceTimeRate
(
rate
);
}
if
(
status
==
2
)
{
crossStatusTimeRateVO
.
setCongestionTimeRate
(
rate
);
}
if
(
status
==
3
)
{
crossStatusTimeRateVO
.
setSpilloverTimeRate
(
rate
);
}
if
(
status
==
5
)
{
crossStatusTimeRateVO
.
setPhaseEmptyTimeRate
(
rate
);
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"交通状态时间比例异常:"
,
e
);
throw
new
RuntimeException
(
e
);
}
return
crossStatusTimeRateVO
;
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/CommonCrossIdVO.java
0 → 100644
View file @
28daef5b
package
net
.
wanji
.
opt
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author duanruiming
* @date 2024/05/08 15:06
*/
@Data
@NoArgsConstructor
@ApiModel
(
value
=
"CommonCrossIdVO"
)
public
class
CommonCrossIdVO
{
@ApiModelProperty
(
value
=
"路口ID"
)
private
String
crossId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/CrossStatusTimeRateVO.java
0 → 100644
View file @
28daef5b
package
net
.
wanji
.
opt
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author duanruiming
* @date 2024/05/08 10:13
*/
@Data
@NoArgsConstructor
@ApiModel
(
value
=
"crossStatusTimeRateVO"
)
public
class
CrossStatusTimeRateVO
{
@ApiModelProperty
(
value
=
"路口ID"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"溢出时长比例"
)
private
int
spilloverTimeRate
;
@ApiModelProperty
(
value
=
"拥堵时长比例"
)
private
int
congestionTimeRate
;
@ApiModelProperty
(
value
=
"失衡时长比例"
)
private
int
unbalanceTimeRate
;
@ApiModelProperty
(
value
=
"相位空放时长比例"
)
private
int
phaseEmptyTimeRate
;
@ApiModelProperty
(
value
=
"畅通时长比例"
)
private
int
unblockedTimeRate
;
}
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