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 { public partial class BJCPXD_DRInfo : SingleCardBase { BJCPXD_DR entity = new BJCPXD_DR(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860097; 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); } ExcelColumnValid(aDataExcel); InsertDRJL(dberp, sSQL, aDataExcel); 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 iXH = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJYLZDMX", "XLXSBJYLZDMX_XH", "XLXSBJYLZDMX_SQDH ='0000000000'") + 1; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string sXLXHID = ds.Tables[0].Rows[i][0].ToString().Trim(); string sXLGGID = ds.Tables[0].Rows[i][1].ToString().Trim(); string sST = ds.Tables[0].Rows[i][2].ToString().Trim(); string sDYDJ = ds.Tables[0].Rows[i][3].ToString().Trim(); string sXDXLXHID = ds.Tables[0].Rows[i][4].ToString().Trim(); string sXDXLGGID = ds.Tables[0].Rows[i][5].ToString().Trim(); string sXDST = ds.Tables[0].Rows[i][6].ToString().Trim(); string sXDDYDJ = ds.Tables[0].Rows[i][7].ToString().Trim(); string sBZ = ds.Tables[0].Rows[i][8].ToString().Trim(); #region 校验数据 if (sXLXHID.Equals("")||sXLGGID.Equals("")||sST.Equals("")||sDYDJ.Equals("")) { string sDRXXMessage ="导入失败!修订前产品型号、规格、标准、电压等级不能为空!"; throw new Exception(sDRXXMessage); } if (sXDXLXHID.Equals("") || sXDXLGGID.Equals("") || sXDST.Equals("") || sXDDYDJ.Equals("")) { string sDRXXMessage = "导入失败!修订产品型号、规格、标准、电压等级不能为空!"; throw new Exception(sDRXXMessage); } if (sXLXHID.Equals(sXDXLXHID) && sXLGGID.Equals(sXDXLGGID)) { if (sST.Equals(sXDST) && sDYDJ.Equals(sXDDYDJ)) { string sDRXXMessage = string.Format("导入失败!修订前产品{0}、{1}、{2}、{3}不能与修订后产品相同!", sXLXHID, sXLGGID, sST, sDYDJ); throw new Exception(sDRXXMessage); } } string sSQL = string.Format(@"select top 1 XLXSBJYLZDMX_SQDH from XLXSBJYLZDMX where XLXSBJYLZDMX_SQDH='0000000000' and XLXSBJYLZDMX_BJDXLXHID='{0}' and XLXSBJYLZDMX_BJDXLGGID='{1}' and XLXSBJYLZDMX_BJDXLBZID='{2}'and XLXSBJYLZDMX_BJDDYDJID='{3}' ", sXLXHID, sXLGGID, sST, sDYDJ); if (CMISproDataBase.ExistsRecord("DBERP", sSQL)) { SQL.Clear(); SQL.Add(@" update XLXSBJYLZDMX set XLXSBJYLZDMX_XLXHID=:pXLXHID ,XLXSBJYLZDMX_XLGGID=:pXLGGID,XLXSBJYLZDMX_XLBZID=:pXLBZID,XLXSBJYLZDMX_DYDJID=:pDYDJID, XLXSBJYLZDMX_WHR=:pWHR,XLXSBJYLZDMX_WHRID=:pWHRID,XLXSBJYLZDMX_WHSJ=:pWHSJ where XLXSBJYLZDMX_SQDH='0000000000' and XLXSBJYLZDMX_BJDXLXHID=:pBJDXLXHID and XLXSBJYLZDMX_BJDXLGGID=:pBJDXLGGID and XLXSBJYLZDMX_BJDXLBZID=:pBJDXLBZID and XLXSBJYLZDMX_BJDDYDJID=:pBJDDYDJID "); SQL.ParamByName("pBJDXLXHID").Value = sXLXHID; SQL.ParamByName("pBJDXLGGID").Value = sXLGGID; SQL.ParamByName("pBJDXLBZID").Value = sST; SQL.ParamByName("pBJDDYDJID").Value = sDYDJ; SQL.ParamByName("pXLXHID").Value = sXDXLXHID; SQL.ParamByName("pXLGGID").Value = sXDXLGGID; SQL.ParamByName("pXLBZID").Value = sXDST; SQL.ParamByName("pDYDJID").Value = sXDDYDJ; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserId; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); continue; } #endregion #region 插入语句 SQL.Clear(); SQL.Add(@"insert into XLXSBJYLZDMX(XLXSBJYLZDMX_SQDH,XLXSBJYLZDMX_XH,XLXSBJYLZDMX_BJDXLXHID,XLXSBJYLZDMX_BJDXLGGID,XLXSBJYLZDMX_BJDXLBZID,XLXSBJYLZDMX_BJDDYDJID, XLXSBJYLZDMX_XLXHID,XLXSBJYLZDMX_XLGGID,XLXSBJYLZDMX_XLBZID,XLXSBJYLZDMX_DYDJID, XLXSBJYLZDMX_BZ,XLXSBJYLZDMX_WHR,XLXSBJYLZDMX_WHRID,XLXSBJYLZDMX_WHSJ,XLXSBJYLZDMX_DZSC) values(:pSQDH,:pXH,:pXLXHID,:pXLGGID,:pXLBZID,:pDYDJID,:pXDXLXHID,:pXDXLGGID,:pXDXLBZID,:pXDDYDJID,:pBZ,:pWHR,:pWHRID,:pWHSJ,:pDZSC )"); SQL.ParamByName("pSQDH").Value = "0000000000"; SQL.ParamByName("pXH").Value = iXH++; SQL.ParamByName("pXLXHID").Value = sXLXHID; SQL.ParamByName("pXLGGID").Value = sXLGGID; SQL.ParamByName("pXLBZID").Value = sST; SQL.ParamByName("pDYDJID").Value = sDYDJ; SQL.ParamByName("pXDXLXHID").Value = sXDXLXHID; SQL.ParamByName("pXDXLGGID").Value = sXDXLGGID; SQL.ParamByName("pXDXLBZID").Value = sXDST; SQL.ParamByName("pXDDYDJID").Value = sXDDYDJ; SQL.ParamByName("pBZ").Value = sBZ; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserId; SQL.ParamByName("pWHSJ").Value = DateTime.Now; SQL.ParamByName("pDZSC").Value = "N"; dberp.ExecSQL(SQL); #endregion } } private void ExcelColumnValid(DataSet ds) { Dictionary ColumnNames = new Dictionary(); ColumnNames.Clear(); ColumnNames.Add("0", "型号"); ColumnNames.Add("1", "规格"); ColumnNames.Add("2", "标准"); ColumnNames.Add("3", "电压等级"); ColumnNames.Add("4", "修订型号"); ColumnNames.Add("5", "修订规格"); ColumnNames.Add("6", "修订标准"); ColumnNames.Add("7", "修订电压等级"); ColumnNames.Add("8", "备注"); foreach (KeyValuePair kpv in ColumnNames) { if (!ds.Tables[0].Columns[CMISproConvert.StrToInt(kpv.Key.Trim())].ColumnName.Trim().Equals(kpv.Value.Trim())) { throw new Exception(string.Format("({0})列标题错误,该列为({1})", ds.Tables[0].Columns[CMISproConvert.StrToInt(kpv.Key.Trim())].ColumnName.Trim()+1, kpv.Value.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 } }