예제 #1
0
파일: WmsToWcsSvr.cs 프로젝트: qq5013/WMS-6
        /// <summary>
        /// 更新指定管理任务状态
        /// </summary>
        /// <param name="manageTaskID">管理任务ID</param>
        /// <param name="taskStatus">管理任务状态:待执行,执行中,完成</param>
        /// <returns></returns>
        public ResposeData UpdateManageTaskStatus(string manageTaskID, string taskStatus)
        {
            ResposeData response = new ResposeData();

            try
            {
                ManageModel task = bllManage.GetModel(manageTaskID);
                if (task == null)
                {
                    response.Status   = false;
                    response.Describe = "任务状态更改失败!无此任务ID!";
                }
                task.Mange_Status = taskStatus;
                if (taskStatus == EnumManageTaskStatus.执行中.ToString())
                {
                    task.Manage_Begin_Time = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                }
                else if (taskStatus == EnumManageTaskStatus.已完成.ToString())
                {
                    task.Manage_End_Time = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                }
                bllManage.Update(task);
                response.Status   = true;
                response.Describe = "任务状态更改成功!";
                return(response);
            }
            catch (Exception ex)
            {
                response.Status   = false;
                response.Describe = "任务状态更改失败!" + ex.Message;
                return(response);
            }
        }
예제 #2
0
        public ResposeData GetWaittingToRunTaskList(TaskDeviceModel stDevice, ref List <ManageTaskModel> manageTaskList)
        {
            manageTaskList = new List <ManageTaskModel>();
            ResposeData res = new ResposeData();

            res.Status = true;
            if (wmsTaskDt == null)
            {
                return(res);
            }
            foreach (DataRow dr in wmsTaskDt.Rows)
            {
                if (dr["起始设备号"].ToString() == stDevice.DeviceCode && dr["任务状态"].ToString() == "待执行")
                {
                    ManageTaskModel manTask = new ManageTaskModel();
                    manTask.TaskID                = dr["管理任务ID"].ToString();
                    manTask.Type                  = dr["任务类型"].ToString();
                    manTask.Status                = dr["任务类型"].ToString();
                    manTask.PalletCode            = dr["托盘码"].ToString();
                    manTask.StartDevice           = new TaskDeviceModel(dr["起始设备号"].ToString(), dr["起始设备类型"].ToString());
                    manTask.StartDevice.ExtParam  = dr["起始设备参数"].ToString();
                    manTask.TargetDevice          = new TaskDeviceModel(dr["目标设备号"].ToString(), dr["目标设备类型"].ToString());
                    manTask.TargetDevice.ExtParam = dr["目标设备参数"].ToString();
                    manTask.Remark                = dr["备注"].ToString();
                    manageTaskList.Add(manTask);
                }
            }

            return(res);
        }
