吉安感知网项目-后端
linwei
2026-02-06 04d27ad79f9bf0c9b5f96e094170ba94c2d63a31
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
<?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 = wo.id
        left join
                ja_gd_manage_device md on md.id = pt.device_id
        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 = pt.id
        <where>
                pt.is_deleted = 0
            <if test="param2.workOrderId != null and param2.workOrderId != ''">
                and pt.work_order_id = #{param2.workOrderId}
            </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 = #{param2.patrolTaskType}
            </if>
            <if test="param2.taskStatus != null and param2.taskStatus != ''">
                and pt.task_status = #{param2.taskStatus}
            </if>
            <if test="param2.deptList != null and param2.deptList.size > 0">
                and pt.create_dept in
                <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")">
                    #{deptId}
                </foreach>
            </if>
            <if test="param2.startTime != null and param2.startTime != '' and param2.endTime != null and param2.endTime != '' ">
                and pt.execute_time BETWEEN #{param2.startTime} AND #{param2.endTime}
            </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 = pt.device_id
        WHERE pt.id = #{patrolTaskId}
    </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 = wo.id
        left join
            ja_gd_manage_device md on md.id = pt.device_id
        WHERE pt.id = #{id}
    </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>