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
52db54e5
Commit
52db54e5
authored
Oct 13, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 态势监测--子区详情修改
parent
b1c32ebd
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
124 additions
and
6 deletions
+124
-6
TrendController.java
...c/main/java/net/wanji/opt/controller/TrendController.java
+13
-1
TrendService.java
...ice/src/main/java/net/wanji/opt/service/TrendService.java
+2
-0
TrendServiceImpl.java
...ain/java/net/wanji/opt/service/impl/TrendServiceImpl.java
+109
-5
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/TrendController.java
View file @
52db54e5
...
...
@@ -67,7 +67,7 @@ public class TrendController {
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
@ApiOperation
(
value
=
"
子区详情"
,
notes
=
"子区
详情"
,
response
=
JsonViewObject
.
class
,
@ApiOperation
(
value
=
"
干线方案详情"
,
notes
=
"干线方案
详情"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/greenwaveDetail"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
...
...
@@ -79,6 +79,18 @@ public class TrendController {
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
@ApiOperation
(
value
=
"干线当前详情"
,
notes
=
"干线当前详情"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/currentGreenwaveDetail"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
GreenwaveDetailVO
.
class
),
})
public
JsonViewObject
currentGreenwaveDetail
(
@RequestBody
GreenwaveIdBO
bo
)
throws
ParseException
{
GreenwaveDetailVO
res
=
trendService
.
currentGreenwaveDetail
(
bo
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
@ApiOperation
(
value
=
"保存子区策略"
,
notes
=
"保存子区策略"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/saveGreenwaveStrategy"
,
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/TrendService.java
View file @
52db54e5
...
...
@@ -38,4 +38,6 @@ public interface TrendService {
List
<
GreenwaveCrossMetricsVO
>
greenwaveCrossMetrics
(
GreenwaveIdAndTimeStampBO
greenwaveIdAndTimeStampBO
);
void
saveGreenwaveStrategy
(
SaveGreenwaveStrategyBO
saveGreenwaveStrategyBO
);
GreenwaveDetailVO
currentGreenwaveDetail
(
GreenwaveIdBO
bo
)
throws
ParseException
;
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/TrendServiceImpl.java
View file @
52db54e5
...
...
@@ -11,10 +11,7 @@ import net.wanji.databus.dao.entity.*;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.po.*
;
import
net.wanji.databus.vo.AbnormalCrossListVO
;
import
net.wanji.opt.bo.GreenwaveIdAndTimeStampBO
;
import
net.wanji.opt.bo.GreenwaveIdBO
;
import
net.wanji.opt.bo.GreenwaveNameBO
;
import
net.wanji.opt.bo.SaveGreenwaveStrategyBO
;
import
net.wanji.opt.bo.*
;
import
net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper
;
import
net.wanji.opt.dao.mapper.strategy.SceneMapper
;
import
net.wanji.opt.dao.mapper.strategy.SceneStrategyIdeaMapper
;
...
...
@@ -39,6 +36,8 @@ import java.text.ParseException;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -74,6 +73,7 @@ public class TrendServiceImpl implements TrendService {
private
final
SceneStrategyMapper
sceneStrategyMapper
;
private
final
SceneMapper
sceneMapper
;
private
final
BaseCrossPlanMapper
baseCrossPlanMapper
;
private
final
MainlineEvaluateServiceImpl
mainlineEvaluateServiceImpl
;
// 用于计算路口状态,key为方向,value为状态
private
Map
<
Integer
,
Integer
>
preStatus
=
new
HashMap
<
Integer
,
Integer
>()
{{
...
...
@@ -94,7 +94,7 @@ public class TrendServiceImpl implements TrendService {
CrossTurnDataRealtimeMapper
crossTurnDataRealtimeMapper
,
CrossDirDataHistMapper
crossDirDataHistMapper
,
EventAlarmMapper
eventAlarmMapper
,
RidInfoMapper
ridInfoMapper
,
BaseCrossDirInfoMapper
baseCrossDirInfoMapper
,
CrossSchemeOptLogMapper
crossSchemeOptLogMapper
,
GreenwaveCrossMapper
greenwaveCrossMapper
,
CrossDirDataRealtimeMapper
crossDirDataRealtimeMapper
,
GreenwaveHistMapper
greenwaveHistMapper
,
GreenwaveRealtimeMapper
greenwaveRealtimeMapper
,
SceneStrategyIdeaMapper
strategyIdeaMapper
,
StrategyMapper
strategyMapper
,
BaseCrossSchedulesMapper
baseCrossSchedulesMapper
,
BaseCrossSchedulesPlanMapper
baseCrossSchedulesPlanMapper
,
BaseCrossSectionMapper
baseCrossSectionMapper
,
BaseCrossSchemeMapper
crossSchemeMapper
,
BaseCrossSchemeMapper
baseCrossSchemeMapper
,
BaseCrossPhaseMapper
baseCrossPhaseMapper
,
BaseCrossPhaseLightsMapper
crossPhaseLightsMapper
,
BaseCrossLaneLightsMapper
baseCrossLaneLightsMapper
,
CrossBaseLaneInfoMapper
crossBaseLaneInfoMapper
,
CrossTurnDataHistMapper
crossTurnDataHistMapper
,
@Qualifier
(
"greenwaveSceneMapper"
)
GreenwaveSceneMapper
greenwaveSceneMapper
,
@Qualifier
(
"sceneStrategyMapper"
)
SceneStrategyMapper
sceneStrategyMapper
,
@Qualifier
(
"sceneMapper"
)
SceneMapper
sceneMapper
,
@Qualifier
(
"baseCrossPlanMapper"
)
BaseCrossPlanMapper
baseCrossPlanMapper
)
{
CrossSchemeOptLogMapper
crossSchemeOptLogMapper
,
GreenwaveCrossMapper
greenwaveCrossMapper
,
CrossDirDataRealtimeMapper
crossDirDataRealtimeMapper
,
GreenwaveHistMapper
greenwaveHistMapper
,
GreenwaveRealtimeMapper
greenwaveRealtimeMapper
,
SceneStrategyIdeaMapper
strategyIdeaMapper
,
StrategyMapper
strategyMapper
,
BaseCrossSchedulesMapper
baseCrossSchedulesMapper
,
BaseCrossSchedulesPlanMapper
baseCrossSchedulesPlanMapper
,
BaseCrossSectionMapper
baseCrossSectionMapper
,
BaseCrossSchemeMapper
crossSchemeMapper
,
BaseCrossSchemeMapper
baseCrossSchemeMapper
,
BaseCrossPhaseMapper
baseCrossPhaseMapper
,
BaseCrossPhaseLightsMapper
crossPhaseLightsMapper
,
BaseCrossLaneLightsMapper
baseCrossLaneLightsMapper
,
CrossBaseLaneInfoMapper
crossBaseLaneInfoMapper
,
CrossTurnDataHistMapper
crossTurnDataHistMapper
,
@Qualifier
(
"greenwaveSceneMapper"
)
GreenwaveSceneMapper
greenwaveSceneMapper
,
@Qualifier
(
"sceneStrategyMapper"
)
SceneStrategyMapper
sceneStrategyMapper
,
@Qualifier
(
"sceneMapper"
)
SceneMapper
sceneMapper
,
@Qualifier
(
"baseCrossPlanMapper"
)
BaseCrossPlanMapper
baseCrossPlanMapper
,
MainlineEvaluateServiceImpl
mainlineEvaluateServiceImpl
)
{
this
.
greenwaveInfoMapper
=
greenwaveInfoMapper
;
this
.
baseCrossInfoMapper
=
baseCrossInfoMapper
;
this
.
crossDataRealtimeMapper
=
crossDataRealtimeMapper
;
...
...
@@ -122,6 +122,7 @@ public class TrendServiceImpl implements TrendService {
this
.
sceneStrategyMapper
=
sceneStrategyMapper
;
this
.
sceneMapper
=
sceneMapper
;
this
.
baseCrossPlanMapper
=
baseCrossPlanMapper
;
this
.
mainlineEvaluateServiceImpl
=
mainlineEvaluateServiceImpl
;
}
@Override
...
...
@@ -858,6 +859,109 @@ public class TrendServiceImpl implements TrendService {
}
}
@Override
public
GreenwaveDetailVO
currentGreenwaveDetail
(
GreenwaveIdBO
bo
)
throws
ParseException
{
Integer
greenwaveId
=
bo
.
getGreenwaveId
();
// 获取绿波名称,调用评价接口
GreenwaveInfoPO
greenwaveInfoPO
=
greenwaveInfoMapper
.
selectById
(
greenwaveId
);
String
greenwaveName
=
greenwaveInfoPO
.
getName
();
String
[]
split
=
greenwaveName
.
split
(
":"
);
String
lineName
=
split
[
0
];
MainlineSchemeAnalysisBO
mainlineSchemeAnalysisBO
=
new
MainlineSchemeAnalysisBO
();
mainlineSchemeAnalysisBO
.
setName
(
lineName
);
// 获取当前日期和时间的 Calendar 对象
Calendar
calendar
=
Calendar
.
getInstance
();
// 设置时、分、秒和毫秒为 0,以获取当天的 00:00:00
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
calendar
.
set
(
Calendar
.
MILLISECOND
,
0
);
Date
startOfDay
=
calendar
.
getTime
();
// 设置时、分、秒和毫秒为 23:59:59.999,以获取当天的 23:59:59
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
23
);
calendar
.
set
(
Calendar
.
MINUTE
,
59
);
calendar
.
set
(
Calendar
.
SECOND
,
59
);
calendar
.
set
(
Calendar
.
MILLISECOND
,
999
);
Date
endOfDay
=
calendar
.
getTime
();
mainlineSchemeAnalysisBO
.
setStartTime
(
startOfDay
);
mainlineSchemeAnalysisBO
.
setEndTime
(
endOfDay
);
MainlineSchemeAnalysisVO
mainlineSchemeAnalysisVO
=
mainlineEvaluateServiceImpl
.
mainlineSchemeAnalysis
(
mainlineSchemeAnalysisBO
);
// 获取当前时段的干线方案
List
<
MainlineSchemeAnalysisVO
.
GreenwaveData
>
greenwaveData
=
mainlineSchemeAnalysisVO
.
getGreenwaveData
();
MainlineSchemeAnalysisVO
.
GreenwaveData
matchingData
=
findMatchingData
(
greenwaveData
);
if
(
ObjectUtil
.
isEmpty
(
matchingData
))
{
throw
new
RuntimeException
(
"无当天绿波历史数据"
);
}
String
lineSchemeName
=
matchingData
.
getName
();
GreenwaveNameBO
greenwaveNameBO
=
new
GreenwaveNameBO
();
greenwaveNameBO
.
setGreenwaveName
(
lineSchemeName
);
GreenwaveDetailVO
greenwaveDetailVO
=
greenwaveDetail
(
greenwaveNameBO
);
return
greenwaveDetailVO
;
}
private
MainlineSchemeAnalysisVO
.
GreenwaveData
findMatchingData
(
List
<
MainlineSchemeAnalysisVO
.
GreenwaveData
>
greenwaveData
)
{
Calendar
now
=
Calendar
.
getInstance
();
String
currentDayType
=
getDayType
(
now
);
String
currentTime
=
new
SimpleDateFormat
(
"HH:mm"
).
format
(
now
.
getTime
());
for
(
MainlineSchemeAnalysisVO
.
GreenwaveData
data
:
greenwaveData
)
{
String
name
=
data
.
getName
();
// 旅游路 东向西 转山西路至霞景路路段:正向绿波 工作日 07:00-07:40
String
[]
split1
=
name
.
split
(
" "
);
String
dayType
=
split1
[
3
];
Pattern
pattern
=
Pattern
.
compile
(
".*?(\\d{2}:\\d{2}-\\d{2}:\\d{2})"
);
Matcher
matcher
=
pattern
.
matcher
(
name
);
if
(
matcher
.
matches
())
{
String
timeRange
=
matcher
.
group
(
1
);
String
[]
times
=
timeRange
.
split
(
"-"
);
try
{
Date
startTime
=
new
SimpleDateFormat
(
"HH:mm"
).
parse
(
times
[
0
]);
Date
endTime
=
new
SimpleDateFormat
(
"HH:mm"
).
parse
(
times
[
1
]);
Date
currentTimeDate
=
new
SimpleDateFormat
(
"HH:mm"
).
parse
(
currentTime
);
if
(
currentTimeDate
.
after
(
startTime
)
&&
currentTimeDate
.
before
(
endTime
))
{
if
(!
dayType
.
equals
(
"工作日"
)
&&
!
dayType
.
equals
(
"周末"
))
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"M月d日"
);
String
currentDate
=
sdf
.
format
(
now
.
getTime
());
if
(
dayType
.
equals
(
currentDate
))
{
return
data
;
}
}
else
if
((
dayType
.
equals
(
"工作日"
)
&&
currentDayType
.
equals
(
"工作日"
))
||
(
dayType
.
equals
(
"周末"
)
&&
currentDayType
.
equals
(
"周末"
)))
{
return
data
;
}
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
}
}
return
null
;
}
private
String
getDayType
(
Calendar
calendar
)
{
int
dayOfWeek
=
calendar
.
get
(
Calendar
.
DAY_OF_WEEK
);
if
(
dayOfWeek
==
Calendar
.
SATURDAY
||
dayOfWeek
==
Calendar
.
SUNDAY
)
{
return
"周末"
;
}
else
{
return
"工作日"
;
}
}
private
void
setMetrics
(
GreenwaveCrossMetricsVO
greenwaveCrossMetricsVO
,
GreenwaveCrossPO
greenwaveCrossPO
,
List
<
CrossTurnDataHistPO
>
listForNoPark
,
List
<
CrossTurnDataHistPO
>
listForPhaseQueue
)
{
if
(
CollectionUtil
.
isNotEmpty
(
listForNoPark
)
&&
CollectionUtil
.
isNotEmpty
(
listForPhaseQueue
))
{
...
...
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