ExceptionWorkorderMapper.xml 6.01 KB
<?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.apple.erp.mapper.ExceptionWorkorderMapper">

    <!-- 分页查询异常工单列表 -->
    <select id="selectExceptionWorkorderPage" resultType="com.apple.erp.dto.ExceptionWorkorderRes">
        SELECT 
            ew.workorder_id,
            ew.workorder_no,
            ew.order_no,
            ew.dealer_code,
            ew.dealer_name,
            ew.exception_type,
            CASE ew.exception_type
                WHEN 1 THEN '逻辑验证异常'
                WHEN 2 THEN '源头验证异常'
                WHEN 3 THEN '交叉验证异常'
                ELSE '未知类型'
            END AS exception_type_name,
            ew.severity_level,
            CASE ew.severity_level
                WHEN 1 THEN '高'
                WHEN 2 THEN '中'
                WHEN 3 THEN '低'
                ELSE '未知'
            END AS severity_level_name,
            ew.workorder_status,
            CASE ew.workorder_status
                WHEN 1 THEN '待处理'
                WHEN 2 THEN '处理中'
                WHEN 3 THEN '已解决'
                WHEN 4 THEN '已关闭'
                ELSE '未知状态'
            END AS workorder_status_name,
            ew.create_time,
            ew.expect_complete_time,
            ew.handler_user,
            ew.exception_desc,
            ew.handle_suggest,
            ew.data_source,
            ew.create_by,
            ew.update_by,
            ew.update_time
        FROM t_exception_workorder ew
        <where>
            ew.del_flag = '0'
            <if test="query.workorderNo != null and query.workorderNo != ''">
                AND ew.workorder_no LIKE CONCAT('%', #{query.workorderNo}, '%')
            </if>
            <if test="query.orderNo != null and query.orderNo != ''">
                AND ew.order_no LIKE CONCAT('%', #{query.orderNo}, '%')
            </if>
            <if test="query.dealerCode != null and query.dealerCode != ''">
                AND ew.dealer_code = #{query.dealerCode}
            </if>
            <if test="query.dealerName != null and query.dealerName != ''">
                AND ew.dealer_name LIKE CONCAT('%', #{query.dealerName}, '%')
            </if>
            <if test="query.workorderStatus != null">
                AND ew.workorder_status = #{query.workorderStatus}
            </if>
            <if test="query.exceptionType != null">
                AND ew.exception_type = #{query.exceptionType}
            </if>
            <if test="query.severityLevel != null">
                AND ew.severity_level = #{query.severityLevel}
            </if>
            <if test="query.handlerUser != null and query.handlerUser != ''">
                AND ew.handler_user LIKE CONCAT('%', #{query.handlerUser}, '%')
            </if>
            <if test="query.startTime != null">
                AND ew.create_time >= #{query.startTime}
            </if>
            <if test="query.endTime != null">
                AND ew.create_time &lt;= #{query.endTime}
            </if>
        </where>
        ORDER BY ew.create_time DESC
    </select>

    <!-- 根据工单ID获取异常工单详情 -->
    <select id="selectExceptionWorkorderDetail" resultType="com.apple.erp.dto.ExceptionWorkorderRes">
        SELECT 
            ew.workorder_id,
            ew.workorder_no,
            ew.order_no,
            ew.dealer_code,
            ew.dealer_name,
            ew.exception_type,
            CASE ew.exception_type
                WHEN 1 THEN '逻辑验证异常'
                WHEN 2 THEN '源头验证异常'
                WHEN 3 THEN '交叉验证异常'
                ELSE '未知类型'
            END AS exception_type_name,
            ew.severity_level,
            CASE ew.severity_level
                WHEN 1 THEN '高'
                WHEN 2 THEN '中'
                WHEN 3 THEN '低'
                ELSE '未知'
            END AS severity_level_name,
            ew.workorder_status,
            CASE ew.workorder_status
                WHEN 1 THEN '待处理'
                WHEN 2 THEN '处理中'
                WHEN 3 THEN '已解决'
                WHEN 4 THEN '已关闭'
                ELSE '未知状态'
            END AS workorder_status_name,
            ew.create_time,
            ew.expect_complete_time,
            ew.handler_user,
            ew.exception_desc,
            ew.handle_suggest,
            ew.data_source,
            ew.create_by,
            ew.update_by,
            ew.update_time
        FROM t_exception_workorder ew
        WHERE ew.workorder_id = #{workorderId} AND ew.del_flag = '0'
    </select>

    <!-- 获取异常工单统计信息 -->
    <select id="selectExceptionWorkorderStats" resultType="com.apple.erp.dto.ExceptionWorkorderRes">
        SELECT 
            'total' AS workorder_no,
            COUNT(*) AS workorder_id,
            SUM(CASE WHEN workorder_status = 1 THEN 1 ELSE 0 END) AS exception_type,
            SUM(CASE WHEN workorder_status = 2 THEN 1 ELSE 0 END) AS severity_level,
            SUM(CASE WHEN workorder_status = 3 THEN 1 ELSE 0 END) AS workorder_status,
            SUM(CASE WHEN workorder_status = 4 THEN 1 ELSE 0 END) AS handler_user,
            SUM(CASE WHEN severity_level = 1 THEN 1 ELSE 0 END) AS exception_desc,
            SUM(CASE WHEN severity_level = 2 THEN 1 ELSE 0 END) AS handle_suggest,
            SUM(CASE WHEN severity_level = 3 THEN 1 ELSE 0 END) AS data_source
        FROM t_exception_workorder
        WHERE del_flag = '0'
    </select>

    <!-- 批量更新工单状态 -->
    <update id="batchUpdateWorkorderStatus">
        UPDATE t_exception_workorder 
        SET workorder_status = #{workorderStatus},
            handler_user = #{handlerUser},
            update_time = NOW()
        WHERE workorder_id IN
        <foreach collection="workorderIds" item="workorderId" open="(" separator="," close=")">
            #{workorderId}
        </foreach>
        AND del_flag = '0'
    </update>

</mapper>