/// <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(); }