using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Core.Mes.Client.Comm.Format; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using Core.StlMes.Client.LgCommon; using Core.StlMes.Client.LgResMgt.库存位置; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinEditors; using Infragistics.Win.UltraWinGrid; using Resources = Core.StlMes.Client.LgResMgt.Properties.Resources; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; using BorderStyle = NPOI.SS.UserModel.BorderStyle; using HorizontalAlignment = NPOI.SS.UserModel.HorizontalAlignment; using System.IO; using System.Diagnostics; using MatInfo = Core.StlMes.Client.LgResMgt.库存位置.MatInfo; namespace Core.StlMes.Client.LgResMgt { public partial class StorageInfo : FrmBase { private int _height = 200; private string GridText; private YdmBsStorageSettingEntity ydmBsStorageSettingEntity; public StorageInfo() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); BindStorageDropDown(); EntityHelper.ShowGridCaption(ugLocationDetail.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ugWaitMove.DisplayLayout.Bands[0]); egbLocationInfo.Expanded = false; ClsControlPack.RefreshAndAutoSize(ugWaitMove); } public void BindStorageDropDown() { var dic = new Dictionary(); var customInfo = CustomInfo.ToString2(); if (!string.IsNullOrWhiteSpace(customInfo)) dic.Add("storageTypeNo", customInfo.Split(',')); dic.Add("managementNo", ValidDataPurviewIds); var dt = ServerHelper.GetData("Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageNoList", new object[] {dic}, ob); if ((dt != null) && (dt.Rows.Count > 0)) { uceStorageNo.DataSource = dt; uceStorageNo.ValueMember = "STORAGE_NO"; uceStorageNo.DisplayMember = "STORAGE_NAME"; } if (uceStorageNo.Items.Count > 0) uceStorageNo.SelectedIndex = 0; } public void RefreshData() { matInfoBindingSource.Clear(); if (uceStorageNo.SelectedIndex == -1) { ydmBsStorageSettingEntity = null; return; } ; GetStorageSetting(); dtData.Rows.Clear(); dtData.Columns.Clear(); matGpMAndStorageEntityBindingSource.Clear(); var locationInfos = EntityHelper.GetData( "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageLocationInfoNew", new[] {uceStorageNo.SelectedItem.DataValue}, ob); GridText = string.Format(@"可用空料位(大): {0} 可用空料位(小): {1} 满料位(大):{2} 满料位(小):{3} 总炉数: {4} 总支数: {5} 总吨数 {6}", locationInfos.Where(a => ((a.RackType == null || a.RackType == "") || a.RackType.Equals("0"))).Count(p => (p.ActCount == null) || (p.ActCount <= 0)), locationInfos.Where(a => ((a.RackType == null || a.RackType == "") || a.RackType.Equals("1"))).Count(p => (p.ActCount == null) || (p.ActCount <= 0)), locationInfos.Where(a => ((a.RackType == null || a.RackType == "") || a.RackType.Equals("0"))).Count(p => (p.ActCount != null) && (p.ActCount > 0)), locationInfos.Where(a => ((a.RackType == null || a.RackType == "") || a.RackType.Equals("1"))).Count(p => (p.ActCount != null) && (p.ActCount > 0)), locationInfos.Sum(p => p.JudgeStoveNoCount), locationInfos.Sum(p => p.ActCount), locationInfos.Sum(p => p.ActWeight) ); ugStorageInfo.Text = GridText; if (ydmBsStorageSettingEntity.ColumnRowNum == "0") { //老逻辑 列名 是按字母顺序分配 OldLogic(locationInfos); } else { NewLogic(locationInfos); } foreach (var ultraGridRow in ugStorageInfo.Rows) foreach (var ultraGridCell in ultraGridRow.Cells) { var locationInfo = ultraGridCell.Tag as LocationInfo; if (locationInfo != null && locationInfo.IsProcess == "1") { ultraGridCell.Appearance.BackColor = Color.BurlyWood; } } } private void NewLogic(DataSourceList locationInfos) { var emptyRow = new List(); var emptyColums = new List(); var isSingleArea = locationInfos.Select(p => p.AreaNo).Distinct().Count() == 1; locationInfos.OrderBy(p => p.AreaNo).GroupBy(p => p.AreaNo).ToList().ForEach( areaData => { var maxColums = 0; if (ydmBsStorageSettingEntity.ColumnReverse == "0") { var list = areaData .Where(p => StringUtil.IsInt(p.ColNo)); if (list.Any()) maxColums = list.Select(p => int.Parse(p.ColNo.ToString2())).Max(); } else { var list = areaData .Where(p => StringUtil.IsInt(p.RowNo)); if (list.Any()) maxColums = list.Select(p => int.Parse(p.RowNo.ToString2())).Max(); } for (var i = 1; i <= maxColums; i++) { var name = getColumsName(isSingleArea, areaData.Key, i + ""); dtData.Columns.Add( new DataColumn(name)); emptyColums.Add(name); } } ); var maxRow = 0; if (ydmBsStorageSettingEntity.ColumnReverse == "0") { var list = locationInfos .Where(p => StringUtil.IsInt(p.RowNo)); if (list.Any()) maxRow = list.Select(p => int.Parse(p.RowNo.ToString2())).Max(); } else { var list = locationInfos .Where(p => StringUtil.IsInt(p.ColNo)); if (list.Any()) maxRow = list.Select(p => int.Parse(p.ColNo.ToString2())).Max(); } for (var i = 0; i < maxRow; i++) { dtData.Rows.Add(dtData.NewRow()); emptyRow.Add(i); } locationInfos.ForEach(p => { int rowindex; if ( int.TryParse(ydmBsStorageSettingEntity.ColumnReverse == "0" ? p.RowNo : p.ColNo, out rowindex) && (rowindex > 0)) { int column; if ( !int.TryParse(ydmBsStorageSettingEntity.ColumnReverse == "0" ? p.ColNo : p.RowNo, out column) && (rowindex > 0)) return; var colum = getColumsName(isSingleArea, p.AreaNo, column + ""); ugStorageInfo.Rows[rowindex - 1].Cells[colum].Tag = p; if (emptyRow.Contains(rowindex - 1)) emptyRow.Remove(rowindex - 1); if (emptyColums.Contains(colum)) emptyColums.Remove(colum); string data = ydmBsStorageSettingEntity.CellShow == "1" ? colum + "_" + rowindex : p.LocationName; int maxLen = 0; int.TryParse(ugStorageInfo.DisplayLayout.Bands[0].Columns[colum].Tag.ToString3(), out maxLen); int dataLen = System.Text.Encoding.Default.GetBytes(data).Length; if (dataLen > maxLen) ugStorageInfo.DisplayLayout.Bands[0].Columns[colum].Tag = dataLen; ugStorageInfo.Rows[rowindex - 1].Cells[colum].Value = ImageText( p.ActCount.ToString3(), data) ; } }); if (ydmBsStorageSettingEntity.EmptyRowSort >= 0) for (var i = emptyRow.Count - 1; i >= 0; i--) { var currentlist = new List {emptyRow[i]}; while ((i > 0) && (emptyRow[i] - emptyRow[i - 1] == 1)) currentlist.Add(emptyRow[--i]); for (var j = currentlist.Count - 1; j >= ydmBsStorageSettingEntity.EmptyRowSort; j--) ugStorageInfo.Rows[currentlist[j]].Delete(false); } if (ydmBsStorageSettingEntity.EmptyColumnSort >= 0) for (var i = emptyColums.Count - 1; i >= 0; i--) { var currentlist = new List {emptyColums[i]}; while ((i > 0) && (ugStorageInfo.DisplayLayout.Bands[0].Columns[emptyColums[i]].Index - ugStorageInfo.DisplayLayout.Bands[0].Columns[emptyColums[i - 1]].Index == 1)) currentlist.Add(emptyColums[--i]); for (var j = currentlist.Count - 1; j >= ydmBsStorageSettingEntity.EmptyColumnSort; j--) ugStorageInfo.DisplayLayout.Bands[0].Columns[currentlist[j]].Hidden = true; for (var j = int.Parse(ydmBsStorageSettingEntity.EmptyColumnSort.ToString2()) - 1; j >= 0; j--) ugStorageInfo.DisplayLayout.Bands[0].Columns[currentlist[j]].Header.Caption = "..."; } SetGridFormat(); } private string getColumsName(bool isSingleArea, string area, string col) { return (isSingleArea ? "" : area + "_") + col; } private void OldLogic(DataSourceList locationInfos) { locationInfos.OrderBy(p => p.AreaNo).GroupBy(p => p.AreaNo).ToList().ForEach( areaYdmBsLocationEntities => { var maxRow = 0; foreach ( IGrouping rowYdmBsLocationEntities in areaYdmBsLocationEntities.OrderBy(p => p.RowNo).GroupBy(p => p.RowNo)) { var columnName = NunberToChar(areaYdmBsLocationEntities.Key, 1) + NunberToChar(rowYdmBsLocationEntities.Key); if (!dtData.Columns.Contains(columnName)) dtData.Columns.Add( new DataColumn(columnName)); foreach (var ydmBsLocationEntity in rowYdmBsLocationEntities) { var rowindex = 0; if (!int.TryParse(ydmBsLocationEntity.ColNo, out rowindex)) continue; for (var i = dtData.Rows.Count; i < rowindex; i++) dtData.Rows.Add(dtData.NewRow()); var locationMatGpMAndStorageEntitys = locationInfos.Where(p => p.LocationNo == ydmBsLocationEntity.LocationNo).ToList(); if (locationMatGpMAndStorageEntitys.Any()) ugStorageInfo.Rows[rowindex - 1].Cells[columnName].Tag = locationMatGpMAndStorageEntitys[0]; else ugStorageInfo.Rows[rowindex - 1].Cells[columnName].Tag = ydmBsLocationEntity.LocationName.Replace("\n", "").Replace("\r", ""); dtData.Rows[rowindex - 1][columnName] = ImageText( locationMatGpMAndStorageEntitys.Where(p => p.ActCount != null) .Select(p => p.ActCount) .Sum() .ToString(), ydmBsStorageSettingEntity.CellShow == "1" ? ugStorageInfo.DisplayLayout.Bands[0].Columns[columnName].Header.Caption + rowindex : ydmBsLocationEntity.LocationName); } } } ); SetGridFormat(); } private void SetGridFormat() { ugStorageInfo.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False; ugStorageInfo.DisplayLayout.Override.RowSelectorHeaderStyle = RowSelectorHeaderStyle.ExtendFirstColumn; ugStorageInfo.DisplayLayout.Override.RowSelectorWidth = 20; foreach (var ugc in ugStorageInfo.DisplayLayout.Bands[0].Columns) { int maxLen = 0; int.TryParse(ugc.Tag.ToString3(), out maxLen); ugc.SortIndicator = SortIndicator.Disabled; ugc.CellActivation = Activation.NoEdit; ugc.Width =maxLen>8? (int)(maxLen* 8.8d): 72; ugc.EditorComponent = ut1; } //ugStorageInfo.DisplayLayout.Override.RowSizing = RowSizing.AutoFree; ugStorageInfo.DisplayLayout.Override.DefaultRowHeight = 52 + (ydmBsStorageSettingEntity.CellShow == "3" ? 15 : 0); } private void GetStorageSetting() { List lists = EntityHelper.GetData( "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageSetting", new object[] {uceStorageNo.SelectedItem.DataValue.ToString()}, ob); if (lists.Any()) ydmBsStorageSettingEntity = lists[0]; else ydmBsStorageSettingEntity = new YdmBsStorageSettingEntity { StorageNo = uceStorageNo.SelectedItem.DataValue.ToString(), GroupArea = "1", ColumnReverse = "1", CellShow = "1", CellHight = 34, CellWight = 45, CellFullImage = ut1.EditInfo.EncodeImage(Resources.Full_Shelf), CellEmptyImage = ut1.EditInfo.EncodeImage(Resources.Empty_Shelf), EmptyColumnSort = 0, EmptyRowSort = 0, ColumnRowNum = "0" }; } public string ImageText( string type, string title) { var encodedImage = type == "0" ? ydmBsStorageSettingEntity.CellEmptyImage : ydmBsStorageSettingEntity.CellFullImage; /* string ImageFormat = "


{0}

";*/ var sb = new StringBuilder(); sb.Append("

"); if (ydmBsStorageSettingEntity.CellShow == "3") { sb.Append(""); sb.Append("[" + type+"]"); sb.Append(""); sb.Append("
"); } sb.Append(string.Format(" ", title, ydmBsStorageSettingEntity.CellWight, ydmBsStorageSettingEntity.CellHight, encodedImage)); if (ydmBsStorageSettingEntity.CellShow != "0") { sb.Append("
"); sb.Append(""); sb.Append( title ); sb.Append(""); sb.Append("
"); } sb.Append("

"); return sb.ToString2(); } private void ugStorageInfo_AfterCellActivate(object sender, EventArgs e) { var LocationText = ""; // matGpMAndStorageEntityBindingSource.DataSource = new List(); if (ugStorageInfo.ActiveCell.Tag != null) { var locaiton = ugStorageInfo.ActiveCell.Tag as LocationInfo; if (locaiton != null) { var name = locaiton.LocationName + (string.IsNullOrWhiteSpace(locaiton.Memo) ? "" : "(" + locaiton.Memo + ")"); if ((locaiton.ActCount == null) || (locaiton.ActCount <= 0)) LocationText = string.Format(@" 当前料位: {0} 空料架", name); else LocationText = string.Format(@" 当前料位: {0} 料位炉数: {1} 料位支数: {2} 料位吨数 {3}", name, locaiton.JudgeStoveNoCount, locaiton.ActCount, locaiton.ActWeight ); } } ugStorageInfo.Text = GridText + LocationText; // ClsControlPack.RefreshAndAutoSize(ugLocationDetail); // ugStorageInfo.ActiveCell.Tag } private void uceStorageNo_ValueChanged(object sender, EventArgs e) { RefreshData(); } public override void ToolBar_Click(object sender, string toolbarKey) { switch (toolbarKey) { case "Query": //查询 RefreshData(); break; case "Print": Print(); break; case "UpdateMemo": UpdateMemo(); break; case "Close": //关闭 Close(); break; } } private void UpdateMemo() { ugLocationDetail.UpdateData(); var listTotal = matInfoBindingSource.DataSource as List<库存位置.MatInfo>; var list = listTotal.Where(p => p.Chk).ToList(); if (!list.Any()) { MessageBox.Show("请选择需要修改备注的库存信息!"); return; } using (var updateMemo = new UpdateMemo(ob, list)) { if (updateMemo.ShowDialog() == DialogResult.OK) { ugStorageInfo_AfterSelectChange(null, null); } } } private void Print() { if (ugLocationDetail.ActiveRow == null) { MessageBox.Show("请选中需要打印的炉号"); return; } var matInfo = ugLocationDetail.ActiveRow.ListObject as MatInfo; var strurl = ""; strurl = @"http://172.54.10.42:8080/webroot/decision/view/report?viewlet=RepLabelTH.cpt&JUDGE_STOVE_NO=" + matInfo.JudgeStoveNo + "&BATCH_NO=" + matInfo.BatchNo + "&PRO_ORDER_NO=" + matInfo.OrderNo + "&LOCATION_NO=" + matInfo.LocationNo + "&USER=" + UserInfo.GetUserID(); var fBug = new FrmRepExcel(ob, strurl); fBug.AutoSize = true; fBug.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height); fBug.WindowState = FormWindowState.Maximized; fBug.Text = "打印标牌"; fBug.Show(); } private string NunberToChar(string numberstr, int dif = 0) { try { var number = int.Parse(numberstr) - dif; if ((1 <= number) && (36 >= number)) { var num = number + 64; var asciiEncoding = new ASCIIEncoding(); byte[] btNumber = {(byte) num}; return asciiEncoding.GetString(btNumber); } if (number == 0) return ""; return "#"; } catch (Exception) { return "#"; } } private void egbLocationInfo_ExpandedStateChanged(object sender, EventArgs e) { if (scMain.Panel2Collapsed) return; if (egbLocationInfo.Expanded) { scMain.SplitterDistance = scMain.Size.Height - _height; } else { _height = scMain.Panel2.Size.Height; scMain.SplitterDistance = scMain.Size.Height - 25; } } private void scMain_SizeChanged(object sender, EventArgs e) { if (scMain.Panel2Collapsed) return; if (egbLocationInfo.Expanded) scMain.SplitterDistance = scMain.Size.Height - _height; else scMain.SplitterDistance = scMain.Size.Height - 25; } private void etStoveNo_EditorButtonClick(object sender, EditorButtonEventArgs e) { try { var control = sender as UltraTextEditor; if (control == null) return; if (e.Button.Key.ToUpper().Equals("CLEAR".ToUpper())) { if (!string.IsNullOrEmpty(control.Text.Trim())) { control.Tag = control.Text.Trim(); control.Clear(); } else if (control.Tag != null) control.Text = Convert.ToString(control.Tag); } else if (e.Button.Key.ToUpper().Equals("FIND".ToUpper())) { FindStoveData(control); } } catch { // ignored } } private void FindStoveData(UltraTextEditor control) { if (uceStorageNo.SelectedIndex < 0) return; ugStorageInfo.Selected.Cells.Clear(); if (ugStorageInfo.ActiveCell != null) { ugStorageInfo.ActiveCell.Activated = false; matGpMAndStorageEntityBindingSource.DataSource = new List(); } List list = EntityHelper.GetData( "Core.LgMes.Server.LgDeviceManager.StorageManage.getLocationByStoveNo", new[] {uceStorageNo.SelectedItem.DataValue, control.Text.Trim()}, ob); foreach (var ultraGridRow in ugStorageInfo.Rows) foreach (var ultraGridCell in ultraGridRow.Cells) { var locationInfo = ultraGridCell.Tag as LocationInfo; if (locationInfo != null) if ( list.Any( p => p.LocationNo == locationInfo.LocationNo)) { ultraGridCell.Activated = true; ultraGridCell.Selected = true; } } egbLocationInfo.Expanded = true; foreach (var ultraGridRow in ugLocationDetail.Rows) { var matInfo = ultraGridRow.ListObject as MatInfo; if (matInfo.JudgeStoveNo == control.Text.Trim() || matInfo.StoveNo == control.Text.Trim()) ultraGridRow.Selected = true; } } private void txtStoveNo_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13) FindStoveData(txtStoveNo); } private void ugStorageInfo_AfterSelectChange(object sender, AfterSelectChangeEventArgs e) { matInfoBindingSource.Clear(); var locations = new List(); foreach (var ultraGridCell in ugStorageInfo.Selected.Cells) { var LocationInfo = ultraGridCell.Tag as LocationInfo; if (LocationInfo != null) locations.Add(LocationInfo.LocationNo); } if (!locations.Any()) return; foreach (var ultraGridColumn in ugLocationDetail.DisplayLayout.Bands[0].Columns) { //TZH 2024.8.15 add 判定字头(PdZt)是否送判(IfSp) 去向 (MatGowhereName) if (ultraGridColumn.Key == "Chk" || ultraGridColumn.Key == "MatState" || ultraGridColumn.Key == "Producname" || ultraGridColumn.Key == "PdZt" || ultraGridColumn.Key == "IfSp" || ultraGridColumn.Key == "MatGowhereName") continue; ultraGridColumn.Hidden = true; } matInfoBindingSource.DataSource = EntityHelper.GetData( "Core.LgMes.Server.LgDeviceManager.StorageManage.StorageNoDataSumNew", new[] {uceStorageNo.SelectedItem.DataValue, locations.ToArray()}, ob); ClsControlPack.RefreshAndAutoSize(ugLocationDetail); } private void ugLocationDetail_InitializeRow(object sender, InitializeRowEventArgs e) { foreach (var ultraGridColumn in ugLocationDetail.DisplayLayout.Bands[0].Columns) { if (ultraGridColumn.Key == "Chk") continue; if (ultraGridColumn.Key == "LocationNo") continue; if (ultraGridColumn.Key == "MatType") continue; if (!ultraGridColumn.Hidden) continue; if (!string.IsNullOrWhiteSpace(e.Row.Cells[ultraGridColumn.Key].Value.ToString2())) ultraGridColumn.Hidden = false; } } private void StorageInfo_Shown(object sender, EventArgs e) { ugLocationDetail.DisplayLayout.Bands[0].Columns["Chk"].Hidden = true; if ((toolMenu != null) && (toolMenu.Toolbars != null) && (toolMenu.Toolbars.Count > 0)) { if (toolMenu.Toolbars[0].Tools.Exists("move")) if (toolMenu.Toolbars[0].Tools["move"].InstanceProps.Visible != DefaultableBoolean.False) { ugLocationDetail.ContextMenuStrip = listViewMenuStrip; ugLocationDetail.DisplayLayout.Bands[0].Columns["Chk"].Hidden = false; toolMenu.Toolbars[0].Tools["move"].InstanceProps.Visible = DefaultableBoolean.False; } if (toolMenu.Toolbars[0].Tools.Exists("UpdateMemo")) { ugLocationDetail.DisplayLayout.Bands[0].Columns["Chk"].Hidden = false; } } } private void ugStorageInfo_DoubleClick(object sender, EventArgs e) { if (ugStorageInfo.ActiveCell == null) return; var locationInfo = ugStorageInfo.ActiveCell.Tag as LocationInfo; if (egpWaitMove.Visible && (locationInfo != null)) { var locations = bindingSource1.DataSource as List; if ((locations != null) && locations.Any()) { if (MessageUtil.ShowYesNoAndQuestion("是否确认倒垛至料位[" + locationInfo.LocationName + "] ?") == DialogResult.No) return; var ccp = new CoreClientParam { ServerName = "Core.LgMes.Server.LgDeviceManager.StorageManage", MethodName = "DoMove", ServerParams = new object[] { locations.Select(JSONFormat.Format).ToList(), locationInfo.LocationNo } }; ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal); MessageUtil.ShowTips(ccp.ReturnInfo); if (ccp.ReturnInfo.ToString2().Contains("成功")) { var locationInfos = EntityHelper.GetData( "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageLocationInfoNewByLocation", new[] {locationInfo.LocationNo}, ob); if ((locationInfos != null) && locationInfos.Any()) { ugStorageInfo.ActiveCell.Tag = locationInfos[0]; ugStorageInfo.ActiveCell.Value = ImageText( locationInfos[0].ActCount == null ? "0" : locationInfos[0].ActCount.ToString3(), ydmBsStorageSettingEntity.CellShow == "1" ? ugStorageInfo.ActiveCell.Column.Header.Caption + ugStorageInfo.ActiveCell.Row.Index : locationInfos[0].LocationName); } else ugStorageInfo.ActiveCell.Tag = null; locations.Select(p => p.UltraGridCell).Distinct().ToList().ForEach(p => { var location = p.Tag as LocationInfo; if (location != null) { var locs = EntityHelper.GetData( "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageLocationInfoNewByLocation", new[] {location.LocationNo}, ob); if ((locs != null) && locs.Any()) { p.Tag = locs[0]; p.Value = ImageText( locs[0].ActCount == null ? "0" : locs[0].ActCount.ToString3(), ydmBsStorageSettingEntity.CellShow == "1" ? p.Column.Header.Caption + p.Row.Index : locs[0].LocationName); } else p.Tag = null; } }); bindingSource1.Clear(); egpWaitMove.Visible = false; ugStorageInfo_AfterCellActivate(null, null); ugStorageInfo_AfterSelectChange(null, null); } else { return; } } } if ((locationInfo != null) && (locationInfo.ActCount != null) && (locationInfo.ActCount > 0) ) { if (!egbLocationInfo.Expanded) egbLocationInfo.Expanded = true; } else { egbLocationInfo.Expanded = false; } } private void MoveItem_Click(object sender, EventArgs e) { ugLocationDetail.UpdateData(); var listTotal = matInfoBindingSource.DataSource as List; var list = listTotal.Where(p => p.Chk).ToList(); if (!list.Any()) { MessageBox.Show("请选择需要倒垛的物料"); return; } var data = bindingSource1.DataSource as List; if (data == null) data = new List(); var addData = EntityHelper.CopyEntitys(list); addData.ForEach(p => { p.LaryNoTo = "1"; p.UserName = UserInfo.GetUserName(); p.Bc = UserInfo.GetUserOrder(); p.Bz = UserInfo.GetUserGroup(); p.Deptid = UserInfo.GetDeptid(); p.DeptName = UserInfo.GetDepartment(); p.UltraGridCell = ugStorageInfo.ActiveCell; }); var dataNew = data.Concat(addData).ToList(); bindingSource1.DataSource = dataNew; egpWaitMove.Visible = true; } private void clearItem_Click(object sender, EventArgs e) { bindingSource1.Clear(); egpWaitMove.Visible = false; } #region//导出空料位 private void unExcel_Click(object sender, EventArgs e) { var hssfworkbook = new HSSFWorkbook(); var sheet = hssfworkbook.CreateSheet("空料位统计"); var index = 0; SetHead(sheet, hssfworkbook, index++); SetHeadRow(sheet, hssfworkbook , new List { "料位代码", "料位名称", "区号", "行号", "列号", "备注" }, new List { 29, 25, 15, 15, 15, 15 }, index++ ); setData(sheet, hssfworkbook, ref index); // SetSumm(sheet, index, hssfworkbook); sheet.ForceFormulaRecalculation = true; hssfworkbook.GetCreationHelper().CreateFormulaEvaluator().EvaluateAll(); using (var saveFileDialog1 = new SaveFileDialog()) { saveFileDialog1.FileName = uceStorageNo.Text+"空料位统计" + DateTime.Now.ToString("yyMMddHHmmss"); saveFileDialog1.Filter = "Excel文件(*.xls)|*.xls"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { var sFullName = saveFileDialog1.FileName; var ms = new MemoryStream(); hssfworkbook.Write(ms); using (var fs = new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write)) { var bArr = ms.ToArray(); fs.Write(bArr, 0, bArr.Length); fs.Flush(); } var p = new ProcessStartInfo(sFullName); p.WorkingDirectory = Path.GetDirectoryName(sFullName); Process.Start(p); } } } private void SetHead(ISheet sheet, HSSFWorkbook hssfworkbook, int rowindex) { var IRow = sheet.CreateRow(rowindex); IRow.Height = 50 * 20; var Icell = IRow.CreateCell(1); Icell.SetCellValue("空料位统计"); var style = CenterStyle(hssfworkbook); var font = TitleFont(hssfworkbook); //使用SetFont方法将字体样式添加到单元格样式中 style.SetFont(font); //将新的样式赋给单元格 Icell.CellStyle = style; //合并单元格 sheet.AddMergedRegion(new CellRangeAddress(0, 0, 1, 6)); } private ICellStyle CenterStyle(HSSFWorkbook hssfworkbook) { var style = hssfworkbook.CreateCellStyle(); //设置单元格的样式:水平对齐居中 style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; style.VerticalAlignment = VerticalAlignment.Center; return style; } private ICellStyle textStyle(HSSFWorkbook hssfworkbook) { var style = hssfworkbook.CreateCellStyle(); //设置单元格的样式:水平对齐居中 style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; style.VerticalAlignment = VerticalAlignment.Center; return style; } private ICellStyle numStyle(HSSFWorkbook hssfworkbook) { var style = hssfworkbook.CreateCellStyle(); //设置单元格的样式:水平对齐居中 style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Right; style.VerticalAlignment = VerticalAlignment.Center; return style; } private static IFont TitleFont(HSSFWorkbook hssfworkbook) { //新建一个字体样式对象 var font = hssfworkbook.CreateFont(); font.FontName = "宋体"; font.FontHeightInPoints = 30; //设置字体加粗样式 font.Boldweight = (short)FontBoldWeight.Bold; return font; } private void SetHeadRow(ISheet sheet, HSSFWorkbook hssfworkbook, List name, List columsWidth, int rowIndex) { var IRow = sheet.CreateRow(rowIndex); IRow.Height = 20 * 20; for (var i = 0; i < name.Count; i++) { sheet.SetColumnWidth(i + 1, columsWidth[i] * 256); var Icell = IRow.CreateCell(i + 1); Icell.SetCellValue(name[i]); var style = CenterStyle(hssfworkbook); style.BorderTop =BorderStyle.Medium; style.BorderBottom = BorderStyle.Medium; style.BorderLeft = BorderStyle.Medium; style.BorderRight =BorderStyle.Medium; var font = ContextFont(hssfworkbook); //使用SetFont方法将字体样式添加到单元格样式中 style.SetFont(font); //将新的样式赋给单元格 Icell.CellStyle = style; } } private void setData(ISheet sheet, HSSFWorkbook hssfworkbook, ref int index) { var index1 = index; var data = EntityHelper.GetData( "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageLocationInfoNew", new[] { uceStorageNo.SelectedItem.DataValue }, ob) as List ; if ((data != null) && data.Any()) { data.Where(p=>(p.ActCount == null) || (p.ActCount <= 0)).Distinct().ToList() .ForEach( p => { var IRow = sheet.CreateRow(index1++); IRow.Height = 20 * 20; for (var i = 0; i < 6; i++) { var Icell = IRow.CreateCell(i + 1); Icell.SetCellType(CellType.String); if (i == 0) { Icell.SetCellValue(p.LocationNo); } if (i == 1) { Icell.SetCellValue(p.LocationName); } if (i == 2) { Icell.SetCellValue(p.AreaNo); } if (i == 3) { Icell.SetCellValue(p.ColNo); } if (i == 4) { Icell.SetCellValue(p.RowNo); } if (i == 5) { Icell.SetCellValue(p.IsProcess); } // var style = i <= 2 ? textStyle(hssfworkbook) : numStyle(hssfworkbook); // style.BorderTop = BorderStyle.Thin; // style.BorderBottom = BorderStyle.Thin; // style.BorderLeft = i == 0 ? BorderStyle.Medium : BorderStyle.Thin; // style.BorderRight = i == 5 ? BorderStyle.Medium : BorderStyle.Thin; // var font = ContextFont(hssfworkbook); // //使用SetFont方法将字体样式添加到单元格样式中 //// style.SetFont(font); // //将新的样式赋给单元格 // Icell.CellStyle = style; } } ); index = index1; } } private static IFont ContextFont(HSSFWorkbook hssfworkbook) { //新建一个字体样式对象 var font = hssfworkbook.CreateFont(); font.FontName = "宋体"; font.FontHeightInPoints = 12; //设置字体加粗样式 font.Boldweight = (short)FontBoldWeight.Bold; return font; } #endregion } }