package org.dromara.elevator.constant;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;

/**
 * 工作状态枚举
 *
 * @author ym
 * @version 1.0.0
 * @date 2024-09-11 15:17
 */
@Getter
@AllArgsConstructor
public enum WorkStateEnum {

    /**
     * 新建
     */
    NEW(1, "新建"),
    /**
     * 接收
     */
    RECEIVE(2, "接收"),
    /**
     * 到场
     */
    ARRIVE(3, "到场"),
    /**
     * 完成
     */
    COMPLETE(4, "完成"),
    /**
     * 评价
     */
    EVALUATE(7, "评价"),
    /**
     * 不通过
     */
    FAILED(8, "不通过"),
    /**
     * 终止
     */
    END(9, "终止");


    /**
     * 状态值
     */
    private final Integer state;
    /**
     * 状态描述
     */
    private final String desc;

    public static String getValueByKey(Integer state) {
        for (WorkStateEnum w : WorkStateEnum.values()) {
            if (w.state.equals(state)) {
                return w.desc;
            }
        }
        return "未知";
    }

    /**
     * 物业统计状态列表
     *
     * @return 物业统计状态列表
     */
    public static List<Integer> tenementWorkStatisticsStateList() {
        return Arrays.asList(COMPLETE.getState(), EVALUATE.getState(), END.getState());
    }

    /**
     * 已完成状态
     *
     * @return
     */
    public static List<Integer> complete() {
        return tenementWorkStatisticsStateList();
    }

    /**
     * 未完成状态
     *
     * @return
     */
    public static List<Integer> unComplete() {
        return Arrays.asList(NEW.getState(), RECEIVE.getState(), ARRIVE.getState());
    }

    /**
     * 详情轨迹状态
     *
     * @return
     */
    public static List<Integer> detailStateList() {
        return Arrays.asList(ARRIVE.getState(), COMPLETE.getState());
    }
}
