复杂sql

发布于:2025-02-23 ⋅ 阅读:(17) ⋅ 点赞:(0)
  <select id="getGriderList" resultType="com.sf.gis.common.domain.vo.AppGriderListVo">
        SELECT
        gr.grider_id,
        gr.grider_name,
        gr.grider_birth,
        gr.native_province_name,
        gr.native_city_name,
        gr.nation,
        gr.grider_age,
        gr.grider_sex,
        gr.political_outlook,
        gr.domicile_city_name,
        gr.domicile_province_name,
        gr.grider_types,
        gr.grider_position_type,
        (select STRING_AGG(
        t.tag_name , ', ') from (
        SELECT gwt.tag_type,
        gwt.tag_name   from grider_work_tag gwt where gwt.grider_id = gr.grider_id and gwt.deleted=0 and gwt.history_del = 0 order by gwt.tag_type asc) t) as collectTags,
        gr.grider_position_code,
        (
        case
        when gr.grider_hiredate is not null and gr.status = 1 then ROUND(EXTRACT(YEAR FROM age(now(), gr.grider_hiredate)) + EXTRACT(MONTH FROM age(now(), gr.grider_hiredate)) / 12.0 , 1)::VARCHAR
        when gr.status = 2 and  gr.grider_hiredate is not null and gr.depart_date is not null then ROUND(EXTRACT(YEAR FROM age(gr.depart_date::date, gr.grider_hiredate::date)) + EXTRACT(MONTH FROM age(gr.depart_date::date, gr.grider_hiredate::date)) / 12.0 , 1)::VARCHAR
        else gr.grider_workyear end)  as grider_workyear,
        gr.grider_tel_enc,
        gr.pda_account,
