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_MISPRO.Utility; using GThinking.N_CONTROL; using System.IO; using System.Data.OleDb; using System.Data.Common; using GThinking.N_MISPROAS; namespace GThinking.N_XLXSBJ { public partial class DRBJDMX : SingleCardBase { DRBJDMXB entity = new DRBJDMXB(); #region page类事件 protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860000; 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; if (AppRuntime.BitType == AppBitType.Bit32) fupdPost.Filter = "XLS"; else // AppBitType.Bit64 fupdPost.Filter = "XLS,XLSX"; base.InitPage(); if (PageParam.GetRTrimString("XSYSCP") == "Y") lblKZJLM.Text = lblKZJLM.Text.Trim() + "、原始产品"; if (PageParam.GetRTrimString("XSYXJ") == "Y") lblKZJLM.Text = lblKZJLM.Text.Trim() + "、意向价"; if (PageParam.GetRTrimString("XSYZ") == "Y") lblKZJLM.Text = lblKZJLM.Text.Trim() + "、印字"; if (PageParam.GetRTrimString("XSBH") == "Y") lblKZJLM.Text = lblKZJLM.Text.Trim() + "、包号"; if (PageParam.GetRTrimString("XSCPBJXJ") == "Y") lblKZJLM.Text = lblKZJLM.Text.Trim() + "、产品报价限价、报价金额限价"; if (!IsPostBack) { txtBJDID.Value = PageParam.GetRTrimString("BJDID"); } } #endregion #region 控件事件 protected void btnQD_Click(object sender, EventArgs e) { if (fupdPost.FilePath.Equals("")) { ShowMessage("请选择需要导入的文件!"); return; } 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); InsertMX(dberp, sSQL, aDataExcel); dberp.CommitTrans(); if (PageParam.GetRTrimString("txtNeedCallBackCID").Equals("")) { ShowMessage("导入成功!"); CloseWindow(); } else { DialogOperationScript dos = new DialogOperationScript(this); dos.SetOwnerControlValue(PageParam.GetRTrimString("txtNeedCallBackCID"), "Y"); dos.CloseSelf(); dos.Execute(); } } catch (Exception ex) { lblTitle.Text = ""; dberp.RollbackTrans(); ShowMessage(ex.Message); } } protected void btnQX_Click(object sender, EventArgs e) { CloseWindow(); } #endregion #region 自定义事件 //private bool IsExsitMX(string sBJDID, int XH) //{ // return CMISproDataBase.ExistsRecord("DBERP", String.Format("select 1 from XLBJDMX where XLBJDMX_BJDID = '{0}' and XLBJDMX_XH = {1}", sBJDID, XH)); //} private void InsertMX(TDatabase dberp, TSQL sSQL, DataSet ds) { string sErrorNum = ""; int iStartXH = 0; bool bNeedUp = false; int tmpXSWS = string.IsNullOrEmpty(GetOption("BJU002")) ? 5 : CMISproConvert.StrToInt(GetOption("BJU002")); if (tmpXSWS < 0) tmpXSWS = 0; else if (tmpXSWS > 8) tmpXSWS = 8; //A|× B|* string sXLJGU007 = GetOption(102579000, "XLJGU007"); string sBJU003 = GetOption("BJU003"); string sXSQYID = PageParam.GetRTrimString("XSQYID"); string sBJLY = PageParam.GetRTrimString("BJLY"); string sBJFLID = PageParam.GetRTrimString("BJFLID"); string sBJDHQLY = PageParam.GetRTrimString("BJDHQLY"); string sBJRQ = PageParam.GetRTrimString("BJRQ"); string sCPBJMRXSWS = PageParam.GetRTrimString("CPBJMRXSWS"); string sDefaultXLBZID = XLBJDUtils.GetDefaultXLBZID(); //动态添加的栏目对应序号 int ColumnIndex = 6; int indexYSCP = -1; int indexYXJ = -1; int indexYZ = -1; int indexBH = -1; int indexCPBJXJ = -1; int indexBJJEXJ = -1; if (PageParam.GetRTrimString("XSYSCP") == "Y") { ColumnIndex++; indexYSCP = ColumnIndex; } if (PageParam.GetRTrimString("XSYXJ") == "Y") { ColumnIndex++; indexYXJ = ColumnIndex; } if (PageParam.GetRTrimString("XSYZ") == "Y") { ColumnIndex++; indexYZ = ColumnIndex; } if (PageParam.GetRTrimString("XSBH") == "Y") { ColumnIndex++; indexBH = ColumnIndex; } if (PageParam.GetRTrimString("XSCPBJXJ") == "Y") { ColumnIndex++; indexCPBJXJ = ColumnIndex; ColumnIndex++; indexBJJEXJ = ColumnIndex; } Dictionary dicDRMXBZ = new Dictionary(); dicDRMXBZ.Clear(); sSQL.Clear(); sSQL.Add("select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ where 1 = 1 "); DataSet dsXLBZ = dberp.OpenDataSet(sSQL); if (dsXLBZ.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsXLBZ.Tables[0].Rows.Count; i++) { dicDRMXBZ.Add(dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZID"].ToString().Trim(), dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim()); } } foreach (DataRow Row in ds.Tables[0].Rows) { if (!Row[0].ToString().Trim().Equals("") && !Row[1].ToString().Trim().Equals("")) { string sXLXHID = sGetCellTest(Row, 0).Trim(); string 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("×", "*"); } string sXLBZID = XLBJDUtils.GetBZXLZBZID(sGetCellTest(Row, 2).Trim(), sDefaultXLBZID, dicDRMXBZ); string sXLDYDJ = sGetCellTest(Row, 3).Trim(); if (sXLXHID.Equals("") || sXLGGID.Equals("")) continue; XLBJDUtils.ExistCLQD(ref sXLXHID, ref sXLGGID, ref sXLBZID, ref sXLDYDJ); int iXH = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJDMX", "XLXSBJDMX_XH", "XLXSBJDMX_BJDID='" + txtBJDID.Value.Trim() + "'") + 1; int iXSSX = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJDMX", "XLXSBJDMX_XSSX", "XLXSBJDMX_BJDID = '" + txtBJDID.Value.Trim() + "'") + 1; if (iStartXH == 0) { iStartXH = iXH; } string sJLDW = sGetCellTest(Row, 4); if (sJLDW.Equals("")) { sJLDW = sBJU003; } else if (sJLDW.ToUpper().Equals("KM")) { sJLDW = "Km"; } else if (sJLDW.ToUpper().Equals("M")) { sJLDW = "M"; } //如果报价数量不合法或小于0,则按0导入 double fBJSL = CMISproConvert.StrToFloat(sGetCellTest(Row, 5), 0); if (fBJSL < 0) fBJSL = 0; string sBJCP = ""; try { sBJCP = sGetCellTest(Row, 6); } catch { sBJCP = ""; } string sYSCP = ""; try { sYSCP = sGetCellTest(Row, indexYSCP); } catch { sYSCP = ""; } double dYXJG = 0; try { dYXJG = CMISproConvert.StrToFloat(sGetCellTest(Row, indexYXJ), 0); if (dYXJG < 0) dYXJG = 0; } catch { dYXJG = 0; } string sYZ = ""; try { sYZ = sGetCellTest(Row, indexYZ); } catch { sYZ = ""; } string sBH = ""; try { sBH = sGetCellTest(Row, indexBH); } catch { sBH = ""; } double dCPBJXJ = 0; try { dCPBJXJ = CMISproConvert.StrToFloat(sGetCellTest(Row, indexCPBJXJ), 0); if (dCPBJXJ < 0) dCPBJXJ = 0; } catch { dCPBJXJ = 0; } double dBJJEXJ = 0; try { dBJJEXJ = CMISproConvert.StrToFloat(sGetCellTest(Row, indexBJJEXJ), 0); if (dBJJEXJ < 0) dBJJEXJ = 0; } catch { dBJJEXJ = 0; } sSQL.Clear(); sSQL.Add(" insert into XLXSBJDMX( "); sSQL.Add(" XLXSBJDMX_BJDID, XLXSBJDMX_XH, XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID,XLXSBJDMX_XDXLXHID,XLXSBJDMX_XDXLBZID, "); sSQL.Add(" XLXSBJDMX_XLBZID, XLXSBJDMX_DYDJID, XLXSBJDMX_XLYSID,XLXSBJDMX_YSCP, XLXSBJDMX_BJCP,XLXSBJDMX_BJCPSD,XLXSBJDMX_WGCPBZ, "); sSQL.Add(" XLXSBJDMX_JLDW, XLXSBJDMX_BJSL, XLXSBJDMX_JGBBJ, XLXSBJDMX_TZQCPBJ,XLXSBJDMX_TZCPBJ,XLXSBJDMX_CPBJ, XLXSBJDMX_TZQBJJE,XLXSBJDMX_BJJE, XLXSBJDMX_JGBJJ,XLXSBJDMX_CLCB,XLXSBJDMX_JGBBJLJJCL,XLXSBJDMX_JGBBJJCL,XLXSBJDMX_JGBBJJCE,XLXSBJDMX_CLZL, "); sSQL.Add(" XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_CLCBJCL,XLXSBJDMX_YXJG,XLXSBJDMX_YZ,XLXSBJDMX_FBH,XLXSBJDMX_CPBJXJ,XLXSBJDMX_BJJEXJ,XLXSBJDMX_BZ,XLXSBJDMX_DZSC, XLXSBJDMX_WHRID, XLXSBJDMX_WHR, XLXSBJDMX_WHSJ)"); sSQL.Add(" values("); sSQL.Add(" :XLXSBJDMX_BJDID, :XLXSBJDMX_XH, :XLXSBJDMX_XSSX, :XLXSBJDMX_XLXHID, :XLXSBJDMX_XLGGID,:XLXSBJDMX_XDXLXHID,:XLXSBJDMX_XDXLBZID, "); sSQL.Add(" :XLXSBJDMX_XLBZID, isnull(:XLXSBJDMX_DYDJID,' '), :XLXSBJDMX_XLYSID,:XLXSBJDMX_YSCP, :XLXSBJDMX_BJCP,:XLXSBJDMX_BJCPSD,:XLXSBJDMX_WGCPBZ, "); sSQL.Add(" :XLXSBJDMX_JLDW, :XLXSBJDMX_BJSL, :XLXSBJDMX_JGBBJ, :XLXSBJDMX_TZQCPBJ,:XLXSBJDMX_TZCPBJ,:XLXSBJDMX_CPBJ, :XLXSBJDMX_TZQBJJE,:XLXSBJDMX_BJJE, :XLXSBJDMX_JGBJJ,:XLXSBJDMX_CLCB,:XLXSBJDMX_JGBBJLJJCL,:XLXSBJDMX_JGBBJJCL,:XLXSBJDMX_JGBBJJCE,:XLXSBJDMX_CLZL, "); sSQL.Add(" :XLXSBJDMX_BJDHQCLCB,:XLXSBJDMX_CLCBJCL,:XLXSBJDMX_YXJG,:XLXSBJDMX_YZ,:XLXSBJDMX_FBH,:XLXSBJDMX_CPBJXJ,:XLXSBJDMX_BJJEXJ,:XLXSBJDMX_BZ,:XLXSBJDMX_DZSC, :XLXSBJDMX_WHRID, :XLXSBJDMX_WHR, :XLXSBJDMX_WHSJ)"); sSQL.ParamByName("XLXSBJDMX_BJDID").Value = txtBJDID.Value.Trim(); sSQL.ParamByName("XLXSBJDMX_XH").Value = iXH; sSQL.ParamByName("XLXSBJDMX_XSSX").Value = iXSSX; sSQL.ParamByName("XLXSBJDMX_XLXHID").Value = sXLXHID; sSQL.ParamByName("XLXSBJDMX_XLGGID").Value = sXLGGID; sSQL.ParamByName("XLXSBJDMX_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLXSBJDMX_DYDJID").Value = sXLDYDJ; sSQL.ParamByName("XLXSBJDMX_XDXLXHID").Value = sXLXHID; sSQL.ParamByName("XLXSBJDMX_XDXLBZID").Value = sXLBZID; sSQL.ParamByName("XLXSBJDMX_XLYSID").Value = XLBJDInfo.GetDefaultYSID(sXLXHID, sXLGGID); if (!sBJCP.Trim().Equals("")) { sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sBJCP; sSQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "Y"; } else { if (string.IsNullOrEmpty(sXLDYDJ)) sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sXLXHID + " " + sXLGGID; else sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sXLXHID + "-" + sXLDYDJ + " " + sXLGGID; sSQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "N"; } //即使不是基础计量单位,也应当直接导入。 sSQL.ParamByName("XLXSBJDMX_JLDW").Value = sJLDW; sSQL.ParamByName("XLXSBJDMX_BJSL").Value = fBJSL; sSQL.ParamByName("XLXSBJDMX_YXJG").Value = dYXJG; sSQL.ParamByName("XLXSBJDMX_YZ").Value = sYZ; sSQL.ParamByName("XLXSBJDMX_YSCP").Value = sYSCP; sSQL.ParamByName("XLXSBJDMX_JGBBJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_TZQCPBJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_TZCPBJ").Value = 0; sSQL.ParamByName("XLXSBJDMX_CPBJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_JGBJJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_CLCB").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_BJDHQCLCB").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_CLZL").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_BJJE").Value = NumberUtils.RoundX(fBJSL * CMISproConvert.StrToFloat(sSQL.ParamByName("XLXSBJDMX_CPBJ").Value.ToString(), 0), 2).ToString(); sSQL.ParamByName("XLXSBJDMX_TZQBJJE").Value = sSQL.ParamByName("XLXSBJDMX_BJJE").Value; sSQL.ParamByName("XLXSBJDMX_JGBBJJCE").Value = 0; sSQL.ParamByName("XLXSBJDMX_JGBBJJCL").Value = 0; sSQL.ParamByName("XLXSBJDMX_JGBBJLJJCL").Value = 0; sSQL.ParamByName("XLXSBJDMX_CLCBJCL").Value = 0; sSQL.ParamByName("XLXSBJDMX_FBH").Value = sBH; sSQL.ParamByName("XLXSBJDMX_CPBJXJ").Value = dCPBJXJ; sSQL.ParamByName("XLXSBJDMX_BJJEXJ").Value = dBJJEXJ; sSQL.ParamByName("XLXSBJDMX_WGCPBZ").Value = "N"; sSQL.ParamByName("XLXSBJDMX_BZ").Value = ""; if (XLBJDUtils.ISDZBZ(sXLBZID)) { sSQL.ParamByName("XLXSBJDMX_DZSC").Value = "Y"; } else { sSQL.ParamByName("XLXSBJDMX_DZSC").Value = "N"; } sSQL.ParamByName("XLXSBJDMX_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSBJDMX_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSBJDMX_WHSJ").Value = CMISproConvert.ConvertTime(DateTime.Now); dberp.ExecSQL(sSQL); bNeedUp = true; } } XLBJDUtils.UpdateXDXLBZID(dberp, sSQL, txtBJDID.Value.Trim(), "", iStartXH - 1, ref sErrorNum); XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, txtBJDID.Value.Trim(), "", iStartXH - 1); if (bNeedUp) { XLBJDCalcUtils.CalcBJDMXAfterIns(dberp, sSQL, txtBJDID.Value.Trim(), iStartXH, GetOption("BJU002"), sBJU003, GetOption("BJU018"), tSession.UserId, tSession.UserName, ref sErrorNum); } } private void ExcelColumnValid(DataSet ds) { Dictionary ColumnNames = new Dictionary(); ColumnNames.Add("0", "型号"); ColumnNames.Add("1", "规格"); ColumnNames.Add("2", "标准"); ColumnNames.Add("3", "电压等级"); ColumnNames.Add("4", "计量单位"); ColumnNames.Add("5", "报价数量"); ColumnNames.Add("6", "报价产品"); int ColumnIndex = 6; if (PageParam.GetRTrimString("XSYSCP") == "Y") { ColumnIndex++; ColumnNames.Add(ColumnIndex.ToString(), "原始产品"); } if (PageParam.GetRTrimString("XSYXJ") == "Y") { ColumnIndex++; ColumnNames.Add(ColumnIndex.ToString(), "意向价"); } if (PageParam.GetRTrimString("XSYZ") == "Y") { ColumnIndex++; ColumnNames.Add(ColumnIndex.ToString(), "印字"); } if (PageParam.GetRTrimString("XSBH") == "Y") { ColumnIndex++; ColumnNames.Add(ColumnIndex.ToString(), "包号"); } if (PageParam.GetRTrimString("XSCPBJXJ") == "Y") { ColumnIndex++; ColumnNames.Add(ColumnIndex.ToString(), "产品报价限价"); ColumnIndex++; ColumnNames.Add(ColumnIndex.ToString(), "报价金额限价"); } for (int i = 0; i < 6; i++) { try { if (!ds.Tables[0].Columns[i].ColumnName.Trim().Equals(ColumnNames[i.ToString()].Trim())) { throw new Exception("栏目[" + ds.Tables[0].Columns[i].ColumnName + "]与导入文件要求的栏目格式不一致!"); } } catch (Exception ex) { throw new Exception(ex.Message); } } } 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("文件读取失败!具体原因:" + sMessage); } } private string sGetCellTest(DataRow Row, int ColumnIndex) { return Row[ColumnIndex].ToString().Trim().Replace("\r\n", "").Replace("\n", ""); } #endregion } }