예제 #1
0
        /// <summary>
        /// 更新某一设备故障报警情况
        /// </summary>
        public override string UpdateDeviceFault(CarLocationPanelLib.PushService.CDeviceFaultDto deviceFault)
        {
            string strResult = string.Empty;

            if (!CStaticClass.GetPushServiceConnectFlag())
            {// 服务器通道断开时
                return(strResult);
            }

            QueryServiceClient proxy = new QueryServiceClient();

            if (null == deviceFault.devicecode)
            {
                return(strResult);
            }

            CarLocationPanelLib.QueryService.CDeviceStatusDto deviceStatus = proxy.GetDeviceStatus(m_wareHouse, (int)deviceFault.devicecode);

            if (null == deviceStatus)
            {
                return(strResult);
            }

            List <CarLocationPanelLib.QueryService.CDeviceFaultDto> lstDeviceFault = proxy.GetDeviceFault(m_wareHouse, deviceStatus.devicecode, string.Empty);

            lstDeviceFault = lstDeviceFault.FindAll(s => s.color == 1);

            if ((int)EnmSMGType.ETV == deviceStatus.devicetype)
            {
                Label lblTV = m_lLblETVEquip.Find(s => s.Name == deviceStatus.devicecode.ToString());
                if (null == lblTV)
                {
                    return(strResult);
                }
                // ETV设备
                if (0 >= lstDeviceFault.Count)
                {// 该设备无报警
                 // 正在作业ETV颜色为蓝色、不可用/不可接受指令为黄色、正常绿色
                    SetDeviceBackColor(lblTV, deviceStatus);
                }
                else
                {
                    lblTV.BackColor = Color.Red;
                    strResult       = CStaticClass.ConvertWareHouse(m_wareHouse) + CStaticClass.ConvertHallDescp(m_wareHouse, deviceStatus.devicecode);//  "   " + m_wareHouse + "#库车厅" + deviceStatus.devicecode;
                }
            }
            else
            {// 车厅
             // 根据当前库车位信息列表设置车位状态
                DataGridView     dgvHall = null;
                DataGridViewCell dgvc    = null;

                List <string> hallsAddrs = new List <string>();
                hallsAddrs.Add(deviceStatus.deviceaddr.Substring(0, 3) + "03");
                hallsAddrs.Add(deviceStatus.deviceaddr.Substring(0, 3) + "02");
                hallsAddrs.Add(deviceStatus.deviceaddr.Substring(0, 3) + "01");
                foreach (string hallAddrs in hallsAddrs)
                {
                    GetDgvcIndexByAddr(hallAddrs, ref dgvHall, ref dgvc);
                    if (null == dgvc || (int)EnmSMGType.Hall != deviceStatus.devicetype)
                    {
                    }
                    else if (0 >= lstDeviceFault.Count)
                    {
                        // 该设备无报警
                        //不可用/不可接受指令为黄色
                        if ((int)EnmModel.Automatic != deviceStatus.devicemode)
                        {
                            dgvc.Style.BackColor = Color.LightGray;
                        }
                        else if (deviceStatus.isable == 0)
                        {
                            dgvc.Style.BackColor = Color.Brown;
                        }
                        else if (!CBaseMethods.MyBase.IsEmpty(deviceStatus.tasktype))
                        {
                            dgvc.Style.BackColor = Color.LightPink;
                        }
                        else if (deviceStatus.isavailable == 0)
                        {
                            dgvc.Style.BackColor = Color.Yellow;
                        }
                        else
                        {
                            dgvc.Style.BackColor = Color.PaleGreen;
                        }
                    }
                    else
                    {                                                                                                                                            // 该设备有报警
                        dgvc.Style.BackColor = Color.Red;
                        strResult            = CStaticClass.ConvertWareHouse(m_wareHouse) + CStaticClass.ConvertHallDescp(m_wareHouse, deviceStatus.devicecode); //  "   " + m_wareHouse + "#库车厅" + deviceStatus.devicecode;
                    }
                }
            }
            proxy.Close();
            return(strResult);
        }
        /// <summary>
        /// 初始化设备状态值列表
        /// </summary>
        private void InitDgvDeviceStatus()
        {
            if (!CStaticClass.GetPushServiceConnectFlag())
            {// 服务器通道断开时
                return;
            }

            QueryServiceClient proxy = new QueryServiceClient();

            //try
            //{
            //
            // DgvDeviceStatus
            //
            ((System.ComponentModel.ISupportInitialize)(DgvDeviceStatus)).BeginInit();
            DgvDeviceStatus.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
            DgvDeviceStatus.Location            = new System.Drawing.Point(7, 19);
            DgvDeviceStatus.Name = "DgvDeviceStatus";
            DgvDeviceStatus.RowTemplate.Height         = 23;
            DgvDeviceStatus.TabIndex                   = 7;
            DgvDeviceStatus.AllowUserToAddRows         = false;
            DgvDeviceStatus.AllowUserToResizeColumns   = false;
            DgvDeviceStatus.AllowUserToResizeRows      = false;
            DgvDeviceStatus.ScrollBars                 = ScrollBars.Both;
            DgvDeviceStatus.CellBorderStyle            = DataGridViewCellBorderStyle.Raised;
            DgvDeviceStatus.EditMode                   = DataGridViewEditMode.EditProgrammatically;
            DgvDeviceStatus.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //DgvDeviceStatus.DefaultCellStyle.SelectionBackColor = System.Drawing.Color.Transparent;
            DgvDeviceStatus.ColumnHeadersHeightSizeMode             = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
            DgvDeviceStatus.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DgvDeviceStatus.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
            //DgvDeviceStatus.CellClick += new DataGridViewCellEventHandler(dgv_CellClick);
            //DgvDeviceStatus.SelectionChanged += new EventHandler(dgv_SelectionChanged);
            List <object> lstWareHouse      = CStaticClass.ConfigLstWareHouse();
            List <object> lstWareHouseDescp = CStaticClass.ConfigLstWareHouseDescp();
            List <object> lstETV            = new List <object>();
            List <object> lstHall           = new List <object>();
            int           nHeight           = DgvDeviceStatus.ColumnHeadersHeight + 3;

            for (int j = 0; j < lstWareHouse.Count; j++)
            {     // 增加列
                lstETV.AddRange(CStaticClass.ConfigLstETVOrTVDeviceID(Convert.ToInt32(lstWareHouse[j])));
                lstHall.AddRange(CStaticClass.ConfigLstHallDeviceID(Convert.ToInt32(lstWareHouse[j])));
                DgvDeviceStatus.Columns.Add("w" + lstWareHouse[j], lstWareHouseDescp[j].ToString());     // + "# 库");
                DgvDeviceStatus.Columns[j].SortMode = DataGridViewColumnSortMode.NotSortable;
            }

            // 去除重复的数据
            lstETV  = lstETV.Distinct().ToList();
            lstHall = lstHall.Distinct().ToList();
            for (int j = 0; j < lstETV.Count; j++)
            {                                                                                       // 增加行
                DgvDeviceStatus.Rows.Add();
                DgvDeviceStatus.Rows[j].HeaderCell.Value = CStaticClass.ConvertETVDescp(lstETV[j]); // lstETV[j] + "# ETV";
                DgvDeviceStatus.Rows[j].Tag = lstETV[j];
                nHeight += DgvDeviceStatus.Rows[j].Height;
                for (int k = 0; k < DgvDeviceStatus.ColumnCount; k++)
                {
                    int nWareHouse = 0;
                    int.TryParse(DgvDeviceStatus.Columns[k].Name.Substring(1), out nWareHouse);
                    DgvDeviceStatus.Rows[j].Cells[k].Tag = nWareHouse + "-" + lstETV[j];
                    CarLocationPanelLib.QueryService.CDeviceStatusDto deviceStatus = proxy.GetDeviceStatus(nWareHouse, Convert.ToInt32(lstETV[j]));
                    if (null != deviceStatus)
                    {
                        if (null != deviceStatus.isable && 0 != (int)deviceStatus.isable)
                        {
                            DgvDeviceStatus.Rows[j].Cells[k].Value = "可用";
                        }
                        else
                        {
                            DgvDeviceStatus.Rows[j].Cells[k].Value = "不可用";
                        }
                        //DgvDeviceStatus.Rows[j].Cells[k].Value = CStaticClass.ConvertBoolType(deviceStatus.isable);
                        //DgvDeviceStatus.Rows[j].Cells[k].Style.BackColor = deviceStatus.isable == 0 ? Color.Red : Color.Green;
                    }
                    else
                    {
                        DgvDeviceStatus.Rows[j].Cells[k].Value = "无";
                    }
                }
            }

            for (int j = 0; j < lstHall.Count; j++)
            {     // 增加行
                int row = j + lstETV.Count;
                DgvDeviceStatus.Rows.Add();
                DgvDeviceStatus.Rows[row].HeaderCell.Value = CStaticClass.ConvertHallDescp(lstHall[j]);     // lstHall[j] + "# 车厅";
                DgvDeviceStatus.Rows[row].Tag = lstHall[j];
                nHeight += DgvDeviceStatus.Rows[row].Height;
                for (int k = 0; k < DgvDeviceStatus.ColumnCount; k++)
                {
                    int nWareHouse = 0;
                    int.TryParse(DgvDeviceStatus.Columns[k].Name.Substring(1), out nWareHouse);
                    DgvDeviceStatus.Rows[row].Cells[k].Tag = nWareHouse + "-" + lstHall[j];
                    CarLocationPanelLib.QueryService.CDeviceStatusDto deviceStatus = proxy.GetDeviceStatus(nWareHouse, Convert.ToInt32(lstHall[j]));
                    if (null != deviceStatus)
                    {
                        if (null != deviceStatus.isable && 0 != (int)deviceStatus.isable)
                        {
                            DgvDeviceStatus.Rows[row].Cells[k].Value = "可用";
                        }
                        else
                        {
                            DgvDeviceStatus.Rows[row].Cells[k].Value = "不可用";
                        }

                        //DgvDeviceStatus.Rows[row].Cells[k].Value = CStaticClass.ConvertBoolType(deviceStatus.isable);
                        //DgvDeviceStatus.Rows[row].Cells[k].Style.BackColor = deviceStatus.isable == 0 ? Color.Red : Color.Green;
                    }
                    else
                    {
                        DgvDeviceStatus.Rows[row].Cells[k].Value = "无";
                    }
                }
            }

            nHeight = Math.Min(nHeight, this.groupBox3.Height - DgvDeviceStatus.Location.Y);
            DgvDeviceStatus.Size = new System.Drawing.Size(735, nHeight);
            this.groupBox3.Controls.Add(DgvDeviceStatus);
            ((System.ComponentModel.ISupportInitialize)(DgvDeviceStatus)).EndInit();
            //}
            //catch (TimeoutException)
            //{
            //    MessageBox.Show("The service operation timed out. ", "超时", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
            //catch (FaultException exception)
            //{
            //    MessageBox.Show(CStaticClass.GetExceptionInfo(exception), "SOAP错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
            //catch (CommunicationException exception)
            //{
            //    MessageBox.Show("There was a communication problem. " + CStaticClass.GetExceptionInfo(exception), "通信错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
            //catch (Exception exception)
            //{
            //    MessageBox.Show(CStaticClass.GetExceptionInfo(exception), "应用程序异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
            proxy.Close();
        }