namespace WCS.WorkEngineering.WebApi.Models.AGV.Request
{
    /// <summary>
    ///  生成任务单接口
    /// </summary>
    public class GenAgvSchedulingTaskRequest
    {
        /// <summary>
        /// 请求编号，每个请求都要一个唯一编号， 同一个请求重复提交， 使用同一编号。
        /// </summary>
        public string reqCode { get; set; }

        /// <summary>
        /// 请求时间截 格式: “yyyy-MM-dd HH:mm:ss”
        /// </summary>
        public string reqTime { get; set; }

        /// <summary>
        /// 客户端编号，如PDA，HCWMS等
        /// </summary>
        public string clientCode { get; set; }

        /// <summary>
        /// 令牌号, 由调度系统颁发
        /// </summary>
        public string tokenCode { get; set; }

        /// <summary>
        /// 任务类型
        /// </summary>
        public string taskTyp { get; set; }

        /// <summary>
        /// 容器类型（叉车/CTU专用）叉车项目必传
        /// </summary>
        public string ctnrTyp { get; set; }

        /// <summary>
        ///  RFID
        /// </summary>
        public string ctnrCode { get; set; }

        /// <summary>
        /// 接口名称
        /// </summary>
        public string interfaceName { get; set; }

        /// <summary>
        /// 任务模式
        /// </summary>
        public string taskMode { get; set; }

        /// <summary>
        ///  合金任务模板
        /// </summary>
        public string hjTaskTy { get; set; }

        /// <summary>
        /// 工作位
        /// </summary>
        public string wbCode { get; set; }

        /// <summary>
        /// 位置路径
        /// </summary>
        public List<positionCodeClass> positionCodePath { get; set; }

        /// <summary>
        ///  位置类型
        /// </summary>
        public string type { get; set; }

        /// <summary>
        /// 货架编号
        /// </summary>
        public string podCode { get; set; }

        /// <summary>
        /// “180”,”0”,”90”,”-90”
        /// </summary>
        public string podDir { get; set; }

        /// <summary>
        /// 货架类型, 传空时表示随机找个货架
        /// </summary>
        public string podTyp { get; set; }

        /// <summary>
        /// 物料批次或货架上的物料唯一编码
        /// </summary>
        public string materialLot { get; set; }

        /// <summary>
        /// 优先级，从（1~127）级，最大优先级最高
        /// </summary>
        public string priority { get; set; }

        /// <summary>
        /// 任务单号,选填, 不填系统自动生成，UUID小于等于64位
        /// </summary>
        public string taskCode { get; set; }

        /// <summary>
        /// AGV编号，填写表示指定某一编号的AGV执行该任务
        /// </summary>
        public string agvCode { get; set; }

        /// <summary>
        /// 组编号
        /// </summary>
        public string groupId { get; set; }

        /// <summary>
        /// 自定义字段.JSON格式
        /// </summary>
        public string data { get; set; }
    }

    /// <summary>
    ///  AGV生成任务单请求TaskTyp对应枚举
    /// </summary>
    public class GenAgvSchedulingTaskRequestTaskTyp
    {
        /// <summary>
        ///  厂内货架搬运
        /// </summary>
        public string 厂内货架搬运 { get; set; } = "F01";

        /// <summary>
        ///  厂内货架空满交换
        /// </summary>
        public string 厂内货架空满交换 { get; set; } = "F02";

        /// <summary>
        ///  辊筒搬运接驳
        /// </summary>
        public string 辊筒搬运接驳 { get; set; } = "F03";

        /// <summary>
        ///  厂内货架出库AGV待命
        /// </summary>
        public string 厂内货架出库AGV待命 { get; set; } = "F04";

        /// <summary>
        ///  旋转货架
        /// </summary>
        public string 旋转货架 { get; set; } = "F05";

        /// <summary>
        ///  厂内电梯任务
        /// </summary>
        public string 厂内电梯任务 { get; set; } = "F06";

        /// <summary>
        ///  以下为叉车专用任务类型高位货架到工作台
        /// </summary>
        public string 以下为叉车专用任务类型高位货架到工作台 { get; set; } = "F11";

        /// <summary>
        ///  工作台到高位货架
        /// </summary>
        public string 工作台到高位货架 { get; set; } = "F12";

        /// <summary>
        ///  工作台到巷道
        /// </summary>
        public string 工作台到巷道 { get; set; } = "F14";

        /// <summary>
        ///  高位货架到工作台接驳
        /// </summary>
        public string 高位货架到工作台接驳 { get; set; } = "F15";

        /// <summary>
        ///  工作台到高位货架接驳
        /// </summary>
        public string 工作台到高位货架接驳 { get; set; } = "F16";

        /// <summary>
        ///  巷道到工作台接驳
        /// </summary>
        public string 巷道到工作台接驳 { get; set; } = "F17";

        /// <summary>
        ///  工作台到巷道接驳
        /// </summary>
        public string 工作台到巷道接驳 { get; set; } = "F18";

        /// <summary>
        ///  叉车电梯主任务
        /// </summary>
        public string 叉车电梯主任务 { get; set; } = "F20";
    }

    public class positionCodeClass
    {
        public string positionCode { get; set; }
        public string type { get; set; }
    }
}
