龚焕茏
2024-08-02 5e859a25ddf7d61753e5849b3c6ef36cb0cbf68c
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -90,4 +90,53 @@
            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>
</mapper>