吉安感知网项目-后端
linwei
yesterday 08ddfad4530a014094c06fe68b8c2d9a0753403a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?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.fw.record.mapper.FwDroneFlightRecordMapper">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="fwDroneFlightRecordResultMap" type="org.sxkj.fw.record.entity.FwDroneFlightRecordEntity">
        <result column="id" property="id"/>
        <result column="device_id" property="deviceId"/>
        <result column="drone_name" property="droneName"/>
        <result column="serial_no" property="serialNo"/>
        <result column="alarm_time" property="alarmTime"/>
        <result column="trigger_type" property="triggerType"/>
        <result column="stay_duration" property="stayDuration"/>
        <result column="area_code" property="areaCode"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
 
 
    <select id="selectFwDroneFlightRecordPage" resultMap="fwDroneFlightRecordResultMap">
        select
        dfr.*
        from
        ja_fw_drone_flight_record dfr
        left join
        /* 修改点1:双向转型对齐 */
        ja_fw_device d on dfr.device_id::text = d.id::text
        <where>
            dfr.is_deleted = 0
            and d.track_status = 1
            and d.is_enabled = 1
            <if test="param2.regionCode != null and param2.regionCode != ''">
                and (d.final_outbound_area_code like CONCAT(#{param2.regionCode}, '%')
                <if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
                    /* 修改点2:dfr.device_id 转 text 以匹配子查询,参数加 ::bigint */
                    or dfr.device_id::text in (
                    SELECT device_id::text FROM ja_fw_device_per_share
                    WHERE loan_to_dept_id = #{param2.currentDeptId}::bigint
                    AND is_deleted = 0
                    )
                </if>
                )
            </if>
            <if test="param2.deviceId != null and param2.deviceId != ''">
                /* 修改点3:过滤条件参数对齐 */
                and dfr.device_id::text = #{param2.deviceId}::text
            </if>
            <if test="param2.droneName != null and param2.droneName != ''">
                and dfr.drone_name like CONCAT('%', #{param2.droneName}, '%')
            </if>
            <if test="param2.serialNo != null and param2.serialNo != ''">
                and dfr.serial_no = #{param2.serialNo}
            </if>
            <if test="param2.alarmTime != null and param2.alarmTime != ''">
                and dfr.alarm_time = #{param2.alarmTime}
            </if>
            <if test="param2.triggerType != null and param2.triggerType != ''">
                and dfr.trigger_type = #{param2.triggerType}
            </if>
            <if test="param2.stayDuration != null and param2.stayDuration != ''">
                and dfr.stay_duration = #{param2.stayDuration}
            </if>
            <if test="param2.areaCode != null and param2.areaCode != ''">
                and dfr.area_code = #{param2.areaCode}
            </if>
            <if test="param2.startTime != null and param2.startTime != '' and param2.endTime != null and param2.endTime != ''">
                and dfr.alarm_time BETWEEN #{param2.startTime}::timestamp AND #{param2.endTime}::timestamp
            </if>
            <if test="param2.deviceType != null and param2.deviceType != ''">
                and dfr.device_type = #{param2.deviceType}
            </if>
            <if test="param2.areaName != null and param2.areaName != ''">
                and dfr.area_name like CONCAT('%', #{param2.areaName}, '%')
            </if>
        </where>
    </select>
 
 
    <select id="exportFwDroneFlightRecord" resultType="org.sxkj.fw.record.excel.FwDroneFlightRecordExcel">
        SELECT
        dfr.id,
        dfr.drone_name,
        dfr.serial_no,
        dfr.alarm_time,
        dfr.area_name,
        dfr.trigger_type,
        dfr.stay_duration,
        dfrd.longitude,
        dfrd.latitude,
        dfrd.point_time
        FROM
        ja_fw_drone_flight_record dfr
        /* 修改点 1:将 VARCHAR 改为更通用的 text,并确保两端类型一致 */
        left join
        ja_fw_device d on dfr.device_id::text = d.id::text
        left join
        ja_fw_drone_flight_record_detail dfrd on dfr.id::text = dfrd.flight_record_id::text
        <where>
            dfr.is_deleted = 0
            <if test="ids != null and ids.size() > 0">
                and dfr.id in
                <foreach item="item" collection="ids" separator="," open="(" close=")">
                    #{item}::bigint
                </foreach>
            </if>
            <if test="regionCode != null and regionCode != ''">
                and (d.final_outbound_area_code::text like CONCAT(#{regionCode}::text, '%')
                <if test="currentDeptId != null and currentDeptId != '' ">
                    or dfr.device_id in (
                    SELECT device_id FROM ja_fw_device_per_share
                    WHERE
                    loan_to_dept_id = #{currentDeptId}::bigint
                    AND is_deleted = 0
                    )
                </if>
                )
            </if>
        </where>
    </select>
 
</mapper>