예제 #1
0
 /// <summary>
 /// 初始化车厅流程图界面
 /// </summary>
 private void InitializeGbHall()
 {
     foreach (int nWareHouse in CStaticClass.ConfigLstWareHouse())
     {
         foreach (int nHall in CStaticClass.ConfigLstHallDeviceID(nWareHouse))
         {
             GroupBox GbWH = new GroupBox();
             CUserFlowChartControl CuffccWHE1 = new CUserFlowChartControl();
             CUserFlowChartControl CuffccWHE2 = new CUserFlowChartControl();
             //
             // GbWH
             //
             GbWH.Controls.Add(CuffccWHE1);
             GbWH.Controls.Add(CuffccWHE2);
             GbWH.Name    = "GbW" + nWareHouse + "Hall" + nHall;
             GbWH.Size    = new Size(1040, 93);
             GbWH.TabStop = false;
             GbWH.Text    = CStaticClass.ConvertWareHouse(nWareHouse) + CStaticClass.ConvertHallDescp(nWareHouse, nHall) + "流程图:";
             //
             // CuffccWHE1
             //
             CuffccWHE1.EnumFlowTaskType = EnmFlowTaskType.Init;
             CuffccWHE1.Font             = new Font("宋体", 9F);
             CuffccWHE1.Name             = "CuffccW" + nWareHouse + "Hall" + nHall + "E1";
             CuffccWHE1.Size             = new Size(80, 50);
             CuffccWHE1.Text             = "cUserFlowChartControl1";
             CuffccWHE1.CallbackResize  += new RefreshCallback(CallBackOnResize);
             //
             // CuffccWHE2
             //
             CuffccWHE2.EnumFlowTaskType = EnmFlowTaskType.Init;
             CuffccWHE2.Font             = new Font("宋体", 9F);
             CuffccWHE2.Name             = "CuffccW" + nWareHouse + "Hall" + nHall + "E2";
             CuffccWHE2.Size             = new Size(80, 50);
             CuffccWHE2.Visible          = false;
             CuffccWHE2.Text             = "cUserFlowChartControl1";
             CuffccWHE2.CallbackResize  += new RefreshCallback(CallBackOnResize);
             this.tabPage1.Controls.Add(GbWH);
         }
     }
 }
