Base_SubTask.cs 6.87 KB
using RCS.Model.Comm;
using RCS.Model.Entity.PrimaryKey;
using System.ComponentModel.DataAnnotations.Schema;
using System.Threading.Tasks;



namespace RCS.Model.Entity
{
    [Table("t_base_subtask")]

    public class Base_SubTask : IdEntity, IComparable
    {
        #region 字段
        private EnumMsg.RequestType requestType;
        private List<Base_PathPoint> pathPointList = new List<Base_PathPoint>();
        private ushort height;
        private int waitTime;
        private DateTime? endTime;
        private DateTime? beginTime;
        private EnumMsg.SubTaskState subTaskState;
        private bool isCarry;
        private string endBarcode;
        private string startBarcode;
        private string taskNo;
        private uint subTaskNo;
        private int serialNo;
        private int taskId;
        private EnumMsg.ActionType actionType;
        private EnumMsg.TaskStage? taskStage;
        private Base_Point endPoint;
        private Config_TaskSplit? configTaskSplit;
        #endregion

        /// <summary>
        /// 主任务ID
        /// </summary>
        public int TaskId
        {
            get => taskId;
            set
            {
                taskId = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 任务模板序号
        /// </summary>
        public int SerialNo
        {
            get => serialNo;
            set
            {
                serialNo = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 子任务号
        /// </summary>
        public uint SubTaskNo
        {
            get => subTaskNo;
            set
            {
                subTaskNo = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 主任务号
        /// </summary>
        public string TaskNo
        {
            get => taskNo;
            set
            {
                taskNo = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 任务类型
        /// </summary>
        public EnumMsg.ActionType ActionType
        {
            get => actionType;
            set
            {
                actionType = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 起点地标编码
        /// </summary>
        public string? StartBarcode
        {
            get => startBarcode;
            set
            {
                startBarcode = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 终点地标编码
        /// </summary>
        public string? EndBarcode
        {
            get => endBarcode;
            set
            {
                endBarcode = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 子任务起点信息
        /// </summary>
        [NotMapped]
        public Base_Point StartPoint { get; set; }

        /// <summary>
        /// 子任务终点信息
        /// </summary>
        [NotMapped]
        public Base_Point EndPoint
        {
            get { return endPoint; }
            set
            {
                endPoint = value;
                endBarcode = endPoint?.Barcode ?? "";
            }
        }

        /// <summary>
        /// 是否需要小车载货
        /// </summary>
        public bool IsCarry
        {
            get => isCarry;
            set
            {
                isCarry = value;
                NotifyPropertyChanged();
            }
        }

        public EnumMsg.TaskStage? TaskStage
        {
            get => taskStage;
            set { taskStage = value; NotifyPropertyChanged(); }
        }
        [NotMapped]
        public Config_TaskSplit? ConfigTaskSplit
        {
            get { return configTaskSplit; }
            set
            {
                configTaskSplit = value;
                ConfigTaskSplitID = configTaskSplit?.ID;
            }
        }
        public int? ConfigTaskSplitID { get; set; }
        /// <summary>
        /// 请求类型
        /// </summary>
        public EnumMsg.RequestType RequestType
        {
            get => requestType;
            set
            {
                requestType = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 子任务路径点集合
        /// </summary>
        [NotMapped]
        public List<Base_PathPoint> PathPointList
        {
            get => pathPointList;
            set
            {
                pathPointList = value;
                NotifyPropertyChanged();
            }
        }

        [NotMapped]
        public string PathPointStr
        {
            get => pathPointList == null ? "" : string.Join(",", pathPointList.Select(x => x.Barcode));
        }

        [NotMapped]
        public List<Base_Point> DisablePoints { get; set; } = [];
        /// <summary>
        /// 任务状态
        /// </summary>
        public EnumMsg.SubTaskState SubTaskState
        {
            get => subTaskState;
            set
            {
                subTaskState = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 任务的开始时间
        /// </summary>
        public DateTime? BeginTime
        {
            get => beginTime;
            set
            {
                beginTime = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 任务的结束时间
        /// </summary>
        public DateTime? EndTime
        {
            get => endTime;
            set
            {
                endTime = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 等待时间
        /// </summary>
        public int WaitTime
        {
            get => waitTime;
            set
            {
                waitTime = value;
                NotifyPropertyChanged();
            }
        }

        /// <summary>
        /// 顶升高度
        /// </summary>
        public ushort Height
        {
            get => height;
            set
            {
                height = value;
                NotifyPropertyChanged();
            }
        }
        /// <summary>
        /// 角度
        /// </summary>
        [NotMapped]
        public short Angle { get; set; }


        /// <summary>
        /// 子任务号排序
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public int CompareTo(object? obj)
        {
            var subTask = obj as Base_SubTask;
            if (subTask == null)
            {
                throw new NotImplementedException();
            }
            return SubTaskNo.CompareTo(subTask.SubTaskNo);
        }
    }
}