using System; using System.Collections.Generic; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using GThinking.N_MISPRO; using GThinking.N_MISPRO.Data; using GThinking.N_MODEL.Page; using GThinking.N_WORKFLOW; using GThinking.N_MODEL.Dialog; using GThinking.N_PUBLIC; using GThinking.N_PUBLIC2; using GThinking.N_MISPRO.Utility; using GThinking.N_CONTROL; using System.IO; using System.Data.OleDb; using System.Data.Common; using GThinking.N_MISPRO.Caching; using GThinking.N_MISPRO.TableCache; using GThinking.N_MISPROAS; namespace GThinking.N_XLXSBJ { [TableMap(DB = "DBERP", DbTableName = "XLXHB", Umid = 100860167, IsWorkFlow = false, UseWhr = false)] public class XLXHCPTXWH_DR : EntityManager { } public partial class DRXLXHCPTXWH : SingleCardBase { XLXHCPTXWH_DR entity = new XLXHCPTXWH_DR(); public static Dictionary dict = new Dictionary(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860166; this.UMName = "线缆型号附加属性维护"; base.CurMaster = Master; this.CurEntity = entity; this.PageHeight = 180; this.PageWidth = 420; this.Master.EnableAttachBtn = false; this.Master.EnableCancelBtn = false; this.Master.EnableCopyBtn = false; this.Master.EnableDeleteBtn = false; this.Master.EnableEditBtn = false; this.Master.EnableInsertBtn = false; this.Master.EnablePrintBtn = false; this.Master.EnableRefreshBtn = false; this.Master.EnableSaveBtn = false; Server.ScriptTimeout = 3600; fupdPost.FileSaveType = gtAsyncFileUpload.DFileSaveType.SaveToPath; if (AppRuntime.BitType == AppBitType.Bit32) fupdPost.Filter = "XLS"; else // AppBitType.Bit64 fupdPost.Filter = "XLS,XLSX"; base.InitPage(); Server.ScriptTimeout = 3600; btnUn.Style["display"] = "none"; } #region 控件事件 protected void btnQX_Click(object sender, EventArgs e) { CloseWindowNoQuery(); } protected void btnUnDis_Click(object sender, EventArgs e) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); try { lblTitle.Text = "正在导入数据,请稍后..."; dberp.BeginTrans(); DataSet aDataExcel = new DataSet(); if (AppRuntime.BitType == AppBitType.Bit32) { aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, 0, ""); } else // AppBitType.Bit64 { ReadWJ(fupdPost.FilePath, ref aDataExcel); } Mac.MacLog.TraceFormat("1-DR"); ExcelColumnValid(aDataExcel); Mac.MacLog.TraceFormat("2-DR"); InsertDRJL(dberp, sSQL, aDataExcel); Mac.MacLog.TraceFormat("3-DR"); dberp.CommitTrans(); ShowMessage("导入成功!"); DialogOperationScript dos = new DialogOperationScript(this); dos.ClickOwnerButton(PageParam.GetRTrimString("btnRefreshCID")); dos.CloseSelf(); dos.Execute(); } catch (Exception ex) { lblTitle.Text = ""; dberp.RollbackTrans(); ShowMessage(ex.Message); } finally { System.IO.File.Delete(fupdPost.FilePath.Trim()); } CloseWindowNoQuery(); } #endregion #region 自定义函数 private void InsertDRJL(TDatabase dberp, TSQL SQL, DataSet ds) { int iImportedCount = 0; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string sXLXHID = ds.Tables[0].Rows[i][0].ToString().Trim(); string sDYDJID = ds.Tables[0].Rows[i][1].ToString().Trim(); string sZXJM = ds.Tables[0].Rows[i][2].ToString().Trim(); #region 校验数据 if (sXLXHID.Equals("")) { string sDRXXMessage = "导入失败!第" + (i + 2).ToString() + "行型号不能为空!"; throw new Exception(sDRXXMessage); } if (sDYDJID.Equals("")) sDYDJID = " "; if (sZXJM.Equals("")) sZXJM = " "; #endregion string sSQL = string.Format("delete from XLXSBJCPYS where XLXSBJCPYS_XLJBXHID='{0}' and XLXSBJCPYS_DYDJID='{1}' and ,XLXSBJCPYS_XLYSID='{2}' ", sXLXHID, sDYDJID,sZXJM); SQL.Clear(); SQL.Add(sSQL); dberp.ExecSQL(SQL); #region 按矩阵列生成属性记录 string sXLTXID = string.Empty; int XH = 1; for (int j = 3; j < ds.Tables[0].Columns.Count; j++) { object objValue = ds.Tables[0].Rows[i][j]; if (objValue == null || objValue == DBNull.Value) continue; string sXLXHFJSX = ds.Tables[0].Columns[j].ColumnName.Trim(); string sCellValue = objValue.ToString().Trim(); if (sXLXHFJSX.Equals("")) continue; if (sCellValue.Equals("")) continue; SQL.Clear(); SQL.Add(@" insert into XLXSBJCPYS(XLXSBJCPYS_CPYT, XLXSBJCPYS_XLJBXHID,XLXSBJCPYS_XLYSID, XLXSBJCPYS_DYDJID,XLXSBJCPYS_XXJGID,XLXSBJCPYS_WHR,XLXSBJCPYS_WHRID,XLXSBJCPYS_WHSJ) values(:XLXSBJCPYS_CPYT,:XLXSBJCPYS_XLJBXHID,:XLXSBJCPYS_XLYSID,:XLXSBJCPYS_DYDJID,:XLXSBJCPYS_XXJGID,:XLXSBJCPYS_WHR,:XLXSBJCPYS_WHRID,:XLXSBJCPYS_WHSJ)"); SQL.ParamByName("XLXSBJCPYS_XLJBXHID").Value = sXLXHID; SQL.ParamByName("XLXSBJCPYS_DYDJID").Value = sDYDJID; SQL.ParamByName("XLXSBJCPYS_XLYSID").Value = sZXJM; SQL.ParamByName("XLXSBJCPYS_XXJGID").Value = sXLXHFJSX; SQL.ParamByName("XLXSBJCPYS_CPYT").Value = XH++; SQL.ParamByName("XLXSBJCPYS_WHR").Value = tSession.UserName; SQL.ParamByName("XLXSBJCPYS_WHRID").Value = tSession.UserId; SQL.ParamByName("XLXSBJCPYS_WHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); iImportedCount++; } #endregion } if (iImportedCount == 0) { throw new Exception("导入失败!Excel 中未找到有效的属性标记记录!"); } } private void ExcelColumnValid(DataSet ds) { if (ds.Tables[0].Columns.Count < 4) { throw new Exception("Excel 列数不正确,至少需要包含“型号”、“电压等级”、“主芯截面”列和一列属性列!"); } if (!ds.Tables[0].Columns[0].ColumnName.Trim().Equals("型号")) { throw new Exception(string.Format("第 1 列标题错误,当前为({0}),应为(型号)", ds.Tables[0].Columns[0].ColumnName.Trim())); } if (!ds.Tables[0].Columns[1].ColumnName.Trim().Equals("电压等级")) { throw new Exception(string.Format("第 2 列标题错误,当前为({0}),应为(电压等级)", ds.Tables[0].Columns[0].ColumnName.Trim())); } if (!ds.Tables[0].Columns[2].ColumnName.Trim().Equals("主芯截面")) { throw new Exception(string.Format("第 3 列标题错误,当前为({0}),应为(主芯截面)", ds.Tables[0].Columns[0].ColumnName.Trim())); } } private void ReadWJ(string sPath, ref DataSet aDataExcel) { string sMessage = ""; aDataExcel = TExcelData.ReadExcel(sPath.Trim(), "", "", false, ref sMessage); if (!sMessage.Trim().Equals("")) { throw new Exception("文件读取失败!"); } } #endregion } }