Ejemplo n.º 1
0
        //出库后任务处理,通知物流线是空筐还是满筐
        private bool AsrsOutTaskBusiness(AsrsControl.AsrsPortalModel outPort, CtlDBAccess.Model.ControlTaskModel task, ref string reStr)
        {
            try
            {
                if (task == null)
                {
                    reStr = "任务为空";
                    return(false);
                }
                if (task.TaskType == (int)SysCfg.EnumAsrsTaskType.产品出库)
                {
                    outPort.Db1ValsToSnd[1] = 2;
                }
                else if (task.TaskType == (int)SysCfg.EnumAsrsTaskType.空筐出库)
                {
                    outPort.Db1ValsToSnd[1] = 1;
                }
                if (!outPort.NodeCmdCommit(true, ref reStr))
                {
                    reStr = string.Format("出库站台{0}状态'出库完成'提交失败", outPort.PortSeq);
                    return(false);
                }
                System.Threading.Thread.Sleep(500);

                return(true);
            }
            catch (Exception ex)
            {
                reStr = ex.ToString();
                return(false);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// RGV任务调度
        /// </summary>
        /// <param name="ctlTaskList"></param>
        /// <param name="reStr"></param>
        /// <returns></returns>
        private CtlDBAccess.Model.ControlTaskModel RgvTasksndAllocate(TransDevModel.NodeRGV rgv, ref string reStr)
        {
            CtlDBAccess.Model.ControlTaskModel        ctlTask  = null;
            List <CtlDBAccess.Model.ControlTaskModel> taskList = ctlTaskBll.GetTaskToRunList((int)SysCfg.EnumAsrsTaskType.RGV上下料, SysCfg.EnumTaskStatus.待执行.ToString(), rgv.NodeID, true);

            foreach (CtlDBAccess.Model.ControlTaskModel taskModel in taskList)
            {
                if (0 != TaskLockCheck(rgv, taskModel, ref reStr))
                {
                    continue;
                }
                string devSt     = taskModel.StDevice;
                string devTarget = taskModel.EndDevice;
                FlowCtlBaseModel.CtlNodeBaseModel stNode     = NodeManager.GetNodeByID(devSt);
                FlowCtlBaseModel.CtlNodeBaseModel targetNode = NodeManager.GetNodeByID(devTarget);
                if (stNode == null || stNode.DevCata != "站台")
                {
                    continue;
                }
                if (targetNode == null || targetNode.DevCata != "站台")
                {
                    continue;
                }
                //起点有板,终点空闲,无板
                if (stNode.Db2Vals[0] == 2 && targetNode.Db2Vals[0] == 1)
                {
                    ctlTask = taskModel;
                    break;
                }
            }
            return(ctlTask);
        }
Ejemplo n.º 3
0
        private CtlDBAccess.Model.ControlTaskModel CreateRGVTask(int taskIndex, string mainTaskID, TransDevModel.NodeRGV rgv, TransDevModel.NodeTransStation stNode, TransDevModel.NodeTransStation targetNode, string palletID, ref string reStr)
        {
            CtlDBAccess.Model.ControlTaskModel nextCtlTask = new CtlDBAccess.Model.ControlTaskModel();
            short nextCtlID = (short)ctlTaskBll.GetUnusedControlID();

            if (nextCtlID == 0)
            {
                reStr = "没有可用的控制ID";
                return(null);
            }
            nextCtlTask.TaskID         = System.Guid.NewGuid().ToString();
            nextCtlTask.DeviceID       = rgv.NodeID;
            nextCtlTask.DeviceCata     = rgv.DevCata;
            nextCtlTask.StDevice       = stNode.NodeID;
            nextCtlTask.StDeviceCata   = stNode.DevCata;
            nextCtlTask.StDeviceParam  = "";
            nextCtlTask.EndDevice      = targetNode.NodeID;
            nextCtlTask.EndDeviceCata  = targetNode.DevCata;
            nextCtlTask.EndDeviceParam = "";
            nextCtlTask.MainTaskID     = mainTaskID;
            nextCtlTask.PalletCode     = palletID;
            nextCtlTask.ControlID      = nextCtlID;
            nextCtlTask.TaskIndex      = taskIndex;
            nextCtlTask.TaskType       = 13;
            nextCtlTask.TaskParam      = "";
            nextCtlTask.TaskStatus     = "待执行";
            nextCtlTask.TaskPhase      = 0;
            nextCtlTask.CreateTime     = System.DateTime.Now;
            nextCtlTask.CreateMode     = "自动";
            return(nextCtlTask);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 设备执行任务之前,检查是否路径被锁定,防止上下架冲突
 /// </summary>
 /// <param name="curNode"></param>
 /// <param name="curTask"></param>
 /// <param name="reStr">若可用,返回0,1:路径被锁定,不可用,2:其它错误,-1:系统异常</param>
 /// <returns></returns>
 public int TaskLockCheck(FlowCtlBaseModel.CtlNodeBaseModel curNode, CtlDBAccess.Model.ControlTaskModel curTask, ref string reStr)
 {
     try
     {
         lock (pathCheckLock)
         {
             if (curTask == null)
             {
                 reStr = "任务为空";
                 return(2);
             }
             CtlDBAccess.Model.MainControlTaskModel mainTask = mainCtlTaskBll.GetModel(curTask.MainTaskID);
             if (!wcsPathMap.Keys.Contains(mainTask.FlowPathKey))
             {
                 reStr = "不存在的路径:" + mainTask.FlowPathKey;
                 return(2);
             }
             FlowCtlBaseModel.WCSFlowPathModel wcsPath = wcsPathMap[mainTask.FlowPathKey];
             if (wcsPath.PathCata == "上架")
             {
                 // List<CtlDBAccess.Model.MainControlTaskModel> lockedMaintaskList = GetLockedTaskList(curNode, "下架");
                 if (!NodeLockedBytask(curNode, "下架"))
                 {
                     return(0);
                 }
                 else
                 {
                     return(1);
                 }
             }
             else if (wcsPath.PathCata == "下架")
             {
                 //List<CtlDBAccess.Model.MainControlTaskModel> lockedMaintaskList = GetLockedTaskList(curNode, "上架");
                 if (!NodeLockedBytask(curNode, "上架"))
                 {
                     return(0);
                 }
                 else
                 {
                     return(1);
                 }
             }
             else
             {
                 return(0);
             }
         }
     }
     catch (Exception ex)
     {
         reStr = ex.ToString();
         return(-1);
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public bool Add(CtlDBAccess.Model.ControlTaskModel model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into ControlTask(");
            strSql.Append("TaskID,TaskType,TaskParam,TaskStatus,TaskPhase,CreateTime,FinishTime,CreateMode,Remark,DeviceID,tag1,tag2,tag3,tag4,tag5)");
            strSql.Append(" values (");
            strSql.Append("@TaskID,@TaskType,@TaskParam,@TaskStatus,@TaskPhase,@CreateTime,@FinishTime,@CreateMode,@Remark,@DeviceID,@tag1,@tag2,@tag3,@tag4,@tag5)");
            SqlParameter[] parameters =
            {
                new SqlParameter("@TaskID",     SqlDbType.NVarChar,  255),
                new SqlParameter("@TaskType",   SqlDbType.Int,         4),
                new SqlParameter("@TaskParam",  SqlDbType.NVarChar,  255),
                new SqlParameter("@TaskStatus", SqlDbType.NVarChar,   50),
                new SqlParameter("@TaskPhase",  SqlDbType.Int,         4),
                new SqlParameter("@CreateTime", SqlDbType.DateTime),
                new SqlParameter("@FinishTime", SqlDbType.DateTime),
                new SqlParameter("@CreateMode", SqlDbType.NVarChar,   50),
                new SqlParameter("@Remark",     SqlDbType.NVarChar,   50),
                new SqlParameter("@DeviceID",   SqlDbType.NVarChar,   50),
                new SqlParameter("@tag1",       SqlDbType.NVarChar,  255),
                new SqlParameter("@tag2",       SqlDbType.NVarChar,  255),
                new SqlParameter("@tag3",       SqlDbType.NVarChar,  255),
                new SqlParameter("@tag4",       SqlDbType.NVarChar,  255),
                new SqlParameter("@tag5",       SqlDbType.NVarChar, 255)
            };
            parameters[0].Value  = model.TaskID;
            parameters[1].Value  = model.TaskType;
            parameters[2].Value  = model.TaskParam;
            parameters[3].Value  = model.TaskStatus;
            parameters[4].Value  = model.TaskPhase;
            parameters[5].Value  = model.CreateTime;
            parameters[6].Value  = model.FinishTime;
            parameters[7].Value  = model.CreateMode;
            parameters[8].Value  = model.Remark;
            parameters[9].Value  = model.DeviceID;
            parameters[10].Value = model.tag1;
            parameters[11].Value = model.tag2;
            parameters[12].Value = model.tag3;
            parameters[13].Value = model.tag4;
            parameters[14].Value = model.tag5;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 6
0
        private CtlDBAccess.Model.ControlTaskModel CreateStackerTask(int taskIndex, CtlDBAccess.Model.MainControlTaskModel mainTask, string stackerNodeID, TransDevModel.NodeTransStation portNode, string palletID, ref string reStr)
        {
            CtlDBAccess.Model.ControlTaskModel nextCtlTask = new CtlDBAccess.Model.ControlTaskModel();
            short nextCtlID = (short)ctlTaskBll.GetUnusedControlID();

            if (nextCtlID == 0)
            {
                reStr = "没有可用的控制ID";
                return(null);
            }

            nextCtlTask.TaskID     = System.Guid.NewGuid().ToString();
            nextCtlTask.DeviceID   = stackerNodeID;
            nextCtlTask.DeviceCata = "堆垛机";

            if (mainTask.TaskType == "上架")
            {
                nextCtlTask.StDevice       = portNode.NodeID;
                nextCtlTask.StDeviceCata   = portNode.DevCata;
                nextCtlTask.StDeviceParam  = "";
                nextCtlTask.EndDevice      = stackerNodeID;
                nextCtlTask.EndDeviceCata  = "货位";
                nextCtlTask.EndDeviceParam = mainTask.EndDeviceParam;
                nextCtlTask.TaskType       = (int)SysCfg.EnumAsrsTaskType.产品入库;
            }
            else if (mainTask.TaskType == "下架")
            {
                nextCtlTask.StDevice       = stackerNodeID;
                nextCtlTask.StDeviceCata   = "货位";
                nextCtlTask.StDeviceParam  = mainTask.StDeviceParam;
                nextCtlTask.EndDevice      = portNode.NodeID;
                nextCtlTask.EndDeviceCata  = portNode.DevCata;
                nextCtlTask.EndDeviceParam = "";
                nextCtlTask.TaskType       = (int)SysCfg.EnumAsrsTaskType.产品出库;
            }
            else
            {
                throw new NotImplementedException();
            }
            nextCtlTask.MainTaskID = mainTask.MainTaskID;
            nextCtlTask.PalletCode = palletID;
            nextCtlTask.ControlID  = nextCtlID;
            nextCtlTask.TaskIndex  = taskIndex;
            nextCtlTask.TaskParam  = "";
            nextCtlTask.TaskStatus = "待执行";
            nextCtlTask.TaskPhase  = 0;
            nextCtlTask.CreateTime = System.DateTime.Now;
            nextCtlTask.CreateMode = "自动";
            return(nextCtlTask);
        }
Ejemplo n.º 7
0
 private void GenerateAsrsCheckoutTask()
 {
     try
     {
         BindingSource bs = this.dataGridView1.DataSource as BindingSource;
         DataTable     dt = bs.DataSource as DataTable;
         if (dt == null)
         {
             return;
         }
         int pri = int.Parse(this.textBoxPrivilege.Text);
         foreach (DataRow dr in dt.Rows)
         {
             string houseName = dr["库房"].ToString();
             string strCell   = dr["库位"].ToString();
             AsrsControl.AsrsCtlModel asrsCtl = AsrsPresenter.GetAsrsCtlByName(houseName);
             AsrsModel.CellCoordModel cell    = new CellCoordModel(0, 0, 0);
             if (!cell.Parse(strCell))
             {
                 continue;
             }
             EnumCellStatus   cellStoreStat = EnumCellStatus.空闲;
             EnumGSTaskStatus cellTaskStat  = EnumGSTaskStatus.完成;
             if (!asrsResMana.GetCellStatus(houseName, cell, ref cellStoreStat, ref cellTaskStat))
             {
                 Console.WriteLine("获取货位{0}:{1}状态失败", houseName, strCell);
                 continue;
             }
             if (cellStoreStat != EnumCellStatus.满位 || cellTaskStat == EnumGSTaskStatus.锁定)
             {
                 continue;
             }
             CtlDBAccess.Model.ControlTaskModel asrsTask = null;
             if (!asrsCtl.GenerateOutputTask(cell, null, SysCfg.EnumAsrsTaskType.产品出库, false, ref asrsTask, null, pri))
             {
                 logRecorder.AddDebugLog(this.Text, string.Format("生成{0}:{1}出库任务失败", houseName, strCell));
             }
             else
             {
                 logRecorder.AddDebugLog(this.Text, string.Format("生成{0}:{1}产品出库任务成功", houseName, strCell));
             }
             dr["出库任务ID"] = asrsTask.TaskID;
         }
         this.dataGridView1.Refresh();
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
     }
 }
Ejemplo n.º 8
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public CtlDBAccess.Model.ControlTaskModel GetModel(string TaskID)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select  top 1  ");
            strSql.Append(" TaskID,DeviceID,DeviceCata,StDevice,StDeviceCata,StDeviceParam,EndDevice,EndDeviceCata,EndDeviceParam,MainTaskID,PalletCode,ControlID,TaskIndex,TaskType,TaskParam,TaskStatus,TaskPhase,CreateTime,FinishTime,CreateMode,Remark,tag1,tag2,tag3,tag4,tag5 ");
            strSql.Append(" from ControlTask ");
            strSql.Append(" where TaskID='" + TaskID + "' ");
            CtlDBAccess.Model.ControlTaskModel model = new CtlDBAccess.Model.ControlTaskModel();
            DataSet ds = DbHelperSQL.Query(strSql.ToString());

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(DataRowToModel(ds.Tables[0].Rows[0]));
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public CtlDBAccess.Model.ControlTaskModel GetModel(string TaskID)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select  top 1 TaskID,TaskType,TaskParam,TaskStatus,TaskPhase,CreateTime,FinishTime,CreateMode,Remark,DeviceID,tag1,tag2,tag3,tag4,tag5 from ControlTask ");
            strSql.Append(" where TaskID=@TaskID ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@TaskID", SqlDbType.NVarChar, 255)
            };
            parameters[0].Value = TaskID;

            CtlDBAccess.Model.ControlTaskModel model = new CtlDBAccess.Model.ControlTaskModel();
            DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(DataRowToModel(ds.Tables[0].Rows[0]));
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public bool Add(CtlDBAccess.Model.ControlTaskModel model)
        {
            StringBuilder strSql  = new StringBuilder();
            StringBuilder strSql1 = new StringBuilder();
            StringBuilder strSql2 = new StringBuilder();

            if (model.TaskID != null)
            {
                strSql1.Append("TaskID,");
                strSql2.Append("'" + model.TaskID + "',");
            }
            if (model.DeviceID != null)
            {
                strSql1.Append("DeviceID,");
                strSql2.Append("'" + model.DeviceID + "',");
            }
            if (model.DeviceCata != null)
            {
                strSql1.Append("DeviceCata,");
                strSql2.Append("'" + model.DeviceCata + "',");
            }
            if (model.StDevice != null)
            {
                strSql1.Append("StDevice,");
                strSql2.Append("'" + model.StDevice + "',");
            }
            if (model.StDeviceCata != null)
            {
                strSql1.Append("StDeviceCata,");
                strSql2.Append("'" + model.StDeviceCata + "',");
            }
            if (model.StDeviceParam != null)
            {
                strSql1.Append("StDeviceParam,");
                strSql2.Append("'" + model.StDeviceParam + "',");
            }
            if (model.EndDevice != null)
            {
                strSql1.Append("EndDevice,");
                strSql2.Append("'" + model.EndDevice + "',");
            }
            if (model.EndDeviceCata != null)
            {
                strSql1.Append("EndDeviceCata,");
                strSql2.Append("'" + model.EndDeviceCata + "',");
            }
            if (model.EndDeviceParam != null)
            {
                strSql1.Append("EndDeviceParam,");
                strSql2.Append("'" + model.EndDeviceParam + "',");
            }
            if (model.MainTaskID != null)
            {
                strSql1.Append("MainTaskID,");
                strSql2.Append("'" + model.MainTaskID + "',");
            }
            if (model.PalletCode != null)
            {
                strSql1.Append("PalletCode,");
                strSql2.Append("'" + model.PalletCode + "',");
            }
            if (model.ControlID != null)
            {
                strSql1.Append("ControlID,");
                strSql2.Append("" + model.ControlID + ",");
            }
            if (model.TaskIndex != null)
            {
                strSql1.Append("TaskIndex,");
                strSql2.Append("" + model.TaskIndex + ",");
            }
            if (model.TaskType != null)
            {
                strSql1.Append("TaskType,");
                strSql2.Append("" + model.TaskType + ",");
            }
            if (model.TaskParam != null)
            {
                strSql1.Append("TaskParam,");
                strSql2.Append("'" + model.TaskParam + "',");
            }
            if (model.TaskStatus != null)
            {
                strSql1.Append("TaskStatus,");
                strSql2.Append("'" + model.TaskStatus + "',");
            }
            if (model.TaskPhase != null)
            {
                strSql1.Append("TaskPhase,");
                strSql2.Append("" + model.TaskPhase + ",");
            }
            if (model.CreateTime != null)
            {
                strSql1.Append("CreateTime,");
                strSql2.Append("'" + model.CreateTime + "',");
            }
            if (model.FinishTime != null)
            {
                strSql1.Append("FinishTime,");
                strSql2.Append("'" + model.FinishTime + "',");
            }
            if (model.CreateMode != null)
            {
                strSql1.Append("CreateMode,");
                strSql2.Append("'" + model.CreateMode + "',");
            }
            if (model.Remark != null)
            {
                strSql1.Append("Remark,");
                strSql2.Append("'" + model.Remark + "',");
            }
            if (model.tag1 != null)
            {
                strSql1.Append("tag1,");
                strSql2.Append("'" + model.tag1 + "',");
            }
            if (model.tag2 != null)
            {
                strSql1.Append("tag2,");
                strSql2.Append("'" + model.tag2 + "',");
            }
            if (model.tag3 != null)
            {
                strSql1.Append("tag3,");
                strSql2.Append("'" + model.tag3 + "',");
            }
            if (model.tag4 != null)
            {
                strSql1.Append("tag4,");
                strSql2.Append("'" + model.tag4 + "',");
            }
            if (model.tag5 != null)
            {
                strSql1.Append("tag5,");
                strSql2.Append("'" + model.tag5 + "',");
            }
            strSql.Append("insert into ControlTask(");
            strSql.Append(strSql1.ToString().Remove(strSql1.Length - 1));
            strSql.Append(")");
            strSql.Append(" values (");
            strSql.Append(strSql2.ToString().Remove(strSql2.Length - 1));
            strSql.Append(")");
            int rows = DbHelperSQL.ExecuteSql(strSql.ToString());

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(CtlDBAccess.Model.ControlTaskModel model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update ControlTask set ");
            if (model.DeviceID != null)
            {
                strSql.Append("DeviceID='" + model.DeviceID + "',");
            }
            if (model.DeviceCata != null)
            {
                strSql.Append("DeviceCata='" + model.DeviceCata + "',");
            }
            if (model.StDevice != null)
            {
                strSql.Append("StDevice='" + model.StDevice + "',");
            }
            if (model.StDeviceCata != null)
            {
                strSql.Append("StDeviceCata='" + model.StDeviceCata + "',");
            }
            if (model.StDeviceParam != null)
            {
                strSql.Append("StDeviceParam='" + model.StDeviceParam + "',");
            }
            else
            {
                strSql.Append("StDeviceParam= null ,");
            }
            if (model.EndDevice != null)
            {
                strSql.Append("EndDevice='" + model.EndDevice + "',");
            }
            if (model.EndDeviceCata != null)
            {
                strSql.Append("EndDeviceCata='" + model.EndDeviceCata + "',");
            }
            if (model.EndDeviceParam != null)
            {
                strSql.Append("EndDeviceParam='" + model.EndDeviceParam + "',");
            }
            else
            {
                strSql.Append("EndDeviceParam= null ,");
            }
            if (model.MainTaskID != null)
            {
                strSql.Append("MainTaskID='" + model.MainTaskID + "',");
            }
            if (model.PalletCode != null)
            {
                strSql.Append("PalletCode='" + model.PalletCode + "',");
            }
            if (model.ControlID != null)
            {
                strSql.Append("ControlID=" + model.ControlID + ",");
            }
            if (model.TaskIndex != null)
            {
                strSql.Append("TaskIndex=" + model.TaskIndex + ",");
            }
            if (model.TaskType != null)
            {
                strSql.Append("TaskType=" + model.TaskType + ",");
            }
            if (model.TaskParam != null)
            {
                strSql.Append("TaskParam='" + model.TaskParam + "',");
            }
            if (model.TaskStatus != null)
            {
                strSql.Append("TaskStatus='" + model.TaskStatus + "',");
            }
            if (model.TaskPhase != null)
            {
                strSql.Append("TaskPhase=" + model.TaskPhase + ",");
            }
            if (model.CreateTime != null)
            {
                strSql.Append("CreateTime='" + model.CreateTime + "',");
            }
            if (model.FinishTime != null)
            {
                strSql.Append("FinishTime='" + model.FinishTime + "',");
            }
            else
            {
                strSql.Append("FinishTime= null ,");
            }
            if (model.CreateMode != null)
            {
                strSql.Append("CreateMode='" + model.CreateMode + "',");
            }
            if (model.Remark != null)
            {
                strSql.Append("Remark='" + model.Remark + "',");
            }
            else
            {
                strSql.Append("Remark= null ,");
            }
            if (model.tag1 != null)
            {
                strSql.Append("tag1='" + model.tag1 + "',");
            }
            else
            {
                strSql.Append("tag1= null ,");
            }
            if (model.tag2 != null)
            {
                strSql.Append("tag2='" + model.tag2 + "',");
            }
            else
            {
                strSql.Append("tag2= null ,");
            }
            if (model.tag3 != null)
            {
                strSql.Append("tag3='" + model.tag3 + "',");
            }
            else
            {
                strSql.Append("tag3= null ,");
            }
            if (model.tag4 != null)
            {
                strSql.Append("tag4='" + model.tag4 + "',");
            }
            else
            {
                strSql.Append("tag4= null ,");
            }
            if (model.tag5 != null)
            {
                strSql.Append("tag5='" + model.tag5 + "',");
            }
            else
            {
                strSql.Append("tag5= null ,");
            }
            int n = strSql.ToString().LastIndexOf(",");

            strSql.Remove(n, 1);
            strSql.Append(" where TaskID='" + model.TaskID + "' ");
            int rowsAffected = DbHelperSQL.ExecuteSql(strSql.ToString());

            if (rowsAffected > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(CtlDBAccess.Model.ControlTaskModel model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update ControlTask set ");
            strSql.Append("TaskType=@TaskType,");
            strSql.Append("TaskParam=@TaskParam,");
            strSql.Append("TaskStatus=@TaskStatus,");
            strSql.Append("TaskPhase=@TaskPhase,");
            strSql.Append("CreateTime=@CreateTime,");
            strSql.Append("FinishTime=@FinishTime,");
            strSql.Append("CreateMode=@CreateMode,");
            strSql.Append("Remark=@Remark,");
            strSql.Append("DeviceID=@DeviceID,");
            strSql.Append("tag1=@tag1,");
            strSql.Append("tag2=@tag2,");
            strSql.Append("tag3=@tag3,");
            strSql.Append("tag4=@tag4,");
            strSql.Append("tag5=@tag5");

            strSql.Append(" where TaskID=@TaskID ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@TaskType",   SqlDbType.Int,         4),
                new SqlParameter("@TaskParam",  SqlDbType.NVarChar,  255),
                new SqlParameter("@TaskStatus", SqlDbType.NVarChar,   50),
                new SqlParameter("@TaskPhase",  SqlDbType.Int,         4),
                new SqlParameter("@CreateTime", SqlDbType.DateTime),
                new SqlParameter("@FinishTime", SqlDbType.DateTime),
                new SqlParameter("@CreateMode", SqlDbType.NVarChar,   50),
                new SqlParameter("@Remark",     SqlDbType.NVarChar,   50),
                new SqlParameter("@DeviceID",   SqlDbType.NVarChar,   50),
                new SqlParameter("@tag1",       SqlDbType.NVarChar,  255),
                new SqlParameter("@tag2",       SqlDbType.NVarChar,  255),
                new SqlParameter("@tag3",       SqlDbType.NVarChar,  255),
                new SqlParameter("@tag4",       SqlDbType.NVarChar,  255),
                new SqlParameter("@tag5",       SqlDbType.NVarChar,  255),
                new SqlParameter("@TaskID",     SqlDbType.NVarChar, 255)
            };
            parameters[0].Value  = model.TaskType;
            parameters[1].Value  = model.TaskParam;
            parameters[2].Value  = model.TaskStatus;
            parameters[3].Value  = model.TaskPhase;
            parameters[4].Value  = model.CreateTime;
            parameters[5].Value  = model.FinishTime;
            parameters[6].Value  = model.CreateMode;
            parameters[7].Value  = model.Remark;
            parameters[8].Value  = model.DeviceID;
            parameters[9].Value  = model.tag1;
            parameters[10].Value = model.tag2;
            parameters[11].Value = model.tag3;
            parameters[12].Value = model.tag4;
            parameters[13].Value = model.tag5;

            parameters[14].Value = model.TaskID;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 13
0
        public bool ParseParam(CtlDBAccess.Model.ControlTaskModel ctlTask, ref string reStr)
        {
            try
            {
                SysCfg.EnumAsrsTaskType taskType = (SysCfg.EnumAsrsTaskType)ctlTask.TaskType;
                if (ctlTask.DeviceCata != "堆垛机")
                {
                    reStr = "设备类型不支持,要求为 '堆垛机'类型,实际:" + ctlTask.DeviceCata;
                    return(false);
                }
                if (taskType == SysCfg.EnumAsrsTaskType.产品入库 || taskType == SysCfg.EnumAsrsTaskType.空筐入库)
                {
                    inputPort = int.Parse(ctlTask.StDevice);
                    string[] cellPos = ctlTask.EndDeviceParam.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
                    if (cellPos == null || cellPos.Count() < 3)
                    {
                        reStr = "出入库参数解析错误";
                        return(false);
                    }
                    short row   = short.Parse(cellPos[0]);
                    short col   = short.Parse(cellPos[1]);
                    short layer = short.Parse(cellPos[2]);
                    this.cellPos1 = new CellCoordModel(row, col, layer);
                }
                else if (taskType == SysCfg.EnumAsrsTaskType.产品出库 || taskType == SysCfg.EnumAsrsTaskType.空筐出库)
                {
                    outputPort = int.Parse(ctlTask.EndDevice);
                    string[] cellPos = ctlTask.StDeviceParam.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
                    if (cellPos == null || cellPos.Count() < 3)
                    {
                        reStr = "出入库参数解析错误,货位参数不足3个";
                        return(false);
                    }
                    short row   = short.Parse(cellPos[0]);
                    short col   = short.Parse(cellPos[1]);
                    short layer = short.Parse(cellPos[2]);
                    this.cellPos1 = new CellCoordModel(row, col, layer);
                }
                else if (taskType == SysCfg.EnumAsrsTaskType.移库)
                {
                    string[] cellPos = ctlTask.StDeviceParam.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
                    if (cellPos == null || cellPos.Count() < 3)
                    {
                        reStr = "出入库参数解析错误,货位参数不足3个";
                        return(false);
                    }
                    short row   = short.Parse(cellPos[0]);
                    short col   = short.Parse(cellPos[1]);
                    short layer = short.Parse(cellPos[2]);
                    this.cellPos1 = new CellCoordModel(row, col, layer);

                    cellPos = ctlTask.EndDeviceParam.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
                    if (cellPos == null || cellPos.Count() < 3)
                    {
                        reStr = "出入库参数解析错误,货位参数不足3个";
                        return(false);
                    }
                    row           = short.Parse(cellPos[0]);
                    col           = short.Parse(cellPos[1]);
                    layer         = short.Parse(cellPos[2]);
                    this.cellPos2 = new CellCoordModel(row, col, layer);
                }
                else
                {
                    reStr = "任务参数解析失败,不识别的任务类型:" + taskType.ToString();
                    return(false);
                }
                this.inputCellGoods = ctlTask.PalletCode.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                return(true);
            }
            catch (Exception ex)
            {
                reStr = ex.ToString();
                return(false);
            }
        }
Ejemplo n.º 14
0
        public bool CreateNodeNextTask(FlowCtlBaseModel.CtlNodeBaseModel curNode, CtlDBAccess.Model.ControlTaskModel curTask, ref string reStr)
        {
            try
            {
                CtlDBAccess.Model.MainControlTaskModel mainTask = mainCtlTaskBll.GetModel(curTask.MainTaskID);
                if (mainTask == null)
                {
                    reStr = "主任务为空,不存在的主任务ID:" + curTask.MainTaskID;
                    return(false);
                }
                FlowCtlBaseModel.WCSFlowPathModel wcsPath = null;
                if (wcsPathMap.Keys.Contains(mainTask.FlowPathKey))
                {
                    wcsPath = wcsPathMap[mainTask.FlowPathKey];
                }
                else
                {
                    reStr = "路径不存在:" + mainTask.FlowPathKey;
                    return(false);
                }

                FlowCtlBaseModel.WCSPathNodeModel wcsNode = wcsPath.GetNodeByID(curNode.NodeID);
                if (wcsNode.NodeFlag == "终点")
                {
                    //管理任务完成
                    WMS_Interface.ResposeData res = WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "已完成");
                    if (!res.Status)
                    {
                        reStr = string.Format("更新WMS任务:{0}状态失败,{1}", mainTask.WMSTaskID, res.Describe);
                        return(false);
                    }
                    mainTask.TaskStatus = "已完成";
                    mainTask.FinishTime = System.DateTime.Now;
                    if (!mainCtlTaskBll.Update(mainTask))
                    {
                        reStr = string.Format("更新主控制任务:{0}状态失败", mainTask.MainTaskID);
                        return(false);
                    }
                    return(true);
                }
                FlowCtlBaseModel.CtlNodeBaseModel nextNode = NodeManager.GetNodeByID(wcsNode.NextNodeID);
                if (curNode.DevCata == "站台")
                {
                    if (nextNode.DevCata == "站台")
                    {
                        CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateConveyorTask(curTask.TaskIndex + 1, mainTask.MainTaskID, curNode as TransDevModel.NodeTransStation, nextNode as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr);
                        if (nextCtlTask == null)
                        {
                            return(false);
                        }
                        return(ctlTaskBll.Add(nextCtlTask));
                    }
                    else if (nextNode.DevCata == "RGV")
                    {
                        FlowCtlBaseModel.WCSPathNodeModel rgvTargetWcsNode = wcsPath.GetNodeByID(wcsNode.NextNodeID);
                        FlowCtlBaseModel.CtlNodeBaseModel nextNode2        = NodeManager.GetNodeByID(rgvTargetWcsNode.NextNodeID);
                        if (nextNode2 == null)
                        {
                            reStr = "不存在的设备号:" + wcsNode.NextNodeID;
                            return(false);
                        }
                        FlowCtlBaseModel.WCSPathNodeModel nextWcsNode = wcsPath.GetNodeByID(nextNode2.NodeID);
                        if (nextWcsNode == null)
                        {
                            reStr = "路径配置,RGV路径缺少下料站台";
                            return(false);
                        }
                        CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateRGVTask(curTask.TaskIndex + 1, mainTask.MainTaskID, nextNode as TransDevModel.NodeRGV, curNode as TransDevModel.NodeTransStation, nextNode2 as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr);
                        if (nextCtlTask == null)
                        {
                            return(false);
                        }
                        return(ctlTaskBll.Add(nextCtlTask));
                    }
                    else if (nextNode.DevCata == "堆垛机")
                    {
                        CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateStackerTask(curTask.TaskIndex + 1, mainTask, nextNode.NodeID, curNode as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr);
                        if (nextCtlTask == null)
                        {
                            return(false);
                        }
                        return(ctlTaskBll.Add(nextCtlTask));
                    }
                }
                else if (curNode.DevCata == "RGV")
                {
                    if (nextNode.DevCata != "站台")
                    {
                        reStr = "RGV目标设备应该为站台";
                        return(false);
                    }
                    FlowCtlBaseModel.WCSPathNodeModel rgvTargetWcsNode = wcsPath.GetNodeByID(wcsNode.NextNodeID);
                    if (rgvTargetWcsNode.NodeFlag == "终点")
                    {
                        //管理任务完成
                        WMS_Interface.ResposeData res = WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "已完成");
                        if (!res.Status)
                        {
                            reStr = string.Format("更新WMS任务:{0}状态失败,{1}", mainTask.WMSTaskID, res.Describe);
                            return(false);
                        }

                        mainTask.TaskStatus = "已完成";
                        mainTask.FinishTime = System.DateTime.Now;
                        if (!mainCtlTaskBll.Update(mainTask))
                        {
                            reStr = string.Format("更新主控制任务:{0}状态失败", mainTask.MainTaskID);
                            return(false);
                        }

                        return(true);
                    }
                    FlowCtlBaseModel.CtlNodeBaseModel rgvTargetNode = NodeManager.GetNodeByID(rgvTargetWcsNode.NodeID);
                    FlowCtlBaseModel.CtlNodeBaseModel nextNode2     = NodeManager.GetNodeByID(rgvTargetWcsNode.NextNodeID);
                    if (nextNode2.DevCata == "站台")
                    {
                        CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateConveyorTask(curTask.TaskIndex + 1, mainTask.MainTaskID, rgvTargetNode as TransDevModel.NodeTransStation, nextNode2 as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr);
                        if (nextCtlTask == null)
                        {
                            return(false);
                        }
                        return(ctlTaskBll.Add(nextCtlTask));
                    }
                    else if (nextNode2.DevCata == "堆垛机")
                    {
                        CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateStackerTask(curTask.TaskIndex + 1, mainTask, nextNode2.NodeID, rgvTargetNode as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr);
                        if (nextCtlTask == null)
                        {
                            return(false);
                        }
                        return(ctlTaskBll.Add(nextCtlTask));
                    }
                    else
                    {
                        reStr = "错误的路径配置,两台RGV不允许共用一个接驳站台";
                        return(false);
                    }
                }
                else if (curNode.DevCata == "堆垛机")
                {
                    if (nextNode.DevCata != "站台")
                    {
                        reStr = "堆垛机目标设备应该为站台";
                        return(false);
                    }
                    FlowCtlBaseModel.WCSPathNodeModel targetWcsNode = wcsPath.GetNodeByID(wcsNode.NextNodeID);
                    if (targetWcsNode.NodeFlag == "终点")
                    {
                        //管理任务完成
                        WMS_Interface.ResposeData res = WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "已完成");
                        if (!res.Status)
                        {
                            reStr = string.Format("更新WMS任务:{0}状态失败,{1}", mainTask.WMSTaskID, res.Describe);
                            return(false);
                        }
                        mainTask.TaskStatus = "已完成";
                        mainTask.FinishTime = System.DateTime.Now;
                        if (!mainCtlTaskBll.Update(mainTask))
                        {
                            reStr = string.Format("更新主控制任务:{0}状态失败", mainTask.MainTaskID);
                            return(false);
                        }

                        return(true);
                    }
                    FlowCtlBaseModel.CtlNodeBaseModel nextNode2 = NodeManager.GetNodeByID(targetWcsNode.NextNodeID);
                    if (nextNode2.DevCata == "站台")
                    {
                        CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateConveyorTask(curTask.TaskIndex + 1, mainTask.MainTaskID, nextNode as TransDevModel.NodeTransStation, nextNode2 as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr);
                        if (nextCtlTask == null)
                        {
                            return(false);
                        }
                        return(ctlTaskBll.Add(nextCtlTask));
                    }
                    else if (nextNode2.DevCata == "RGV")
                    {
                        FlowCtlBaseModel.WCSPathNodeModel targetWcsNode2 = wcsPath.GetNodeByID(nextNode2.NodeID);
                        FlowCtlBaseModel.CtlNodeBaseModel nextNode3      = NodeManager.GetNodeByID(targetWcsNode2.NextNodeID);
                        if (nextNode3 == null)
                        {
                            return(false);
                        }
                        CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateRGVTask(curTask.TaskIndex + 1, mainTask.MainTaskID, nextNode2 as TransDevModel.NodeRGV, nextNode as TransDevModel.NodeTransStation, nextNode3 as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr);
                        if (nextCtlTask == null)
                        {
                            return(false);
                        }
                        return(ctlTaskBll.Add(nextCtlTask));
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                reStr = ex.ToString();
                Console.WriteLine(ex.ToString());
                return(false);
            }
        }
Ejemplo n.º 15
0
 /// <summary>
 /// 得到一个对象实体
 /// </summary>
 public CtlDBAccess.Model.ControlTaskModel DataRowToModel(DataRow row)
 {
     CtlDBAccess.Model.ControlTaskModel model = new CtlDBAccess.Model.ControlTaskModel();
     if (row != null)
     {
         if (row["TaskID"] != null)
         {
             model.TaskID = row["TaskID"].ToString();
         }
         if (row["DeviceID"] != null)
         {
             model.DeviceID = row["DeviceID"].ToString();
         }
         if (row["DeviceCata"] != null)
         {
             model.DeviceCata = row["DeviceCata"].ToString();
         }
         if (row["StDevice"] != null)
         {
             model.StDevice = row["StDevice"].ToString();
         }
         if (row["StDeviceCata"] != null)
         {
             model.StDeviceCata = row["StDeviceCata"].ToString();
         }
         if (row["StDeviceParam"] != null)
         {
             model.StDeviceParam = row["StDeviceParam"].ToString();
         }
         if (row["EndDevice"] != null)
         {
             model.EndDevice = row["EndDevice"].ToString();
         }
         if (row["EndDeviceCata"] != null)
         {
             model.EndDeviceCata = row["EndDeviceCata"].ToString();
         }
         if (row["EndDeviceParam"] != null)
         {
             model.EndDeviceParam = row["EndDeviceParam"].ToString();
         }
         if (row["MainTaskID"] != null)
         {
             model.MainTaskID = row["MainTaskID"].ToString();
         }
         if (row["PalletCode"] != null)
         {
             model.PalletCode = row["PalletCode"].ToString();
         }
         if (row["ControlID"] != null && row["ControlID"].ToString() != "")
         {
             model.ControlID = int.Parse(row["ControlID"].ToString());
         }
         if (row["TaskIndex"] != null && row["TaskIndex"].ToString() != "")
         {
             model.TaskIndex = int.Parse(row["TaskIndex"].ToString());
         }
         if (row["TaskType"] != null && row["TaskType"].ToString() != "")
         {
             model.TaskType = int.Parse(row["TaskType"].ToString());
         }
         if (row["TaskParam"] != null)
         {
             model.TaskParam = row["TaskParam"].ToString();
         }
         if (row["TaskStatus"] != null)
         {
             model.TaskStatus = row["TaskStatus"].ToString();
         }
         if (row["TaskPhase"] != null && row["TaskPhase"].ToString() != "")
         {
             model.TaskPhase = int.Parse(row["TaskPhase"].ToString());
         }
         if (row["CreateTime"] != null && row["CreateTime"].ToString() != "")
         {
             model.CreateTime = DateTime.Parse(row["CreateTime"].ToString());
         }
         if (row["FinishTime"] != null && row["FinishTime"].ToString() != "")
         {
             model.FinishTime = DateTime.Parse(row["FinishTime"].ToString());
         }
         if (row["CreateMode"] != null)
         {
             model.CreateMode = row["CreateMode"].ToString();
         }
         if (row["Remark"] != null)
         {
             model.Remark = row["Remark"].ToString();
         }
         if (row["tag1"] != null)
         {
             model.tag1 = row["tag1"].ToString();
         }
         if (row["tag2"] != null)
         {
             model.tag2 = row["tag2"].ToString();
         }
         if (row["tag3"] != null)
         {
             model.tag3 = row["tag3"].ToString();
         }
         if (row["tag4"] != null)
         {
             model.tag4 = row["tag4"].ToString();
         }
         if (row["tag5"] != null)
         {
             model.tag5 = row["tag5"].ToString();
         }
     }
     return(model);
 }
Ejemplo n.º 16
0
        public override bool WCSMainTaskStart(CtlDBAccess.Model.MainControlTaskModel mainTask, WCSFlowPathModel wcsPath, ref string reStr)
        {
            if (!base.WCSMainTaskStart(mainTask, wcsPath, ref reStr))
            {
                return(false);
            }
            WCSPathNodeModel wcsNode     = wcsPath.GetNodeByID(nodeID);
            WCSPathNodeModel wcsNodeNext = wcsPath.GetNodeByID(wcsNode.NextNodeID);

            CtlDBAccess.Model.ControlTaskModel ctlTask = null;
            ctlTask                = new CtlDBAccess.Model.ControlTaskModel();
            ctlTask.TaskID         = System.Guid.NewGuid().ToString();
            ctlTask.StDevice       = nodeID;
            ctlTask.StDeviceCata   = devCata;
            ctlTask.StDeviceParam  = mainTask.StDeviceParam;
            ctlTask.EndDevice      = wcsNode.NextNodeID;
            ctlTask.EndDeviceCata  = wcsNodeNext.DevCata;
            ctlTask.EndDeviceParam = mainTask.EndDeviceParam;
            ctlTask.MainTaskID     = mainTask.MainTaskID;
            ctlTask.PalletCode     = mainTask.PalletCode;
            UInt16 controlID = ctlTaskBll.GetUnusedControlID();

            if (controlID < 1)
            {
                reStr = "没有可用的控制任务ID";
                return(false);
            }
            ctlTask.ControlID  = controlID;
            ctlTask.TaskIndex  = 1;
            ctlTask.TaskParam  = "";
            ctlTask.TaskStatus = "待执行";
            ctlTask.TaskPhase  = 0;
            ctlTask.CreateTime = System.DateTime.Now;
            ctlTask.CreateMode = "自动";

            if (wcsNodeNext.DevCata == "库房")
            {
                ctlTask.DeviceID   = wcsNodeNext.NodeID;
                ctlTask.DeviceCata = "堆垛机";
                ctlTask.TaskType   = (int)SysCfg.EnumAsrsTaskType.产品入库;
            }
            else if (wcsNodeNext.DevCata == "RGV")
            {
                ctlTask.DeviceID   = wcsNodeNext.NodeID;
                ctlTask.DeviceCata = wcsNodeNext.DevCata;
                ctlTask.TaskType   = (int)SysCfg.EnumAsrsTaskType.RGV上下料;
            }
            else
            {
                ctlTask.DeviceID   = nodeID;
                ctlTask.DeviceCata = devCata;
                ctlTask.TaskType   = (int)SysCfg.EnumAsrsTaskType.输送机送出;
            }
            if (ctlTask == null)
            {
                return(false);
            }
            bool re = ctlTaskBll.Add(ctlTask);

            // return re;
            if (re)
            {
                mainTask.TaskStatus = "已启动";
                CtlDBAccess.BLL.MainControlTaskBll mainTaskBll = new CtlDBAccess.BLL.MainControlTaskBll();
                return(mainTaskBll.Update(mainTask));
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 判断物流线是否堵塞,选择出库任务
        /// </summary>
        /// <param name="asrsCtl"></param>
        /// <param name="asrsResManage"></param>
        /// <param name="taskList"></param>
        /// <param name="taskType"></param>
        /// <returns></returns>
        public CtlDBAccess.Model.ControlTaskModel AsrsCheckoutTaskTorun(AsrsControl.AsrsCtlModel asrsCtl, IAsrsManageToCtl asrsResManage, IList <CtlDBAccess.Model.ControlTaskModel> taskList, SysCfg.EnumAsrsTaskType taskType)
        {
            try
            {
                if (taskList == null)
                {
                    return(null);
                }

                string houseName = asrsCtl.HouseName;
                CtlDBAccess.Model.ControlTaskModel task = null;
                foreach (CtlDBAccess.Model.ControlTaskModel t in taskList)
                {
                    if (t.TaskStatus != "待执行")
                    {
                        continue;
                    }
                    string             reStr      = "";
                    AsrsTaskParamModel paramModel = new AsrsTaskParamModel();
                    if (!paramModel.ParseParam(taskType, t.TaskParam, ref reStr))
                    {
                        continue;
                    }
                    AsrsPortalModel port          = asrsCtl.Ports[paramModel.OutputPort - 1];
                    int             switchPathSeq = 1;
                    CellCoordModel  cell          = paramModel.CellPos1;
                    if (asrsCtl.NodeName == "A1库房" || asrsCtl.HouseName == "A2库房")
                    {
                        string area = "注液高温区";
                        if (!this.asrsResManage.GetLogicAreaName(houseName, cell, ref area))
                        {
                            continue;
                        }
                        if (area == "注液高温区")
                        {
                            switchPathSeq = 1;
                        }
                        else if (area == "化成高温区")
                        {
                            switchPathSeq = 2;
                        }
                        else
                        {
                            continue;
                        }
                        if (port.Db2Vals[switchPathSeq] != 1)
                        {
                            continue;
                        }
                    }
                    else if (asrsCtl.HouseName == "C1库房" || asrsCtl.HouseName == "C2库房" || asrsCtl.HouseName == "C3库房")
                    {
                        if (taskType == SysCfg.EnumAsrsTaskType.空筐出库)
                        {
                            if (port.Db2Vals[switchPathSeq] != 1)
                            {
                                continue;
                            }
                        }
                    }

                    AsrsModel.EnumGSEnabledStatus cellEnabledStatus = AsrsModel.EnumGSEnabledStatus.启用;
                    if (!asrsResManage.GetCellEnabledStatus(houseName, paramModel.CellPos1, ref cellEnabledStatus))
                    {
                        // reStr = "获取货位启用状态失败";
                        continue;
                    }
                    if (cellEnabledStatus == AsrsModel.EnumGSEnabledStatus.禁用)
                    {
                        continue;
                    }
                    task = t;
                    break;
                }
                return(task);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(null);
            }
        }