using System; 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_MISPRO.Utility; using GThinking.N_CONTROL; using System.IO; using System.Data.OleDb; using System.Data.Common; using GThinking.N_MISPROAS; using System.Collections.Generic; namespace GThinking.N_XLXSBJ { public partial class XLJGB_DRInfo : SingleCardBase { XLJGB_DREntity entity = new XLJGB_DREntity(); //数据库插入 int sSucessIs = 0; //数据库更新 int sSucessUp = 0; //表格数据 int sSucessDr = 0; protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860001; 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; 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; if(PageParam.GetRTrimString("JJLY").Equals("D")) { lblLMNR2.Text = "一:型号、规格、标准、电压等级、计量单位、含税基价、无税基价"; if(PageParam.GetRTrimString("BJLY").Equals("D")) lblLMNR2.Text = "一:型号、规格、标准、电压等级、计量单位、含税基价、无税基价、含税表价、无税表价"; lblLMNR3.Text = "二:型号、规格、标准、电压等级、计量单位、含税基价、无税基价、工艺卡号、备注"; if (PageParam.GetRTrimString("BJLY").Equals("D")) lblLMNR3.Text = "二:型号、规格、标准、电压等级、计量单位、含税基价、无税基价、含税表价、无税表价、工艺卡号、备注"; } else { lblLMNR2.Text = "一:型号、规格、标准、电压等级、计量单位、含税表价、无税表价"; lblLMNR3.Text = "二:型号、规格、标准、电压等级、计量单位、含税表价、无税表价、工艺卡号、备注"; } if (!IsPostBack) { chkSheet.Checked = false; cbxSheetList.Enabled = false; } } #region 控件事件 protected void btnQD_Click(object sender, EventArgs e) { if (fupdPost.FilePath.Equals("")) { ShowMessage("请选择需要导入的文件!"); return; } else { if (!txtLastPath.Value.Trim().Equals("")) { if ((fupdPost.FilePath != txtLastPath.Value) && !cbxSheetList.SelectedValue.Trim().Equals("")) { ShowMessage("导入文件已发生变化,请重新指定导入页面!"); chkSheet_CheckedChanged(null, null); return; } } } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); try { dberp.BeginTrans(); //当前价格表ID string sJGBID = PageParam.GetRTrimString("XLXSJGBMX_JGBID"); string sJGBMC = PageParam.GetRTrimString("XLXSJGBMX_JGBMC"); sSucessDr = 0; sSucessIs = 0; sSucessUp = 0; Dictionary dicDRMXBZ = new Dictionary(); dicDRMXBZ.Clear(); sSQL.Clear(); sSQL.Add("select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ where 1 = 1 "); DataSet ds = dberp.OpenDataSet(sSQL); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { dicDRMXBZ.Add(ds.Tables[0].Rows[i]["XLBZ_XLBZID"].ToString().Trim(), ds.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim()); } } if (cbxSheetList.SelectedValue.Trim().Equals("")) { DataSet aDataExcel = new DataSet(); if (AppRuntime.BitType == AppBitType.Bit32) aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, 0, ""); else // AppBitType.Bit64 ReadWJ(fupdPost.FilePath, "", ref aDataExcel); ExcelColumnName(aDataExcel); // string sFileName = fupdPost.FileName; string sSheetName = GetDefaultSheetName(fupdPost.FilePath); ExecDRSQL(dberp, sSQL, aDataExcel, sJGBID, dicDRMXBZ, sFileName, sSheetName); ExecDRBZ(dberp, sSQL, aDataExcel, sJGBID, dicDRMXBZ, sFileName, sSheetName); } else { string[] sSheetList = cbxSheetList.SelectedValue.Split(','); for (int i = 0; i < sSheetList.Length; i++) { DataSet aDataExcel = new DataSet(); if (AppRuntime.BitType == AppBitType.Bit32) aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, 0, sSheetList[i]); else // AppBitType.Bit64 ReadWJ(fupdPost.FilePath, sSheetList[i], ref aDataExcel); ExcelColumnName(aDataExcel); // string sFileName = fupdPost.FileName; string sSheetName = sSheetList[i]; ExecDRSQL(dberp, sSQL, aDataExcel, sJGBID, dicDRMXBZ, sFileName, sSheetName); ExecDRBZ(dberp, sSQL, aDataExcel, sJGBID, dicDRMXBZ, sFileName, sSheetName); } } dberp.CommitTrans(); ShowMessage(String.Format("已导入到价格表【{0}】中!\r\n成功导入数据:{1}条。\r\n", sJGBID + "|" + sJGBMC, sSucessDr)); DialogOperationScript dos = new DialogOperationScript(this); dos.ClickOwnerButton(PageParam.GetRTrimString("btnRefreshCID")); dos.CloseSelf(); dos.Execute(); } catch (Exception ex) { dberp.RollbackTrans(); ShowMessage(ex.Message); return; } } protected void btnQX_Click(object sender, EventArgs e) { CloseWindow(); } protected void chkSheet_CheckedChanged(object sender, EventArgs e) { if (chkSheet.Checked) { string AllsSheetName = ""; if (fupdPost.FilePath.Equals("")) { ShowMessage("请选择需要导入的文件!"); chkSheet.Checked = false; return; } cbxSheetList.Enabled = true; cbxSheetList.ClearItems(); cbxSheetList.SelectedValue = ""; string connStr = GetConnString(fupdPost.FilePath); OleDbConnection m_conn = new OleDbConnection(connStr); m_conn.Open(); DataTable sheetNames = m_conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); if (sheetNames.Rows[0].Table.Rows.Count == 1) { string sSheetName = sheetNames.Rows[0].Table.Rows[0]["TABLE_NAME"].ToString().Trim(); if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'")) sSheetName = sSheetName.TrimStart('\'').TrimEnd('\''); if (sSheetName.EndsWith("$")) sSheetName = sSheetName.TrimEnd('$'); cbxSheetList.Items.Add(new ListItem(sSheetName, sSheetName)); cbxSheetList.SelectedValue = sSheetName; } else { for (int i = 0; i < sheetNames.Rows[0].Table.Rows.Count; i++) { string sSheetName = sheetNames.Rows[0].Table.Rows[i]["TABLE_NAME"].ToString().Trim(); if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'")) sSheetName = sSheetName.TrimStart('\'').TrimEnd('\''); if (sSheetName.EndsWith("$")) sSheetName = sSheetName.TrimEnd('$'); AllsSheetName = AllsSheetName + "," + sSheetName; AllsSheetName = AllsSheetName.TrimEnd(','); cbxSheetList.Items.Add(new ListItem(sSheetName, sSheetName)); } cbxSheetList.SelectedValue = AllsSheetName; } if (m_conn.State == ConnectionState.Open) { m_conn.Dispose(); m_conn = null; } txtLastPath.Value = fupdPost.FilePath; FormAreaUpdate(); } else { cbxSheetList.ClearItems(); cbxSheetList.SelectedValue = ""; cbxSheetList.Enabled = false; FormAreaUpdate(); } } // 根据32/64位运行时返回不同的连接字符串。 private string GetConnString(string sPath) { string conn; if (AppRuntime.BitType == AppBitType.Bit32) { conn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + sPath + ";" + "Extended Properties=Excel 8.0;"; //conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + @";Extended Properties=""Excel 8.0;IMEX=1;ImportMixedTypes=Text"""; } else // AppBitType.Bit64 { conn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + sPath + ";" + "Extended Properties=Excel 8.0;"; } return conn; } #endregion #region 自定义事件 private void ExecDRSQL(TDatabase dberp, TSQL sSQL, DataSet ds, string sJGBID, Dictionary dicDRMXBZ, string sFileName, string sSheetName) { #region 导入记录 string sXLXHID = ""; string sXLGGID = ""; string sXLBZID = "G"; string sXLDYDJ = ""; string sJLDW = ""; int iXH = 1; //是否启用非长度计量单位 bool bQYFCDJLDW = XLBJDUtils.GetXLXSBJPZXX(100860018).QYFCDJLDW(); Dictionary dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD(); //有效期 string sYXQS = PageParam.GetRTrimString("YXQS"); string sYXQZ = PageParam.GetRTrimString("YXQZ"); string sBJU003 = PageParam.GetRTrimString("BJU003"); string sDefaultXLBZID = PageParam.GetRTrimString("sDefaultXLBZID"); string sJJLY = PageParam.GetRTrimString("JJLY"); string sBJLY = PageParam.GetRTrimString("BJLY"); string sCLCB = ""; string sCPJJ = ""; string sWSCLCB = ""; string sWSCPJJ = ""; //A|× B|* string sXLJGU007 = GetOption(102579000, "XLJGU007"); iXH = XLJGB_JGBMX.getMaxXH(sJGBID)-1; Mac.MacLog.TraceFormat(String.Format("ExecDRSQL-Begin")); //V_XSBJJSJGB_ID int VnewID = CMISproDataBase.NewID("DBERP", "V_XSBJJSJGB"); //V表序号从1开始 int iVXH = 1; #region 循环EXCEL插入V表 foreach (DataRow Row in ds.Tables[0].Rows) { sSucessDr++; sXLXHID = sGetCellTest(Row, 0).Trim(); sXLGGID = sGetCellTest(Row, 1).Trim(); if (sXLJGU007.Equals("A")) { sXLGGID = sXLGGID.Replace("x", "X").Replace("X", "*").Replace("*", "×"); } else if (sXLJGU007.Equals("B")) { sXLGGID = sXLGGID.Replace("x", "X").Replace("X", "*").Replace("×", "*"); } sXLBZID = XLBJDUtils.GetBZXLZBZID(sGetCellTest(Row, 2).Trim(), sDefaultXLBZID, dicDRMXBZ); if (sXLBZID.Equals("")) sXLBZID = sGetCellTest(Row, 2).Trim(); sXLDYDJ = sGetCellTest(Row, 3).Trim().Replace('K', 'k').Replace('v', 'V'); ; sJLDW = sGetCellTest(Row, 4).Trim(); if (!bQYFCDJLDW) { if (!sJLDW.ToUpper().Equals("KM") && !sJLDW.ToUpper().Equals("M") && !sJLDW.Equals("千米") && !sJLDW.Equals("米") && !dicLenJLDWTD.ContainsKey(sJLDW)) sJLDW = sBJU003; else if (sJLDW.ToUpper().Equals("KM")) sJLDW = "Km"; else if (sJLDW.ToUpper().Equals("M")) sJLDW = "M"; } else { if (sJLDW.Equals("")) sJLDW = sBJU003; else if (sJLDW.ToUpper().Equals("KM")) sJLDW = "Km"; else if (sJLDW.ToUpper().Equals("M")) sJLDW = "M"; } sCLCB = sGetCellTest(Row, 5).Trim(); sCPJJ = sGetCellTest(Row, 5).Trim(); sWSCLCB = sGetCellTest(Row, 6).Trim(); sWSCPJJ = sGetCellTest(Row, 6).Trim(); if (sJJLY.Equals("D") && sBJLY.Equals("D")) { sCPJJ = sGetCellTest(Row, 7).Trim(); sWSCPJJ = sGetCellTest(Row, 8).Trim(); } #region 插入V_XSBJJSJGB表 V_XSBJJSJGB_JGBJJ->含税基价 V_XSBJJSJGB_JGBBJ->无税基价,V_XSBJJSJGB_CLCB->含税表价,V_XSBJJSJGB_BJDHQCLCB->无税表价 sSQL.Clear(); sSQL.Add(@"insert into V_XSBJJSJGB (V_XSBJJSJGB_ID,V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH,V_XSBJJSJGB_XLXHID,V_XSBJJSJGB_XLGGID,V_XSBJJSJGB_XLBZID,V_XSBJJSJGB_DYDJID,V_XSBJJSJGB_JGBJLDW,V_XSBJJSJGB_JGBJJ,V_XSBJJSJGB_JGBBJ,V_XSBJJSJGB_CLCB,V_XSBJJSJGB_BJDHQCLCB ) values(:pID,:pJGBID,:pXH,:pXLXHID,:pXLGGID,:pXLBZID,:pDYDJID,:pJGBJLDW,:pJGBJJ,:pJGBBJ,:pHSBJ,:pWSBJ)"); sSQL.ParamByName("pID").Value = VnewID; sSQL.ParamByName("pJGBID").Value = sJGBID; sSQL.ParamByName("pXH").Value = iVXH++; sSQL.ParamByName("pXLXHID").Value = sXLXHID; sSQL.ParamByName("pXLGGID").Value = sXLGGID; sSQL.ParamByName("pXLBZID").Value = sXLBZID; sSQL.ParamByName("pDYDJID").Value = sXLDYDJ; sSQL.ParamByName("pJGBJLDW").Value = sJLDW; sSQL.ParamByName("pJGBJJ").Value = CMISproConvert.StrToFloat(sCLCB, 0); sSQL.ParamByName("pJGBBJ").Value = CMISproConvert.StrToFloat(sWSCLCB, 0); sSQL.ParamByName("pHSBJ").Value = CMISproConvert.StrToFloat(sCPJJ, 0); sSQL.ParamByName("pWSBJ").Value = CMISproConvert.StrToFloat(sWSCPJJ, 0); dberp.ExecSQL(sSQL); #endregion } #endregion #region 存在相同报价产品不允许导入 sSQL.Clear(); sSQL.Add(" SELECT V_XSBJJSJGB_XLXHID,V_XSBJJSJGB_XLGGID,V_XSBJJSJGB_XLBZID,V_XSBJJSJGB_DYDJID "); sSQL.Add(" FROM V_XSBJJSJGB where V_XSBJJSJGB_ID = :pID and V_XSBJJSJGB_BJDID=:pJGBID "); sSQL.Add(" GROUP BY V_XSBJJSJGB_XLXHID,V_XSBJJSJGB_XLGGID,V_XSBJJSJGB_XLBZID,V_XSBJJSJGB_DYDJID HAVING COUNT(1) > 1 "); sSQL.ParamByName("pID").Value = VnewID; sSQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsV = dberp.OpenDataSet(sSQL); if (dsV.Tables[0].Rows.Count > 0) { #region 删除V表 sSQL.Clear(); sSQL.Add("delete from V_XSBJJSJGB "); sSQL.Add(" where V_XSBJJSJGB_ID=:pID"); sSQL.Add(" and V_XSBJJSJGB_BJDID=:pJGBID"); sSQL.ParamByName("pID").Value = VnewID; sSQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(sSQL); #endregion string sErrXLXHID = dsV.Tables[0].Rows[0]["V_XSBJJSJGB_XLXHID"].ToString().Trim(); string sErrXLGGID = dsV.Tables[0].Rows[0]["V_XSBJJSJGB_XLGGID"].ToString().Trim(); string sErrXLBZID = dsV.Tables[0].Rows[0]["V_XSBJJSJGB_XLBZID"].ToString().Trim(); string sErrDYDJID = dsV.Tables[0].Rows[0]["V_XSBJJSJGB_DYDJID"].ToString().Trim(); string sErrorMessage = "导入数据中存在相同报价产品[" + sErrXLXHID + " " + sErrXLGGID + " " + sErrXLBZID + " " + sErrDYDJID + "],导入失败!"; throw new Exception(sErrorMessage); } #endregion #region 将V表插入XLXSJGBMX sSQL.Clear(); sSQL.Add(@" merge into XLXSJGBMX tar using ( select row_number() over( order by V_XSBJJSJGB_BJDXH )+:pMaxXH as XH, V_XSBJJSJGB_XLXHID as XLXHID, V_XSBJJSJGB_XLGGID as XLGGID, V_XSBJJSJGB_XLBZID as XLBZID, V_XSBJJSJGB_DYDJID as DYDJID, V_XSBJJSJGB_JGBJLDW as JLDW, V_XSBJJSJGB_JGBJJ as JGBJJ, V_XSBJJSJGB_JGBBJ as JGBBJ, V_XSBJJSJGB_CLCB as HSBJ, V_XSBJJSJGB_BJDHQCLCB as WSBJ, case when upper(V_XSBJJSJGB_JGBJLDW) in ('KM','千米') then 0.001 when upper(V_XSBJJSJGB_JGBJLDW) in ('M','米') then 1 else 0 end as dJQJGXS from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pJGBID ) sor on ( tar.XLXSJGBMX_JGBID=:pJGBID and tar.XLXSJGBMX_XLXHID =sor.XLXHID and tar.XLXSJGBMX_XLGGID =sor.XLGGID and tar.XLXSJGBMX_XLBZID =sor.XLBZID and tar.XLXSJGBMX_DYDJID =sor.DYDJID ) when matched then update set "); sSQL.Add(" XLXSJGBMX_WSJJ = sor.JGBBJ ,XLXSJGBMX_HSJJ = sor.JGBJJ, "); sSQL.Add(" XLXSJGBMX_HSBJ = sor.JGBJJ ,XLXSJGBMX_WSBJ=sor.JGBBJ,XLXSJGBMX_JLDW=sor.JLDW, "); sSQL.Add(" XLXSJGBMX_HSJJM = RoundFix(sor.JGBJJ* sor.dJQJGXS,6),XLXSJGBMX_HSBJM=RoundFix(sor.JGBJJ* sor.dJQJGXS,6),XLXSJGBMX_WSJJM=RoundFix(sor.JGBBJ* sor.dJQJGXS,6),XLXSJGBMX_WSBJM=RoundFix(sor.JGBBJ* sor.dJQJGXS,6), "); sSQL.Add(" XLXSJGBMX_WHR = :XLXSJGBMX_WHR, XLXSJGBMX_WHRID=:XLXSJGBMX_WHRID, XLXSJGBMX_WHSJ=:XLXSJGBMX_WHSJ "); sSQL.Add(" when not matched then insert ( "); sSQL.Add(" XLXSJGBMX_JGBID, XLXSJGBMX_XH,XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID,XLXSJGBMX_DYDJID,XLXSJGBMX_JLDW, "); sSQL.Add(" XLXSJGBMX_YXQS,XLXSJGBMX_YXQZ,XLXSJGBMX_WSJJ,XLXSJGBMX_HSJJ,XLXSJGBMX_HSBJ,XLXSJGBMX_WSBJ,XLXSJGBMX_BZ,XLXSJGBMX_WHR,XLXSJGBMX_WHRID,XLXSJGBMX_WHSJ,"); sSQL.Add(" XLXSJGBMX_HSJJM,XLXSJGBMX_HSBJM,XLXSJGBMX_WSJJM,XLXSJGBMX_WSBJM )"); sSQL.Add(" values("); sSQL.Add(" :pJGBID,sor.XH,sor.XLXHID,sor.XLGGID,sor.XLBZID,isnull(sor.DYDJID,' '),sor.JLDW, "); sSQL.Add(" :XLXSJGBMX_YXQS,:XLXSJGBMX_YXQZ,sor.JGBBJ,sor.JGBJJ,sor.HSBJ,sor.WSBJ,:XLXSJGBMX_BZ,:XLXSJGBMX_WHR,:XLXSJGBMX_WHRID,:XLXSJGBMX_WHSJ, "); sSQL.Add(" RoundFix(sor.JGBJJ* sor.dJQJGXS,6), RoundFix(sor.HSBJ* sor.dJQJGXS,6), RoundFix(sor.JGBBJ* sor.dJQJGXS,6),RoundFix(sor.WSBJ* sor.dJQJGXS,6) )"); sSQL.ParamByName("pMaxXH").Value = iXH; sSQL.ParamByName("pID").Value = VnewID; sSQL.ParamByName("pJGBID").Value = sJGBID; sSQL.ParamByName("XLXSJGBMX_YXQS").Value = sYXQS; sSQL.ParamByName("XLXSJGBMX_YXQZ").Value = sYXQZ.Equals("") ? null : sYXQZ; sSQL.ParamByName("XLXSJGBMX_BZ").Value = ""; sSQL.ParamByName("XLXSJGBMX_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSJGBMX_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSJGBMX_WHSJ").Value = CMISproConvert.ConvertTime(DateTime.Now); dberp.ExecSQL(sSQL); XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSJGBMX_Batch(dberp, tSession, sJGBID); #endregion #region 删除V表 sSQL.Clear(); sSQL.Add("delete from V_XSBJJSJGB "); sSQL.Add(" where V_XSBJJSJGB_ID=:pID"); sSQL.Add(" and V_XSBJJSJGB_BJDID=:pJGBID"); sSQL.ParamByName("pID").Value = VnewID; sSQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(sSQL); #endregion Mac.MacLog.TraceFormat(String.Format("ExecDRSQL-End")); // if (sJJLY.Equals("D")) { Mac.MacLog.TraceFormat(String.Format("DoCPJJ-Begin")); XLJGB_CLJGTZList.DoCPJJ(dberp, PageParam.GetRTrimString("MXBH"), sJGBID, true, CMISproConvert.StrToInt(PageParam.GetRTrimString("iXSWS")), PageParam.GetRTrimString("JSBLFS"), tSession.UserId, tSession.UserName, sBJU003); Mac.MacLog.TraceFormat(String.Format("DoCPJJ-End")); } JGBMLInfo.UpdateJGBMXXSXH(dberp, sJGBID, PageParam.GetRTrimString("MXBH")); #endregion } private void ExecDRBZ(TDatabase dberp, TSQL sSQL, DataSet ds, string sJGBID, Dictionary dicDRMXBZ, string sFileName, string sSheetName) { string sXLXHID = ""; string sXLGGID = ""; string sXLBZID = "G"; string sXLDYDJ = ""; string sGYKH = ""; string sBZ = ""; string sXLJGU007 = GetOption(102579000, "XLJGU007"); string sDefaultXLBZID = PageParam.GetRTrimString("sDefaultXLBZID"); string sJJLY = PageParam.GetRTrimString("JJLY"); string sBJLY = PageParam.GetRTrimString("BJLY"); foreach (DataRow Row in ds.Tables[0].Rows) { sXLXHID = sGetCellTest(Row, 0).Trim(); sXLGGID = sGetCellTest(Row, 1).Trim(); if (sXLJGU007.Equals("A")) { sXLGGID = sXLGGID.Replace("x", "X").Replace("X", "*").Replace("*", "×"); } else if (sXLJGU007.Equals("B")) { sXLGGID = sXLGGID.Replace("x", "X").Replace("X", "*").Replace("×", "*"); } sXLBZID = XLBJDUtils.GetBZXLZBZID(sGetCellTest(Row, 2).Trim(), sDefaultXLBZID, dicDRMXBZ); if (sXLBZID.Equals("")) sXLBZID = sGetCellTest(Row, 2).Trim(); sXLDYDJ = sGetCellTest(Row, 3).Trim().Replace('K', 'k').Replace('v', 'V'); ; try { sGYKH = sGetCellTest(Row, 7).Trim(); sBZ = sGetCellTest(Row, 8).Trim(); if (sJJLY.Equals("D") && sBJLY.Equals("D")) { sGYKH = sGetCellTest(Row, 9).Trim(); sBZ = sGetCellTest(Row, 10).Trim(); } } catch { } if (sGYKH.Equals("")) continue; if (!dicDRMXBZ.ContainsKey(sXLBZID)) { sSQL.Clear(); sSQL.Add("insert into XLBZ(XLBZ_XLBZID,XLBZ_XLBZLXMC,XLBZ_WHR,XLBZ_WHRID,XLBZ_WHSJ,XLBZ_DZSC,XLBZ_XLBZMS)"); sSQL.Add("values(:XLBZ_XLBZID,:XLBZ_XLBZLXMC,:XLBZ_WHR,:XLBZ_WHRID,:XLBZ_WHSJ,:XLBZ_DZSC,:XLBZ_XLBZMS)"); sSQL.ParamByName("XLBZ_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLBZ_XLBZLXMC").Value =sGYKH; sSQL.ParamByName("XLBZ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLBZ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLBZ_WHSJ").Value = DateTime.Now; sSQL.ParamByName("XLBZ_DZSC").Value = "Y"; string sXLBZMS = sXLBZID+"/"+sGYKH + "/" + sBZ; if (sXLBZMS.Length > 250) sXLBZMS = sXLBZMS.Substring(0, 250); sSQL.ParamByName("XLBZ_XLBZMS").Value =sXLBZMS; dberp.ExecSQL(sSQL); dicDRMXBZ.Add(sXLBZID, sGYKH); } //if (!CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLBZGYKHDZB where XLBZGYKHDZB_XLBZID='{0}' and XLBZGYKHDZB_GYKH='{1}'", sXLBZID, sGYKH))) //{ // sSQL.Clear(); // sSQL.Add("insert into XLBZGYKHDZB(XLBZGYKHDZB_XLBZID,XLBZGYKHDZB_GYKH,XLBZGYKHDZB_WHR,XLBZGYKHDZB_WHSJ,XLBZGYKHDZB_WHRID)"); // sSQL.Add("values(:XLBZGYKHDZB_XLBZID,:XLBZGYKHDZB_GYKH,:XLBZGYKHDZB_WHR,:XLBZGYKHDZB_WHSJ,:XLBZGYKHDZB_WHRID)"); // sSQL.ParamByName("XLBZGYKHDZB_XLBZID").Value = sXLBZID; // sSQL.ParamByName("XLBZGYKHDZB_GYKH").Value = sGYKH; // sSQL.ParamByName("XLBZGYKHDZB_WHR").Value = tSession.UserName; // sSQL.ParamByName("XLBZGYKHDZB_WHRID").Value = tSession.UserId; // sSQL.ParamByName("XLBZGYKHDZB_WHSJ").Value = DateTime.Now; // dberp.ExecSQL(sSQL); //} //if (sBZ.Equals("")) continue; //sSQL.Clear(); //sSQL.Add("update XLXSJGBMX set XLXSJGBMX_BZ=:pBZ "); //sSQL.Add("where XLXSJGBMX_XLXHID=:pXLXHID and XLXSJGBMX_XLGGID=:pXLGGID and XLXSJGBMX_XLBZID=:pXLBZID and XLXSJGBMX_DYDJID=:pDYDJID "); //sSQL.ParamByName("pXLXHID").Value = sXLXHID; //sSQL.ParamByName("pXLGGID").Value = sXLGGID; //sSQL.ParamByName("pXLBZID").Value = sXLBZID; //sSQL.ParamByName("pDYDJID").Value = sXLDYDJ; //sSQL.ParamByName("pBZ").Value = sBZ; //dberp.ExecSQL(sSQL); } } //检验栏目 private void ExcelColumnName(DataSet ds) { Mac.MacLog.TraceFormat(String.Format("ExcelColumnName-Begin")); Dictionary ColumnNames = new Dictionary(); int iColumnCount = 7; ColumnNames.Add("0", "型号"); ColumnNames.Add("1", "规格"); ColumnNames.Add("2", "标准"); ColumnNames.Add("3", "电压等级"); ColumnNames.Add("4", "计量单位"); if (PageParam.GetRTrimString("JJLY").Equals("D")) { ColumnNames.Add("5", "含税基价"); ColumnNames.Add("6", "无税基价"); if (PageParam.GetRTrimString("BJLY").Equals("D")) { ColumnNames.Add("7", "含税表价"); ColumnNames.Add("8", "无税表价"); iColumnCount = 9; } } else { ColumnNames.Add("5", "含税表价"); ColumnNames.Add("6", "无税表价"); } for (int i = 0; i < iColumnCount; i++) { try { if (!ds.Tables[0].Columns[i].ColumnName.Trim().Equals(ColumnNames[i.ToString()].Trim())) { throw new Exception("导入文件的栏目内容格式不正确,请按Excel栏目要求的内容格式调整导入文件!"); } } catch { throw new Exception("导入文件的栏目内容格式不正确,请按Excel栏目要求的内容格式调整导入文件!"); } } for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { try { if (ds.Tables[0].Rows[i][0].ToString().Trim().Equals("") || ds.Tables[0].Rows[i][1].ToString().Trim().Equals("") || ds.Tables[0].Rows[i][2].ToString().Trim().Equals("")) { throw new Exception(String.Format("第{0}行型号、规格、标准存在空值,不允许导入!", (i + 2).ToString().Trim())); } } catch { throw new Exception(String.Format("第{0}行型号、规格、标准存在空值,不允许导入!", (i + 2).ToString().Trim())); } } Mac.MacLog.TraceFormat(String.Format("ExcelColumnName-End")); } private void ReadWJ(string sPath, string sSheetName, ref DataSet aDataExcel) { string sMessage = ""; aDataExcel = TExcelData.ReadExcel(sPath.Trim(), sSheetName, "", false, ref sMessage); if (!sMessage.Trim().Equals("")) { throw new Exception("文件读取失败!失败原因:" + sMessage.Trim()); } } private string sGetCellTest(DataRow Row, int ColumnIndex) { return Row[ColumnIndex].ToString().Trim().Replace("\r\n", "").Replace("\n", ""); } //取得默认的sheet名称 private string GetDefaultSheetName(string sFilePath) { string connStr = GetConnString(sFilePath); OleDbConnection m_conn = new OleDbConnection(connStr); m_conn.Open(); DataTable sheetNames = m_conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); string sSheetName = ""; if (sheetNames.Rows[0].Table.Rows.Count > 0) { sSheetName = sheetNames.Rows[0].Table.Rows[0]["TABLE_NAME"].ToString().Trim(); if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'")) sSheetName = sSheetName.TrimStart('\'').TrimEnd('\''); if (sSheetName.EndsWith("$")) sSheetName = sSheetName.TrimEnd('$'); } if (m_conn.State == ConnectionState.Open) { m_conn.Dispose(); m_conn = null; } return sSheetName; } #endregion } }