package com.ruoyi.base.constant;

/**
 * Created by IntelliJ IDEA.
 * User: andy.qu
 * Date: 2022/3/9
 */
public class Constant {
    public static final String CUSTOMER_ID = "default";
    public static final Long WAREHOUSE_ID = 1L;
    /**
     * 入库缓存位
     */
    public static final Long LOC_STAGE_CACHE = 99997l;

    /**
     * 出库缓存位
     */
    public static final Long LOC_SORTATION_CACHE = 99998l;

    /**
     * 中间缓存位
     * AGV作业搬运任务时候库存的虚拟库位
     */
    public static final Long LOC_MIDDLE_CACHE = 99999l;


    //region WCS智库 工单下发
//    public static final String WCS_TASK_URL = "http://192.168.100.10:8082/gsjc/wms/bill";
    public static final String WCS_TASK_URL = "http://localhost:8008/test/wcs/test1";
    //出库任务下发
//    public static final String WCS_TASK_URL1 = "http://192.168.100.10:8082/gsjc/wms/out/task";
    public static final String WCS_TASK_URL1 = "http://localhost:8008/test/wcs/test2";

    /**
     * 产线编号
     */
    public enum PRODUCTION_LINE_SITE {
        L1(1),
        L2(2),
        L3(3),
        L4(4),
        L5(5),
        L6(6);
        private Integer value;

        PRODUCTION_LINE_SITE(Integer value) {
            this.value = value;
        }

        public Integer getValue() {
            return value;
        }

        /**
         * 根据值获得枚举类型 switch
         *
         * @param value
         * @return
         */
        public static PRODUCTION_LINE_SITE getByValue(String value) {
            for (PRODUCTION_LINE_SITE code : values()) {
                if (code.getValue().equals(value)) {
                    return code;
                }
            }
            return null;
        }
    }


    //endregion

    /**
     * 桶装入库
     */
    public static final long IN_FLOW_ID = 1;
    /**
     * 桶装出库
     */
    public static final long OUT_FLOW_ID = 2;

    /**
     * 是否
     */
    public enum IS_YES {
        /**
         * 是
         */
        Y("1"),
        /**
         * 否
         */
        N("0");

        private String value;

