465 lines
19 KiB
XML
465 lines
19 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<!DOCTYPE mapper
|
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="com.bonus.bracelet.mapper.ConsControlMapper">
|
|
<!--添加验证时间配置项-->
|
|
<insert id="addConfig" keyProperty="configId" useGeneratedKeys="true">
|
|
INSERT INTO tb_config(config_type,config_id) VALUES (
|
|
#{configType},null
|
|
)
|
|
</insert>
|
|
<!--添加验证时间配置内容项-->
|
|
<insert id="addConfigItems">
|
|
INSERT INTO tb_config_items
|
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
|
<if test="val != null and val != ''">config_time,</if>
|
|
id,
|
|
<if test="params.configId != null">config_id,</if>
|
|
</trim>
|
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
|
<if test="val != null and val != ''">#{val},</if>
|
|
null,
|
|
<if test="params.configId != null">#{params.configId},</if>
|
|
</trim>
|
|
</insert>
|
|
<!--删除验证时间配置项-->
|
|
<delete id="delConfig">
|
|
DELETE FROM tb_config
|
|
</delete>
|
|
<!--删除验证时间配置内容项-->
|
|
<delete id="delConfigItems">
|
|
DELETE FROM tb_config_items
|
|
</delete>
|
|
|
|
<!--获取球机设备列表 项目部权限-->
|
|
<select id="getBallDeviceLists" resultType="com.bonus.common.entity.bracelet.vo.BallTreeVo">
|
|
SELECT * FROM (
|
|
SELECT tp.id,
|
|
tp.pro_name AS label,
|
|
'0' AS devCode,
|
|
'0' AS devIndex,
|
|
0 AS parentId,
|
|
tp.depart_id AS departId,
|
|
0 AS devStatus,
|
|
tp.create_time AS orderTime
|
|
FROM tb_project tp
|
|
WHERE tp.del_flag = 0
|
|
UNION ALL
|
|
SELECT
|
|
tdu.id,
|
|
CONCAT(tpe.name,'-',tpe.phone) AS label,
|
|
td.dev_code AS devCode,
|
|
IFNULL(td.dev_index,0) AS devIndex,
|
|
tdu.pro_id AS parentId,
|
|
tp.depart_id AS departId,
|
|
IFNULL(td.dev_status,0) AS devStatus,
|
|
tdub.ly_time AS orderTime
|
|
FROM tb_dev_use tdu
|
|
LEFT JOIN tb_dev_use_bid tdub ON tdu.id = tdub.id
|
|
LEFT JOIN tb_project tp ON tp.id = tdu.pro_id AND tp.del_flag = 0
|
|
LEFT JOIN tb_device td ON tdub.dev_id = td.id AND td.del_flag = 0
|
|
LEFT JOIN tb_dev_ly tdl ON tdub.dev_id = tdl.dev_id
|
|
LEFT JOIN tb_people tpe ON tpe.id = tdl.ly_user AND tpe.del_flag = 0
|
|
WHERE tdub.dev_type = 'ball' AND tdu.del_flag = 0 AND tdub.gh_time IS NULL
|
|
) a
|
|
<where>
|
|
<if test="roleCode!='administrators' and roleCode!='depart'">
|
|
a.id = -1
|
|
</if>
|
|
<if test="roleCode=='depart'">
|
|
AND a.departId = #{departId}
|
|
</if>
|
|
AND a.departId IS NOT NULL
|
|
</where>
|
|
ORDER BY a.orderTime DESC
|
|
</select>
|
|
<!--获取球机违章识别内容-获取最新的30条-->
|
|
<select id="getBallWarnLists" resultType="com.bonus.common.entity.bracelet.vo.WarnInfoVo">
|
|
SELECT tw.warn_content AS warnContent,
|
|
tw.warn_time AS warnTime,
|
|
td.dev_name AS devName,
|
|
sfs.file_path AS base64Url,
|
|
tpe.name,
|
|
sdd.dict_label AS devTypeName,
|
|
tp.depart_id AS departId
|
|
FROM tb_warn tw
|
|
LEFT JOIN tb_project tp ON tp.id = tw.pro_id AND tp.del_flag = 0
|
|
LEFT JOIN tb_device td ON tw.dev_id = td.id AND td.del_flag = 0
|
|
LEFT JOIN sys_file_source sfs ON tw.id = sfs.source_id AND sfs.source_type = 8 AND sfs.del_flag = 0
|
|
LEFT JOIN tb_people tpe ON tpe.id = tw.user_id AND tpe.del_flag = 0
|
|
LEFT JOIN sys_dict_data sdd ON td.dev_type = sdd.dict_value AND sdd.dict_type = 'sys_device_type'
|
|
<where>
|
|
<if test="roleCode!='administrators' and roleCode!='depart'">
|
|
tp.depart_id = -1
|
|
</if>
|
|
<if test="roleCode=='depart'">
|
|
AND tp.depart_id = #{departId}
|
|
</if>
|
|
AND tp.depart_id IS NOT NULL
|
|
AND tw.warn_type = 2
|
|
</where>
|
|
ORDER BY tw.create_time DESC
|
|
</select>
|
|
<!--预警信息-->
|
|
<select id="getWarnLists" resultType="com.bonus.common.entity.bracelet.vo.WarnInfoVo">
|
|
SELECT tw.warn_content AS warnContent,
|
|
tw.warn_time AS warnTime,
|
|
td.dev_name AS devName,
|
|
sdd.dict_label AS devTypeName,
|
|
tp.depart_id AS departId
|
|
FROM tb_warn tw
|
|
LEFT JOIN tb_project tp ON tp.id = tw.pro_id AND tp.del_flag = 0
|
|
LEFT JOIN tb_device td ON tw.dev_id = td.id AND td.del_flag = 0
|
|
LEFT JOIN sys_dict_data sdd ON td.dev_type = sdd.dict_value AND sdd.dict_type = 'sys_device_type'
|
|
<where>
|
|
<if test="roleCode!='administrators' and roleCode!='depart'">
|
|
tp.depart_id = -1
|
|
</if>
|
|
<if test="roleCode=='depart'">
|
|
AND tp.depart_id = #{departId}
|
|
</if>
|
|
AND tp.depart_id IS NOT NULL
|
|
</where>
|
|
ORDER BY tw.create_time DESC
|
|
</select>
|
|
<!--人员管控-人员树-->
|
|
<select id="getPersonsTree" resultType="com.bonus.common.entity.bracelet.vo.PersonTreeVo">
|
|
SELECT * FROM (
|
|
SELECT tp.id,
|
|
tp.pro_name AS label,
|
|
tp.depart_id AS departId,
|
|
0 AS parentId,
|
|
1 AS level,
|
|
0 AS isTeamLeader,
|
|
0 AS isWarn,
|
|
0 AS type
|
|
FROM tb_project tp
|
|
WHERE tp.del_flag = 0
|
|
UNION ALL
|
|
SELECT CONCAT('tower','-',tpp.id),
|
|
tpp.power_name AS label,
|
|
tp.depart_id AS departId,
|
|
tpp.pro_id AS parentId,
|
|
2 AS level,
|
|
0 AS isTeamLeader,
|
|
0 AS isWarn,
|
|
0 AS type
|
|
FROM tb_project_power tpp
|
|
LEFT JOIN tb_project tp ON tpp.pro_id = tp.id AND tp.del_flag = 0
|
|
WHERE tpp.del_flag = 0
|
|
UNION ALL
|
|
SELECT CONCAT('team','-',twt.team_id) AS id,
|
|
twt.team_name AS label,
|
|
tp.depart_id AS departId,
|
|
CONCAT('tower','-',tdu.gt_id) AS parentId,
|
|
3 AS level,
|
|
0 AS isTeamLeader,
|
|
0 AS isWarn,
|
|
0 AS type
|
|
FROM tb_dev_use tdu
|
|
LEFT JOIN tb_dev_use_bid tdub ON tdu.id = tdub.id
|
|
LEFT JOIN t_work_team twt ON tdu.team_id = twt.team_id AND twt.del_flag = 0
|
|
LEFT JOIN tb_project tp ON twt.pro_id = tp.id AND tp.del_flag = 0
|
|
WHERE tdub.dev_type = 'shx' AND tdub.gh_time IS NULL
|
|
UNION ALL
|
|
SELECT tpe.id,
|
|
CONCAT(tpe.name,'-',tpe.phone) AS label,
|
|
tp.depart_id AS departId,
|
|
CONCAT('team','-',tpe.team_id) AS parentId,
|
|
4 AS level,
|
|
IF(twt.team_leader_id = tpe.id,1,0) AS isTeamLeader,
|
|
0 AS isWarn,
|
|
0 AS type
|
|
FROM tb_dev_use tdu
|
|
LEFT JOIN tb_dev_use_bid tdub ON tdu.id = tdub.id
|
|
LEFT JOIN t_work_team twt ON tdu.team_id = twt.team_id AND twt.del_flag = 0
|
|
LEFT JOIN tb_people tpe ON twt.team_id = tpe.team_id AND tpe.del_flag = 0
|
|
LEFT JOIN tb_project tp ON twt.pro_id = tp.id AND tp.del_flag = 0
|
|
WHERE tdub.dev_type = 'shx' AND tdub.gh_time IS NULL
|
|
UNION ALL
|
|
SELECT tlu.id,
|
|
CONCAT(tlu.name,'-',tlu.phone) AS label,
|
|
tp.depart_id AS departId,
|
|
CONCAT('team','-',tlu.team_id) AS parentId,
|
|
4 AS level,
|
|
0 AS isTeamLeader,
|
|
0 AS isWarn,
|
|
1 AS type
|
|
FROM tb_dev_use tdu
|
|
LEFT JOIN tb_dev_use_bid tdub ON tdu.id = tdub.id
|
|
LEFT JOIN t_work_team twt ON tdu.team_id = twt.team_id AND twt.del_flag = 0
|
|
LEFT JOIN tb_ls_user tlu ON twt.team_id = tlu.team_id
|
|
LEFT JOIN tb_project tp ON twt.pro_id = tp.id AND tp.del_flag = 0
|
|
WHERE tdub.dev_type = 'shx' AND tdub.gh_time IS NULL
|
|
) a
|
|
<where>
|
|
<if test="roleCode!='administrators' and roleCode!='depart'">
|
|
a.departId = -1
|
|
</if>
|
|
<if test="roleCode=='depart'">
|
|
AND a.departId = #{departId}
|
|
</if>
|
|
AND a.departId IS NOT NULL
|
|
</where>
|
|
</select>
|
|
<!--获取今日施工班组/班组施工人数/临时人员施工数量-->
|
|
<select id="getWorkNum" resultType="java.lang.Integer">
|
|
SELECT COUNT(*)
|
|
FROM t_work_team twt
|
|
LEFT JOIN tb_project tp ON twt.pro_id = tp.id AND tp.del_flag = 0
|
|
WHERE twt.team_status = 1 AND twt.del_flag = 0
|
|
<if test="roleCode!='administrators' and roleCode!='depart'">
|
|
AND tp.depart_id = -1
|
|
</if>
|
|
<if test="roleCode=='depart'">
|
|
AND tp.depart_id = #{departId}
|
|
</if>
|
|
AND tp.depart_id IS NOT NULL
|
|
UNION ALL
|
|
SELECT COUNT(*)
|
|
FROM t_work_team twt
|
|
LEFT JOIN tb_project tp ON twt.pro_id = tp.id AND tp.del_flag = 0
|
|
LEFT JOIN tb_people tpe ON twt.team_id = tpe.team_id AND tpe.del_flag = 0
|
|
INNER JOIN tb_bracelet tb ON tpe.id = tb.bid_id AND tb.del_flag = 0 AND tb.peopel_type = 0
|
|
WHERE twt.team_status = 1 AND twt.del_flag = 0
|
|
<if test="roleCode!='administrators' and roleCode!='depart'">
|
|
AND tp.depart_id = -1
|
|
</if>
|
|
<if test="roleCode=='depart'">
|
|
AND tp.depart_id = #{departId}
|
|
</if>
|
|
AND tp.depart_id IS NOT NULL
|
|
UNION ALL
|
|
SELECT COUNT(*)
|
|
FROM t_work_team twt
|
|
LEFT JOIN tb_project tp ON twt.pro_id = tp.id AND tp.del_flag = 0
|
|
LEFT JOIN tb_ls_user tls ON twt.team_id = tls.team_id
|
|
INNER JOIN tb_bracelet tb ON tls.id = tb.bid_id AND tb.del_flag = 0 AND tb.peopel_type = 1
|
|
WHERE twt.team_status = 1 AND twt.del_flag = 0
|
|
<if test="roleCode!='administrators' and roleCode!='depart'">
|
|
AND tp.depart_id = -1
|
|
</if>
|
|
<if test="roleCode=='depart'">
|
|
AND tp.depart_id = #{departId}
|
|
</if>
|
|
AND tp.depart_id IS NOT NULL
|
|
</select>
|
|
<!--安全帽绑定信息-->
|
|
<select id="getSafetyHatInfo" resultType="java.util.Map">
|
|
SELECT td.id,
|
|
tpe.name,
|
|
tpe.phone,
|
|
td.dev_name AS devName,
|
|
td.dev_code AS devCode,
|
|
td.dev_index AS devIndex,
|
|
td.dev_status AS devStatus
|
|
FROM tb_device td
|
|
LEFT JOIN tb_dev_ly tdl ON td.id = tdl.dev_id
|
|
LEFT JOIN tb_project tp ON tdl.pro_id = tp.id AND tp.del_flag = 0
|
|
LEFT JOIN tb_people tpe ON tdl.ly_user = tpe.id AND tpe.del_flag = 0
|
|
WHERE td.dev_type = 'aqm' AND tdl.ly_user IS NOT NULL
|
|
<if test="roleCode!='administrators' and roleCode!='depart'">
|
|
AND tp.depart_id = -1
|
|
</if>
|
|
<if test="roleCode=='depart'">
|
|
AND tp.depart_id = #{departId}
|
|
</if>
|
|
AND tp.depart_id IS NOT NULL
|
|
</select>
|
|
<!--获取杆塔坐标-->
|
|
<select id="getTowerInfo" resultType="java.util.Map">
|
|
SELECT id,
|
|
power_name AS powerName,
|
|
lon,
|
|
lat
|
|
FROM tb_project_power
|
|
WHERE id = #{id}
|
|
</select>
|
|
<!--获取施工距离-->
|
|
<select id="getDistance" resultType="java.lang.String">
|
|
SELECT dict_value
|
|
FROM sys_dict_data
|
|
WHERE dict_type = 'sys_sg_distance'
|
|
LIMIT 1
|
|
</select>
|
|
<!--获取绑定手环的施工班组人员、临时人员信息-->
|
|
<select id="getWorkPersonInfo" resultType="java.util.Map">
|
|
SELECT tpe.id,tpe.name,tpe.phone,tb.id AS devId,0 AS type
|
|
FROM t_work_team twt
|
|
LEFT JOIN tb_people tpe ON twt.team_id = tpe.team_id AND tpe.del_flag = 0
|
|
INNER JOIN tb_bracelet tb ON tpe.id = tb.bid_id AND tb.del_flag = 0 AND tb.peopel_type = 0
|
|
WHERE twt.team_id = #{teamId}
|
|
UNION ALL
|
|
SELECT tls.id,tls.name,tls.phone,tb.id AS devId,1 AS type
|
|
FROM t_work_team twt
|
|
LEFT JOIN tb_ls_user tls ON twt.team_id = tls.team_id
|
|
INNER JOIN tb_bracelet tb ON tls.id = tb.bid_id AND tb.del_flag = 0 AND tb.peopel_type = 1
|
|
WHERE twt.team_id = #{teamId}
|
|
</select>
|
|
<!--获取已绑手环的信息-->
|
|
<select id="getShDeviceInfo" resultType="java.util.Map">
|
|
SELECT id ,
|
|
data_name AS dataName,
|
|
data_val AS dataVal,
|
|
data_unit AS dataUnit,
|
|
data_code AS dataCode,
|
|
data_time AS dataTime
|
|
FROM tb_dev_details
|
|
WHERE dev_id=#{devId} AND dev_type = 0 AND del_flag = 0
|
|
</select>
|
|
<!--根据杆塔获取班组人员-已绑定手环-->
|
|
<select id="getTeamPersonByTower" resultType="com.bonus.common.entity.bracelet.vo.TeamPeopleTreeVo">
|
|
SELECT 0 AS id,
|
|
'在施班组及人员' AS label,
|
|
-1 AS parentId,
|
|
null AS shCode,
|
|
null AS devCode,
|
|
null AS userType
|
|
UNION ALL
|
|
SELECT twt.team_id AS id,
|
|
twt.team_name AS label,
|
|
0 AS parentId,
|
|
null AS shCode,
|
|
null AS devCode,
|
|
null AS userType
|
|
FROM tb_sh_box sbx
|
|
INNER JOIN t_work_team twt on twt.team_id=sbx.team_id AND twt.del_flag = 0
|
|
WHERE sbx.gt_id = #{id} AND sbx.del_flag = 0
|
|
UNION ALL
|
|
SELECT tpe.id,
|
|
CONCAT(tpe.name,'-',tpe.phone) AS label,
|
|
tpe.team_id AS parentId,
|
|
tb.sh_code AS shCode,
|
|
IFNULL(tb.dev_code,'') AS devCode,
|
|
0 AS userType
|
|
FROM tb_bracelet tb
|
|
LEFT JOIN tb_sh_box sbx ON tb.box_id=sbx.id AND sbx.del_flag = 0
|
|
LEFT JOIN tb_people tpe ON tpe.id= tb.bid_id AND tpe.del_flag = 0
|
|
WHERE sbx.gt_id = #{id} AND tb.peopel_type = 0 AND tb.bid_id IS NOT NULL AND sbx.del_flag = 0
|
|
UNION ALL
|
|
SELECT tlu.id,
|
|
CONCAT(tlu.name,'-',tlu.phone) AS label,
|
|
tlu.team_id AS parentId,
|
|
tb.sh_code AS shCode,
|
|
IFNULL(tb.dev_code,'') AS devCode,
|
|
1 AS userType
|
|
FROM tb_bracelet tb
|
|
LEFT JOIN tb_sh_box sbx ON tb.box_id=sbx.id AND sbx.del_flag = 0
|
|
LEFT JOIN tb_ls_user tlu ON tlu.id= tb.bid_id
|
|
WHERE sbx.gt_id = #{id} AND tb.peopel_type = 1 AND sbx.del_flag = 0
|
|
</select>
|
|
<!--获取自动验证配置-->
|
|
<select id="getCheckConfig" resultType="com.bonus.common.entity.bracelet.vo.CheckConfigVo">
|
|
SELECT tc.config_type AS configType,
|
|
tc.config_id AS configId,
|
|
tci.config_time AS time
|
|
FROM tb_config tc
|
|
LEFT JOIN tb_config_items tci on tc.config_id = tci.config_id
|
|
ORDER BY config_time
|
|
</select>
|
|
<!--获取人员详情数据-->
|
|
<select id="getPersonInfoData" resultType="com.bonus.common.entity.bracelet.vo.PersonDetailVo">
|
|
<if test="type == 0">
|
|
SELECT tp.id,
|
|
tp.name,
|
|
tp.phone,
|
|
twt.team_name AS teamName,
|
|
tp.id_card AS idCard,
|
|
tb.face_status AS faceStatus,
|
|
tb.id AS braceletId,
|
|
sbx.gt_id AS towerId,
|
|
tb.sh_code AS shCode,
|
|
IFNULL(tp.mj_code,'--') AS mjCode
|
|
FROM tb_people tp
|
|
LEFT JOIN tb_bracelet tb ON tp.id = tb.bid_id AND tb.peopel_type = 0
|
|
LEFT JOIN tb_sh_box sbx ON tb.box_id=sbx.id AND sbx.del_flag = 0
|
|
LEFT JOIN t_work_team twt ON tp.team_id = twt.team_id
|
|
WHERE tp.id = #{id}
|
|
</if>
|
|
<if test="type == 1">
|
|
SELECT tlu.id,
|
|
tlu.name,
|
|
tlu.phone,
|
|
twt.team_name AS teamName,
|
|
tlu.id_card AS idCard,
|
|
tb.face_status AS faceStatus,
|
|
tb.id AS braceletId,
|
|
sbx.gt_id AS towerId,
|
|
tb.sh_code AS shCode,
|
|
'--' AS mjCode
|
|
FROM tb_ls_user tlu
|
|
LEFT JOIN tb_bracelet tb ON tlu.id = tb.bid_id AND tb.peopel_type = 1
|
|
LEFT JOIN tb_sh_box sbx ON tb.box_id=sbx.id AND sbx.del_flag = 0
|
|
LEFT JOIN t_work_team twt ON tlu.team_id = twt.team_id
|
|
WHERE tlu.id = #{id}
|
|
</if>
|
|
</select>
|
|
<!--获取人员绑定安全帽信息-->
|
|
<select id="getSafetyHat" resultType="com.bonus.common.entity.bracelet.vo.PersonDetailVo$SafetyHat">
|
|
SELECT td.id AS devId,
|
|
td.dev_code AS devCode,
|
|
td.dev_index AS devIndex,
|
|
td.dev_status AS devStatus,
|
|
td.dev_name AS name
|
|
FROM tb_device td
|
|
LEFT JOIN tb_dev_ly tdl ON td.id = tdl.dev_id
|
|
WHERE td.dev_type = 'aqm' AND tdl.ly_user = #{id} AND td.del_flag = 0
|
|
</select>
|
|
<!--获取手环的预警信息-->
|
|
<select id="getWarnInfo" resultType="com.bonus.common.entity.bracelet.vo.PersonDetailVo$WarnInfo">
|
|
SELECT tw.warn_content AS warnContent,
|
|
tw.warn_time AS warnTime
|
|
FROM tb_warn tw
|
|
WHERE dev_id = #{id} AND dev_type = 0
|
|
<if test="startTime!=null and startTime!='' and endTime!=null and endTime!=''">
|
|
AND DATE_FORMAT(tw.warn_time, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
|
|
</if>
|
|
</select>
|
|
<!--人员历史轨迹-->
|
|
<select id="getHistoryGj" resultType="java.util.Map">
|
|
SELECT GROUP_CONCAT(data_value) AS value
|
|
FROM tb_dev_his tdh
|
|
WHERE tdh.dev_id = #{id} AND tdh.dev_type = 0 AND tdh.data_name IN
|
|
<foreach collection="dataName" separator="," open="(" close=")" item="item">
|
|
#{item}
|
|
</foreach>
|
|
<if test="startTime!=null and startTime!=''">
|
|
AND DATE_FORMAT(tdh.data_time, '%Y-%m-%d') BETWEEN #{startTime} AND #{startTime}
|
|
</if>
|
|
GROUP BY tdh.data_type
|
|
</select>
|
|
<!--吊装预警设备列表-->
|
|
<select id="getDzWarnList" resultType="com.bonus.common.entity.app.vo.DevInfoVo">
|
|
SELECT twt.team_leader AS teamLeader,
|
|
twt.leader_phone AS leaderPhone,
|
|
td.dev_code AS devCode,
|
|
td.id AS devId,
|
|
td.dev_index AS devIndex,
|
|
td.dev_name AS devName,
|
|
twt.team_name AS teamName,
|
|
tp.pro_name AS proName
|
|
FROM tb_device td
|
|
LEFT JOIN tb_dev_ly tdl ON td.id = tdl.dev_id
|
|
LEFT JOIN tb_project tp ON tp.id = tdl.pro_id AND tp.del_flag = 0
|
|
LEFT JOIN t_work_team twt ON tdl.team_id = twt.team_id AND twt.del_flag = 0
|
|
WHERE td.dev_type = #{devType}
|
|
<if test="keyWord!=null and keyWord!=''">
|
|
AND (
|
|
INSTR(td.dev_name,#{keyWord}) > 0 OR
|
|
INSTR(tp.pro_name,#{keyWord}) > 0 OR
|
|
INSTR(twt.team_leader,#{keyWord}) > 0
|
|
)
|
|
</if>
|
|
<if test="roleCode!='administrators' and roleCode!='depart'">
|
|
AND tp.depart_id = -1
|
|
</if>
|
|
<if test="roleCode=='depart'">
|
|
AND tp.depart_id = #{departId}
|
|
</if>
|
|
AND tp.depart_id IS NOT NULL
|
|
AND td.del_flag = 0
|
|
ORDER BY tdl.ly_time DESC
|
|
</select>
|
|
|
|
</mapper> |