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
444f6d38
Commit
444f6d38
authored
Sep 15, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 新信号评价-场景评价-异常事件详情,筛选相交事件
parent
cb8ccc87
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
75 additions
and
6 deletions
+75
-6
AbnormalDetailBO.java
...vice/src/main/java/net/wanji/opt/bo/AbnormalDetailBO.java
+1
-1
SceneEvaluateController.java
...ava/net/wanji/opt/controller/SceneEvaluateController.java
+2
-1
SceneEvaluateService.java
...main/java/net/wanji/opt/service/SceneEvaluateService.java
+3
-1
SceneEvaluateServiceImpl.java
.../net/wanji/opt/service/impl/SceneEvaluateServiceImpl.java
+69
-3
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/bo/AbnormalDetailBO.java
View file @
444f6d38
...
@@ -25,5 +25,5 @@ public class AbnormalDetailBO {
...
@@ -25,5 +25,5 @@ public class AbnormalDetailBO {
private
Date
problemDate
;
private
Date
problemDate
;
@ApiModelProperty
(
value
=
"状态 0正常 1 失衡 2 拥堵 3 溢出 4 死锁"
)
@ApiModelProperty
(
value
=
"状态 0正常 1 失衡 2 拥堵 3 溢出 4 死锁"
)
private
String
status
;
private
Integer
status
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/controller/SceneEvaluateController.java
View file @
444f6d38
...
@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.MediaType
;
import
java.text.ParseException
;
/**
/**
* 场景评价
* 场景评价
...
@@ -52,7 +53,7 @@ public class SceneEvaluateController {
...
@@ -52,7 +53,7 @@ public class SceneEvaluateController {
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SceneEvaluateAbnormalDetailVO
.
class
),
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SceneEvaluateAbnormalDetailVO
.
class
),
})
})
public
JsonViewObject
abnormalDetail
(
@RequestBody
AbnormalDetailBO
abnormalDetailBO
)
{
public
JsonViewObject
abnormalDetail
(
@RequestBody
AbnormalDetailBO
abnormalDetailBO
)
throws
ParseException
{
SceneEvaluateAbnormalDetailVO
res
=
sceneEvaluateService
.
abnormalDetail
(
abnormalDetailBO
);
SceneEvaluateAbnormalDetailVO
res
=
sceneEvaluateService
.
abnormalDetail
(
abnormalDetailBO
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/SceneEvaluateService.java
View file @
444f6d38
...
@@ -5,9 +5,11 @@ import net.wanji.opt.bo.AbnormalDetailBO;
...
@@ -5,9 +5,11 @@ import net.wanji.opt.bo.AbnormalDetailBO;
import
net.wanji.opt.vo.SceneEvaluateAbnormalDetailVO
;
import
net.wanji.opt.vo.SceneEvaluateAbnormalDetailVO
;
import
net.wanji.opt.vo.SceneEvaluateAbnormalDistributeVO
;
import
net.wanji.opt.vo.SceneEvaluateAbnormalDistributeVO
;
import
java.text.ParseException
;
public
interface
SceneEvaluateService
{
public
interface
SceneEvaluateService
{
SceneEvaluateAbnormalDistributeVO
abnormalDistribute
(
CrossIdAndStartEndDateBO
bo
);
SceneEvaluateAbnormalDistributeVO
abnormalDistribute
(
CrossIdAndStartEndDateBO
bo
);
SceneEvaluateAbnormalDetailVO
abnormalDetail
(
AbnormalDetailBO
abnormalDetailBO
);
SceneEvaluateAbnormalDetailVO
abnormalDetail
(
AbnormalDetailBO
abnormalDetailBO
)
throws
ParseException
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/SceneEvaluateServiceImpl.java
View file @
444f6d38
...
@@ -16,6 +16,7 @@ import net.wanji.opt.vo.SceneEvaluateAbnormalDistributeVO;
...
@@ -16,6 +16,7 @@ import net.wanji.opt.vo.SceneEvaluateAbnormalDistributeVO;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -52,11 +53,11 @@ public class SceneEvaluateServiceImpl implements SceneEvaluateService {
...
@@ -52,11 +53,11 @@ public class SceneEvaluateServiceImpl implements SceneEvaluateService {
}
}
@Override
@Override
public
SceneEvaluateAbnormalDetailVO
abnormalDetail
(
AbnormalDetailBO
abnormalDetailBO
)
{
public
SceneEvaluateAbnormalDetailVO
abnormalDetail
(
AbnormalDetailBO
abnormalDetailBO
)
throws
ParseException
{
String
crossId
=
abnormalDetailBO
.
getCrossId
();
String
crossId
=
abnormalDetailBO
.
getCrossId
();
String
hourMinute
=
abnormalDetailBO
.
getHourMinute
();
String
hourMinute
=
abnormalDetailBO
.
getHourMinute
();
Date
problemDate
=
abnormalDetailBO
.
getProblemDate
();
Date
problemDate
=
abnormalDetailBO
.
getProblemDate
();
String
status
=
abnormalDetailBO
.
getStatus
();
Integer
status
=
abnormalDetailBO
.
getStatus
();
// 获取当前年份
// 获取当前年份
Calendar
calendar
=
Calendar
.
getInstance
();
Calendar
calendar
=
Calendar
.
getInstance
();
...
@@ -82,7 +83,72 @@ public class SceneEvaluateServiceImpl implements SceneEvaluateService {
...
@@ -82,7 +83,72 @@ public class SceneEvaluateServiceImpl implements SceneEvaluateService {
// 查询当天所有场景
// 查询当天所有场景
List
<
CrossDataHistPO
>
crossDataHistPOList
=
List
<
CrossDataHistPO
>
crossDataHistPOList
=
crossDataHistMapper
.
selectByCrossIdAndStartEnd
(
crossId
,
startOfDayTimestamp
,
endOfDayTimestamp
);
crossDataHistMapper
.
selectByCrossIdAndStartEnd
(
crossId
,
startOfDayTimestamp
,
endOfDayTimestamp
);
// 过滤场景类型
// 按照startTime分组并选择duration最长的一个。
List
<
CrossDataHistPO
>
filteredList
=
crossDataHistPOList
.
stream
()
.
filter
(
po
->
Objects
.
equals
(
po
.
getStatus
(),
status
))
.
collect
(
Collectors
.
groupingBy
(
CrossDataHistPO:
:
getStartTime
))
.
values
().
stream
()
.
map
(
list
->
list
.
stream
().
max
(
Comparator
.
comparingInt
(
CrossDataHistPO:
:
getDuration
)).
get
())
.
collect
(
Collectors
.
toList
());
// 进行startTime和endTime的格式化和分组。
Map
<
String
,
List
<
CrossDataHistPO
>>
groupedData
=
filteredList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
po
->
{
// 计算startTime和endTime
Date
startTime
=
po
.
getStartTime
();
Date
endTime
=
new
Date
(
startTime
.
getTime
()
+
po
.
getDuration
()
*
60
*
1000L
);
// startTime向前取整至5分钟
calendar
.
setTime
(
startTime
);
int
minute
=
calendar
.
get
(
Calendar
.
MINUTE
);
calendar
.
add
(
Calendar
.
MINUTE
,
-(
minute
%
5
));
String
startTimeStr
=
HOUR_SDF
.
format
(
calendar
.
getTime
());
// endTime向后取整至5分钟
calendar
.
setTime
(
endTime
);
minute
=
calendar
.
get
(
Calendar
.
MINUTE
);
calendar
.
add
(
Calendar
.
MINUTE
,
5
-
(
minute
%
5
));
String
endTimeStr
=
HOUR_SDF
.
format
(
calendar
.
getTime
());
return
startTimeStr
+
"-"
+
endTimeStr
;
}));
Date
targetDate
=
HOUR_SDF
.
parse
(
hourMinute
);
// 获取当前年份,并设置targetDate的年份
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
newDate
);
String
[]
split
=
hourMinute
.
split
(
":"
);
cal
.
set
(
Calendar
.
HOUR
,
Integer
.
parseInt
(
split
[
0
]));
cal
.
set
(
Calendar
.
MINUTE
,
Integer
.
parseInt
(
split
[
1
]));
targetDate
=
cal
.
getTime
();
// 从groupedData中筛选与hourMinute相交的记录
List
<
CrossDataHistPO
>
intersectingRecords
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
String
,
List
<
CrossDataHistPO
>>
entry
:
groupedData
.
entrySet
())
{
String
key
=
entry
.
getKey
();
String
[]
times
=
key
.
split
(
"-"
);
Calendar
startCal
=
Calendar
.
getInstance
();
Calendar
endCal
=
Calendar
.
getInstance
();
startCal
.
setTime
(
newDate
);
endCal
.
setTime
(
newDate
);
String
[]
start
=
times
[
0
].
split
(
":"
);
startCal
.
set
(
Calendar
.
HOUR
,
Integer
.
parseInt
(
start
[
0
]));
startCal
.
set
(
Calendar
.
MINUTE
,
Integer
.
parseInt
(
start
[
1
]));
String
[]
end
=
times
[
0
].
split
(
":"
);
endCal
.
set
(
Calendar
.
HOUR
,
Integer
.
parseInt
(
end
[
0
]));
endCal
.
set
(
Calendar
.
MINUTE
,
Integer
.
parseInt
(
end
[
1
]));
Date
startTime
=
startCal
.
getTime
();
Date
endTime
=
endCal
.
getTime
();
// 检查相交条件
if
(!(
targetDate
.
before
(
startTime
)
||
targetDate
.
after
(
endTime
)))
{
intersectingRecords
.
addAll
(
entry
.
getValue
());
}
}
return
null
;
return
null
;
...
...
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