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
d6d90541
Commit
d6d90541
authored
Aug 28, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 新信号评价-方案评价-路口方案列表
parent
023e2b81
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
198 additions
and
6 deletions
+198
-6
CrossSchemeListBO.java
...ice/src/main/java/net/wanji/opt/bo/CrossSchemeListBO.java
+22
-0
SchemeEvaluateController.java
...va/net/wanji/opt/controller/SchemeEvaluateController.java
+14
-0
SchemeEvaluateService.java
...ain/java/net/wanji/opt/service/SchemeEvaluateService.java
+4
-0
SchemeEvaluateServiceImpl.java
...net/wanji/opt/service/impl/SchemeEvaluateServiceImpl.java
+95
-6
SchemeEvaluateCrossSchemeListVO.java
...ava/net/wanji/opt/vo/SchemeEvaluateCrossSchemeListVO.java
+39
-0
BaseCrossSchemeMapper.java
...a/net/wanji/databus/dao/mapper/BaseCrossSchemeMapper.java
+2
-0
BaseCrossSectionMapper.java
.../net/wanji/databus/dao/mapper/BaseCrossSectionMapper.java
+2
-0
BaseCrossSchemeMapper.xml
...tabus/src/main/resources/mapper/BaseCrossSchemeMapper.xml
+14
-0
BaseCrossSectionMapper.xml
...abus/src/main/resources/mapper/BaseCrossSectionMapper.xml
+6
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/bo/CrossSchemeListBO.java
0 → 100644
View file @
d6d90541
package
net
.
wanji
.
opt
.
bo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author Kent HAN
* @date 2023/6/9 13:52
*/
@Data
@ApiModel
(
value
=
"CrossSchemeListBO"
,
description
=
"路口方案列表入参"
)
public
class
CrossSchemeListBO
{
@ApiModelProperty
(
value
=
"路口编号"
,
required
=
true
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"方案编号/名称"
)
private
String
schemeNoOrName
;
@ApiModelProperty
(
value
=
"策略编号 100030均衡调控 100152效率提升 100010安全保障"
)
private
String
strategyCode
;
@ApiModelProperty
(
value
=
"星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期"
,
required
=
true
)
private
Integer
weekDay
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controller/SchemeEvaluateController.java
View file @
d6d90541
...
...
@@ -6,8 +6,10 @@ import io.swagger.annotations.ApiResponse;
import
io.swagger.annotations.ApiResponses
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.opt.bo.CrossSchemeListBO
;
import
net.wanji.opt.bo.ProblemSchemeBO
;
import
net.wanji.opt.service.impl.SchemeEvaluateServiceImpl
;
import
net.wanji.opt.vo.SchemeEvaluateCrossSchemeListVO
;
import
net.wanji.opt.vo.SchemeEvaluateProblemSchemeVO
;
import
net.wanji.opt.vo.SchemeEvaluateStrategyMetricMenuVO
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
...
@@ -57,4 +59,16 @@ public class SchemeEvaluateController {
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
@ApiOperation
(
value
=
"路口方案列表"
,
notes
=
"路口方案列表"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/crossSchemeList"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SchemeEvaluateCrossSchemeListVO
.
class
),
})
public
JsonViewObject
crossSchemeList
(
@RequestBody
CrossSchemeListBO
crossSchemeListBO
)
{
List
<
SchemeEvaluateCrossSchemeListVO
>
res
=
schemeEvaluateService
.
crossSchemeList
(
crossSchemeListBO
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/service/SchemeEvaluateService.java
View file @
d6d90541
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.opt.bo.CrossSchemeListBO
;
import
net.wanji.opt.bo.ProblemSchemeBO
;
import
net.wanji.opt.vo.SchemeEvaluateCrossSchemeListVO
;
import
net.wanji.opt.vo.SchemeEvaluateProblemSchemeVO
;
import
net.wanji.opt.vo.SchemeEvaluateStrategyMetricMenuVO
;
...
...
@@ -11,4 +13,6 @@ public interface SchemeEvaluateService {
SchemeEvaluateProblemSchemeVO
problemSchemeList
(
ProblemSchemeBO
problemSchemeBO
);
List
<
SchemeEvaluateStrategyMetricMenuVO
>
strategyMetricMenu
(
CrossIdBO
crossIdBO
);
List
<
SchemeEvaluateCrossSchemeListVO
>
crossSchemeList
(
CrossSchemeListBO
crossSchemeListBO
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/SchemeEvaluateServiceImpl.java
View file @
d6d90541
...
...
@@ -2,15 +2,14 @@ package net.wanji.opt.service.impl;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.enums.StrategyAndMetricsEnum
;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.databus.dao.entity.BaseCrossSchemePO
;
import
net.wanji.databus.dao.entity.CrossSectionPO
;
import
net.wanji.databus.dao.mapper.BaseCrossSchemeMapper
;
import
net.wanji.databus.dao.mapper.BaseCrossSectionMapper
;
import
net.wanji.databus.dao.mapper.CrossDataHistMapper
;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.po.CrossDataHistPO
;
import
net.wanji.opt.bo.CrossSchemeListBO
;
import
net.wanji.opt.bo.ProblemSchemeBO
;
import
net.wanji.opt.dao.mapper.strategy.SceneMapper
;
import
net.wanji.opt.dao.mapper.strategy.SceneStrategyMapper
;
...
...
@@ -20,6 +19,7 @@ import net.wanji.opt.po.strategy.SceneStrategyPO;
import
net.wanji.opt.po.strategy.StrategyPO
;
import
net.wanji.opt.service.SchemeEvaluateService
;
import
net.wanji.opt.vo.RunningEvaluateMetricsDetailVO
;
import
net.wanji.opt.vo.SchemeEvaluateCrossSchemeListVO
;
import
net.wanji.opt.vo.SchemeEvaluateProblemSchemeVO
;
import
net.wanji.opt.vo.SchemeEvaluateStrategyMetricMenuVO
;
import
org.jetbrains.annotations.NotNull
;
...
...
@@ -45,6 +45,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
private
final
SceneMapper
sceneMapper
;
private
final
SceneStrategyMapper
sceneStrategyMapper
;
private
final
StrategyMapper
strategyMapper
;
private
final
BaseCrossSchedulesMapper
baseCrossSchedulesMapper
;
private
final
BaseCrossSchedulesPlanMapper
baseCrossSchedulesPlanMapper
;
public
SchemeEvaluateServiceImpl
(
CrossDataHistMapper
crossDataHistMapper
,
RunningEvaluateServiceImpl
runningEvaluateService
,
...
...
@@ -52,7 +54,9 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
@Qualifier
(
"baseCrossSchemeMapper"
)
BaseCrossSchemeMapper
baseCrossSchemeMapper
,
@Qualifier
(
"sceneMapper"
)
SceneMapper
sceneMapper
,
@Qualifier
(
"sceneStrategyMapper"
)
SceneStrategyMapper
sceneStrategyMapper
,
@Qualifier
(
"strategyMapper"
)
StrategyMapper
strategyMapper
)
{
@Qualifier
(
"strategyMapper"
)
StrategyMapper
strategyMapper
,
@Qualifier
(
"baseCrossSchedulesMapper"
)
BaseCrossSchedulesMapper
baseCrossSchedulesMapper
,
@Qualifier
(
"baseCrossSchedulesPlanMapper"
)
BaseCrossSchedulesPlanMapper
baseCrossSchedulesPlanMapper
)
{
this
.
crossDataHistMapper
=
crossDataHistMapper
;
this
.
runningEvaluateService
=
runningEvaluateService
;
this
.
baseCrossSectionMapper
=
baseCrossSectionMapper
;
...
...
@@ -60,6 +64,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
this
.
sceneMapper
=
sceneMapper
;
this
.
sceneStrategyMapper
=
sceneStrategyMapper
;
this
.
strategyMapper
=
strategyMapper
;
this
.
baseCrossSchedulesMapper
=
baseCrossSchedulesMapper
;
this
.
baseCrossSchedulesPlanMapper
=
baseCrossSchedulesPlanMapper
;
}
@Override
...
...
@@ -129,6 +135,89 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
return
voList
;
}
@Override
public
List
<
SchemeEvaluateCrossSchemeListVO
>
crossSchemeList
(
CrossSchemeListBO
crossSchemeListBO
)
{
String
crossId
=
crossSchemeListBO
.
getCrossId
();
String
schemeNoOrName
=
crossSchemeListBO
.
getSchemeNoOrName
();
String
strategyCode
=
crossSchemeListBO
.
getStrategyCode
();
// 查找方案
List
<
BaseCrossSchemePO
>
baseCrossSchemePOList
=
new
ArrayList
<>();
if
(
ObjectUtil
.
isNotEmpty
(
schemeNoOrName
))
{
if
(
isNumeric
(
schemeNoOrName
))
{
// 方案号
String
schemeNo
=
schemeNoOrName
;
BaseCrossSchemePO
baseCrossSchemePO
=
baseCrossSchemeMapper
.
selectByCrossIdAndSchemeNo
(
crossId
,
Integer
.
parseInt
(
schemeNo
));
baseCrossSchemePOList
.
add
(
baseCrossSchemePO
);
}
else
{
// 方案名模糊搜索
String
schemeName
=
schemeNoOrName
;
baseCrossSchemePOList
=
baseCrossSchemeMapper
.
selectByCrossIdAndPartialSchemeName
(
crossId
,
schemeName
);
}
}
else
{
// 全部方案
baseCrossSchemePOList
=
baseCrossSchemeMapper
.
selectByCrossId
(
crossId
);
}
Integer
weekDay
=
crossSchemeListBO
.
getWeekDay
();
// 找出当前路口已执行的调度,在某天对应的计划
BaseCrossSchedulesPO
baseCrossSchedulesPO
=
baseCrossSchedulesMapper
.
selectExecByCrossId
(
crossId
);
Integer
scheduleId
=
baseCrossSchedulesPO
.
getId
();
List
<
BaseCrossSchedulesPlanPO
>
baseCrossSchedulesPlanPOList
=
baseCrossSchedulesPlanMapper
.
selectByCrossIdAndSchedulesId
(
crossId
,
scheduleId
);
List
<
BaseCrossSchedulesPlanPO
>
filteredList
=
baseCrossSchedulesPlanPOList
.
stream
()
.
filter
(
po
->
po
.
getWeek
().
equals
(
weekDay
))
.
collect
(
Collectors
.
toList
());
List
<
SchemeEvaluateCrossSchemeListVO
>
res
=
new
ArrayList
<>();
// 根据计划 ID 和方案 ID,获取时段信息
for
(
BaseCrossSchedulesPlanPO
baseCrossSchedulesPlanPO
:
filteredList
)
{
Integer
planId
=
baseCrossSchedulesPlanPO
.
getPlanId
();
for
(
BaseCrossSchemePO
baseCrossSchemePO
:
baseCrossSchemePOList
)
{
Integer
schemeId
=
baseCrossSchemePO
.
getId
();
List
<
CrossSectionPO
>
crossSectionPOList
=
baseCrossSectionMapper
.
selectByCrossIdPlanIdAndSchemeId
(
crossId
,
planId
,
schemeId
);
// todo 按控制模式和策略入参筛选结果
for
(
CrossSectionPO
crossSectionPO
:
crossSectionPOList
)
{
SchemeEvaluateCrossSchemeListVO
vo
=
buildSchemeEvaluateCrossSchemeListVO
(
baseCrossSchemePO
,
crossSectionPO
);
res
.
add
(
vo
);
}
}
}
// 特殊日期根据方案 ID 筛选重复方案
if
(
weekDay
==
0
)
{
List
<
SchemeEvaluateCrossSchemeListVO
>
uniqueList
=
res
.
stream
()
.
collect
(
Collectors
.
toMap
(
SchemeEvaluateCrossSchemeListVO:
:
getSchemeId
,
vo
->
vo
,
(
existing
,
replacement
)
->
existing
))
.
values
()
.
stream
()
.
collect
(
Collectors
.
toList
());
return
uniqueList
;
}
return
res
;
}
@NotNull
private
static
SchemeEvaluateCrossSchemeListVO
buildSchemeEvaluateCrossSchemeListVO
(
BaseCrossSchemePO
baseCrossSchemePO
,
CrossSectionPO
crossSectionPO
)
{
SchemeEvaluateCrossSchemeListVO
vo
=
new
SchemeEvaluateCrossSchemeListVO
();
vo
.
setSchemeName
(
baseCrossSchemePO
.
getName
());
vo
.
setSchemeId
(
baseCrossSchemePO
.
getId
());
vo
.
setStartTime
(
crossSectionPO
.
getStartTime
());
vo
.
setEndTime
(
crossSectionPO
.
getEndTime
());
vo
.
setSectionId
(
crossSectionPO
.
getId
());
vo
.
setSchemeNo
(
baseCrossSchemePO
.
getSchemeNo
());
vo
.
setCycle
(
baseCrossSchemePO
.
getCycle
());
vo
.
setNote
(
""
);
return
vo
;
}
private
boolean
isNumeric
(
String
str
)
{
return
str
!=
null
&&
str
.
matches
(
"[0-9]+"
);
}
private
List
<
SchemeEvaluateProblemSchemeVO
.
BySchemeVO
>
buildProblemSchemeListByScheme
(
Map
<
Date
,
List
<
RunningEvaluateMetricsDetailVO
.
ProblemScheme
>>
dateSchemesMap
)
{
// 使用一个Map来临时存储按方案名称分组的数据
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/SchemeEvaluateCrossSchemeListVO.java
0 → 100644
View file @
d6d90541
package
net
.
wanji
.
opt
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author Kent HAN
* @date 2023/2/9 8:38
*/
@Data
@NoArgsConstructor
@ApiModel
(
value
=
"SchemeEvaluateCrossSchemeListVO"
,
description
=
"路口方案列表"
)
public
class
SchemeEvaluateCrossSchemeListVO
{
@ApiModelProperty
(
value
=
"方案名称"
)
private
String
schemeName
;
@ApiModelProperty
(
value
=
"方案ID"
)
private
Integer
schemeId
;
@ApiModelProperty
(
value
=
"开始时间"
)
private
String
startTime
;
@ApiModelProperty
(
value
=
"结束时间"
)
private
String
endTime
;
@ApiModelProperty
(
value
=
"时段ID"
)
private
Integer
sectionId
;
@ApiModelProperty
(
value
=
"方案编号"
)
private
String
schemeNo
;
@ApiModelProperty
(
value
=
"周期"
)
private
Integer
cycle
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
note
;
}
wj-databus/src/main/java/net/wanji/databus/dao/mapper/BaseCrossSchemeMapper.java
View file @
d6d90541
...
...
@@ -52,4 +52,6 @@ public interface BaseCrossSchemeMapper {
BaseCrossSchemePO
selectByCrossIdAndSchemeNo
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"schemeNo"
)
Integer
schemeNo
);
List
<
BaseCrossSchemePO
>
selectByCrossIdAndPartialSchemeName
(
String
crossId
,
String
schemeName
);
}
wj-databus/src/main/java/net/wanji/databus/dao/mapper/BaseCrossSectionMapper.java
View file @
d6d90541
...
...
@@ -28,4 +28,6 @@ public interface BaseCrossSectionMapper {
void
updateControlMode
(
Integer
sectionId
,
Integer
controlMode
);
List
<
CrossSectionPO
>
selectByCrossId
(
String
crossId
);
List
<
CrossSectionPO
>
selectByCrossIdPlanIdAndSchemeId
(
String
crossId
,
Integer
planId
,
Integer
schemeId
);
}
wj-databus/src/main/resources/mapper/BaseCrossSchemeMapper.xml
View file @
d6d90541
...
...
@@ -18,6 +18,10 @@
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
</resultMap>
<sql
id=
"baseColumnList"
>
id,scheme_no,name,cross_id,cycle,coord_phase,offset,source,is_deleted,status,gmt_create,gmt_modified
</sql>
<!-- 查询方案基础信息列表 -->
<select
id=
"listCrossSchemeInfo"
parameterType=
"String"
resultMap=
"BaseResultMap"
>
select
...
...
@@ -158,4 +162,14 @@
where cross_id = #{crossId} and scheme_no = #{schemeNo}
</select>
<select
id=
"selectByCrossIdAndPartialSchemeName"
resultType=
"net.wanji.databus.dao.entity.BaseCrossSchemePO"
>
select
<include
refid=
"baseColumnList"
/>
from t_base_cross_scheme
where cross_id = #{crossId}
<if
test=
"schemeName != null and schemeName != ''"
>
AND name LIKE CONCAT('%',#{schemeName},'%')
</if>
</select>
</mapper>
wj-databus/src/main/resources/mapper/BaseCrossSectionMapper.xml
View file @
d6d90541
...
...
@@ -75,5 +75,11 @@
where cross_id = #{crossId}
</select>
<select
id=
"selectByCrossIdPlanIdAndSchemeId"
resultType=
"net.wanji.databus.dao.entity.CrossSectionPO"
>
select
<include
refid=
"Base_Column_list"
/>
from t_base_cross_section
where cross_id = #{crossId} and plan_id = #{planId} and scheme_id = #{schemeId}
</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