예제 #2
0
        /// <summary>
        /// 设置某个车厅的流程图
        /// </summary>
        /// <param name="dr"></param>
        /// <param name="cufccTempE1"></param>
        /// <param name="cufccTempE2"></param>
        private void SetHallFlowChart(CarLocationPanelLib.PushService.CDeviceStatusDto deviceStatus, CUserFlowChartControl cufccTempE1, CUserFlowChartControl cufccTempE2)
        {
            int nPrevNode         = 0;
            int nCurrentNode      = 0;
            int nQueuePrevNode    = 0;
            int nQueueCurrentNode = 0;

            if (!CBaseMethods.MyBase.IsEmpty(deviceStatus.prevnode))
            {
                nPrevNode = (int)deviceStatus.prevnode;
            }

            if (!CBaseMethods.MyBase.IsEmpty(deviceStatus.currentnode))
            {
                nCurrentNode = (int)deviceStatus.currentnode;
            }

            if (!CBaseMethods.MyBase.IsEmpty(deviceStatus.queueprevnode))
            {
                nQueuePrevNode = (int)deviceStatus.queueprevnode;
            }

            if (!CBaseMethods.MyBase.IsEmpty(deviceStatus.queuecurrentnode))
            {
                nQueueCurrentNode = (int)deviceStatus.queuecurrentnode;
            }

            if (CBaseMethods.MyBase.IsEmpty(deviceStatus.tasktype))
            {
                if (EnmFlowTaskType.Init != cufccTempE1.EnumFlowTaskType)
                {
                    cufccTempE1.EnumFlowTaskType = EnmFlowTaskType.Init;
                }

                cufccTempE2.Visible = false;
                return;
            }

            EnmFlowTaskType enmFlow = EnmFlowTaskType.Init;

            bool IsTower = false;// 塔库标志

            if (2 == deviceStatus.warehouse)
            {// 塔库
                IsTower = true;
            }

            switch ((EnmTaskType)deviceStatus.tasktype)
            {
            case EnmTaskType.EntryTask:
            {
                if (IsTower)
                {
                    enmFlow = EnmFlowTaskType.TowerEnter;
                }
                else
                {
                    enmFlow = EnmFlowTaskType.NormEnter;
                }
                cufccTempE2.Visible = false;
                break;
            }

            case EnmTaskType.ExitTask:
            {
                if (IsTower)
                {
                    enmFlow = EnmFlowTaskType.TowerExit;
                }
                else
                {
                    enmFlow = EnmFlowTaskType.NormExit;
                }

                // 取车排队处理
                if (0 == nQueuePrevNode && 0 == nQueueCurrentNode)
                {
                    cufccTempE2.Visible = false;
                }
                else
                {
                    cufccTempE2.Visible = true;
                    if (cufccTempE2.EnumFlowTaskType == EnmFlowTaskType.QueueExit)
                    {
                        cufccTempE2.SetFlowChartRunStatus(nQueuePrevNode, nQueueCurrentNode);
                    }
                    else
                    {
                        cufccTempE2.EnumFlowTaskType = EnmFlowTaskType.QueueExit;
                        cufccTempE2.SetFlowChartRunStatus(nQueuePrevNode, nQueueCurrentNode);
                    }
                }
                break;
            }

            case EnmTaskType.TmpFetch:
            {
                enmFlow             = EnmFlowTaskType.TmpFetch;
                cufccTempE2.Visible = false;
                break;
            }

            case EnmTaskType.MoveCarTask:
            {
                enmFlow             = EnmFlowTaskType.MoveCar;
                cufccTempE2.Visible = false;
                break;
            }

            case EnmTaskType.MoveEquipTask:
            {
                enmFlow             = EnmFlowTaskType.MoveEquip;
                cufccTempE2.Visible = false;
                break;
            }

            default:
            {
                cufccTempE2.Visible = false;
                break;
            }
            }

            if (enmFlow == cufccTempE1.EnumFlowTaskType)
            {
                if (EnmFlowTaskType.Init != enmFlow)
                {
                    cufccTempE1.SetFlowChartRunStatus(nPrevNode, nCurrentNode);
                }
            }
            else
            {
                cufccTempE1.EnumFlowTaskType = enmFlow;
                cufccTempE1.SetFlowChartRunStatus(nPrevNode, nCurrentNode);
            }
            this.OnResize(null);
        }
