Exemple #1
0
        private void WcsMainTaskCommit()
        {
            DataTable dt = this.dataGridView1.DataSource as DataTable;

            CtlDBAccess.BLL.MainControlTaskBll mainCtlTaskBll = new CtlDBAccess.BLL.MainControlTaskBll();
            foreach (DataRow dr in dt.Rows)
            {
                if (mainCtlTaskBll.Exists(dr["管理任务ID"].ToString()))
                {
                    continue;
                }
                CtlDBAccess.Model.MainControlTaskModel mainCtlTask = new CtlDBAccess.Model.MainControlTaskModel();
                mainCtlTask.WMSTaskID   = dr["管理任务ID"].ToString();
                mainCtlTask.MainTaskID  = dr["管理任务ID"].ToString();
                mainCtlTask.FlowPathKey = dr["起始设备号"].ToString() + "-" + dr["目标设备号"].ToString();
                mainCtlTask.PalletCode  = dr["托盘码"].ToString();
                mainCtlTask.TaskStatus  = "待启动";
                //if(wmsTask.Type == "下架")
                //{
                //    mainCtlTask.TaskType = "产品出库";
                //}
                //else if(wmsTask.Type=="上架")
                //{
                //    mainCtlTask.TaskType = "产品入库";
                //}
                //else
                //{
                //    mainCtlTask.TaskType = wmsTask.Type;
                //}
                mainCtlTask.TaskType = dr["任务类型"].ToString();

                mainCtlTask.StDevice      = dr["起始设备号"].ToString();
                mainCtlTask.StDeviceCata  = dr["起始设备类型"].ToString();//
                mainCtlTask.EndDevice     = dr["目标设备号"].ToString();
                mainCtlTask.EndDeviceCata = dr["目标设备类型"].ToString();
                if (mainCtlTask.StDeviceCata == "货位")
                {
                    mainCtlTask.StDeviceParam = dr["起始设备参数"].ToString();
                }
                if (mainCtlTask.EndDeviceCata == "货位")
                {
                    mainCtlTask.EndDeviceParam = dr["目标设备参数"].ToString();
                }
                mainCtlTask.CreateTime = System.DateTime.Now;
                mainCtlTask.CreateMode = "自动";
                mainCtlTaskBll.Add(mainCtlTask);
            }
        }
