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
3980f854
Commit
3980f854
authored
Apr 15, 2025
by
duanruiming
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
f0cde6e2
e0038e65
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
698 additions
and
145 deletions
+698
-145
CrossOptimizeAnalysisController.java
.../controllerv2/report/CrossOptimizeAnalysisController.java
+83
-0
CrossProblemController.java
...wanji/opt/controllerv2/report/CrossProblemController.java
+76
-0
CrossImportProblemAnalysisResult.java
...lerv2/report/design/CrossImportProblemAnalysisResult.java
+93
-0
CrossOptimizeAnalysisResult.java
...ntrollerv2/report/design/CrossOptimizeAnalysisResult.java
+93
-0
CrossProblemTotalityAnalysisResult.java
...rv2/report/design/CrossProblemTotalityAnalysisResult.java
+92
-0
ImportCrossReportAnalysis.java
...controllerv2/report/design/ImportCrossReportAnalysis.java
+128
-0
StrategyPriorityController.java
...opt/controllerv2/strategy/StrategyPriorityController.java
+20
-43
StrategyPriorityMapper.java
...wanji/opt/dao/mapper/strategy/StrategyPriorityMapper.java
+3
-1
StrategyPriorityConfig.java
...net/wanji/opt/entity/strategy/StrategyPriorityConfig.java
+4
-0
StrategyPriorityDailyInfo.java
.../wanji/opt/entity/strategy/StrategyPriorityDailyInfo.java
+15
-3
StrategyPriorityGroup.java
.../wanji/opt/entity/strategy/dto/StrategyPriorityGroup.java
+2
-0
StrategyPriorityService.java
...wanji/opt/servicev2/strategy/StrategyPriorityService.java
+3
-36
StrategyPriorityServiceImpl.java
.../servicev2/strategy/impl/StrategyPriorityServiceImpl.java
+71
-60
StrategyPriorityMapper.xml
...main/resources/mapper/strategy/StrategyPriorityMapper.xml
+15
-2
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/CrossOptimizeAnalysisController.java
0 → 100644
View file @
3980f854
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.CrossOptimizeAnalysisResult
;
import
net.wanji.opt.controllerv2.report.design.GreenWaveOptimizeAnalysisResult
;
import
net.wanji.opt.controllerv2.report.design.ImportCrossReportAnalysis
;
import
net.wanji.opt.controllerv2.report.design.ImportGreenReportAnalysis
;
import
net.wanji.opt.controllerv2.report.vo.GreenWaveOptimizeAnalysisResultResponseDTO
;
import
net.wanji.opt.controllerv2.report.vo.ImportGreenReportAnalysisResponseVO
;
import
net.wanji.opt.servicev2.report.AnalysisGreenWaveOptimizeWeekService
;
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.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* <p>
* 干线概况 接口API
* </p>
* @version 1.0
* @author
* @Date 2025-03-18
*/
@RestController
@Slf4j
@RequestMapping
(
"/cross-optimize"
)
@Api
(
value
=
"CrossOptimizeAnalysisController"
,
description
=
"路口分析报告"
,
tags
=
"路口分析报告-周报"
)
public
class
CrossOptimizeAnalysisController
{
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"4.1-路口优化-总体分析"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"crossIds"
,
value
=
"干线ID,多个id用','分隔【为空时查询所有干线】"
,
required
=
false
,
dataType
=
"String"
,
defaultValue
=
"13NEJ0B5R80,13N650B5P30"
),
@ApiImplicitParam
(
name
=
"year"
,
value
=
"年份"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"2025"
),
@ApiImplicitParam
(
name
=
"week"
,
value
=
"一年的第几周"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"14"
),
})
@GetMapping
(
value
=
"/getTotalityData"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossOptimizeAnalysisResult
.
class
),
})
public
JsonViewObject
getTotalityData
(
Integer
year
,
Integer
week
,
@RequestParam
(
required
=
false
)
String
crossIds
)
{
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
;
}
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"4.2-重点路口优化分析"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"crossIds"
,
value
=
"干线ID,多个id用','分隔【为空时查询所有干线】"
,
required
=
false
,
dataType
=
"String"
,
defaultValue
=
"13NEJ0B5R80,13N650B5P30"
),
@ApiImplicitParam
(
name
=
"year"
,
value
=
"年份"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"2025"
),
@ApiImplicitParam
(
name
=
"week"
,
value
=
"一年的第几周"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"14"
),
})
@GetMapping
(
value
=
"/getProblemDetail"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ImportCrossReportAnalysis
.
class
),
})
public
JsonViewObject
getProblemDetail
(
Integer
year
,
Integer
week
,
@RequestParam
(
required
=
false
)
String
crossIds
)
{
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/CrossProblemController.java
0 → 100644
View file @
3980f854
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.CrossImportProblemAnalysisResult
;
import
net.wanji.opt.controllerv2.report.design.CrossProblemTotalityAnalysisResult
;
import
net.wanji.opt.controllerv2.report.design.CrossRunStateAnalysisResult
;
import
net.wanji.opt.controllerv2.report.design.CrossRunStatePeakAnalysisResult
;
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
(
"/cross-problem"
)
@Api
(
value
=
"CrossProblemController"
,
description
=
""
,
tags
=
"路口分析报告-周报"
)
public
class
CrossProblemController
{
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"3.1-区域路口问题总体分析"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"crossIds"
,
value
=
"路口ID,多个id用','分隔【为空时查询所有】"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"13NEJ0B5R80,13N650B5P30"
),
@ApiImplicitParam
(
name
=
"year"
,
value
=
"年份"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"2025"
),
@ApiImplicitParam
(
name
=
"week"
,
value
=
"一年的第几周"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"14"
),
})
@GetMapping
(
value
=
"/getTotalitySituation"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossProblemTotalityAnalysisResult
.
class
),
})
public
JsonViewObject
getTotalitySituation
(
String
crossIds
,
Integer
year
,
Integer
week
)
{
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
;
}
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"3.2-区域路口重点问题分析"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"crossIds"
,
value
=
"路口ID,多个id用','分隔【为空时查询所有】"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"13NEJ0B5R80,13N650B5P30"
),
@ApiImplicitParam
(
name
=
"year"
,
value
=
"年份"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"2025"
),
@ApiImplicitParam
(
name
=
"week"
,
value
=
"一年的第几周"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"14"
),
})
@GetMapping
(
value
=
"/getSeriousProblem"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossImportProblemAnalysisResult
.
class
),
})
public
JsonViewObject
getPeakData
(
String
crossIds
,
Integer
year
,
Integer
week
)
{
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/CrossImportProblemAnalysisResult.java
0 → 100644
View file @
3980f854
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
CrossImportProblemAnalysisResult
extends
ParentResult
{
private
CrossImportProblemResultResponse
content
;
public
CrossImportProblemResultResponse
getContent
()
{
return
content
;
}
public
CrossImportProblemAnalysisResult
setContent
(
CrossImportProblemResultResponse
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
CrossImportProblemResultResponse
{
@ApiModelProperty
(
value
=
"溢出最严重路口"
,
example
=
"旅游路-洪山路交叉口、旅游路-霞景路交叉口"
,
position
=
0
)
private
String
overFlowCrossName
;
@ApiModelProperty
(
value
=
"本周溢出时长"
,
example
=
"3.5小时"
,
position
=
1
)
private
String
overFlowDuration
;
@ApiModelProperty
(
value
=
"拥堵最严重路口"
,
example
=
"旅游路-洪山路交叉口、旅游路-霞景路交叉口"
,
position
=
2
)
private
String
congestCrossName
;
@ApiModelProperty
(
value
=
"本周溢出时长"
,
example
=
"3.5小时"
,
position
=
3
)
private
String
congestDuration
;
//================================================================================================//
@ApiModelProperty
(
value
=
"溢出路口排名,top10"
,
position
=
4
)
private
List
<
CrossImportProblemData
>
overFlowList
=
new
ArrayList
<>();
@ApiModelProperty
(
value
=
"拥堵路口排名,top10"
,
position
=
5
)
private
List
<
CrossImportProblemData
>
congestList
=
new
ArrayList
<>();
}
@Data
class
CrossImportProblemData
{
@ApiModelProperty
(
value
=
"数据类型:1溢出 2拥堵"
,
example
=
"1"
,
position
=
0
)
private
String
dataType
;
@ApiModelProperty
(
value
=
"路口名称"
,
example
=
"旅游路-洪山路交叉口"
,
position
=
1
)
private
String
crossName
;
@ApiModelProperty
(
value
=
"持续时长"
,
example
=
"90"
,
position
=
2
)
private
Integer
duration
;
@ApiModelProperty
(
value
=
"本周路口最严重时段"
,
example
=
"7:00~7:30"
,
position
=
3
)
private
String
seriousTimeSpan
;
@ApiModelProperty
(
value
=
"本周路口最严重时段持续时长"
,
example
=
"溢出时长30分钟"
,
position
=
4
)
private
String
seriousTimeSpanDuration
;
@ApiModelProperty
(
value
=
"工作日平均每天溢出次数"
,
example
=
"3次"
,
position
=
5
)
private
String
workDayAvgOverCount
;
@ApiModelProperty
(
value
=
"工作日平均每天溢出时长"
,
example
=
"溢出时长30分钟"
,
position
=
6
)
private
String
workDayAvgOverDuration
;
@ApiModelProperty
(
value
=
"路口每天时段详情"
,
position
=
7
)
private
List
<
CrossImportProblemDetail
>
list
=
new
ArrayList
<>();
}
@Data
class
CrossImportProblemDetail
{
@ApiModelProperty
(
value
=
"周几"
,
example
=
"周一"
,
position
=
0
)
private
String
weekName
;
@ApiModelProperty
(
value
=
"时段"
,
example
=
"7:00~7:30"
,
position
=
1
)
private
String
timeSpan
;
@ApiModelProperty
(
value
=
"时长"
,
example
=
"30分钟"
,
position
=
2
)
private
String
duration
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/design/CrossOptimizeAnalysisResult.java
0 → 100644
View file @
3980f854
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
CrossOptimizeAnalysisResult
extends
ParentResult
{
private
CrossOptimizeResultResponse
content
;
public
CrossOptimizeResultResponse
getContent
()
{
return
content
;
}
public
CrossOptimizeAnalysisResult
setContent
(
CrossOptimizeResultResponse
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
CrossOptimizeResultResponse
{
@ApiModelProperty
(
value
=
"路口名称"
,
example
=
"经十路(舜耕路-山大路)"
,
position
=
0
)
private
String
crossName
;
@ApiModelProperty
(
value
=
"本周优化次数"
,
example
=
"300次"
,
position
=
1
)
private
String
weekOptimizeCount
;
@ApiModelProperty
(
value
=
"本周优化时长"
,
example
=
"98小时"
,
position
=
2
)
private
String
weekOptimizeDuration
;
@ApiModelProperty
(
value
=
"本周溢出次数"
,
example
=
"98小时"
,
position
=
3
)
private
String
weekOptimizeOverflowCount
;
@ApiModelProperty
(
value
=
"本周拥堵次数"
,
example
=
"98小时"
,
position
=
4
)
private
String
weekOptimizeCongestCount
;
@ApiModelProperty
(
value
=
"本周空放优化次数"
,
example
=
"98小时"
,
position
=
5
)
private
String
weekOptimizeEmptyCount
;
@ApiModelProperty
(
value
=
"本周失衡优化次数"
,
example
=
"98小时"
,
position
=
6
)
private
String
weekOptimizeUnbalanceCount
;
@ApiModelProperty
(
value
=
"本周通行能力同比情况"
,
example
=
"提升10%"
,
position
=
7
)
private
String
weekCapacitySituation
;
@ApiModelProperty
(
value
=
"本周通停车次数同比情况"
,
example
=
"减少10%"
,
position
=
8
)
private
String
weekStopTimesSituation
;
@ApiModelProperty
(
value
=
"本周通延误时间同比情况"
,
example
=
"增加10%"
,
position
=
9
)
private
String
weekDelayTimeSituation
;
@ApiModelProperty
(
value
=
"本周通最大排队同比情况"
,
example
=
"降低10%"
,
position
=
10
)
private
String
weekMaxQueueLengthSituation
;
@ApiModelProperty
(
value
=
"本周总体情况"
,
example
=
"明显提升"
,
position
=
11
)
private
String
weekTotalitySituation
;
//================================================================================================//
@ApiModelProperty
(
value
=
"时段列表"
,
example
=
"[\"本周\",\"上周\"]"
)
private
List
<
String
>
timeList
=
new
ArrayList
<>();
private
List
<
CrossOptimizeAnalysisData
>
dataList
=
new
ArrayList
<>();
}
@Data
class
CrossOptimizeAnalysisData
{
@ApiModelProperty
(
value
=
"通行能力"
,
example
=
"8900"
)
private
Integer
capacity
;
@ApiModelProperty
(
value
=
"停车次数"
,
example
=
"5"
)
private
Double
stopTimes
;
@ApiModelProperty
(
value
=
"延误时间,单位秒"
,
example
=
"40"
)
private
Double
delayTime
;
@ApiModelProperty
(
value
=
"最大排队长度"
,
example
=
"6.9"
)
private
Double
maxQueueLength
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/design/CrossProblemTotalityAnalysisResult.java
0 → 100644
View file @
3980f854
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
CrossProblemTotalityAnalysisResult
extends
ParentResult
{
private
CrossProblemTotalityResultResponse
content
;
public
CrossProblemTotalityResultResponse
getContent
()
{
return
content
;
}
public
CrossProblemTotalityAnalysisResult
setContent
(
CrossProblemTotalityResultResponse
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
CrossProblemTotalityResultResponse
{
@ApiModelProperty
(
value
=
"路口名称"
,
example
=
"经十路(舜耕路-山大路)"
,
position
=
0
)
private
String
crossName
;
@ApiModelProperty
(
value
=
"本周溢出总次数"
,
example
=
"20次"
,
position
=
1
)
private
String
weekOverFlowCount
;
@ApiModelProperty
(
value
=
"本周溢出总次数与上周比较情况"
,
example
=
"增加【减少】10%"
,
position
=
2
)
private
String
weekOverFlowCountCompare
;
@ApiModelProperty
(
value
=
"本周溢出时长"
,
example
=
"3.5小时"
,
position
=
3
)
private
String
weekOverFlowDuration
;
@ApiModelProperty
(
value
=
"本周溢出时长与上周比较情况"
,
example
=
"增加【减少】13%"
,
position
=
4
)
private
String
weekOverFlowDurationCompare
;
@ApiModelProperty
(
value
=
"本周拥堵总次数"
,
example
=
"20次"
,
position
=
5
)
private
String
weekCongestCount
;
@ApiModelProperty
(
value
=
"本周拥堵总次数与上周比较情况"
,
example
=
"增加【减少】10%"
,
position
=
6
)
private
String
weekCongestCountCompare
;
@ApiModelProperty
(
value
=
"本周拥堵时长"
,
example
=
"3.5小时"
,
position
=
7
)
private
String
weekCongestDuration
;
@ApiModelProperty
(
value
=
"本周拥堵时长与上周比较情况"
,
example
=
"增加【减少】13%"
,
position
=
8
)
private
String
weekCongestDurationCompare
;
//================================================================================================//
private
List
<
CrossProblemTotalityData
>
dataList
=
new
ArrayList
<>();
}
@Data
class
CrossProblemTotalityData
{
@ApiModelProperty
(
value
=
"数据类型:1次数 2时长"
,
example
=
"1"
,
position
=
0
)
private
String
dataType
;
@ApiModelProperty
(
value
=
"本周溢出数值【次数或时长】"
,
example
=
"8900"
,
position
=
0
)
private
String
thisWeekOverFlowNumber
;
@ApiModelProperty
(
value
=
"上周溢出数值【次数或时长】"
,
example
=
"8900"
,
position
=
1
)
private
String
lastWeekOverFlowNumber
;
@ApiModelProperty
(
value
=
"本周拥堵数值【次数或时长】"
,
example
=
"8900"
,
position
=
2
)
private
String
thisWeekCongestNumber
;
@ApiModelProperty
(
value
=
"上周拥堵数值【次数或时长】"
,
example
=
"8900"
,
position
=
3
)
private
String
lastWeekCongestNumber
;
@ApiModelProperty
(
value
=
"本周失衡数值【次数或时长】"
,
example
=
"8900"
,
position
=
4
)
private
String
thisWeekUnbalanceNumber
;
@ApiModelProperty
(
value
=
"上周失衡数值【次数或时长】"
,
example
=
"8900"
,
position
=
5
)
private
String
lastWeekUnbalanceNumber
;
@ApiModelProperty
(
value
=
"本周空放数值【次数或时长】"
,
example
=
"8900"
,
position
=
6
)
private
String
thisWeekEmptyPassNumber
;
@ApiModelProperty
(
value
=
"上周空放数值【次数或时长】"
,
example
=
"8900"
,
position
=
7
)
private
String
lastWeekEmptyPassNumber
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/report/design/ImportCrossReportAnalysis.java
0 → 100644
View file @
3980f854
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
ImportCrossReportAnalysis
extends
ParentResult
{
private
List
<
ImportCrossAnalysisResponse
>
content
;
public
List
<
ImportCrossAnalysisResponse
>
getContent
()
{
return
content
;
}
public
ImportCrossReportAnalysis
setContent
(
List
<
ImportCrossAnalysisResponse
>
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
ImportCrossAnalysisResponse
{
@ApiModelProperty
(
value
=
"路口名称"
,
example
=
"经十路(舜耕路-山大路)"
,
position
=
0
)
private
String
crossName
;
@ApiModelProperty
(
value
=
"本周优化集中时段分布情况"
,
example
=
"7:00~8:00,12:00~13:30,17:30~18:40"
,
position
=
1
)
private
String
optimizeSpan
;
@ApiModelProperty
(
value
=
"本周溢出优化次数"
,
example
=
"10次"
,
position
=
2
)
private
String
overFlowOptimizeCount
;
@ApiModelProperty
(
value
=
"本周溢出主要发生方向"
,
example
=
"北出口、南出口"
,
position
=
3
)
private
String
overFlowDirs
;
@ApiModelProperty
(
value
=
"本周拥堵优化次数"
,
example
=
"10次"
,
position
=
4
)
private
String
congestOptimizeCount
;
@ApiModelProperty
(
value
=
"本周拥堵主要发生方向"
,
example
=
"北出口、南出口"
,
position
=
5
)
private
String
congestDirs
;
@ApiModelProperty
(
value
=
"本周空放优化次数"
,
example
=
"10次"
,
position
=
6
)
private
String
emptyPassOptimizeCount
;
@ApiModelProperty
(
value
=
"本周空放主要发生方向"
,
example
=
"北出口、南出口"
,
position
=
7
)
private
String
emptyPassDirs
;
@ApiModelProperty
(
value
=
"本周失衡优化次数"
,
example
=
"10次"
,
position
=
8
)
private
String
unbalanceOptimizeCount
;
@ApiModelProperty
(
value
=
"本周失衡主要发生方向"
,
example
=
"北出口、南出口"
,
position
=
9
)
private
String
unbalanceDirs
;
//================================================================================================//
@ApiModelProperty
(
value
=
"本周平均通行能力"
,
example
=
"7800辆/小时"
,
position
=
10
)
private
String
avgCapacity
;
@ApiModelProperty
(
value
=
"平均通行能力与上周相比情况"
,
example
=
"提升"
,
position
=
11
)
private
String
avgCapacityCompareSituation
;
//================================================================================================//
@ApiModelProperty
(
value
=
"本周延误时间"
,
example
=
"22"
,
position
=
12
)
private
String
delayTime
;
@ApiModelProperty
(
value
=
"延误时间与上周相比情况"
,
example
=
"增加【减少】10%"
,
position
=
13
)
private
String
delayTimeCompare
;
//================================================================================================//
@ApiModelProperty
(
value
=
"本周停车次数"
,
example
=
"22"
,
position
=
14
)
private
String
avgStopTimes
;
@ApiModelProperty
(
value
=
"平均拥堵指数与上周相比情况"
,
example
=
"增加【减少】10%"
,
position
=
15
)
private
String
avgCongestIndexCompare
;
//================================================================================================//
@ApiModelProperty
(
value
=
"本周最大排队长度"
,
example
=
"203"
,
position
=
16
)
private
String
maxQueueLength
;
@ApiModelProperty
(
value
=
"本周最大排队长度与上周相比情况"
,
example
=
"提升【降低】10%"
,
position
=
17
)
private
String
maxQueueLengthCompare
;
//================================================================================================//
@ApiModelProperty
(
value
=
"本周总体效果情况"
,
example
=
"明显提升"
,
position
=
18
)
private
String
weekTotalitySituation
;
private
List
<
ImportCrossReportAnalysisData
>
dataList
=
new
ArrayList
<>();
}
@Data
class
ImportCrossReportAnalysisData
{
@ApiModelProperty
(
value
=
"星期"
,
example
=
"星期一"
,
position
=
0
)
private
String
weekName
;
@ApiModelProperty
(
value
=
"策略优化时段"
,
example
=
"7:35~8:40"
,
position
=
1
)
private
String
optimizeTimeSpan
;
@ApiModelProperty
(
value
=
"本周优化次数与问题次数比"
,
example
=
"20/100"
,
position
=
2
)
private
String
thisWeekCountRadio
;
@ApiModelProperty
(
value
=
"上周优化次数与问题次数比"
,
example
=
"20/100"
,
position
=
3
)
private
String
lastWeekCountRadio
;
@ApiModelProperty
(
value
=
"本周通行能力"
,
example
=
"3466"
,
position
=
4
)
private
Integer
thisWeekCapacity
;
@ApiModelProperty
(
value
=
"上周通行能力"
,
example
=
"5600"
,
position
=
5
)
private
Integer
lastWeekCapacity
;
@ApiModelProperty
(
value
=
"本周停车次数"
,
example
=
"20"
,
position
=
6
)
private
Double
thisWeekStopTimes
;
@ApiModelProperty
(
value
=
"上周停车次数"
,
example
=
"30"
,
position
=
7
)
private
Double
lastWeekStopTimes
;
@ApiModelProperty
(
value
=
"本周延误时间"
,
example
=
"30.5"
,
position
=
8
)
private
Double
thisWeekDelayTime
;
@ApiModelProperty
(
value
=
"上周延误时间"
,
example
=
"30.2"
,
position
=
9
)
private
Double
lastWeekDelayTime
;
@ApiModelProperty
(
value
=
"本周最大排队长度"
,
example
=
"6.5"
,
position
=
10
)
private
Double
thisWeekMaxQueueLength
;
@ApiModelProperty
(
value
=
"上周最大排队长度"
,
example
=
"-1.5%"
,
position
=
11
)
private
Double
lastWeekMaxQueueLength
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/strategy/StrategyPriorityController.java
View file @
3980f854
...
...
@@ -48,47 +48,6 @@ public class StrategyPriorityController {
@ApiOperation
(
value
=
"策略优先级日计划详情表详情"
,
response
=
StrategyPriorityDailyInfo
.
class
)
@GetMapping
(
value
=
"/info/{id}"
)
public
Object
info
(
@PathVariable
Long
id
)
{
Object
data
=
strategyPriorityService
.
info
(
id
);
return
ResultGenerator
.
genSuccessResult
(
data
);
}
@ApiOperation
(
value
=
"策略优先级日计划详情表新增"
)
@PostMapping
(
value
=
"/add"
)
public
Object
add
(
@Valid
@RequestBody
StrategyPriorityDailyInfo
param
)
{
strategyPriorityService
.
add
(
param
);
return
ResultGenerator
.
genSuccessResult
();
}
@ApiOperation
(
value
=
"策略优先级日计划详情表修改"
)
@PostMapping
(
value
=
"/modify"
)
public
Object
modify
(
@Valid
@RequestBody
StrategyPriorityDailyInfo
param
)
{
strategyPriorityService
.
modify
(
param
);
return
ResultGenerator
.
genSuccessResult
();
}
@ApiOperation
(
value
=
"策略优先级日计划详情表删除(单个条目)"
)
@GetMapping
(
value
=
"/remove/{id}"
)
public
Object
remove
(
@PathVariable
Long
id
)
{
strategyPriorityService
.
remove
(
id
);
return
ResultGenerator
.
genSuccessResult
();
}
@ApiOperation
(
value
=
"策略优先级日计划详情表删除(多个条目)"
)
@PostMapping
(
value
=
"/removes"
)
public
Object
removes
(
@Valid
@RequestBody
List
<
Long
>
ids
)
{
strategyPriorityService
.
removes
(
ids
);
return
ResultGenerator
.
genSuccessResult
();
}
//策略管理-路口列表
@ApiOperation
(
value
=
"策略管理-路口列表"
,
notes
=
"查询全部记录"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
,
hidden
=
false
)
@ApiImplicitParams
({
...
...
@@ -125,10 +84,10 @@ public class StrategyPriorityController {
@ApiOperation
(
value
=
"策略管理-场景"
,
notes
=
"查询全部记录"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
,
hidden
=
false
)
@GetMapping
(
"/sceneList"
)
public
JsonViewObject
getSceneList
(){
public
JsonViewObject
getSceneList
(
Integer
type
){
JsonViewObject
jsonView
=
JsonViewObject
.
newInstance
();
try
{
List
<
StrategyFactoryEntity
>
retLineData
=
strategyPriorityService
.
getSceneList
();
List
<
StrategyFactoryEntity
>
retLineData
=
strategyPriorityService
.
getSceneList
(
type
);
jsonView
.
success
(
retLineData
);
}
catch
(
Exception
e
){
jsonView
.
fail
(
I18nResourceBundle
.
getConstants
(
"GET_FAILED_MSG"
));
...
...
@@ -253,4 +212,22 @@ public class StrategyPriorityController {
}
return
jsonView
;
}
/*
策略管理-干线列表
*/
@ApiOperation
(
value
=
"策略管理-干线列表"
,
notes
=
"查询全部记录"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
,
hidden
=
false
)
@GetMapping
(
"/getStrategyGreenWave"
)
public
JsonViewObject
getStrategyGreenWave
(){
JsonViewObject
jsonView
=
JsonViewObject
.
newInstance
();
try
{
List
<
StrategyPriorityDailyInfo
>
retLineData
=
strategyPriorityService
.
getStrategyGreenWave
();
jsonView
.
success
(
retLineData
);
}
catch
(
Exception
e
){
jsonView
.
fail
(
I18nResourceBundle
.
getConstants
(
"GET_FAILED_MSG"
));
log
.
error
(
"{} getStrategyGreenWave error"
,
this
.
getClass
().
getSimpleName
(),
e
);
}
return
jsonView
;
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/strategy/StrategyPriorityMapper.java
View file @
3980f854
...
...
@@ -55,7 +55,7 @@ public interface StrategyPriorityMapper extends BaseMapper<StrategyPriorityDaily
List
<
StrategyFactoryEntity
>
getStrategyList
();
List
<
StrategyFactoryEntity
>
getSceneList
();
List
<
StrategyFactoryEntity
>
getSceneList
(
Integer
type
);
List
<
StrategyFactoryEntity
>
getCompanyList
();
...
...
@@ -90,5 +90,7 @@ public interface StrategyPriorityMapper extends BaseMapper<StrategyPriorityDaily
void
saveParamConfig
(
@Param
(
"savePlanList"
)
List
<
StrategyParameterConfig
>
savePlanList
);
List
<
StrategyParameterConfig
>
getParamConfigData
(
String
crossId
);
List
<
StrategyPriorityDailyInfo
>
getStrategyGreenWave
();
}
signal-optimize-service/src/main/java/net/wanji/opt/entity/strategy/StrategyPriorityConfig.java
View file @
3980f854
...
...
@@ -51,5 +51,9 @@ public class StrategyPriorityConfig implements Serializable {
*/
private
Integer
greenId
;
/**
* 区分1:路口,2干线
*/
private
Integer
type
;
}
signal-optimize-service/src/main/java/net/wanji/opt/entity/strategy/StrategyPriorityDailyInfo.java
View file @
3980f854
package
net
.
wanji
.
opt
.
entity
.
strategy
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.*
;
import
java.io.Serializable
;
import
java.util.List
;
import
io.swagger.models.auth.In
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
net.wanji.opt.entity.comprehensivequery.CrossEntity
;
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
...
...
@@ -47,9 +48,20 @@ public class StrategyPriorityDailyInfo implements Serializable {
/**
* 干线名称 (路由列表返回用)
*/
@TableField
(
exist
=
false
)
private
String
waveName
;
/**
* 路口名称 (路由列表返回用)
*/
@TableField
(
exist
=
false
)
private
String
crossName
;
/**
* 干线ID 干线列表用
*/
@TableField
(
exist
=
false
)
private
Integer
greenId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/entity/strategy/dto/StrategyPriorityGroup.java
View file @
3980f854
...
...
@@ -38,4 +38,6 @@ public class StrategyPriorityGroup {
private
List
<
StrategyPriorityParamter
>
parameterConfigList
;
// 调度配置表的配置信息
private
StrategySchedulingParam
schedulingParamters
;
//1:路口,2干线
private
Integer
type
;
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/strategy/StrategyPriorityService.java
View file @
3980f854
...
...
@@ -23,46 +23,11 @@ import java.util.Map;
*/
public
interface
StrategyPriorityService
extends
IService
<
StrategyPriorityDailyInfo
>
{
/**
* 策略优先级日计划详情表详情
* @param id
* @return
*/
StrategyPriorityDailyInfo
info
(
Long
id
);
/**
* 策略优先级日计划详情表新增
* @param param 根据需要进行传值
* @return
*/
void
add
(
StrategyPriorityDailyInfo
param
);
/**
* 策略优先级日计划详情表修改
* @param param 根据需要进行传值
* @return
*/
void
modify
(
StrategyPriorityDailyInfo
param
);
/**
* 策略优先级日计划详情表删除(单个条目)
* @param id
* @return
*/
void
remove
(
Long
id
);
/**
* 删除(多个条目)
* @param ids
* @return
*/
void
removes
(
List
<
Long
>
ids
);
List
<
StrategyPriorityDailyInfo
>
pageStrategyCrossList
();
List
<
StrategyFactoryEntity
>
getStrategyList
();
List
<
StrategyFactoryEntity
>
getSceneList
();
List
<
StrategyFactoryEntity
>
getSceneList
(
Integer
type
);
List
<
StrategyFactoryEntity
>
getCompanyList
();
...
...
@@ -79,4 +44,6 @@ public interface StrategyPriorityService extends IService<StrategyPriorityDailyI
void
saveParamterConfig
(
StrategyPriorityGroup
strategyPriorityGroup
)
throws
JsonProcessingException
;
List
<
StrategyParameterConfig
>
getParamConfigData
(
String
crossId
);
List
<
StrategyPriorityDailyInfo
>
getStrategyGreenWave
();
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/strategy/impl/StrategyPriorityServiceImpl.java
View file @
3980f854
package
net
.
wanji
.
opt
.
servicev2
.
strategy
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.nacos.common.utils.CollectionUtils
;
...
...
@@ -7,6 +8,9 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.opt.dao.mapper.strategy.StrategyPriorityMapper
;
import
net.wanji.opt.entity.comprehensivequery.CrossEntity
;
import
net.wanji.opt.entity.comprehensivequery.GreenAndCrossEntity
;
import
net.wanji.opt.entity.comprehensivequery.GreenTreeEntity
;
import
net.wanji.opt.entity.strategy.*
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
net.wanji.opt.entity.strategy.dto.StrategyPriorityGroup
;
...
...
@@ -17,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* <p>
...
...
@@ -33,62 +38,6 @@ import java.util.*;
@Resource
private
StrategyPriorityMapper
strategyPriorityMapper
;
/**
* 策略优先级日计划详情表详情
* @param id
* @return
*/
@Override
public
StrategyPriorityDailyInfo
info
(
Long
id
)
{
return
getById
(
id
);
}
/**
* 策略优先级日计划详情表新增
* @param param 根据需要进行传值
* @return
*/
@Override
public
void
add
(
StrategyPriorityDailyInfo
param
)
{
save
(
param
);
}
/**
* 策略优先级日计划详情表修改
* @param param 根据需要进行传值
* @return
*/
@Override
public
void
modify
(
StrategyPriorityDailyInfo
param
)
{
updateById
(
param
);
}
/**
* 策略优先级日计划详情表删除(单个条目)
* @param id
* @return
*/
@Override
public
void
remove
(
Long
id
)
{
removeById
(
id
);
}
/**
* 策略优先级日计划详情表删除(多个条目)
* @param ids
* @return
*/
@Override
public
void
removes
(
List
<
Long
>
ids
)
{
removeByIds
(
ids
);
}
/**
* 策略路口列表
* @param
...
...
@@ -117,8 +66,9 @@ import java.util.*;
* @return
*/
@Override
public
List
<
StrategyFactoryEntity
>
getSceneList
()
{
List
<
StrategyFactoryEntity
>
strategyList
=
strategyPriorityMapper
.
getSceneList
();
public
List
<
StrategyFactoryEntity
>
getSceneList
(
Integer
type
)
{
List
<
StrategyFactoryEntity
>
strategyList
=
strategyPriorityMapper
.
getSceneList
(
type
);
return
strategyList
;
}
/**
...
...
@@ -140,6 +90,8 @@ import java.util.*;
for
(
StrategyPriorityGroup
group
:
dataList
)
{
String
label
=
group
.
getLabel
();
Integer
labelCode
=
group
.
getLabelCode
();
//1;路口2干线
Integer
type
=
group
.
getType
();
//路口id
List
<
String
>
crossList
=
group
.
getCrossIds
();
//选中多个路口存多条数据
...
...
@@ -162,7 +114,8 @@ import java.util.*;
strategyPriorityConfig
.
setStrategyNo
(
item
.
getStrategyNo
());
//优先级
strategyPriorityConfig
.
setPriority
(
item
.
getPriority
());
//type
strategyPriorityConfig
.
setType
(
type
);
saveList
.
add
(
strategyPriorityConfig
);
}
}
...
...
@@ -183,7 +136,7 @@ import java.util.*;
//先获取策略编号
List
<
String
>
strategyNo
=
strategyPriorityMapper
.
getstrategyNo
(
crossId
);
if
(
CollectionUtils
.
isEmpty
(
strategyNo
)){
strategyNo
.
add
(
"0"
);
return
Collections
.
emptyList
(
);
}
List
<
StrategyFactoryEntity
>
priorityList
=
strategyPriorityMapper
.
getPriorityConfigData
(
strategyNo
,
crossId
);
return
priorityList
;
...
...
@@ -301,4 +254,62 @@ import java.util.*;
}
}
/*
* 策略干线列表
* */
@Override
public
List
<
StrategyPriorityDailyInfo
>
getStrategyGreenWave
()
{
try
{
List
<
StrategyPriorityDailyInfo
>
queryResult
=
strategyPriorityMapper
.
getStrategyGreenWave
();
Map
<
Integer
,
List
<
StrategyPriorityDailyInfo
>>
groupedData
=
queryResult
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
StrategyPriorityDailyInfo:
:
getGreenId
));
// 格式化输出
List
<
StrategyPriorityDailyInfo
>
result
=
groupedData
.
entrySet
().
stream
()
.
map
(
entry
->
{
//干线ID
int
trunkId
=
entry
.
getKey
();
List
<
StrategyPriorityDailyInfo
>
infos
=
entry
.
getValue
();
// 创建新的对象
StrategyPriorityDailyInfo
strategyPriorityDailyInfo
=
new
StrategyPriorityDailyInfo
();
// 提取干线名称(假设同一干线的名称相同)
String
trunkName
=
infos
.
get
(
0
).
getWaveName
();
// 按路口 ID 分组并合并日计划详情
Map
<
String
,
Set
<
String
>>
crossGroupedDetails
=
infos
.
stream
()
.
filter
(
info
->
info
.
getDailyPlanDetails
()
!=
null
)
.
collect
(
Collectors
.
groupingBy
(
StrategyPriorityDailyInfo:
:
getCrossId
,
Collectors
.
mapping
(
StrategyPriorityDailyInfo:
:
getDailyPlanDetails
,
Collectors
.
toSet
())));
// 去重
// 合并每个路口的日计划详情
String
dailyPlanDetails
=
crossGroupedDetails
.
values
().
stream
()
.
map
(
set
->
String
.
join
(
", "
,
set
))
.
collect
(
Collectors
.
joining
(
", "
));
// 提取路口 ID 和路口名称
String
roadIds
=
infos
.
stream
()
.
map
(
StrategyPriorityDailyInfo:
:
getCrossId
)
.
collect
(
Collectors
.
joining
(
", "
));
String
roadNames
=
infos
.
stream
()
.
map
(
StrategyPriorityDailyInfo:
:
getCrossName
)
.
collect
(
Collectors
.
joining
(
", "
));
strategyPriorityDailyInfo
.
setGreenId
(
trunkId
);
strategyPriorityDailyInfo
.
setWaveName
(
trunkName
);
strategyPriorityDailyInfo
.
setCrossId
(
roadIds
);
strategyPriorityDailyInfo
.
setCrossName
(
roadNames
);
strategyPriorityDailyInfo
.
setDailyPlanDetails
(
dailyPlanDetails
);
return
strategyPriorityDailyInfo
;
})
.
collect
(
Collectors
.
toList
());
// 输出结果
return
result
;
}
catch
(
Exception
e
)
{
log
.
error
(
"{} getStrategyGreenWave"
,
this
.
getClass
().
getSimpleName
(),
e
);
throw
e
;
}
}
}
signal-optimize-service/src/main/resources/mapper/strategy/StrategyPriorityMapper.xml
View file @
3980f854
...
...
@@ -138,6 +138,9 @@
FROM
t_strategy_factory_info
WHERE status='1'
<if
test=
"type != null and type == 1"
>
AND type = 1
</if>
</select>
<select
id=
"getCompanyList"
resultType=
"net.wanji.opt.synthesis.pojo.StrategyFactoryEntity"
>
SELECT
...
...
@@ -150,10 +153,10 @@
<insert
id=
"savePriorityInsert"
parameterType=
"java.util.List"
>
INSERT INTO
t_strategy_priority_config (cross_id,group_id,group_name,priority,strategy_no)
t_strategy_priority_config (cross_id,group_id,group_name,priority,strategy_no
,type
)
VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(#{item.crossId},#{item.groupId},#{item.groupName},#{item.priority},#{item.strategyNo})
(#{item.crossId},#{item.groupId},#{item.groupName},#{item.priority},#{item.strategyNo}
,#{item.type}
)
</foreach>
</insert>
...
...
@@ -275,4 +278,14 @@
AND cross_id =#{crossId}
</if>
</select>
<select
id=
"getStrategyGreenWave"
parameterType=
"map"
resultType=
"net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo"
>
SELECT t1.green_id as greenId, t4.name as waveName, t1.cross_id as crossId,
t3.name as crossName,t1.sort,
t2.daily_plan_details as dailyPlanDetails
FROM t_greenwave_cross t1
LEFT JOIN t_strategy_priority_daily_info t2 on t1.cross_id = t2.cross_id and t2.type=2
LEFT JOIN t_base_cross_info t3 on t1.cross_id = t3.id
LEFT JOIN t_greenwave_info t4 on t1.green_id = t4.id
</select>
</mapper>
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