예제 #3
0
파일: WmsToWcsSvr.cs 프로젝트: qq5013/WMS-6
        /// <summary>
        /// 获取所有待执行任务,wcs分解完一个管理任务后要将此任务状态更新为执行中状态
        /// </summary>
        /// <param name="manageTaskList"></param>
        /// <returns></returns>
        public ResposeData GetWaittingToRunTaskList(TaskDeviceModel stDevice, ref List <ManageTaskModel> manageTaskList)
        {
            ResposeData response = new ResposeData();

            manageTaskList = new List <ManageTaskModel>();
            try
            {
                List <View_Manage_CellModel> taskList = bllViewManageCell.GetWattingTaskByDeviceCode(stDevice.DeviceCode);
                if (taskList == null)
                {
                    response.Status   = true;
                    response.Describe = "没有待执行的任务!";
                    return(response);
                }

                foreach (View_Manage_CellModel manageModel in taskList)
                {
                    ManageTaskModel manage = new ManageTaskModel();
                    manage.PalletCode = manageModel.Mange_Stock_Barcode;
                    TaskDeviceModel startDevice = new TaskDeviceModel();
                    View_CellModel  startCell   = bllViewCell.GetModelByChildCellID(manageModel.Mange_Start_Cell_ID);
                    if (startCell == null)
                    {
                        response.Status   = false;
                        response.Describe = "起始设备编码错误!";
                        return(response);
                    }
                    startDevice = FillTaskDevice(startCell, manageModel.Mange_Start_Cell_ID);

                    manage.StartDevice = startDevice;
                    manage.Status      = manageModel.Mange_Status;
                    View_CellModel targetCell = bllViewCell.GetModelByChildCellID(manageModel.Mange_End_Cell_ID);
                    if (targetCell == null)
                    {
                        response.Status   = false;
                        response.Describe = "目标设备编码错误!";
                        return(response);
                    }

                    TaskDeviceModel targetDevice = FillTaskDevice(targetCell, manageModel.Mange_End_Cell_ID);

                    manage.TargetDevice = targetDevice;
                    manage.TaskID       = manageModel.Mange_ID;
                    manage.Type         = manageModel.Manage_Type_Name;
                    manageTaskList.Add(manage);
                }
                response.Status   = true;
                response.Describe = "获取等待执行任务成功!";
                return(response);
            }
            catch (Exception ex)
            {
                response.Status   = true;
                response.Describe = "获取等待执行任务失败!" + ex.Message;
                return(response);
            }
        }
예제 #4
0
        private void activate_btn_Click(object sender, EventArgs e)
        {
            string     Number1 = numver_txtbx.Text.Trim();
            string     ApiReq1 = "https://api.urbanpiper.com/api/v1/card/activate/?format=json&customer_phone=91#replace#&username=zubin_urbanpiper&api_key=12345";
            string     ApiReq2 = ApiReq1.Replace("#replace#", Number1);
            WebRequest request = WebRequest.Create(ApiReq2);

            //Stopwatch timer = new Stopwatch();
            //timer.Start();

            WebResponse response   = request.GetResponse();
            Stream      dataStream = response.GetResponseStream();

            //timer.Stop();
            //TimeSpan timetaken = timer.Elapsed;

            //numver_txtbx.Text = timetaken.TotalSeconds.ToString();

            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ResposeData));
            ResposeData datagot = (ResposeData)serializer.ReadObject(dataStream);

            PayForm1 pf = new PayForm1(numver_txtbx.Text);

            string status = datagot.success;

            if (status == "False")
            {
                this.Hide();
                pf.ShowDialog();
            }
            else
            {
                congrats_lbl1.Visible = true;
                this.Enabled          = false;
                WaitSomeTime();
                this.Hide();
                pf.ShowDialog();
            }

            /*
             * // Open the stream using a StreamReader for easy access.
             * StreamReader reader = new StreamReader(dataStream);
             * // Read the content.
             * string responseFromServer = reader.ReadToEnd();
             * // Display the content.
             * experi_txtbx.Text = responseFromServer;
             */
        }
예제 #5
0
        public ResposeData List()
        {
            ResposeData responseData = new ResposeData();

            var logic = new UserLogic();

            try {
                var users = logic.GetUsers();
                responseData.Status     = "success";
                responseData.ResultData = users;
            } catch (Exception e) {
                Console.WriteLine(e.ToString());
                responseData.Status     = "error";
                responseData.ResultData = null;
            }

            return(responseData);
        }
예제 #6
0
        public ResposeData Delete(RequestData requestData)
        {
            string userId = requestData.UserId;

            ResposeData responseData = new ResposeData();
            var         logic        = new UserLogic();

            try {
                logic.DeleteUser(userId);
                responseData.Status     = "success";
                responseData.ResultData = userId;
            } catch (Exception e) {
                Console.WriteLine(e.ToString());
                responseData.Status     = "error";
                responseData.ResultData = null;
            }

            return(responseData);
        }
