吉安感知网项目-后端
linwei
2026-06-05 8f625455f90dc28300270e021cc5d8e074f8308a
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
147
148
<?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.GdTaskResultMapper">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="gdTaskResultResultMap" type="org.sxkj.gd.workorder.vo.GdTaskResultVO">
        <result column="id" property="id"/>
        <result column="patrol_task_id" property="patrolTaskId"/>
        <result column="result_code" property="resultCode"/>
        <result column="result_url" property="resultUrl"/>
        <result column="shoot_time" property="shootTime"/>
        <result column="photo_data" property="photoData"/>
        <result column="longitude" property="longitude"/>
        <result column="latitude" property="latitude"/>
        <result column="distribute_status" property="distributeStatus"/>
        <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="distribute_user_name" property="distributeUserName"/>
        <result column="distribute_dept_name" property="distributeDeptName"/>
        <result column="patrol_task_name" property="patrolTaskName"/>
        <result column="attachment_type" property="attachmentType"/>
    </resultMap>
 
    <resultMap id="gdTaskResultExcelResultMap" type="org.sxkj.gd.workorder.excel.GdTaskResultExcel">
        <result column="patrol_task_id" property="patrolTaskId"/>
        <result column="result_code" property="resultCode"/>
        <result column="result_url" property="resultUrl"/>
        <result column="shoot_time" property="shootTime"/>
        <result column="photo_data" property="photoData"/>
        <result column="longitude" property="longitude"/>
        <result column="latitude" property="latitude"/>
        <result column="distribute_status" property="distributeStatus"/>
        <result column="area_code" property="areaCode"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
 
 
    <select id="selectGdTaskResultPage" resultMap="gdTaskResultResultMap">
        SELECT tr.*, pt.patrol_task_name FROM ja_gd_task_result tr
        INNER JOIN ja_gd_patrol_task pt ON pt.id = tr.patrol_task_id AND pt.is_deleted = 0
        <if test="gdTaskResult.workOrderId != null">
            INNER JOIN ja_gd_work_order wo ON wo.id = pt.work_order_id AND wo.is_deleted = 0
        </if>
        WHERE tr.is_deleted = 0
        <if test="gdTaskResult.workOrderId != null">
            AND wo.id = #{gdTaskResult.workOrderId}
        </if>
        <if test="gdTaskResult.patrolTaskIds != null and gdTaskResult.patrolTaskIds.size() > 0">
            AND tr.patrol_task_id IN
            <foreach collection="gdTaskResult.patrolTaskIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        <if test="gdTaskResult.patrolTaskName != null and gdTaskResult.patrolTaskName != ''">
            AND pt.patrol_task_name LIKE concat('%', #{gdTaskResult.patrolTaskName}, '%')
        </if>
        <if test="gdTaskResult.resultCode != null and gdTaskResult.resultCode != ''">
            AND tr.result_code LIKE concat('%', #{gdTaskResult.resultCode}, '%')
        </if>
        <if test="gdTaskResult.distributeStatus != null">
            AND tr.distribute_status = #{gdTaskResult.distributeStatus}
        </if>
        <if test="gdTaskResult.areaCode != null and gdTaskResult.areaCode != ''">
            AND tr.area_code = #{gdTaskResult.areaCode}
        </if>
        <if test="gdTaskResult.createDept != null">
            AND tr.create_dept = #{gdTaskResult.createDept}
        </if>
        <if test="gdTaskResult.createUser != null">
            AND tr.create_user = #{gdTaskResult.createUser}
        </if>
        ORDER BY tr.create_time DESC
    </select>
 
    <select id="selectGdTaskResultListByPatrolTaskId" resultMap="gdTaskResultResultMap">
        SELECT
            tr.*,
            COALESCE ( bu.real_name, bu.NAME ) AS distribute_user_name,
            bd.dept_name AS distribute_dept_name
        FROM
            ja_gd_task_result tr
            LEFT JOIN (
                SELECT
                    *
                FROM
                    ja_gd_clue_event ce1
                WHERE
                    ce1.is_deleted = 0
                  AND ce1.create_time = ( SELECT MAX( create_time ) FROM ja_gd_clue_event ce2 WHERE CAST(ce2.result_id AS VARCHAR) = CAST(ce1.result_id AS VARCHAR) AND ce2.is_deleted = 0 )
                ) ce ON CAST(ce.result_id AS VARCHAR) = CAST(tr.id AS VARCHAR)
            LEFT JOIN blade_user bu ON CAST(bu.id AS VARCHAR) = CAST(ce.create_user AS VARCHAR)
            AND bu.is_deleted = 0
            LEFT JOIN blade_dept bd ON CAST(bd.id AS VARCHAR) = CAST(ce.create_dept AS VARCHAR)
            AND bd.is_deleted = 0
        WHERE
            tr.is_deleted = 0
          AND tr.patrol_task_id = #{patrolTaskId}
    </select>
 
 
    <select id="exportGdTaskResult" resultMap="gdTaskResultExcelResultMap">
        SELECT * FROM ja_gd_task_result ${ew.customSqlSegment}
    </select>
 
    <!-- 根据ID更新成果信息(更新所有字段) -->
    <update id="updateTaskResultById">
        UPDATE ja_gd_task_result
        SET patrol_task_id = #{patrolTaskId},
            result_code = #{resultCode},
            result_url = #{resultUrl},
            shoot_time = #{shootTime},
            photo_data = CAST(#{photoData} AS JSONB),
            longitude = #{longitude},
            latitude = #{latitude},
            distribute_status = #{distributeStatus},
            area_code = #{areaCode},
            update_user = #{updateUser},
            update_time = #{updateTime},
            status = #{status},
            is_deleted = #{isDeleted}
        WHERE id = #{id}
    </update>
 
    <!-- 批量插入成果信息 -->
    <insert id="insertBatch" parameterType="java.util.List">
        INSERT INTO ja_gd_task_result (
            patrol_task_id, result_code, result_url, shoot_time,
            photo_data, longitude, latitude, distribute_status, area_code,
            create_user, create_dept, create_time, update_user, update_time,
            status, is_deleted, attachment_type
        ) VALUES
        <foreach collection="list" item="item" separator=",">
            (
                #{item.patrolTaskId}, #{item.resultCode}, #{item.resultUrl}, #{item.shootTime},
                CASE WHEN #{item.photoData} IS NULL THEN NULL ELSE CAST(#{item.photoData} AS JSONB) END, #{item.longitude}, #{item.latitude}, #{item.distributeStatus}, #{item.areaCode},
                #{item.createUser}, #{item.createDept}, #{item.createTime}, #{item.updateUser}, #{item.updateTime},
                #{item.status}, #{item.isDeleted}, #{item.attachmentType}
            )
        </foreach>
    </insert>
 
</mapper>