<!--        gr.grider_work_status,-->
        gr.grider_hiredate,
        gr.grider_certcode_enc,
        gr.height,
        gr.buy_service_org,
        (case when gr.grider_certtype = '00' then '身份证'  when gr.grider_certtype = '01' then '港澳台居住证'  when gr.grider_certtype = '02' then '港澳通行证'  when gr.grider_certtype = '03' then '护照' else '' end)  as griderCerttype,
        (case when gr.marriage = 0 then '未婚'  when gr.marriage = 1 then '已婚'  when gr.marriage = 3 then '离异'  when gr.marriage = 4 then '丧偶'  when gr.marriage = 2 then '其他' else '' end)  as marriage,
        (case when gr.veterans = 0 then '否'  when gr.veterans = 1 then '是' else '' end)  as veterans,
        (case when gr.militia = 0 then '否'  when gr.militia = 1 then '是' else '' end)  as militia,
        (case when gr.status = 1 then '在职'  when gr.status = 2 then '离职'
        else '' end)  as griderWorkStatus,
        gr.grider_work_status as griderWorkStatusInt,
        gr.house_code as houseCode,
        gr.enter_party_time as enterPartyTime,
        gr.domicile_type AS domicileProvinceName,
        gr.domicile_type AS domicileType,
        gr.detail_address AS griderAddr,
        gr.completion_degree completionDegree,
        gr.depart_date departDate,
        gr.birth_address birthAddress,
        gr.detail_address detailAddress,
        gr.domicile_address AS domicileAddress,
        t4.gride_school_graduation_time grideSchoolGraduationTime,
        t4.gride_school_enrol_time  grideSchoolEnrolTime
        FROM
        app_grider gr
        LEFT JOIN app_grider_tag t2 ON gr.grider_id = t2.persontag_owner_id
        left join (
        SELECT * from (
        SELECT
        *,
        ROW_NUMBER() OVER (PARTITION BY grider_id ORDER BY gride_school_graduation_time DESC) AS rn
        from app_grider_school) t3 where t3.rn = 1
        ) t4 on gr.grider_id = t4.grider_id
        where gr.status in (1,2)
        and gr.inc_day = (select inc_day from app_table_inc_day where table_name = 'app_grider')
        <if test="query.collectTags !=null and query.collectTags.size>0">
            and  EXISTS( SELECT wt.grider_id FROM grider_work_tag wt WHERE wt.grider_id=gr.grider_id and wt.deleted = 0 and  wt.history_del = 0 and
            wt.tag_name in
            <foreach collection="query.collectTags" item="tag" open="(" separator="," close=")">
                #{tag}
            </foreach>
            )
        </if>
        and EXISTS(
        SELECT gg.grider_id FROM app_gerider_grid gg WHERE gg.grider_id=gr.grider_id
        <include refid="dataPer"/>
        )
        <include refid="dynamicQueryCondition"/>
        <choose>
            <when test="query.sortFlag != null and query.sortFlag== 1">
                order by gr.grider_birth asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 2">
                order by gr.grider_birth desc NULLS LAST
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 3">
                order by gr.height asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 4">
                order by gr.height desc NULLS LAST
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 5">
                order by gr.enter_party_time asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 6">
                order by gr.enter_party_time desc NULLS LAST
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 7">
                order by gr.grider_age asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 8">
                order by gr.grider_age desc NULLS LAST
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 9">
                order by gr.grider_hiredate asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 10">
                order by gr.grider_hiredate desc NULLS LAST
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 11">
                order by t4.gride_school_enrol_time asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 12">
                order by t4.gride_school_enrol_time desc NULLS LAST
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 13">
                order by t4.gride_school_graduation_time asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 14">
                order by t4.gride_school_graduation_time desc NULLS LAST
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 15">
                order by gr.depart_date asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 16">
                order by gr.depart_date desc
            </when>
            <!-- 没有激活排序条件时 -->
            <when test="query.sortFlag == null">
                ORDER BY gr.status asc, gr.create_datetime DESC NULLS LAST
            </when>
           <!-- 出生日期 griderBirth、身高、入党时间、年龄、入职通过时间、最高学历入学时间、最高学历毕业时间-->
        </choose>
    </select>

    <select id="taskPacketProcessList" resultType="com.sf.gis.common.domain.vo.TaskPacketProcessVo">
    <!--    select * from (-->
        select
        tp.execount,
        tp.finishedCount,
        te.task_exe_id taskExeId,
        tp.unSignCount,
        tp.handlingCount,
<!--
        tp.packet_process_id packetProcessId,
-->
        te.exe_begin_time exeBeginTime,
        te.exe_done_time exeDoneTime,
        te.task_exe_name taskExeName,
        tc.task_name taskConfigName,
        tc.dept_name uploadDept,
        te.task_exe_status taskExeStatus,
        te.create_time createTime,
        te.dis_stu disStu,
        te.create_by createBy,
        tt.item_name itemName,
        tc.priority
        from task_exe te
        left join task_config tc on te.task_config_id = tc.task_config_id
        left join task_template tt on tc.task_template_id = tt.task_template_id
        left join task_item ti on tt.item_id = ti.item_id
        <!-- left join task_item ti on tc.task_item_id=ti.item_id-->
        inner join
        <if test="query.isPc !=null and query.isPc!=''">  <!--pc-->
            ( select task_exe_id,sum((case when exe_count is null then 0 else exe_count end)) execount,sum((case when finished_count is null then 0 else finished_count end)) finishedCount,sum((case when un_sign_count is null then 0 else un_sign_count end)) unSignCount,sum((case when handling_count is null then 0 else handling_count end)) handlingCount  from task_packet_process
            where  task_plan_data_id is null  <include refid="dataPer"/> group by task_exe_id  ) tp
        </if>
        <if test="query.isPc ==null"><!-- h5-->
            ( select ts.task_exe_id,sum((case when ts.exe_count is null then 0 else ts.exe_count end)) execount,
            sum((case when ts.finished_count is null then 0 else ts.finished_count end)) finishedCount,
            sum((case when un_sign_count is null then 0 else un_sign_count end)) unSignCount,sum((case when handling_count is null then 0 else handling_count end)) handlingCount
            from task_packet_process ts left join task_exe_dis ted on ts.task_exe_id = ted.task_exe_id  and ts.level2  = ted.area_code and ted.deleted = 0
            where  ts.task_plan_data_id is null and (ted.task_dis_status = 2 or ted.task_dis_status is null)
            <include refid="dataPer"/> group by ts.task_exe_id ) tp
        </if>
        on te.task_exe_id=tp.task_exe_id
        <where>
            <!--      and ti.task_type=3-->
            and te.task_gn_status=2
            and te.deleted=0
            and tp.execount > 0
            <if test="query.keyword !=null and query.keyword!=''">
                and (te.task_exe_id like CONCAT('%',#{query.keyword},'%') or tc.task_name like CONCAT('%',#{query.keyword},'%'))
            </if>
            <if test="query.exeType !=null">
                and tt.exe_type = #{query.exeType}
            </if>
            <if test="query.taskDoneTimeBegin !=null">
                and te.exe_done_time  <![CDATA[>=]]> #{query.taskDoneTimeBegin}
            </if>
            <if test="query.taskDoneTimeEnd !=null">
                and te.exe_done_time  <![CDATA[<=]]> #{query.taskDoneTimeEnd}
            </if>
            <if test="query.taskExeStatus !=null">
                and te.task_exe_status = #{query.taskExeStatus}
            </if>
            <if test="query.hasDoneTask !=null and query.hasDoneTask == 1">
                and tp.finishedCount > 0
            </if>
            <if test="query.itemId !=null and query.itemId!=''">
                and ti.serial = #{query.itemId}
            </if>
            <if test="query.taskExeName !=null and query.taskExeName!=''">
                and te.task_exe_name like concat('%', #{query.taskExeName},'%')
            </if>
            <if test="query.taskExeId !=null and query.taskExeId!=''">
                and te.task_exe_id like CONCAT('%',#{query.taskExeId},'%')
            </if>
            <if test="query.taskConfigName !=null and query.taskConfigName!=''">
                and tc.task_name like concat('%', #{query.taskConfigName},'%')
            </if>

            <if test="query.overdueTime !=null and query.flag">
                and te.exe_done_time  <![CDATA[<]]> #{query.overdueTime}
            <!--    and  (select sum(exe_count) from task_packet_process where task_exe_id = te.task_exe_id and task_plan_data_id is null
                <include refid="dataPer"/>)>
                (select sum(finished_count) from task_packet_process where task_exe_id = te.task_exe_id and task_plan_data_id is null
                <include refid="dataPer"/> )-->
            </if>
            <if test="query.adventStartTime !=null and query.flag">
                and te.exe_done_time  <![CDATA[>]]> #{query.adventStartTime}
            </if>
            <if test="query.adventEndTime !=null and query.flag">
                and te.exe_done_time  <![CDATA[<]]> #{query.adventEndTime}
            <!--    and  (select sum(exe_count) from task_packet_process where task_exe_id = te.task_exe_id and task_plan_data_id is null
                <include refid="dataPer"/>)>
                (select sum(finished_count) from task_packet_process where task_exe_id = te.task_exe_id and task_plan_data_id is null
                <include refid="dataPer"/> )-->
            </if>
            <if test="!query.flag and query.overdueTime !=null and query.adventStartTime !=null and query.adventEndTime !=null">
                and
                (te.exe_done_time  <![CDATA[<]]> #{query.overdueTime}
                or (
                te.exe_done_time  <![CDATA[>]]> #{query.adventStartTime}
                and te.exe_done_time  <![CDATA[<]]> #{query.adventEndTime}
                ))
              <!--  and  (select sum(exe_count) from task_packet_process where task_exe_id = te.task_exe_id and task_plan_data_id is null
                <include refid="dataPer"/>)>
                (select sum(finished_count) from task_packet_process where task_exe_id = te.task_exe_id and task_plan_data_id is null
                <include refid="dataPer"/> )-->
            </if>
            <if test="query.deptIdlist !=null and query.deptIdlist.size()>0">
                and
                tc.dept_id in
                <foreach collection="query.deptIdlist" index="index" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="query.doneStartTime !=null ">
                and te.exe_begin_time  <![CDATA[>=]]> #{query.doneStartTime}
            </if>
            <if test="query.doneEndTime !=null">
                and te.exe_done_time  <![CDATA[<=]]> #{query.doneEndTime}
            </if>
            <if test="query.disStu !=null">
                and te.dis_stu = #{query.disStu}
            </if>
            <if test="query.createStartTime !=null ">
                and te.create_time  <![CDATA[>=]]> #{query.createStartTime}
            </if>
            <if test="query.createEndTime !=null ">
                and te.create_time  <![CDATA[<=]]> #{query.createEndTime}
            </if>
            <if test="query.priorityList !=null and query.priorityList.size()>0">
                and
                tc.priority in
                <foreach collection="query.priorityList" index="index" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="query.newDoneEndTimeFlag !=null ">
                and te.exe_done_time::timestamp + '30 day'   <![CDATA[>]]> #{query.newDoneEndTimeFlag}
                and te.task_exe_status=1
            </if>

       <!--     <if test="query.exeCountFlag !=null ">
                and
                (select sum(exe_count) from task_packet_process where task_exe_id = te.task_exe_id and task_plan_data_id is null
                <include refid="dataPer"/>)>0
            </if>-->

            <if test="query.tagList !=null and query.tagList.size()>0">
                and  tp.finishedCount <![CDATA[<]]> tp.execount
            </if>
            <if test="query.isPcFlag !=null and query.isPcFlag!='' and query.isPcFlag=='1'.toString()">  <!--街道待下发逻辑:  -->
                and (EXISTS
                (
                select
                1
                from
                task_exe_dis ed
                where
                ed.task_exe_id = te.task_exe_id
                and ed.deleted = 0
                and ed.task_dis_status =1
                <if test="query.jdCodes !=null and query.jdCodes.size()>0">
                    and
                    ed.area_code in
                    <foreach collection="query.jdCodes" index="index" item="item" open="(" separator="," close=")">
                        #{item}
                    </foreach>
                </if>
                )  or    te.dis_stu = 0
                )
            </if>
            <if test="query.isPcFlag !=null and query.isPcFlag!='' and query.isPcFlag=='2'.toString()">  <!--街道待下发逻辑:  -->
                and (
                (
                EXISTS
                (
                select
                1
                from
                task_exe_dis ed
                where
                ed.task_exe_id = te.task_exe_id
                and ed.deleted = 0
                 <if test="query.jdCodes !=null and query.jdCodes.size()>0">
                     and
                     ed.area_code in
                     <foreach collection="query.jdCodes" index="index" item="item" open="(" separator="," close=")">
                         #{item}
                     </foreach>
                 </if>
                ) and
                NOT EXISTS
                (
                select
                1
                from
                task_exe_dis ed
                where
                ed.task_exe_id = te.task_exe_id
                and ed.deleted = 0
                and ed.task_dis_status =1
                   <if test="query.jdCodes !=null and query.jdCodes.size()>0">
                       and
                       ed.area_code in
                       <foreach collection="query.jdCodes" index="index" item="item" open="(" separator="," close=")">
                           #{item}
                       </foreach>
                   </if>
                )
                ) or
                (
                NOT EXISTS
                (
                select
                1
                from
                task_exe_dis ed
                where
                ed.task_exe_id = te.task_exe_id
                and ed.deleted = 0
                 <if test="query.jdCodes !=null and query.jdCodes.size()>0">
                     and
                     ed.area_code in
                     <foreach collection="query.jdCodes" index="index" item="item" open="(" separator="," close=")">
                         #{item}
                     </foreach>
                 </if>
                ) and
                te.dis_stu = 1
                )
                )
            </if>


            <if test="query.pageFlag ==null and  query.pageFlag1==null">
                and te.task_exe_status!=7
            </if>
            <if test="query.itemName !=null and query.itemName!=''">
                and ti.item_name like concat('%', #{query.itemName},'%')
            </if>
          <!--  <include refid="queryPer"/>-->
        </where>
        <choose>
            <when test="query.sortFlag != null and query.sortFlag== 1">
                order by te.exe_begin_time asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 2">
                order by te.exe_begin_time desc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 3">
                order by te.exe_done_time asc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 4">
                order by te.exe_done_time desc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 5">
                order by tc.priority desc,te.exe_done_time desc
            </when>
            <when test="query.sortFlag != null and query.sortFlag== 6">
                order by tc.priority asc,te.exe_done_time desc
            </when>
            <!-- 没有激活排序条件时 -->

        </choose>
        <if test="query.createFlag !=null ">
            order by te.create_time desc
        </if>
        <if test="query.pageFlag !=null ">
            LIMIT #{query.pageSize} OFFSET #{query.startIndex}
        </if>
    </select>

<select id="selectnewListview" resultType="com.sf.gis.common.domain.vo.TaskSubVo"  parameterType="com.sf.gis.common.domain.dto.TaskSubDto">
        SELECT  handleTimeStart handle_time
        ts.task_sub_id taskSubId,
        ts.task_config_id taskConfigId,
        ts.task_sub_name taskSubName,
        ts.task_sub_status taskSubStatus,
        ts.address houseAddress,
        ts.snapshot_table snapshotTable,
        ts.snapshot_id snapshotId,
        ts.task_exe_id taskExeId,
        ts.update_time updateTime,
        ts.create_time createTime,
        ts.exe_done_time  exeDoneTime,
        te.task_exe_name taskExeName,
        ti.item_type itemType,
        ti.task_type taskType,
        ts.snapshot_type snapshotType,
        ts.layer_id layerId,
        ts.snapshot_table snapshotTable,
        ts.transfer transfer,
        ts.task_source taskSource,
        ts.theme_id themeId,
        ts.grid_code gridCode,
        ts.grid_name gridName,
        ts.sq_code sqCode,
        ts.sq_name sqName,
        ts.lng lng,
        ts.lat lat,
        tc.is_clockIn isClockIn,
        tc.operation_manual operationManual,
        ts.zfpa_business_type zfpaBusinessType,
        ts.extent_one extentOne
        FROM task_sub_view ts left join task_exe_dis ted on ts.task_exe_id = ted.task_exe_id  and ts.jd_code  = ted.area_code and ted.deleted = 0
        <if test="query.relationTheme ==1">
            inner join analysis_snapshot_person_view asp on ts.snapshot_id = asp.snapshot_person_id and ts.snapshot_type = 1 and asp.person_code = #{query.relationId}
        </if>
        <if test="query.relationTheme ==2">
            inner join analysis_snapshot_house_view asp on ts.snapshot_id = asp.snapshot_house_id and ts.snapshot_type = 2 and asp.house_code = #{query.relationId}
        </if>
        <if test="query.relationTheme ==3">
            inner join analysis_snapshot_legal_view asp on ts.snapshot_id = asp.snapshot_legal_id and ts.snapshot_type = 3 and asp.legal_code = #{query.relationId}
        </if>
        <if test="query.relationTheme ==6">
            inner join analysis_snapshot_building_view asp on ts.snapshot_id = asp.snapshot_building_id and ts.snapshot_type = 3 and asp.bd_code = #{query.relationId}
        </if>
        left join task_exe te on ts.task_exe_id=te.task_exe_id
        left join task_config tc on ts.task_config_id=tc.task_config_id
        left join task_template tt on tc.task_template_id = tt.task_template_id
        left join task_item ti on tt.item_id = ti.item_id
        <!--left join workflow_record wr on ts.task_sub_id=wr.bus_serialno-->
        <!--INNER JOIN (
        SELECT WR.bus_serialno,WR.wf_record_id from workflow_record AS WR
        INNER JOIN (
        SELECT MAX(create_time) AS create_time,bus_serialno FROM workflow_record GROUP BY bus_serialno
        ) AS B ON WR.bus_serialno=B.bus_serialno
        WHERE  WR."create_time"=B.create_time
        )  AS qq ON qq.bus_serialno = ts.task_sub_id-->
        <where>
            te.dis_stu=1  and (ted.task_dis_status = 2 or ted.task_dis_status is null)
            and
            (ts.deleted=0 or ts.deleted is null)
            <include refid="buildQuerySelect"/>
            <!-- and wr.wf_record_id IS NOT NULL-->
            <if test="query.channelType==null or query.channelType==''">
                <if test="query.taskSubStatus !=null">
                    and ts.task_sub_status = #{query.taskSubStatus}
                </if>
            </if>
            <if test="query.channelType!=null and query.channelType!='' and query.channelType=='building'">
                and (ts.task_sub_status = 0 or ts.task_sub_status=1)
                and ts.theme_id=#{query.bdCode}
            </if>
            <if test="query.startSexeDoneTime !=null" >
                and te.exe_done_time  <![CDATA[>=]]> #{query.startSexeDoneTime}
            </if>
            <if test="query.endSexeDoneTime !=null">
                and te.exe_done_time  <![CDATA[<=]]> #{query.endSexeDoneTime}
            </if>
            <!--<if test="query.crStartTime !=null">
                and ts.create_time  <![CDATA[>=]]> #{query.crStartTime}
            </if>
            <if test="query.crEndTime !=null">
                and ts.create_time  <![CDATA[<=]]> #{query.crEndTime}
            </if>-->
            <if test="query.crStartTimeNew !=null">
                and ts.create_time  <![CDATA[>=]]> #{query.crStartTimeNew}
            </if>
            <if test="query.crEndTimeNew !=null">
                and ts.create_time  <![CDATA[<=]]> #{query.crEndTimeNew}
            </if>
            <if test="query.handleTimeStart !=null">
                and ts.handle_time  <![CDATA[>=]]> #{query.handleTimeStart}
            </if>
            <if test="query.handleTimeEnd !=null">
                and ts.handle_time  <![CDATA[<=]]> #{query.handleTimeEnd}
            </if>
            <if test="query.tagEnumValue !=null and query.tagEnumValue == 1">
                and  now() &gt; te.exe_done_time
            </if>
            <!--<if test="query.tagEnumValue !=null and query.tagEnumValue == 2">
                and  DATE_ADD(now(), INTERVAL '5' DAY) &gt; te.exe_done_time  and now() &lt; te.exe_done_time
            </if>
            <if test="query.tagEnumValue !=null and query.tagEnumValue == 3">
                and  DATE_ADD(now(), INTERVAL '5' DAY) &lt; te.exe_done_time  and now() &lt; te.exe_done_time
            </if>-->
            <if test="query.tagEnumValue !=null and query.tagEnumValue == 2">
                and   now()::timestamp + '5 day' &gt; te.exe_done_time  and now() &lt; te.exe_done_time
            </if>
            <!--  <if test="query.tagEnumValue !=null and query.tagEnumValue == 3">
                  and  DATE_ADD(now(), INTERVAL '5' DAY) &lt; te.exe_done_time  and now() &lt; te.exe_done_time
              </if>-->
            <if test="query.tagEnumValue !=null and query.tagEnumValue == 3">
                and  now()::timestamp + '5 day' &lt; te.exe_done_time  and now() &lt; te.exe_done_time
            </if>




            <if test="query.overdueTime !=null and query.flag">
                and te.exe_done_time  <![CDATA[<]]> #{query.overdueTime}
            </if>

            <if test="query.adventStartTime !=null and query.flag">
                and te.exe_done_time  <![CDATA[>]]> #{query.adventStartTime}
            </if>
            <if test="query.adventEndTime !=null and query.flag">
                and te.exe_done_time  <![CDATA[<]]> #{query.adventEndTime}
            </if>
            <if test="!query.flag and query.overdueTime !=null and query.adventStartTime !=null and query.adventEndTime !=null">
                and
                (te.exe_done_time  <![CDATA[<]]> #{query.overdueTime}
                or (
                te.exe_done_time  <![CDATA[>]]> #{query.adventStartTime}
                and te.exe_done_time  <![CDATA[<]]> #{query.adventEndTime}
                ))
            </if>
            <if test=" query.houseAddress != null and query.houseAddress != '' ">
                and ts.address like concat('%', #{query.houseAddress},'%')
            </if>
            <if test=" query.taskExeName != null and query.taskExeName != '' ">
                and te.task_exe_name like concat('%', #{query.taskExeName},'%')
            </if>
            <if test=" query.taskSubName != null and query.taskSubName != '' ">
                and ts.task_sub_name like concat('%', #{query.taskSubName},'%')
            </if>
            <if test="query.itemTypes !=null and query.itemTypes.size()>0">
                and
                ti.item_type in
                <foreach collection="query.itemTypes" index="index" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="query.taskTypes !=null and query.taskTypes.size()>0">
                and
                ti.task_type in
                <foreach collection="query.taskTypes" index="index" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="query.streetCodeList !=null and query.streetCodeList.size()>0">
                and ts.exe_jd_code in
                <foreach collection="query.streetCodeList" index = "index" item = "item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="query.communityCodeList !=null  and query.communityCodeList.size()>0">
                and ts.exe_sq_code in
                <foreach collection="query.communityCodeList" index = "index" item = "item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>

            <if test="query.gridcodeList !=null  and query.gridcodeList.size()>0">
                and (ts.exe_grid_code in
                <foreach collection="query.gridcodeList" index = "index" item = "item" open="(" separator="," close=")">
                    #{item}
                </foreach>
                or (ts.exe_sq_code=#{query.sqCodeFlag} and (ts.exe_grid_code is null or ts.exe_grid_code='') ))
            </if>
            <if test="query.griderId != null and query.griderId != '' ">
                and ts.grider_id = #{query.griderId}
            </if>
            <if test="query.exeType !=null">
                and ts.exe_type = #{query.exeType}
            </if>
            <if test="query.taskExeId !=null and query.taskExeId != ''" >
                and ts.task_exe_id = #{query.taskExeId}
            </if>
            <if test="query.parentItem !=null ">
                and ti.parent_item = #{query.parentItem}
            </if>
            <if test="query.gridCode !=null and query.gridCode != ''" >
                and ts.grid_code = #{query.gridCode}
            </if>
            <if test="query.sysidList !=null  and query.sysidList.size()>0">
                and ts.task_sub_id in
                <foreach collection="query.sysidList" index = "index" item = "sysiditem" open="(" separator="," close=")">
                    #{sysiditem}
                </foreach>
            </if>
        </where>
        <if test="query.sortField=='address'">
<!--            order by ts.address asc,task_sub_id desc-->
            order by convert_to(ts.address, 'UTF-8' ) asc,task_sub_id desc
        </if>
        <if test="query.sortField=='exeDoneTime'">
            order by te.exe_done_time asc,task_sub_id desc
        </if>


        <if test="query.statusFlag != null and query.statusFlag==2">
            ORDER BY ts.update_time DESC NULLS LAST
        </if>
        <if test="query.statusFlag != null and query.statusFlag==1">
            ORDER BY ts.update_time asc
        </if>
        <if test="query.statusFlag != null and query.statusFlag==3">
            ORDER BY ts.create_time asc
        </if>
        <if test="query.statusFlag != null and query.statusFlag==4">
            ORDER BY ts.create_time DESC NULLS LAST
        </if>
        <if test="query.statusFlag != null and query.statusFlag==5">
            ORDER BY ts.exe_done_time asc
        </if>
        <if test="query.statusFlag != null and query.statusFlag==6">
            ORDER BY ts.exe_done_time DESC NULLS LAST
        </if>
        OFFSET #{query.startIndex} limit #{query.pageSize}

    </select>

<select id="getWorkReportPopulationGriderList" resultMap="getWorkReportPopulationListMap">
    select split_part(t.griderInfo, '@', 2)  as griderInfo,SUM(t.adds) as adds ,SUM(t.sign_out) as sign_out,SUM(t.temporarily_leave) as temporarily_leave,SUM(t.back) as back,SUM(t.edit)  as edit,SUM(t.interview)  as interview,SUM(t.interviewed) as interviewed,SUM(t.total_person) as total_person from
    (
    select grider_id || '@' || grider_name as griderInfo,count(1) as adds,0 as sign_out,0 as temporarily_leave,0 as back,0 as edit,0 as interview,0 as interviewed,0 as total_person  from bz_person_collect_h5_union_view   where opt_type = 12 <include refid="buildPopulationAreaCode"/><include refid="queryOptTime"/> and grider_id is not null and grider_name is not null group by grider_id || '@' || grider_name
    union all
    select grider_id || '@' || grider_name as griderInfo,0 as adds,count(1) as sign_out,0 as temporarily_leave,0 as back,0 as edit,0 as interview,0 as interviewed,0 as total_person  from bz_person_collect_h5_union_view   where opt_type = 14 <include refid="buildPopulationAreaCode"/><include refid="queryOptTime"/> and grider_id is not null and grider_name is not null group by grider_id || '@' || grider_name
    union all
    select grider_id || '@' || grider_name as griderInfo,0 as adds,0 as sign_out,count(1) as temporarily_leave,0 as back,0 as edit,0 as interview,0 as interviewed,0 as total_person  from bz_person_collect_h5_union_view   where opt_type = 15 <include refid="buildPopulationAreaCode"/><include refid="queryOptTime"/> and grider_id is not null and grider_name is not null group by grider_id || '@' || grider_name
    union all
    select grider_id || '@' || grider_name as griderInfo,0 as adds,0 as sign_out,0 as temporarily_leave,count(1) as back,0 as edit,0 as interview,0 as interviewed,0 as total_person  from bz_person_collect_h5_union_view   where opt_type = 16 <include refid="buildPopulationAreaCode"/><include refid="queryOptTime"/> and grider_id is not null and grider_name is not null group by grider_id || '@' || grider_name
    union all
    select grider_id || '@' || grider_name as griderInfo,0 as adds,0 as sign_out,0 as temporarily_leave,0 as back,count(1) as edit,0 as interview,0 as interviewed,0 as total_person  from bz_person_collect_h5_union_view   where opt_type = 13 <include refid="buildPopulationAreaCode"/><include refid="queryOptTime"/> and grider_id is not null and grider_name is not null group by grider_id || '@' || grider_name
    union all
    select grider_id || '@' || grider_name as griderInfo,0 as adds,0 as sign_out,0 as temporarily_leave,0 as back,0 as edit,count(1) as interview,0 as interviewed,0 as total_person  from bz_person_collect_h5_union_view   where opt_type = 11 <include refid="buildPopulationAreaCode"/><include refid="queryOptTime"/> and grider_id is not null and grider_name is not null group by grider_id || '@' || grider_name
    ) t
    group by t.griderInfo
</select>
<select id="getWorkReportPopulationListNew" resultType="com.sf.gis.common.entity.collect.WorkReportPopulationVo">
    select code,SUM(t.adds) as adds,SUM(t.adddtc) as adddtc ,SUM(t.signOut) as signOut,SUM(t.temporarilyLeave) as temporarilyLeave,SUM(t.back) as back,SUM(t.edit)  as edit,SUM(t.interview)  as interview,SUM(t.interviewed) as interviewed,(SUM(t.total_person) +SUM(t.interviewed)) as total_person from
    (
    select ${dto.areaField} as code,
    count(case when opt_type = 12 then 1 end) as adds,
    0 as adddtc,
    count(case when opt_type = 14 then 1 end) as signOut,
    count(case when opt_type = 15 then 1 end) as temporarilyLeave,
    count(case when opt_type = 16 then 1 end) as back,
    count(case when opt_type = 13 then 1 end) as edit,
    count(case when opt_type = 11 then 1 end) as interview,
    0 as interviewed,
    0 as total_person  from bz_person_collect_h5_union_view   where 1=1 <include refid="buildPopulationAreaCode"/> <include refid="queryOptTime"/> and ${dto.areaField} is not null group by ${dto.areaField}
    union all
    select t.code,
    0 as adds,
    0 as adddtc,
    0 as signOut,
    0 as temporarilyLeave,
    0 as back,
    0 as edit,
    0 as interview,
    count(1) as interviewed,
    0 as total_person  from (select distinct person_code,batch_number,${dto.areaField} as code from bz_person_collect_h5_union_view   where 1=1 <include refid="buildPopulationAreaCode"/> <include refid="queryOptTime1"/> and ${dto.areaField} is not null) t group by t.code
    union all
    select ${dto.areaField} as code,
    0 as adds,
    0 as adddtc,
    0 as signOut,
    0 as temporarilyLeave,
    0 as back,
    0 as edit,
    0 as interview,
    0 as interviewed,
    count(1) as total_person  from bz_person_collect_latest   where inc_day = (select inc_day from app_table_inc_day where table_name = 'bz_person_collect_latest') and living_status in ('1','2') <include refid="buildPopulationAreaCode"/> <include refid="queryOptTime2"/> and ${dto.areaField} is not null group by ${dto.areaField}
    ) t group by t.code
</select>

<select id="getReportEventList" resultMap="getReportEventListMap">
    select grid_code ,sum(normal_finish) as normal_finish, sum(normal) as normal,sum(immediately) as immediately from (
    select left(grid_code,9) as grid_code,count(1) as normal_finish,0 as normal,0 as immediately from event_bus_info where grid_code is not null and event_class=2 and event_status='finish' <include refid="buildReportEventAreaCode"/> <include refid="queryEventReportTime"/>
    <!--        select left(grid_code,9) as grid_code,count(1) as normal_finish,0 as normal,count(1) as immediately from event_bus_info where grid_code is not null and event_class=2 and event_status='finish' <include refid="buildReportEventAreaCode"/> <include refid="queryEventReportTime"/>-->
    group by left(grid_code,9)
    union all
    select left(grid_code,9) as grid_code,0 as normal_finish,count(1) as normal,0 as immediately from event_bus_info where grid_code is not null and event_class=2 and event_status!='draft' and event_status!='delete' and event_status!='close' <include refid="buildReportEventAreaCode"/> <include refid="queryEventReportTime"/>
    group by left(grid_code,9)
    union all
    select left(grid_code,9) as grid_code,0 as normal_finish,0  as normal,count(1) as immediately from event_bus_info where grid_code is not null and event_class=1 and event_status!='draft' and event_status!='delete' and event_status!='close' <include refid="buildReportEventAreaCode"/> <include refid="queryEventReportTime"/>
    group by left(grid_code,9)
    ) t group by t.grid_code
</select>

<select id="getVerifyTaskList" resultMap="getVerifyTaskListMap"> name
    select jd_code as code,sum(exe_count) as exe_count,sum(un_sign_count) as un_sign_count,sum(handling_count) as handling_count,sum(finished_count) as finished_count from (
    select jd_code,count(1) as exe_count,0 as un_sign_count,0 as handling_count,0 as finished_count from task_sub_view ts left join task_exe te on ts.task_exe_id=te.task_exe_id where task_sub_status in (0,1,2) and te.deleted = 0 and te.task_gn_status = 2 <include refid="buildVerifyTaskAreaCode"/><include refid="queryTime1"/> group by jd_code
    union all
    select jd_code,0 as exe_count,count(1) as un_sign_count,0 as handling_count,0 as finished_count from task_sub_view ts left join task_exe te on ts.task_exe_id=te.task_exe_id where task_sub_status=0 and te.deleted = 0 and te.task_gn_status = 2  <include refid="buildVerifyTaskAreaCode"/> <include refid="queryTime1"/> group by jd_code
    union all
    select jd_code,0 as exe_count,0 as un_sign_count,count(1) as handling_count,0 as finished_count  from task_sub_view ts left join task_exe te on ts.task_exe_id=te.task_exe_id where task_sub_status=1 and te.deleted = 0 and te.task_gn_status = 2 <include refid="buildVerifyTaskAreaCode"/> <include refid="queryTime1"/> group by jd_code
    union all
    select jd_code,0 as exe_count,0 as un_sign_count,0 as handling_count,count(1) as finished_count  from task_sub_view ts left join task_exe te on ts.task_exe_id=te.task_exe_id where task_sub_status=2 and te.deleted = 0 and te.task_gn_status = 2  <include refid="buildVerifyTaskAreaCode"/> <include refid="queryTime1"/> group by jd_code
    ) t group by t.jd_code
</select>

select * from ( SELECT ag.grider_profile , ag.grider_id , ag.grider_name , ag.grider_tel_enc , ROUND((ST_Distance(ST_PointFromText(concat('POINT(', t.griderloc_x, ' ', t.griderloc_y, ')'), 0), ST_PointFromText (concat( 'POINT(', #{param.lng} , ' ', #{param.lat}, ')') , 0) ) * 6378.137 * 2 * PI() * 1000 / 360)::numeric, 0) AS distance FROM app_grider_loc t LEFT JOIN app_grider ag ON t.grider_code = ag.grider_id and ag.inc_day = (SELECT inc_day FROM app_table_inc_day WHERE table_name = 'app_grider') where t.inc_day = (SELECT inc_day FROM app_table_inc_day WHERE table_name = 'app_grider_loc') <if test='param.griderId != null and param.griderId != ""'> and t.grider_code != #{param.griderId} </if> ORDER BY distance) zzz where zzz.distance <![CDATA[ <= ]]> 500 ;

<insert id="saveTaskItemAttach" parameterType="java.util.List">
    INSERT INTO item_attach
    ("work_file_id","item_id","item_version","file_large","file_little","file_type","file_name","file_url","create_by","create_time","update_by","update_time")
    VALUES
    <foreach collection="itemAttachList" item="attach" separator="," index="index">
        (#{attach.workFileId},#{attach.itemId},#{attach.itemVersion}, #{attach.fileLarge}, #{attach.fileLittle}, #{attach.fileType},
        #{attach.fileName},#{attach.fileUrl}, #{attach.createBy}, now(), #{attach.updateBy}, now())
    </foreach>
</insert>

11111111111111111111111111111111111111111111

<?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.sf.gis.taskmanage.event.mapper.PeopleLiveTaskMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.sf.gis.common.entity.PeopleLiveTask">
        <id column="people_live_task_id" property="peopleLiveTaskId" />
        <result column="pl_task_id" property="plTaskId" />
        <result column="pl_event_id" property="plEventId" />
        <result column="pl_content" property="plContent" />
        <result column="pl_create_time" property="plCreateTime" />
        <result column="pl_limit_time" property="plLimitTime" />
        <result column="pl_attachmentinfos" property="plAttachmentinfos" />
        <result column="pl_user_id" property="plUserId" />
        <result column="pl_user_name" property="plUserName" />
        <result column="handle_status" property="handleStatus" />
        <result column="handle_time" property="handleTime" />
        <result column="handle_user_id" property="handleUserId" />
        <result column="handle_user_name" property="handleUserName" />
        <result column="approve_content" property="approveContent" />
        <result column="remark" property="remark" />
        <result column="order_num" property="orderNum" />

        <result column="title" property="title" />
        <result column="type" property="type" />
        <result column="report_time" property="reportTime" />
        <result column="incident_address" property="incidentAddress" />
        <result column="handle_attachmentinfos" property="handleAttachmentinfos" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />

    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        people_live_task_id, pl_task_id, pl_event_id, pl_content, pl_create_time, pl_limit_time, pl_attachmentinfos, pl_user_id, pl_user_name, handle_status, handle_time, handle_user_id, handle_user_name, approve_content, remark, order_num,
        title, type, report_time, incident_address, handle_attachmentinfos, create_time, update_time
    </sql>
    <select id="selectnewCountList" resultType="java.lang.Integer">
        select
        count(1) from
        (
        SELECT
        distinct
        pt.title,
        pt.type,
        pt.report_time reportTime,
        pt.incident_address incidentAddress,
        pt.pl_event_id plEventId,
        pt.people_live_task_id peopleLiveTaskId,
        pt.order_num orderNum,
        pt.handle_status handleStatus
        FROM
        people_live_task pt
        where 1=1
        <if test="query.eventAddr != null and query.eventAddr != ''">
            and
            pt.incident_address  like concat('%',#{query.eventAddr},'%')

        </if>
        <if test="query.title != null and query.title != ''">
            and
            pt.title  like concat('%',#{query.title},'%')

        </if>
        <if test="query.start != null and query.start != ''">
            and pt.report_time >= CAST(#{query.start} AS TIMESTAMP)
        </if>
        <if test="query.end != null and query.end != ''">
            and pt.report_time <![CDATA[<=]]> CAST(#{query.end} AS TIMESTAMP)
        </if>

        <if test="query.overdue !=null  and query.overdue != '' and query.overdue==2 ">
            and pt.pl_limit_time  <![CDATA[>=]]> #{query.createStartTime}
        </if>
        <if test="query.overdue !=null  and query.overdue != '' and query.overdue==1 ">
            and pt.pl_limit_time  <![CDATA[<=]]> #{query.createStartTime}
        </if>
        <if test="query.griderId != null and query.griderId != ''">
            and pt.pl_user_id = #{query.griderId}
        </if>
        <if test="query.sysidList !=null  and query.sysidList.size()>0">
            and pt.people_live_task_id in
            <foreach collection="query.sysidList" index = "index" item = "sysiditem" open="(" separator="," close=")">
                #{sysiditem}
            </foreach>
        </if>
        and   pt.handle_time is  null

        ) tt

    </select>
    <select id="selectListPage" resultType="com.sf.gis.common.domain.vo.PeopleLiveTaskVo">
        select * from (
        SELECT
        distinct
        pt.title,
        pt.type,
        pt.report_time reportTime,
        pt.incident_address incidentAddress,
        pt.pl_event_id plEventId,
        pt.people_live_task_id peopleLiveTaskId,
        pt.order_num orderNum,
        pt.handle_status handleStatus,
        pt.pl_limit_time limitTime
        FROM
        people_live_task pt
        where 1=1
        <if test="query.eventAddr != null and query.eventAddr != ''">
            and
            pt.incident_address  like concat('%',#{query.eventAddr},'%')

        </if>
        <if test="query.title != null and query.title != ''">
            and
            pt.title  like concat('%',#{query.title},'%')

        </if>
        <if test="query.start != null and query.start != ''">
            and pt.report_time >= CAST(#{query.start} AS TIMESTAMP)
        </if>
        <if test="query.end != null and query.end != ''">
            and pt.report_time <![CDATA[<=]]> CAST(#{query.end} AS TIMESTAMP)
        </if>
        <if test="query.overdue !=null  and query.overdue != '' and query.overdue==2 ">
            and pt.pl_limit_time  <![CDATA[>=]]> #{query.createStartTime}
        </if>
        <if test="query.overdue !=null  and query.overdue != '' and query.overdue==1 ">
            and pt.pl_limit_time  <![CDATA[<=]]> #{query.createStartTime}
        </if>
        <if test="query.griderId != null and query.griderId != ''">
            and pt.pl_user_id = #{query.griderId}
        </if>
        <if test="query.sysidList !=null  and query.sysidList.size()>0">
            and pt.people_live_task_id in
            <foreach collection="query.sysidList" index = "index" item = "sysiditem" open="(" separator="," close=")">
                #{sysiditem}
            </foreach>
        </if>
        and   pt.handle_time is  null


        ) tt
        order by tt.reportTime desc
        LIMIT #{query.pageSize} OFFSET #{query.startIndex}



    </select>


    <select id="selectqueryList" resultType="com.sf.gis.common.domain.vo.SpvExeVo" parameterType="com.sf.gis.common.domain.dto.SpvExequeryDto">
        select * from (
        SELECT
        distinct
        se.exe_done_time  exeDoneTime,
        se.spv_exe_name  spvExeName,
        se.create_by  createBy,
        ser.handle_time  distributeTime,
        ser.spv_start_time spvStartTime,
        ser.task_num taskNum,
        stp.task_total_count houseTotalCount,
        stp.task_finished_count houseFinishedCount,
        stp.finish_time finishTime,
        se.spv_exe_id spvExeId,
        se.create_dept_name createDeptName,
        stp.error_count errorCount,
        stp.task_total_count taskTotalCount,
        ser.over_time overTime
        FROM
        spv_exe se
        left join spv_taskexe_process stp on se.spv_exe_id = stp.spv_exe_id
        left join spv_exe_area_rel ser on se.spv_exe_id = ser.spv_exe_id
        where 1=1
        and EXISTS( select 1 from spv_auth_person t3 where se.spv_exe_id = t3.spv_exe_id AND t3.deleted = 0 AND  t3.assign_person_id=#{query.userId})
        <if test="query.spvTaskType !=null">
            and  se.spv_task_type = #{query.spvTaskType}
        </if>
        <if test="query.createByandSpvExeName != null and query.createByandSpvExeName != ''">
            and
            (
            se.create_by   like concat('%',#{query.createByandSpvExeName},'%')
            or
            se.spv_exe_name  like concat('%',#{query.createByandSpvExeName},'%')
            )
        </if>
        <if test="query.exeDoneTime != null and query.distributeTime != null">

            and ser.handle_time  <![CDATA[>=]]> #{query.distributeTime}
            and se.exe_done_time  <![CDATA[<=]]> #{query.exeDoneTime}

        </if>
        <!--    <if test="query.exeDoneTime != null and query.distributeTime != null">
                and  ser.handle_time  <![CDATA[>]]> #{query.distributeTime}
            </if>-->

        <!-- null的时候展示进行中和已完成数据-->
        <if test="query.exeStatusflag == null">
            and  se.exe_status = 2
        </if>
        <!-- 1已完成-->
        <if test="query.exeStatusflag==1">
            and  se.exe_status = 2
            and  stp.finish_time is not null
        </if>
        <!--2 进行中-->
        <if test="query.exeStatusflag==2">
            and  se.exe_status = 2
            and  stp.finish_time is null
        </if>

        <!--已超期-->
        <if test="query.overdueTimeflag==1">
            and se.exe_done_time  <![CDATA[<]]> #{query.overdueTime}
        </if>
        <!-- 未超期-->
        <if test="query.overdueTimeflag==2">
            and se.exe_done_time <![CDATA[>=]]> #{query.overdueTime}
        </if>
        and se.deleted=0
        ) tt
        order by tt.exeDoneTime asc
        LIMIT #{query.pageSize} OFFSET #{query.startIndex}
    </select>
    <select id="selectnewCountLists" resultType="java.lang.Integer">
        select
        count(1) from
        (
        SELECT
        distinct
        pt.title,
        pt.type,
        pt.report_time reportTime,
        pt.incident_address incidentAddress,
        pt.pl_event_id plEventId,
        pt.people_live_task_id peopleLiveTaskId,
        pt.order_num orderNum,
        pt.handle_status handleStatus
        FROM
        people_live_task pt
        where 1=1
        <if test="query.eventAddr != null and query.eventAddr != ''">
            and
            pt.incident_address  like concat('%',#{query.eventAddr},'%')

        </if>
        <if test="query.title != null and query.title != ''">
            and
            pt.title  like concat('%',#{query.title},'%')

        </if>
        <if test="query.start != null and query.start != ''">
            and pt.report_time >= CAST(#{query.start} AS TIMESTAMP)
        </if>
        <if test="query.end != null and query.end != ''">
            and pt.report_time <![CDATA[<=]]> CAST(#{query.end} AS TIMESTAMP)
        </if>
        <if test="query.griderId != null and query.griderId != ''">
            and pt.pl_user_id = #{query.griderId}
        </if>
        <if test="query.finish==1">
            and   pt.handle_time is not null
        </if>
        <!--2 进行中-->
        <if test="query.finish==2">
            and   pt.handle_time is  null
        </if>
        ) tt



    </select>
    <select id="selectListPages" resultType="com.sf.gis.common.domain.vo.PeopleLiveTaskVo">
        select * from (
        SELECT
        distinct
        pt.title,
        pt.type,
        pt.report_time reportTime,
        pt.incident_address incidentAddress,
        pt.pl_event_id plEventId,
        pt.people_live_task_id peopleLiveTaskId,
        pt.order_num orderNum,
        pt.handle_status handleStatus
        FROM
        people_live_task pt
        where 1=1
        <if test="query.eventAddr != null and query.eventAddr != ''">
            and
            pt.incident_address  like concat('%',#{query.eventAddr},'%')

        </if>
        <if test="query.title != null and query.title != ''">
            and
            pt.title  like concat('%',#{query.title},'%')

        </if>
        <if test="query.start != null and query.start != ''">
            and pt.report_time >= CAST(#{query.start} AS TIMESTAMP)
        </if>
        <if test="query.end != null and query.end != ''">
            and pt.report_time <![CDATA[<=]]> CAST(#{query.end} AS TIMESTAMP)
        </if>
        <if test="query.griderId != null and query.griderId != ''">
            and pt.pl_user_id = #{query.griderId}
        </if>
        <if test="query.finish==1">
            and   pt.handle_time is not null
        </if>
        <!--2 进行中-->
        <if test="query.finish==2">
            and   pt.handle_time is  null
        </if>
        ) tt
        order by tt.reportTime desc
        LIMIT #{query.pageSize} OFFSET #{query.startIndex}



    </select>

    <select id="getEventStatistics" resultType="com.sf.gis.common.domain.vo.EventStaticVo">
        SELECT
        count(1) as total_count,
        SUM(CASE WHEN  t.pl_limit_time<![CDATA[<]]> NOW()   THEN 1 ELSE 0 END) AS overdue_event_count
        FROM
        people_live_task t
        where t.pl_user_id = #{griderId}
        and t.handle_time is  null
    </select>
    <select id="selectList1" resultType="com.sf.gis.common.entity.PeopleLiveTask">
        select * from people_live_task where 1=1
        <if test="query.gridCode != null and query.gridCode != ''">
            and grid_code = #{query.gridCode}
        </if>
        <if test="query.reportStartTime != null and query.reportStartTime != ''">
            and report_time >= CAST(#{query.reportStartTime} AS TIMESTAMP)
        </if>
        <if test="query.reportEndTime != null and query.reportEndTime != ''">
            and report_time <![CDATA[<=]]> CAST(#{query.reportEndTime} AS TIMESTAMP)
        </if>


    </select>
</mapper>