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
35716e72
Commit
35716e72
authored
Mar 11, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 诊断优化,处理缺少数据异常
parent
0b165ee2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
66 additions
and
66 deletions
+66
-66
DiagnoServiceImpl.java
...in/java/net/wanji/opt/service/impl/DiagnoServiceImpl.java
+50
-49
EvaluateServiceImpl.java
.../java/net/wanji/opt/service/impl/EvaluateServiceImpl.java
+15
-16
CrossSchemeOptLogMapper.xml
...ice/src/main/resources/mapper/CrossSchemeOptLogMapper.xml
+1
-1
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/DiagnoServiceImpl.java
View file @
35716e72
...
@@ -162,24 +162,25 @@ public class DiagnoServiceImpl implements DiagnoService {
...
@@ -162,24 +162,25 @@ public class DiagnoServiceImpl implements DiagnoService {
schemeOptVO
.
setCrossId
(
crossId
);
schemeOptVO
.
setCrossId
(
crossId
);
// 选择数据批次时间最大的记录
// 选择数据批次时间最大的记录
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
if
(
CollectionUtil
.
isEmpty
(
maxList
))
{
if
(
CollectionUtil
.
isNotEmpty
(
maxList
))
{
throw
new
RuntimeException
(
"没有该路口优化日志数据"
);
// 根据相位去重
TreeSet
<
CrossSchemeOptLogPO
>
collect
=
maxList
.
stream
()
.
collect
(
Collectors
.
toCollection
(
()
->
new
TreeSet
<>(
Comparator
.
comparing
(
CrossSchemeOptLogPO:
:
getPhaseNo
))));
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
String
optType
=
crossSchemeOptLogPO
.
getOptType
();
schemeOptVO
.
setOptType
(
Integer
.
parseInt
(
optType
));
Integer
schemeId
=
crossSchemeOptLogPO
.
getSchemeId
();
CrossSchemePO
crossSchemePO
=
crossSchemeMapper
.
selectById
(
schemeId
);
if
(
crossSchemePO
!=
null
)
{
schemeOptVO
.
setCycle
(
crossSchemePO
.
getCycle
());
schemeOptVO
.
setSchemeId
(
crossSchemePO
.
getId
());
schemeOptVO
.
setOffset
(
crossSchemeOptLogPO
.
getOffset
());
}
// 构造调整时间列表
List
<
SchemeOptVO
.
PhaseOptTime
>
phaseOptTimeList
=
buildPhaseOptTimeList
(
collect
,
schemeId
);
schemeOptVO
.
setPhaseOptTimeList
(
phaseOptTimeList
);
}
}
// 根据相位去重
TreeSet
<
CrossSchemeOptLogPO
>
collect
=
maxList
.
stream
()
.
collect
(
Collectors
.
toCollection
(
()
->
new
TreeSet
<>(
Comparator
.
comparing
(
CrossSchemeOptLogPO:
:
getPhaseNo
))));
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
String
optType
=
crossSchemeOptLogPO
.
getOptType
();
schemeOptVO
.
setOptType
(
Integer
.
parseInt
(
optType
));
Integer
schemeId
=
crossSchemeOptLogPO
.
getSchemeId
();
CrossSchemePO
crossSchemePO
=
crossSchemeMapper
.
selectById
(
schemeId
);
schemeOptVO
.
setCycle
(
crossSchemePO
.
getCycle
());
schemeOptVO
.
setSchemeId
(
crossSchemePO
.
getId
());
schemeOptVO
.
setOffset
(
crossSchemeOptLogPO
.
getOffset
());
// 构造调整时间列表
List
<
SchemeOptVO
.
PhaseOptTime
>
phaseOptTimeList
=
buildPhaseOptTimeList
(
collect
,
schemeId
);
schemeOptVO
.
setPhaseOptTimeList
(
phaseOptTimeList
);
return
schemeOptVO
;
return
schemeOptVO
;
}
}
...
@@ -245,18 +246,18 @@ public class DiagnoServiceImpl implements DiagnoService {
...
@@ -245,18 +246,18 @@ public class DiagnoServiceImpl implements DiagnoService {
String
crossId
=
sendManualDTO
.
getSendCrossId
();
String
crossId
=
sendManualDTO
.
getSendCrossId
();
// 选择数据批次时间最大的记录
// 选择数据批次时间最大的记录
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
if
(
CollectionUtil
.
isEmpty
(
maxList
))
{
if
(
CollectionUtil
.
isNotEmpty
(
maxList
))
{
throw
new
RuntimeException
(
"没有该路口优化日志数据"
);
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
String
dataExtend
=
crossSchemeOptLogPO
.
getDataExtend
();
OptDataExtend
optDataExtendOld
=
gson
.
fromJson
(
dataExtend
,
OptDataExtend
.
class
);
OptDataExtend
optDataExtendNew
=
new
OptDataExtend
();
optDataExtendNew
.
setSceneName
(
optDataExtendOld
.
getSceneName
());
optDataExtendNew
.
setStrategyName
(
optDataExtendOld
.
getStrategyName
());
// todo 改为枚举值
optDataExtendNew
.
setIdeaName
(
"手动干预"
);
return
gson
.
toJson
(
optDataExtendNew
);
}
}
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
return
null
;
String
dataExtend
=
crossSchemeOptLogPO
.
getDataExtend
();
OptDataExtend
optDataExtendOld
=
gson
.
fromJson
(
dataExtend
,
OptDataExtend
.
class
);
OptDataExtend
optDataExtendNew
=
new
OptDataExtend
();
optDataExtendNew
.
setSceneName
(
optDataExtendOld
.
getSceneName
());
optDataExtendNew
.
setStrategyName
(
optDataExtendOld
.
getStrategyName
());
// todo 改为枚举值
optDataExtendNew
.
setIdeaName
(
"手动干预"
);
return
gson
.
toJson
(
optDataExtendNew
);
}
}
private
List
<
SchemeSendVO
.
Pattern
>
buildPatternList
(
String
sendCrossId
,
Integer
schemeId
,
private
List
<
SchemeSendVO
.
Pattern
>
buildPatternList
(
String
sendCrossId
,
Integer
schemeId
,
...
@@ -343,20 +344,16 @@ public class DiagnoServiceImpl implements DiagnoService {
...
@@ -343,20 +344,16 @@ public class DiagnoServiceImpl implements DiagnoService {
CrossInfoPO
crossInfoPO
=
crossInfoMapper
.
selectById
(
crossId
);
CrossInfoPO
crossInfoPO
=
crossInfoMapper
.
selectById
(
crossId
);
optEffectVO
.
setCrossName
(
crossInfoPO
.
getName
());
optEffectVO
.
setCrossName
(
crossInfoPO
.
getName
());
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
null
;
if
(
maxList
!=
null
)
{
try
{
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
optEffectVO
.
setOptStartTime
(
crossSchemeOptLogPO
.
getStartTime
());
}
catch
(
IndexOutOfBoundsException
e
)
{
Date
endTime
=
crossSchemeOptLogPO
.
getEndTime
();
throw
new
RuntimeException
(
"没有该路口优化日志数据"
);
if
(
ObjectUtil
.
isEmpty
(
endTime
))
{
}
optEffectVO
.
setStatus
(
2
);
optEffectVO
.
setOptStartTime
(
crossSchemeOptLogPO
.
getStartTime
());
}
else
{
Date
endTime
=
crossSchemeOptLogPO
.
getEndTime
();
optEffectVO
.
setStatus
(
1
);
if
(
ObjectUtil
.
isEmpty
(
endTime
))
{
}
optEffectVO
.
setStatus
(
2
);
}
else
{
optEffectVO
.
setStatus
(
1
);
}
}
Integer
dir
=
crossIdAndDirDTO
.
getDir
();
Integer
dir
=
crossIdAndDirDTO
.
getDir
();
// 获取当前时间之前45分钟的10位时间戳
// 获取当前时间之前45分钟的10位时间戳
long
currentSeconds
=
DateUtil
.
currentSeconds
();
long
currentSeconds
=
DateUtil
.
currentSeconds
();
...
@@ -367,18 +364,22 @@ public class DiagnoServiceImpl implements DiagnoService {
...
@@ -367,18 +364,22 @@ public class DiagnoServiceImpl implements DiagnoService {
// 获取路口历史数据
// 获取路口历史数据
List
<
CrossDataHistPO
>
crossDataHistPOList
=
List
<
CrossDataHistPO
>
crossDataHistPOList
=
crossDataHistMapper
.
selectByCrossIdAndTimestamp
(
crossId
,
preSeconds
);
crossDataHistMapper
.
selectByCrossIdAndTimestamp
(
crossId
,
preSeconds
);
List
<
OptEffectVO
.
IndexDelay
>
indexDelayList
=
buildIndexDelayList
(
crossDataHistPOList
);
if
(
CollectionUtil
.
isNotEmpty
(
crossDataHistPOList
))
{
optEffectVO
.
setIndexDelayList
(
indexDelayList
);
List
<
OptEffectVO
.
IndexDelay
>
indexDelayList
=
buildIndexDelayList
(
crossDataHistPOList
);
List
<
OptEffectVO
.
QueueStop
>
queueStopList
=
buildQueueStopList
(
crossDataHistPOList
);
optEffectVO
.
setIndexDelayList
(
indexDelayList
);
optEffectVO
.
setQueueStopList
(
queueStopList
);
List
<
OptEffectVO
.
QueueStop
>
queueStopList
=
buildQueueStopList
(
crossDataHistPOList
);
optEffectVO
.
setQueueStopList
(
queueStopList
);
}
}
else
{
}
else
{
// 获取路口方向历史数据
// 获取路口方向历史数据
List
<
CrossDirDataHistPO
>
crossDirDataHistPOList
=
List
<
CrossDirDataHistPO
>
crossDirDataHistPOList
=
crossDirDataHistMapper
.
selectByCrossIdDirAndTimestamp
(
crossId
,
dir
,
preSeconds
);
crossDirDataHistMapper
.
selectByCrossIdDirAndTimestamp
(
crossId
,
dir
,
preSeconds
);
List
<
OptEffectVO
.
IndexDelay
>
indexDelayList
=
buildIndexDelayListDir
(
crossDirDataHistPOList
);
if
(
CollectionUtil
.
isNotEmpty
(
crossDirDataHistPOList
))
{
optEffectVO
.
setIndexDelayList
(
indexDelayList
);
List
<
OptEffectVO
.
IndexDelay
>
indexDelayList
=
buildIndexDelayListDir
(
crossDirDataHistPOList
);
List
<
OptEffectVO
.
QueueStop
>
queueStopList
=
buildQueueStopListDir
(
crossDirDataHistPOList
);
optEffectVO
.
setIndexDelayList
(
indexDelayList
);
optEffectVO
.
setQueueStopList
(
queueStopList
);
List
<
OptEffectVO
.
QueueStop
>
queueStopList
=
buildQueueStopListDir
(
crossDirDataHistPOList
);
optEffectVO
.
setQueueStopList
(
queueStopList
);
}
}
}
return
optEffectVO
;
return
optEffectVO
;
}
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/EvaluateServiceImpl.java
View file @
35716e72
...
@@ -67,22 +67,21 @@ public class EvaluateServiceImpl implements EvaluateService {
...
@@ -67,22 +67,21 @@ public class EvaluateServiceImpl implements EvaluateService {
private
void
fillOptData
(
EvaluateCrossDetailVO
evaluateCrossDetailVO
,
String
crossId
)
{
private
void
fillOptData
(
EvaluateCrossDetailVO
evaluateCrossDetailVO
,
String
crossId
)
{
// 选择数据批次时间最大的记录
// 选择数据批次时间最大的记录
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
if
(
CollectionUtil
.
isEmpty
(
maxList
))
{
if
(
CollectionUtil
.
isNotEmpty
(
maxList
))
{
throw
new
RuntimeException
(
"没有该路口优化日志数据"
);
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
}
// 解析dataExtend
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
String
dataExtend
=
crossSchemeOptLogPO
.
getDataExtend
();
// 解析dataExtend
OptDataExtend
optDataExtend
=
gson
.
fromJson
(
dataExtend
,
OptDataExtend
.
class
);
String
dataExtend
=
crossSchemeOptLogPO
.
getDataExtend
();
evaluateCrossDetailVO
.
setSceneName
(
optDataExtend
.
getSceneName
());
OptDataExtend
optDataExtend
=
gson
.
fromJson
(
dataExtend
,
OptDataExtend
.
class
);
evaluateCrossDetailVO
.
setStrategyName
(
optDataExtend
.
getStrategyName
());
evaluateCrossDetailVO
.
setSceneName
(
optDataExtend
.
getSceneName
());
evaluateCrossDetailVO
.
setIdeaName
(
optDataExtend
.
getIdeaName
());
evaluateCrossDetailVO
.
setStrategyName
(
optDataExtend
.
getStrategyName
());
evaluateCrossDetailVO
.
setOptStartTime
(
crossSchemeOptLogPO
.
getStartTime
());
evaluateCrossDetailVO
.
setIdeaName
(
optDataExtend
.
getIdeaName
());
Date
endTime
=
crossSchemeOptLogPO
.
getEndTime
();
evaluateCrossDetailVO
.
setOptStartTime
(
crossSchemeOptLogPO
.
getStartTime
());
if
(
ObjectUtil
.
isEmpty
(
endTime
))
{
Date
endTime
=
crossSchemeOptLogPO
.
getEndTime
();
evaluateCrossDetailVO
.
setOptStatus
(
2
);
if
(
ObjectUtil
.
isEmpty
(
endTime
))
{
}
else
{
evaluateCrossDetailVO
.
setOptStatus
(
2
);
evaluateCrossDetailVO
.
setOptStatus
(
1
);
}
else
{
}
evaluateCrossDetailVO
.
setOptStatus
(
1
);
}
}
}
}
}
}
signal-optimize-service/src/main/resources/mapper/CrossSchemeOptLogMapper.xml
View file @
35716e72
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
<include
refid=
"Base_Column_List"
/>
<include
refid=
"Base_Column_List"
/>
from t_base_cross_scheme_opt_log
from t_base_cross_scheme_opt_log
where cross_id = #{crossId}
where cross_id = #{crossId}
and data_batch_time=(SELECT MAX(ABS(data_batch_time)) FROM t_base_cross_scheme_opt_log);
and data_batch_time=(SELECT MAX(ABS(data_batch_time)) FROM t_base_cross_scheme_opt_log
WHERE cross_id = #{crossId}
);
</select>
</select>
<insert
id=
"insertOne"
parameterType=
"net.wanji.opt.po.base.CrossSchemeOptLogPO"
>
<insert
id=
"insertOne"
parameterType=
"net.wanji.opt.po.base.CrossSchemeOptLogPO"
>
...
...
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