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
3513e9bc
Commit
3513e9bc
authored
Jan 06, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
方案管理-方案配置,保存相位方案和配时方案
parent
a0025f73
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
153 additions
and
10 deletions
+153
-10
ControlModeConst.java
.../java/net/wanji/web/common/constant/ControlModeConst.java
+11
-0
SaveSchemeConfigDTO.java
.../src/main/java/net/wanji/web/dto/SaveSchemeConfigDTO.java
+8
-8
CrossLaneLightsMapper.java
...va/net/wanji/web/mapper/scheme/CrossLaneLightsMapper.java
+2
-0
CrossPhaseLightsMapper.java
...a/net/wanji/web/mapper/scheme/CrossPhaseLightsMapper.java
+5
-0
CrossPhaseMapper.java
...in/java/net/wanji/web/mapper/scheme/CrossPhaseMapper.java
+3
-0
CrossSchemeMapper.java
...n/java/net/wanji/web/mapper/scheme/CrossSchemeMapper.java
+2
-0
LaneInfoMapper.java
...main/java/net/wanji/web/mapper/scheme/LaneInfoMapper.java
+4
-0
SchemeConfigServiceImpl.java
...anji/web/service/scheme/impl/SchemeConfigServiceImpl.java
+87
-2
CrossLaneLightsMapper.xml
...rc/main/resources/mapper/scheme/CrossLaneLightsMapper.xml
+6
-0
CrossPhaseLightsMapper.xml
...c/main/resources/mapper/scheme/CrossPhaseLightsMapper.xml
+8
-0
CrossPhaseMapper.xml
...ice/src/main/resources/mapper/scheme/CrossPhaseMapper.xml
+5
-0
CrossSchemeMapper.xml
...ce/src/main/resources/mapper/scheme/CrossSchemeMapper.xml
+5
-0
LaneInfoMapper.xml
...rvice/src/main/resources/mapper/scheme/LaneInfoMapper.xml
+7
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/common/constant/ControlModeConst.java
0 → 100644
View file @
3513e9bc
package
net
.
wanji
.
web
.
common
.
constant
;
/**
* @author Kent HAN
* @date 2023/1/6 9:33
*/
public
class
ControlModeConst
{
public
static
final
Integer
FIXED_CYCLE
=
1
;
// 定周期
public
static
final
Integer
YELLOW_FLASH
=
7
;
// 黄闪
public
static
final
Integer
RED_FLASH
=
8
;
// 红闪
}
signal-control-service/src/main/java/net/wanji/web/dto/SaveSchemeConfigDTO.java
View file @
3513e9bc
...
@@ -85,21 +85,21 @@ public class SaveSchemeConfigDTO {
...
@@ -85,21 +85,21 @@ public class SaveSchemeConfigDTO {
private
Integer
turn
;
private
Integer
turn
;
}
}
@ApiModelProperty
(
value
=
"最小绿灯时间"
,
required
=
true
)
@ApiModelProperty
(
value
=
"最小绿灯时间"
,
required
=
true
)
private
Integer
minGreenTime
;
private
Integer
minGreenTime
=
0
;
@ApiModelProperty
(
value
=
"最大绿灯时间"
,
required
=
true
)
@ApiModelProperty
(
value
=
"最大绿灯时间"
,
required
=
true
)
private
Integer
maxGreenTime
;
private
Integer
maxGreenTime
=
0
;
@ApiModelProperty
(
value
=
"绿灯时间"
,
required
=
true
)
@ApiModelProperty
(
value
=
"绿灯时间"
,
required
=
true
)
private
Integer
greenTime
;
private
Integer
greenTime
=
0
;
@ApiModelProperty
(
value
=
"绿闪时间"
,
required
=
true
)
@ApiModelProperty
(
value
=
"绿闪时间"
,
required
=
true
)
private
Integer
greenFlashTime
;
private
Integer
greenFlashTime
=
0
;
@ApiModelProperty
(
value
=
"黄灯时间"
,
required
=
true
)
@ApiModelProperty
(
value
=
"黄灯时间"
,
required
=
true
)
private
Integer
yellowTime
;
private
Integer
yellowTime
=
0
;
@ApiModelProperty
(
value
=
"红灯时间"
,
required
=
true
)
@ApiModelProperty
(
value
=
"红灯时间"
,
required
=
true
)
private
Integer
redTime
;
private
Integer
redTime
=
0
;
@ApiModelProperty
(
value
=
"是否黄闪 0否 1是"
,
required
=
true
)
@ApiModelProperty
(
value
=
"是否黄闪 0否 1是"
,
required
=
true
)
private
Integer
yellowFlash
;
private
Integer
yellowFlash
=
0
;
@ApiModelProperty
(
value
=
"是否红闪 0否 1是"
,
required
=
true
)
@ApiModelProperty
(
value
=
"是否红闪 0否 1是"
,
required
=
true
)
private
Integer
redFlash
;
private
Integer
redFlash
=
0
;
}
}
}
}
}
}
...
...
signal-control-service/src/main/java/net/wanji/web/mapper/scheme/CrossLaneLightsMapper.java
View file @
3513e9bc
...
@@ -19,4 +19,6 @@ public interface CrossLaneLightsMapper {
...
@@ -19,4 +19,6 @@ public interface CrossLaneLightsMapper {
void
insertBatch
(
@Param
(
"entities"
)
List
<
CrossLaneLightsPO
>
entities
);
void
insertBatch
(
@Param
(
"entities"
)
List
<
CrossLaneLightsPO
>
entities
);
String
selectLightsCodeByLaneId
(
@Param
(
"laneId"
)
String
laneId
);
String
selectLightsCodeByLaneId
(
@Param
(
"laneId"
)
String
laneId
);
Integer
selectLightsIdByLaneId
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"laneId"
)
Integer
laneId
);
}
}
signal-control-service/src/main/java/net/wanji/web/mapper/scheme/CrossPhaseLightsMapper.java
View file @
3513e9bc
package
net
.
wanji
.
web
.
mapper
.
scheme
;
package
net
.
wanji
.
web
.
mapper
.
scheme
;
import
io.lettuce.core.dynamic.annotation.Param
;
import
io.lettuce.core.dynamic.annotation.Param
;
import
net.wanji.web.po.scheme.CrossPhaseLightsPO
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.util.Set
;
/**
/**
* 相位灯组关系;(t_base_cross_phase_lights)表数据库访问层
* 相位灯组关系;(t_base_cross_phase_lights)表数据库访问层
* @author : hanbing
* @author : hanbing
...
@@ -11,4 +14,6 @@ import org.springframework.stereotype.Repository;
...
@@ -11,4 +14,6 @@ import org.springframework.stereotype.Repository;
@Repository
@Repository
public
interface
CrossPhaseLightsMapper
{
public
interface
CrossPhaseLightsMapper
{
void
deleteByCrossId
(
@Param
(
"crossId"
)
String
crossId
);
void
deleteByCrossId
(
@Param
(
"crossId"
)
String
crossId
);
void
insertBatchBySet
(
@Param
(
"entities"
)
Set
<
CrossPhaseLightsPO
>
entities
);
}
}
signal-control-service/src/main/java/net/wanji/web/mapper/scheme/CrossPhaseMapper.java
View file @
3513e9bc
package
net
.
wanji
.
web
.
mapper
.
scheme
;
package
net
.
wanji
.
web
.
mapper
.
scheme
;
import
io.lettuce.core.dynamic.annotation.Param
;
import
io.lettuce.core.dynamic.annotation.Param
;
import
net.wanji.web.po.scheme.CrossPhasePO
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
/**
/**
...
@@ -12,4 +13,6 @@ import org.springframework.stereotype.Repository;
...
@@ -12,4 +13,6 @@ import org.springframework.stereotype.Repository;
public
interface
CrossPhaseMapper
{
public
interface
CrossPhaseMapper
{
Integer
selectIdByCrossIdAndPhaseNo
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"coordPhaseNo"
)
String
coordPhaseNo
);
Integer
selectIdByCrossIdAndPhaseNo
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"coordPhaseNo"
)
String
coordPhaseNo
);
void
insertOne
(
CrossPhasePO
crossPhasePO
);
}
}
signal-control-service/src/main/java/net/wanji/web/mapper/scheme/CrossSchemeMapper.java
View file @
3513e9bc
...
@@ -17,4 +17,6 @@ public interface CrossSchemeMapper {
...
@@ -17,4 +17,6 @@ public interface CrossSchemeMapper {
void
deleteByCrossId
(
@Param
(
"crossId"
)
String
crossId
);
void
deleteByCrossId
(
@Param
(
"crossId"
)
String
crossId
);
void
insertBatch
(
@Param
(
"entities"
)
List
<
CrossSchemePO
>
entities
);
void
insertBatch
(
@Param
(
"entities"
)
List
<
CrossSchemePO
>
entities
);
Integer
selectIdByCrossIdAndSchemeNo
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"schemeNo"
)
String
schemeNo
);
}
}
signal-control-service/src/main/java/net/wanji/web/mapper/scheme/LaneInfoMapper.java
View file @
3513e9bc
...
@@ -23,4 +23,8 @@ public interface LaneInfoMapper {
...
@@ -23,4 +23,8 @@ public interface LaneInfoMapper {
LaneInfoPO
selectByCrossIdDirCode
(
@Param
(
"crossId"
)
String
crossId
,
LaneInfoPO
selectByCrossIdDirCode
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"dir"
)
Integer
dir
,
@Param
(
"dir"
)
Integer
dir
,
@Param
(
"code"
)
String
code
);
@Param
(
"code"
)
String
code
);
Integer
selectIdByCrossIdDirTurn
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"dir"
)
Integer
dir
,
@Param
(
"turn"
)
Integer
turn
);
}
}
signal-control-service/src/main/java/net/wanji/web/service/scheme/impl/SchemeConfigServiceImpl.java
View file @
3513e9bc
package
net
.
wanji
.
web
.
service
.
scheme
.
impl
;
package
net
.
wanji
.
web
.
service
.
scheme
.
impl
;
import
net.wanji.web.common.constant.ControlModeConst
;
import
net.wanji.web.dto.SaveSchemeConfigDTO
;
import
net.wanji.web.dto.SaveSchemeConfigDTO
;
import
net.wanji.web.mapper.scheme.CrossLaneLightsMapper
;
import
net.wanji.web.mapper.scheme.CrossPhaseLightsMapper
;
import
net.wanji.web.mapper.scheme.CrossPhaseMapper
;
import
net.wanji.web.mapper.scheme.CrossPhaseMapper
;
import
net.wanji.web.mapper.scheme.CrossSchemeMapper
;
import
net.wanji.web.mapper.scheme.CrossSchemeMapper
;
import
net.wanji.web.mapper.scheme.LaneInfoMapper
;
import
net.wanji.web.po.scheme.CrossPhaseLightsPO
;
import
net.wanji.web.po.scheme.CrossPhasePO
;
import
net.wanji.web.po.scheme.CrossSchemePO
;
import
net.wanji.web.po.scheme.CrossSchemePO
;
import
net.wanji.web.service.scheme.SchemeConfigService
;
import
net.wanji.web.service.scheme.SchemeConfigService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
import
java.util.Set
;
/**
/**
* @author Kent HAN
* @author Kent HAN
...
@@ -20,10 +28,16 @@ import java.util.Objects;
...
@@ -20,10 +28,16 @@ import java.util.Objects;
public
class
SchemeConfigServiceImpl
implements
SchemeConfigService
{
public
class
SchemeConfigServiceImpl
implements
SchemeConfigService
{
private
final
CrossSchemeMapper
crossSchemeMapper
;
private
final
CrossSchemeMapper
crossSchemeMapper
;
private
final
CrossPhaseMapper
crossPhaseMapper
;
private
final
CrossPhaseMapper
crossPhaseMapper
;
private
final
LaneInfoMapper
laneInfoMapper
;
private
final
CrossLaneLightsMapper
crossLaneLightsMapper
;
private
final
CrossPhaseLightsMapper
crossPhaseLightsMapper
;
public
SchemeConfigServiceImpl
(
CrossSchemeMapper
crossSchemeMapper
,
CrossPhaseMapper
crossPhaseMapper
)
{
public
SchemeConfigServiceImpl
(
CrossSchemeMapper
crossSchemeMapper
,
CrossPhaseMapper
crossPhaseMapper
,
LaneInfoMapper
laneInfoMapper
,
CrossLaneLightsMapper
crossLaneLightsMapper
,
CrossPhaseLightsMapper
crossPhaseLightsMapper
)
{
this
.
crossSchemeMapper
=
crossSchemeMapper
;
this
.
crossSchemeMapper
=
crossSchemeMapper
;
this
.
crossPhaseMapper
=
crossPhaseMapper
;
this
.
crossPhaseMapper
=
crossPhaseMapper
;
this
.
laneInfoMapper
=
laneInfoMapper
;
this
.
crossLaneLightsMapper
=
crossLaneLightsMapper
;
this
.
crossPhaseLightsMapper
=
crossPhaseLightsMapper
;
}
}
@Override
@Override
...
@@ -40,7 +54,78 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
...
@@ -40,7 +54,78 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
private
void
handleRingTime
(
SaveSchemeConfigDTO
saveSchemeConfigDTO
)
{
private
void
handleRingTime
(
SaveSchemeConfigDTO
saveSchemeConfigDTO
)
{
// 更新方案基础信息表
// 更新方案基础信息表
updateCrossScheme
(
saveSchemeConfigDTO
);
updateCrossScheme
(
saveSchemeConfigDTO
);
// 更新相位基础表
// 更新相位基础表、相位灯组关系表
updateCrossPhase
(
saveSchemeConfigDTO
);
}
private
void
updateCrossPhase
(
SaveSchemeConfigDTO
saveSchemeConfigDTO
)
{
String
crossId
=
saveSchemeConfigDTO
.
getCrossId
();
for
(
SaveSchemeConfigDTO
.
TimeScheme
timeScheme
:
saveSchemeConfigDTO
.
getTimeSchemeList
())
{
String
schemeNo
=
timeScheme
.
getSchemeNo
();
List
<
SaveSchemeConfigDTO
.
TimeScheme
.
Ring
>
ringList
=
timeScheme
.
getRingList
();
for
(
SaveSchemeConfigDTO
.
TimeScheme
.
Ring
ring
:
ringList
)
{
Integer
ringNo
=
ring
.
getRingNo
();
List
<
SaveSchemeConfigDTO
.
TimeScheme
.
Ring
.
Phase
>
phaseList
=
ring
.
getPhaseList
();
for
(
int
i
=
0
;
i
<
phaseList
.
size
();
i
++)
{
SaveSchemeConfigDTO
.
TimeScheme
.
Ring
.
Phase
phase
=
phaseList
.
get
(
i
);
String
phaseNo
=
phase
.
getPhaseNo
();
Integer
yellowFlash
=
phase
.
getYellowFlash
();
Integer
redFlash
=
phase
.
getRedFlash
();
Integer
greenTime
=
phase
.
getGreenTime
();
Integer
greenFlashTime
=
phase
.
getGreenFlashTime
();
Integer
yellowTime
=
phase
.
getYellowTime
();
Integer
redTime
=
phase
.
getRedTime
();
Integer
minGreenTime
=
phase
.
getMinGreenTime
();
Integer
maxGreenTime
=
phase
.
getMaxGreenTime
();
// 获取方案ID
Integer
schemeId
=
crossSchemeMapper
.
selectIdByCrossIdAndSchemeNo
(
crossId
,
schemeNo
);
CrossPhasePO
crossPhasePO
=
new
CrossPhasePO
();
crossPhasePO
.
setPhaseNo
(
phaseNo
);
crossPhasePO
.
setSort
(
i
+
1
);
crossPhasePO
.
setCrossId
(
crossId
);
crossPhasePO
.
setPlanId
(
schemeId
);
crossPhasePO
.
setRingNo
(
ringNo
);
// 控制模式
if
(
yellowFlash
==
0
&&
redFlash
==
0
)
{
crossPhasePO
.
setControlMode
(
ControlModeConst
.
FIXED_CYCLE
);
}
else
if
(
yellowFlash
==
1
)
{
crossPhasePO
.
setControlMode
(
ControlModeConst
.
YELLOW_FLASH
);
}
else
if
(
redFlash
==
1
)
{
crossPhasePO
.
setControlMode
(
ControlModeConst
.
RED_FLASH
);
}
crossPhasePO
.
setGreenTime
(
greenTime
);
crossPhasePO
.
setGreenFlashTime
(
greenFlashTime
);
crossPhasePO
.
setYellowTime
(
yellowTime
);
crossPhasePO
.
setRedTime
(
redTime
);
crossPhasePO
.
setMinGreenTime
(
minGreenTime
);
crossPhasePO
.
setMaxGreenTime
(
maxGreenTime
);
crossPhasePO
.
setPhaseTime
(
greenTime
+
greenFlashTime
+
yellowTime
+
redTime
);
// 插入相位表记录,获取ID
crossPhaseMapper
.
insertOne
(
crossPhasePO
);
Integer
phaseId
=
crossPhasePO
.
getId
();
// 更新相位灯组关系表
updateCrossPhaseLights
(
crossId
,
phase
,
phaseId
);
}
}
}
}
private
void
updateCrossPhaseLights
(
String
crossId
,
SaveSchemeConfigDTO
.
TimeScheme
.
Ring
.
Phase
phase
,
Integer
phaseId
)
{
Set
<
CrossPhaseLightsPO
>
crossPhaseLightsPOSet
=
new
HashSet
<>();
for
(
SaveSchemeConfigDTO
.
TimeScheme
.
Ring
.
Phase
.
Lane
lane
:
phase
.
getLaneList
())
{
CrossPhaseLightsPO
crossPhaseLightsPO
=
new
CrossPhaseLightsPO
();
Integer
dir
=
lane
.
getDir
();
Integer
turn
=
lane
.
getTurn
();
// 根据车道获得灯组ID
Integer
laneId
=
laneInfoMapper
.
selectIdByCrossIdDirTurn
(
crossId
,
dir
,
turn
);
Integer
lightsId
=
crossLaneLightsMapper
.
selectLightsIdByLaneId
(
crossId
,
laneId
);
crossPhaseLightsPO
.
setLightsId
(
lightsId
);
crossPhaseLightsPO
.
setPhaseId
(
phaseId
);
crossPhaseLightsPO
.
setCrossId
(
crossId
);
crossPhaseLightsPOSet
.
add
(
crossPhaseLightsPO
);
}
crossPhaseLightsMapper
.
insertBatchBySet
(
crossPhaseLightsPOSet
);
}
}
private
void
updateCrossScheme
(
SaveSchemeConfigDTO
saveSchemeConfigDTO
)
{
private
void
updateCrossScheme
(
SaveSchemeConfigDTO
saveSchemeConfigDTO
)
{
...
...
signal-control-service/src/main/resources/mapper/scheme/CrossLaneLightsMapper.xml
View file @
3513e9bc
...
@@ -43,5 +43,11 @@
...
@@ -43,5 +43,11 @@
where t3.id = #{laneId}
where t3.id = #{laneId}
</select>
</select>
<select
id=
"selectLightsIdByLaneId"
resultType=
"java.lang.Integer"
>
select lights_id from t_base_cross_lane_lights
where cross_id = #{crossId} and lane_id = #{laneId}
limit 1
</select>
</mapper>
</mapper>
signal-control-service/src/main/resources/mapper/scheme/CrossPhaseLightsMapper.xml
View file @
3513e9bc
...
@@ -12,6 +12,14 @@
...
@@ -12,6 +12,14 @@
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
</resultMap>
</resultMap>
<insert
id=
"insertBatchBySet"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into t_base_cross_phase_lights(lights_id,phase_id,cross_id)
values
<foreach
collection=
"entities"
item=
"entity"
separator=
","
>
(#{entity.lightsId},#{entity.phaseId},#{entity.crossId})
</foreach>
</insert>
<delete
id=
"deleteByCrossId"
>
<delete
id=
"deleteByCrossId"
>
delete from t_base_cross_phase_lights
delete from t_base_cross_phase_lights
where cross_id = #{crossId}
where cross_id = #{crossId}
...
...
signal-control-service/src/main/resources/mapper/scheme/CrossPhaseMapper.xml
View file @
3513e9bc
...
@@ -24,6 +24,11 @@
...
@@ -24,6 +24,11 @@
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
</resultMap>
</resultMap>
<insert
id=
"insertOne"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into t_base_cross_phase(phase_no,name,sort,cross_id,plan_id,ring_no,control_mode,phase_time,green_time,green_flash_time,ped_flash_time,yellow_time,red_time,min_green_time,max_green_time)
values (#{phaseNo},#{name},#{sort},#{crossId},#{planId},#{ringNo},#{controlMode},#{phaseTime},#{greenTime},#{greenFlashTime},#{pedFlashTime},#{yellowTime},#{redTime},#{minGreenTime},#{maxGreenTime})
</insert>
<select
id=
"selectIdByCrossIdAndPhaseNo"
resultType=
"java.lang.Integer"
>
<select
id=
"selectIdByCrossIdAndPhaseNo"
resultType=
"java.lang.Integer"
>
select id from t_base_cross_phase
select id from t_base_cross_phase
where cross_id = #{crossId} and phase_no = #{coordPhaseNo}
where cross_id = #{crossId} and phase_no = #{coordPhaseNo}
...
...
signal-control-service/src/main/resources/mapper/scheme/CrossSchemeMapper.xml
View file @
3513e9bc
...
@@ -30,5 +30,10 @@
...
@@ -30,5 +30,10 @@
where cross_id = #{crossId}
where cross_id = #{crossId}
</delete>
</delete>
<select
id=
"selectIdByCrossIdAndSchemeNo"
resultType=
"java.lang.Integer"
>
select id from t_base_cross_scheme
where cross_id = #{crossId} and scheme_no = #{schemeNo}
</select>
</mapper>
</mapper>
signal-control-service/src/main/resources/mapper/scheme/LaneInfoMapper.xml
View file @
3513e9bc
...
@@ -53,4 +53,11 @@
...
@@ -53,4 +53,11 @@
where cross_id = #{crossId} and dir = #{dir} and code = #{code}
where cross_id = #{crossId} and dir = #{dir} and code = #{code}
</select>
</select>
<select
id=
"selectIdByCrossIdDirTurn"
resultType=
"java.lang.Integer"
>
select id
from t_base_lane_info
where cross_id = #{crossId} and dir = #{dir} and turn = #{turn}
limit 1
</select>
</mapper>
</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