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
jinan
traffic-signal-platform
Commits
1f051dd4
Commit
1f051dd4
authored
Apr 03, 2025
by
wangyecheng
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
8fc6cb0f
67556959
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
728 additions
and
108 deletions
+728
-108
BaseCrossInfoCache.java
...src/main/java/net/wanji/opt/cache/BaseCrossInfoCache.java
+2
-0
CommonUtils.java
...rvice/src/main/java/net/wanji/opt/common/CommonUtils.java
+19
-0
EsDateIndexUtil.java
...e/src/main/java/net/wanji/opt/common/EsDateIndexUtil.java
+11
-3
GreenWaveCrossRidController.java
.../opt/controllerv2/report/GreenWaveCrossRidController.java
+3
-3
GreenWaveOverviewController.java
.../opt/controllerv2/report/GreenWaveOverviewController.java
+3
-3
GreenWaveProblemAnalysisController.java
...ntrollerv2/report/GreenWaveProblemAnalysisController.java
+76
-0
GreenWaveRunStateController.java
.../opt/controllerv2/report/GreenWaveRunStateController.java
+57
-0
GreenReportOverviewAnalysisResult.java
...erv2/report/design/GreenReportOverviewAnalysisResult.java
+6
-3
GreenReportProblemDetailAnalysis.java
...lerv2/report/design/GreenReportProblemDetailAnalysis.java
+102
-0
GreenReportProblemOverallAnalysis.java
...erv2/report/design/GreenReportProblemOverallAnalysis.java
+80
-0
GreenReportRunStateResult.java
...controllerv2/report/design/GreenReportRunStateResult.java
+119
-0
GreenReportSamePeriodCompareResult.java
...rv2/report/design/GreenReportSamePeriodCompareResult.java
+1
-1
CrossDirFreeFlowSpeedDTO.java
...main/java/net/wanji/opt/dto/CrossDirFreeFlowSpeedDTO.java
+14
-0
SysOptimizeLog.java
...main/java/net/wanji/opt/entity/syslog/SysOptimizeLog.java
+5
-0
SysLogServerImpl.java
...net/wanji/opt/servicev2/syslog/impl/SysLogServerImpl.java
+39
-5
HisenseGreenChartTask.java
...c/main/java/net/wanji/opt/task/HisenseGreenChartTask.java
+158
-67
InducesMonitorTask.java
.../src/main/java/net/wanji/opt/task/InducesMonitorTask.java
+2
-0
GreenwaveHistMapper.xml
...service/src/main/resources/mapper/GreenwaveHistMapper.xml
+19
-20
SysLogMapper.xml
...service/src/main/resources/mapper/syslog/SysLogMapper.xml
+3
-2
GreenCrossDirDTO.java
...n/java/net/wanji/databus/dao/entity/GreenCrossDirDTO.java
+5
-0
GreenwaveCrossMapper.xml
...atabus/src/main/resources/mapper/GreenwaveCrossMapper.xml
+4
-1
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/cache/BaseCrossInfoCache.java
View file @
1f051dd4
...
...
@@ -6,6 +6,7 @@ import net.wanji.databus.po.BaseCrossInfoPO;
import
net.wanji.databus.vo.CrossInfoVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
...
...
@@ -20,6 +21,7 @@ import java.util.stream.Collectors;
* @date 2023/03/14 10:42
*/
@Component
@Order
(
1
)
@Slf4j
public
class
BaseCrossInfoCache
implements
CommandLineRunner
{
...
...
signal-optimize-service/src/main/java/net/wanji/opt/common/CommonUtils.java
0 → 100644
View file @
1f051dd4
package
net
.
wanji
.
opt
.
common
;
/**
* @author duanruiming
* @date 2025/04/02 15:44
*/
public
class
CommonUtils
{
/**
* 分隔符:下划线
**/
public
static
final
String
SEPARATOR_UNDER_LINE
=
"_"
;
public
static
String
getStrJoin
(
String
...
str
)
{
String
join
=
String
.
join
(
SEPARATOR_UNDER_LINE
,
str
);
return
join
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/common/EsDateIndexUtil.java
View file @
1f051dd4
...
...
@@ -65,10 +65,16 @@ public class EsDateIndexUtil {
* @return
*/
public
static
List
<
String
>
getTimeGranularityAxisAll
(
String
groupType
,
String
startTime
,
String
endTime
)
{
//DATE_FORMAT(concat( date( start_time ), ' ', HOUR ( start_time ), ':', floor( MINUTE ( start_time ) / 15 ) * 15 ),'%Y-%m-%d %H:%i:00' )
//存放时段
List
<
String
>
sortedSet
=
new
ArrayList
<>();
//===========================根据开始、结束时间输出完整时刻点=================================================//
DateTime
start
=
DateTime
.
parse
(
startTime
,
DateTimeFormat
.
forPattern
(
EsDateIndexUtil
.
YMD_HM_FORMATTER
));
//对于输入时间不是整5分钟情况,规约到5分钟
String
formatStartDate
=
startTime
.
substring
(
0
,
startTime
.
indexOf
(
" "
)+
1
)
+
Tools
.
fillZeroFront
(
start
.
getHourOfDay
()+
""
,
2
)+
":"
+
Tools
.
fillZeroFront
((
int
)
Math
.
ceil
(
start
.
getMinuteOfHour
()/
5
)*
5
+
""
,
2
)+
":00"
;
start
=
DateTime
.
parse
(
formatStartDate
,
DateTimeFormat
.
forPattern
(
EsDateIndexUtil
.
YMD_HM_FORMATTER
));
DateTime
end
=
DateTime
.
parse
(
endTime
,
DateTimeFormat
.
forPattern
(
EsDateIndexUtil
.
YMD_HM_FORMATTER
));
if
(
Objects
.
equals
(
"0"
,
groupType
))
{
sortedSet
.
addAll
(
EsDateIndexUtil
.
getTimeScopeList
(
start
,
end
,
TimeGranularityEnum
.
FIVE_MINUTE
,
"yyyy-MM-dd HH:mm:00"
));
...
...
@@ -285,11 +291,13 @@ public class EsDateIndexUtil {
// DateTime start = DateTime.now().withTimeAtStartOfDay();
// DateTime end = DateTime.now();
// List<String> indexByTime = EsDateIndexUtil.getTimeScopeList(start, end, TimeGranularityEnum.ONE_HOUR,"HH:mm");
String
start
=
"2025-03-21 00:00
:00"
;
String
start
Time
=
"2025-03-21 00:23
:00"
;
String
end
=
"2025-03-21 23:00:00"
;
List
<
String
>
indexByTime
=
EsDateIndexUtil
.
getTimeGranularityAxisAll
(
"1"
,
start
,
end
);
DateTime
start
=
DateTime
.
parse
(
startTime
,
DateTimeFormat
.
forPattern
(
EsDateIndexUtil
.
YMD_HM_FORMATTER
));
String
formatStartDate
=
startTime
.
substring
(
0
,
startTime
.
indexOf
(
" "
)+
1
)
+
Tools
.
fillZeroFront
(
start
.
getHourOfDay
()+
""
,
2
)+
":"
+
Tools
.
fillZeroFront
((
int
)
Math
.
floor
(
start
.
getMinuteOfHour
()/
5
)*
5
+
""
,
2
)+
":00"
;
System
.
out
.
println
(
indexByTim
e
);
System
.
out
.
println
(
formatStartDat
e
);
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/GreenWaveCrossRidController.java
View file @
1f051dd4
...
...
@@ -28,7 +28,7 @@ import java.util.List;
@RestController
@Slf4j
@RequestMapping
(
"/green-wave-cross-rid"
)
@Api
(
value
=
"GreenWaveCrossRidController"
,
description
=
"干线分析报告接口"
,
tags
=
"干线分析报告"
)
@Api
(
value
=
"GreenWaveCrossRidController"
,
description
=
"干线分析报告接口"
,
tags
=
"干线分析报告
-周报
"
)
public
class
GreenWaveCrossRidController
{
@Autowired
...
...
@@ -36,7 +36,7 @@ public class GreenWaveCrossRidController {
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"干线拥堵信息"
,
notes
=
""
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"
1.1-
干线拥堵信息"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"干线ID,多个id用','分隔"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1,2"
),
@ApiImplicitParam
(
name
=
"dayType"
,
value
=
"高峰类型 1早高峰 2晚高峰 3全天"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1"
),
...
...
@@ -56,7 +56,7 @@ public class GreenWaveCrossRidController {
return
jsonViewObject
;
}
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"干线基础信息"
,
notes
=
""
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"
1.1-
干线基础信息"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"干线ID,多个id用','分隔"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1,2"
),
})
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/GreenWaveOverviewController.java
View file @
1f051dd4
...
...
@@ -31,7 +31,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
@RequestMapping
(
"/green-wave-overview"
)
@Api
(
value
=
"GreenWaveCrossRidController"
,
description
=
"干线分析报告接口"
,
tags
=
"干线分析报告"
)
@Api
(
value
=
"GreenWaveCrossRidController"
,
description
=
"干线分析报告接口"
,
tags
=
"干线分析报告
-周报
"
)
public
class
GreenWaveOverviewController
{
@Autowired
...
...
@@ -39,7 +39,7 @@ public class GreenWaveOverviewController {
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"干线概况-总体情况说明"
,
notes
=
""
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"
2.1-
干线概况-总体情况说明"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"干线ID,多个id用','分隔【为空时查询所有干线】"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1,2"
),
@ApiImplicitParam
(
name
=
"year"
,
value
=
"年份"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"2025"
),
...
...
@@ -62,7 +62,7 @@ public class GreenWaveOverviewController {
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"干线概况-工作日同期对比"
,
notes
=
""
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"
2.2-
干线概况-工作日同期对比"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"干线ID,多个id用','分隔"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1,2"
),
@ApiImplicitParam
(
name
=
"year"
,
value
=
"年份"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"2025"
),
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/GreenWaveProblemAnalysisController.java
0 → 100644
View file @
1f051dd4
package
net
.
wanji
.
opt
.
controllerv2
.
report
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.i18n.I18nResourceBundle
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.opt.controllerv2.report.design.GreenReportOverviewAnalysisResult
;
import
net.wanji.opt.controllerv2.report.design.GreenReportProblemDetailAnalysis
;
import
net.wanji.opt.controllerv2.report.design.GreenReportProblemOverallAnalysis
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 干线概况 接口API
* </p>
* @version 1.0
* @author
* @Date 2025-03-18
*/
@RestController
@Slf4j
@RequestMapping
(
"/green-wave-problem"
)
@Api
(
value
=
"GreenWaveProblemAnalysisController"
,
description
=
"干线分析报告接口"
,
tags
=
"干线分析报告-周报"
)
public
class
GreenWaveProblemAnalysisController
{
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"4.1-干线问题-总体分析"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"干线ID,多个id用','分隔【为空时查询所有干线】"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1,2"
),
@ApiImplicitParam
(
name
=
"year"
,
value
=
"年份"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"2025"
),
@ApiImplicitParam
(
name
=
"week"
,
value
=
"一年的第几周"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"20"
),
})
@GetMapping
(
value
=
"/getProblemData"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
GreenReportProblemOverallAnalysis
.
class
),
})
public
JsonViewObject
getGreenInfoList
(
Integer
year
,
Integer
week
,
String
ids
)
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
try
{
}
catch
(
Exception
e
)
{
jsonViewObject
.
fail
(
I18nResourceBundle
.
getConstants
(
"GET_FAILED_MSG"
));
log
.
error
(
"{} getAll error"
,
this
.
getClass
().
getSimpleName
(),
e
);
}
return
jsonViewObject
;
}
//GreenReportProblemDetailAnalysis
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"4.2-干线问题-问题详情"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"干线ID,多个id用','分隔【为空时查询所有干线】"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1,2"
),
@ApiImplicitParam
(
name
=
"year"
,
value
=
"年份"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"2025"
),
@ApiImplicitParam
(
name
=
"week"
,
value
=
"一年的第几周"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"20"
),
})
@GetMapping
(
value
=
"/getProblemDetail"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
GreenReportProblemDetailAnalysis
.
class
),
})
public
JsonViewObject
getProblemDetail
(
Integer
year
,
Integer
week
,
String
ids
)
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
try
{
}
catch
(
Exception
e
)
{
jsonViewObject
.
fail
(
I18nResourceBundle
.
getConstants
(
"GET_FAILED_MSG"
));
log
.
error
(
"{} getAll error"
,
this
.
getClass
().
getSimpleName
(),
e
);
}
return
jsonViewObject
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/GreenWaveRunStateController.java
0 → 100644
View file @
1f051dd4
package
net
.
wanji
.
opt
.
controllerv2
.
report
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.i18n.I18nResourceBundle
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.opt.controllerv2.report.design.GreenReportOverviewAnalysisResult
;
import
net.wanji.opt.controllerv2.report.design.GreenReportRunStateResult
;
import
net.wanji.opt.controllerv2.report.design.GreenReportSamePeriodCompareResult
;
import
net.wanji.opt.servicev2.report.GreenWaveCrossRidService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 干线概况 接口API
* </p>
* @version 1.0
* @author
* @Date 2025-03-18
*/
@RestController
@Slf4j
@RequestMapping
(
"/green-wave-run-state"
)
@Api
(
value
=
"GreenWaveRunStateController"
,
description
=
"干线分析报告接口"
,
tags
=
"干线分析报告-周报"
)
public
class
GreenWaveRunStateController
{
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"3.1-干线运行分析"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"干线ID,多个id用','分隔【为空时查询所有干线】"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1,2"
),
@ApiImplicitParam
(
name
=
"year"
,
value
=
"年份"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"2025"
),
@ApiImplicitParam
(
name
=
"week"
,
value
=
"一年的第几周"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"20"
),
})
@GetMapping
(
value
=
"/getData"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
GreenReportRunStateResult
.
class
),
})
public
JsonViewObject
getData
(
Integer
year
,
Integer
week
,
String
ids
)
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
try
{
}
catch
(
Exception
e
)
{
jsonViewObject
.
fail
(
I18nResourceBundle
.
getConstants
(
"GET_FAILED_MSG"
));
log
.
error
(
"{} getAll error"
,
this
.
getClass
().
getSimpleName
(),
e
);
}
return
jsonViewObject
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/design/GreenReportOverviewAnalysisResult.java
View file @
1f051dd4
...
...
@@ -11,13 +11,13 @@ import java.util.List;
@Data
public
class
GreenReportOverviewAnalysisResult
extends
ParentResult
{
private
GreenReportOverviewResultResponse
content
;
private
List
<
GreenReportOverviewResultResponse
>
content
;
public
GreenReportOverviewResultResponse
getContent
()
{
public
List
<
GreenReportOverviewResultResponse
>
getContent
()
{
return
content
;
}
public
GreenReportOverviewAnalysisResult
setContent
(
GreenReportOverviewResultResponse
content
)
{
public
GreenReportOverviewAnalysisResult
setContent
(
List
<
GreenReportOverviewResultResponse
>
content
)
{
this
.
content
=
content
;
return
this
;
}
...
...
@@ -81,6 +81,9 @@ class GreenReportOverview {
@ApiModelProperty
(
value
=
"本周拥堵时段集中分布情况"
,
example
=
"周一7:30~8:15,周五17:30~18:15"
)
private
String
weekCongestTimeDistribute
;
@ApiModelProperty
(
value
=
"拥堵严重干线"
,
example
=
"经十路(舜耕路-山大路)、经十路(洪山路-舜华路)"
)
private
String
congestHeavyGreenWave
;
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/design/GreenReportProblemDetailAnalysis.java
0 → 100644
View file @
1f051dd4
package
net
.
wanji
.
opt
.
controllerv2
.
report
.
design
;
import
com.alibaba.fastjson.JSON
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult
;
import
java.util.ArrayList
;
import
java.util.List
;
@Data
public
class
GreenReportProblemDetailAnalysis
extends
ParentResult
{
private
List
<
GreenReportProblemDetailAnalysisResponse
>
content
;
public
List
<
GreenReportProblemDetailAnalysisResponse
>
getContent
()
{
return
content
;
}
public
GreenReportProblemDetailAnalysis
setContent
(
List
<
GreenReportProblemDetailAnalysisResponse
>
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
GreenReportProblemDetailAnalysisResponse
{
@ApiModelProperty
(
value
=
"干线工作日拥堵时段分布情况"
,
example
=
"7:00~8:00,12:00~13:30,17:30~18:40"
)
private
String
workDayCongestSpan
;
@ApiModelProperty
(
value
=
"干线工作日平均拥堵时长"
,
example
=
"1小时"
)
private
String
workDayAvgCongestTime
;
@ApiModelProperty
(
value
=
"干线工作日平均拥堵指数"
,
example
=
"3.5"
)
private
String
workDayAvgCongestIndex
;
//================================================================================================//
@ApiModelProperty
(
value
=
"干线工作日缓行时段分布情况"
,
example
=
"7:00~8:00,12:00~13:30,17:30~18:40"
)
private
String
workDaySlowRunSpan
;
@ApiModelProperty
(
value
=
"干线工作日平均缓行时长"
,
example
=
"0.5小时"
)
private
String
workDayAvgSlowRunTime
;
@ApiModelProperty
(
value
=
"干线工作日缓行平均拥堵指数"
,
example
=
"3.5"
)
private
String
workDayAvgSlowAvgCongestIndex
;
//================================================================================================//
@ApiModelProperty
(
value
=
"干线周末拥堵时段分布情况"
,
example
=
"7:00~8:00,12:00~13:30,17:30~18:40"
)
private
String
weekEndCongestSpan
;
@ApiModelProperty
(
value
=
"干线周末平均拥堵时长"
,
example
=
"1小时"
)
private
String
weekEndAvgCongestTime
;
@ApiModelProperty
(
value
=
"干线周末平均拥堵指数"
,
example
=
"3.5"
)
private
String
weekEndAvgCongestIndex
;
//================================================================================================//
@ApiModelProperty
(
value
=
"干线周末缓行时段分布情况"
,
example
=
"7:00~8:00,12:00~13:30,17:30~18:40"
)
private
String
weekEndSlowRunSpan
;
@ApiModelProperty
(
value
=
"干线周末平均缓行时长"
,
example
=
"0.5小时"
)
private
String
weekEndAvgSlowRunTime
;
@ApiModelProperty
(
value
=
"干线周末缓行平均拥堵指数"
,
example
=
"3.5"
)
private
String
weekEndAvgSlowAvgCongestIndex
;
private
List
<
GreenReportProblemDetail
>
dataList
=
new
ArrayList
<>();
}
@Data
class
GreenReportProblemDetail
{
@ApiModelProperty
(
value
=
"星期"
,
example
=
"周一"
)
private
String
week
;
@ApiModelProperty
(
value
=
"问题时段"
,
example
=
"7:35~8:40"
)
private
String
problemSpan
;
@ApiModelProperty
(
value
=
"状态:缓行/拥堵"
,
example
=
"拥堵"
)
private
String
status
;
@ApiModelProperty
(
value
=
"拥堵指数"
,
example
=
"4.5"
)
private
Double
congestIndex
;
@ApiModelProperty
(
value
=
"平均速度"
,
example
=
"10"
)
private
Integer
avgSpeed
;
@ApiModelProperty
(
value
=
"行程时间,单位分钟"
,
example
=
"10"
)
private
Integer
travelTime
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/design/GreenReportProblemOverallAnalysis.java
0 → 100644
View file @
1f051dd4
package
net
.
wanji
.
opt
.
controllerv2
.
report
.
design
;
import
com.alibaba.fastjson.JSON
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult
;
import
java.util.ArrayList
;
import
java.util.List
;
@Data
public
class
GreenReportProblemOverallAnalysis
extends
ParentResult
{
private
GreenReportProblemOverallAnalysisResponse
content
;
public
GreenReportProblemOverallAnalysisResponse
getContent
()
{
return
content
;
}
public
GreenReportProblemOverallAnalysis
setContent
(
GreenReportProblemOverallAnalysisResponse
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
GreenReportProblemOverallAnalysisResponse
{
@ApiModelProperty
(
value
=
"区域干线总拥堵次数"
,
example
=
"56次"
)
private
String
totalCongestCount
;
@ApiModelProperty
(
value
=
"区域干线总拥堵时长"
,
example
=
"11小时"
)
private
String
totalCongestDuration
;
@ApiModelProperty
(
value
=
"拥堵严重干线"
,
example
=
"经十路(舜耕路-山大路)、经十路(洪山路-舜华路)"
)
private
String
congestHeavyGreenWave
;
private
List
<
GreenReportSamePeriodData
>
dataList
=
new
ArrayList
<>();
}
@Data
class
GreenReportProblemOverallData
{
@ApiModelProperty
(
value
=
"干线ID"
,
example
=
""
)
private
String
greenId
;
@ApiModelProperty
(
value
=
"干线名称"
,
example
=
""
)
private
String
greenName
;
List
<
GreenWaveDirProblemData
>
list
=
new
ArrayList
<>();
}
@Data
class
GreenWaveDirProblemData
{
@ApiModelProperty
(
value
=
"干线类型"
,
example
=
"主干路"
)
private
String
greenWaveType
;
@ApiModelProperty
(
value
=
"方向"
,
example
=
"东向西"
)
private
String
dir
;
@ApiModelProperty
(
value
=
"拥堵指数"
,
example
=
"4.5"
)
private
Double
congestIndex
;
@ApiModelProperty
(
value
=
"拥堵次数"
,
example
=
"10"
)
private
Integer
congestCount
;
@ApiModelProperty
(
value
=
"拥堵时长,单位秒"
,
example
=
"10"
)
private
Integer
congestDuration
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/design/GreenReportRunStateResult.java
0 → 100644
View file @
1f051dd4
package
net
.
wanji
.
opt
.
controllerv2
.
report
.
design
;
import
com.alibaba.fastjson.JSON
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult
;
import
java.util.ArrayList
;
import
java.util.List
;
@Data
public
class
GreenReportRunStateResult
extends
ParentResult
{
private
List
<
GreenReportRunStateResponse
>
content
;
public
List
<
GreenReportRunStateResponse
>
getContent
()
{
return
content
;
}
public
GreenReportRunStateResult
setContent
(
List
<
GreenReportRunStateResponse
>
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
GreenReportRunStateResponse
{
@ApiModelProperty
(
value
=
"干线ID"
,
example
=
""
)
private
String
greenId
;
@ApiModelProperty
(
value
=
"干线名称"
,
example
=
""
)
private
String
greenName
;
@ApiModelProperty
(
value
=
"本周早高峰时段集中情况"
,
example
=
"7:30~8:30"
)
private
String
weekAmPeakSpan
;
@ApiModelProperty
(
value
=
"本周早高峰时段开始时间同比(上周)情况"
,
example
=
"提前20分钟"
)
private
String
amStartSameRatioSituation
;
@ApiModelProperty
(
value
=
"本周早高峰时段截止时间同比(上周)情况"
,
example
=
"延后20分钟"
)
private
String
amEndSameRatioSituation
;
@ApiModelProperty
(
value
=
"本周早高峰时段持续时长"
,
example
=
"45分钟"
)
private
String
amDuration
;
@ApiModelProperty
(
value
=
"本周早高峰时段持续时长同比(上周)情况"
,
example
=
"增加5分钟"
)
private
String
amDurationSameRatioSituation
;
@ApiModelProperty
(
value
=
"本周早高峰最大行程时间"
,
example
=
"30分钟"
)
private
String
amMaxTravelTime
;
@ApiModelProperty
(
value
=
"本周早高峰最大行程时间同比(上周)情况"
,
example
=
"减少6分钟"
)
private
String
amMaxTravelTimeSameRatioSituation
;
@ApiModelProperty
(
value
=
"平均拥堵指数"
,
example
=
"4.5"
)
private
String
amAvgContestIndex
;
@ApiModelProperty
(
value
=
"平均拥堵指数同比(上周)情况"
,
example
=
"减少0.5"
)
private
String
amAvgContestIndexSameRatioSituation
;
@ApiModelProperty
(
value
=
"本周早高峰时段集中情况"
,
example
=
"7:30~8:30"
)
private
String
weekPmPeakSpan
;
@ApiModelProperty
(
value
=
"本周早高峰时段开始时间同比(上周)情况"
,
example
=
"提前20分钟"
)
private
String
pmStartSameRatioSituation
;
@ApiModelProperty
(
value
=
"本周早高峰时段截止时间同比(上周)情况"
,
example
=
"延后20分钟"
)
private
String
pmEndSameRatioSituation
;
@ApiModelProperty
(
value
=
"本周早高峰时段持续时长"
,
example
=
"45分钟"
)
private
String
pmDuration
;
@ApiModelProperty
(
value
=
"本周早高峰时段持续时长同比(上周)情况"
,
example
=
"增加5分钟"
)
private
String
pmDurationSameRatioSituation
;
@ApiModelProperty
(
value
=
"本周早高峰最大行程时间"
,
example
=
"30分钟"
)
private
String
pmMaxTravelTime
;
@ApiModelProperty
(
value
=
"本周早高峰最大行程时间同比(上周)情况"
,
example
=
"减少6分钟"
)
private
String
pmMaxTravelTimeSameRatioSituation
;
@ApiModelProperty
(
value
=
"平均拥堵指数"
,
example
=
"4.5"
)
private
String
pmAvgContestIndex
;
@ApiModelProperty
(
value
=
"平均拥堵指数同比(上周)情况"
,
example
=
"减少0.5"
)
private
String
pmAvgContestIndexSameRatioSituation
;
private
List
<
GreenReportRunStatedData
>
dataList
=
new
ArrayList
<>();
}
@Data
class
GreenReportRunStatedData
{
@ApiModelProperty
(
value
=
"星期"
,
example
=
"星期一"
)
private
String
weekName
;
@ApiModelProperty
(
value
=
"峰期类型 早高峰、晚高峰、全天"
,
example
=
"早高峰"
)
private
String
peakName
;
@ApiModelProperty
(
value
=
"本周拥堵时段"
,
example
=
"7:35~8:40"
)
private
String
thisWeekCongestSpan
;
@ApiModelProperty
(
value
=
"上周拥堵时段"
,
example
=
"7:50~8:40"
)
private
String
lastWeekCongestSpan
;
@ApiModelProperty
(
value
=
"本周拥堵指数"
,
example
=
"3.5"
)
private
Double
thisWeekCongestIndex
;
@ApiModelProperty
(
value
=
"上周拥堵指数"
,
example
=
"3.0"
)
private
Double
lastWeekCongestIndex
;
@ApiModelProperty
(
value
=
"本周平均车速km/h"
,
example
=
"30.5"
)
private
Double
thisWeekAvgSpeed
;
@ApiModelProperty
(
value
=
"上周平均车速km"
,
example
=
"30.2"
)
private
Double
lastWeekAvgSpeed
;
@ApiModelProperty
(
value
=
"本周行程时间(分钟)"
,
example
=
"6.5"
)
private
Double
thisWeekTravelTime
;
@ApiModelProperty
(
value
=
"上周行程时间(分钟)"
,
example
=
"-1.5%"
)
private
Double
lastWeekTravelTime
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/design/GreenReportSamePeriodCompareResult.java
View file @
1f051dd4
...
...
@@ -33,7 +33,7 @@ public class GreenReportSamePeriodCompareResult extends ParentResult {
@Data
class
GreenReportSamePeriodCompareDataResponse
{
@ApiModelProperty
(
value
=
"
路口
ID"
,
example
=
""
)
@ApiModelProperty
(
value
=
"
干线
ID"
,
example
=
""
)
private
String
greenId
;
@ApiModelProperty
(
value
=
"干线名称"
,
example
=
""
)
...
...
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossDirFreeFlowSpeedDTO.java
0 → 100644
View file @
1f051dd4
package
net
.
wanji
.
opt
.
dto
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2023/10/14 19:06
*/
@Data
public
class
CrossDirFreeFlowSpeedDTO
{
private
String
crossId
;
private
Integer
dir
;
private
Double
freeFlowSpeed
;
}
signal-optimize-service/src/main/java/net/wanji/opt/entity/syslog/SysOptimizeLog.java
View file @
1f051dd4
...
...
@@ -51,4 +51,9 @@ public class SysOptimizeLog implements Serializable {
* 请求时间
*/
private
String
queryTime
;
/**
* 请求信息
*/
private
String
dataInfo
;
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/syslog/impl/SysLogServerImpl.java
View file @
1f051dd4
...
...
@@ -32,15 +32,49 @@ public class SysLogServerImpl extends ServiceImpl<SysLogMapper, SysOptimizeLog>
@Override
public
JSONObject
findSysOptimizeLog
(
String
crossId
,
String
startTime
,
String
endTime
,
Integer
pageNum
,
Integer
pageSize
)
{
List
<
SysOptimizeLog
>
list
=
sysLogMapper
.
findSysOptimizeLog
(
crossId
,
startTime
,
endTime
);
List
<
SysOptimizeLog
>
results
=
new
ArrayList
<>();
for
(
SysOptimizeLog
temp
:
list
){
switch
(
temp
.
getCommandType
())
{
case
"1"
:
JSONObject
temp1
=
JSONObject
.
parseObject
(
temp
.
getDataInfo
());
if
(
temp1
.
get
(
"command"
).
equals
(
1
))
{
temp
.
setCommandType
(
"步进控制"
);
}
else
if
(
temp1
.
get
(
"command"
).
equals
(
0
))
{
temp
.
setCommandType
(
"步进恢复"
);
}
break
;
case
"2"
:
temp
.
setCommandType
(
"恢复时间表"
);
break
;
case
"3"
:
JSONObject
temp2
=
JSONObject
.
parseObject
(
temp
.
getDataInfo
());
if
(
temp2
.
get
(
"command"
).
equals
(
1
))
{
temp
.
setCommandType
(
"相位锁定"
);
}
else
if
(
temp2
.
get
(
"command"
).
equals
(
0
))
{
temp
.
setCommandType
(
"相位解锁"
);
}
break
;
case
"4"
:
temp
.
setCommandType
(
"临时方案下发"
);
break
;
case
"5"
:
temp
.
setCommandType
(
"定时任务恢复失败"
);
break
;
default
:
temp
.
setCommandType
(
"其它操作"
);
break
;
}
results
.
add
(
temp
);
}
List
<
SysOptimizeLog
>
collect
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
list
)){
collect
=
list
.
stream
().
skip
((
pageNum
-
1
)
*
pageSize
).
limit
(
pageSize
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
results
)){
collect
=
results
.
stream
().
skip
((
pageNum
-
1
)
*
pageSize
).
limit
(
pageSize
).
collect
(
Collectors
.
toList
());
}
JSONObject
result
=
new
JSONObject
();
result
.
put
(
"fullDataList"
,
list
);
result
.
put
(
"fullDataList"
,
results
);
result
.
put
(
"pageList"
,
collect
);
result
.
put
(
"totalPage"
,
Math
.
ceil
((
double
)
list
.
size
()
/
pageSize
));
result
.
put
(
"totalSize"
,
list
.
size
());
result
.
put
(
"totalPage"
,
Math
.
ceil
((
double
)
results
.
size
()
/
pageSize
));
result
.
put
(
"totalSize"
,
results
.
size
());
return
result
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/task/HisenseGreenChartTask.java
View file @
1f051dd4
package
net
.
wanji
.
opt
.
task
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.dao.entity.GreenCrossDirDTO
;
import
net.wanji.databus.dao.entity.GreenwaveRealtimePO
;
import
net.wanji.databus.dao.mapper.GreenwaveRealtimeMapper
;
import
net.wanji.opt.cache.GreenCrossDirInfoCache
;
import
net.wanji.opt.common.CommonUtils
;
import
net.wanji.opt.common.RedisUtils
;
import
net.wanji.opt.common.enums.GreenBeltDirEnum
;
import
net.wanji.opt.dto.RingPhaseInfoDTO
;
import
net.wanji.opt.dto.SchemeGreenDirGreenTimeDTO
;
import
org.springframework.context.annotation.Profile
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
...
...
@@ -25,20 +32,105 @@ import java.util.stream.Collectors;
*/
@Component
@Slf4j
@Profile
(
"test"
)
public
class
HisenseGreenChartTask
{
@Resource
private
RedisUtils
redisUtils
;
@Resource
private
GreenwaveRealtimeMapper
greenwaveRealtimeMapper
;
@Scheduled
(
fixedRate
=
10
*
60
*
1000
,
initialDelay
=
1
*
60
*
1000
)
//@Scheduled(fixedRate = 1 * 60 * 1000, initialDelay = 30 * 1000)
public
void
getGreenChart
()
{
try
{
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
Map
<
String
,
GreenwaveRealtimePO
>
realTimeMap
=
getGreenRealTimeMap
();
// 绿波路口数据
List
<
GreenCrossDirDTO
>
greenCrossDirCache
=
GreenCrossDirInfoCache
.
greenCrossDirCache
;
if
(!
CollectionUtils
.
isEmpty
(
greenCrossDirCache
))
{
List
<
SchemeGreenDirGreenTimeDTO
>
schemeGreenDirGreenTimeDTOS
=
getSchemeGreenDirGreenTimeDTOS
(
greenCrossDirCache
);
if
(!
CollectionUtils
.
isEmpty
(
greenCrossDirCache
)
&&
!
CollectionUtils
.
isEmpty
(
schemeGreenDirGreenTimeDTOS
))
{
// 将海信方案环相位转成map形式
HashMap
<
String
,
SchemeGreenDirGreenTimeDTO
>
greenDirGreenTimeMap
=
new
HashMap
<>();
for
(
SchemeGreenDirGreenTimeDTO
dto
:
schemeGreenDirGreenTimeDTOS
)
{
String
crossId
=
dto
.
getCrossId
();
Integer
dir
=
dto
.
getDir
();
greenDirGreenTimeMap
.
put
(
CommonUtils
.
getStrJoin
(
crossId
,
String
.
valueOf
(
dir
)),
dto
);
}
// 计算绿灯红灯点位
// 1.现根据绿波长度和速度计算行程时间
// 2.在多个周期中计算相位差绿灯时间
// 3.从相位差绿的时间通过两个路口距离和速度计算两个路口绿灯开始时间
Map
<
Integer
,
List
<
GreenCrossDirDTO
>>
greenMap
=
greenCrossDirCache
.
stream
().
collect
(
Collectors
.
groupingBy
(
GreenCrossDirDTO:
:
getGreenId
));
for
(
Map
.
Entry
<
Integer
,
List
<
GreenCrossDirDTO
>>
entry
:
greenMap
.
entrySet
())
{
Integer
greenId
=
entry
.
getKey
();
List
<
GreenCrossDirDTO
>
value
=
entry
.
getValue
();
// 1.获取行程时间
GreenCrossDirDTO
indexDTO
=
value
.
get
(
0
);
Integer
indexDir
=
indexDTO
.
getInDir
();
Integer
totalDistance
=
indexDTO
.
getTotalDistance
();
String
greenKey
=
CommonUtils
.
getStrJoin
(
String
.
valueOf
(
greenId
),
String
.
valueOf
(
indexDir
));
GreenwaveRealtimePO
greenwaveRealtimePO
=
realTimeMap
.
get
(
greenKey
);
// km/h速度换成m/s
Double
speed
=
greenwaveRealtimePO
.
getSpeed
()
/
3.6
;
Double
travelTime
=
totalDistance
/
speed
;
for
(
GreenCrossDirDTO
greenCrossDirDTO
:
value
)
{
String
crossId
=
greenCrossDirDTO
.
getCrossId
();
String
crossKey
=
CommonUtils
.
getStrJoin
(
String
.
valueOf
(
crossId
),
String
.
valueOf
(
indexDir
));
// 获取海信环相位信息
SchemeGreenDirGreenTimeDTO
firstGreenTimeDTO
=
greenDirGreenTimeMap
.
get
(
crossKey
);
Integer
cycleLen
=
firstGreenTimeDTO
.
getCycleLen
();
Integer
offset
=
firstGreenTimeDTO
.
getOffset
();
Integer
greenEndTime
=
firstGreenTimeDTO
.
getEnd
();
// 计算出绿灯结束时间到周期结束时间:
Integer
redEndTime
=
cycleLen
-
greenEndTime
;
// 通过行程时间计算周期数量 + 1
double
cycleSum
=
Math
.
ceil
(
travelTime
/
cycleLen
)
+
1
;
for
(
int
i
=
0
;
i
<
cycleSum
;
i
++)
{
Double
cycleIndex
=
i
*
Double
.
valueOf
(
cycleLen
);
if
(
redEndTime
>
offset
)
{
}
}
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"通过海信方案处理绿波波定时任务失败:{}"
,
e
);
//throw new RuntimeException(e);
}
}
private
Map
<
String
,
GreenwaveRealtimePO
>
getGreenRealTimeMap
()
{
Map
<
String
,
GreenwaveRealtimePO
>
realTimeMap
=
new
HashMap
<>();
LambdaQueryWrapper
<
GreenwaveRealtimePO
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
List
<
GreenwaveRealtimePO
>
greenwaveRealtimePOList
=
greenwaveRealtimeMapper
.
selectList
(
queryWrapper
);
for
(
GreenwaveRealtimePO
greenwaveRealtimePO
:
greenwaveRealtimePOList
)
{
Integer
greenId
=
greenwaveRealtimePO
.
getGreenId
();
String
roadDirection
=
greenwaveRealtimePO
.
getRoadDirection
();
Integer
inDir
=
GreenBeltDirEnum
.
getInDir
(
roadDirection
);
realTimeMap
.
put
(
String
.
valueOf
(
greenId
).
concat
(
"_"
).
concat
(
String
.
valueOf
(
inDir
)),
greenwaveRealtimePO
);
}
return
realTimeMap
;
}
/**
* 通过绿波路口获取海信路口协调方向相位绿灯信息
*
* @return
* @throws JsonProcessingException
*/
private
List
<
SchemeGreenDirGreenTimeDTO
>
getSchemeGreenDirGreenTimeDTOS
(
List
<
GreenCrossDirDTO
>
greenCrossDirCache
)
throws
Exception
{
List
<
SchemeGreenDirGreenTimeDTO
>
schemeGreenDirGreenTimeDTOS
=
new
ArrayList
<>();
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
if
(!
CollectionUtils
.
isEmpty
(
greenCrossDirCache
))
{
for
(
GreenCrossDirDTO
greenCrossDirDTO
:
greenCrossDirCache
)
{
Integer
greenId
=
greenCrossDirDTO
.
getGreenId
();
String
greenCrossId
=
greenCrossDirDTO
.
getCrossId
();
...
...
@@ -49,7 +141,8 @@ public class HisenseGreenChartTask {
if
(
StringUtils
.
isBlank
(
str
))
{
continue
;
}
List
<
RingPhaseInfoDTO
>
ringPhaseInfoDTOS
=
mapper
.
readValue
(
str
,
new
TypeReference
<
List
<
RingPhaseInfoDTO
>>()
{});
List
<
RingPhaseInfoDTO
>
ringPhaseInfoDTOS
=
mapper
.
readValue
(
str
,
new
TypeReference
<
List
<
RingPhaseInfoDTO
>>()
{
});
// 遍历绿波路口协调方向
if
(
StringUtils
.
isNotBlank
(
greenDirStr
))
{
String
[]
greenDirArray
=
greenDirStr
.
split
(
","
);
...
...
@@ -111,9 +204,7 @@ public class HisenseGreenChartTask {
}
log
.
error
(
"路口绿灯协调方向时间:{}"
,
mapper
.
writeValueAsString
(
schemeGreenDirGreenTimeDTOS
));
}
}
catch
(
Exception
e
)
{
log
.
error
(
"通过海信方案处理绿波波定时任务失败:{}"
,
e
);
//throw new RuntimeException(e);
}
return
schemeGreenDirGreenTimeDTOS
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/task/InducesMonitorTask.java
View file @
1f051dd4
...
...
@@ -31,6 +31,7 @@ import net.wanji.opt.synthesis.pojo.StrategyControlDetailList;
import
net.wanji.opt.synthesis.pojo.StrategyDailyPlanInfoEntity
;
import
net.wanji.opt.synthesis.pojo.StrategyPlanInfoEntity
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Profile
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
...
...
@@ -56,6 +57,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
@Component
@Slf4j
@Profile
(
"docker"
)
public
class
InducesMonitorTask
{
@Autowired
...
...
signal-optimize-service/src/main/resources/mapper/GreenwaveHistMapper.xml
View file @
1f051dd4
...
...
@@ -270,7 +270,12 @@
<!-- 统一接口:绿波路口车道级指标趋势,支持按5分钟粒度、15分钟粒度、30分钟粒度、1小时粒度汇聚 -->
<select
id=
"findCrossObjectIndex"
resultType=
"net.wanji.opt.po.base.CrossLaneDataHistPoExtend"
>
SELECT MIN(ifnull(t.unit_time,#{startDate})) start_time,
SELECT (case
when #{groupType}=4 then date_format(dt,'%Y-%m-%d 00:00:00')
else
MIN(ifnull(t.unit_time,#{startDate}))
end
) start_time,
cross_id ,
lane_no ,
dir_type ,
...
...
@@ -289,12 +294,12 @@
group_concat(service_level) service_level
FROM
(
SELECT start_time,
SELECT start_time,
dt,
(case
when #{groupType}=0 then
DATE_FORMAT(concat( date( start_time ), ' ', HOUR ( start_time ), ':', floor( MINUTE ( start_time ) / 5 ) * 5 ),'%Y-%m-%d %H:%i:00' )
when #{groupType}=1 then
DATE_FORMAT(concat( date( start_time ), ' ', HOUR ( start_time ), ':', floor( MINUTE ( start_time ) / 15 ) * 15 ),'%Y-%m-%d %H:%i:00' )
when #{groupType}=2 then
DATE_FORMAT(concat( date( start_time ), ' ', HOUR ( start_time ), ':', floor( MINUTE ( start_time ) / 30 ) * 30 ),'%Y-%m-%d %H:%i:00' )
when #{groupType}=3 then
DATE_FORMAT(start_time,'%Y-%m-%d %H:00:00' )
when #{groupType}=0 then
start_time
when #{groupType}=1 then
dt_15min
when #{groupType}=2 then
dt_30min
when #{groupType}=3 then
dt
when #{groupType}=4 then DATE_FORMAT(start_time,'%Y-%m-%d 00:00:00' )
else DATE_FORMAT(start_time,'%Y-01-01 00:00:00')
<!-- 按查询时间范围不分粒度进行聚合处理 -->
end
...
...
@@ -405,15 +410,15 @@
<choose>
<!-- 方向级 -->
<when
test=
"objectType==1"
>
GROUP BY t.cross_id,
t.dir_type,unit_tim
e
GROUP BY t.cross_id,
unit_time,t.dir_typ
e
</when>
<!-- 转向级 -->
<when
test=
"objectType==2"
>
GROUP BY t.cross_id,
t.dir_type,t.turn_type,unit_tim
e
GROUP BY t.cross_id,
unit_time,t.dir_type,t.turn_typ
e
</when>
<!-- 车道级 -->
<when
test=
"objectType==3"
>
GROUP BY t.cross_id,
t.lane_no,t.dir_type,t.turn_type,unit_tim
e
GROUP BY t.cross_id,
unit_time,t.lane_no,t.dir_type,t.turn_typ
e
</when>
<!-- 路口级 -->
<when
test=
"objectType==4"
>
...
...
@@ -787,12 +792,7 @@
<select
id=
"findCrossObjectIndexByDay"
resultType=
"net.wanji.opt.po.base.CrossLaneDataHistPoExtend"
>
SELECT
(case
when #{groupType}=4 then date_format(dt,'%Y-%m-%d 00:00:00')
else
MIN(ifnull(t.unit_time,#{startDate}))
end
) start_time,
MIN(ifnull(t.unit_time,#{startDate})) start_time,
cross_id ,
lane_no ,
dir_type ,
...
...
@@ -813,11 +813,10 @@
(
SELECT start_time,
(case
when #{groupType}=0 then start_time
when #{groupType}=1 then dt_15min
when #{groupType}=2 then dt_30min
when #{groupType}=3 then dt_60min
when #{groupType}=4 then dt
when #{groupType}=0 then DATE_FORMAT(concat( date( start_time ), ' ', HOUR ( start_time ), ':', floor( MINUTE ( start_time ) / 5 ) * 5 ),'%Y-%m-%d %H:%i:00' )
when #{groupType}=1 then DATE_FORMAT(concat( date( start_time ), ' ', HOUR ( start_time ), ':', floor( MINUTE ( start_time ) / 15 ) * 15 ),'%Y-%m-%d %H:%i:00' )
when #{groupType}=2 then DATE_FORMAT(concat( date( start_time ), ' ', HOUR ( start_time ), ':', floor( MINUTE ( start_time ) / 30 ) * 30 ),'%Y-%m-%d %H:%i:00' )
when #{groupType}=3 then DATE_FORMAT(start_time,'%Y-%m-%d %H:00:00' )
else DATE_FORMAT(now(),'%Y-01-01 00:00:00')
<!-- 按查询时间范围不分粒度进行聚合处理 -->
end
) unit_time,
...
...
signal-optimize-service/src/main/resources/mapper/syslog/SysLogMapper.xml
View file @
1f051dd4
...
...
@@ -10,11 +10,12 @@
<result
property=
"commandType"
column=
"command_type"
></result>
<result
property=
"commandResult"
column=
"command_result"
></result>
<result
property=
"queryTime"
column=
"query_time"
></result>
<result
property=
"dataInfo"
column=
"data_info"
></result>
</resultMap>
<select
id=
"findSysOptimizeLog"
resultMap=
"SysOptimizeLogMap"
parameterType=
"String"
>
SELECT t.query_time,t.ip ,t.cross_id,t1.name ,t.`operate-user`,
case t.command_type when 1 then '步进控制/恢复(公用)' when 2 then '恢复时间表(公用)' when 3 then '相位锁定/解锁(公用)' when 4 then '临时方案下发(公用)' when 5 then '定时任务恢复失败' end as
command_type ,
SELECT t.query_time,t.ip ,t.cross_id,t1.name ,t.`operate-user`,
t.data_info,
t.
command_type ,
case t.command_result when 1 then '成功' when 2 then '失败' when 3 then '停止失败任务解锁' end as command_result
FROM t_signal_utc_jinan.t_signal_command_log t
left join t_signal_utc_jinan.t_cross_info t1 on t.cross_id = t1.id
...
...
wj-databus/src/main/java/net/wanji/databus/dao/entity/GreenCrossDirDTO.java
View file @
1f051dd4
...
...
@@ -11,4 +11,9 @@ public class GreenCrossDirDTO {
private
Integer
greenId
;
private
String
crossId
;
private
String
greenDir
;
private
Integer
inDir
;
private
Integer
outDir
;
private
Integer
sort
;
private
Integer
distance
;
private
Integer
totalDistance
;
}
wj-databus/src/main/resources/mapper/GreenwaveCrossMapper.xml
View file @
1f051dd4
...
...
@@ -68,7 +68,10 @@
</select>
<select
id=
"selectAllGreenCrossDir"
resultType=
"net.wanji.databus.dao.entity.GreenCrossDirDTO"
>
select t2.green_id, t2.cross_id, t1.green_dir from t_greenwave_info t1
select
t2.green_id, t2.cross_id, t1.green_dir, t2.in_dir, t2.out_dir, t2.sort,
t2.next_cross_len distance, t1.length total_distance
from t_greenwave_info t1
left join t_greenwave_cross t2 on t1.id = t2.green_id
</select>
...
...
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