xieb
2024-05-07 5e972eb9928c39b5abbdfd35e2a0aeff40876e7d
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml
@@ -5,14 +5,31 @@
    <!--自定义分页查询-->
    <select id="selectPatrolTask" resultType="cn.gistack.sm.patrol.vo.PatrolTaskVO">
        SELECT
        spt.*,spt2.name as patrolTypeName,
        route.ROUTE_COORDINATES routeRange,
        spt.id,
        spt.start_time,
        spt.end_time,
        spt.to_user_id,
        spt.state,
        spt.create_time,
        spt.project_id,
        spt.reservoir_name,
        spt.title,
        spt.content,
        spt.task_type,
        spt.patrol_group_item_id,
        spt.problem_count,
        spt.report_problem_count,
        spt.patrol_role,
        spt2.name as patrolTypeName,
        u.real_name toUserName,
        u2.real_name createUserName,
        arb."res_loc"  regionName
        arb."res_loc"  regionName,
        arb."center_long" lon,
        arb."center_lat" lat
        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
@@ -27,10 +44,10 @@
            AND spt.title LIKE CONCAT('%',#{patrolTask.title},'%')
        </if>
        <if test="patrolTask.startTime !=null and patrolTask.startTime !=''">
            AND DATE_FORMAT(spt.start_time,'%Y-%m-%d') &gt;= #{patrolTask.startTime}
            AND spt.create_time &gt;= #{patrolTask.startTime}
        </if>
        <if test="patrolTask.endTime !=null and patrolTask.endTime !=''">
            AND DATE_FORMAT(spt.end_time,'%Y-%m-%d') &lt;= #{patrolTask.endTime}
            AND spt.create_time &lt;= #{patrolTask.endTime}
        </if>
        <if test="patrolTask.projectId !=null and patrolTask.projectId !='' ">
            AND spt.project_id = #{patrolTask.projectId}
@@ -48,10 +65,96 @@
            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})
            and concat(aab."ad_code",aa."ad_code",ab."ad_code",ac."ad_code") like CONCAT('%',#{patrolTask.adCode},'%')
        </if>
    </select>
    <select id="selectPatrolTaskPage" resultType="cn.gistack.sm.patrol.vo.PatrolTaskVO">
                select spt.*, spt2.name as patrolTypeName, route.ROUTE_COORDINATES as routeRange, u.real_name as toUserName, u2.real_name as createUserName , arb."res_loc" as regionName
                from (
                select * from ywxt.sm_patrol_task spt
                where spt.is_deleted = 0
                        <if test="patrolTask.title !=null and patrolTask.title!=''">
                            AND spt.title LIKE CONCAT('%',#{patrolTask.title},'%')
                        </if>
                        <if test="patrolTask.startTime !=null and patrolTask.startTime !=''">
                            AND spt.create_time &gt;= #{patrolTask.startTime}
                        </if>
                        <if test="patrolTask.endTime !=null and patrolTask.endTime !=''">
                            AND spt.create_time &lt;= #{patrolTask.endTime}
                        </if>
                        <if test="patrolTask.projectId !=null and patrolTask.projectId !='' ">
                            AND spt.project_id = #{patrolTask.projectId}
                        </if>
                        <if test="patrolTask.reservoirName !=null and patrolTask.reservoirName !='' ">
                            AND spt.reservoir_name LIKE CONCAT('%',#{patrolTask.reservoirName},'%')
                        </if>
                        <if test="patrolTask.toUserId != null and patrolTask.toUserId !=''">
                            AND spt.to_user_id = #{patrolTask.toUserId}
                        </if>
                        <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>
                          limit ${current},${size} order by create_time desc
                ) spt
                left join ywxt.sm_patrol_type spt2 on spt.task_type = spt2.id
                left join ywxt.sm_patrol_route route on route.id = spt.route_id
                left join ywxt.blade_user u on u.id = spt.to_user_id
                left join ywxt.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 1=1
                <if test="patrolTask.adCode != null and patrolTask.adCode != '' ">
                    and concat(aab."ad_code",aa."ad_code",ab."ad_code",ac."ad_code") like CONCAT('%',#{patrolTask.adCode},'%')
                </if>
    </select>
    <select id="getPatrolTaskTotal" resultType="java.lang.Long">
        select count(*) from ywxt.sm_patrol_task spt
        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},'%')
        </if>
        <if test="patrolTask.startTime !=null and patrolTask.startTime !=''">
            AND spt.create_time &gt;= #{patrolTask.startTime}
        </if>
        <if test="patrolTask.endTime !=null and patrolTask.endTime !=''">
            AND spt.create_time &lt;= #{patrolTask.endTime}
        </if>
        <if test="patrolTask.projectId !=null and patrolTask.projectId !='' ">
            AND spt.project_id = #{patrolTask.projectId}
        </if>
        <if test="patrolTask.reservoirName !=null and patrolTask.reservoirName !='' ">
            AND spt.reservoir_name LIKE CONCAT('%',#{patrolTask.reservoirName},'%')
        </if>
        <if test="patrolTask.toUserId != null and patrolTask.toUserId !=''">
            AND spt.to_user_id = #{patrolTask.toUserId}
        </if>
        <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 concat(aab."ad_code",aa."ad_code",ab."ad_code",ac."ad_code") like CONCAT('%',#{patrolTask.adCode},'%')
        </if>
    </select>
    <!--获取全部-->
    <select id="getAll" resultType="cn.gistack.sm.patrol.entity.PatrolTask">
        SELECT
@@ -503,10 +606,10 @@
                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 DATE_FORMAT(T2.start_time,'%Y-%m-%d') &gt;= #{vo.startTime}
                AND T2.start_time &gt;= #{vo.startTime}
            </if>
            <if test="vo.endTime !=null and vo.endTime !=''">
                AND DATE_FORMAT(T2.end_time,'%Y-%m-%d') &lt;= #{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},'%')
@@ -523,10 +626,10 @@
                    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 DATE_FORMAT(T3.start_time,'%Y-%m-%d') &gt;= #{vo.startTime}
                    AND T3.start_time &gt;= #{vo.startTime}
                </if>
                <if test="vo.endTime !=null and vo.endTime !=''">
                    AND DATE_FORMAT(T3.end_time,'%Y-%m-%d') &lt;= #{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},'%')
@@ -543,10 +646,10 @@
                    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 DATE_FORMAT(T4.start_time,'%Y-%m-%d') &gt;= #{vo.startTime}
                    AND T4.start_time &gt;= #{vo.startTime}
                </if>
                <if test="vo.endTime !=null and vo.endTime !=''">
                    AND DATE_FORMAT(T4.end_time,'%Y-%m-%d') &lt;= #{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},'%')
@@ -564,14 +667,70 @@
                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 DATE_FORMAT(T1.start_time,'%Y-%m-%d') &gt;= #{vo.startTime}
                AND T1.start_time &gt;= #{vo.startTime}
            </if>
            <if test="vo.endTime !=null and vo.endTime !=''">
                AND DATE_FORMAT(T1.end_time,'%Y-%m-%d') &lt;= #{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>
@@ -589,21 +748,107 @@
            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 (aab."ad_code" = #{vo.adCode} or aa."ad_code" = #{vo.adCode} or ab."ad_code" = #{vo.adCode} or ac."ad_code" = #{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 DATE_FORMAT(T.start_time,'%Y-%m-%d') &gt;= #{vo.startTime}
                AND T.create_time &gt;= #{vo.startTime}
            </if>
            <if test="vo.endTime !=null and vo.endTime !=''">
                AND DATE_FORMAT(T.end_time,'%Y-%m-%d') &lt;= #{vo.endTime}
                AND T.create_time &lt;= #{vo.endTime}
            </if>
            <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
                AND T.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
            </if>
            <if test="vo.state != null and vo.state !=''">
                and T.state = #{vo.state}
            </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.create_time &gt;= #{vo.startTime}
        </if>
        <if test="vo.endTime !=null and vo.endTime !=''">
            AND T.create_time &lt;= #{vo.endTime}
        </if>
        <if test="vo.reservoirName !=null and vo.reservoirName !='' ">
            AND T.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%')
        </if>
    </select>
    <resultMap id="item" type="cn.gistack.sm.patrol.entity.PatrolGroupItem">
        <result property="id" column="itemId"/>
        <result property="itemsName" column="itemsName"/>
        <result property="groupId" column="groupId"/>
        <result property="description" column="description"/>
    </resultMap>
    <resultMap id="groupDTO" type="cn.gistack.sm.patrol.dto.PatrolGroupDTOS">
        <id property="id" column="groupId"/>
        <result property="name" column="groupName"/>
        <collection property="itemList" resultMap="item"/>
    </resultMap>
    <resultMap id="taskDTO" type="cn.gistack.sm.patrol.dto.PatrolTaskDTO">
        <id property="id" column="taskId"/>
        <result property="projectId" column="projectId"/>
        <result property="state" column="state"/>
        <result property="title" column="title"/>
        <result property="content" column="content"/>
        <collection property="groupList"  resultMap="groupDTO"/>
    </resultMap>
    <select id="getTaskDTO" resultMap="taskDTO">
        SELECT
            task.id as taskId,
            task.project_id as projectId,
            task.state as state,
            task.title as title,
            task.content as content,
            spg.id as groupId,
            spg.name as groupName,
            spgi.id as itemId,
            spgi.items_name as itemsName,
            spgi.description as description
        FROM YWXT.SM_PATROL_TASK TASK
                 LEFT JOIN SM_PATROL_GROUP_ITEM SPGI ON task.patrol_group_item_id like CONCAT('%',spgi.id,'%')
                 LEFT JOIN SM_PATROL_GROUP SPG ON SPG.ID = SPGI.GROUP_ID
        WHERE task.is_deleted = 0 and  TASK.ID = #{taskId}
    </select>
    <select id="getMyTask" resultType="cn.gistack.sm.patrol.entity.PatrolTask">
        SELECT
            id,title,project_id,content,state,to_user_id,real_end_time
        from sm_patrol_task spt
        where spt.is_deleted = 0
        <if test="patrolTask.toUserId != null and patrolTask.toUserId != ''">
            AND spt.to_user_id LIKE CONCAT('%',#{patrolTask.toUserId},'%')
        </if>
        <if test="patrolTask.state != null and patrolTask.state != ''">
            AND spt.state = #{patrolTask.state}
        </if>
        order by spt.create_time desc
    </select>
</mapper>