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.Tool; using Core.Mes.Client.Comm.Server; using com.steering.pss.plnsaleord.order.model; using System.Globalization; using Core.Mes.Client.Comm; namespace Core.StlMes.Client.PlnSaleOrd.PopupWindow { public partial class FrmImportSetMatJg : FrmBase { /// /// 模板路径 /// string modelPatch = ""; /// /// 模板路径 /// public string ModelPatch { get { return modelPatch; } set { modelPatch = value; } } public FrmImportSetMatJg() { InitializeComponent(); } public FrmImportSetMatJg(OpeBase openbase) { this.ob = openbase; InitializeComponent(); } private void FrmImportSetOrder_Load(object sender, EventArgs e) { Init(); } /// /// 初始化 /// 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; } } /// /// 保存 /// private void doSave() { try { ArrayList messageErr = new ArrayList(); 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 colf_in_time = -1; int colspec_jg_desc = -1; int colmodel_desc = -1; int colsteelname = -1; int colcoat_type = -1; int coljg_orderno = -1; int colfinal_user_desc = -1; int coljudge_stove_no = -1; int colbatch_no = -1; int colpro_num = -1; int colsingleweight = -1; int colpro_wt = -1; int colgradename = -1; int colmin_d = -1; int colmin_h = -1; int colsoure_name = -1; int colmemo = -1; int coloutdiameter = -1; int colwallthick = -1; int coljskbz = -1; int coljgfl = -1; int coljsbz = -1; 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("技术科备注")) { coljskbz = i; } if (head[0, i].Trim().Equals("入库日期")) { colf_in_time = i; } if (head[0, i].Trim().Equals("对应规格")) { colspec_jg_desc = i; } if (head[0, i].Trim().Equals("扣型")) { colmodel_desc = i; } if (head[0, i].Trim().Equals("钢级")) { colsteelname = i; } if (head[0, i].Trim().Equals("接箍分类")) { coljgfl = i; } if (head[0, i].Trim().Equals("涂层")) { colcoat_type = i; } if (head[0, i].Trim().Equals("合同号")) { coljg_orderno = i; } if (head[0, i].Trim().Equals("合同用户")) { colfinal_user_desc = i; } if (head[0, i].Trim().Equals("炉号")) { coljudge_stove_no = i; } if (head[0, i].Trim().Equals("批号")) { colbatch_no = i; } if (head[0, i].Trim().Equals("库存个数")) { colpro_num = i; } if (head[0, i].Trim().Equals("单重(KG)")) { colsingleweight = i; } if (head[0, i].Trim().Equals("库存重量")) { colpro_wt = i; } if (head[0, i].Trim().Equals("钢种")) { colgradename = i; } if (head[0, i].Trim().Equals("原料外径")) { colmin_d = i; } if (head[0, i].Trim().Equals("原料壁厚")) { colmin_h = i; } if (head[0, i].Trim().Equals("标准")) { coljsbz = i; } if (head[0, i].Trim().Equals("来源")) { colsoure_name = i; } if (head[0, i].Trim().Equals("备注")) { colmemo = i; } if (head[0, i].Trim().Equals("成品外径")) { coloutdiameter = i; } if (head[0, i].Trim().Equals("成品长度")) { colwallthick = i; } } //if (colOrderPk == -1) //{ // MessageUtil.ShowError("未找到交货编码PK的列"); // return; //} #endregion ArrayList list = new ArrayList(); string[,] arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value( "A" + startRow, ExcelHelper.SeqToXlsCol[colNum + 1] + endRow)); if (arr == null) { return; } WaitFromOpen(); for (int i = 0; i < arr.GetLength(0); i++) { ArrayList param = new ArrayList(); CouplingMatMEntity entity = new CouplingMatMEntity(); //string orderPk = arr[i, colOrderPk].Trim(); //string ordLnDlyPk = ""; //string plnDivideId = ""; //if (orderPk.Equals("")) //{ // messageErr.Add("第" + (i + startRow).ToString() + "条数据PK码为空"); // continue; //} //if (orderPk.Contains('-')) //{ // int lenPk = orderPk.LastIndexOf('-'); // ordLnDlyPk = orderPk.Substring(0, lenPk); // plnDivideId = orderPk.Substring(lenPk + 1, orderPk.Length - lenPk - 1); //} //else //{ // ordLnDlyPk = orderPk; //} //if (ordLnDlyPk.Equals("")) //{ // messageErr.Add("第" + (i + startRow).ToString() + "条数据PK码有误。"); // continue; //} //if (colRollMonth != -1) //{ // DateTime date = new DateTime(); // string rollMonth = arr[i, colRollMonth].ToString(); // if (DateTime.TryParseExact(rollMonth, "yyyyMM", null, DateTimeStyles.None, out date)) // { // entity.RollMonth = date.ToString("yyyy-MM"); // } //} entity.JudgeStoveNo = arr[i, coljudge_stove_no].ToString().Trim(); //entity.JgOrderno = arr[i, coljg_orderno].ToString().Trim(); //string rollMonth = arr[i, colf_in_time].ToString().Trim(); //DateTime date = new DateTime(); //if (DateTime.TryParseExact(rollMonth, "yyyyMM", null, DateTimeStyles.None, out date)) //{ // entity.FInTime = date.ToString("yyyy-MM"); //} entity.FinTime = DateTime.Parse(arr[i, colf_in_time].ToString().Trim()).ToString("yyyy-MM-dd"); entity.SpecJgDesc = arr[i, colspec_jg_desc].ToString().Trim(); entity.ModelDesc = arr[i, colmodel_desc].ToString().Trim(); entity.Steelname = arr[i, colsteelname].ToString().Trim(); entity.CoatType = arr[i, colcoat_type].ToString().Trim(); entity.BatchNo = arr[i, colbatch_no].ToString().Trim(); entity.FinalUserDesc= arr[i, colfinal_user_desc].ToString().Trim(); entity.ProNum = Convert.ToDecimal(arr[i, colpro_num].ToString().Trim()); entity.Singleweight = Convert.ToDecimal(arr[i, colsingleweight].ToString().Trim()); entity.ProWt = Convert.ToDecimal(arr[i, colpro_wt].ToString().Trim()); entity.Gradename = arr[i, colgradename].ToString().Trim(); entity.MinD = Convert.ToDecimal(arr[i, colmin_d].ToString().Trim()); entity.MinH = Convert.ToDecimal(arr[i, colmin_h].ToString().Trim()); entity.SoureName = arr[i, colsoure_name].ToString().Trim(); entity.JudgeStdName=arr[i, coljsbz].ToString().Trim(); entity.Memo = "技术科备注:" + arr[i, coljskbz].ToString().Trim() + ",接箍分类:" + arr[i, coljgfl].ToString().Trim() + ",合同号:" + arr[i, coljg_orderno].ToString().Trim() + ",合同用户:" + arr[i, colfinal_user_desc].ToString().Trim() + ",备注:" + arr[i, colmemo].ToString().Trim(); entity.Outdiameter = Convert.ToDecimal(arr[i, coloutdiameter].ToString().Trim()); //entity.Wallthick = Convert.ToDecimal(arr[i, colwallthick].ToString().Trim()); entity.Aimlength = Convert.ToDecimal(arr[i, colwallthick].ToString().Trim()); list.Add(Core.Mes.Client.Comm.Format.JSONFormat.Format(entity)); } CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.plnsaleord.planStove.FrmImportSetMatJg"; ccp.MethodName = "saveOrderSetlog"; ccp.ServerParams = new object[] { list, this.UserInfo.GetUserName() }; ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal); WaitFromColse(); if (ccp.ReturnCode == -1) return; //MessageUtil.ShowTips(ccp.ReturnInfo); if (ccp.ReturnInfo.Equals("成功!")) { if (messageErr.Count == 0) { MessageUtil.ShowTips("导入成功,共" + list.Count + "条。"); } else { MessageUtil.ShowTips(list.Count + "条导入成功," + messageErr.Count + "条导入失败。\n" + messageErr[0]); } } else { MessageUtil.ShowTips("导入失败,共" + list.Count + "条。"); } } catch (Exception ex) { WaitFromColse(); if (!(ex is MESException)) { MessageUtil.ShowError(ex.Message); } } } /// /// 打开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 doClose() { uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit(); } /// /// 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; } private void FrmImportSetOrder_FormClosed(object sender, FormClosedEventArgs e) { uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit(); } } }