        IS_YES(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    /**
     * 入库单据类型
     */
    public enum ASN_TYP {
        /**
         * 袋装入库
         */
        DZ("DZ", 1),
        /**
         * 桶装入库
         */
        TZ("TZ", 1),
        /**
         * 袋装越库
         */
        YK("YK", 2);

        private String value;
        /**
         * wcs对应编号
         */
        private Integer value1;

        ASN_TYP(String value, Integer value1) {
            this.value = value;
            this.value1 = value1;
        }

        public String getValue() {
            return value;
        }

        public Integer getValue1() {
            return value1;
        }

        public static ASN_TYP getByValue(String value) {
            for (ASN_TYP code : values()) {
                if (code.getValue().equals(value)) {
                    return code;
                }
            }
            return null;
        }

        public static ASN_TYP getByValue1(String value1) {
            for (ASN_TYP code : values()) {
                if (code.getValue1().equals(value1)) {
                    return code;
                }
            }
            return null;
        }
    }

    /**
     * 出库单据类型
     */
    public enum ORDER_TYP {
        /**
         * 袋装出库
         */
        DZ("DZ", 3),
        /**
         * 桶装出库
         */
        TZ("TZ", 3),
        /**
         * 袋装越库
         */
        YK("YK", 2);

        private String value;

        /**
         * wcs对应编号
         */
        private Integer value1;

        ORDER_TYP(String value, Integer value1) {
            this.value = value;
            this.value1 = value1;
        }

        public String getValue() {
            return value;
        }

        public Integer getValue1() {
            return value1;
        }

        public static ORDER_TYP getByValue(String value) {
            for (ORDER_TYP code : values()) {
                if (code.getValue().equals(value)) {
                    return code;
                }
            }
            return null;
        }

        public static ORDER_TYP getByValue1(String value1) {
            for (ORDER_TYP code : values()) {
                if (code.getValue1().equals(value1)) {
                    return code;
                }
            }
            return null;
        }
    }

    /**
     * 入库单状态
     */
    public enum ASN_STS {
        /**
         * 订单创建
         */
        STS00("00"),

        STS10("10"),
        STS20("20"),
        /**
         * 部分收货
         */
        STS30("30"),
        /**
         * 完全收货
         */
        STS40("40"),
        /**
         * 部分上架
         */
        STS50("50"),
        /**
         * 完全上架
         */
        STS60("60"),
        /**
         * 部分验收
         */
        STS70("70"),
        /**
         * 完全验收
         */
        STS80("80"),
        /**
         * 收货取消
         */
        STS90("90"),
        /**
         * ASN关闭
         */
        STS99("99");

        private String value;

        ASN_STS(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    /**
     * 出库状态
     */
    public enum ORDER_STS {
        /**
         * 订单创建
         */
        STS00("00"),
        /**
         * 同步成功
         */
        STS10("10"),
        /**
         * 完全分配
         */
        STS20("20"),
        /**
         * 部分拣货
         */
        STS30("30"),
        /**
         * 拣货完成
         */
        STS40("40"),
        /**
         * 取消
         */
        STS90("90"),
        /**
         * 关闭
         */
        STS99("99");

        private String value;

        ORDER_STS(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    /**
     * 库区
     */
    public enum LOCATION_ZONE {

        /**
         * 立体库一层
         */
        INV_1("1"),
        /**
         * 立体库二层
         */
        INV_2("2"),
        /**
         * 立体库三层
         */
        INV_3("3"),
        /**
         * 桶装入库缓存区
         */
        TZ_ASN_CACHE("4");

        private String value;

        LOCATION_ZONE(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }

        /**
         * 根据值获得枚举类型 switch
         *
         * @param value
         * @return
         */
        public static LOCATION_ZONE getByValue(String value) {
            for (LOCATION_ZONE code : values()) {
                if (code.getValue().equals(value)) {
                    return code;
                }
            }
            return null;
        }

    }

    /**
     * 库存状态
     */
    public enum INV_STS {
        /**
         * 合格
         */
        HG("90"),
        /**
         * 不合格
         */
        BHG("99");

        private String value;

        INV_STS(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    /**
     * 储位状态
     */
    public enum STOCK_STATUS {
        /**
         * 空闲
         */
        STOCK00("00"),
        /**
         * 占用
         */
        STOCK10("10"),
        /**
         * 封存
         */
        STOCK80("80");

        private String value;

        STOCK_STATUS(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    /**
     * NDC任务类型
     */
    public enum TASK_BUSINESS_TYPE {
        /**
         * 01叉货任务
         */
        TASK_01("01"),
        /**
         * 60暂停点
         */
        TASK_60("60"),
        /**
         * 90暂停重启
         */
        TASK_90("90"),
        /**
         * 电量
         */
        TASK_POWER("power"),
        /**
         * m
         */
        TASK_m("m"),
        /**
         * 暂停
         */
        TASK_03("03"),
        /**
         * 快速门开门成功反馈
         */
        TASK_164("164"),

        /**
         * 结束充电机
         */
        TASK_101("101");

        private String value;

        TASK_BUSINESS_TYPE(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    /**
     * 任务类型
     */
    public enum TASK_TYPE {
        /**
         * 转发任务
         */
        FORWARD("FW");
        private String value;

        TASK_TYPE(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    /**
     * 任务状态 State
     */
    public enum TASK_STS {
        /**
         * 下发AMS
         */
        TASK0(0),
        /**
         * 开始
         */
        TASK1(1),
        /**
         * 完成
         */
        TASK2(2),
        /**
         * 开始取货
         */
        TASK3(3),
        /**
         * 取货完成
         */
        TASK4(4),
        /**
         * 开始卸货
         */
        TASK5(5),
        /**
         * 卸货完成
         */
        TASK6(6),
        /**
         * 取消
         */
        TASK7(7),
        /**
         * 空叉取消
         */
        TASK8(8),
        /**
         * 队列等待
         */
        TASK9(9),
        /**
         * 已下发
         */
        TASK10(10);


        private Integer value;

        public Integer getValue() {
            return value;
        }

        TASK_STS(Integer value) {
            this.value = value;
        }
    }

    public enum ZONE_TYPE {

        /**
         * 成品区
         */
        STORAGE(1l),

        /**
         * 入库区
         */
        IN_CACHE(2l),

        /**
         * 出库区
         */
        OUT_CACHE(3l),

        /**
         * 接驳位(出入库)
         */
        TRANSIT(4l);

        private Long value;

        ZONE_TYPE(Long value) {
            this.value = value;
        }

        public Long getValue() {
            return value;
        }
    }

    /**
     * 事务类型
     */
    public enum Transaction_TYPE {
        /**
         * 收货
         */
        RC("RC"),
        /**
         * 上架
         */
        PA("PA"),
        /**
         * 拣货
         */
        PK("PK"),
        /**
         * 调整
         */
        OB("OB"),
        /**
         * 盘点
         */
        CO("CO"),
        /**
         * 验收
         */
        QC("QC");

        private String value;

        Transaction_TYPE(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    /**
     * 质量状态
     */
    public enum QUALITY_STATUS {
        /***
         * 合格
         */
        HG("HG"),
        /***
         * 不合格
         */
        BHG("BHG"),
        /***
         * 待检
         */
        DJ("DJ");

        private String value;

        QUALITY_STATUS(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

}