예제 #3
0
        /// <summary>
        /// 更新当前流程
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void UpdateFlowChart(CarLocationPanelLib.PushService.CDeviceStatusDto deviceStatus)
        {
            try
            {
                if (null == deviceStatus || (int)EnmSMGType.Hall != deviceStatus.devicetype)
                {
                    return;
                }

                string  strKey  = "GbW" + deviceStatus.warehouse + "Hall" + deviceStatus.devicecode;
                Control control = this.tabPage1.Controls[strKey];// GbW1Hall11
                if (null == control)
                {
                    return;
                }
                Control controlE1 = null;
                Control controlE2 = null;

                if (1 < control.Controls.Count)
                {
                    controlE1 = control.Controls[1];
                }
                if (0 < control.Controls.Count)
                {
                    controlE2 = control.Controls[0];
                }

                if (null == controlE1 || typeof(CUserFlowChartControl) != controlE1.GetType() ||
                    null == controlE2 || typeof(CUserFlowChartControl) != controlE2.GetType())
                {
                    return;
                }

                CUserFlowChartControl cufccTempE1 = (CUserFlowChartControl)controlE1;
                CUserFlowChartControl cufccTempE2 = (CUserFlowChartControl)controlE2;
                cufccTempE1.Visible = true;
                cufccTempE2.Visible = true;

                // InvokeRequired需要比较调用线程ID和创建线程ID
                // 如果它们不相同则返回true
                if (cufccTempE1.InvokeRequired || cufccTempE2.InvokeRequired)
                {
                    CUserFlowChartControlCallback d = new CUserFlowChartControlCallback(SetHallFlowChart);
                    this.Invoke(d, deviceStatus, cufccTempE1, cufccTempE2);
                }
                else
                {
                    SetHallFlowChart(deviceStatus, cufccTempE1, cufccTempE2);
                }

                #region 流程处理
                int nPrevNode         = 0;
                int nCurrentNode      = 0;
                int nQueuePrevNode    = 0;
                int nQueueCurrentNode = 0;

                if (!CBaseMethods.MyBase.IsEmpty(deviceStatus.prevnode))
                {
                    nPrevNode = (int)deviceStatus.prevnode;
                }

                if (!CBaseMethods.MyBase.IsEmpty(deviceStatus.currentnode))
                {
                    nCurrentNode = (int)deviceStatus.currentnode;
                }

                if (!CBaseMethods.MyBase.IsEmpty(deviceStatus.queueprevnode))
                {
                    nQueuePrevNode = (int)deviceStatus.queueprevnode;
                }

                if (!CBaseMethods.MyBase.IsEmpty(deviceStatus.queuecurrentnode))
                {
                    nQueueCurrentNode = (int)deviceStatus.queuecurrentnode;
                }

                if (CBaseMethods.MyBase.IsEmpty(deviceStatus.tasktype))
                {
                    if (EnmFlowTaskType.Init == cufccTempE1.EnumFlowTaskType)
                    {
                        cufccTempE1.SetFlowChartRunStatus(nPrevNode, nCurrentNode);
                    }
                    else
                    {
                        cufccTempE1.EnumFlowTaskType = EnmFlowTaskType.Init;
                    }

                    cufccTempE2.Visible = false;
                    return;
                }

                EnmFlowTaskType enmFlow = EnmFlowTaskType.Init;

                bool IsTower = false;// 塔库标志

                if (2 == deviceStatus.warehouse)
                {// 塔库
                    IsTower = true;
                }

                switch ((EnmTaskType)deviceStatus.tasktype)
                {
                case EnmTaskType.EntryTask:
                {
                    if (IsTower)
                    {
                        enmFlow = EnmFlowTaskType.TowerEnter;
                    }
                    else
                    {
                        enmFlow = EnmFlowTaskType.NormEnter;
                    }
                    cufccTempE2.Visible = false;
                    break;
                }

                case EnmTaskType.ExitTask:
                {
                    if (IsTower)
                    {
                        enmFlow = EnmFlowTaskType.TowerExit;
                    }
                    else
                    {
                        enmFlow = EnmFlowTaskType.NormExit;
                    }

                    // 取车排队处理
                    if (0 == nQueuePrevNode && 0 == nQueueCurrentNode)
                    {
                        cufccTempE2.Visible = false;
                    }
                    else
                    {
                        cufccTempE2.Visible = true;
                        if (cufccTempE2.EnumFlowTaskType == EnmFlowTaskType.QueueExit)
                        {
                            cufccTempE2.SetFlowChartRunStatus(nQueuePrevNode, nQueueCurrentNode);
                        }
                        else
                        {
                            cufccTempE2.EnumFlowTaskType = EnmFlowTaskType.QueueExit;
                        }
                    }
                    break;
                }

                case EnmTaskType.TmpFetch:
                {
                    enmFlow             = EnmFlowTaskType.TmpFetch;
                    cufccTempE2.Visible = false;
                    break;
                }

                case EnmTaskType.MoveCarTask:
                {
                    enmFlow             = EnmFlowTaskType.MoveCar;
                    cufccTempE2.Visible = false;
                    break;
                }

                case EnmTaskType.MoveEquipTask:
                {
                    enmFlow             = EnmFlowTaskType.MoveEquip;
                    cufccTempE2.Visible = false;
                    break;
                }

                default:
                {
                    cufccTempE2.Visible = false;
                    break;
                }
                }

                if (enmFlow == cufccTempE1.EnumFlowTaskType)
                {
                    cufccTempE1.SetFlowChartRunStatus(nPrevNode, nCurrentNode);
                }
                else
                {
                    cufccTempE1.EnumFlowTaskType = enmFlow;
                }
                #endregion
            }
            catch (System.Exception exception)
            {
                MessageBox.Show(CStaticClass.GetExceptionInfo(exception), "应用程序异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }