<?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="org.sxkj.gd.workorder.mapper.GdManageDeviceMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="gdManageDeviceResultMap" type="org.sxkj.gd.workorder.vo.GdManageDeviceVO">
|
<result column="id" property="id"/>
|
<result column="device_sn" property="deviceSn"/>
|
<result column="device_name" property="deviceName"/>
|
<result column="nickname" property="nickname"/>
|
<result column="device_payload" property="devicePayload"/>
|
<result column="longitude" property="longitude"/>
|
<result column="latitude" property="latitude"/>
|
<result column="mode_code" property="modeCode"/>
|
<result column="create_time" property="createTime"/>
|
<result column="device_dept_name" property="deviceDeptName"/>
|
</resultMap>
|
|
|
<select id="selectGdManageDevicePage" resultMap="gdManageDeviceResultMap">
|
select
|
md.*,
|
bd.dept_name as device_dept_name
|
from
|
ja_gd_manage_device md
|
left join
|
/* 修改点1:双向转型对齐,确保 bigint 和 varchar 都能匹配 */
|
blade_dept bd on md.create_dept::text = bd.id::text
|
<where>
|
/* 修改点2:去掉开头多余的 and,保持 SQL 语法严谨 */
|
md.is_deleted = 0
|
<if test="param2.nickname != null and param2.nickname != ''">
|
and md.nickname like concat('%',#{param2.nickname},'%')
|
</if>
|
<if test="param2.deptId != null">
|
/* 修改点3:参数过滤也建议加转型,防止 param2.deptId 被 MyBatis 传为 String */
|
and md.create_dept::text = #{param2.deptId}::text
|
</if>
|
<if test="param2.location != null and param2.location != ''">
|
and md.location like concat('%',#{param2.location},'%')
|
</if>
|
<if test="param2.modeCode != null and param2.modeCode != ''">
|
and md.mode_code::text = #{param2.modeCode}::text
|
</if>
|
<if test="param2.deviceType != null and param2.deviceType != ''">
|
and md.device_type::text = #{param2.deviceType}::text
|
</if>
|
</where>
|
</select>
|
|
|
<select id="exportGdManageDevice" resultType="org.sxkj.gd.workorder.excel.GdManageDeviceExcel">
|
SELECT
|
*
|
FROM
|
ja_gd_manage_device ${ew.customSqlSegment}
|
</select>
|
|
<select id="selectGdManageDevice" resultType="org.sxkj.gd.workorder.vo.GdManageDeviceVO">
|
select
|
md.id,
|
md.device_sn,
|
md.device_name,
|
md.nickname,
|
md.device_payload,
|
md.longitude,
|
md.latitude,
|
md.geom,
|
d2.height as height
|
from
|
ja_gd_manage_device md
|
left join ja_gd_manage_device d2
|
on md.device_sn::text = d2.device_sn::text
|
and d2.device_type = '0'
|
<where>
|
md.is_deleted = 0
|
<if test="deviceIds != null and deviceIds.size() > 0">
|
and md.id::text in
|
<foreach item="item" collection="deviceIds" index="index" open="(" close=")" separator=",">
|
#{item}::text
|
</foreach>
|
</if>
|
<if test="devicePayload != null and devicePayload != ''">
|
and md.device_payload like concat('%', #{devicePayload}, '%')
|
</if>
|
<if test="geom != null and geom != ''">
|
/* 确保这里是第一个条件时,and 能被 MyBatis 正确处理,或者直接去掉这个 and */
|
AND ST_Intersects ( ST_SetSRID ( md.geom, 4326 ), ST_SetSRID ( ST_GeomFromText ( ${geom} ), 4326 ) )
|
</if>
|
<if test="deviceType != null and deviceType != '' ">
|
and md.device_type::text = #{deviceType}::text
|
</if>
|
</where>
|
</select>
|
|
</mapper>
|