예제 #7
0
        public ResposeData UpdateManageTaskStatus(string manageTaskID, string taskStatus)
        {
            ResposeData res = new ResposeData();

            res.Status = true;
            if (this.wmsTaskDt != null)
            {
                foreach (DataRow dr in this.wmsTaskDt.Rows)
                {
                    if (dr["管理任务ID"].ToString() == manageTaskID)
                    {
                        dr["任务状态"] = taskStatus;
                        break;
                    }
                }
            }
            return(res);
            // throw new NotImplementedException();
        }
예제 #8
0
파일: WmsToWcsSvr.cs 프로젝트: qq5013/WMS-6
        /// <summary>
        /// wcs向wms请求任务
        /// </summary>
        /// <param name="applyTask"></param>
        /// <returns></returns>
        public ResposeData RequireTask(RequireTaskModel requireTask)
        {
            ResposeData response = new ResposeData();

            if (requireTask == null)
            {
                response.Status   = false;
                response.Describe = "请求任务对象为空!";
                return(response);
            }


            try
            {
                ManageModel existMana = bllManage.GetModelByPalletCode(requireTask.PalletCode);
                if (existMana != null)
                {
                    response.Status   = false;
                    response.Describe = "此托盘任务已经生成!";
                    return(response);
                }
                ManageModel manage = new ManageModel();
                manage.Mange_ID = Guid.NewGuid().ToString();
                WH_Station_LogicModel stationLogic = bllStationLogic.GetModelByCellID(requireTask.RequireDevice.DeviceCode);
                if (stationLogic == null)
                {
                    response.Status   = false;
                    response.Describe = "请求设备编号错误!";
                    return(response);
                }

                if (requireTask.RequireType == EnumRequireTaskType.空筐入库.ToString())//入库请求设备对应指定库房编码,库房编码和堆垛机编码一致
                {
                    //通过stationLogic得知申请的是哪个库房的入库
                    View_CellModel targetModel = bllViewCell.ApplyCell(stationLogic.WareHouse_ID);
                    if (targetModel == null)
                    {
                        response.Status   = false;
                        response.Describe = "已经没有货位可以申请了!";
                        return(response);
                    }

                    manage.Mange_Stock_Barcode     = requireTask.PalletCode;
                    manage.Manage_BreakDown_Status = "FALSE";
                    manage.Mange_End_Cell_ID       = targetModel.Cell_Chlid_ID;
                    manage.Mange_Full_Flag         = "0";
                    manage.Mange_Start_Cell_ID     = requireTask.RequireDevice.DeviceCode;
                    manage.Mange_Status            = EnumManageTaskStatus.待执行.ToString();
                    manage.Mange_Type_ID           = "7";//空托盘上架
                }
                else if (requireTask.RequireType == EnumRequireTaskType.空筐出库.ToString())
                {
                    View_CellModel emptyPalletCell = bllViewCell.GetEmptyPalletCell();
                    if (emptyPalletCell == null)
                    {
                        response.Status   = false;
                        response.Describe = "已经没有空托盘可以申请了!";
                        return(response);
                    }

                    manage.Manage_BreakDown_Status = "FALSE";
                    manage.Mange_End_Cell_ID       = requireTask.RequireDevice.DeviceCode;
                    manage.Mange_Full_Flag         = "0";

                    manage.Mange_Start_Cell_ID = emptyPalletCell.Cell_Chlid_ID;
                    manage.Mange_Status        = EnumManageTaskStatus.待执行.ToString();
                    manage.Mange_Stock_Barcode = requireTask.PalletCode;
                    manage.Mange_Type_ID       = "9";//空托盘下架
                }
                else
                {
                    response.Status   = false;
                    response.Describe = "请求任务类型错误!";
                    return(response);
                }
                bllManage.Add(manage);

                response.Status   = true;
                response.Describe = "任务请求成功!";
                return(response);
            }
            catch (Exception ex)
            {
                response.Status   = false;
                response.Describe = "任务请求失败!" + ex.Message;
                return(response);
            }
        }
예제 #9
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, "执行中");
             *      }
             *  }
             * }*/
        }