Exemple #2
0
        private void WMSTaskMonitorProc()
        {
            foreach (TaskDeviceModel stDev in wmsStDevList)
            {
                List <ManageTaskModel> wmsTasks = new List <ManageTaskModel>();
                ResposeData            res      = WmsSvc.GetWaittingToRunTaskList(stDev, ref wmsTasks);
                if (!res.Status)
                {
                    Console.WriteLine("获取{0}待执行管理任务失败{1}", stDev.DeviceCode, res.Describe);
                    continue;
                }
                foreach (ManageTaskModel wmsTask in wmsTasks)
                {
                    if (mainCtlTaskBll.Exists(wmsTask.TaskID))
                    {
                        continue;
                    }
                    CtlDBAccess.Model.MainControlTaskModel mainCtlTask = new CtlDBAccess.Model.MainControlTaskModel();
                    mainCtlTask.WMSTaskID   = wmsTask.TaskID;
                    mainCtlTask.MainTaskID  = wmsTask.TaskID;
                    mainCtlTask.FlowPathKey = wmsTask.StartDevice.DeviceCode + "-" + wmsTask.TargetDevice.DeviceCode;
                    mainCtlTask.PalletCode  = wmsTask.PalletCode;
                    mainCtlTask.TaskStatus  = "待启动";
                    //if(wmsTask.Type == "下架")
                    //{
                    //    mainCtlTask.TaskType = "产品出库";
                    //}
                    //else if(wmsTask.Type=="上架")
                    //{
                    //    mainCtlTask.TaskType = "产品入库";
                    //}
                    //else
                    //{
                    //    mainCtlTask.TaskType = wmsTask.Type;
                    //}
                    mainCtlTask.TaskType = wmsTask.Type;

                    mainCtlTask.StDevice      = wmsTask.StartDevice.DeviceCode;
                    mainCtlTask.StDeviceCata  = wmsTask.StartDevice.DeviceType;
                    mainCtlTask.EndDevice     = wmsTask.TargetDevice.DeviceCode;
                    mainCtlTask.EndDeviceCata = wmsTask.TargetDevice.DeviceType;
                    if (wmsTask.StartDevice.DeviceType == "货位")
                    {
                        mainCtlTask.StDeviceParam = wmsTask.StartDevice.ExtParam;
                    }
                    if (wmsTask.TargetDevice.DeviceType == "货位")
                    {
                        mainCtlTask.EndDeviceParam = wmsTask.TargetDevice.ExtParam;
                    }
                    mainCtlTask.CreateTime = System.DateTime.Now;
                    mainCtlTask.CreateMode = "自动";
                    mainCtlTaskBll.Add(mainCtlTask);
                }
            }
            string reStr = "";
            //分解主控制任务
            List <CtlDBAccess.Model.MainControlTaskModel> mainTasks = mainCtlTaskBll.GetModelList("TaskStatus = '待启动'");

            foreach (CtlDBAccess.Model.MainControlTaskModel mainTask in mainTasks)
            {
                string pathKey = mainTask.FlowPathKey;
                if (!wcsPathMap.Keys.Contains(pathKey))
                {
                    Console.WriteLine("不存在的路径配置:{0}", pathKey);
                    continue;
                }
                FlowCtlBaseModel.WCSFlowPathModel wcsPath = wcsPathMap[pathKey];
                if (wcsPath.NodeList.Count() < 1)
                {
                    continue;
                }
                FlowCtlBaseModel.WCSPathNodeModel stNode = wcsPath.NodeList[0];
                if (stNode.NodeFlag != "起点")
                {
                    continue;
                }
                string nodeID = stNode.NodeID;
                FlowCtlBaseModel.CtlNodeBaseModel node = NodeManager.GetNodeByID(nodeID);
                if (node == null)
                {
                    continue;
                }
                if (node.DevCata == "站台")
                {
                    if (node.Db2Vals[0] != 2)
                    {
                        continue;
                    }
                }
                if (!node.WCSMainTaskStart(mainTask, wcsPath, ref reStr))
                {
                    Console.WriteLine("{0} 启动任务:{1}失败,{2}", node.NodeName, mainTask.WMSTaskID, reStr);
                }
                else
                {
                    WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "执行中");
                    Console.WriteLine("主控制任务{0},{1}->{2}准备启动", mainTask.MainTaskID, mainTask.StDevice, mainTask.EndDevice);
                }
            }

            /*
             * foreach(string pathKey in wcsPathMap.Keys)
             * {
             *  FlowCtlBaseModel.WCSFlowPathModel wcsPath = wcsPathMap[pathKey];
             *  if(wcsPath.NodeList.Count()<1)
             *  {
             *      continue;
             *  }
             *
             *  FlowCtlBaseModel.WCSPathNodeModel stNode= wcsPath.NodeList[0];
             *  if(stNode.NodeFlag !="起点")
             *  {
             *      continue;
             *  }
             *  string nodeID = stNode.NodeID;
             *  FlowCtlBaseModel.CtlNodeBaseModel node = NodeManager.GetNodeByID(nodeID);
             *  if(node == null)
             *  {
             *      continue;
             *  }
             *  //生成第一个控制任务
             *  List<CtlDBAccess.Model.MainControlTaskModel> mainTasks= mainCtlTaskBll.GetModelList(string.Format("TaskStatus = '待执行' and StDevice='{0}'", nodeID));
             *  foreach(CtlDBAccess.Model.MainControlTaskModel mainTask in mainTasks)
             *  {
             *      if(!node.WCSMainTaskStart(mainTask, wcsPath, ref reStr))
             *      {
             *          Console.WriteLine("{0} 启动任务:{1}失败,{2}", node.NodeName, mainTask.WMSTaskID,reStr);
             *      }
             *      else
             *      {
             *          WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "执行中");
             *      }
             *  }
             * }*/
        }