Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
traffic-signal-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
signal
traffic-signal-platform
Commits
ab80a42a
Commit
ab80a42a
authored
Apr 25, 2025
by
zhouleilei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化 方案配置列表 接口
parent
0ac399b2
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
427 additions
and
99 deletions
+427
-99
SchemeConfigServiceImpl.java
...anji/web/service/scheme/impl/SchemeConfigServiceImpl.java
+409
-99
BaseCrossLaneLightsMapper.java
...t/wanji/databus/dao/mapper/BaseCrossLaneLightsMapper.java
+2
-0
LaneInfoMapper.java
...ain/java/net/wanji/databus/dao/mapper/LaneInfoMapper.java
+2
-0
BaseCrossLaneLightsMapper.xml
...s/src/main/resources/mapper/BaseCrossLaneLightsMapper.xml
+7
-0
LaneInfoMapper.xml
wj-databus/src/main/resources/mapper/LaneInfoMapper.xml
+7
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/service/scheme/impl/SchemeConfigServiceImpl.java
View file @
ab80a42a
...
...
@@ -21,6 +21,7 @@ import net.wanji.web.po.scheme.CrossAccompanyPhasePO;
import
net.wanji.web.service.scheme.SchemeConfigService
;
import
net.wanji.web.vo.scheme.LaneIdsVO
;
import
net.wanji.web.vo.scheme.LightIdVO
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -185,7 +186,7 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
.
filter
(
dto
->
{
LocalTime
start
=
LocalTime
.
parse
(
dto
.
getStartTime
());
// 将 startTime 转换为 LocalTime
String
endTime
=
dto
.
getEndTime
();
if
(
"24:00"
.
equals
(
endTime
)){
if
(
"24:00"
.
equals
(
endTime
))
{
endTime
=
"23:59"
;
}
LocalTime
end
=
LocalTime
.
parse
(
endTime
);
// 将 endTime 转换为 LocalTime
...
...
@@ -207,6 +208,15 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
private
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
buildPhaseSchemeList
(
String
crossId
)
{
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
phaseSchemeList
=
new
ArrayList
<>();
List
<
BaseCrossSchemePO
>
baseCrossSchemePOList
=
baseCrossSchemeMapper
.
selectByCrossId
(
crossId
);
CrossPhasePO
crossPhasePO
=
new
CrossPhasePO
();
crossPhasePO
.
setCrossId
(
crossId
);
List
<
CrossPhasePO
>
phasePOList
=
crossPhaseMapper
.
listCrossPhasePO
(
crossPhasePO
);
CrossPhaseLightsPO
entity
=
new
CrossPhaseLightsPO
();
entity
.
setCrossId
(
crossId
);
List
<
CrossPhaseLightsPO
>
crossPhaseLightsList
=
baseCrossPhaseLightsMapper
.
listCrossPhaseLightsPO
(
entity
);
List
<
BaseCrossLightsPO
>
baseCrossLightsPOList
=
baseCrossLightsMapper
.
selectByCrossId
(
crossId
);
List
<
CrossLaneLightsPO
>
crossLaneLightsPOList
=
baseCrossLaneLightsMapper
.
listLightLane
().
stream
().
filter
(
x
->
Objects
.
equals
(
x
.
getCrossId
(),
crossId
)).
collect
(
Collectors
.
toList
());
List
<
LaneInfoPO
>
laneInfoPOList
=
laneInfoMapper
.
selectBycrossIdAll
(
crossId
);
for
(
BaseCrossSchemePO
baseCrossSchemePO
:
baseCrossSchemePOList
)
{
SaveSchemeConfigDTO
.
PhaseScheme
phaseScheme
=
new
SaveSchemeConfigDTO
.
PhaseScheme
();
phaseScheme
.
setSchemeNo
(
baseCrossSchemePO
.
getSchemeNo
());
...
...
@@ -214,10 +224,11 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
phaseScheme
.
setSchemeId
(
baseCrossSchemePO
.
getId
());
// 获取协调相位号
Integer
coordPhaseId
=
baseCrossSchemePO
.
getCoordPhase
();
if
(
coordPhaseId
!=
null
)
{
CrossPhasePO
crossPhasePO
=
crossPhaseMapper
.
selectById
(
coordPhaseId
);
if
(
crossPhasePO
!=
null
)
{
phaseScheme
.
setCoordPhaseNo
(
crossPhasePO
.
getPhaseNo
());
if
(
coordPhaseId
!=
null
&&
CollectionUtils
.
isNotEmpty
(
phasePOList
))
{
List
<
CrossPhasePO
>
crossPhasePOList
=
phasePOList
.
stream
().
filter
(
x
->
x
.
getId
()
==
coordPhaseId
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
crossPhasePOList
))
{
CrossPhasePO
phasePO
=
crossPhasePOList
.
get
(
0
);
phaseScheme
.
setCoordPhaseNo
(
phasePO
.
getPhaseNo
());
}
}
phaseScheme
.
setCycle
(
baseCrossSchemePO
.
getCycle
());
...
...
@@ -225,17 +236,25 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
phaseScheme
.
setStatus
(
baseCrossSchemePO
.
getStatus
());
// 构造环列表
String
schemeNo
=
phaseScheme
.
getSchemeNo
();
Integer
schemeId
=
baseCrossSchemeMapper
.
selectIdByCrossIdAndSchemeNo
(
crossId
,
schemeNo
);
Integer
schemeId
=
null
;
List
<
BaseCrossSchemePO
>
schemePOS
=
baseCrossSchemePOList
.
stream
().
filter
(
x
->
x
.
getSchemeNo
().
equals
(
schemeNo
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
schemePOS
))
{
BaseCrossSchemePO
schemePO
=
schemePOS
.
get
(
0
);
schemeId
=
schemePO
.
getId
();
}
//TODO
List
<
SaveSchemeConfigDTO
.
RingListElement
>
ringList
=
buildRingList
(
crossId
,
schemeId
);
phaseScheme
.
setRingList
(
ringList
);
// 构造特殊控制列表
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
specialControlList
=
buildSpecialControlList
(
crossId
,
schemeId
);
// 构造特殊控制列表
-(优化后,优化前,调用的是 buildSpecialControlList)
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
specialControlList
=
buildSpecialControlList
New
(
crossLaneLightsPOList
,
laneInfoPOList
,
phasePOList
,
crossPhaseLightsList
,
baseCrossLightsPOList
,
crossId
,
schemeId
);
phaseScheme
.
setSpecialControlModeList
(
specialControlList
);
phaseSchemeList
.
add
(
phaseScheme
);
}
return
phaseSchemeList
;
}
/**
* 通过方案号和路口号构造方案列表
*
...
...
@@ -244,9 +263,9 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
* @author Kent HAN
* @date 2023/1/12 9:23
*/
public
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
buildPhaseSchemeListByCrossIdAndSchemeNo
(
String
crossId
,
String
schemeNo
)
{
public
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
buildPhaseSchemeListByCrossIdAndSchemeNo
(
String
crossId
,
String
schemeNo
)
{
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
phaseSchemeList
=
new
ArrayList
<>();
List
<
BaseCrossSchemePO
>
baseCrossSchemePOList
=
baseCrossSchemeMapper
.
listCrossSchemeInfo
(
crossId
,
schemeNo
,
null
);
List
<
BaseCrossSchemePO
>
baseCrossSchemePOList
=
baseCrossSchemeMapper
.
listCrossSchemeInfo
(
crossId
,
schemeNo
,
null
);
for
(
BaseCrossSchemePO
baseCrossSchemePO
:
baseCrossSchemePOList
)
{
SaveSchemeConfigDTO
.
PhaseScheme
phaseScheme
=
new
SaveSchemeConfigDTO
.
PhaseScheme
();
phaseScheme
.
setSchemeNo
(
baseCrossSchemePO
.
getSchemeNo
());
...
...
@@ -276,6 +295,65 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
return
phaseSchemeList
;
}
/**
* 构造特殊控制列表
*
* @param crossId
* @param schemeId
* @return java.util.List<net.wanji.web.dto.SaveSchemeConfigDTO.PhaseListElement>
* @author Kent HAN
* @date 2023/1/12 17:53
*/
private
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
buildSpecialControlListNew
(
List
<
CrossLaneLightsPO
>
crossLaneLightsPOList
,
List
<
LaneInfoPO
>
laneInfoPOList
,
List
<
CrossPhasePO
>
phasePOList
,
List
<
CrossPhaseLightsPO
>
crossPhaseLightsList
,
List
<
BaseCrossLightsPO
>
baseCrossLightsPOList
,
String
crossId
,
Integer
schemeId
)
{
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListElementList
=
new
ArrayList
<>();
List
<
CrossPhasePO
>
crossPhasePOList
=
phasePOList
.
stream
().
filter
(
x
->
x
.
getPlanId
()
==
schemeId
).
collect
(
Collectors
.
toList
());
// List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.selectByCrossIdAndSchemeId(crossId, schemeId);
for
(
CrossPhasePO
crossPhasePO
:
crossPhasePOList
)
{
SaveSchemeConfigDTO
.
PhaseListElement
phaseListElement
=
new
SaveSchemeConfigDTO
.
PhaseListElement
();
Integer
controlMode
=
crossPhasePO
.
getControlMode
();
if
(
Objects
.
equals
(
controlMode
,
ControlModeConst
.
IS_GREEN
)
||
Objects
.
equals
(
controlMode
,
ControlModeConst
.
IS_RED
)
||
Objects
.
equals
(
controlMode
,
ControlModeConst
.
GREEN_FLASH
)
||
Objects
.
equals
(
controlMode
,
ControlModeConst
.
YELLOW_FLASH
))
{
String
phaseNo
=
crossPhasePO
.
getPhaseNo
();
phaseListElement
.
setPhaseNo
(
phaseNo
);
phaseListElement
.
setPhaseType
(
crossPhasePO
.
getPhaseType
());
phaseListElement
.
setMinGreenTime
(
crossPhasePO
.
getMinGreenTime
());
phaseListElement
.
setMaxGreenTime
(
crossPhasePO
.
getMaxGreenTime
());
phaseListElement
.
setGreenTime
(
crossPhasePO
.
getGreenTime
());
phaseListElement
.
setGreenFlashTime
(
crossPhasePO
.
getGreenFlashTime
());
phaseListElement
.
setYellowFlashTime
(
crossPhasePO
.
getYellowFlashTime
());
phaseListElement
.
setRedFlashTime
(
crossPhasePO
.
getRedFlashTime
());
phaseListElement
.
setYellowTime
(
crossPhasePO
.
getYellowTime
());
phaseListElement
.
setRedTime
(
crossPhasePO
.
getRedTime
());
phaseListElement
.
setYellowFlash
(
crossPhasePO
.
getYellowFlashTime
());
if
(
controlMode
.
equals
(
ControlModeConst
.
IS_RED
))
{
phaseListElement
.
setIsRed
(
1
);
}
else
if
(
controlMode
.
equals
(
ControlModeConst
.
IS_GREEN
))
{
phaseListElement
.
setIsGreen
(
1
);
}
else
if
(
controlMode
.
equals
(
ControlModeConst
.
GREEN_FLASH
))
{
phaseListElement
.
setGreenFlash
(
1
);
}
else
if
(
controlMode
.
equals
(
ControlModeConst
.
YELLOW_FLASH
))
{
phaseListElement
.
setYellowFlash
(
1
);
}
phaseListElement
.
setAccompanyPhaseNoList
(
new
ArrayList
<>());
// Integer phaseId = crossPhaseMapper.selectIdByCrossIdAndPhaseNo(crossId, schemeId, phaseNo);
Integer
phaseId
=
null
;
List
<
CrossPhasePO
>
phasePOS
=
phasePOList
.
stream
().
filter
(
x
->
x
.
getPlanId
()
==
schemeId
&&
phaseNo
.
equals
(
x
.
getPhaseNo
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
phasePOS
))
{
CrossPhasePO
crossPhasePO1
=
phasePOS
.
get
(
0
);
phaseId
=
crossPhasePO1
.
getId
();
}
// List<SaveSchemeConfigDTO.DirListElement> dirList = buildDirList(crossId, phaseId);
List
<
SaveSchemeConfigDTO
.
DirListElement
>
dirList
=
buildDirListNew
(
crossLaneLightsPOList
,
laneInfoPOList
,
crossPhaseLightsList
,
baseCrossLightsPOList
,
crossId
,
phaseId
);
phaseListElement
.
setDirList
(
dirList
);
phaseListElementList
.
add
(
phaseListElement
);
}
}
return
phaseListElementList
;
}
/**
* 构造特殊控制列表
*
...
...
@@ -289,6 +367,12 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListElementList
=
new
ArrayList
<>();
List
<
CrossPhasePO
>
crossPhasePOList
=
crossPhaseMapper
.
selectByCrossIdAndSchemeId
(
crossId
,
schemeId
);
CrossPhaseLightsPO
entity
=
new
CrossPhaseLightsPO
();
entity
.
setCrossId
(
crossId
);
List
<
CrossPhaseLightsPO
>
crossPhaseLightsList
=
baseCrossPhaseLightsMapper
.
listCrossPhaseLightsPO
(
entity
);
List
<
BaseCrossLightsPO
>
baseCrossLightsPOS
=
baseCrossLightsMapper
.
selectByCrossId
(
crossId
);
List
<
CrossLaneLightsPO
>
crossLaneLightsPOList
=
baseCrossLaneLightsMapper
.
selectByCrossId
(
crossId
);
List
<
LaneInfoPO
>
laneInfoPOList
=
laneInfoMapper
.
selectBycrossIdAll
(
crossId
);
for
(
CrossPhasePO
crossPhasePO
:
crossPhasePOList
)
{
SaveSchemeConfigDTO
.
PhaseListElement
phaseListElement
=
new
SaveSchemeConfigDTO
.
PhaseListElement
();
Integer
controlMode
=
crossPhasePO
.
getControlMode
();
...
...
@@ -319,7 +403,7 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
}
phaseListElement
.
setAccompanyPhaseNoList
(
new
ArrayList
<>());
Integer
phaseId
=
crossPhaseMapper
.
selectIdByCrossIdAndPhaseNo
(
crossId
,
schemeId
,
phaseNo
);
List
<
SaveSchemeConfigDTO
.
DirListElement
>
dirList
=
buildDirList
(
crossId
,
phaseId
);
List
<
SaveSchemeConfigDTO
.
DirListElement
>
dirList
=
buildDirList
(
cross
PhaseLightsList
,
baseCrossLightsPOS
,
crossLaneLightsPOList
,
laneInfoPOList
,
cross
Id
,
phaseId
);
phaseListElement
.
setDirList
(
dirList
);
phaseListElementList
.
add
(
phaseListElement
);
...
...
@@ -394,50 +478,86 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
private
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
buildPhaseList
(
String
crossId
,
Integer
schemeId
,
Integer
ringNo
,
Integer
groupNumber
)
{
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseList
=
new
ArrayList
<>();
List
<
CrossPhasePO
>
crossPhasePOList
=
crossPhaseMapper
.
selectByGroupNo
(
crossId
,
schemeId
,
ringNo
,
groupNumber
);
for
(
CrossPhasePO
crossPhasePO
:
crossPhasePOList
)
{
SaveSchemeConfigDTO
.
PhaseListElement
phaseListElement
=
new
SaveSchemeConfigDTO
.
PhaseListElement
();
phaseListElement
.
setPhaseId
(
crossPhasePO
.
getId
());
String
phaseNo
=
crossPhasePO
.
getPhaseNo
();
phaseListElement
.
setPhaseNo
(
phaseNo
);
Integer
phaseType
=
crossPhasePO
.
getPhaseType
();
phaseListElement
.
setPhaseType
(
phaseType
);
phaseListElement
.
setMinGreenTime
(
crossPhasePO
.
getMinGreenTime
());
phaseListElement
.
setMaxGreenTime
(
crossPhasePO
.
getMaxGreenTime
());
phaseListElement
.
setGreenTime
(
crossPhasePO
.
getGreenTime
());
phaseListElement
.
setGreenFlashTime
(
crossPhasePO
.
getGreenFlashTime
());
phaseListElement
.
setYellowFlashTime
(
crossPhasePO
.
getYellowFlashTime
());
phaseListElement
.
setRedFlashTime
(
crossPhasePO
.
getRedFlashTime
());
phaseListElement
.
setYellowTime
(
crossPhasePO
.
getYellowTime
());
phaseListElement
.
setRedTime
(
crossPhasePO
.
getRedTime
());
// 特殊控制
Integer
controlMode
=
crossPhasePO
.
getControlMode
();
if
(
Objects
.
equals
(
controlMode
,
ControlModeConst
.
YELLOW_FLASH
))
{
phaseListElement
.
setYellowFlash
(
1
);
}
else
if
(
Objects
.
equals
(
controlMode
,
ControlModeConst
.
IS_RED
))
{
phaseListElement
.
setIsRed
(
1
);
}
else
if
(
Objects
.
equals
(
controlMode
,
ControlModeConst
.
IS_GREEN
))
{
phaseListElement
.
setIsGreen
(
1
);
}
else
if
(
Objects
.
equals
(
controlMode
,
ControlModeConst
.
GREEN_FLASH
))
{
phaseListElement
.
setGreenFlash
(
1
);
}
// 伴随相位的母相位列表
Integer
phaseId
=
crossPhaseMapper
.
selectIdByCrossIdAndPhaseNo
(
crossId
,
schemeId
,
phaseNo
);
if
(
phaseType
==
3
)
{
List
<
String
>
superPhaseNoList
=
new
ArrayList
<>();
List
<
Integer
>
superIdList
=
crossAccompanyPhaseMapper
.
selectByPhaseId
(
phaseId
);
List
<
CrossPhasePO
>
superList
=
crossPhaseMapper
.
selectByIds
(
superIdList
);
for
(
CrossPhasePO
phasePO
:
superList
)
{
superPhaseNoList
.
add
(
phasePO
.
getPhaseNo
());
// List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.selectByGroupNo(crossId, schemeId, ringNo, groupNumber);
CrossPhasePO
entity
=
new
CrossPhasePO
();
entity
.
setCrossId
(
crossId
);
List
<
CrossPhasePO
>
phasePOList
=
crossPhaseMapper
.
listCrossPhasePO
(
entity
);
CrossPhaseLightsPO
crossPhaseLightsPO
=
new
CrossPhaseLightsPO
();
crossPhaseLightsPO
.
setCrossId
(
crossId
);
List
<
CrossPhaseLightsPO
>
crossPhaseLightsList
=
baseCrossPhaseLightsMapper
.
listCrossPhaseLightsPO
(
crossPhaseLightsPO
);
List
<
BaseCrossLightsPO
>
baseCrossLightsPOS
=
baseCrossLightsMapper
.
selectByCrossId
(
crossId
);
List
<
CrossLaneLightsPO
>
crossLaneLightsPOList
=
baseCrossLaneLightsMapper
.
selectByCrossId
(
crossId
);
List
<
LaneInfoPO
>
laneInfoPOList
=
laneInfoMapper
.
selectBycrossIdAll
(
crossId
);
if
(
CollectionUtil
.
isNotEmpty
(
phasePOList
))
{
phasePOList
=
phasePOList
.
stream
()
.
sorted
(
Comparator
.
comparing
(
CrossPhasePO:
:
getSort
))
.
collect
(
Collectors
.
toList
());
List
<
CrossPhasePO
>
phasePOS
=
phasePOList
.
stream
()
.
filter
(
x
->
Objects
.
equals
(
x
.
getPlanId
(),
schemeId
)
&&
Objects
.
equals
(
x
.
getRingNo
(),
ringNo
)
&&
Objects
.
equals
(
x
.
getGroupNo
(),
groupNumber
))
.
collect
(
Collectors
.
toList
());
for
(
CrossPhasePO
crossPhasePO
:
phasePOS
)
{
SaveSchemeConfigDTO
.
PhaseListElement
phaseListElement
=
new
SaveSchemeConfigDTO
.
PhaseListElement
();
phaseListElement
.
setPhaseId
(
crossPhasePO
.
getId
());
String
phaseNo
=
crossPhasePO
.
getPhaseNo
();
phaseListElement
.
setPhaseNo
(
phaseNo
);
Integer
phaseType
=
crossPhasePO
.
getPhaseType
();
phaseListElement
.
setPhaseType
(
phaseType
);
phaseListElement
.
setMinGreenTime
(
crossPhasePO
.
getMinGreenTime
());
phaseListElement
.
setMaxGreenTime
(
crossPhasePO
.
getMaxGreenTime
());
phaseListElement
.
setGreenTime
(
crossPhasePO
.
getGreenTime
());
phaseListElement
.
setGreenFlashTime
(
crossPhasePO
.
getGreenFlashTime
());
phaseListElement
.
setYellowFlashTime
(
crossPhasePO
.
getYellowFlashTime
());
phaseListElement
.
setRedFlashTime
(
crossPhasePO
.
getRedFlashTime
());
phaseListElement
.
setYellowTime
(
crossPhasePO
.
getYellowTime
());
phaseListElement
.
setRedTime
(
crossPhasePO
.
getRedTime
());
// 特殊控制
Integer
controlMode
=
crossPhasePO
.
getControlMode
();
if
(
Objects
.
equals
(
controlMode
,
ControlModeConst
.
YELLOW_FLASH
))
{
phaseListElement
.
setYellowFlash
(
1
);
}
else
if
(
Objects
.
equals
(
controlMode
,
ControlModeConst
.
IS_RED
))
{
phaseListElement
.
setIsRed
(
1
);
}
else
if
(
Objects
.
equals
(
controlMode
,
ControlModeConst
.
IS_GREEN
))
{
phaseListElement
.
setIsGreen
(
1
);
}
else
if
(
Objects
.
equals
(
controlMode
,
ControlModeConst
.
GREEN_FLASH
))
{
phaseListElement
.
setGreenFlash
(
1
);
}
phaseListElement
.
setAccompanyPhaseNoList
(
superPhaseNoList
);
}
// 构造方向列表
List
<
SaveSchemeConfigDTO
.
DirListElement
>
dirList
=
buildDirList
(
crossId
,
phaseId
);
phaseListElement
.
setDirList
(
dirList
);
phaseList
.
add
(
phaseListElement
);
// 伴随相位的母相位列表
// Integer phaseId = crossPhaseMapper.selectIdByCrossIdAndPhaseNo(crossId, schemeId, phaseNo);
List
<
CrossPhasePO
>
crossPhasePOS
=
phasePOS
.
stream
()
.
filter
(
x
->
Objects
.
equals
(
x
.
getPlanId
(),
schemeId
)
&&
Objects
.
equals
(
x
.
getPhaseNo
(),
phaseNo
))
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
crossPhasePOS
))
{
CrossPhasePO
phasePO
=
crossPhasePOS
.
get
(
0
);
Integer
phaseId
=
phasePO
.
getId
();
/*
//暂时不考虑伴随相位
if (phaseType == 3) {
List<String> superPhaseNoList = new ArrayList<>();
//TODO 可以提出来
List<Integer> superIdList = crossAccompanyPhaseMapper.selectByPhaseId(phaseId);
//TODO 可以提出来
List<CrossPhasePO> superList = crossPhaseMapper.selectByIds(superIdList);
for (CrossPhasePO phasePO : superList) {
superPhaseNoList.add(phasePO.getPhaseNo());
}
phaseListElement.setAccompanyPhaseNoList(superPhaseNoList);
}*/
// 构造方向列表
List
<
SaveSchemeConfigDTO
.
DirListElement
>
dirList
=
buildDirList
(
crossPhaseLightsList
,
baseCrossLightsPOS
,
crossLaneLightsPOList
,
laneInfoPOList
,
crossId
,
phaseId
);
phaseListElement
.
setDirList
(
dirList
);
phaseList
.
add
(
phaseListElement
);
}
}
}
return
phaseList
;
}
...
...
@@ -450,45 +570,138 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
* @author Kent HAN
* @date 2023/1/12 15:02
*/
private
List
<
SaveSchemeConfigDTO
.
DirListElement
>
buildDirList
(
String
crossId
,
Integer
phaseId
)
{
private
List
<
SaveSchemeConfigDTO
.
DirListElement
>
buildDirList
New
(
List
<
CrossLaneLightsPO
>
crossLaneLightsPOList
,
List
<
LaneInfoPO
>
laneInfoPOList
,
List
<
CrossPhaseLightsPO
>
crossPhaseLightsList
,
List
<
BaseCrossLightsPO
>
baseCrossLightsPOList
,
String
crossId
,
Integer
phaseId
)
{
List
<
SaveSchemeConfigDTO
.
DirListElement
>
dirList
=
new
ArrayList
<>();
CrossPhaseLightsPO
entity
=
new
CrossPhaseLightsPO
();
/*
CrossPhaseLightsPO entity = new CrossPhaseLightsPO();
entity.setPhaseId(phaseId);
List<CrossPhaseLightsPO> crossPhaseLightsPOList = baseCrossPhaseLightsMapper.listCrossPhaseLightsPO(entity);
Set
<
Integer
>
dirSet
=
new
HashSet
<>();
for
(
CrossPhaseLightsPO
crossPhaseLightsPO
:
crossPhaseLightsPOList
)
{
Integer
lightsId
=
crossPhaseLightsPO
.
getLightsId
();
BaseCrossLightsPO
crossLightsPO
=
baseCrossLightsMapper
.
selectById
(
lightsId
);
if
(
crossLightsPO
!=
null
)
{
Integer
dir
=
crossLightsPO
.
getDir
();
dirSet
.
add
(
dir
);
*/
if
(
CollectionUtil
.
isNotEmpty
(
crossPhaseLightsList
))
{
List
<
CrossPhaseLightsPO
>
crossPhaseLightsPOList
=
crossPhaseLightsList
.
stream
().
filter
(
x
->
x
.
getPhaseId
().
equals
(
phaseId
)).
collect
(
Collectors
.
toList
());
Set
<
Integer
>
dirSet
=
new
HashSet
<>();
for
(
CrossPhaseLightsPO
crossPhaseLightsPO
:
crossPhaseLightsPOList
)
{
Integer
lightsId
=
crossPhaseLightsPO
.
getLightsId
();
/*BaseCrossLightsPO crossLightsPO = baseCrossLightsMapper.selectById(lightsId);
if (crossLightsPO != null) {
Integer dir = crossLightsPO.getDir();
dirSet.add(dir);
}*/
if
(
CollectionUtils
.
isNotEmpty
(
baseCrossLightsPOList
))
{
List
<
BaseCrossLightsPO
>
collect
=
baseCrossLightsPOList
.
stream
().
filter
(
x
->
x
.
getId
().
equals
(
lightsId
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
collect
))
{
BaseCrossLightsPO
crossLightsPO
=
collect
.
get
(
0
);
Integer
dir
=
crossLightsPO
.
getDir
();
dirSet
.
add
(
dir
);
}
}
}
for
(
Integer
dir
:
dirSet
)
{
SaveSchemeConfigDTO
.
DirListElement
dirListElement
=
new
SaveSchemeConfigDTO
.
DirListElement
();
// 前端灯组方向就是车道方向
dirListElement
.
setDir
(
dir
);
// 是否有行人相位
// List<CrossPhaseLightsPO> crossPhaseLightsPOList1 = baseCrossPhaseLightsMapper.selectByPhaseId(phaseId);
List
<
CrossPhaseLightsPO
>
crossPhaseLightsPOList1
=
crossPhaseLightsList
.
stream
().
filter
(
x
->
x
.
getPhaseId
().
equals
(
phaseId
)).
collect
(
Collectors
.
toList
());
for
(
CrossPhaseLightsPO
crossPhaseLightsPO
:
crossPhaseLightsPOList1
)
{
Integer
lightsId
=
crossPhaseLightsPO
.
getLightsId
();
// BaseCrossLightsPO baseCrossLightsPO = baseCrossLightsMapper.selectById(lightsId);
List
<
BaseCrossLightsPO
>
collect
=
baseCrossLightsPOList
.
stream
().
filter
(
x
->
x
.
getId
().
equals
(
lightsId
)).
collect
(
Collectors
.
toList
());
BaseCrossLightsPO
baseCrossLightsPO
=
collect
.
get
(
0
);
Integer
lightsDir
=
baseCrossLightsPO
.
getDir
();
Integer
type
=
baseCrossLightsPO
.
getType
();
if
(
type
>=
20
&&
type
<
30
&&
Objects
.
equals
(
lightsDir
,
dir
))
{
dirListElement
.
setHasPersonPhase
(
1
);
}
}
/*List<BaseCrossLightsPO> crossLightsPOList = baseCrossLightsMapper.selectByCrossIdAndDir(crossId, dir);
for (BaseCrossLightsPO crossLightsPO : crossLightsPOList) {
Integer type = crossLightsPO.getType();
}*/
// 构造车道列表
// List<SaveSchemeConfigDTO.LaneListElement> laneList = buildLaneList(dir, phaseId, crossId);
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
laneList
=
buildLaneListNew
(
crossLaneLightsPOList
,
laneInfoPOList
,
crossPhaseLightsList
,
baseCrossLightsPOList
,
dir
,
phaseId
,
crossId
);
dirListElement
.
setLaneList
(
laneList
);
dirList
.
add
(
dirListElement
);
}
}
for
(
Integer
dir
:
dirSet
)
{
SaveSchemeConfigDTO
.
DirListElement
dirListElement
=
new
SaveSchemeConfigDTO
.
DirListElement
();
// 前端灯组方向就是车道方向
// Integer laneDir = CrossLisghtsLaneDirEnum.getLaneDirByLightsDir(dir);
dirListElement
.
setDir
(
dir
);
// 是否有行人相位
List
<
CrossPhaseLightsPO
>
crossPhaseLightsPOList1
=
baseCrossPhaseLightsMapper
.
selectByPhaseId
(
phaseId
);
for
(
CrossPhaseLightsPO
crossPhaseLightsPO
:
crossPhaseLightsPOList1
)
{
return
dirList
;
}
/**
* 构造方向列表
*
* @param crossId
* @param phaseId
* @return java.util.List<net.wanji.web.dto.SaveSchemeConfigDTO.DirListElement>
* @author Kent HAN
* @date 2023/1/12 15:02
*/
private
List
<
SaveSchemeConfigDTO
.
DirListElement
>
buildDirList
(
List
<
CrossPhaseLightsPO
>
crossPhaseLightsList
,
List
<
BaseCrossLightsPO
>
baseCrossLightsPOS
,
List
<
CrossLaneLightsPO
>
crossLaneLightsPOList
,
List
<
LaneInfoPO
>
laneInfoPOList
,
String
crossId
,
Integer
phaseId
)
{
List
<
SaveSchemeConfigDTO
.
DirListElement
>
dirList
=
new
ArrayList
<>();
/*CrossPhaseLightsPO entity = new CrossPhaseLightsPO();
entity.setPhaseId(phaseId);
List<CrossPhaseLightsPO> crossPhaseLightsPOList = baseCrossPhaseLightsMapper.listCrossPhaseLightsPO(entity);*/
if
(
CollectionUtil
.
isNotEmpty
(
crossPhaseLightsList
)){
List
<
CrossPhaseLightsPO
>
crossPhaseLightsPOList
=
crossPhaseLightsList
.
stream
().
filter
(
x
->
Objects
.
equals
(
x
.
getPhaseId
(),
phaseId
)).
collect
(
Collectors
.
toList
());
Set
<
Integer
>
dirSet
=
new
HashSet
<>();
for
(
CrossPhaseLightsPO
crossPhaseLightsPO
:
crossPhaseLightsPOList
)
{
Integer
lightsId
=
crossPhaseLightsPO
.
getLightsId
();
BaseCrossLightsPO
baseCrossLightsPO
=
baseCrossLightsMapper
.
selectById
(
lightsId
);
Integer
lightsDir
=
baseCrossLightsPO
.
getDir
();
Integer
type
=
baseCrossLightsPO
.
getType
();
if
(
type
>=
20
&&
type
<
30
&&
Objects
.
equals
(
lightsDir
,
dir
))
{
dirListElement
.
setHasPersonPhase
(
1
);
/*BaseCrossLightsPO crossLightsPO = baseCrossLightsMapper.selectById(lightsId);
if (crossLightsPO != null) {
Integer dir = crossLightsPO.getDir();
dirSet.add(dir);
}*/
List
<
BaseCrossLightsPO
>
collected
=
baseCrossLightsPOS
.
stream
().
filter
(
x
->
Objects
.
equals
(
x
.
getId
(),
lightsId
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
collected
)){
BaseCrossLightsPO
lightsPO
=
collected
.
get
(
0
);
Integer
dir
=
lightsPO
.
getDir
();
dirSet
.
add
(
dir
);
}
}
List
<
BaseCrossLightsPO
>
crossLightsPOList
=
baseCrossLightsMapper
.
selectByCrossIdAndDir
(
crossId
,
dir
);
for
(
Integer
dir
:
dirSet
)
{
SaveSchemeConfigDTO
.
DirListElement
dirListElement
=
new
SaveSchemeConfigDTO
.
DirListElement
();
// 前端灯组方向就是车道方向
// Integer laneDir = CrossLisghtsLaneDirEnum.getLaneDirByLightsDir(dir);
dirListElement
.
setDir
(
dir
);
// 是否有行人相位
// List<CrossPhaseLightsPO> crossPhaseLightsPOList1 = baseCrossPhaseLightsMapper.selectByPhaseId(phaseId);
//重复代码,crossPhaseLightsPOList和crossPhaseLightsPOList1 是同一个结果集
for
(
CrossPhaseLightsPO
crossPhaseLightsPO
:
crossPhaseLightsPOList
)
{
Integer
lightsId
=
crossPhaseLightsPO
.
getLightsId
();
/* BaseCrossLightsPO baseCrossLightsPO = baseCrossLightsMapper.selectById(lightsId);
Integer lightsDir = baseCrossLightsPO.getDir();
Integer type = baseCrossLightsPO.getType();
if (type >= 20 && type < 30 && Objects.equals(lightsDir, dir)) {
dirListElement.setHasPersonPhase(1);
}*/
List
<
BaseCrossLightsPO
>
collected
=
baseCrossLightsPOS
.
stream
().
filter
(
x
->
Objects
.
equals
(
x
.
getId
(),
lightsId
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
collected
)){
BaseCrossLightsPO
lightsPO
=
collected
.
get
(
0
);
Integer
lightsDir
=
lightsPO
.
getDir
();
Integer
type
=
lightsPO
.
getType
();
if
(
type
>=
20
&&
type
<
30
&&
Objects
.
equals
(
lightsDir
,
dir
))
{
dirListElement
.
setHasPersonPhase
(
1
);
}
dirSet
.
add
(
dir
);
}
}
//注释无效代码
/* List<BaseCrossLightsPO> crossLightsPOList = baseCrossLightsMapper.selectByCrossIdAndDir(crossId, dir);
for (BaseCrossLightsPO crossLightsPO : crossLightsPOList) {
Integer type = crossLightsPO.getType();
}
// 构造车道列表
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
laneList
=
buildLaneList
(
dir
,
phaseId
,
crossId
);
dirListElement
.
setLaneList
(
laneList
);
}
*/
// 构造车道列表
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
laneList
=
buildLaneList
(
crossPhaseLightsList
,
baseCrossLightsPOS
,
crossLaneLightsPOList
,
laneInfoPOList
,
dir
,
phaseId
,
crossId
);
dirListElement
.
setLaneList
(
laneList
);
dirList
.
add
(
dirListElement
);
dirList
.
add
(
dirListElement
);
}
}
return
dirList
;
}
...
...
@@ -503,43 +716,140 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
* @author Kent HAN
* @date 2023/1/12 15:02
*/
private
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
buildLaneList
(
Integer
dir
,
Integer
phaseId
,
String
crossId
)
{
private
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
buildLaneList
New
(
List
<
CrossLaneLightsPO
>
crossLaneLightsPOList
,
List
<
LaneInfoPO
>
laneInfoPOList
,
List
<
CrossPhaseLightsPO
>
crossPhaseLightsList
,
List
<
BaseCrossLightsPO
>
baseCrossLightsPOList
,
Integer
dir
,
Integer
phaseId
,
String
crossId
)
{
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
laneList
=
new
ArrayList
<>();
CrossPhaseLightsPO
entity
=
new
CrossPhaseLightsPO
();
/*
CrossPhaseLightsPO entity = new CrossPhaseLightsPO();
entity.setPhaseId(phaseId);
List<CrossPhaseLightsPO> crossPhaseLightsPOList = baseCrossPhaseLightsMapper.listCrossPhaseLightsPO(entity);
List<Integer> lightsIds = crossPhaseLightsPOList.stream()
.map(CrossPhaseLightsPO::getLightsId)
.collect(Collectors.toList());
List<BaseCrossLightsPO> crossLightsPOList = baseCrossLightsMapper.selectByLightsIdsAndDir(lightsIds, dir);
*/
List
<
BaseCrossLightsPO
>
crossLightsPOList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
crossPhaseLightsList
))
{
List
<
Integer
>
lightsIds
=
crossPhaseLightsList
.
stream
().
filter
(
x
->
Objects
.
equals
(
x
.
getPhaseId
(),
phaseId
)).
map
(
CrossPhaseLightsPO:
:
getLightsId
)
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
lightsIds
))
{
crossLightsPOList
=
baseCrossLightsPOList
.
stream
().
filter
(
x
->
Objects
.
equals
(
x
.
getDir
(),
dir
)
&&
lightsIds
.
contains
(
x
.
getId
())).
collect
(
Collectors
.
toList
());
}
}
for
(
BaseCrossLightsPO
crossLightsPO
:
crossLightsPOList
)
{
Integer
type
=
crossLightsPO
.
getType
();
if
(
type
<
20
||
type
>=
30
)
{
// 非行人灯
Integer
lightsId
=
crossLightsPO
.
getId
();
List
<
CrossLaneLightsPO
>
crossLaneLightsPOList
=
baseCrossLaneLightsMapper
.
selectByLightsId
(
lightsId
);
/*List<CrossLaneLightsPO> crossLaneLightsPOList = baseCrossLaneLightsMapper.selectByLightsId(lightsId);
List<String> laneIds = crossLaneLightsPOList.stream()
.map(CrossLaneLightsPO::getLaneId)
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
laneIds
))
{
List
<
LaneInfoPO
>
laneInfoPOList
=
laneInfoMapper
.
selectByLaneIds
(
laneIds
);
// 根据sort排序
List
<
LaneInfoPO
>
collect
=
laneInfoPOList
.
stream
(
)
.
sorted
(
Comparator
.
comparing
(
LaneInfoPO:
:
getSort
)
)
.collect(Collectors.toList());
*/
if
(
CollectionUtils
.
isNotEmpty
(
crossLaneLightsPOList
))
{
List
<
String
>
laneIds
=
crossLaneLightsPOList
.
stream
()
.
filter
(
x
->
Objects
.
equals
(
x
.
getLightsId
(),
lightsId
)
)
.
map
(
CrossLaneLightsPO:
:
getLaneId
)
.
collect
(
Collectors
.
toList
());
// 根据转向去重
TreeSet
<
LaneInfoPO
>
laneInfoPOTreeSet
=
collect
.
stream
().
collect
(
Collectors
.
toCollection
(
()
->
new
TreeSet
<>(
Comparator
.
comparing
(
LaneInfoPO:
:
getTurn
))));
for
(
LaneInfoPO
laneInfoPO
:
laneInfoPOTreeSet
)
{
SaveSchemeConfigDTO
.
LaneListElement
laneListElement
=
new
SaveSchemeConfigDTO
.
LaneListElement
();
laneListElement
.
setDirection
(
laneInfoPO
.
getTurn
());
laneListElement
.
setLaneType
(
laneInfoPO
.
getCategory
());
laneListElement
.
setLaneId
(
laneInfoPO
.
getId
());
laneListElement
.
setLightsId
(
lightsId
);
laneList
.
add
(
laneListElement
);
if
(
CollectionUtil
.
isNotEmpty
(
laneIds
)
&&
CollectionUtil
.
isNotEmpty
(
laneInfoPOList
))
{
// List<LaneInfoPO> laneInfoPOList = laneInfoMapper.selectByLaneIds(laneIds);
laneInfoPOList
=
laneInfoPOList
.
stream
().
filter
(
x
->
laneIds
.
contains
(
x
.
getId
())).
collect
(
Collectors
.
toList
());
// 根据sort排序
List
<
LaneInfoPO
>
collect
=
laneInfoPOList
.
stream
()
.
sorted
(
Comparator
.
comparing
(
LaneInfoPO:
:
getSort
))
.
collect
(
Collectors
.
toList
());
// 根据转向去重
TreeSet
<
LaneInfoPO
>
laneInfoPOTreeSet
=
collect
.
stream
().
collect
(
Collectors
.
toCollection
(
()
->
new
TreeSet
<>(
Comparator
.
comparing
(
LaneInfoPO:
:
getTurn
))));
for
(
LaneInfoPO
laneInfoPO
:
laneInfoPOTreeSet
)
{
SaveSchemeConfigDTO
.
LaneListElement
laneListElement
=
new
SaveSchemeConfigDTO
.
LaneListElement
();
laneListElement
.
setDirection
(
laneInfoPO
.
getTurn
());
laneListElement
.
setLaneType
(
laneInfoPO
.
getCategory
());
laneListElement
.
setLaneId
(
laneInfoPO
.
getId
());
laneListElement
.
setLightsId
(
lightsId
);
laneList
.
add
(
laneListElement
);
}
}
}
}
}
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
sortedList
=
laneList
.
stream
()
.
sorted
(
Comparator
.
comparing
(
SaveSchemeConfigDTO
.
LaneListElement
::
getLaneId
))
.
collect
(
Collectors
.
toList
());
return
sortedList
;
}
/**
* 构造车道列表
*
* @param dir
* @param phaseId
* @param crossId
* @return java.util.List<net.wanji.web.dto.SaveSchemeConfigDTO.LaneListElement>
* @author Kent HAN
* @date 2023/1/12 15:02
*/
private
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
buildLaneList
(
List
<
CrossPhaseLightsPO
>
crossPhaseLightsList
,
List
<
BaseCrossLightsPO
>
baseCrossLightsPOSList
,
List
<
CrossLaneLightsPO
>
crossLaneLightsPOList
,
List
<
LaneInfoPO
>
laneInfoPOList
,
Integer
dir
,
Integer
phaseId
,
String
crossId
)
{
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
laneList
=
new
ArrayList
<>();
if
(
CollectionUtil
.
isNotEmpty
(
crossPhaseLightsList
)){
List
<
CrossPhaseLightsPO
>
crossPhaseLightsPOList
=
crossPhaseLightsList
.
stream
().
filter
(
x
->
Objects
.
equals
(
x
.
getPhaseId
(),
phaseId
)).
collect
(
Collectors
.
toList
());
/*CrossPhaseLightsPO entity = new CrossPhaseLightsPO();
entity.setPhaseId(phaseId);
List<CrossPhaseLightsPO> crossPhaseLightsPOList = baseCrossPhaseLightsMapper.listCrossPhaseLightsPO(entity);*/
List
<
Integer
>
lightsIds
=
crossPhaseLightsPOList
.
stream
()
.
map
(
CrossPhaseLightsPO:
:
getLightsId
)
.
collect
(
Collectors
.
toList
());
// List<BaseCrossLightsPO> crossLightsPOList = baseCrossLightsMapper.selectByLightsIdsAndDir(lightsIds, dir);
if
(
CollectionUtil
.
isNotEmpty
(
baseCrossLightsPOSList
)
&&
CollectionUtil
.
isNotEmpty
(
lightsIds
)){
List
<
BaseCrossLightsPO
>
crossLightsPOList
=
baseCrossLightsPOSList
.
stream
().
filter
(
x
->
Objects
.
equals
(
x
.
getDir
(),
dir
)
&&
lightsIds
.
contains
(
x
.
getId
())).
collect
(
Collectors
.
toList
());
for
(
BaseCrossLightsPO
crossLightsPO
:
crossLightsPOList
)
{
Integer
type
=
crossLightsPO
.
getType
();
if
(
type
<
20
||
type
>=
30
)
{
// 非行人灯
Integer
lightsId
=
crossLightsPO
.
getId
();
/*List<CrossLaneLightsPO> crossLaneLightsPOList = baseCrossLaneLightsMapper.selectByLightsId(lightsId);
List<String> laneIds = crossLaneLightsPOList.stream()
.map(CrossLaneLightsPO::getLaneId)
.collect(Collectors.toList());*/
if
(
CollectionUtil
.
isNotEmpty
(
crossLaneLightsPOList
)){
List
<
String
>
laneIds
=
crossLaneLightsPOList
.
stream
()
.
filter
(
x
->
Objects
.
equals
(
x
.
getLightsId
(),
lightsId
))
.
map
(
CrossLaneLightsPO:
:
getLaneId
)
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
laneIds
)
&&
CollectionUtil
.
isNotEmpty
(
laneInfoPOList
))
{
/* List<LaneInfoPO> laneInfoPOList = laneInfoMapper.selectByLaneIds(laneIds);
// 根据sort排序
List<LaneInfoPO> collect = laneInfoPOList.stream()
.sorted(Comparator.comparing(LaneInfoPO::getSort))
.collect(Collectors.toList());*/
List
<
LaneInfoPO
>
laneInfoList
=
laneInfoPOList
.
stream
()
.
filter
(
x
->
laneIds
.
contains
(
x
.
getId
()))
.
sorted
(
Comparator
.
comparing
(
LaneInfoPO:
:
getSort
))
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
laneInfoList
)){
// 根据转向去重
TreeSet
<
LaneInfoPO
>
laneInfoPOTreeSet
=
laneInfoList
.
stream
().
collect
(
Collectors
.
toCollection
(
()
->
new
TreeSet
<>(
Comparator
.
comparing
(
LaneInfoPO:
:
getTurn
))));
for
(
LaneInfoPO
laneInfoPO
:
laneInfoPOTreeSet
)
{
SaveSchemeConfigDTO
.
LaneListElement
laneListElement
=
new
SaveSchemeConfigDTO
.
LaneListElement
();
laneListElement
.
setDirection
(
laneInfoPO
.
getTurn
());
laneListElement
.
setLaneType
(
laneInfoPO
.
getCategory
());
laneListElement
.
setLaneId
(
laneInfoPO
.
getId
());
laneListElement
.
setLightsId
(
lightsId
);
laneList
.
add
(
laneListElement
);
}
}
}
}
}
}
}
}
List
<
SaveSchemeConfigDTO
.
LaneListElement
>
sortedList
=
laneList
.
stream
()
.
sorted
(
Comparator
.
comparing
(
SaveSchemeConfigDTO
.
LaneListElement
::
getLaneId
))
.
collect
(
Collectors
.
toList
());
...
...
wj-databus/src/main/java/net/wanji/databus/dao/mapper/BaseCrossLaneLightsMapper.java
View file @
ab80a42a
...
...
@@ -30,6 +30,8 @@ public interface BaseCrossLaneLightsMapper {
Integer
selectLightsIdByLaneId
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"laneId"
)
String
laneId
);
List
<
CrossLaneLightsPO
>
selectByCrossId
(
@Param
(
"crossId"
)
String
crossId
);
List
<
CrossLaneLightsPO
>
selectLanesByLightId
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"lightId"
)
Integer
lightId
);
...
...
wj-databus/src/main/java/net/wanji/databus/dao/mapper/LaneInfoMapper.java
View file @
ab80a42a
...
...
@@ -21,6 +21,8 @@ public interface LaneInfoMapper {
List
<
LaneInfoPO
>
selectBycrossId
(
@Param
(
"crossId"
)
String
crossId
);
List
<
LaneInfoPO
>
selectBycrossIdAll
(
@Param
(
"crossId"
)
String
crossId
);
LaneInfoPO
selectByCrossIdDirCode
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"dir"
)
Integer
dir
,
@Param
(
"code"
)
String
code
);
...
...
wj-databus/src/main/resources/mapper/BaseCrossLaneLightsMapper.xml
View file @
ab80a42a
...
...
@@ -74,6 +74,13 @@
where cross_id = #{crossId} and lights_id = #{lightId}
</select>
<select
id=
"selectByCrossId"
resultMap=
"BaseResultMap"
>
select
id,lights_id,lane_id,cross_id,gmt_create,gmt_modified
from t_base_cross_lane_lights
where cross_id = #{crossId}
</select>
<select
id=
"selectByLightsId"
resultMap=
"BaseResultMap"
>
select
id,lights_id,lane_id,cross_id,gmt_create,gmt_modified
...
...
wj-databus/src/main/resources/mapper/LaneInfoMapper.xml
View file @
ab80a42a
...
...
@@ -51,6 +51,13 @@
where cross_id = #{crossId} and type = 2
</select>
<select
id=
"selectBycrossIdAll"
resultMap=
"BaseResultMap"
>
select
id,code,sort,type,dir,turn,category,cross_id,rid,length,width,wkt,gmt_create,gmt_modified
from t_base_lane_info
where cross_id = #{crossId}
</select>
<select
id=
"selectByCrossIdDirCode"
resultMap=
"BaseResultMap"
>
select
id,code,sort,type,dir,turn,category,cross_id,rid,length,width,wkt,gmt_create,gmt_modified
...
...
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