using System; using System.Data; using System.Configuration; using System.Collections; using System.Collections.Generic; 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 System.Data.Common; using GThinking.N_MODEL.Dialog; using GThinking.N_PUBLIC; using GThinking.N_PUBLIC2; using GThinking.N_MISPRO.Utility; using System.IO; using System.Text; using GThinking.N_CONTROL; using System.Data.OleDb; using GThinking.N_MISPRO.MISPROAS; namespace GThinking.U20261363_N_XLXSBJ { public partial class XLBJD_WBBJDMX_MRDYWHDRInfo : SingleCardBase { XLBJD_WBBJDMX_MRDYWHDR entity = new XLBJD_WBBJDMX_MRDYWHDR(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860174; this.UMName = "外部线缆产品导入"; base.CurMaster = Master; base.CurEntity = entity; this.PageHeight = 180; this.PageWidth = 420; Master.EnableAttachBtn = false; Master.EnableCancelBtn = false; Master.EnableCopyBtn = false; Master.EnableDeleteBtn = false; Master.EnableEditBtn = false; Master.EnableInsertBtn = false; Master.EnablePrintBtn = false; Master.EnableRefreshBtn = false; Master.EnableSaveBtn = false; fupdPost.FileSaveType = gtAsyncFileUpload.DFileSaveType.SaveToPath; fupdPost.Filter = "XLS"; base.InitPage(); } protected void btnQD_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(fupdPost.FilePath.Trim()) || fupdPost.FilePath.Trim().EndsWith("\\")) { ShowMessage("请选择需要导入的文件!"); return; } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); try { lblTitle.Text = "正在导入数据,请稍后..."; dberp.BeginTrans(); string sPath = fupdPost.FilePath; string sColumns = "型号,主芯截面始,主芯截面止,电压等级"; string sMessage = ""; DataSet aDataExcel = TExcelData.ReadExcel(sPath.Trim(), "sheet1", sColumns, false, ref sMessage); if (!sMessage.Trim().Equals("")) { throw new Exception("导入文件的内容格式不正确,请按帮助文档中要求的内容格式调整导入文件!"); } //记录本次导入文件中已存在的型号截面范围,用于校验文件内部的范围交集 Dictionary> dicImported = new Dictionary>(); for (int i = 0; i < aDataExcel.Tables[0].Rows.Count; i++) { string sXLXHID = aDataExcel.Tables[0].Rows[i][0].ToString().Trim(); string sZXJMS = aDataExcel.Tables[0].Rows[i][1].ToString().Trim(); string sZXJMZ = aDataExcel.Tables[0].Rows[i][2].ToString().Trim(); string sDYDJID = aDataExcel.Tables[0].Rows[i][3].ToString().Trim(); int iXLSRow = i + 2;//excel中的行号(含标题行) if (sXLXHID.Equals("")) { string ErrorMessage = "第" + iXLSRow + "行型号不允许为空!"; throw new Exception(ErrorMessage); } double dZXJMS = 0; double dZXJMZ = 0; if (!double.TryParse(sZXJMS, out dZXJMS)) { throw new Exception("第" + iXLSRow + "行主芯截面始[" + sZXJMS + "]不是合法的数字!"); } if (!double.TryParse(sZXJMZ, out dZXJMZ)) { throw new Exception("第" + iXLSRow + "行主芯截面止[" + sZXJMZ + "]不是合法的数字!"); } if (dZXJMZ < 0) { throw new Exception("第" + iXLSRow + "行主芯截面止不允许为负数!"); } if (dZXJMS < 0) { throw new Exception("第" + iXLSRow + "行主芯截面始不允许为负数!"); } if (dZXJMS > dZXJMZ) { throw new Exception("第" + iXLSRow + "行主芯截面始不允许大于主芯截面止!"); } //与本次导入文件中已出现的范围校验交集 if (dicImported.ContainsKey(sXLXHID)) { bool bSame = false; bool bOverLap = false; double dExistS = 0; double dExistZ = 0; foreach (double[] dRange in dicImported[sXLXHID]) { if (dRange[0] == dZXJMS && dRange[1] == dZXJMZ) { bSame = true; break; } if (!(dRange[1] < dZXJMS || dRange[0] > dZXJMZ)) { bOverLap = true; dExistS = dRange[0]; dExistZ = dRange[1]; break; } } if (bSame) continue; if (bOverLap) { throw new Exception("第" + iXLSRow + "行型号[" + sXLXHID + "]与文件中的主芯截面范围[" + dExistS + "~" + dExistZ + "]存在交集,相同型号的主芯截面范围不允许有交集!"); } } string sSql = string.Format(@"select top 1 XLXHID from MRDYWH where XLXHID='{0}' and ZXJMS={1} and ZXJMZ={2} ", sXLXHID.Replace("'", "''"), dZXJMS, dZXJMZ); if (!CMISproDataBase.ExistsRecord("DBERP", sSql)) { //校验相同型号的主芯截面范围没有交集 string sJJSJl = string.Format(@"select top 1 ZXJMS,ZXJMZ from MRDYWH where XLXHID='{0}' and not (ZXJMZ < {1} or ZXJMS > {2}) ", sXLXHID.Replace("'", "''"), dZXJMS, dZXJMZ); TSQL sSQLJJSJ = new TSQL(dberp); sSQLJJSJ.Clear(); sSQLJJSJ.Add(sJJSJl); DataSet dsJJSJ = dberp.OpenDataSet(sSQLJJSJ); if (dsJJSJ.Tables[0].Rows.Count > 0) { throw new Exception("第" + iXLSRow + "行型号[" + sXLXHID + "]与系统中的主芯截面范围[" + dsJJSJ.Tables[0].Rows[0]["ZXJMS"].ToString().Trim() + "~" + dsJJSJ.Tables[0].Rows[0]["ZXJMZ"].ToString().Trim() + "]存在交集,相同型号的主芯截面范围不允许有交集!"); } sSQL.Clear(); sSQL.Add("insert into MRDYWH(XLXHID, ZXJMS, ZXJMZ, DYDJID)"); sSQL.Add(" values(:XLXHID, :ZXJMS, :ZXJMZ, isnull(:DYDJID,' '))"); sSQL.ParamByName("XLXHID").Value = sXLXHID; sSQL.ParamByName("ZXJMS").Value = dZXJMS; sSQL.ParamByName("ZXJMZ").Value = dZXJMZ; sSQL.ParamByName("DYDJID").Value = sDYDJID; dberp.ExecSQL(sSQL); if (!dicImported.ContainsKey(sXLXHID)) dicImported.Add(sXLXHID, new List()); dicImported[sXLXHID].Add(new double[] { dZXJMS, dZXJMZ }); } else { continue; } } dberp.CommitTrans(); ShowMessage("导入成功!"); DialogOperationScript dos = new DialogOperationScript(this); dos.ClickOwnerButton(PageParam.GetRTrimString("ClientExportFileURL")); dos.CloseSelf(); dos.Execute(); } catch (Exception ex) { lblTitle.Text = ""; dberp.RollbackTrans(); ShowMessage("导入失败,错误信息:" + ex.Message); return; } finally { System.IO.File.Delete(fupdPost.FilePath.Trim()); } CloseWindowNoQuery(); } protected void btnQX_Click(object sender, EventArgs e) { CloseWindowNoQuery(); } } }