using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using CoreFS.CA06; using Infragistics.Win.UltraWinEditors; using Infragistics.Win.UltraWinGrid; using Infragistics.Win.UltraWinMaskedEdit; using Infragistics.Win; using System.Collections; using System.Text.RegularExpressions; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows.Forms; namespace Core.StlMes.Client.Mcp.BaseMethod { public class BaseHelper { /// /// 仓库数据权限(用于报表) /// /// 页面配制信息(自定义参数) /// 用户数据权限 /// 可查看仓库组成的字符串 public static string[] WarehousePermissionsStore1(String[] validDataPurviewIds, OpeBase ob) { DataTable dt = ServerHelper.GetData("com.steering.mes.mcp.CollarLibrary.FrmCollarOutBound.getWarehousePermissionsStore", new object[] { validDataPurviewIds }, ob); if (dt != null && dt.Rows.Count > 0) { string[] storages = new string[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { storages[i] = dt.Rows[i]["STORAGE_NO"].ToString(); } return storages; } else { return new string[1] { "" }; } } /// /// 通过科室查找对应的部门 /// /// 科室ID /// /// 部门名称 public static string GetDepartBySectionId1(string sectionId, OpeBase ob) { DataTable dt = ServerHelper.GetData("com.steering.mes.mcp.CollarLibrary.FrmCollarOutBound.getDeptBySection", new object[] { sectionId }, ob); if (dt.Rows.Count > 0) { return dt.Rows[0]["DEPARTNAME"].ToString(); } else { return ""; } } /// /// 通过科室查找对应的部门 /// /// 科室ID /// /// 部门ID public static string GetDepartIdBySectionId1(string sectionId, OpeBase ob) { DataTable dt = ServerHelper.GetData("com.steering.mes.mcp.CollarLibrary.FrmCollarOutBound.getDeptBySection", new object[] { sectionId }, ob); if (dt.Rows.Count > 0) { return dt.Rows[0]["DEPARTID"].ToString(); } else { return ""; } } public static string[] SetData(string methodId, object[] param, OpeBase ob) { CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = methodId.Substring(0, methodId.LastIndexOf(".")); ccp.MethodName = methodId.Substring(methodId.LastIndexOf(".") + 1); ccp.ServerParams = param; ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode == -1) { return null; } else { string[] strArray = new string[2]; strArray[0] = ccp.ReturnObject.ToString(); strArray[1] = ccp.ReturnInfo; return strArray; } } /// /// 设置Grid统计格式 /// /// /// 统计格式集合 /// 显示格式 /// 列名 /// /// 位置 public static void SetupSummaryHeade(string[] Arrsumtype, string[] HeadeVale, string[] ColumName, UltraGridBand band, SummaryDisplayAreas areas) { if (HeadeVale.Length != Arrsumtype.Length && Arrsumtype.Length != ColumName.Length) { return; } SummaryType sumType; ; for (int i = 0; i < HeadeVale.Length; i++) { //SummaryType.Count 统计 Average平均值 Maximum最大值 Minimum 最小值 Sum 求和 if (Arrsumtype[i] == "Count") { sumType = SummaryType.Count; } else if (Arrsumtype[i] == "Maximum") { sumType = SummaryType.Maximum; } else if (Arrsumtype[i] == "Minimum") { sumType = SummaryType.Minimum; } else { sumType = SummaryType.Sum; } if (band.Columns.Exists(ColumName[i])) { SummarySettings summary = band.Summaries.Add(sumType, band.Columns[ColumName[i]]); summary.SummaryDisplayArea = areas; summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn; summary.DisplayFormat = HeadeVale[i]; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Center; summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle; //summary.Appearance.ForeColor = Color.Black; //summary.Appearance.BackColor = Color.FromArgb(248, 253, 180); } } Infragistics.Win.Appearance appearance21 = new Infragistics.Win.Appearance(); Infragistics.Win.Appearance appearance20 = new Infragistics.Win.Appearance(); appearance20.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(192))))); band.Override.SummaryFooterAppearance = appearance20; appearance21.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(192))))); appearance21.TextHAlignAsString = "Right"; band.Override.SummaryValueAppearance = appearance21; } /// /// 查询选择记录 /// /// 类名 /// Grid /// 列 /// 对应值 /// public static ArrayList GetRows(UltraGrid ug, string columns, string value) { try { ug.UpdateData(); } catch (Exception) { return null; } IQueryable chcRows = ug.Rows.AsQueryable().Where(a => a.GetValue(columns) == value); if (chcRows == null || chcRows.Count() == 0) { return null; } ArrayList list = new ArrayList(); foreach (UltraGridRow ugr in chcRows) { T t = (T)ugr.ListObject; list.Add(t); } return list; } /// /// 控制行 /// /// public static void ControlCellEdit(UltraGridRow row) { foreach (UltraGridCell cell in row.Cells) { if (cell.Column.CellAppearance.BackColor == Color.FromArgb(255, 255, 128)) { if (row.Cells["CHC"].Value.ToString() == "True") { cell.Activation = Activation.AllowEdit; } else { cell.Activation = Activation.ActivateOnly; } } else { if (!cell.Column.Key.Equals("CHC")) { cell.Activation = Activation.ActivateOnly; } } } } /// /// 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; } } } } /// /// UltraGrid可读(主从结构) /// /// /// public static void setColumnReadOnly(UltraGrid ugr, string[] keys) { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { if (!keys.Contains(ugc.Key)) { ugc.CellActivation = Activation.ActivateOnly; } } foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[1].Columns) { if (!keys.Contains(ugc.Key)) { ugc.CellActivation = Activation.ActivateOnly; } } } /// /// 设置列背景颜色 /// /// UltraGrid /// 列数组 public static void setColumnBackColor(UltraGrid ugr, String[] columns) { for (int i = 0; i < columns.Length; i++) { ugr.DisplayLayout.Bands[0].Columns[columns[i]].CellAppearance.BackColor = Color.FromArgb(255, 255, 128); } } /// /// 设置列字段显示位置在右 /// /// UltraGrid /// 要设置的列 public static void InitCellPosition(UltraGrid ug, string[] columnsKeys) { if (columnsKeys == null || columnsKeys.Length == 0) { return; } columnsKeys.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (columnsKeys.Contains(ugc.Key.ToString())) { ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right; } } } /// /// 设置列字段显示位置在右 /// /// UltraGrid从表 /// 要设置的列 public static void InitCellPositionC(UltraGrid ug, string[] columnsKeys) { columnsKeys.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[1].Columns) { if (columnsKeys.Contains(ugc.Key.ToString())) { ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right; } } } /// /// 列求和 /// /// UltraGrid /// 列数组 public static void GridColumnSum(UltraGrid ug, string[] columnKeys, string[] descritions) { if (columnKeys.Length == 0 || descritions.Length != columnKeys.Length) { return; } for (int i = 0; i < columnKeys.Length; i++) { SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn); summary.DisplayFormat = "{0}" + descritions[i]; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; } } /// /// 列求和 /// /// /// public static void GridColumnSum(UltraGrid ug, string[] columnKeys) { if (columnKeys.Length == 0) { return; } for (int i = 0; i < columnKeys.Length; i++) { SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn); summary.DisplayFormat = "{0:N3}"; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; } }/// /// 列求和 /// /// UltraGrid /// 列数组(支) public static void GridColumnCount(UltraGrid ug, string[] columnKeys) { if (columnKeys.Length == 0) { return; } for (int i = 0; i < columnKeys.Length; i++) { SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn); summary.DisplayFormat = "{0:N0}"; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; } } /// /// 设置UltraGrid行颜色 /// /// UltraGrid /// 列 /// 值 /// 颜色 public static void SetUltraGridRowColor(UltraGrid ug, string[] columnKeys, string[] values, Color color) { if (ug.Rows.Count == 0 || columnKeys.Length == 0 || values.Length == 0 || color == null || values.Length != columnKeys.Length) { return; } foreach (UltraGridRow ugr in ug.Rows) { Boolean flag = true; for (int i = 0; i < columnKeys.Length; i++) { if (!ugr.Cells[columnKeys[i]].Value.ToString().Equals(values[i])) { flag = false; } } if (flag) { ugr.Appearance.BackColor = color; } } } /// /// 合并单元格 /// /// /// public static void MergedCell(UltraGrid ug, string[] columnKeys) { if (columnKeys.Length == 0) { return; } ug.DisplayLayout.Override.MergedCellStyle = MergedCellStyle.Never; for (int i = 0; i < columnKeys.Length; i++) { ug.DisplayLayout.Bands[0].Columns[columnKeys[i]].MergedCellStyle = MergedCellStyle.Always; } } /// /// 设置ULTRAGIRD列的颜色 /// /// ultragrid /// 列Key /// 颜色 public static void setUltraGridColumnColor(UltraGrid ug, string[] arr, Color color) { if (arr == null || arr.Length == 0 || ug == null) { return; } arr.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (arr.Contains(ugc.Key.ToString())) { ugc.CellAppearance.BackColor = color; } } } /// /// 设置列显示位数 /// /// /// public static void setUltraGridColumnMaxInput(UltraGrid ug, string[] arr) { if (ug == null || arr == null || arr.Length == 0) { return; } arr.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (arr.Contains(ugc.Key.ToString())) { ugc.MaskDisplayMode = MaskMode.IncludeLiterals; ugc.MaskInput = "{LOC}-n,nnn,nnn.nnn"; } } } /// /// 设置列显示位数 /// /// /// public static void setUltraGridColumnBits(UltraGrid ug, string[] arr) { if (ug == null || arr == null || arr.Length == 0) { return; } arr.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (arr.Contains(ugc.Key.ToString())) { ugc.MaskDisplayMode = MaskMode.IncludeLiterals; ugc.MaskInput = "{LOC}-nn,nnn,nnn"; } } } /// /// 列绑定下拉框 /// /// 下拉框 /// 列名 /// 行 public static void BindColumn(UltraComboEditor uce, string column, UltraGridBand ugb) { ugb.Columns[column].EditorComponent = uce; ugb.Columns[column].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList; } /// /// 初始化下拉框 /// /// 下拉框 /// 方法名 /// 显示值 /// 隐藏值 /// 是否增加空行 /// OB对象 public static void NitializeDropDownBox(UltraComboEditor uce, string methodID, string showValue, string hiddenValue, Boolean isNull, OpeBase ob) { DataTable dt = ServerHelper.GetData(methodID, new Object[] { }, ob); if (dt != null && dt.Rows.Count > 0 && isNull) { DataRow dr = dt.NewRow(); for (int i = 0; i < dt.Columns.Count; i++) { dr[i] = ""; } dt.Rows.InsertAt(dr, 0); } uce.DataSource = dt; uce.DisplayMember = showValue; uce.ValueMember = hiddenValue; ClsBaseInfo.SetComboItemHeight(uce); } /// /// 初始化下拉框 /// /// 下拉框 /// 方法名 /// 参数 /// 显示值 /// 隐藏值 /// 是否增加空行 /// OB对象 public static void NitializeDropDownBox(UltraComboEditor uce, string methodID, Object[] param, string showValue, string hiddenValue, Boolean isNull, OpeBase ob) { DataTable dt = ServerHelper.GetData(methodID, param, ob); if (dt != null && dt.Rows.Count > 0 && isNull) { DataRow dr = dt.NewRow(); for (int i = 0; i < dt.Columns.Count; i++) { dr[i] = ""; } dt.Rows.InsertAt(dr, 0); } uce.DropDownListWidth = -1; uce.DropDownStyle = DropDownStyle.DropDownList; uce.DataSource = dt; uce.DisplayMember = showValue; uce.ValueMember = hiddenValue; ClsBaseInfo.SetComboItemHeight(uce); } private Object setObjectByDataRow(Object obj, DataRow dr) { System.Reflection.PropertyInfo[] properties = obj.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); foreach (System.Reflection.PropertyInfo item in properties) { string name = item.Name; string value = item.GetValue(obj, null).ToString(); for (int i = 0; i < dr.Table.Columns.Count; i++) { if (dr.Table.Columns[i].ColumnName.ToString().Equals(name)) { item.SetValue(obj, dr[i].ToString(), null); } } } return obj; } private Object setObjectByDataTable(Object obj, DataTable dt) { System.Reflection.PropertyInfo[] properties = obj.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); foreach (System.Reflection.PropertyInfo item in properties) { string name = item.Name; string value = item.GetValue(obj, null).ToString(); foreach (DataRow dr in dt.Rows) { { if (dr[0].ToString().Equals(name)) item.SetValue(obj, dr[1].ToString(), null); } } } return obj; } /// /// 禁止排序 /// /// public static void ForbidSort(UltraGrid ugr) { foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { ugc.SortIndicator = SortIndicator.Disabled; } } /// /// 用于初始化F1功能加字段问题 /// /// /// /// public static void SetGridColunmName(FrmBase frm, UltraGrid ug) { System.Threading.Thread.Sleep(3000); if (!frm.IsDisposed) { EntityHelper.ShowGridCaption(ug.DisplayLayout.Bands[0]); } } /// /// 设置列居中 /// /// /// public static void InitCellPositionMiddle(UltraGrid ug, string[] columnsKeys) { columnsKeys.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (columnsKeys.Contains(ugc.Key.ToString())) { ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Center; } } } /// /// 激活行选中 /// /// public static void SetRowChecked(UltraGrid ug) { foreach (UltraGridRow ugr in ug.Rows) { if (ugr.Activated) { ugr.Cells["CHC"].Value = true; } else { ugr.Cells["CHC"].Value = false; } } } /// /// 初始化下拉框(增强型) /// /// 下拉框 /// 请求的服务 /// 值成员 /// 显示成员 /// ob对象 /// 是否添加空行 public static void InitComboEditorNew(UltraComboEditor uce, string methodId, string valueMember, string textMember, OpeBase ob, bool isEmpty) { InitComboEditor(uce, methodId, valueMember, ob, isEmpty); uce.DisplayMember = textMember; } /// /// 初始化下拉框 /// /// 下拉框 /// 请求的服务 /// 值成员 /// ob对象 /// 是否有空行 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) { 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; } } } /// /// 将下拉框绑定到GRID列 /// /// 下拉框(已经初始化完成) /// 列名 /// 空间集合(每次只需填入this.Controls) /// GRID /// GRID的第几层结构 public static void BindColumn(UltraComboEditor uce, string ColumnName, System.Windows.Forms.Control.ControlCollection con, UltraGrid ug, int i) { con.Add(uce); uce.Visible = false; ug.DisplayLayout.Bands[i].Columns[ColumnName].EditorComponent = uce; ug.DisplayLayout.Bands[i].Columns[ColumnName].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDown; SetComboItemHeight(uce); } ///接箍编辑区显示支数 public static string piecesJg(string woidId,string[] plinCode,OpeBase ob) { string piece = ""; try { DataTable dt = ServerHelper.GetData("com.steering.mes.mcp.coup.BaseHelper.doQueryPiece", new Object[] { woidId,plinCode }, ob); { if (dt != null && dt.Rows.Count > 0) { piece = dt.Rows[0]["FAIL"].ToString(); } } return piece; } catch (Exception ex) { return ex.ToString(); } } /// /// 设置Grid可拖拽行, 设置拖拽前提条件,拖拽后的操作 /// /// 待设置的Grid /// 拖拽后需要实现的业务 public static void SetGridDragDropRows(UltraGrid ug, Action action, Cursor myCursor) { ug.AllowDrop = true; ug.SelectionDrag += (sender, args) => { if (ug.Selected.Rows.Count > 0) ug.DoDragDrop(ug.Selected.Rows, DragDropEffects.Move); }; ug.GiveFeedback += (sender, args) => { //Cursor myCursor = new Cursor(); //ug.Cursor = Cursors.Hand; args.UseDefaultCursors = false; ug.Cursor = myCursor; }; ug.DragOver += (sender, args) => { args.Effect = DragDropEffects.Move; UltraGrid grid = sender as UltraGrid; Point pointInGridCoords = grid.PointToClient(new Point(args.X, args.Y + 10)); UIElement uieOver = ug.DisplayLayout.UIElement.ElementFromPoint(ug.PointToClient(new Point(args.X, args.Y + 10))); if (uieOver != null) { UltraGridRow ugrOver = uieOver.GetContext(typeof(UltraGridRow), true) as UltraGridRow; if (ugrOver != null) ug.ActiveRow = ugrOver; } if (pointInGridCoords.Y < 30) // 当拖动行到当前视图顶端,滑轮自动向上滚动. ug.ActiveRowScrollRegion.Scroll(RowScrollAction.LineUp); else if (pointInGridCoords.Y > grid.Height - 30) // 当拖动行到当前视图尾端,滑轮自动向下滚动. ug.ActiveRowScrollRegion.Scroll(RowScrollAction.LineDown); }; ug.DragDrop += (sender, args) => { ug.Cursor = Cursors.Default; UIElement uieOver = ug.DisplayLayout.UIElement.ElementFromPoint(ug.PointToClient(new Point(args.X, args.Y + 10))); UltraGridRow ugrOver = uieOver.GetContext(typeof(UltraGridRow), true) as UltraGridRow; if (ugrOver != null) { var dropIndex = ugrOver.HasParent() ? ugrOver.ParentRow.Index : ugrOver.Index; SelectedRowsCollection SelRows = args.Data.GetData(typeof(SelectedRowsCollection)) as SelectedRowsCollection; if (action != null) { action(SelRows, dropIndex); } else { foreach (UltraGridRow aRow in SelRows) { ug.Rows.Move(aRow, dropIndex); } } } }; } /// /// 合并单元格统计 /// public static void SetGroupBySum(UltraGrid ug, string[] columnKeys, string groupBy) { if (columnKeys.Length == 0) { return; } for (int i = 0; i < columnKeys.Length; i++) { SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add( columnKeys[i], SummaryType.Custom, new StringSummaryCalculator(groupBy), // Custom summary calculator ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn, null); summary.DisplayFormat = "{0:N3}"; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; } } } class StringSummaryCalculator : ICustomSummaryCalculator { private string _summaryText = ""; private string groupby = ""; internal StringSummaryCalculator(string GroupBy) { groupby = GroupBy; } public void AggregateCustomSummary(SummarySettings summarySettings, UltraGridRow row) { } public void BeginCustomSummary(SummarySettings summarySettings, RowsCollection rowCollection) { string key = summarySettings.Key; var list = rowCollection.GroupBy(p => p.Cells[groupby].Value.ToString()).Select(p => p.LastOrDefault()).ToList(); _summaryText = list.Sum(p => double.Parse(p.Cells[key].Value.ToString())).ToString(); } public object EndCustomSummary(SummarySettings summarySettings, RowsCollection rowCollection) { return this._summaryText; } } }