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 XLBJD_WGCPBJDRInfo : SingleCardBase { XLBJD_WGCPCLCB_DREntity entity = new XLBJD_WGCPCLCB_DREntity(); private string sBJDID = ""; private string sWGCPTZBZ = ""; #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(); sBJDID = PageParam.GetRTrimString("BJDID"); sWGCPTZBZ = PageParam.GetRTrimString("WGCPTZBZ"); } #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); UpdateJGBBJ(dberp, sSQL, aDataExcel); dberp.CommitTrans(); if (sWGCPTZBZ == "N") ShowMessage("已完成无表价产品表价的更新!"); else 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); } } protected void btnQX_Click(object sender, EventArgs e) { CloseWindow(); } #endregion #region 自定义事件 //根据表格,更新价格表表价 private void UpdateJGBBJ(TDatabase dberp, TSQL SQL, DataSet ds) { string sXLXHID = ""; string sXLGGID = ""; string sXLBZID = ""; string sDYDJID = ""; string sXLYSID = ""; string sJLDW = ""; string sBJSL = ""; string sJGBBJ = ""; string sBZ = ""; double dXH = 0; string sBJDXHList = ""; int tmpXSWS = string.IsNullOrEmpty(GetOption("BJU002")) ? 5 : CMISproConvert.StrToInt(GetOption("BJU002")); if (tmpXSWS < 0) tmpXSWS = 0; else if (tmpXSWS > 8) tmpXSWS = 8; string sBJFLID = PageParam.GetRTrimString("BJFLID"); string sCPBJMRXSWS = PageParam.GetRTrimString("CPBJMRXSWS"); string sJCLLX = PageParam.GetRTrimString("JCLLX"); string sLJJCL = PageParam.GetRTrimString("LJJCLLX"); DateTime tWHSJCondition = MISproUtils.GetServerTime(); Dictionary dic = new Dictionary(); double fCLZL = 0; double dCPJJ = 0; double dJJ = 0; double dCLCB = 0; double dBJDHQCLCB = 0; #region 完成报价单明细的更新 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { sXLXHID = ds.Tables[0].Rows[i]["型号"].ToString().Trim(); sXLGGID = ds.Tables[0].Rows[i]["规格"].ToString().Trim(); sXLBZID = ds.Tables[0].Rows[i]["标准"].ToString().Trim().Split('|')[0]; sDYDJID = ds.Tables[0].Rows[i]["电压等级"].ToString().Trim(); sJLDW = ds.Tables[0].Rows[i]["计量单位"].ToString().Trim(); sXLYSID = ds.Tables[0].Rows[i]["颜色"].ToString().Trim().Split('|')[0]; sBJSL = ds.Tables[0].Rows[i]["报价数量"].ToString().Trim(); sJGBBJ = ds.Tables[0].Rows[i]["表价"].ToString().Trim(); sBZ = ds.Tables[0].Rows[i]["备注"].ToString().Trim(); if(ds.Tables[0].Columns.Contains("序号")) dXH = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["序号"].ToString().Trim(), 0); SQL.Clear(); if (sWGCPTZBZ == "N") { if (dXH == 0) { SQL.Add("update XLXSBJDMX set XLXSBJDMX_JGBBJ =:pJGBBJ, XLXSBJDMX_JGBBJTZ = 'Y', XLXSBJDMX_JGBBJGXSJ = :pJGBBJGXSJ,XLXSBJDMX_BZ = XLXSBJDMX_BZ||:pBZ,XLXSBJDMX_BJLY='SSJGBBJ' "); SQL.Add(",XLXSBJDMX_WHR=:pWHR,XLXSBJDMX_WHRID=:pWHRID,XLXSBJDMX_WHSJ=:tWHSJCondition "); SQL.Add("where 1=1 "); SQL.Add(" and XLXSBJDMX_XLXHID =:pXLXHID "); SQL.Add(" and XLXSBJDMX_XLGGID =:pXLGGID "); SQL.Add(" and XLXSBJDMX_XLBZID =:pXLBZID "); SQL.Add(" and XLXSBJDMX_DYDJID =:pDYDJID "); SQL.Add(" and XLXSBJDMX_JLDW =:pJLDW "); SQL.Add(" and XLXSBJDMX_XLYSID =:pXLYSID "); SQL.ParamByName("pXLXHID").Value = sXLXHID; SQL.ParamByName("pXLGGID").Value = sXLGGID; SQL.ParamByName("pXLBZID").Value = sXLBZID; SQL.ParamByName("pDYDJID").Value = XLBJDUtils.FetEmptyStr(sDYDJID); SQL.ParamByName("pJLDW").Value = sJLDW; SQL.ParamByName("pXLYSID").Value = sXLYSID; } else { SQL.Add("update XLXSBJDMX set XLXSBJDMX_JGBBJ =:pJGBBJ, XLXSBJDMX_JGBBJTZ = 'Y', XLXSBJDMX_JGBBJGXSJ = :pJGBBJGXSJ,XLXSBJDMX_BZ = XLXSBJDMX_BZ||:pBZ,XLXSBJDMX_BJLY='SSJGBBJ' "); SQL.Add(",XLXSBJDMX_WHR=:pWHR,XLXSBJDMX_WHRID=:pWHRID,XLXSBJDMX_WHSJ=:tWHSJCondition "); SQL.Add(",XLXSBJDMX_XLXHID =:pXLXHID,XLXSBJDMX_XLGGID =:pXLGGID,XLXSBJDMX_XLBZID =:pXLBZID,XLXSBJDMX_DYDJID =:pDYDJID "); SQL.Add("where 1=1 "); SQL.Add(" and XLXSBJDMX_XH=:pXH"); SQL.ParamByName("pXH").Value = dXH; SQL.ParamByName("pXLXHID").Value = sXLXHID; SQL.ParamByName("pXLGGID").Value = sXLGGID; SQL.ParamByName("pXLBZID").Value = sXLBZID; SQL.ParamByName("pDYDJID").Value = XLBJDUtils.FetEmptyStr(sDYDJID); } SQL.Add(" and XLXSBJDMX_JGBBJ = 0 "); SQL.Add(" and not exists (select 1 from XLXSBJYLZDMX left join XLXSBJYLZD on XLXSBJYLZD_SQDH = XLXSBJYLZDMX_SQDH where XLXSBJYLZD_BJDID = XLXSBJDMX_BJDID and XLXSBJYLZDMX_BJDXH = XLXSBJDMX_XH ) "); SQL.Add(" and XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID "); SQL.ParamByName("pJGBBJ").Value = CMISproConvert.StrToFloat(sJGBBJ); SQL.ParamByName("pJGBBJGXSJ").Value = MISproUtils.GetServerTime(); SQL.ParamByName("pBZ").Value = sBZ; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserId; SQL.ParamByName("tWHSJCondition").Value = tWHSJCondition; SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID; dberp.ExecSQL(SQL); if (CMISproConvert.StrToFloat(sJGBBJ) == 0 && dXH > 0) { dic.Clear(); dic.Add("sXH", dXH.ToString()); dic.Add("fBJSL", sBJSL); dic.Add("sJLDW", sJLDW); dic.Add("iXSWS", tmpXSWS.ToString().Trim()); dic.Add("sXSQYID", PageParam.GetRTrimString("XSQYID")); dic.Add("sBJFLID", PageParam.GetRTrimString("BJFLID")); dic.Add("sJGBID", PageParam.GetRTrimString("JGBID")); dic.Add("sBJDHQLY", PageParam.GetRTrimString("BJDHQLY")); dic.Add("sBJRQ", PageParam.GetRTrimString("BJRQ")); dic.Add("sJGBIDS", PageParam.GetRTrimString("JGBIDS")); dic.Add("fJZBJHS", PageParam.GetRTrimString("HSBZ")); dic.Add("sLJJCLLX", PageParam.GetRTrimString("LJJCLLX")); dic.Add("sJCLLX", PageParam.GetRTrimString("JCLLX")); dic.Add("sBJLY", PageParam.GetRTrimString("BJLY")); dic.Add("sJSBLFS", PageParam.GetRTrimString("JSBLFS")); dic.Add("sTZCLHQ", PageParam.GetRTrimString("TZCLHQ")); dic.Add("sJGCIDS", PageParam.GetRTrimString("JGCIDS")); dic.Add("sJGBTJYS", PageParam.GetRTrimString("JGBTJYS")); dic.Add("sTBJCLID", PageParam.GetRTrimString("TBJCLID")); dic.Add("sLBJCLID", PageParam.GetRTrimString("LBJCLID")); dic.Add("sTJ", PageParam.GetRTrimString("TJ")); dic.Add("sLJ", PageParam.GetRTrimString("LJ")); dic.Add("sBJU003", GetOption("BJU003")); dic.Add("sBJU018", GetOption("BJU018")); string sWGCPBZ = "N"; string sJGFBZ = "N"; Dictionary dicJJYZList_JGE = new Dictionary(); XLBJDUtils.UpdateXLXSBJDMX_JGBBJ(dberp, SQL, sBJDID, sXLXHID, sXLGGID, sXLBZID, sDYDJID, dic, ref dCPJJ, ref dJJ, ref dCLCB, ref dBJDHQCLCB, ref fCLZL, ref dicJJYZList_JGE, ref sWGCPBZ, ref sJGFBZ); if (dicJJYZList_JGE.Count > 0) { SQL.Clear(); SQL.Add("update XLXSBJDJJYZ set XLXSBJDJJYZ_YZZ01=:pYZZ01,XLXSBJDJJYZ_YZZ02=:pYZZ02,XLXSBJDJJYZ_YZZ03=:pYZZ03,XLXSBJDJJYZ_YZZ04=:pYZZ04,XLXSBJDJJYZ_YZZ05=:pYZZ05,"); SQL.Add(" XLXSBJDJJYZ_YZZ06=:pYZZ06,XLXSBJDJJYZ_YZZ07=:pYZZ07,XLXSBJDJJYZ_YZZ08=:pYZZ08,XLXSBJDJJYZ_YZZ09=:pYZZ09,XLXSBJDJJYZ_YZZ10=:pYZZ10 "); SQL.Add(" where XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=:pBJDXH"); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pBJDXH").Value = dXH; SQL.ParamByName("pYZZ01").Value = dicJJYZList_JGE["JZ01"]; SQL.ParamByName("pYZZ02").Value = dicJJYZList_JGE["JZ02"]; SQL.ParamByName("pYZZ03").Value = dicJJYZList_JGE["JZ03"]; SQL.ParamByName("pYZZ04").Value = dicJJYZList_JGE["JZ04"]; SQL.ParamByName("pYZZ05").Value = dicJJYZList_JGE["JZ05"]; SQL.ParamByName("pYZZ06").Value = dicJJYZList_JGE["JZ06"]; SQL.ParamByName("pYZZ07").Value = dicJJYZList_JGE["JZ07"]; SQL.ParamByName("pYZZ08").Value = dicJJYZList_JGE["JZ08"]; SQL.ParamByName("pYZZ09").Value = dicJJYZList_JGE["JZ09"]; SQL.ParamByName("pYZZ10").Value = dicJJYZList_JGE["JZ10"]; dberp.ExecSQL(SQL); } SQL.Clear(); SQL.Add("update XLXSBJDMX set "); SQL.Add(" XLXSBJDMX_JGBBJ = :pJGBBJ, "); SQL.Add(" XLXSBJDMX_JGBBJTZ = 'N', "); SQL.Add(" XLXSBJDMX_JGBBJGXSJ=:pJGBBJGXSJ,"); SQL.Add(" XLXSBJDMX_JGBJJ = :pJGBJJ, "); SQL.Add(" XLXSBJDMX_CLCB = :pCLCB, "); SQL.Add(" XLXSBJDMX_BJDHQCLCB = :pBJDHQCLCB, "); SQL.Add(" XLXSBJDMX_BJDHQCLCBTZ = 'N', "); SQL.Add(" XLXSBJDMX_WGCPBZ = :pWGCPBZ, "); SQL.Add(" XLXSBJDMX_JGFBZ = :pJGBZ, "); SQL.Add(" XLXSBJDMX_CLZL = :pCLZL "); SQL.Add(" where 1=1 "); SQL.Add(" and XLXSBJDMX_BJDID = :pBJDID "); SQL.Add(" and XLXSBJDMX_XH = :pXH "); SQL.ParamByName("pJGBBJ").Value = dCPJJ; SQL.ParamByName("pJGBBJGXSJ").Value = MISproUtils.GetServerTime(); SQL.ParamByName("pJGBJJ").Value = dJJ; SQL.ParamByName("pCLCB").Value = dCLCB; SQL.ParamByName("pBJDHQCLCB").Value = dBJDHQCLCB; SQL.ParamByName("pCLZL").Value = fCLZL; SQL.ParamByName("pWGCPBZ").Value = sWGCPBZ; SQL.ParamByName("pJGBZ").Value = sJGFBZ; SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pXH").Value = dXH; dberp.ExecSQL(SQL); } } else { SQL.Clear(); SQL.Add("update XLXSBJDMX set XLXSBJDMX_JGBBJ =:pJGBBJ, XLXSBJDMX_JGBBJTZ = 'Y', XLXSBJDMX_JGBBJGXSJ = :pJGBBJGXSJ,XLXSBJDMX_BZ = XLXSBJDMX_BZ||:pBZ,XLXSBJDMX_BJLY='SSJGBBJ' "); SQL.Add("where 1=1 "); if (dXH == 0) { SQL.Add(" and XLXSBJDMX_XLXHID =:pXLXHID "); SQL.Add(" and XLXSBJDMX_XLGGID =:pXLGGID "); SQL.Add(" and XLXSBJDMX_XLBZID =:pXLBZID "); SQL.Add(" and XLXSBJDMX_DYDJID =:pDYDJID "); SQL.Add(" and XLXSBJDMX_JLDW =:pJLDW "); SQL.Add(" and XLXSBJDMX_XLYSID =:pXLYSID "); SQL.ParamByName("pXLXHID").Value = sXLXHID; SQL.ParamByName("pXLGGID").Value = sXLGGID; SQL.ParamByName("pXLBZID").Value = sXLBZID; SQL.ParamByName("pDYDJID").Value = XLBJDUtils.FetEmptyStr(sDYDJID); SQL.ParamByName("pJLDW").Value = sJLDW; SQL.ParamByName("pXLYSID").Value = sXLYSID; } else { SQL.Add(" and XLXSBJDMX_XH=:pXH"); SQL.ParamByName("pXH").Value = dXH; } SQL.Add(" and isnull(XLXSBJDMX_WGCPBZ,'N') = 'Y' "); SQL.Add(" and XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID "); SQL.ParamByName("pJGBBJ").Value = CMISproConvert.StrToFloat(sJGBBJ); SQL.ParamByName("pJGBBJGXSJ").Value = MISproUtils.GetServerTime(); SQL.ParamByName("pBZ").Value = sBZ; SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID; dberp.ExecSQL(SQL); } } XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, sBJDID); #endregion #region 外购产品查询 SQL.Clear(); SQL.Add("select XLXSBJDMX_XH from XLXSBJDMX "); SQL.Add(" where 1=1 "); SQL.Add(" and XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID "); if (sWGCPTZBZ == "N") SQL.Add(" and XLXSBJDMX_WHSJ=:tWHSJCondition"); else SQL.Add(" and isnull(XLXSBJDMX_WGCPBZ,'N') = 'Y' "); if (sWGCPTZBZ == "N") SQL.ParamByName("tWHSJCondition").Value = tWHSJCondition; SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID; DataSet dsBJDMX = dberp.OpenDataSet(SQL); for (int i = 0; i < dsBJDMX.Tables[0].Rows.Count; i++) { sBJDXHList = sBJDXHList + "," + dsBJDMX.Tables[0].Rows[i]["XLXSBJDMX_XH"].ToString().Trim(); } sBJDXHList = sBJDXHList.TrimStart(',').TrimEnd(','); #endregion if (!sBJDXHList.Equals("")) { #region 完成报价更新 if (sWGCPTZBZ == "N") XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCL, sCPBJMRXSWS, sBJDXHList, 0, false, false, false, "", tWHSJCondition); else XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCL, sCPBJMRXSWS, sBJDXHList, 0); #endregion #region 最低限价的更新 XLBJDUtils.UpdateZDXJGS(sBJDID, sBJFLID, GetOption("BJU002")); XLBJDUtils.UpdateJSJGS(sBJDID, sBJFLID, GetOption("BJU002")); #endregion #region 完成主表信息的更新 XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, sJCLLX, sLJJCL, PageParam.GetRTrimString("ZDXJJCLLX"), PageParam.GetRTrimString("JYF"), PageParam.GetRTrimString("YSJDID"), PageParam.GetRTrimString("GYSID"), PageParam.GetRTrimString("YFWLID"), PageParam.GetRTrimString("BJHYF")); } #endregion } 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", "颜色"); ColumnNames.Add("7", "报价产品"); ColumnNames.Add("8", "报价数量"); ColumnNames.Add("9", "表价"); ColumnNames.Add("10", "备注"); for (int i = 0; i < ColumnNames.Count; 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 } }