using System.Collections.Generic;

namespace Khd.Core.Domain.Dto.webapi
{
    //public class genAgvSchedulingTask
    //{
    //    public List<MesProdPlan> DATA { get; set; }
    //}
    public class RequestAGVTaskDto
    {
        /// <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>
        /// 任务类型，
        /// 业务流程
        /// 5层柜体来料验收拆分	     柜体物料    提升机输送线对接位-验收拆分区 WMS F501	2
        /// 5层柜体来料入库           柜体物料    验收拆分区-原材料周转区       WMS F502	2
        /// 5层辅料立体库物料入库      辅料料箱    回转输送线回库口-辅料库货架   WMS F503	1
        /// 5层辅料立体库分拣出库      辅料料箱    辅料库货架-回转输送线出库口   WMS F504	1
        /// 5层辅料立体库分拣回库      辅料料箱    回转输送线回库口-辅料库货架   WMS F505	1
        /// 5层辅料配送流程           辅料料箱    物料分拣位-装配区领料工位      WMS F506 空值
        /// 5层背板安装区物料配送      柜体物料    原材料周转区-背板安装区       WMS F507	2
        /// 5层半成品下线             半成品柜    背板安装区-半成品周转区        WMS F508	2
        /// 5层半成品检验             半成品柜    半成品周转区-检测台          WMS F509	2
        /// 5层成品柜体入库           成品柜体    检验台-成品区                  WMS F510	2
        /// 5层成品柜体出库           成品柜体    成品区-提升机输送线对接点    WMS F511	2
        /// </summary>
        public string taskTyp { get; set; }
        /// <summary>
        /// 容器类型（叉车/CTU专用）叉车项目必传
        /// </summary>
        public string ctnrTyp { get; set; }
        /// <summary>
        /// 容器编号（叉车/CTU专用）
        /// </summary>
        public string ctnrCode { get; set; }
        /// <summary>
        /// 容器数量（叉车堆叠专用），默认值1，仅记录堆叠的数量不记录堆叠的每个容器号
        /// </summary>
        public string ctnrNum { get; set; }
        /// <summary>
        /// 任务模式 0-普通move 1-出库move 2-入库move 3-移库move
        /// </summary>
        public string taskMode { get; set; }
        /// <summary>
        /// 工作位，一般为机台或工作台位置，与RCS-2000端配置的位置名称一致, 工作位名称为字母\数字\或组合, 不超过32位。
        /// </summary>
        public string wbCode { get; set; }
        /// <summary>
        /// 位置路径：AGV关键路径位置集合，与任务类型中模板配置的位置路径一一对应。待现场地图部署、配置完成后可获取。
        /// </summary>
        public List<Position> positionCodePath { get; set; }
        /// <summary>
        /// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ，不指定方向可以为空
        /// </summary>
        public string podDir { get; set; }
        /// <summary>
        /// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ，不指定方向可以为空
        /// </summary>
        public string podTyp { get; set; }
        /// <summary>
        /// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ，不指定方向可以为空
        /// </summary>
        public string podCode { get; set; }
        /// <summary>
        /// 物料批次或货架上的物料唯一编码,
        /// </summary>
        public string materialLot { get; set; }
        /// <summary>
        /// 物料类型, 仅移载机器人协议专用必填, 其它车型任务不填
        /// </summary>
        public string materialType { 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>
        /// 设备类型
        /// </summary>
        public string agvTyp { get; set; }
        /// <summary>
        /// 区域/策略中挑选货架以及根据物料批次挑选货架时的先进先出规则
        /// </summary>
        public string positionSelStrategy { get; set; }
        public string data { get; set; }
    }
    public class Position
    {
        /// <summary>
        /// 货架编号，不指定货架可以为空
        /// </summary>
        public string positionCode { get; set; }
        /// <summary>
        /// 货架类型, 传空时表示随机找个货架
        /// </summary>
        public string type { get; set; }

    }

    public class ReponseMessage
    {
        /// <summary>
        /// 返回码
        /// </summary>
        public string code { get; set; }
        /// <summary>
        /// 返回消息,成功或其他
        /// </summary>
        public string message { get; set; }
        /// <summary>
        /// 请求编号
        /// </summary>
        public string reqCode { get; set; }
        /// <summary>
        /// 自定义返回（返回任务单号）
        /// </summary>
        public string data { get; set; }
    }
}
