| <?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="com.ruoyi.app.task.mapper.ArdAppTaskMapper"> | 
|   | 
|     <resultMap type="ArdAppTask" id="ArdAppTaskResult"> | 
|         <result property="id" column="id"/> | 
|         <result property="name" column="name"/> | 
|         <result property="text" column="text"/> | 
|         <result property="voice" column="voice"/> | 
|         <result property="deptId" column="dept_id"/> | 
|         <result property="userId" column="user_id"/> | 
|         <result property="createBy" column="create_by"/> | 
|         <result property="createTime" column="create_time"/> | 
|         <result property="updateBy" column="update_by"/> | 
|         <result property="updateTime" column="update_time"/> | 
|     </resultMap> | 
|   | 
|     <resultMap id="ArdAppTaskSubResult" type="ArdAppTask" extends="ArdAppTaskResult"> | 
|         <collection property="ardAppTaskDetailList" column="{id=id,detailUserId=detail_user_id}" | 
|                     select="selectArdAppTaskDetailListByIdAndUserId"/> | 
|         <collection property="ardAppTaskPicList" column="id" | 
|                     select="selectArdAppTaskPicListById"/> | 
|         <!--        <collection property="ardAppTaskPicList" notNullColumn="sub2_id" javaType="java.util.List"--> | 
|         <!--                    resultMap="ArdAppTaskPicResult"/>--> | 
|         <!--        <collection property="ardAppTaskDetailList" notNullColumn="sub1_id" javaType="java.util.List"--> | 
|         <!--                    resultMap="ArdAppTaskDetailResult"/>--> | 
|     </resultMap> | 
|     <resultMap id="ArdAppTaskSub1Result" type="ArdAppTask" extends="ArdAppTaskResult"> | 
|         <collection property="ardAppTaskPicList" notNullColumn="sub2_id" javaType="java.util.List" | 
|                     resultMap="ArdAppTaskPicResult"/> | 
|         <collection property="ardAppTaskDetailList" notNullColumn="sub1_id" javaType="java.util.List" | 
|                     resultMap="ArdAppTaskDetailResult"/> | 
|     </resultMap> | 
|     <resultMap type="ArdAppTaskDetail" id="ArdAppTaskDetailResult"> | 
|         <result property="id" column="sub1_id"/> | 
|         <result property="name" column="sub1_name"/> | 
|         <result property="longitude" column="sub1_longitude"/> | 
|         <result property="latitude" column="sub1_latitude"/> | 
|         <result property="altitude" column="sub1_altitude"/> | 
|         <result property="userId" column="sub1_user_id"/> | 
|         <result property="text" column="sub1_text"/> | 
|         <result property="voice" column="sub1_voice"/> | 
|         <result property="taskId" column="sub1_task_id"/> | 
|         <result property="status" column="sub1_status"/> | 
|         <result property="clockInPicUrl" column="sub1_clock_in_pic_url"/> | 
|         <result property="viewTime" column="sub1_view_time"/> | 
|         <result property="viewPosition" column="sub1_view_position"/> | 
|         <result property="clockInTime" column="sub1_clock_in_time"/> | 
|         <result property="viewFlag" column="sub1_view_flag"/> | 
|     </resultMap> | 
|     <resultMap type="ArdAppTaskPic" id="ArdAppTaskPicResult"> | 
|         <result property="id" column="sub2_id"/> | 
|         <result property="taskId" column="sub2_task_id"/> | 
|         <result property="picUrl" column="sub2_pic_url"/> | 
|     </resultMap> | 
|   | 
|     <sql id="selectArdAppTaskVo"> | 
|         select c.id, | 
|                c.name, | 
|                c.text, | 
|                c.voice, | 
|                d.dept_id, | 
|                u.user_id, | 
|                c.create_by, | 
|                c.create_time, | 
|                c.update_by, | 
|                c.update_time | 
|         from ard_app_task c | 
|                  left join sys_dept d on d.dept_id = c.dept_id | 
|                  left join sys_user u on u.user_id = c.user_id | 
|     </sql> | 
|     <sql id="selectArdAppTaskDto"> | 
|         select a.id, | 
|                a.name, | 
|                a.text, | 
|                a.voice, | 
|                a.dept_id, | 
|                a.user_id, | 
|                a.create_by, | 
|                a.create_time, | 
|                a.update_by, | 
|                a.update_time, | 
|                b.id               as sub2_id, | 
|                b.task_id          as sub2_task_id, | 
|                b.pic_url          as sub2_pic_url, | 
|                c.id               as sub1_id, | 
|                c.name             as sub1_name, | 
|                c.longitude        as sub1_longitude, | 
|                c.latitude         as sub1_latitude, | 
|                c.altitude         as sub1_altitude, | 
|                c.user_id          as sub1_user_id, | 
|                c.text             as sub1_text, | 
|                c.voice            as sub1_voice, | 
|                c.status           as sub1_status, | 
|                c.clock_in_pic_url as sub1_clock_in_pic_url, | 
|                c.view_time        as sub1_view_time, | 
|                c.view_position    as sub1_view_position, | 
|                c.clock_in_time    as sub1_clock_in_time, | 
|                c.view_flag        as sub1_view_flag, | 
|                c.task_id          as sub1_task_id | 
|         from ard_app_task a | 
|                  left join ard_app_task_pic b on b.task_id = a.id | 
|                  left join ard_app_task_detail c on c.task_id = a.id | 
|     </sql> | 
|   | 
|     <select id="selectArdAppTaskList" parameterType="ArdAppTask" resultMap="ArdAppTaskResult"> | 
|         <include refid="selectArdAppTaskVo"/> | 
|         <where> | 
|             <if test="name != null  and name != ''">and c.name like '%'||#{name}||'%'</if> | 
|             <if test="text != null  and text != ''">and c.text = #{text}</if> | 
|             <if test="voice != null  and voice != ''">and c.voice = #{voice}</if> | 
|             <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> | 
|                 and c.create_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss') | 
|             </if> | 
|             <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> | 
|                 and c.create_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss') | 
|             </if> | 
|             <if test="userId != null  and userId != ''">and c.user_id = #{userId}</if> | 
|         </where> | 
|     </select> | 
|   | 
|     <select id="selectArdAppTaskListWithDetail" parameterType="ArdAppTask" resultMap="ArdAppTaskSubResult"> | 
|         select DISTINCT(a.id)as idd,c.user_id as detail_user_id,a.* from ard_app_task a | 
|         LEFT JOIN ard_app_task_detail c on c.task_id=a.id | 
|         <where> | 
|             <if test="id != null and id != ''"> | 
|                 and a.id = #{id} | 
|             </if> | 
|             <if test="userId != null and userId != ''"> | 
|                 and c.user_id = #{userId} | 
|             </if> | 
|             <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> | 
|                 and a.create_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss') | 
|             </if> | 
|             <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> | 
|                 and a.create_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss') | 
|             </if> | 
|         </where> | 
|         order by a.create_time desc | 
|     </select> | 
|   | 
|     <select id="selectArdAppTaskListWithDetailById" parameterType="ArdAppTask" resultMap="ArdAppTaskSubResult"> | 
|         <include refid="selectArdAppTaskDto"/> | 
|         <where> | 
|             <if test="id != null and id != ''"> | 
|                 and a.id = #{id} | 
|             </if> | 
|             <if test="userId != null and userId != ''"> | 
|                 and c.user_id = #{userId} | 
|             </if> | 
|             <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> | 
|                 and a.create_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss') | 
|             </if> | 
|             <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> | 
|                 and a.create_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss') | 
|             </if> | 
|         </where> | 
|     </select> | 
|     <select id="selectArdAppTaskDetailListByTaskId" resultType="ArdAppTaskDetail"> | 
|         select * from ard_app_task_detail where task_id=#{taskId} | 
|     </select> | 
|     <select id="selectArdAppTaskById" parameterType="String" resultMap="ArdAppTaskSub1Result"> | 
|         <include refid="selectArdAppTaskDto"/> | 
|         where a.id = #{id} | 
|     </select> | 
|   | 
|     <select id="selectArdAppTaskDetailListByIdAndUserId" resultType="ArdAppTaskDetail"> | 
|         select * | 
|         from ard_app_task_detail d | 
|         where d.task_id = #{id} | 
|           and d.user_id = #{detailUserId} | 
|     </select> | 
|     <select id="selectArdAppTaskPicListById" resultType="ArdAppTaskPic"> | 
|         select * | 
|         from ard_app_task_pic d | 
|         where d.task_id = #{id} | 
|     </select> | 
|     <select id="selectArdAppTaskDetailUserIdsByTaskId" parameterType="String" resultType="java.lang.String"> | 
|         select DISTINCT(user_id) | 
|         from ard_app_task_detail | 
|         where task_id = #{taskId} | 
|     </select> | 
|   | 
|   | 
|     <insert id="insertArdAppTask" parameterType="ArdAppTask"> | 
|         insert into ard_app_task | 
|         <trim prefix="(" suffix=")" suffixOverrides=","> | 
|             <if test="id != null">id,</if> | 
|             <if test="name != null">name,</if> | 
|             <if test="text != null">text,</if> | 
|             <if test="voice != null">voice,</if> | 
|             <if test="deptId != null">dept_id,</if> | 
|             <if test="userId != null">user_id,</if> | 
|             <if test="createBy != null">create_by,</if> | 
|             <if test="createTime != null">create_time,</if> | 
|             <if test="updateBy != null">update_by,</if> | 
|             <if test="updateTime != null">update_time,</if> | 
|         </trim> | 
|         <trim prefix="values (" suffix=")" suffixOverrides=","> | 
|             <if test="id != null">#{id},</if> | 
|             <if test="name != null">#{name},</if> | 
|             <if test="text != null">#{text},</if> | 
|             <if test="voice != null">#{voice},</if> | 
|             <if test="deptId != null">#{deptId},</if> | 
|             <if test="userId != null">#{userId},</if> | 
|             <if test="createBy != null">#{createBy},</if> | 
|             <if test="createTime != null">#{createTime},</if> | 
|             <if test="updateBy != null">#{updateBy},</if> | 
|             <if test="updateTime != null">#{updateTime},</if> | 
|         </trim> | 
|     </insert> | 
|   | 
|     <update id="updateArdAppTask" parameterType="ArdAppTask"> | 
|         update ard_app_task | 
|         <trim prefix="SET" suffixOverrides=","> | 
|             <if test="name != null">name = #{name},</if> | 
|             <if test="text != null">text = #{text},</if> | 
|             <if test="voice != null">voice = #{voice},</if> | 
|             <if test="deptId != null">dept_id = #{deptId},</if> | 
|             <if test="userId != null">user_id = #{userId},</if> | 
|             <if test="createBy != null">create_by = #{createBy},</if> | 
|             <if test="createTime != null">create_time = #{createTime},</if> | 
|             <if test="updateBy != null">update_by = #{updateBy},</if> | 
|             <if test="updateTime != null">update_time = #{updateTime},</if> | 
|         </trim> | 
|         where id = #{id} | 
|     </update> | 
|   | 
|     <delete id="deleteArdAppTaskById" parameterType="String"> | 
|         delete | 
|         from ard_app_task | 
|         where id = #{id} | 
|     </delete> | 
|   | 
|     <delete id="deleteArdAppTaskByIds" parameterType="String"> | 
|         delete from ard_app_task where id in | 
|         <foreach item="id" collection="array" open="(" separator="," close=")"> | 
|             #{id} | 
|         </foreach> | 
|     </delete> | 
|   | 
|     <delete id="deleteArdAppTaskPicByTaskIds" parameterType="String"> | 
|         delete from ard_app_task_pic where task_id in | 
|         <foreach item="taskId" collection="array" open="(" separator="," close=")"> | 
|             #{taskId} | 
|         </foreach> | 
|     </delete> | 
|   | 
|     <delete id="deleteArdAppTaskPicByTaskId" parameterType="String"> | 
|         delete | 
|         from ard_app_task_pic | 
|         where task_id = #{taskId} | 
|     </delete> | 
|   | 
|     <insert id="batchArdAppTaskPic"> | 
|         insert into ard_app_task_pic( id, task_id, pic_url) values | 
|         <foreach item="item" index="index" collection="list" separator=","> | 
|             ( #{item.id}, #{item.taskId}, #{item.picUrl}) | 
|         </foreach> | 
|     </insert> | 
|   | 
|     <delete id="deleteArdAppTaskDetailByTaskIds" parameterType="String"> | 
|         delete from ard_app_task_detail where task_id in | 
|         <foreach item="taskId" collection="array" open="(" separator="," close=")"> | 
|             #{taskId} | 
|         </foreach> | 
|     </delete> | 
|   | 
|     <delete id="deleteArdAppTaskDetailByTaskId" parameterType="String"> | 
|         delete | 
|         from ard_app_task_detail | 
|         where task_id = #{taskId} | 
|     </delete> | 
|   | 
|     <insert id="batchArdAppTaskDetail"> | 
|         insert into ard_app_task_detail( id, name, longitude, latitude, altitude, user_id, text, voice, | 
|         task_id,status,clock_in_pic_url) values | 
|         <foreach item="item" index="index" collection="list" separator=","> | 
|             ( #{item.id}, #{item.name}, #{item.longitude}, #{item.latitude}, #{item.altitude}, #{item.userId}, | 
|             #{item.text}, #{item.voice}, #{item.taskId}, #{item.status}, #{item.clockInPicUrl}) | 
|         </foreach> | 
|     </insert> | 
|   | 
|     <update id="updateArdAppTaskDetail" parameterType="ArdAppTaskDetail"> | 
|         update ard_app_task_detail | 
|         <trim prefix="SET" suffixOverrides=","> | 
|             <if test="status != null">status = #{status},</if> | 
|             <if test="clockInPicUrl != null">clock_in_pic_url = #{clockInPicUrl},</if> | 
|             <if test="text != null">text = #{text},</if> | 
|             <if test="voice != null">voice = #{voice},</if> | 
|             <if test="viewTime != null">view_time = #{viewTime},</if> | 
|             <if test="viewFlag != null">view_flag = #{viewFlag},</if> | 
|             <if test="viewPosition != null">view_position = #{viewPosition},</if> | 
|             <if test="clockInTime != null">clock_in_time = #{clockInTime},</if> | 
|             <if test="taskId != null">task_id = #{taskId},</if> | 
|         </trim> | 
|         where id = #{id} | 
|     </update> | 
|     <update id="updateArdAppTaskDetailByTaskId" parameterType="ArdAppTaskDetail"> | 
|         update ard_app_task_detail | 
|         <trim prefix="SET" suffixOverrides=","> | 
|             <if test="viewFlag != null">view_flag = #{viewFlag},</if> | 
|         </trim> | 
|         where task_id = #{taskId} | 
|     </update> | 
|     <update id="updateArdAppTaskDetailView" parameterType="ArdAppTaskDetail"> | 
|         update ard_app_task_detail | 
|         set view_time=#{viewTime}, | 
|             view_position=#{viewPosition} | 
|         where task_id = #{taskId} | 
|           and user_id = #{userId} | 
|     </update> | 
|     <insert id="batchArdAppTaskDetailPic"> | 
|         insert into ard_app_task_detail_pic( id, task_detail_id, pic_url) values | 
|         <foreach item="item" index="index" collection="list" separator=","> | 
|             ( #{item.id}, #{item.taskDetailId}, #{item.picUrl}) | 
|         </foreach> | 
|     </insert> | 
|     <delete id="deleteArdAppTaskDetailPicByTaskDetailId" parameterType="String"> | 
|         delete | 
|         from ard_app_task_detail_pic | 
|         where task_detail_id = #{taskDetailId} | 
|     </delete> | 
|     <select id="selectArdAppTaskDetailById" parameterType="String" resultType="ArdAppTaskDetail"> | 
|         select c.id, | 
|                c.name, | 
|                c.longitude, | 
|                c.latitude, | 
|                c.altitude, | 
|                c.user_id, | 
|                c.text, | 
|                c.voice, | 
|                c.status, | 
|                c.clock_in_pic_url, | 
|                c.view_time, | 
|                c.view_position | 
|         from ard_app_task_detail c | 
|         where c.id = #{id} | 
|     </select> | 
|     <select id="selectNewArdAppTaskByUserId" parameterType="String" resultMap="ArdAppTaskSub1Result"> | 
|         <include refid="selectArdAppTaskDto"/> | 
|         where c.user_id = #{userId} AND c.view_flag is null | 
|         order by create_time desc limit 1 | 
|     </select> | 
|     <select id="selectUnreadArdAppTaskCount" resultType="Integer"> | 
|         SELECT COUNT(A.ID) | 
|         FROM ard_app_task A | 
|                  LEFT JOIN ard_app_task_detail C ON C.task_id = A.ID | 
|         WHERE C.view_time IS NULL | 
|           AND C.view_flag = '1' | 
|           AND C.user_id = #{userId} | 
|     </select> | 
| </mapper> |