package com.sckw.transport.model.enuma;

import lombok.Getter;

/**
 * @author cxf
 * @desc 异常排序类型枚举
 * @date 2025-12-01
 */
@Getter
public enum ExceptionSortTypeEnum {
    
    /**
     * 按时间排序（任务开始时间倒序）
     */
    TIME_DESC(1, "按时间排序", "exception_time DESC"),
    
    /**
     * 耗时排序（按任务完成耗时倒序）
     */
    DURATION_DESC(2, "耗时排序", "task_duration DESC"),
    
    /**
     * 异常排序（任务过程产生的异常数倒序）
     */
    EXCEPTION_COUNT_DESC(3, "异常排序", "exception_count DESC");
    
    private final Integer code;
    private final String name;
    private final String orderBySql;
    
    ExceptionSortTypeEnum(Integer code, String name, String orderBySql) {
        this.code = code;
        this.name = name;
        this.orderBySql = orderBySql;
    }
    
    public static String getName(Integer code) {
        for (ExceptionSortTypeEnum entity : ExceptionSortTypeEnum.values()) {
            if (entity.getCode().equals(code)) {
                return entity.getName();
            }
        }
        return null;
    }
    
    public static String getOrderBySql(Integer code) {
        for (ExceptionSortTypeEnum entity : ExceptionSortTypeEnum.values()) {
            if (entity.getCode().equals(code)) {
                return entity.getOrderBySql();
            }
        }
        // 默认按时间倒序
        return TIME_DESC.getOrderBySql();
    }
    
    public static ExceptionSortTypeEnum getByCode(Integer code) {
        for (ExceptionSortTypeEnum entity : ExceptionSortTypeEnum.values()) {
            if (entity.getCode().equals(code)) {
                return entity;
            }
        }
        return TIME_DESC;
    }
}
