/******************************************************************************* * Copyright(c) 2015 DongkeSoft All rights reserved. / Confidential * 类的信息: * 1.程序名称:F_RPT_080114.cs * 2.功能描述:QC检验数据明细表 * 编辑履历: * 作者 日期 版本 修改内容 * 秦祺 2022/12/09 1.00 新建 *******************************************************************************/ using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Client.CommonModule; using Dongke.IBOSS.PRD.Client.Controls; using Dongke.IBOSS.PRD.Client.DataModels; using Dongke.IBOSS.PRD.Client.PMModule; using Dongke.IBOSS.PRD.WCF.DataModels; using Dongke.IBOSS.PRD.WCF.Proxys; namespace Dongke.IBOSS.PRD.Client.ReportModule { public partial class F_RPT_080114 : DKDockPanelBase { #region 成员变量 // 窗体的单例模式 private static F_RPT_080114 _instance; #region 定义数据类型 //输入模糊查询字段之后,返回的关键词 List listNew = new List(); //下拉框初始化数据绑定 List listOnit = new List(); //数据库查询原始数据 List selectList = new List(); /// /// 空间所需类 /// public class cbinpectname { /// /// id /// public string ITEMSID { get; set; } /// /// 检验类型 /// public string INSPECTTYPE { get; set; } /// /// 名称 /// public string INSPECTNAME { get; set; } } /// /// 数据库查询数据返回类 /// public class cbinpectnameType : cbinpectname { /// /// 版本号 /// public string INSPECTVERSION { get; set; } /// /// 是否有效 /// public string VALUEFLAG { get; set; } } #endregion #endregion #region 构造函数 public F_RPT_080114() { InitializeComponent(); // 窗体显示的Title this.Text = "QC检验数据明细表"; this.btnSearch.Text = ButtonText.BTN_SEARCH; this.tsbtnAdaptive.Text = ButtonText.TSBTN_ADAPTIVE; this.tsbtnClose.Text = ButtonText.TSBTN_CLOSE; this.btnClearCondition.Text = ButtonText.BTN_CLEARCONDITION; this.gbxCondition.Text = Constant.LABEL_QUERY_CONDITIONS; } #endregion #region 单例模式 /// /// 单例模式,防止重复创建窗体 /// public static F_RPT_080114 Instance { get { if (_instance == null || _instance.IsDisposed) { _instance = new F_RPT_080114(); } return _instance; } } #endregion #region 事件处理 /// /// 窗体加载事件 /// /// /// private void F_RPT_080114_Load(object sender, EventArgs e) { try { // 加载权限 FormPermissionManager.FormPermissionControl(this.Name, this, LogInUserInfo.CurrentUser.CurrentUserEntity.UserRightData, LogInUserInfo.CurrentUser.CurrentUserEntity.FunctionData); this.dtpCreateTimeBegin.Value = DateTime.Now.Date; this.dtpCreateTimeEnd.Value = DateTime.Now.Date.AddDays(1).AddSeconds(-1); // 设置表格不自动创建列 this.dgvQCdata.AutoGenerateColumns = false; // 检验标准名称 //绑定检验类型 ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_RPT_080116"; cre.Name = "GetInspectName"; ServiceResultEntity sre = DoAsync(() => { return PCModuleProxyNew.Service.HandleRequest(cre); }); if (sre.Data != null && sre.Data.Tables.Count > 0 && sre.Data.Tables[0].Rows.Count > 0) { //将查询的数据转换成List DataTable dt = sre.Data.Tables[0]; for (int i = 0; i < dt.Rows.Count; i++) { var item = dt.Rows[i]; selectList.Add(new cbinpectnameType { ITEMSID = item.ItemArray[0].ToString(), INSPECTTYPE = item.ItemArray[1].ToString(), INSPECTNAME = item.ItemArray[2].ToString(), INSPECTVERSION = item.ItemArray[3].ToString(), VALUEFLAG = item.ItemArray[4].ToString() }); } this.cbInpectName.DisplayMember = "INSPECTNAME"; this.cbInpectName.ValueMember = "ITEMSID"; handle(radioButton1.Checked, radioButton3.Checked); } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 自动适应列宽 /// /// /// private void tsbtnAdaptive_Click(object sender, EventArgs e) { this.dgvQCdata.AutoResizeColumns(); } /// /// 窗体关闭事件 /// /// /// private void F_RPT_080114_FormClosed(object sender, FormClosedEventArgs e) { _instance = null; } /// /// 关闭按钮 /// /// /// private void tsbtnClose_Click(object sender, EventArgs e) { this.Close(); } /// /// 查询按钮事件 /// /// /// private void btnSearch_Click(object sender, EventArgs e) { if (this.tabControl1.SelectedIndex == 1 && this.cbInpectName.Text.Length == 0) { MessageBox.Show("请选择检验标准名称", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } try { this.dgvBarcode.DataSource = null; this.dgvQCdata.DataSource = null; // 我们要保留的列名 List columnsToKeep = new List { "检验依据", "检验项目" }; // 遍历DataTable的列(反向遍历以避免索引问题) for (int i = dgvQCdata.Columns.Count - 1; i >= 0; i--) { if (!columnsToKeep.Contains(dgvQCdata.Columns[i].Name)) { // 如果列名不在保留列表中,则删除该列 dgvQCdata.Columns.RemoveAt(i); } } ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_RPT_080114"; cre.Name = "GetBarCodeData"; cre.Properties["BarCode"] = this.txtBarCode.Text.Trim(); cre.Properties["CreateTimeBegin"] = this.dtpCreateTimeBegin.Value; cre.Properties["CreateTimeEnd"] = Convert.ToDateTime(this.dtpCreateTimeEnd.Value).AddSeconds(1); if (this.cbInpectName.Text.Length > 0) { cre.Properties["InpectName"] = listOnit.Where(ex => ex.INSPECTNAME == this.cbInpectName.Text).FirstOrDefault().ITEMSID; } if (this.radioButton3.Checked) { cre.Properties["InpectType"] = 615; } ServiceResultEntity sre = DoAsync(() => { return PCModuleProxyNew.Service.HandleRequest(cre); }); if (sre.Data != null && sre.Data.Tables.Count > 0 && sre.Data.Tables[0].Rows.Count > 0) { //if (tabControl1.SelectedIndex == 0) //{ if (this.cbInpectName.Text.Length > 0) { List ss = new List(); for (int j = 0; j < this.dgvQCdata.Columns.Count; j++) { if (!sre.Data.Tables[0].Columns.Contains(this.dgvQCdata.Columns[j].Name)) { ss.Add(this.dgvQCdata.Columns[j].Name); } } for (int y = 0; y < ss.Count; y++) { this.dgvQCdata.Columns.Remove(ss[y]); } dgvBarcode.DataSource = sre.Data.Tables[1]; for (int i = 0; i < sre.Data.Tables[0].Columns.Count; i++) { string columns = sre.Data.Tables[0].Columns[i].ColumnName; if (!this.dgvQCdata.Columns.Contains(columns)) { DataGridViewTextBoxColumn d = new DataGridViewTextBoxColumn(); this.dgvQCdata.Columns.AddRange(new DataGridViewColumn[] { d }); d.DataPropertyName = columns; d.HeaderText = columns; d.Name = columns; d.ReadOnly = true; } } dgvQCdata.DataSource = sre.Data.Tables[0]; } else { dgvBarcode.DataSource = sre.Data.Tables[0]; } tsbtnAdaptive_Click(null, null); } else { // 提示未查找到数据 MessageBox.Show(Messages.MSG_CMN_I002, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { this.btnSearch.Enabled = true; this.btnClearCondition.Enabled = true; // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 清空条件按钮事件 /// /// /// private void btnClearCondition_Click(object sender, EventArgs e) { this.dtpCreateTimeBegin.Value = DateTime.Now.Date; this.dtpCreateTimeEnd.Value = DateTime.Now.Date.AddDays(1).AddSeconds(-1); this.txtBarCode.Text = ""; this.cbInpectName.Text = ""; //清空combobox this.cbInpectName.Items.Clear(); this.cbInpectName.Items.AddRange(listOnit.ToArray()); } /// /// 导出 /// /// /// private void tsbtnEdit_Click(object sender, EventArgs e) { try { if (this.dgvBarcode.CurrentCell != null) { DataRowView dr = (DataRowView)this.dgvBarcode.CurrentRow.DataBoundItem; string barcode = dr["BARCODE"].ToString(); string inspectname = dr["inspectname"].ToString(); string goUrl = "http://172.18.32.32:9100/main/excel/excelRW.ashx"; System.Diagnostics.Process.Start(goUrl + "?barcode=" + barcode + "&inspectname=" + inspectname); } } catch (Exception ex) { this.btnSearch.Enabled = true; this.btnClearCondition.Enabled = true; // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 双击编辑 /// /// /// private void dgvBarcodeIdnrk_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { try { if (this.dgvQCdata.CurrentCell != null) { tsbtnEdit_Click(null, null); } } catch (Exception ex) { this.btnSearch.Enabled = true; this.btnClearCondition.Enabled = true; // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } #region 模糊查询 历史版本和型式检验 及数据处理 /// /// 模糊查询 /// /// /// private void cbInpectNameText_Updata(object sender, EventArgs e) { //清空combobox this.cbInpectName.Items.Clear(); //清空listNew listNew.Clear(); //遍历全部备查数据 foreach (var item in listOnit) { if (item.INSPECTNAME.Contains(this.cbInpectName.Text)) { //符合,插入ListNew listNew.Add(item); } } //combobox添加已经查到的关键词 this.cbInpectName.Items.AddRange(listNew.ToArray()); //设置光标位置,否则光标位置始终保持在第一列,造成输入关键词的倒序排列 this.cbInpectName.SelectionStart = this.cbInpectName.Text.Length; //保持鼠标指针原来状态,有时候鼠标指针会被下拉框覆盖,所以要进行一次设置。 Cursor = Cursors.Default; //自动弹出下拉框 this.cbInpectName.DroppedDown = true; } /// /// 数据处理 /// /// 是否显示历史版本 /// 是否显示型式检验 private void handle(bool a, bool b) { //清除初始数据 this.cbInpectName.Items.Clear(); listOnit.Clear(); //赋值数据以便筛选 var list = selectList; //不显示历史版本 if (!a) { list = list.Where(ex => ex.VALUEFLAG == "1").ToList(); } // 型式检验 list = !b ? list.Where(ex => ex.INSPECTTYPE != "615").ToList() : list.Where(ex => ex.INSPECTTYPE == "615").ToList(); //遍历符合数据 foreach (var item in list) { //按要求将数据装入listOnit中 listOnit.Add(new cbinpectname { ITEMSID = item.ITEMSID, INSPECTTYPE = item.INSPECTTYPE, INSPECTNAME = a ? item.INSPECTNAME + "[版本:" + item.INSPECTVERSION + "]" : item.INSPECTNAME }); } //赋值给控件 this.cbInpectName.Items.AddRange(listOnit.ToArray()); this.cbInpectName.Text = string.Empty; } /// /// 是否按钮数据切换 /// /// /// private void RadioButton_CheckedChanged(object sender, EventArgs e) { //滤除第一遍的请求 if (!((RadioButton)sender).Checked) { return; } handle(radioButton1.Checked, radioButton3.Checked); } #endregion } #endregion }