package com.prolog.eis.constants.sys;

import com.prolog.framework.utils.MapUtils;

import java.util.Map;

public class SysParamConstants {
    public static final String SYSPRE_FIX = "eis:sys:";
    public static final String LOGIN_URL = "LOGIN_URL";
    /**
     * 调度开关
     */
    public static final String DISPATCH_SWITCH = "DISPATCH_SWITCH";
    /**
     * 销售超时时间
     */
    public static final String SALES_OVERTIME = "SALES_OVERTIME";
    /**
     * 是否计算在途
     */
    public static final String SINGLE_TASK = "SINGLE_TASK";

    /**
     * 自动组任务包开关
     */
    public static final String ASSEMBLY_PACKAGE_SWITCH = "ASSEMBLY_PACKAGE_SWITCH";
    /**
     * 任务包最大订单数
     */
    public static final String TASK_PACKAGE_NUM = "TASK_PACKAGE_NUM";


    /**
     * 拣选单分配开关
     */
    public static final String PICK_ORDER_ASSIGN_SWITCH = "PICK_ORDER_ASSIGN_SWITCH";

    /**
     * WMS优先级从大到校
     * ROUTE优先级从小到达
     * 此时需要通过某个值，减wms优先级两值只差传给route
     */
    public static final String MAX_PRIORITY = "MAX_PRIORITY";

    /**
     * 组单调度开关 0关闭手动组单 1开启自动组单
     */
    public static final String ASSEMBLY_ORDER_SWITCH = "ASSEMBLY_ORDER_SWITCH";

    /**
     * 零发整开关(0:关闭，1：开启)
     */
    public static final String FULL_SWITCH = "FULL_SWITCH";

    /**
     * LED延迟时间
     */
    public static final String LED_DELAY_TIME = "LED_DELAY_TIME";

    /**
     * 入库策略
     * 1：效率优先策略（按照任务数，优先排序 || 排序规则： 任务数 > 货位可用高度 > 货位数）
     * 2：容积优先策略（按照容器高度，优先排序 || 排序规则： 货位可用高度 > 任务数 > 货位数）
     */
    public static final String INOUND_STRATEGY = "INOUND_STRATEGY";

    /**
     * 格口空闲系数(百分比)
     */
    public static final String GIRL_FREE_SIZE = "GIRL_FREE_SIZE";

    /**
     * 格口体积
     */
    public static final String GIRL_VOLUME = "GIRL_VOLUME";

    /**
     * 剩余商品拣货数量（百分比）
     */
    public static final String RESIDUE_ITEM_SIZE = "RESIDUE_ITEM_SIZE";
    /**
     * 触发订单绑定格口间隔时间（分钟）
     */
    public static final String GIRL_BIND_GAP_TIME = "GIRL_BIND_GAP_TIME";

    /**
     * 供包分拣 计划复核数量
     */
    public static final String PLAN_OFFER_QTY = "PLAN_OFFER_QTY";

    /**
     * 上次订单绑定格口时间
     */
    public static final String GIRL_BIND_TIME = "GIRL_BIND_TIME";

    /**
     * 组单调度开关 关闭
     */
    public static final int ASSEMBLY_ORDER_SWITCH_OFF = 0;

    /**
     * 组单调度开关 开启
     */
    public static final int ASSEMBLY_ORDER_SWITCH_ON = 1;


    /**
     * 零发整开关(0:关闭，1：开启)
     */
    public static final int FULL_SWITCH_OFF = 0;

    /**
     * 零发整开关(0:关闭，1：开启)
     */
    public static final int FULL_SWITCH_ON = 1;
    /**
     * 是否计算在途 0否
     */
    public static final int SINGLE_TASK_NO = 0;


    /**
     * 出库调度开关 关闭
     */
    public static final int DISPATCH_SWITCH_OFF = 0;

    /**
     * 出库调度开关 开启
     */
    public static final int DISPATCH_SWITCH_ON = 1;
    /**
     * 补货回库判断是否能入agv阴凉整件托盘库百分比
     */
    public static final String AGV_FULL_WARE_SIZE = "AGV_FULL_WARE_SIZE";
    /**
     * 补货回库托盘剩余数量超过此数量才考虑回二楼agv阴凉库
     */
    public static final String SUPPLY_BACK_CONTAINER_MAX_NUM = "SUPPLY_BACK_CONTAINER_MAX_NUM";

    /**
     * 补货回四项库重新分层二次分配点位
     */
    public static final String SUPPLY_BACK_REASSIGN_LOCATION = "SUPPLY_BACK_REASSIGN_LOCATION";

