guoshilong
2024-02-06 b570568ea3dba9e42e6feb77281f21217334e84e
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml
@@ -7,11 +7,21 @@
        SELECT
        spt.*,spt2.name as patrolTypeName,
        route.ROUTE_COORDINATES routeRange,
        u.real_name toUserName
        u.real_name toUserName,
        u2.real_name createUserName,
        arb."res_loc"  regionName
        FROM sm_patrol_task spt
        left join sm_patrol_type spt2 on spt.task_type = spt2.id
        LEFT JOIN sm_patrol_route route ON route.id = spt.route_id
        LEFT JOIN blade_user u ON u.id = spt.to_user_id
        LEFT JOIN blade_user u2 ON u2.id = spt.create_user
        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = spt.project_id
        left join SJZT_MD."att_ad_base" aab on aab."guid" = arb."interior_ad_guid"
        left join SJZT_MD."att_ad_base" aa on aab."p_ad_code" = aa."ad_code"
        left join SJZT_MD."att_ad_base" ab on aa."p_ad_code" = ab."ad_code"
        left join SJZT_MD."att_ad_base" ac on ab."p_ad_code" = ac."ad_code"
        WHERE spt.is_deleted = 0
        <if test="patrolTask.title !=null and patrolTask.title!=''">
            AND spt.title LIKE CONCAT('%',#{patrolTask.title},'%')
@@ -34,6 +44,13 @@
        <if test="patrolTask.state != null and patrolTask.state !=''">
            AND spt.state = #{patrolTask.state}
        </if>
        <if test="patrolTask.taskType != null and patrolTask.taskType !='' ">
            AND spt.task_type = #{patrolTask.taskType}
        </if>
        <if test="patrolTask.adCode != null and patrolTask.adCode != '' ">
            and (aab."ad_code" = #{patrolTask.adCode} or aa."ad_code" = #{patrolTask.adCode} or ab."ad_code" = #{patrolTask.adCode} or ac."ad_code" = #{patrolTask.adCode})
        </if>
    </select>
    <!--获取全部-->
    <select id="getAll" resultType="cn.gistack.sm.patrol.entity.PatrolTask">
@@ -174,13 +191,501 @@
        FROM sm_patrol_task spt
        where spt.id = #{id}
    </select>
    <select id="customizeGetById" resultType="cn.gistack.sm.patrol.entity.PatrolTask">
        SELECT T.ID,T.TITLE,T.TO_USER_ID,A.PROBLEM_COUNT,T.PROJECT_ID,T.CONTENT,T.STATE FROM SM_PATROL_TASK T
        LEFT JOIN (
            SELECT COUNT(*) PROBLEM_COUNT,R.TASK_ID FROM SM_PATROL_REPORT R WHERE R.TASK_ID = #{id} AND R.STATUS = 2 GROUP BY R.TASK_ID
        )A ON A.TASK_ID = T.ID
    <select id="customizeGetById" resultType="cn.gistack.sm.patrol.vo.PatrolTaskVO">
        SELECT
            T.*,
               SPT.NAME AS taskTypeName,
            U.REAL_NAME AS toUserIdName,
               arb."center_long" lon ,arb."center_lat" lat
        FROM SM_PATROL_TASK T
        LEFT JOIN BLADE_USER U ON U.ID = T.TO_USER_ID
        LEFT JOIN SM_PATROL_TYPE SPT ON SPT.ID = T.TASK_TYPE
        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = T.project_id
        WHERE T.ID = #{id}
        AND T.IS_DELETED = 0
    </select>
    <!--行政区统计分页-->
    <select id="getRegionReportPage" resultType="cn.gistack.sm.patrol.vo.PatrolTaskReport">
        select * from (
                          select "ad_name"  AS adName ,"guid" AS adCode,"ad_grad","order_id",date_format(#{patrolTaskReport.startTime},'%Y-%m-%d')  AS startTime,date_format(#{patrolTaskReport.endTime},'%Y-%m-%d') AS endTime,
                                 (
                                     select count(*) from YWXT.SM_PATROL_TASK spt
                                                              left join SJZT_MD."att_res_base" a on (spt.project_id = a."guid")
                                                              left join SJZT_MD."att_ad_base" b on a."interior_ad_guid" = b."ad_code"
                                                              left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
                                                              left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
                                     where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
                                       and spt.is_deleted = 0
                                <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
                                    AND spt.start_time &gt;= #{patrolTaskReport.startTime}
                                </if>
                                <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
                                    AND spt.start_time &lt;= #{patrolTaskReport.endTime}
                                </if>
                                 ) need ,
                                 (
                                     select count(*) from YWXT.SM_PATROL_TASK spt
                                                              left join SJZT_MD."att_res_base" a on (spt.project_id = a."guid")
                                                              left join SJZT_MD."att_ad_base" b on a."interior_ad_guid" = b."ad_code"
                                                              left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
                                                              left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
                                     where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
                                       and spt.is_deleted = 0 and spt.state = 3
                                    <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
                                        AND spt.start_time &gt;= #{patrolTaskReport.startTime}
                                    </if>
                                    <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
                                        AND spt.start_time &lt;= #{patrolTaskReport.endTime}
                                    </if>
                                 ) finish ,
                                 (
                                     select count(*) from YWXT.SM_PATROL_TASK spt
                                                              left join SJZT_MD."att_res_base" a on (spt.project_id = a."guid")
                                                              left join SJZT_MD."att_ad_base" b on a."interior_ad_guid" = b."ad_code"
                                                              left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
                                                              left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
                                     where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
                                       and spt.is_deleted = 0 and (spt.state = 1 or spt.state = 2)
                                <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
                                    AND spt.start_time &gt;= #{patrolTaskReport.startTime}
                                </if>
                                <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
                                    AND spt.start_time &lt;= #{patrolTaskReport.endTime}
                                </if>
                                 ) todo ,
                                 (
                                     select count(*) from SJZT_MD."att_res_base" a
                                                              left join SJZT_MD."att_ad_base" b on a."interior_ad_guid" = b."ad_code"
                                                              left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
                                                              left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
                                     where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
                                 ) res_count
                          from SJZT_MD."att_ad_base" aab where
                                <choose>
                                    <when test="patrolTaskReport.adCode != null and patrolTaskReport.adCode !='' ">
                                        "p_ad_code" = #{patrolTaskReport.adCode}
                                    </when>
                                    <otherwise>
                                        "ad_grad" = 2
                                    </otherwise>
                                </choose>
                      )
        where res_count >0 order by "order_id" asc
    </select>
    <!--行政区统计列表-->
    <select id="getRegionReportList" resultType="cn.gistack.sm.patrol.vo.PatrolTaskReport">
        select * from (
        select "ad_name"  AS adName ,"guid" AS adCode,"order_id", #{patrolTaskReport.startTime} AS startTime,#{patrolTaskReport.endTime} AS endTime,
        (
        select count(*) from YWXT.SM_PATROL_TASK spt
        left join SJZT_MD."att_res_base" a on (spt.project_id = a."guid")
        left join SJZT_MD."att_ad_base" b on a."interior_ad_guid" = b."ad_code"
        left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
        left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
        where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
        and spt.is_deleted = 0
        <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
            AND spt.start_time &gt;= #{patrolTaskReport.startTime}
        </if>
        <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
            AND spt.start_time &lt;= #{patrolTaskReport.endTime}
        </if>
        ) need ,
        (
        select count(*) from YWXT.SM_PATROL_TASK spt
        left join SJZT_MD."att_res_base" a on (spt.project_id = a."guid")
        left join SJZT_MD."att_ad_base" b on a."interior_ad_guid" = b."ad_code"
        left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
        left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
        where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
        and spt.is_deleted = 0 and spt.state = 3
        <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
            AND spt.start_time &gt;= #{patrolTaskReport.startTime}
        </if>
        <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
            AND spt.start_time &lt;= #{patrolTaskReport.endTime}
        </if>
        ) finish ,
        (
        select count(*) from YWXT.SM_PATROL_TASK spt
        left join SJZT_MD."att_res_base" a on (spt.project_id = a."guid")
        left join SJZT_MD."att_ad_base" b on a."interior_ad_guid" = b."ad_code"
        left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
        left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
        where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
        and spt.is_deleted = 0 and (spt.state = 1 or spt.state = 2)
        <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
            AND spt.start_time &gt;= #{patrolTaskReport.startTime}
        </if>
        <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
            AND spt.start_time &lt;= #{patrolTaskReport.endTime}
        </if>
        ) todo ,
        (
        select count(*) from SJZT_MD."att_res_base" a
        left join SJZT_MD."att_ad_base" b on a."interior_ad_guid" = b."ad_code"
        left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
        left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
        where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
        ) res_count
        from SJZT_MD."att_ad_base" aab where
        <choose>
            <when test="patrolTaskReport.adCode != null and patrolTaskReport.adCode !='' ">
                "p_ad_code" = #{patrolTaskReport.adCode}
            </when>
            <otherwise>
                "ad_grad" = 2
            </otherwise>
        </choose>
        )
        where res_count >0 order by "order_id" asc
    </select>
    <!--获取水库巡查数据-->
    <select id="getReservoirReportPage" resultType="cn.gistack.sm.patrol.vo.PatrolTaskReport">
        SELECT
            arb."name" AS reservoirName,
            arb."guid" AS reservoirId,
            arb."interior_ad_guid" AS adCode,
            aab."ad_name" AS adName,
        date_format(#{patrolTaskReport.startTime},'%Y-%m-%d') AS startTime,
        date_format(#{patrolTaskReport.endTime},'%Y-%m-%d') AS endTime,
        (
        select count(*) from YWXT.SM_PATROL_TASK spt
        where arb."guid" = spt.project_id
        and spt.is_deleted = 0
        <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
            AND spt.start_time &gt;= #{patrolTaskReport.startTime}
        </if>
        <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
            AND spt.start_time &lt;= #{patrolTaskReport.endTime}
        </if>
        ) need,
        (
        select count(*) from YWXT.SM_PATROL_TASK spt
        where arb."guid" = spt.project_id
        and spt.is_deleted = 0 and spt.state = 3
        <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
            AND spt.start_time &gt;= #{patrolTaskReport.startTime}
        </if>
        <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
            AND spt.start_time &lt;= #{patrolTaskReport.endTime}
        </if>
        ) finish,
        (
        select count(*) from YWXT.SM_PATROL_TASK spt
        where arb."guid" = spt.project_id
        and spt.is_deleted = 0 and (spt.state = 1 or spt.state =2)
        <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
            AND spt.start_time &gt;= #{patrolTaskReport.startTime}
        </if>
        <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
            AND spt.start_time &lt;= #{patrolTaskReport.endTime}
        </if>
        ) todo
        FROM SJZT_MD."att_res_base" arb
        LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
        WHERE "is_deleted" = 0
          <if test="patrolTaskReport.adCode != null and patrolTaskReport.adCode !='' ">
              AND arb."interior_ad_guid" = #{patrolTaskReport.adCode}
          </if>
    </select>
    <!--获取水库巡查数据-->
    <select id="getReservoirReportList" resultType="cn.gistack.sm.patrol.vo.PatrolTaskReport">
        SELECT
        arb."name" AS reservoirName,
        arb."guid" AS reservoirId,
        arb."interior_ad_guid" AS adCode,
        aab."ad_name" AS adName,
        #{patrolTaskReport.startTime} AS startTime,
        #{patrolTaskReport.endTime} AS endTime,
        (
        select count(*) from YWXT.SM_PATROL_TASK spt
        where arb."guid" = spt.project_id
        and spt.is_deleted = 0
        ) need,
        (
        select count(*) from YWXT.SM_PATROL_TASK spt
        where arb."guid" = spt.project_id
        and spt.is_deleted = 0 and spt.state = 3
        ) finish,
        (
        select count(*) from YWXT.SM_PATROL_TASK spt
        where arb."guid" = spt.project_id
        and spt.is_deleted = 0 and (spt.state = 1 or spt.state =2)
        ) todo
        FROM SJZT_MD."att_res_base" arb
        LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
        WHERE "is_deleted" = 0
        <if test="patrolTaskReport.adCode != null and patrolTaskReport.adCode !='' ">
            AND "interior_ad_guid" = #{patrolTaskReport.adCode}
        </if>
        <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
            AND DATE_FORMAT(t.start_time,'%Y-%m-%d') &gt;= #{patrolTaskReport.startTime}
        </if>
        <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
            AND DATE_FORMAT(t.start_time,'%Y-%m-%d') &lt;= #{patrolTaskReport.endTime}
        </if>
    </select>
    <!--水库巡查-->
    <select id="getTaskReportDetailRegion" resultType="cn.gistack.sm.patrol.vo.PatrolTaskReport">
        SELECT
        arb."guid" AS reservoirId,
        arb."name" AS reservoirName,
        aab."ad_name" AS adName,
        aab."guid" AS adCode,
        t.start_time,
        u.real_name patrolUserName,
        t.state,
        t.id,
        (
        CASE t.state
        WHEN '1' THEN '未完成'
        WHEN '2' THEN '进行中'
        ELSE '已完成'
        END
        )stateName
        FROM YWXT.SM_PATROL_TASK T
        LEFT JOIN BLADE_USER u ON u.id = t.to_user_id
        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = t.project_id
        left join SJZT_MD."att_ad_base" aab on aab."guid" = arb."interior_ad_guid"
        left join SJZT_MD."att_ad_base" aa on aab."p_ad_code" = aa."ad_code"
        left join SJZT_MD."att_ad_base" ab on aa."p_ad_code" = ab."ad_code"
        left join SJZT_MD."att_ad_base" ac on ab."p_ad_code" = ac."ad_code"
        WHERE T.IS_DELETED = 0
        <if test="patrolTaskReport.adCode !=null and patrolTaskReport.adCode !=''">
            and (aab."ad_code" =#{patrolTaskReport.adCode} or aa."ad_code" = #{patrolTaskReport.adCode} or ab."ad_code" = #{patrolTaskReport.adCode} or ac."ad_code" = #{patrolTaskReport.adCode})
        </if>
        <if test="patrolTaskReport.reservoirName !=null and patrolTaskReport.reservoirName !=''">
            AND arb."name" LIKE CONCAT('%',#{patrolTaskReport.reservoirName},'%')
        </if>
        <if test="patrolTaskReport.startTime !=null and patrolTaskReport.startTime !=''">
            AND t.start_time &gt;= #{patrolTaskReport.startTime}
        </if>
        <if test="patrolTaskReport.endTime !=null and patrolTaskReport.endTime !=''">
            AND t.start_time &lt;= #{patrolTaskReport.endTime}
        </if>
        <if test="patrolTaskReport.reservoirId !=null and patrolTaskReport.reservoirId !=''">
            AND arb."guid" =  #{patrolTaskReport.reservoirId}
        </if>
        <if test="patrolTaskReport.state != null and patrolTaskReport.state !='' ">
            and t.state = #{patrolTaskReport.state}
        </if>
    </select>
    <select id="getTaskStatusCount" resultType="cn.gistack.sm.patrol.vo.TaskStatusCount">
        SELECT '未完成' AS name,'1' AS value , count(*) as taskCount FROM SM_PATROL_TASK T2
                    LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = T2.project_id
                    LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
                    LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
                    LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
                    LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
            WHERE T2.state = 1 AND T2.IS_DELETED = 0
            <if test="vo.adCode != null and vo.adCode != '' ">
                and (aab."ad_code" = #{vo.adCode} or aa."ad_code" = #{vo.adCode} or ab."ad_code" = #{vo.adCode} or ac."ad_code" = #{vo.adCode})
            </if>
            <if test="vo.startTime !=null and vo.startTime !=''">
                AND T2.start_time &gt;= #{vo.startTime}
            </if>
            <if test="vo.endTime !=null and vo.endTime !=''">
                AND T2.end_time &lt;= #{vo.endTime}
            </if>
            <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
                AND T2.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
            </if>
        UNION ALL
        SELECT '进行中' AS name,'2' AS value , count(*) as taskCount FROM SM_PATROL_TASK T3
                LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = T3.project_id
                LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
                LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
                LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
                LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
                WHERE T3.state = 2 AND T3.IS_DELETED = 0
                <if test="vo.adCode != null and vo.adCode != '' ">
                    and (aab."ad_code" = #{vo.adCode} or aa."ad_code" = #{vo.adCode} or ab."ad_code" = #{vo.adCode} or ac."ad_code" = #{vo.adCode})
                </if>
                <if test="vo.startTime !=null and vo.startTime !=''">
                    AND T3.start_time &gt;= #{vo.startTime}
                </if>
                <if test="vo.endTime !=null and vo.endTime !=''">
                    AND T3.end_time &lt;= #{vo.endTime}
                </if>
                <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
                    AND T3.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
                </if>
        UNION ALL
        SELECT '已完成' AS name,'3' AS value , count(*) as taskCount FROM SM_PATROL_TASK T4
                LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = T4.project_id
                LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
                LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
                LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
                LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
                WHERE T4.state = 3 AND T4.IS_DELETED = 0
                <if test="vo.adCode != null and vo.adCode != '' ">
                    and (aab."ad_code" = #{vo.adCode} or aa."ad_code" = #{vo.adCode} or ab."ad_code" = #{vo.adCode} or ac."ad_code" = #{vo.adCode})
                </if>
                <if test="vo.startTime !=null and vo.startTime !=''">
                    AND T4.start_time &gt;= #{vo.startTime}
                </if>
                <if test="vo.endTime !=null and vo.endTime !=''">
                    AND T4.end_time &lt;= #{vo.endTime}
                </if>
                <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
                    AND T4.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
                </if>
        UNION ALL
            SELECT '全部' AS name,'' AS value , count(*) as taskCount
            FROM SM_PATROL_TASK T1
            LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = T1.project_id
            LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
            LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
            LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
            LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
            WHERE T1.IS_DELETED = 0
            <if test="vo.adCode != null and vo.adCode != '' ">
                and (aab."ad_code" = #{vo.adCode} or aa."ad_code" = #{vo.adCode} or ab."ad_code" = #{vo.adCode} or ac."ad_code" = #{vo.adCode})
            </if>
            <if test="vo.startTime !=null and vo.startTime !=''">
                AND T1.start_time &gt;= #{vo.startTime}
            </if>
            <if test="vo.endTime !=null and vo.endTime !=''">
                AND T1.end_time &lt;= #{vo.endTime}
            </if>
            <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
                AND T1.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
            </if>
    </select>
    <select id="getTaskStatusCountByType" resultType="cn.gistack.sm.patrol.vo.TaskStatusCount">
        SELECT
            case when T.state = '1' then '未完成'
                        when t.state = '2' then '进行中'
                        when t.state = '3' then '已完成'
                         else null end as name,
             T.STATE AS VALUE ,
             count(*) as taskCount
        FROM YWXT.SM_PATROL_TASK T
        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = T.project_id
        LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
        LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
        LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
        LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
        WHERE   T.IS_DELETED = '0'
        <if test="type != null and type !=''">
            and t.state = #{type}
        </if>
        <if test="vo.adCode != null and vo.adCode != '' ">
            and (aab."ad_code" = #{vo.adCode} or aa."ad_code" = #{vo.adCode} or ab."ad_code" = #{vo.adCode} or ac."ad_code" = #{vo.adCode})
        </if>
        <if test="vo.startTime !=null and vo.startTime !=''">
            AND T.start_time &gt;= #{vo.startTime}
        </if>
        <if test="vo.endTime !=null and vo.endTime !=''">
            AND T.end_time &lt;= #{vo.endTime}
        </if>
        <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
            AND T.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
        </if>
        GROUP BY T.STATE
    </select>
    <select id="getTaskStatusCountAll" resultType="cn.gistack.sm.patrol.vo.TaskStatusCount">
        SELECT '全部' AS name,'' AS value , count(*) as taskCount
        FROM SM_PATROL_TASK T1
        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = T1.project_id
        LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
        LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
        LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
        LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
        WHERE T1.IS_DELETED = 0
        <if test="vo.adCode != null and vo.adCode != '' ">
            and (aab."ad_code" = #{vo.adCode} or aa."ad_code" = #{vo.adCode} or ab."ad_code" = #{vo.adCode} or ac."ad_code" = #{vo.adCode})
        </if>
        <if test="vo.startTime !=null and vo.startTime !=''">
            AND T1.start_time &gt;= #{vo.startTime}
        </if>
        <if test="vo.endTime !=null and vo.endTime !=''">
            AND T1.end_time &lt;= #{vo.endTime}
        </if>
        <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
            AND T1.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
        </if>
    </select>
    <select id="getTaskTypeCount" resultType="cn.gistack.sm.patrol.vo.TaskStatusCount">
        SELECT
               SPT.NAME AS NAME,SPT.ID AS VALUE, ifnull(A.NUM,0) AS TaskCount
        FROM SM_PATROL_TYPE SPT
        LEFT JOIN (
            SELECT T.TASK_TYPE, COUNT(*) AS NUM FROM SM_PATROL_TASK T
            LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = T.project_id
            LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
            LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
            LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
            LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
            WHERE T.IS_DELETED = 0
            <if test="vo.adCode != null and vo.adCode != '' ">
                and concat(aab."ad_code",aa."ad_code",ab."ad_code",ac."ad_code") like CONCAT('%',#{vo.adCode},'%')
            </if>
            <if test="vo.startTime !=null and vo.startTime !=''">
                AND T.start_time &gt;= #{vo.startTime}
            </if>
            <if test="vo.endTime !=null and vo.endTime !=''">
                AND T.end_time &lt;= #{vo.endTime}
            </if>
            <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
                AND T.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
            </if>
            GROUP BY T.TASK_TYPE
        ) A ON A.task_type = spt.id
        WHERE SPT.IS_DELETED = 0
    </select>
    <select id="getTaskStatus" resultType="cn.gistack.sm.patrol.vo.TaskStatus">
        SELECT
            count(*) as total,
            sum(case when t.state = '1' then 1 else 0 end) unfinished,
            sum(case when t.state = '2' then 1 else 0 end) processing,
            sum(case when t.state = '3' then 1 else 0 end) finished
        FROM YWXT.SM_PATROL_TASK T
                 LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = T.project_id
                 LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
                 LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
                 LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
                 LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
        WHERE  T.IS_DELETED = 0
        <if test="vo.adCode != null and vo.adCode != '' ">
            and concat(aab."ad_code",aa."ad_code",ab."ad_code",ac."ad_code") like CONCAT('%',#{vo.adCode},'%')
        </if>
        <if test="vo.startTime !=null and vo.startTime !=''">
            AND T.start_time &gt;= #{vo.startTime}
        </if>
        <if test="vo.endTime !=null and vo.endTime !=''">
            AND T.end_time &lt;= #{vo.endTime}
        </if>
        <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
            AND T.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
        </if>
    </select>
</mapper>