JobParam.cs 3.4 KB
using Common;
using DeviceLibrary.lift;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls.WebParts;

namespace DeviceLibrary.bean
{
    /// <summary>
    /// Job运行参数
    /// </summary>
    public class JobParam
    {
        /// <summary>
        /// 初始地点
        /// </summary>
        public Node SrcNode { get; set; }
        /// <summary>
        /// 过门信息
        /// </summary>
        public CrossDoor CrossDoor { get; set; } = new CrossDoor();
        private service.model.MissionInfo missionInfo;

        /// <summary>
        /// 任务信息
        /// </summary>
        public service.model.MissionInfo GetMissionInfo()
        {
            return missionInfo;
        }
        /// <summary>
        /// 电梯内的料架信息
        /// </summary>
        public LiftStatus LiftStatus;
        /// <summary>
        /// 任务信息
        /// </summary>
        public void SetMissionInfo(service.model.MissionInfo value)
        {
            missionInfo = value;
        }
        /// <summary>
        /// 存放钢网料架的节点
        /// </summary>
        public Node SteelShelfNode { get; set; }
        /// <summary>
        /// 当前目标地点
        /// </summary>
        public Node CurTargetNode { get; set; }
        /// <summary>
        /// 所有目标点
        /// </summary>
        public List<Node> TargetNodes { get; set; }
        /// <summary>
        /// 料车信息
        /// </summary>
        public Shelf Shelf { get; set; }
        public OpType OpType { get; set; } = OpType.ComToLine;
        /// <summary>
        /// 回调Job
        /// </summary>
        public JobCallBack CallbackJob;
        public JobParam(Node srcplace, Node tarplace =null,Shelf shelf=null, service.model.MissionInfo MissionInfo =null)
        {
            SrcNode = srcplace;
            CurTargetNode = tarplace;
            Shelf = shelf;
            this.missionInfo = MissionInfo;
            TargetNodes = new List<Node>();
            CrossDoor = new CrossDoor();
        }
    }
    /// <summary>
    /// 操作类型
    /// </summary>
    public enum OpType
    {
        /// <summary>
        /// 手动操作
        /// </summary>
        Mannual,
        /// <summary>
        /// 访问接口
        /// </summary>
        RequestAPI,
        /// <summary>
        /// 与线体通讯
        /// </summary>
        ComToLine,
        /// <summary>
        /// 手动或者访问接口
        /// </summary>
        MaulAndAPI,
    }
    public class JobCallBack
    {
        public Type Type { get; set; }
        public Job Job { get; set; }
        public RunStep RunStep { get; set; }
        public JobCallBack(Type type, RunStep step)
        {
            this.Type = type;
            this.RunStep = step;
        }
    }
    public class CrossDoor
    {
        /// <summary>
        /// 当前位置
        /// </summary>
        public Node CurNode { get; set; }
        /// <summary>
        /// 下一位置
        /// </summary>
        public Node NextNode { get; set; }
        /// <summary>
        /// 是否是进入方向
        /// </summary>
        public bool IsIn { get; set; } = true;
        /// <summary>
        /// 是否是风淋门
        /// </summary>
        public bool IsAir { get; set; } = false;
    }

}