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
9dfa6091
Commit
9dfa6091
authored
Jun 20, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 信号优化,态势监测-问题路口详情按分钟返回数据
parent
92210f82
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
15 deletions
+59
-15
TrendServiceImpl.java
...ain/java/net/wanji/opt/service/impl/TrendServiceImpl.java
+59
-15
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/TrendServiceImpl.java
View file @
9dfa6091
...
@@ -67,6 +67,18 @@ public class TrendServiceImpl implements TrendService {
...
@@ -67,6 +67,18 @@ public class TrendServiceImpl implements TrendService {
private
final
CrossBaseLaneInfoMapper
crossBaseLaneInfoMapper
;
private
final
CrossBaseLaneInfoMapper
crossBaseLaneInfoMapper
;
private
final
CrossTurnDataHistMapper
crossTurnDataHistMapper
;
private
final
CrossTurnDataHistMapper
crossTurnDataHistMapper
;
// 用于计算路口状态,key为方向,value为状态
private
Map
<
Integer
,
Integer
>
preStatus
=
new
HashMap
<
Integer
,
Integer
>()
{{
put
(
1
,
1
);
put
(
2
,
1
);
put
(
3
,
1
);
put
(
4
,
1
);
put
(
5
,
1
);
put
(
6
,
1
);
put
(
7
,
1
);
put
(
8
,
1
);
}};
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
public
TrendServiceImpl
(
GreenwaveInfoMapper
greenwaveInfoMapper
,
BaseCrossInfoMapper
baseCrossInfoMapper
,
public
TrendServiceImpl
(
GreenwaveInfoMapper
greenwaveInfoMapper
,
BaseCrossInfoMapper
baseCrossInfoMapper
,
...
@@ -859,6 +871,7 @@ public class TrendServiceImpl implements TrendService {
...
@@ -859,6 +871,7 @@ public class TrendServiceImpl implements TrendService {
}
}
private
List
<
AbnormalCrossDetailVO
.
DirDataElement
>
buildDirData
(
String
crossId
)
{
private
List
<
AbnormalCrossDetailVO
.
DirDataElement
>
buildDirData
(
String
crossId
)
{
initPreStatus
();
List
<
AbnormalCrossDetailVO
.
DirDataElement
>
dirData
=
new
ArrayList
<>();
List
<
AbnormalCrossDetailVO
.
DirDataElement
>
dirData
=
new
ArrayList
<>();
// 获取当前时间之前40分钟的10位时间戳
// 获取当前时间之前40分钟的10位时间戳
long
currentSeconds
=
DateUtil
.
currentSeconds
();
long
currentSeconds
=
DateUtil
.
currentSeconds
();
...
@@ -867,27 +880,58 @@ public class TrendServiceImpl implements TrendService {
...
@@ -867,27 +880,58 @@ public class TrendServiceImpl implements TrendService {
long
preSeconds
=
currentSeconds
-
40
*
60
;
long
preSeconds
=
currentSeconds
-
40
*
60
;
List
<
CrossDirDataHistPO
>
crossDirDataHistPOList
=
List
<
CrossDirDataHistPO
>
crossDirDataHistPOList
=
crossDirDataHistMapper
.
selectByCrossIdAndTimestamp
(
crossId
,
preSeconds
);
crossDirDataHistMapper
.
selectByCrossIdAndTimestamp
(
crossId
,
preSeconds
);
List
<
Integer
>
dirs
=
baseCrossDirInfoMapper
.
selectInDirsByCrossId
(
crossId
);
for
(
CrossDirDataHistPO
crossDirDataHistPO
:
crossDirDataHistPOList
)
{
AbnormalCrossDetailVO
.
DirDataElement
dirDataElement
=
new
AbnormalCrossDetailVO
.
DirDataElement
();
Date
currentMinute
=
DateUtil
.
date
(
currentSeconds
*
1000
);
dirDataElement
.
setDir
(
crossDirDataHistPO
.
getDirType
());
// 获取采集时间
for
(
int
i
=
1
;
i
<=
60
;
i
++)
{
Integer
batchTime
=
crossDirDataHistPO
.
getBatchTime
();
// 上一分钟
Date
date
=
DateUtil
.
date
(
batchTime
*
1000
);
Date
preMinute
=
DateUtil
.
offsetMinute
(
currentMinute
,
-
1
);
dirDataElement
.
setTime
(
date
);
for
(
Integer
dir
:
dirs
)
{
// 转换状态,3、4都算拥堵
AbnormalCrossDetailVO
.
DirDataElement
dirDataElement
=
new
AbnormalCrossDetailVO
.
DirDataElement
();
Integer
status
=
crossDirDataHistPO
.
getStatus
();
dirDataElement
.
setDir
(
dir
);
if
(
status
==
4
)
{
dirDataElement
.
setTime
(
currentMinute
);
status
=
3
;
int
status
=
calcStatus
(
crossDirDataHistPOList
,
preMinute
,
currentMinute
,
dir
);
dirDataElement
.
setStatus
(
status
);
dirData
.
add
(
dirDataElement
);
}
}
dirDataElement
.
setStatus
(
status
);
currentMinute
=
preMinute
;
dirData
.
add
(
dirDataElement
);
}
}
return
dirData
;
return
dirData
;
}
}
private
void
initPreStatus
()
{
for
(
Integer
key
:
preStatus
.
keySet
())
{
preStatus
.
put
(
key
,
1
);
}
}
/**
* 计算路口状态
*
* @author Kent HAN
* @date 2023/6/20 9:07
*/
private
Integer
calcStatus
(
List
<
CrossDirDataHistPO
>
crossDirDataHistPOList
,
Date
preMinute
,
Date
currentMinute
,
int
dir
)
{
for
(
CrossDirDataHistPO
crossDirDataHistPO
:
crossDirDataHistPOList
)
{
int
dirType
=
crossDirDataHistPO
.
getDirType
();
long
batchTime
=
crossDirDataHistPO
.
getBatchTime
();
long
preSecond
=
preMinute
.
getTime
()
/
1000
;
long
currentSecond
=
currentMinute
.
getTime
()
/
1000
;
if
(
dirType
==
dir
&&
batchTime
<=
currentSecond
&&
batchTime
>=
preSecond
)
{
Integer
status
=
crossDirDataHistPO
.
getStatus
();
// 转换状态,3、4都算拥堵
if
(
status
==
4
)
{
status
=
3
;
}
preStatus
.
put
(
dir
,
status
);
}
}
return
preStatus
.
get
(
dir
);
}
private
List
<
AbnormalCrossDetailVO
.
TurnDataElement
>
buildTurnData
(
String
crossId
)
{
private
List
<
AbnormalCrossDetailVO
.
TurnDataElement
>
buildTurnData
(
String
crossId
)
{
List
<
AbnormalCrossDetailVO
.
TurnDataElement
>
turnData
=
new
ArrayList
<>();
List
<
AbnormalCrossDetailVO
.
TurnDataElement
>
turnData
=
new
ArrayList
<>();
List
<
CrossTurnDataRealtimePO
>
crossTurnDataRealtimePOList
=
crossTurnDataRealtimeMapper
.
selectByCrossId
(
crossId
);
List
<
CrossTurnDataRealtimePO
>
crossTurnDataRealtimePOList
=
crossTurnDataRealtimeMapper
.
selectByCrossId
(
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