    /**
     * 补货回四项库绑定入库口二次分配点位
     */
    public static final String SUPPLY_BACK_BIND_LOCATION = "SUPPLY_BACK_BIND_LOCATION";
    /**
     * 补货订单超时多少分钟优先处理
     */
    public static final String SUPPLY_TIMEOUT_PRIORITY = "SUPPLY_TIMEOUT_PRIORITY";
    /**
     * 订单成单率条目数（多少条明细的订单属于成单率高的）
     */
    public static final String ORDER_DONE_RATE = "ORDER_DONE_RATE";
    /**
     * 合托容器存储百分比，数值越大存储越满
     */
    public static final String FULL_VOLUME_SIZE = "FULL_VOLUME_SIZE";

    /**
     * 是否自动复核 1 是
     */
    public static final String AUTO_OFFER = "AUTO_OFFER";

    /**
     * 格口最大容量体积 单位（cm）
     */
    public static final String GRID_MAX_VOLUME = "GRID_MAX_VOLUME";

    /**
     * 货架B品数限制
     */
    public static final String B_ITEM_NUM_LIMIT_PALLET = "B_ITEM_NUM_LIMIT_PALLET";

    /**
     * 货架C品数限制
     */
    public static final String C_ITEM_NUM_LIMIT_PALLET = "C_ITEM_NUM_LIMIT_PALLET";

    /**
     * 货架B品件数限制
     */
    public static final String B_PACK_NUM_LIMIT_PALLET = "B_PACK_NUM_LIMIT_PALLET";

    /**
     * 货架C品件数限制
     */
    public static final String C_PACK_NUM_LIMIT_PALLET = "C_PACK_NUM_LIMIT_PALLET";
    /**
     * 重量开关 0 关闭 1 开启
     */
    public static final String WEIGHT_SWITCH = "WEIGHT_SWITCH";
    /**
     * 拆零发送开关 0 关闭 1 开启
     */
    public static final String DISPATCH_SEND_SWITCH = "DISPATCH_SEND_SWITCH";
    public static final String BC_SUPER_CONVERSION = "BC_SUPER_CONVERSION";
    public static Map<String, Object> ASSEMBLY_TYPE_MAP = MapUtils.put("package", ASSEMBLY_PACKAGE_SWITCH).put("order", ASSEMBLY_ORDER_SWITCH).getMap();

    /**
     * 最大订单波次
     */
    public static final String MAX_WAVE_ORDER_COUNT = "MAX_WAVE_ORDER_COUNT";

    /**
     * 尾波开关
     */
    public static final String TAIL_WAVE_SWITCH = "TAIL_WAVE_SWITCH";

    /**
     * 旧波次调度开关
     */
    public static final String OLD_WAVE_SWITCH = "OLD_WAVE_SWITCH";

    /**
     * 新波次调度开关
     */
    public static final String NEW_WAVE_SWITCH = "NEW_WAVE_SWITCH";

    /**
     * 新波次调度任务下发开关
     */
    public static final String NEW_WAVE_TASK_SWITCH = "NEW_WAVE_TASK_SWITCH";

    /**
     * 新库存预占调度开关
     */
    public static final String NEW_STORE_SWITCH = "NEW_STORE_SWITCH";

    /**
     * 新库格口绑定调度开关
     */
    public static final String NEW_BIND_GRID_SWITCH = "NEW_BIND_GRID_SWITCH";

    /**
     * 新库格口绑定调度任务下发开关
     */
    public static final String NEW_BIND_GRID_TASK_SWITCH = "NEW_BIND_GRID_TASK_SWITCH";

    /**
     * 当前任务剩余多少托盘激活
     */
    public static final String NUMBER_OF_TRAY_TASKS = "NUMBER_OF_TRAY_TASKS";

    /**
     * AGV拆零四向库库存预占开关
     */
    public static final String SXK_TO_AGV_STOCK_SWITCH = "SXK_TO_AGV_STOCK_SWITCH";


    /**
     * 单个波次最大绑定订单数
     */
    public static final String WAVE_BIND_MAX_ORDER_COUNT = "WAVE_BIND_MAX_ORDER_COUNT";

    /**
     * 总格口数
     */
    public static final int TOTAL_GRID_COUNT = 120;

    /**
     * 验证格口是否绑定
     */
    public static final String CHECK_GRID_BINDING_SWITCH = "CHECK_GRID_BINDING_SWITCH";

}
