using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; using CoreFS.CA06; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm; using Core.Mes.Client.Comm.Tool; using System.Reflection; using Microsoft.Office.Interop.Excel; using com.steering.pss.plan.order.model; namespace Core.StlMes.Client.Plan.Order { public partial class FrmOrderCraftImport : FrmBase { /// /// 模板路径 /// string modelPatch = ""; public string ModelPatch { get { return modelPatch; } set { modelPatch = value; } } public FrmOrderCraftImport() { InitializeComponent(); } private void FrmOrderCraftImport_Load(object sender, EventArgs e) { Init(); } /// /// 构造 /// /// public FrmOrderCraftImport(OpeBase ob) { this.ob = ob; InitializeComponent(); } /// /// 初始化 /// private void Init() { ultraNumRowStart.Value = 2; ultraNumRowEnd.Value = 2; if (!System.IO.File.Exists(ModelPatch))//检察文件是否存在 { return; } try { System.IO.File.Move(ModelPatch, ModelPatch); } catch { MessageUtil.ShowTips("文件已经被打开,请先关闭!"); return; } uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Open(ModelPatch, true); this.ultraNumRowEnd.Value = getExcelRowsCount(); } /// /// 获取excl的行数 /// private int getExcelRowsCount() { //获取行数(上限5000) int colOrderNo = 0; int j = 4999; string[,] arr = null; string[,] head = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value("A" + 1, "BZ" + 1)); if (head == null) { return 1; } for (int i = 0; i < head.GetLength(1); i++) { if (head[0, i].Trim().Equals("合同号")) { colOrderNo = i; break; } } arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value( ExcelHelper.SeqToXlsCol[colOrderNo + 1] + 2, ExcelHelper.SeqToXlsCol[colOrderNo + 1] + 5001)); if (arr == null) { return 1; } for (j = 4999; j >= 0; j--) { if (!arr[j, 0].Equals("")) { break; } } return j + 2; } private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "Save": doSave(); break; case "Open": doOpen(); break; case "Close": doClose(); break; } } /// /// 打开excel文件 /// private void doOpen() { try { OpenFileDialog dialog = new OpenFileDialog(); uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit(); if (dialog.ShowDialog() == DialogResult.OK) { ModelPatch = dialog.FileName; if (!System.IO.File.Exists(ModelPatch))//检察文件是否存在 { return; } try { System.IO.File.Move(ModelPatch, ModelPatch); } catch { MessageUtil.ShowTips("文件已经被打开,请先关闭!"); return; } uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Open(ModelPatch, true); this.ultraNumRowEnd.Value = getExcelRowsCount(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } /// /// 导入数据到工艺文件表中 /// private void doSave() { try { int startRow = (int)ultraNumRowStart.Value; int endRow = (int)ultraNumRowEnd.Value; if (endRow - startRow < 0) { MessageUtil.ShowTips("没有任何行数据!"); return; } string[,] head = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value("A" + 1, "BZ" + 1)); if (head == null) { return; } string[] colhead = new string[head.GetLength(1)]; for (int i = 0; i < colhead.Length; i++) { colhead[i] = head[0, i]; } #region 获取合同号、工艺号等所在列 int colNum = 0; int colOrderNo = -1; int colCraftFileNo = -1; int colstdLgNo = -1; int colstdZgNo = -1; int colstdGjgNo = -1; int colcraftFileMan = -1; int colversionChange = -1; int colversionDesc = -1; int colheightNkMin = -1; int colheightNkMax = -1; int coliussedId = -1; if (!((IList)colhead).Contains("合同号")) { MessageUtil.ShowWarning("列“合同号”不存在!"); return; } if (!((IList)colhead).Contains("工艺号")) { MessageUtil.ShowWarning("列“工艺号”不存在!"); return; } if (!((IList)colhead).Contains("炼钢标准")) { MessageUtil.ShowWarning("列“炼钢标准”不存在!"); return; } if (!((IList)colhead).Contains("轧管标准")) { MessageUtil.ShowWarning("列“轧管标准”不存在!"); return; } if (!((IList)colhead).Contains("加工标准")) { MessageUtil.ShowWarning("列“加工标准”不存在!"); return; } if (!((IList)colhead).Contains("工艺文件责任人")) { MessageUtil.ShowWarning("列“工艺文件责任人”不存在!"); return; } if (!((IList)colhead).Contains("壁厚下限")) { MessageUtil.ShowWarning("列“壁厚下限”不存在!"); return; } if (!((IList)colhead).Contains("壁厚上限")) { MessageUtil.ShowWarning("列“壁厚上限”不存在!"); return; } if (!((IList)colhead).Contains("下发版次")) { MessageUtil.ShowWarning("列“下发版次”不存在!"); return; } for (int i = head.GetLength(1) - 1; i >= 0; i--) { if (!head[0, i].Equals("") && colNum == 0) { colNum = i; } if (head[0, i].Trim().Equals("合同号")) { colOrderNo = i; } if (head[0, i].Trim().Equals("工艺号")) { colCraftFileNo = i; } if (head[0, i].Trim().Equals("炼钢标准")) { colstdLgNo = i; } if (head[0, i].Trim().Equals("轧管标准")) { colstdZgNo = i; } if (head[0, i].Trim().Equals("加工标准")) { colstdGjgNo = i; } if (head[0, i].Trim().Equals("工艺文件责任人")) { colcraftFileMan = i; } if (head[0, i].Trim().Equals("工艺变动")) { colversionChange = i; } if (head[0, i].Trim().Equals("工艺版本描述")) { colversionDesc = i; } if (head[0, i].Trim().Equals("壁厚下限")) { colheightNkMin = i; } if (head[0, i].Trim().Equals("壁厚上限")) { colheightNkMax = i; } if (head[0, i].Trim().Equals("下发版次")) { coliussedId = i; } } #endregion string[,] arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value( "A" + startRow, ExcelHelper.SeqToXlsCol[colNum + 1] + endRow)); if (arr == null) { return; } for (int i = 0; i <= endRow -startRow; i++) { if (arr[i,colOrderNo].Equals("")) { MessageUtil.ShowTips("第" + (i + startRow).ToString() + "行,合同号为空!"); return; } //if (arr[i, colCraftFileNo].Equals("") && !arr[i, coliussedId].Equals("")) //{ // WaitFromColse(); // MessageUtil.ShowTips("第" + (i + startRow).ToString() + "行,工艺号为空!"); // return; //} } ArrayList ListCraftFile = new ArrayList(); ArrayList listOrderNo = new ArrayList(); WaitFromOpen(); for (int i = 0; i < arr.GetLength(0); i++) { if (!arr[i, colCraftFileNo].Equals("") && !arr[i, coliussedId].Equals("") && !listOrderNo.Contains(arr[i, colOrderNo].ToString())) { PlnOrdCraftFileEntity craftFile = new PlnOrdCraftFileEntity(); string orderNoseq = arr[i, colOrderNo].ToString(); if (!orderNoseq.Contains('/')) { WaitFromColse(); MessageUtil.ShowTips("第" + (i + startRow).ToString() + "行,合同行号为空!"); return; } string orderNo = orderNoseq.Substring(0, orderNoseq.LastIndexOf('/')); string orderSeq = orderNoseq.Substring(orderNoseq.LastIndexOf('/') + 1); double heightnkmin = 0; double heightnkmax = 0; listOrderNo.Add(orderNoseq); #region 取系统数据 System.Data.DataTable dt = ServerHelper.GetData("com.steering.pss.plan.order.CoreOrderCraftInfo.getSaleOrderStatus", new object[] { orderNo, orderSeq }, this.ob); if (dt != null && dt.Rows.Count > 0) { ArrayList param = new ArrayList(); double outdiameter = 0; double wallthick = 0; param.Add(dt.Rows[0]["ORD_PK"].ToString()); param.Add(dt.Rows[0]["ORD_LN_PK"].ToString()); param.Add(dt.Rows[0]["INDEX_SEQ"].ToString()); System.Data.DataTable dtPro = ServerHelper.GetData("com.steering.pss.plan.order.CoreOrderCraftInfo.getOrderCraftpath", new object[] { param }, this.ob); if (dtPro != null && dtPro.Rows.Count > 0) { System.Data.DataTable dtPath = null; dtPro.DefaultView.RowFilter = "PROCESS_CODE= 'D'"; dtPath = dtPro.DefaultView.ToTable(); if (dtPath != null && dtPath.Rows.Count > 0) { craftFile.CraftPath = dtPath.Rows[0]["PROCESS_DESC_C"].ToString(); } dtPro.DefaultView.RowFilter = "PROCESS_CODE= 'F'"; dtPath = dtPro.DefaultView.ToTable(); if (dtPath != null && dtPath.Rows.Count > 0) { craftFile.RclInfo = dtPath.Rows[0]["PROCESS_DESC_C"].ToString(); } } double.TryParse(dt.Rows[0]["WALLTHICK"].ToString(), out wallthick); double.TryParse(dt.Rows[0]["OUTDIAMETER"].ToString(), out outdiameter); craftFile.ProducJx = dt.Rows[0]["PRODUCNAME"].ToString(); craftFile.Steelname = dt.Rows[0]["STEELNAME"].ToString(); craftFile.Steelcode = dt.Rows[0]["STEELCODE"].ToString(); craftFile.Outdiameter = outdiameter.ToString(); craftFile.Wallthick = wallthick.ToString(); craftFile.ModelCode = dt.Rows[0]["MODEL_CODE"].ToString(); craftFile.ModelDesc = dt.Rows[0]["MODEL_DESC"].ToString(); craftFile.LengthExtent = dt.Rows[0]["LENGTHDISC"].ToString(); craftFile.Gradecode = dt.Rows[0]["GRADECODE_ALL"].ToString(); craftFile.BjType = dt.Rows[0]["BJ_TYPE"].ToString(); craftFile.PaydownDpt = dt.Rows[0]["ENDGXNAME"].ToString(); craftFile.MonitorInfo = dt.Rows[0]["MONITORDEMAND"].ToString(); craftFile.SDivD = wallthick / outdiameter; } #endregion craftFile.OrderNo = orderNo; craftFile.OrderSeq = orderSeq; craftFile.CraftFileNo = arr[i, colCraftFileNo].ToString(); craftFile.StdLgNo = arr[i, colstdLgNo].ToString(); craftFile.StdZgNo = arr[i, colstdZgNo].ToString(); craftFile.StdGjgNo = arr[i, colstdGjgNo].ToString(); craftFile.CraftFileMan = arr[i, colcraftFileMan].ToString(); double.TryParse(arr[i, colheightNkMin].ToString(), out heightnkmin); craftFile.HeightNkMin = heightnkmin.ToString(); double.TryParse(arr[i, colheightNkMax].ToString(), out heightnkmax); craftFile.HeightNkMax = heightnkmax.ToString(); if (colversionChange != -1) { if (!arr[i, colversionChange].ToString().Equals("")) { craftFile.VersionNo = "True"; } } if (colversionDesc != -1) { craftFile.VersionDesc = arr[i, colversionDesc].ToString(); } craftFile.CreateName = UserInfo.GetUserName(); ListCraftFile.Add(craftFile); } } CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.plan.order.CoreOrderCraftInfo"; ccp.MethodName = "saveCraftInfo"; ccp.ServerParams = new object[] { ListCraftFile, startRow }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); WaitFromColse(); if (ccp.ReturnCode != -1) { MessageUtil.ShowTips(ccp.ReturnInfo); } else { MessageUtil.ShowError("导入失败!" + ccp.ReturnInfo); } } catch (Exception ex) { WaitFromColse(); MessageBox.Show(ex.Message); } } /// /// 关闭 /// private void doClose() { uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit(); } private void FrmOrderCraftImport_FormClosed(object sender, FormClosedEventArgs e) { uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit(); } private void ultraNumRowStart_ValueChanged(object sender, EventArgs e) { ultraNumRowEnd.MinValue = ultraNumRowStart.Value; } private void ultraNumRowEnd_ValueChanged(object sender, EventArgs e) { ultraNumRowStart.MaxValue = ultraNumRowEnd.Value; } /// /// object二维数组转string二维数组 /// /// /// private string[,] ObjectToString(object[,] obj) { int rows = obj.GetLength(0); //获取m_objRangeArrayValue的行数 int columns = obj.GetLength(1); //获取m_objRangeArrayValue的列数 object[,] param = new object[rows, columns]; //转化为起始为0的数组 Array.Copy(obj, param, rows * columns); //临时结果,学习用 string[,] str = new string[param.GetLength(0), param.GetLength(1)]; for (int i = 0; i < str.GetLength(0); i++) { for (int j = 0; j < str.GetLength(1); j++) { if (param[i, j] == null) { str[i, j] = ""; } else { str[i, j] = param[i, j].ToString(); } } } return str; } /// /// 等待窗口 /// private void WaitFromOpen() { this.Cursor = Cursors.WaitCursor; //控制鼠标的样式为等待 if (Constant.WaitingForm == null) { Constant.WaitingForm = new WaitingForm(); } Constant.WaitingForm.ShowToUser = true; Constant.WaitingForm.Show(); Constant.WaitingForm.Update(); } /// /// 关闭等待 /// private void WaitFromColse() { this.Cursor = Cursors.Default; Constant.WaitingForm.ShowToUser = false; Constant.WaitingForm.Close(); Constant.WaitingForm = null; } } }