using System; using System.Collections.Generic; using System.Linq; using System.Text; using CoreFS.CA06; using System.Data; using Infragistics.Win.UltraWinGrid; using Core.Mes.Client.Comm; using System.Windows.Forms; using Infragistics.Win.UltraWinEditors; using System.Collections; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using System.IO; using Infragistics.Win; using System.Text.RegularExpressions; namespace Core.StlMes.Client.Lims.Data.PipeAndOutdec { /// /// 自定义公共方法类 /// class PublicPipeAndOutdec { //状态位 //CHECKCONSIGN_BASEINFO 0委托单位未取样,1委托单位正在送样,2加工已确认 //CHECKCONSIGN_DETAIL '0', '未下发', '1', '加工已下发', '2', '试验室已确认', '3', '试验室已录入', '4', '试验室已审核' public const string chemMax = "ANA_C ANA_SI ANA_MN ANA_P ANA_S ANA_NI ANA_CR ANA_MO ANA_CU ANA_AL ANA_ALS ANA_CA ANA_V ANA_NB ANA_TI ANA_O ANA_N ANA_H ANA_ZN ANA_B ANA_ZR ANA_W ANA_CO ANA_FE ANA_PB ANA_SN ANA_AS ANA_SB ANA_BI"; public const string chemMin = "C Si Mn P S Ni Cr Mo Cu Al Als Ca V Nb Ti O N H Zn B Zr W Co Fe Pb Sn As Sb Bi"; /// /// 筛选符合条件的DataTable /// /// 源dt /// public static DataTable GetSelectDt(DataTable dtSource, string sql) { if (dtSource != null) { DataTable dtReturn = dtSource.Clone(); DataRow[] arrDrSelect = dtSource.Select(sql); if (arrDrSelect != null && arrDrSelect.Length > 0) { foreach (DataRow row in arrDrSelect) { dtReturn.Rows.Add(row.ItemArray); } } return dtReturn; } else { return null; } } /// /// 筛选符合条件的DataTable加入排序 /// /// 源dt /// public static DataTable GetSelectDt(DataTable dtSource, string sql, string sort) { if (dtSource != null) { DataTable dtReturn = dtSource.Clone(); DataRow[] arrDrSelect; if (sort != "") { arrDrSelect = dtSource.Select(sql, sort); } else { arrDrSelect = dtSource.Select(sql); } if (arrDrSelect != null && arrDrSelect.Length > 0) { foreach (DataRow row in arrDrSelect) { dtReturn.Rows.Add(row.ItemArray); } } return dtReturn; } else { return null; } } /// /// 比较字符串是否含某元素 /// /// 元素名称 /// public static bool IsHaveChemItems(string chemName, string[] arrChems) { if (chemName == "" || arrChems.Length == 0) { return false; } else { foreach (string row in arrChems) { if (chemName == row) { return true; } } } return false; } /// /// 激活当前操作的列 /// /// /// /// 主键 public static void ActiveOperateRow(UltraGrid ultraGrid, string strPK, string strPKText) { for (int i = 0; i < ultraGrid.Rows.Count; i++) { if (ultraGrid.Rows[i].Cells[strPK].Text == strPKText) { ultraGrid.Rows[i].Activated = true; } } } /// /// 激活当前操作的列 /// /// /// /// 多主键 public static void ActiveOperateRow(UltraGrid ultraGrid, object[] strPK, object[] strPKText) { bool isEquals; for (int i = 0; i < ultraGrid.Rows.Count; i++) { isEquals = true; for (int j = 0; j < strPK.Length; j++) { if (ultraGrid.Rows[i].Cells[strPK[j].ToString()].Text != strPKText[j].ToString()) { isEquals = false; break; } } if (isEquals == true) { ultraGrid.Rows[i].Activated = true; return; } } } //点击Grid编辑区显示基本信息 /// /// 点击Grid编辑区显示基本信息 /// /// /// public static void ShowBaseInfo(UltraGridRow ur, Panel panel) { if (ur != null) { foreach (UltraGridCell uc in ur.Cells) { if (panel.Controls["txt" + uc.Column.Key] is UltraTextEditor ) { if (uc.Text.Trim() != "") { ((UltraTextEditor)panel.Controls["txt" + uc.Column.Key]).Text = uc.Text.Trim(); } } else if (panel.Controls["ultra" + uc.Column.Key] is UltraTextEditor) { if (uc.Text.Trim() != "") { ((UltraTextEditor)panel.Controls["ultra" + uc.Column.Key]).Text = uc.Text.Trim(); } } else if (panel.Controls["txt" + uc.Column.Key] is UltraComboEditor) { if (uc.Text.Trim() != "") { ((UltraComboEditor)panel.Controls["txt" + uc.Column.Key]).Text = uc.Text.Trim(); } } else if (panel.Controls["ultra" + uc.Column.Key] is UltraComboEditor) { if (uc.Text.Trim() != "") { ((UltraComboEditor)panel.Controls["ultra" + uc.Column.Key]).Text = uc.Text.Trim(); } } else if (panel.Controls["P" + uc.Column.Key] is UltraComboEditor) { if (uc.Text.Trim() != "") { ((UltraComboEditor)panel.Controls["P" + uc.Column.Key]).Value = uc.Text.Trim(); } } //if (panel.Controls.ContainsKey("txt" + uc.Column.Key) == true)//判定是否存在text //{ // ((UltraTextEditor)panel.Controls["txt" + uc.Column.Key]).Text = uc.Text.Trim(); //} //else if (panel.Controls.ContainsKey("ultra" + uc.Column.Key) == true)//判定是否存在text //{ // ((UltraComboEditor)panel.Controls["ultra" + uc.Column.Key]).Text = uc.Text.Trim(); //} } } } //点击Grid编辑区显示基本信息 /// /// 点击Grid编辑区显示基本信息 /// /// /// public static void ShowDataTaleInfo(DataTable dt, Panel panel) { foreach (DataColumn dc in dt.Columns) { if (panel.Controls.ContainsKey("txt" + dc.ColumnName) == true)//判定是否存在text { ((UltraTextEditor)panel.Controls["txt" + dc.ColumnName]).Text = dt.Rows[0][dc.ColumnName].ToString(); } else if (panel.Controls.ContainsKey("ultra" + dc.ColumnName) == true)//判定是否存在text { ((UltraComboEditor)panel.Controls["ultra" + dc.ColumnName]).Text = dt.Rows[0][dc.ColumnName].ToString(); } } } /// /// 隐藏空列 /// /// 本来就隐藏的列名集合 /// 需要操作的UltraGrid /// 需要操作的dt private void HideNullColumn(string strHidden, UltraGrid ultraGrid, DataTable dataTable) { if (strHidden != "") { foreach (DataColumn dc in dataTable.Columns) { if (strHidden.IndexOf(dc.ColumnName) >= 0) { continue; } foreach (DataRow dr in dataTable.Rows) { if (dr[dc].ToString() != "") { ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = false; break; } else { ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = true; } } } } else { foreach (DataColumn dc in dataTable.Columns) { foreach (DataRow dr in dataTable.Rows) { if (dr[dc].ToString() != "") { ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = false; break; } else { ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = true; } } } } } /// /// UltraGrid可读 /// /// UltraGrid /// 可编辑列 public static void setOtherColumnReadOnly(UltraGrid ugr, string[] keys) { if (keys == null || keys.Length == 0) { foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { ugc.CellActivation = Activation.ActivateOnly; } } else { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { if (!keys.Contains(ugc.Key)) { ugc.CellActivation = Activation.ActivateOnly; } else { ugc.CellAppearance.BackColor = System.Drawing.Color.FromArgb(255, 255, 192);//可编辑列设置颜色为浅黄色 ugc.CellActivation = Activation.AllowEdit; } } } if (ugr.DisplayLayout.Bands[0].Columns.Exists("CHK")) { ugr.DisplayLayout.Bands[0].Columns["CHK"].DefaultCellValue = "False"; ugr.DisplayLayout.Bands[0].Columns["CHK"].Header.CheckBoxVisibility = Infragistics.Win.UltraWinGrid.HeaderCheckBoxVisibility.Always; ugr.DisplayLayout.Bands[0].Columns["CHK"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox; } } /// /// UltraGrid可读 /// /// UltraGrid /// 可编辑列 public static void setOtherColumnReadOnly(UltraGrid ugr, string[] keys, int bandNum) { if (bandNum < 0 || ugr.DisplayLayout.Bands.Count < bandNum + 1) { return; } if (keys == null || keys.Length == 0) { foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[bandNum].Columns) { ugc.CellActivation = Activation.ActivateOnly; } } else { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[bandNum].Columns) { if (!keys.Contains(ugc.Key)) { ugc.CellActivation = Activation.ActivateOnly; } else { ugc.CellAppearance.BackColor = System.Drawing.Color.FromArgb(255, 255, 192);//可编辑列设置颜色为浅黄色 //ugc.CellActivation = Activation.AllowEdit; } } } if (ugr.DisplayLayout.Bands[bandNum].Columns.Exists("CHK")) { ugr.DisplayLayout.Bands[bandNum].Columns["CHK"].DefaultCellValue = "False"; ugr.DisplayLayout.Bands[bandNum].Columns["CHK"].Header.CheckBoxVisibility = Infragistics.Win.UltraWinGrid.HeaderCheckBoxVisibility.Always; ugr.DisplayLayout.Bands[bandNum].Columns["CHK"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox; } } /// /// UltraGrid列是否隐藏 /// isShow 为true则显示其他隐藏,false则隐藏其他显示 /// UltraGrid /// 隐藏列 public static void setColumnShowOrHidden(UltraGrid ugr, string[] keys, bool isShow) { if (keys == null || keys.Length == 0) { foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { ugc.Hidden = false; } } else { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { if (keys.Contains(ugc.Key)) { if (isShow) { ugc.Hidden = false; } else { ugc.Hidden = true; } } else { if (isShow) { ugc.Hidden = true; } } } } } /// /// UltraGrid列是否隐藏 /// isShow 为true则显示其他隐藏,false则隐藏其他显示 /// UltraGrid /// 隐藏列 public static void setColumnShowOrHidden(UltraGrid ugr, string[] keys, bool isShow, int bandNum) { if (bandNum < 0 || ugr.DisplayLayout.Bands.Count < bandNum + 1) { return; } if (keys == null || keys.Length == 0) { foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[bandNum].Columns) { ugc.Hidden = false; } } else { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[bandNum].Columns) { if (keys.Contains(ugc.Key)) { if (isShow) { ugc.Hidden = false; } else { ugc.Hidden = true; } } else { if (isShow) { ugc.Hidden = true; } } } } } //初始化列 /// /// 初始化列 /// /// /// /// public static void InitColumns(string[] arrColumns, string[] arrCaption, DataTable dataTable1) { if (arrColumns.Length == 0 || arrColumns.Length != arrCaption.Length) { return; } dataTable1.Columns.Clear();//先清除 DataColumn dc; for (int i = 0; i < arrColumns.Length; i++) { try { dc = new DataColumn(arrColumns[i]); dc.Caption = arrCaption[i]; dataTable1.Columns.Add(dc); if (dc.ColumnName == "CHK") { dc.DataType = typeof(bool); dc.DefaultValue = "False"; } } catch { continue; } } } //初始化列 /// /// 初始化列 /// /// /// /// /// /// public static void InitColumns(string[] arrColumns, string[] chemMax, object[] arrCaption, string[] chemMin, DataTable dataTable1) { if (arrColumns.Length == 0 || arrColumns.Length != arrCaption.Length || chemMax.Length != chemMin.Length) { return; } dataTable1.Columns.Clear();//先清除 DataColumn dc; for (int i = 0; i < arrColumns.Length; i++) { try { dc = new DataColumn(arrColumns[i].ToString()); dc.Caption = arrCaption[i].ToString(); dataTable1.Columns.Add(dc); if (dc.ColumnName == "CHK") { dc.DataType = typeof(bool); dc.DefaultValue = "False"; } } catch { continue; } } for (int i = 0; i < chemMax.Length; i++) { try { dc = new DataColumn(chemMax[i]); dc.Caption = chemMin[i]; dataTable1.Columns.Add(dc); } catch { continue; } } } public static void InitColumns(string[] arrColumns, string[] arrCaption, DataTable dataTable, UltraGrid ultraGrid, string[] show, bool isShow, string[] ope) { InitColumns(arrColumns, arrCaption, dataTable); setColumnShowOrHidden(ultraGrid, show, isShow); setOtherColumnReadOnly(ultraGrid, ope); } //隐藏空列 /// /// /// /// /// 需要判断的列 /// public static void HideNullColumn(string strHidden, UltraGrid ug) { string[] arr = strHidden.Split(','); for (int i = 0; i < arr.Length; i++) { if (!ug.DisplayLayout.Bands[0].Columns.Exists(arr[i])) { continue; } foreach (UltraGridRow ur in ug.Rows) { if (ur.Cells[arr[i]].Text != "") { ug.DisplayLayout.Bands[0].Columns[arr[i]].Hidden = false; break; } else { ug.DisplayLayout.Bands[0].Columns[arr[i]].Hidden = true; } } } } //选择事件 /// /// /// /// /// /// public static void SelectRow(UltraGrid ultraGrid) { if (ultraGrid.DisplayLayout.Bands[0].Columns.Exists("CHK")) { foreach (UltraGridRow uRow in ultraGrid.Selected.Rows) { if (uRow.GetType() != typeof(Infragistics.Win.UltraWinGrid.UltraGridGroupByRow)) { uRow.Cells["CHK"].Value = true; } } } } public static void ReMoveColumns(DataTable dataTable, int position) { //从0开始 int dcNum = dataTable.Columns.Count; if (dcNum > position) { for (int i = 0; i < dcNum - position; i++) { dataTable.Columns.RemoveAt(position); } } } //自适应 private void RefreshAutoSize(UltraGrid ultraGrid1) { ultraGrid1.DisplayLayout.Bands[0].Columns[0].Width = 80; for (int i = 1; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++) { ultraGrid1.DisplayLayout.Bands[0].Columns[i].Width = 60;//设置列宽 } } /// /// 设置列宽 /// /// 需要设置的UltraGrid /// 不需要清除的列 /// /// 宽度 public static void ColumnsWidth(UltraGrid ultraGrid, int haveNum, int width) { int col = ultraGrid.DisplayLayout.Bands[0].Columns.Count; for (int i = haveNum; i < col; i++) { ultraGrid.DisplayLayout.Bands[0].Columns[i].Width = width;//设置列宽 } } /// /// 设置列宽 /// /// 需要设置的UltraGrid /// 不需要清除的列 /// /// 宽度 public static void ColumnsWidth(UltraGrid ultraGrid, int haveNum, int width, string[] noSet) { ArrayList al = new ArrayList(); for (int i = 0; i < noSet.Length; i++) { al.Add(noSet[i]); } int col = ultraGrid.DisplayLayout.Bands[0].Columns.Count; for (int i = haveNum; i < col; i++) { if (!al.Contains(ultraGrid.DisplayLayout.Bands[0].Columns[i].ToString())) { ultraGrid.DisplayLayout.Bands[0].Columns[i].Width = width;//设置列宽 } } } /// /// 刷新Grid数据并根据数据调整Grid列宽 /// /// 需要处理的Grid /// 需要调整的列 /// true则自适应,false则不自适应 public static void RefreshAndAutoSizeColumns(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid, object[] cols, bool isMove) { try { ultraGrid.DataBind(); foreach (Infragistics.Win.UltraWinGrid.UltraGridBand band in ultraGrid.DisplayLayout.Bands) { foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn column in band.Columns) { if (cols != null && cols.Contains(column.Key)) { if (!isMove) { continue; } column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand);//AllRowsInBand } else { if (!isMove) { column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand); } } } } ultraGrid.Refresh(); } catch { } } //改变splitContainer1.Panel1 /// /// 改变splitContainer1.Panel1 /// /// /// public static void ChangeSplit(SplitContainer splitContainer, DataTable dtPhyMax) { if (dtPhyMax != null && dtPhyMax.Rows.Count > 0) { splitContainer.Panel1Collapsed = false; } else { splitContainer.Panel1Collapsed = true; ; } } //如果用户为admin默认试验室数据权限 /// /// 如果用户为admin默认试验室数据权限 /// /// public static string[] ValidData() { string[] arrId = new string[7] { "002001007009", "002001007015", "002001007013", "002001007014", "002001007010", "002001020001", "002001020002" }; //DECODE(T.DEPT_ID, // '002001007009', // '力学', // '002001007015', // '金相', // '002001007013', // '腐蚀', // '002001007014', // '工程', // '002001007010', // '化学', // '002001020001', // '一快分', // '002001020002', // '二快分') return arrId; } /// /// 绑定下拉框 /// /// /// /// /// /// public static void InitComboEditor(UltraComboEditor uce, string methodId, string valueMember, OpeBase ob, bool isEmpty) { DataTable dt = ServerHelper.GetData(methodId, null, ob); if (dt != null && dt.Rows.Count > 0) { if (isEmpty) { Object[] obj = new Object[] { "", "" }; DataRow dr = dt.NewRow(); dr.ItemArray = obj; dt.Rows.InsertAt(dr, 0); } uce.DataSource = dt; uce.ValueMember = valueMember; SetComboItemHeight(uce); } } /// /// 设置UltraComboEditor中的中文和非中文统一高度。 /// /// public static void SetComboItemHeight(UltraComboEditor cmb) { cmb.Update(); foreach (ValueListItem item in cmb.Items) { if (Regex.IsMatch(item.DisplayText, @"[\u4e00-\u9fa5]+")) { item.Appearance.FontData.SizeInPoints = 9.0F; } else { item.Appearance.FontData.SizeInPoints = 10.5F; } } } //解析数据权限 /// /// 解析数据权限 /// /// /// public static string ValidDataString(string[] arrId) { string strId = ""; if (arrId != null) { foreach (string str in arrId) { strId += "'" + str + "',"; } } strId = strId.Remove(0, 1); strId = strId.Remove(strId.Length - 2); return strId; } // 路径组成 Lims + 界面名称 + 文件名 "Lims/data/base/"; /// /// 路径组成 Lims + 界面名称 + 文件名 "Lims/data/base/"; /// /// /// public static string GetFilePath(string strPath) { return ""; } /// /// 更改文件路径 /// /// user_depatment /// public static void UpdateFilePosition(string strTableName, string strPath, string strPk, string strPkValue, OpeBase ob) { try { string sql = "UPDATE " + strTableName + " SET FILE_POSITION = '" + strPath + "' WHERE " + strPk + " = '" + strPkValue + "'"; PublicServer.SetData("com.steering.BaseInfo.UpdateFilePosition", new Object[] { sql }, ob); } catch { } } /// /// 查看文件路径 /// /// user_depatment /// public static bool ViewFilePosition(OpeBase _ob, string path) { bool isSucc = true; FormFileDown down = new FormFileDown(_ob, path); down.ShowDialog(); if (down.CtrlFileDown1.List.Count == 0) { isSucc = false;//删除了则更新FILE_POSITION } return isSucc; } /// /// 上传文件路径 /// /// user_depatment /// public static bool UploadFilePosition(OpeBase _ob, string path) { //var serverFileList = FileHelper.Download(path); //if (serverFileList.Count > 0) //{ // MessageUtil.ShowWarning("该记录已存在一份文件,请删除后再重新上传!"); // return false; //} List list = new List(); FileBean bean = new FileBean(); OpenFileDialog file = new OpenFileDialog(); file.Multiselect = false; DialogResult drStat; drStat = file.ShowDialog(); if (drStat == DialogResult.OK) { string filePath = file.FileName; string fileName = System.IO.Path.GetFileName(filePath); bean = new FileBean(); bean.setFileName(fileName); bean.setPathName(path); bean.setFile(FileHelper.FileToArray(filePath)); list.Add(bean); bool isSuccess = Core.Mes.Client.Comm.Server.FileHelper.Upload(list); if (isSuccess) { MessageUtil.ShowTips("上传成功!"); } else { MessageUtil.ShowTips("上传失败,请重试!"); } return isSuccess;//成功了则更新FILE_POSITION } return false; } //调用本地程序打开查看服务器文件 /// /// 调用本地程序打开查看服务器文件 /// /// public static void ViewCarft_No(string pathName) { try { //删除本地文件 string tmpPath = Environment.CurrentDirectory + "\\Tmp\\"; DirectoryInfo di = new DirectoryInfo(tmpPath); if (di.Exists == false) { di.Create(); return; } foreach (FileInfo fi in di.GetFiles()) { try { fi.Delete(); } catch { continue; } } //下载写入本地Tmp目录 if (pathName == "" || pathName == null) return; List list = Core.Mes.Client.Comm.Server.FileHelper.Download(pathName); foreach (FileBean bean in list) { FileStream fs = new FileStream(tmpPath + bean.getFileName(), FileMode.Create); fs.Write(bean.getFile(), 0, bean.getFile().Length); fs.Flush(); fs.Close(); System.Diagnostics.Process MyProcess = new System.Diagnostics.Process(); MyProcess.StartInfo.FileName = tmpPath + bean.getFileName(); MyProcess.StartInfo.Verb = "Open"; MyProcess.StartInfo.CreateNoWindow = true; MyProcess.Start(); return; } } catch { } } } }