fuliqi
2024-08-09 b04753affc29f1042d0eb75b0af87824a0f4a8aa
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -13,6 +13,7 @@
        <result column="yw_result" property="ywResult"/>
        <result column="yw_condition" property="ywCondition"/>
        <result column="yw_check_result" property="ywCheckResult"/>
        <result column="overtime" property="overtime"/>
    </resultMap>
    <select id="page" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
@@ -22,10 +23,10 @@
            p.yw_person_name
        FROM
            t_work_order wo
        LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = '0'
        LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = '0'
        LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
        LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0
        where
            wo.deleted = '0'
            wo.deleted = 0
            <if test="query.workOrderNo != null and query.workOrderNo != ''">
                AND wo.work_order_no = #{query.workOrderNo}
            </if>
@@ -43,22 +44,127 @@
    <select id="distributePage" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
        SELECT
        wo.*,
        u.unit_name,
        p.yw_person_name
            wo.*,
            u.unit_name,
            p.yw_person_name,
            yp.point_tag,
            odr.create_time as distributeTime,
            su.nick_name as realName
        FROM
        t_work_order wo
        LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = '0'
        LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = '0'
        where
        wo.deleted = '0'
        <if test="query.unitId != null">
            AND wo.unit_id = #{query.unitId}
        </if>
        <if test="query.status != null and query.status != ''">
            AND wo.status = #{query.status}
        </if>
            t_work_order wo
                LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
                LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0
                INNER JOIN t_yw_point yp ON yp.serial_number = wo.serial_number AND yp.deleted = 0
                LEFT JOIN t_work_order_distribute_record odr ON odr.work_order_id = wo.id AND odr.deleted = 0
                LEFT JOIN sys_user su ON su.user_id = odr.user_id
        WHERE
            wo.deleted = 0
            <if test="query.unitId != null">
                AND wo.unit_id = #{query.unitId}
            </if>
            <if test="query.status != null and query.status != ''">
                AND wo.status = #{query.status}
            </if>
        ORDER BY wo.create_time DESC
    </select>
    <select id="handlingWorkOrderList" resultType="com.ycl.platform.domain.vo.YwPointJobVO">
        SELECT
             wo.id,
             wod.create_time,
             yp.point_tag
        FROM
             t_work_order wo
                INNER JOIN t_yw_point yp ON yp.serial_number = wo.serial_number AND yp.deleted = 0
                INNER JOIN t_work_order_distribute_record wod ON wod.work_order_id = wo.id
        WHERE
             wo.status = 'DISTRIBUTED' AND wo.deleted = 0
    </select>
    <select id="screenWorkOrder" resultType="com.ycl.platform.domain.vo.screen.ScreenWorkOrderVO">
        SELECT
            count(*) AS total,
            SUM(CASE WHEN status = 'AUDITING_SUCCESS' THEN 1 ELSE 0 END) AS totalHandler,
            SUM(CASE WHEN status = 'DISTRIBUTED' THEN 1 ELSE 0 END) AS totalNotFinish
        FROM
            t_work_order
    </select>
    <select id="home" resultType="java.util.Map">
        <if test="dateType == 'month'">
            -- 月工单数
            SELECT
                u.unit_name AS name,
                CONCAT(MONTH(w.create_time), '月') AS dateType,
                COUNT(IF(status = 'AUDITING_SUCCESS', 1, NULL)) AS num1,
                COUNT(IF(status = 'DISTRIBUTED', 1, NULL)) AS num2,
                COUNT(IF(status = 'YW_HANDLE', 1, NULL)) AS num3
            FROM t_work_order w
            LEFT JOIN t_yw_unit u ON w.unit_id = u.id
            WHERE DATE_FORMAT(w.create_time, '%Y') = DATE_FORMAT(NOW(), '%Y')
                AND w.deleted = 0 AND unit_id = #{unitId}
            GROUP BY dateType
        </if>
        <if test="dateType == 'week'">
            -- 周工单数
            SELECT
                u.unit_name AS name,
                CONCAT('周', WEEKDAY(w.create_time)) AS dateType,
                COUNT(IF(status = 'AUDITING_SUCCESS', 1, NULL)) AS num1,
                COUNT(IF(status = 'DISTRIBUTED', 1, NULL)) AS num2,
                COUNT(IF(status = 'YW_HANDLE', 1, NULL)) AS num3
            FROM t_work_order w
            LEFT JOIN t_yw_unit u ON w.unit_id = u.id
            WHERE
            w.create_time BETWEEN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) AND DATE_ADD(CURDATE(), INTERVAL (6 - WEEKDAY(CURDATE())) DAY)
               AND w.deleted = 0 AND unit_id = #{unitId}
            GROUP BY dateType
        </if>
        <if test="dateType == 'day'">
            -- 日工单数
            SELECT
                u.unit_name AS name,
                DATE_FORMAT(w.create_time, '%d') AS dateType,
                COUNT(IF(status = 'AUDITING_SUCCESS', 1, NULL)) AS num1,
                COUNT(IF(status = 'DISTRIBUTED', 1, NULL)) AS num2,
                COUNT(IF(status = 'YW_HANDLE', 1, NULL)) AS num3
            FROM t_work_order w
            LEFT JOIN t_yw_unit u ON w.unit_id = u.id
            WHERE
                DATE_FORMAT(w.create_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE())
              AND w.deleted = 0 AND unit_id = #{unitId}
            GROUP BY dateType
        </if>
    </select>
    <select id="workOrderTotal" resultType="com.ycl.platform.domain.vo.screen.WorkOrderTotalVO">
        SELECT
            COUNT(*) AS totalNum,
            COUNT(IF(w.status = 'DISTRIBUTED', 1, NULL)) + COUNT(IF(w.status = 'AUDITING_FAIL', 1, NULL)) + COUNT(IF(w.status = 'WAIT_DISTRIBUTE', 1, NULL)) AS todoNum,
            COUNT(IF(w.status = 'YW_HANDLE', 1, NULL)) + COUNT(IF(w.status = 'AUDITING_SUCCESS', 1, NULL)) + COUNT(IF(w.status = 'AUDITING', 1, NULL)) AS doneNum
        FROM t_work_order w
        LEFT JOIN t_yw_point p ON w.serial_number = p.serial_number AND p.deleted = 0
        WHERE w.deleted = 0
        <if test="dataScope == 1"> AND p.province_tag = 'province' </if>
        <if test="deptId != null"> AND p.dept_id = #{deptId} </if>
    </select>
    <select id="workOrderRegion" resultType="com.ycl.platform.domain.vo.screen.WorkOrderRegionVO">
        SELECT
            d.area,
            COUNT(IF(w.status = 'DISTRIBUTED', 1, NULL)) + COUNT(IF(w.status = 'AUDITING_FAIL', 1, NULL)) + COUNT(IF(w.status = 'WAIT_DISTRIBUTE', 1, NULL)) AS todoNum,
            COUNT(IF(w.status = 'YW_HANDLE', 1, NULL)) + COUNT(IF(w.status = 'AUDITING_SUCCESS', 1, NULL)) + COUNT(IF(w.status = 'AUDITING', 1, NULL)) AS doneNum
        FROM
            sys_dept d
        LEFT JOIN t_yw_point p ON p.dept_id = d.dept_id AND p.deleted = 0
        LEFT JOIN t_work_order w ON w.serial_number = p.serial_number AND w.deleted = 0
        WHERE d.del_flag = 0 AND d.area IS NOT NULL
        <if test="dataScope == 1"> AND p.province_tag = 'province' </if>
        <if test="deptId != null"> AND p.dept_id = #{deptId} </if>
        GROUP BY d.area, d.dept_id
        ORDER BY d.dept_id
    </select>
</mapper>