吉安感知网项目-后端
linwei
2026-04-09 0c0a762eaa7a39fb0296442e5ec7f8b825d3ac07
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?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.GdPatrolTaskMapper">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="gdPatrolTaskResultMap" type="org.sxkj.gd.workorder.vo.GdPatrolTaskVO">
        <result column="id" property="id"/>
        <result column="work_order_id" property="workOrderId"/>
        <result column="work_order_name" property="workOrderName"/>
        <result column="patrol_task_name" property="patrolTaskName"/>
        <result column="patrol_task_type" property="patrolTaskType"/>
        <result column="execute_time" property="executeTime"/>
        <result column="patrol_route_url" property="patrolRouteUrl"/>
        <result column="recommend_flyer_name" property="recommendFlyerName"/>
        <result column="device_id" property="deviceId"/>
        <result column="device_name" property="deviceName"/>
        <result column="task_desc" property="taskDesc"/>
        <result column="task_status" property="taskStatus"/>
        <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"/>
        <result column="result_count" property="resultCount"/>
        <result column="issue_event_count" property="issueEventCount"/>
    </resultMap>
 
 
    <select id="selectGdPatrolTaskPage" resultMap="gdPatrolTaskResultMap">
        select
        pt.*,
        md.nickname as device_name,
        wo.work_order_name,
        COALESCE(tr.result_count, 0) as result_count,
        COALESCE(tr.issue_event_count, 0) as issue_event_count
        from
        ja_gd_patrol_task pt
        left join
            ja_gd_work_order wo on pt.work_order_id::VARCHAR = wo.id::VARCHAR
        left join
                ja_gd_manage_device md on md.id::VARCHAR = pt.device_id::VARCHAR
        left join
        (
        select patrol_task_id,
        count(*) as result_count,
        sum(case when distribute_status in (1,2) then 1 else 0 end) as issue_event_count
        from
        ja_gd_task_result
        where
        is_deleted = 0
        group by
        patrol_task_id
        ) tr on tr.patrol_task_id::VARCHAR = pt.id::VARCHAR
        <where>
            pt.is_deleted = 0
            <if test="param2.workOrderId != null and param2.workOrderId != ''">
                /* 重点:参数也强制转类型 */
                and pt.work_order_id::VARCHAR = #{param2.workOrderId}::VARCHAR
            </if>
            <if test="param2.patrolTaskName != null and param2.patrolTaskName != ''">
                and pt.patrol_task_name like concat(#{param2.patrolTaskName},'%')
            </if>
            <if test="param2.patrolTaskType != null and param2.patrolTaskType != ''">
                and pt.patrol_task_type::VARCHAR = #{param2.patrolTaskType}::VARCHAR
            </if>
            <if test="param2.taskStatus != null and param2.taskStatus != ''">
                /* 报错信息中出现了这个参数,务必加强转 */
                and pt.task_status::VARCHAR = #{param2.taskStatus}::VARCHAR
            </if>
            <if test="param2.deptList != null and param2.deptList.size > 0">
                and pt.create_dept::VARCHAR in
                <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")">
                    #{deptId}::VARCHAR
                </foreach>
            </if>
            <if test="param2.startTime != null and param2.startTime != '' and param2.endTime != null and param2.endTime != '' ">
                and pt.execute_time BETWEEN #{param2.startTime}::timestamp AND #{param2.endTime}::timestamp
            </if>
        </where>
    </select>
 
 
    <select id="exportGdPatrolTask" resultType="org.sxkj.gd.workorder.excel.GdPatrolTaskExcel">
        SELECT * FROM ja_gd_patrol_task ${ew.customSqlSegment}
    </select>
 
    <select id="getPatrolTaskIdById" resultType="org.sxkj.gd.workorder.vo.GdPatrolTaskVO">
        SELECT
            pt.*,
            md.airport_id as airport_id
        FROM
            ja_gd_patrol_task pt
        left join
                ja_gd_manage_device md on md.id::VARCHAR = pt.device_id::VARCHAR
        WHERE pt.id = #{patrolTaskId}::BIGINT
    </select>
 
 
    <select id="getPatrolTaskDetail" resultType="org.sxkj.gd.workorder.vo.GdPatrolTaskVO">
        SELECT
            pt.*,
            md.airport_id as airport_id,
            md.height,
            md.longitude,
            md.latitude,
            md.nickname as device_name,
            wo.work_order_name
        FROM
            ja_gd_patrol_task pt
        left join
            ja_gd_work_order wo on pt.work_order_id::VARCHAR = wo.id::VARCHAR
        left join
            ja_gd_manage_device md on md.id::VARCHAR = pt.device_id::VARCHAR
        WHERE pt.id = #{id}::BIGINT
    </select>
 
    <select id="getWorkOrderIdById" resultType="org.sxkj.gd.workorder.entity.GdWorkOrderEntity">
        SELECT
            *
        FROM
            ja_gd_work_order
        WHERE id = #{id}
          AND work_order_status = #{code}
    </select>
 
    <!-- 自定义更新工单状态语句 -->
    <update id="updateWorkOrderById" parameterType="org.sxkj.gd.workorder.entity.GdWorkOrderEntity">
        UPDATE ja_gd_work_order
        <set>
            <if test="workOrderParam.workOrderStatus != null">
                work_order_status = #{workOrderParam.workOrderStatus},
            </if>
            <if test="workOrderParam.updateUser != null">
                update_user = #{workOrderParam.updateUser},
            </if>
            <if test="workOrderParam.updateTime != null">
                update_time = #{workOrderParam.updateTime},
            </if>
        </set>
        WHERE id = #{workOrderParam.id}
    </update>
 
</mapper>