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
8c6c8443
Commit
8c6c8443
authored
Feb 28, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 实时监控->拥堵溢出优化
parent
153c8f12
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
66 additions
and
40 deletions
+66
-40
CrossOptimizeService.java
...main/java/net/wanji/opt/service/CrossOptimizeService.java
+1
-1
CrossOptimizeServiceImpl.java
.../net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
+62
-38
CrossMonitorTask.java
...ce/src/main/java/net/wanji/opt/task/CrossMonitorTask.java
+3
-1
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossOptimizeService.java
View file @
8c6c8443
...
@@ -16,7 +16,7 @@ public interface CrossOptimizeService {
...
@@ -16,7 +16,7 @@ public interface CrossOptimizeService {
* 路口实时优化
* 路口实时优化
* @return
* @return
*/
*/
String
realtimeOptimize
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
);
String
realtimeOptimize
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
);
/**
/**
* 路口方案优化
* 路口方案优化
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
View file @
8c6c8443
...
@@ -80,15 +80,16 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -80,15 +80,16 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
@Override
@Override
@Transactional
@Transactional
public
String
realtimeOptimize
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
)
{
public
String
realtimeOptimize
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
)
{
try
{
try
{
// 相位配时信息,key
:路口编号_方向类型_转向类型,value
相位配时信息
// 相位配时信息,key
: 路口编号_方向类型_转向类型,value:
相位配时信息
Map
<
String
,
CrossPhaseDTO
>
phaseMap
=
listPhaseList
();
Map
<
String
,
CrossPhaseDTO
>
phaseMap
=
listPhaseList
();
setTurnList
(
abnormalCrossList
,
phaseMap
);
setTurnList
(
abnormalCrossList
,
phaseMap
);
setTurnList
(
crossDataRealtimePOList
,
phaseMap
);
// 获取所有信控路口转向实时数据
// 获取所有信控路口转向实时数据
,包括异常路口和正常路口
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtime
=
listTurnDataRealtime
(
abnormalCross
List
);
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtime
=
listTurnDataRealtime
(
crossDataRealtimePO
List
);
// 恢复优化路口原始方案:上一批次优化后,路口正常需要恢复原始方案
// 恢复优化路口原始方案:上一批次优化后,路口正常需要恢复原始方案
restoreOptCrossOriSchema
(
abnormalCrossList
,
phaseMap
);
restoreOptCrossOriSchema
(
abnormalCrossList
,
phaseMap
);
...
@@ -140,17 +141,17 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -140,17 +141,17 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
continue
;
continue
;
}
}
// 判断路口是否是绿波
// 判断路口是否是绿波
// 路口拥堵
方向转向,dir_turn
// 路口拥堵
进口方向,dir
List
<
String
>
optCrossDir
TurnList
=
getOptCrossDirTurn
List
(
cross
);
List
<
String
>
optCrossDir
List
=
getOptCrossInDir
List
(
cross
);
// 溢出当前路口方向转向减少时间 10s
// 溢出当前路口方向转向减少时间 10s
// 计算路口各转向所需的通行时长(秒)
// 计算路口各转向所需的通行时长(秒)
List
<
CrossTurnDataRealtimeDTO
>
crossTurnDataRealtimeDTOS
=
turnDataRealtimeMap
.
get
(
crossId
);
List
<
CrossTurnDataRealtimeDTO
>
crossTurnDataRealtimeDTOS
=
turnDataRealtimeMap
.
get
(
crossId
);
for
(
String
dir
Turn
:
optCrossDirTurn
List
)
{
for
(
String
dir
:
optCrossDir
List
)
{
for
(
CrossTurnDataRealtimeDTO
crossTurnDataRealtimeDTO
:
crossTurnDataRealtimeDTOS
)
{
for
(
CrossTurnDataRealtimeDTO
crossTurnDataRealtimeDTO
:
crossTurnDataRealtimeDTOS
)
{
Integer
inDir
=
crossTurnDataRealtimeDTO
.
getInDir
();
Integer
inDir
=
crossTurnDataRealtimeDTO
.
getInDir
();
String
turnType
=
crossTurnDataRealtimeDTO
.
getTurnType
();
String
turnType
=
crossTurnDataRealtimeDTO
.
getTurnType
();
if
(
Objects
.
equals
(
dir
Turn
,
String
.
join
(
"_"
,
String
.
valueOf
(
inDir
),
turnType
)))
{
if
(
Objects
.
equals
(
dir
,
String
.
valueOf
(
inDir
)))
{
crossTurnDataRealtimeDTO
.
setPassTime
(-
10.0
);
crossTurnDataRealtimeDTO
.
setPassTime
(-
10.0
);
}
}
}
}
...
@@ -165,13 +166,17 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -165,13 +166,17 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
if
(
CollectionUtils
.
isEmpty
(
ridInfoEntities
))
{
if
(
CollectionUtils
.
isEmpty
(
ridInfoEntities
))
{
continue
;
continue
;
}
}
for
(
String
dirTurn
:
optCrossDir
Turn
List
)
{
for
(
String
dirTurn
:
optCrossDirList
)
{
Integer
dir
=
Integer
.
valueOf
(
dirTurn
.
substring
(
0
,
1
)
);
Integer
dir
=
Integer
.
valueOf
(
dirTurn
);
for
(
RidInfoEntity
ridInfoEntity
:
ridInfoEntities
)
{
for
(
RidInfoEntity
ridInfoEntity
:
ridInfoEntities
)
{
Integer
inDir
=
ridInfoEntity
.
getInDir
();
Integer
inDir
=
ridInfoEntity
.
getInDir
();
if
(!
congestCrossMap
.
containsKey
(
ridInfoEntity
.
getEndCrossId
())
&&
Objects
.
equals
(
inDir
,
dir
))
{
if
(!
congestCrossMap
.
containsKey
(
ridInfoEntity
.
getEndCrossId
())
&&
Objects
.
equals
(
inDir
,
dir
))
{
String
endCrossId
=
ridInfoEntity
.
getEndCrossId
();
String
endCrossId
=
ridInfoEntity
.
getEndCrossId
();
List
<
CrossTurnDataRealtimeDTO
>
endcrossTurnDataRealtimeDTOS
=
turnDataRealtimeMap
.
get
(
endCrossId
);
List
<
CrossTurnDataRealtimeDTO
>
endcrossTurnDataRealtimeDTOS
=
turnDataRealtimeMap
.
get
(
endCrossId
);
if
(
CollectionUtils
.
isEmpty
(
endcrossTurnDataRealtimeDTOS
))
{
log
.
error
(
"溢出路口:{},优化其下游路口:{}时,路口转向数据为空"
,
crossId
,
ridInfoEntity
.
getEndCrossId
());
throw
new
Exception
();
}
endcrossTurnDataRealtimeDTOS
.
forEach
(
item
->
item
.
setPassTime
(
calPassTime
(
item
)));
endcrossTurnDataRealtimeDTOS
.
forEach
(
item
->
item
.
setPassTime
(
calPassTime
(
item
)));
// 进行优化下发
// 进行优化下发
doExecuteCrossOpt
(
crossTurnDataRealtimeDTOS
,
phaseMap
,
endCrossId
,
"3"
);
doExecuteCrossOpt
(
crossTurnDataRealtimeDTOS
,
phaseMap
,
endCrossId
,
"3"
);
...
@@ -195,6 +200,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -195,6 +200,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
private
void
congestionOpt
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
private
void
congestionOpt
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
// 拥堵路口集合
Map
<
String
,
List
<
CrossDataRealtimePO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimePO:
:
getCrossId
));
Map
<
String
,
List
<
CrossDataRealtimePO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimePO:
:
getCrossId
));
String
crossId
;
String
crossId
;
...
@@ -208,7 +214,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -208,7 +214,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
}
}
// 路口拥堵方向转向,dir_turn
// 路口拥堵方向转向,dir_turn
List
<
String
>
optCrossDir
TurnList
=
getOptCrossDirTurn
List
(
cross
);
List
<
String
>
optCrossDir
List
=
getOptCrossInDir
List
(
cross
);
// 判断当前路口是否已优化
// 判断当前路口是否已优化
if
(
CROSS_OPT
.
contains
(
crossId
))
{
if
(
CROSS_OPT
.
contains
(
crossId
))
{
...
@@ -221,32 +227,41 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -221,32 +227,41 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
if
(
CollectionUtils
.
isEmpty
(
ridInfoEntities
))
{
if
(
CollectionUtils
.
isEmpty
(
ridInfoEntities
))
{
continue
;
continue
;
}
}
for
(
String
dirTurn
:
optCrossDirTurnList
)
{
// 当前路口拥堵方向,优化当前路口方向的上游路口的直行和左转方向
Integer
dir
=
Integer
.
valueOf
(
dirTurn
.
substring
(
0
,
1
));
for
(
String
congestionDir
:
optCrossDirList
)
{
String
turn
=
dirTurn
.
substring
(
2
,
1
);
Integer
intCongestionDir
=
Integer
.
valueOf
(
congestionDir
);
// 拥堵路口对上游路口进行优化
// 拥堵路口对上游路口进行优化
for
(
RidInfoEntity
ridInfoEntity
:
ridInfoEntities
)
{
for
(
RidInfoEntity
ridInfoEntity
:
ridInfoEntities
)
{
String
startCrossId
=
ridInfoEntity
.
getStartCrossId
();
// 上游路口时拥堵路口时,不进行优化
if
(
congestCrossMap
.
containsKey
(
startCrossId
))
{
continue
;
}
Integer
inDir
=
ridInfoEntity
.
getInDir
();
Integer
inDir
=
ridInfoEntity
.
getInDir
();
// 拥堵列表包含上游路口,不需要操作, 否则当前路口进行优化,并且路口拥堵方向和驶入方向相同
// 优化当前开始路口的此方向直行,和逆时针方向左转
// 优化当前开始路口的此方向直行,和逆时针方向左转
if
(!
congestCrossMap
.
containsKey
(
ridInfoEntity
.
getEndCrossId
())
&&
Objects
.
equals
(
inDir
,
dir
))
{
if
(
Objects
.
equals
(
inDir
,
intCongestionDir
))
{
String
startCrossId
=
ridInfoEntity
.
getStartCrossId
();
// 计算上游路口各转向所需的通行时长(秒) 此方向和逆时针左转可可减时间 10s
// 计算上游路口各转向所需的通行时长(秒) 此方向和逆时针左转可可减时间 10s
List
<
CrossTurnDataRealtimeDTO
>
crossTurnDataRealtimeDTOS
=
turnDataRealtimeMap
.
get
(
startCrossId
);
List
<
CrossTurnDataRealtimeDTO
>
crossTurnDataRealtimeDTOS
=
turnDataRealtimeMap
.
get
(
startCrossId
);
for
(
CrossTurnDataRealtimeDTO
crossTurnDataRealtimeDTO
:
crossTurnDataRealtimeDTOS
)
{
if
(!
CollectionUtils
.
isEmpty
(
crossTurnDataRealtimeDTOS
))
{
Integer
startInDir
=
crossTurnDataRealtimeDTO
.
getInDir
();
for
(
CrossTurnDataRealtimeDTO
crossTurnDataRealtimeDTO
:
crossTurnDataRealtimeDTOS
)
{
if
(
Objects
.
equals
(
startInDir
,
dir
)
&&
Objects
.
equals
(
"s"
,
turn
))
{
Integer
startInDir
=
crossTurnDataRealtimeDTO
.
getInDir
();
crossTurnDataRealtimeDTO
.
setPassTime
(-
10.0
);
String
turnType
=
crossTurnDataRealtimeDTO
.
getTurnType
();
}
if
(
Objects
.
equals
(
startInDir
,
intCongestionDir
))
{
if
(
Objects
.
equals
(
startInDir
,
(
dir
+
2
)
==
9
?
1
:
dir
+
2
)
&&
Objects
.
equals
(
"l"
,
turn
))
{
crossTurnDataRealtimeDTO
.
setPassTime
(-
10.0
);
crossTurnDataRealtimeDTO
.
setPassTime
(-
10.0
);
}
if
(
Objects
.
equals
(
startInDir
,
(
intCongestionDir
+
2
)
==
9
?
1
:
intCongestionDir
+
2
)
&&
Objects
.
equals
(
"l"
,
turnType
))
{
crossTurnDataRealtimeDTO
.
setPassTime
(-
10.0
);
}
}
}
// 进行优化下发
doExecuteCrossOpt
(
crossTurnDataRealtimeDTOS
,
phaseMap
,
startCrossId
,
"2"
);
// 记录已优化的路口
CROSS_OPT
.
add
(
crossId
);
}
else
{
log
.
error
(
"当前拥堵路口: {}, 实时监控优化上游路口: {}时,未获取到上游路口的实时转向数据!"
,
crossId
,
startCrossId
);
}
}
// 进行优化下发
doExecuteCrossOpt
(
crossTurnDataRealtimeDTOS
,
phaseMap
,
startCrossId
,
"2"
);
// 记录已优化的路口
CROSS_OPT
.
add
(
crossId
);
}
}
}
}
}
}
...
@@ -255,13 +270,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -255,13 +270,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
}
}
/**
/**
* 当前路口异常转向列表 element:
dir_turn
* 当前路口异常转向列表 element:
进口方向
*
*
* @param cross
* @param cross
* @return
* @return
*/
*/
private
static
List
<
String
>
getOptCross
DirTurn
List
(
CrossDataRealtimePO
cross
)
{
private
static
List
<
String
>
getOptCross
InDir
List
(
CrossDataRealtimePO
cross
)
{
List
<
String
>
crossIdDir
Turn
List
=
new
ArrayList
<>();
List
<
String
>
crossIdDirList
=
new
ArrayList
<>();
List
<
CrossDirInfoDTO
>
dirList
=
cross
.
getDirList
();
List
<
CrossDirInfoDTO
>
dirList
=
cross
.
getDirList
();
List
<
CrossTurnInfoDTO
>
turnList
=
cross
.
getTurnList
();
List
<
CrossTurnInfoDTO
>
turnList
=
cross
.
getTurnList
();
if
(!
CollectionUtils
.
isEmpty
(
dirList
)
&&
!
CollectionUtils
.
isEmpty
(
turnList
))
{
if
(!
CollectionUtils
.
isEmpty
(
dirList
)
&&
!
CollectionUtils
.
isEmpty
(
turnList
))
{
...
@@ -270,16 +285,17 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -270,16 +285,17 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
Integer
inOutType
=
crossDirInfoDTO
.
getInOutType
();
Integer
inOutType
=
crossDirInfoDTO
.
getInOutType
();
for
(
CrossTurnInfoDTO
crossTurnInfoDTO
:
turnList
)
{
for
(
CrossTurnInfoDTO
crossTurnInfoDTO
:
turnList
)
{
Integer
inDir
=
crossTurnInfoDTO
.
getInDir
();
Integer
inDir
=
crossTurnInfoDTO
.
getInDir
();
String
turnType
=
crossTurnInfoDTO
.
getTurnType
();
// 路口方向进口=驶入方向
// 路口方向进口=驶入方向
if
(
Objects
.
equals
(
dirType
,
inDir
)
&&
Objects
.
equals
(
1
,
inOutType
)
&&
Objects
.
equals
(
"s"
,
turnType
))
{
if
(
Objects
.
equals
(
dirType
,
inDir
)
&&
Objects
.
equals
(
1
,
inOutType
))
{
String
str
=
String
.
join
(
"_"
,
crossDirInfoDTO
.
getCrossDirId
(),
turnType
);
String
str
=
String
.
valueOf
(
crossDirInfoDTO
.
getDirType
());
crossIdDirTurnList
.
add
(
str
);
if
(!
crossIdDirList
.
contains
(
str
))
{
crossIdDirList
.
add
(
str
);
}
}
}
}
}
}
}
}
}
return
crossIdDir
Turn
List
;
return
crossIdDirList
;
}
}
/**
/**
...
@@ -458,9 +474,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -458,9 +474,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param phaseTimeOptResultMap
* @param phaseTimeOptResultMap
* @return
* @return
*/
*/
private
SchemeSendVO
getSchemeSendVO
(
String
crossId
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
,
Map
<
String
,
Integer
>
phaseTimeOptResultMap
)
{
private
SchemeSendVO
getSchemeSendVO
(
String
crossId
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
,
Map
<
String
,
Integer
>
phaseTimeOptResultMap
)
throws
Exception
{
String
key
=
String
.
join
(
Constants
.
SystemParam
.
SEPARATOR_UNDER_LINE
,
crossId
,
"1"
,
"s"
);
String
key
=
String
.
join
(
Constants
.
SystemParam
.
SEPARATOR_UNDER_LINE
,
crossId
,
"1"
,
"s"
);
CrossPhaseDTO
crossPhaseDTO
=
phaseMap
.
get
(
key
);
CrossPhaseDTO
crossPhaseDTO
=
phaseMap
.
get
(
key
);
if
(
Objects
.
isNull
(
crossPhaseDTO
))
{
log
.
error
(
"当前路口:{}未获取到信号机相位等信息,无法进行方案下发优化"
,
crossId
);
throw
new
Exception
();
}
Integer
schemeId
=
crossPhaseDTO
.
getSchemeId
();
Integer
schemeId
=
crossPhaseDTO
.
getSchemeId
();
List
<
CrossSchemePO
>
crossSchemePOS
=
crossSchemeMapper
.
listCrossSchemeInfo
(
crossId
,
null
,
schemeId
);
List
<
CrossSchemePO
>
crossSchemePOS
=
crossSchemeMapper
.
listCrossSchemeInfo
(
crossId
,
null
,
schemeId
);
...
@@ -726,10 +746,14 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -726,10 +746,14 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
CrossSchemeDTO
scheme
=
schemeMap
.
get
(
section
.
getSchemeId
());
// 方案信息
CrossSchemeDTO
scheme
=
schemeMap
.
get
(
section
.
getSchemeId
());
// 方案信息
if
(
Objects
.
isNull
(
scheme
.
getPhaseInfos
()))
{
if
(
Objects
.
isNull
(
scheme
.
getPhaseInfos
()))
{
log
.
error
(
"{}-路口, {}-方案,方案中相位信息不能为空"
,
crossId
,
scheme
.
getId
());
log
.
error
(
"{}-路口, {}-方案,方案中相位信息不能为空"
,
crossId
,
scheme
.
getId
());
throw
new
Exception
(
"方案中相位信息不能为空"
)
;
continue
;
}
}
for
(
CrossPhaseDTO
phase
:
scheme
.
getPhaseInfos
())
{
// 相位信息列表
for
(
CrossPhaseDTO
phase
:
scheme
.
getPhaseInfos
())
{
// 相位信息列表
if
(
Objects
.
isNull
(
phase
.
getLightsInfos
()))
{
log
.
error
(
"{}-路口, {}-方案,{}-灯组,灯组中车道信息不能为空"
,
crossId
,
scheme
.
getId
(),
phase
.
getId
());
continue
;
}
for
(
CrossLightsDTO
lights
:
phase
.
getLightsInfos
())
{
// 灯组信息列表
for
(
CrossLightsDTO
lights
:
phase
.
getLightsInfos
())
{
// 灯组信息列表
dir
=
lights
.
getDir
();
dir
=
lights
.
getDir
();
...
...
signal-optimize-service/src/main/java/net/wanji/opt/task/CrossMonitorTask.java
View file @
8c6c8443
...
@@ -53,7 +53,7 @@ public class CrossMonitorTask {
...
@@ -53,7 +53,7 @@ public class CrossMonitorTask {
// }
// }
// 调用路口实时优化
// 调用路口实时优化
crossOptimizeService
.
realtimeOptimize
(
abnormalCrossList
);
crossOptimizeService
.
realtimeOptimize
(
abnormalCrossList
,
crossDataRealtimePOList
);
}
}
...
@@ -103,7 +103,9 @@ public class CrossMonitorTask {
...
@@ -103,7 +103,9 @@ public class CrossMonitorTask {
// todo test数据
// todo test数据
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
=
new
ArrayList
<>(
1
);
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
=
new
ArrayList
<>(
1
);
CrossDataRealtimePO
crossDataRealtimePO
=
crossDataRealtimeMapper
.
selectById
(
"14Q1409IRF0"
);
CrossDataRealtimePO
crossDataRealtimePO
=
crossDataRealtimeMapper
.
selectById
(
"14Q1409IRF0"
);
CrossDataRealtimePO
crossDataRealtimePO1
=
crossDataRealtimeMapper
.
selectById
(
"14Q0S09IQB0"
);
crossDataRealtimePOList
.
add
(
crossDataRealtimePO
);
crossDataRealtimePOList
.
add
(
crossDataRealtimePO
);
crossDataRealtimePOList
.
add
(
crossDataRealtimePO1
);
// todo 对数据进行处理,可能主要是CrossTurnDataRealtimeDTO中的车间距,车时距等配置修改
// todo 对数据进行处理,可能主要是CrossTurnDataRealtimeDTO中的车间距,车时距等配置修改
...
...
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