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_MODEL.Page; using GThinking.N_MISPRO.Utility; using GThinking.N_MISPRO; using GThinking.N_CONTROL; using GThinking.N_MISPRO.Data; using GThinking.N_WORKFLOW; using System.Text; using System.Collections.Generic; using GThinking.N_MISPRO.MISPROAS; namespace GThinking.N_XLXSBJ { public partial class XLJGB_BJZSDCList : SingleGridBase { XLJGB_BJZSDC entity = new XLJGB_BJZSDC(); XLJGB_BJZSDC_M queryentity = new XLJGB_BJZSDC_M(); Dictionary dicJGBTJYZ = new Dictionary(); //报价材料 Dictionary dicBJCL = new Dictionary(); Dictionary dicBJCL_Visible = new Dictionary(); Dictionary dicBJCL_WL = new Dictionary(); Dictionary dicCZBLMCL = new Dictionary(); //材料物料 Dictionary dicCLWL = new Dictionary(); Dictionary dicCLHQ = new Dictionary(); Dictionary dicWLHQ = new Dictionary(); #region Page_Load protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860001; this.UMName = "表价追溯导出"; this.CurMaster = Master; this.ModuleGV = grdXLJGBMX; this.CurEntity = entity; this.CurQueryEntity = queryentity; this.PageHeight = 600; this.PageWidth = 1000; this.sQueryURLTarget = "XLJGB_BJZSDCQuery.aspx"; base.DataKeyNames = new string[] { "XLXSJGBMX_XLXHID", "XLXSJGBMX_XLGGID", "XLXSJGBMX_XLBZID", "XLXSJGBMX_DYDJID", "XLXSJGBMX_XH" }; this.Master.EnableNewBtn = false; this.Master.EnableCopyBtn = false; this.Master.EnableViewBtn = false; this.Master.EnableEditBtn = false; this.Master.EnableDeleteBtn = false; this.Master.EnableAttachBtn = false; if (!IsPostBack) { CurQueryEntity.FieldByName("ZSBJZC").Value = "True"; CurQueryEntity.FieldByName("HSBZ").Value = "True"; CurQueryEntity.FieldByName("XSCLCB").Value = "True"; CurQueryEntity.FieldByName("ZSJJZC").Value = "True"; } base.InitPage(); this.ModuleGV.OnClientDblClick = "return false;"; if (!IsPostBack) { Master_OnStandardQuery(null, null); } } #endregion #region 模板继承事件 protected override void Master_OnStandardQuery(object sender, EventArgs e) { base.InitEntityByCondition(); entity.EntityTable.QuerySelSql = "select top 1 XLXSJGBMX_JGBID from XLXSJGBMX where 1<>1"; base.Master_OnStandardQuery(sender, e); DataSet ds = GetSQLDataSet(); entity.GridDataBind(grdXLJGBMX, tSession); entity.GridDataBind(grdXLJGBMX, ds.Tables[0], ds.Tables[0].Rows.Count); grdXLJGBMX.DataSource = ds; } protected override void moduleGV_PageIndexChanging(object sender, GridViewPageEventArgs e) { base.InitEntityByCondition(); entity.EntityTable.QuerySelSql = "select top 1 XLXSJGBMX_JGBID from XLXSJGBMX where 1<>1"; grdXLJGBMX.SelectedIndex = -1; base.moduleGV_PageIndexChanging(sender, e); DataSet ds = GetSQLDataSet(); entity.GridDataBind(grdXLJGBMX, tSession); entity.GridDataBind(grdXLJGBMX, ds.Tables[0], ds.Tables[0].Rows.Count); grdXLJGBMX.DataSource = ds; } protected override void ReportRecordSetAdd() { DataSet ds = GetSQLDataSet(); AddUserReportDataSet("CX_XLXSJGBMX_BJZS", ds); base.ReportRecordSetAdd(); } protected override void ReportDataSetAdd() { DataSet ds = GetSQLDataSet(); for (int i = 0; i < grdXLJGBMX.Columns.Count; i++) { string sDataField = ((System.Web.UI.WebControls.BoundField)(grdXLJGBMX.Columns[i])).DataField.ToString().Trim(); string sHeaderText = grdXLJGBMX.Columns[i].HeaderText; AddUserReportField("CX_XLXSJGBMX_BJZS", sDataField, sHeaderText, "S"); } base.ReportDataSetAdd(); } #endregion #region 自定义事件 private DataSet GetSQLDataSet() { Mac.MacLog.TraceFormat(String.Format("GetSQLDataSet-Begin")); bool bXSCLCB = false; if (CurQueryEntity.FieldByName("XSCLCB").Value == "True") { bXSCLCB = true; } while (grdXLJGBMX.Columns.Count > 5) { grdXLJGBMX.Columns.RemoveAt(grdXLJGBMX.Columns.Count - 1); } DataTable dt1 = new DataTable(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); Dictionary DicJGYWLID = new Dictionary(); #region 物料加工原物料ID TSQL sql = new TSQL(dberp); sql.Clear(); sql.Add(" select XLXSBJCLWL_WLID,XLXSBJCLWL_JGYWLID "); sql.Add(" from XLXSBJCLWL "); sql.Add(" where XLXSBJCLWL_JGYWLID <> '-' "); DataSet dsWLJGYWL = dberp.OpenDataSet(sql); if (dsWLJGYWL.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsWLJGYWL.Tables[0].Rows) { string sWLID = trow["XLXSBJCLWL_WLID"].ToString().Trim(); string sJGYWLID = trow["XLXSBJCLWL_JGYWLID"].ToString().Trim(); if (!DicJGYWLID.ContainsKey(sWLID)) { DicJGYWLID.Add(sWLID, sJGYWLID); } } } #endregion TSQL SQL = new TSQL(dberp); StringBuilder strSQL = new StringBuilder(); strSQL.AppendLine(" select XLXSJGBMX_JGBID,XLXSJGBMX_XH, XLXSJGBMX_XLXHID, XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID, rtrim(XLXSJGBMX_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC) as XLBZ,XLXSJGBMX_DYDJID,"); dt1.Columns.Add("XLXSJGBMX_JGBID", typeof(string)); dt1.Columns.Add("XLXSJGBMX_XH", typeof(double)); dt1.Columns.Add("XLXSJGBMX_XLXHID", typeof(string)); dt1.Columns.Add("XLXSJGBMX_XLGGID", typeof(string)); dt1.Columns.Add("XLXSJGBMX_XLBZID", typeof(string)); dt1.Columns.Add("XLBZ", typeof(string)); dt1.Columns.Add("XLXSJGBMX_DYDJID", typeof(string)); dt1.Columns.Add("XLXSJGBMX_JJ", typeof(double)); bool bHSBZ = CurQueryEntity.FieldByName("HSBZ").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bHSBZ) { strSQL.AppendLine(" XLXSJGBMX_HSJJ as XLXSJGBMX_JJ"); AddColumn("XLXSJGBMX_JJ", "含税基价", CMISproConvert.StrToInt(GetOption("BJU002"), 5), 80); } else { strSQL.AppendLine(" XLXSJGBMX_WSJJ as XLXSJGBMX_JJ"); AddColumn("XLXSJGBMX_JJ", "无税基价", CMISproConvert.StrToInt(GetOption("BJU002"), 5), 80); } bool bZSBJZC = CurQueryEntity.FieldByName("ZSBJZC").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSBJZC) { strSQL.AppendLine(",XLXSJGBYZZ0_YZZ01 as TZYZ_JZ01 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ02 as TZYZ_JZ02 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ03 as TZYZ_JZ03 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ04 as TZYZ_JZ04 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ05 as TZYZ_JZ05 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ06 as TZYZ_JZ06 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ07 as TZYZ_JZ07 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ08 as TZYZ_JZ08 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ09 as TZYZ_JZ09 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ10 as TZYZ_JZ10 "); dt1.Columns.Add("TZYZ_JZ01", typeof(double)); dt1.Columns.Add("TZYZ_JZ02", typeof(double)); dt1.Columns.Add("TZYZ_JZ03", typeof(double)); dt1.Columns.Add("TZYZ_JZ04", typeof(double)); dt1.Columns.Add("TZYZ_JZ05", typeof(double)); dt1.Columns.Add("TZYZ_JZ06", typeof(double)); dt1.Columns.Add("TZYZ_JZ07", typeof(double)); dt1.Columns.Add("TZYZ_JZ08", typeof(double)); dt1.Columns.Add("TZYZ_JZ09", typeof(double)); dt1.Columns.Add("TZYZ_JZ10", typeof(double)); SQL.Clear(); SQL.Add("select XLXSTZYZ_YZID, XLXSTZYZ_YZMC,XLXSTZYZ_JJFS "); SQL.Add(" from XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH = 'JZJ' "); if (!PageParam.GetRTrimString("JGBID").Equals("")) { SQL.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID=:pJGBID and XLXSJGBYZ_YZID=XLXSTZYZ_YZID)");//必须是当前价格表所用的调价因子 SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID"); } SQL.Add(" order by XLXSTZYZ_XSXH,XLXSTZYZ_YZID "); DataSet ds = dberp.OpenDataSet(SQL); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string sJJFS = ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim(); string sJJ = sJJFS.Equals("JJ") ? "(元)" : (sJJFS.Equals("") ? "" : "(%)"); string sYZMC = ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim() + sJJ; string sYZID = "TZYZ_" + ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim(); int iDecimal = XLBJDUtils.JGBYZZDecimal; if (sJJFS.Equals("JJ")) iDecimal = CMISproConvert.StrToInt(GetOption("BJU002"), 2); AddColumn(sYZID, sYZMC, iDecimal, 80); } } dt1.Columns.Add("XLXSJGBMX_BJ", typeof(double)); if (bHSBZ) { strSQL.AppendLine(" ,XLXSJGBMX_HSBJ as XLXSJGBMX_BJ "); AddColumn("XLXSJGBMX_BJ", "含税表价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80); } else { strSQL.AppendLine(" ,XLXSJGBMX_WSBJ as XLXSJGBMX_BJ "); AddColumn("XLXSJGBMX_BJ", "无税表价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80); } bool bZSJJZC = CurQueryEntity.FieldByName("ZSJJZC").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSJJZC) { strSQL.AppendLine(" ,'" + GetOption("BJU003") + "' as JLDW "); dt1.Columns.Add("JLDW", typeof(string)); AddColumn("JLDW", "计量单位", 80); strSQL.AppendLine(" ,XLXSCLQD_CLZL,XLXSCLQD_JGCZBID "); dt1.Columns.Add("XLXSCLQD_CLZL", typeof(double)); AddColumn("XLXSCLQD_CLZL", "材料重量", 3, 80); int iDecimal = CMISproConvert.StrToInt(GetOption("BJU002"), 2); //构建物料信息字典 if (dicCLWL.Count <= 0) { SQL.Clear(); SQL.Add(" select WL_WLID,WL_MC,WL_GG "); SQL.Add(" from XLXSBJCLWL "); SQL.Add(" left join WL on XLXSBJCLWL_WLID = WL_WLID "); SQL.Add(" where 1=1 "); SQL.Add(" order by XLXSBJCLWL_WLID "); DataSet dsWL = dberp.OpenDataSet(SQL); foreach (DataRow wlRow in dsWL.Tables[0].Rows) { string sWLID = wlRow["WL_WLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); string sWLXX = wlRow["WL_MC"].ToString().Trim() + " " + wlRow["WL_GG"].ToString().Trim(); if (!dicCLWL.ContainsKey(sWLID)) { dicCLWL.Add(sWLID, sWLXX); } } } dicCLHQ.Clear(); SQL.Clear(); SQL.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_HSJG,XLXSCLHQ_WSJG from XLXSCLHQ where XLXSCLHQ_JGBID=:pJGBID "); SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID"); DataSet dsCLHQ = dberp.OpenDataSet(SQL); foreach (DataRow clhqRow in dsCLHQ.Tables[0].Rows) { string sBJCLID = clhqRow["XLXSCLHQ_BJCLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); double dHSJG = CMISproConvert.StrToFloat(clhqRow["XLXSCLHQ_HSJG"].ToString().Trim()); double dWSJG = CMISproConvert.StrToFloat(clhqRow["XLXSCLHQ_WSJG"].ToString().Trim()); if (!dicCLHQ.ContainsKey(sBJCLID)) { if (bHSBZ) dicCLHQ.Add(sBJCLID, dHSJG); else dicCLHQ.Add(sBJCLID, dWSJG); } } dicWLHQ.Clear(); if (XLJGB_CLJGTZList.NeedJGBJJFP()) { SQL.Clear(); SQL.Add(" select XLXSWLHQ_WLID,XLXSWLHQ_HSJG,XLXSWLHQ_WSJG from XLXSWLHQ where XLXSWLHQ_JGBID=:pJGBID "); SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID"); DataSet dsWLHQ = dberp.OpenDataSet(SQL); foreach (DataRow wlhqRow in dsWLHQ.Tables[0].Rows) { string sWLID = wlhqRow["XLXSWLHQ_WLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); double dHSJG = CMISproConvert.StrToFloat(wlhqRow["XLXSWLHQ_HSJG"].ToString().Trim()); double dWSJG = CMISproConvert.StrToFloat(wlhqRow["XLXSWLHQ_WSJG"].ToString().Trim()); if (!dicWLHQ.ContainsKey(sWLID)) { if (bHSBZ) dicWLHQ.Add(sWLID, dHSJG); else dicWLHQ.Add(sWLID, dWSJG); } } } if (dicWLHQ.Count <= 0) { SQL.Clear(); SQL.Add(" select XLXSWLHQ_WLID,XLXSWLHQ_HSJG,XLXSWLHQ_WSJG from XLXSWLHQ where 1=1 "); SQL.Add(" and XLXSWLHQ_JGBID=' '"); SQL.Add(" and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"); SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); DataSet dsWLHQ = dberp.OpenDataSet(SQL); foreach (DataRow wlhqRow in dsWLHQ.Tables[0].Rows) { string sWLID = wlhqRow["XLXSWLHQ_WLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); double dHSJG = CMISproConvert.StrToFloat(wlhqRow["XLXSWLHQ_HSJG"].ToString().Trim()); double dWSJG = CMISproConvert.StrToFloat(wlhqRow["XLXSWLHQ_WSJG"].ToString().Trim()); if (!dicWLHQ.ContainsKey(sWLID)) { if (bHSBZ) dicWLHQ.Add(sWLID, dHSJG); else dicWLHQ.Add(sWLID, dWSJG); } } } Mac.MacLog.TraceFormat(String.Format("if (dicBJCL_WL.Count <= 0)")); //构建包含物料的报价材料字典 if (dicBJCL_WL.Count <= 0) { Mac.MacLog.TraceFormat(String.Format("dicBJCL_WL-begin")); SQL.Clear(); SQL.Add(" select XLXSCLQD_JGCZBID,XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID, isnull(XLXSBJCL_BJHQ,'1') as BJHQ,XLXSBJCL_BJCLMC, "); SQL.Add(" case when isnull(XLXSBJCL_BJHQ,'1')='1' then isnull(XLJGCZBLM_BJCLID,' ') "); for (int i = 1; i <= 80; i++) { SQL.Add(string.Format(" when isnull(XLXSBJCL_BJHQ,'1')='2' and isnull(XLJGCZBLM_CLQDL,' ')='第{0}列' then isnull(XLXSCLQDWL_WLID{0},' ') ", i.ToString().PadLeft(2, '0').Trim())); } SQL.Add(" else ' ' end as CLID "); SQL.Add(" from XLXSJGBMX "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=isnull(XLXSJGBMX_DYDJID,' ') "); SQL.Add(" left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH "); SQL.Add(" left join XLJGCZBLM on XLJGCZBLM_JGCZBID=XLXSCLQD_JGCZBID and XLJGCZBLM_JGCZBBBID=XLXSCLQD_JGCZBBBID and isnull(XLJGCZBLM_CLQDL,' ')<>' ' "); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID "); SQL.Add(" where XLXSJGBMX_JGBID = :pJGBID "); SQL.Add(" order by XLXSJGBMX_XH "); SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID").Trim(); DataSet dsBJCL_WL = dberp.OpenDataSet(SQL); Mac.MacLog.TraceFormat(String.Format("dsBJCL_WL.Tables[0].Rows:" + dsBJCL_WL.Tables[0].Rows.Count.ToString().Trim())); foreach (DataRow bjclRow in dsBJCL_WL.Tables[0].Rows) { string sJGCZBID = bjclRow["XLXSCLQD_JGCZBID"].ToString().Trim(); string sCLQDL = bjclRow["XLJGCZBLM_CLQDL"].ToString().Trim(); sCLQDL = sCLQDL.Replace("第", "").Replace("列", ""); string sKey = sJGCZBID + "|" + sCLQDL; string sCLID = bjclRow["CLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); string sBJHQ = bjclRow["BJHQ"].ToString().Trim(); string sBJCLID = bjclRow["XLJGCZBLM_BJCLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); string sBJCLMC = bjclRow["XLXSBJCL_BJCLMC"].ToString().Trim(); if (!sBJCLID.Equals("")) { if (!dicBJCL.ContainsKey(sBJCLID)) { dicBJCL.Add(sBJCLID, sBJCLMC); } if (sBJHQ.Equals("2")) { sCLID = sBJCLID + "|" + sCLID; if (!dicBJCL_WL.ContainsKey(sBJCLID)) { dicBJCL_WL.Add(sBJCLID, sCLID); } } if (!dicCZBLMCL.ContainsKey(sKey)) { dicCZBLMCL.Add(sKey, sCLID); } } } Mac.MacLog.TraceFormat(String.Format("dicBJCL_WL-end")); } Mac.MacLog.TraceFormat(String.Format("dicCZBLMCL.Count:" + dicCZBLMCL.Count.ToString().Trim())); //报价材料是否显示 dicBJCL_Visible.Clear(); //构建报价材料字典和查询列 Mac.MacLog.TraceFormat(String.Format(" if (dicBJCL.Count :" + dicBJCL.Keys.Count.ToString().Trim())); if (dicBJCL.Count > 0) { foreach (string sBJCLID in dicBJCL.Keys) { dicBJCL_Visible.Add(sBJCLID, "N"); string sBJCLMC = dicBJCL[sBJCLID]; strSQL.AppendLine(" ,0 as " + sBJCLID + "_SL "); dt1.Columns.Add(sBJCLID + "_SL", typeof(string)); AddColumn(sBJCLID + "_SL", sBJCLMC, 6, 60); if (dicBJCL_WL.ContainsKey(sBJCLID)) { strSQL.AppendLine(" ,' ' as " + sBJCLID + "_WLXX "); strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLJG "); strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLCB "); dt1.Columns.Add(sBJCLID + "_WLXX", typeof(string)); dt1.Columns.Add(sBJCLID + "_WLJG", typeof(double)); dt1.Columns.Add(sBJCLID + "_WLCB", typeof(double)); AddColumn(sBJCLID + "_WLXX", "材料物料", 80); AddColumn(sBJCLID + "_WLJG", "物料价格(元/Kg)", XLBJDUtils.BJCLPriceDecimal, 60); if (bXSCLCB) AddColumn(sBJCLID + "_WLCB", "物料成本", iDecimal, 60); } else { strSQL.AppendLine(" ,' ' as " + sBJCLID + "_CLJG "); strSQL.AppendLine(" ,0 as " + sBJCLID + "_CLCB "); dt1.Columns.Add(sBJCLID + "_CLJG", typeof(double)); dt1.Columns.Add(sBJCLID + "_CLCB", typeof(double)); AddColumn(sBJCLID + "_CLJG", "材料价格(元/Kg)", XLBJDUtils.BJCLPriceDecimal, 60); if (bXSCLCB) AddColumn(sBJCLID + "_CLCB", "材料成本", iDecimal, 60); } } } for (int i = 1; i <= 80; i++) { strSQL.AppendLine(string.Format(" ,XLXSCLQD_SL{0} * (1+XLXSCLQD_SHL{0}/100) * XLXSCLQD_CLJGBL{0} as SL{0} ", i.ToString().PadLeft(2, '0').Trim())); } } Mac.MacLog.TraceFormat(String.Format(" if (dicBJCL.Count > 0)-end")); //栏目超限省略符号 strSQL.AppendLine(" ,'...' as LMCXSLF "); dt1.Columns.Add("LMCXSLF", typeof(string)); strSQL.AppendLine(" from XLXSJGBMX "); strSQL.AppendLine(" left join XLBZ on XLBZ_XLBZID = XLXSJGBMX_XLBZID "); if (bZSBJZC) { strSQL.AppendLine(" left join XLXSJGBYZZ0 on XLXSJGBYZZ0_JGBID=XLXSJGBMX_JGBID and XLXSJGBYZZ0_XH=XLXSJGBMX_XH "); } if (bZSJJZC) { strSQL.AppendLine(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=isnull(XLXSJGBMX_DYDJID,' ') "); } strSQL.AppendLine(" where 1=1 and XLXSJGBMX_JGBID = :pJGBID and XLXSJGBMX_SYXH = 0 "); strSQL.AppendLine(" order by XLXSJGBMX_XH "); SQL.Clear(); SQL.Add(strSQL.ToString().Trim()); SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID").Trim(); Mac.MacLog.TraceFormat(String.Format("dberp.OpenDataSet(SQL)")); DataSet dsQry = dberp.OpenDataSet(SQL); Mac.MacLog.TraceFormat(String.Format("dsQry.Tables[0].Rows.Count" + dsQry.Tables[0].Rows.Count.ToString().Trim())); int icount = 0; if (dsQry.Tables[0].Rows.Count > 0) { foreach (DataRow towQry in dsQry.Tables[0].Rows) { DataRow dtrow = dt1.NewRow(); dtrow["XLXSJGBMX_JGBID"] = towQry["XLXSJGBMX_JGBID"].ToString().Trim(); dtrow["XLXSJGBMX_XH"] = CMISproConvert.StrToFloat(towQry["XLXSJGBMX_XH"].ToString().Trim()); dtrow["XLXSJGBMX_XLXHID"] = towQry["XLXSJGBMX_XLXHID"].ToString().Trim(); dtrow["XLXSJGBMX_XLGGID"] = towQry["XLXSJGBMX_XLGGID"].ToString().Trim(); dtrow["XLXSJGBMX_XLBZID"] = towQry["XLXSJGBMX_XLBZID"].ToString().Trim(); dtrow["XLBZ"] = towQry["XLBZ"].ToString().Trim(); dtrow["XLXSJGBMX_DYDJID"] = towQry["XLXSJGBMX_DYDJID"].ToString().Trim(); dtrow["XLXSJGBMX_JJ"] = CMISproConvert.StrToFloat(towQry["XLXSJGBMX_JJ"].ToString().Trim()); dtrow["LMCXSLF"] = towQry["LMCXSLF"].ToString().Trim(); if (bZSBJZC) { dtrow["TZYZ_JZ01"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ01"].ToString().Trim()); dtrow["TZYZ_JZ02"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ02"].ToString().Trim()); dtrow["TZYZ_JZ03"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ03"].ToString().Trim()); dtrow["TZYZ_JZ04"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ04"].ToString().Trim()); dtrow["TZYZ_JZ05"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ05"].ToString().Trim()); dtrow["TZYZ_JZ06"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ06"].ToString().Trim()); dtrow["TZYZ_JZ07"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ07"].ToString().Trim()); dtrow["TZYZ_JZ08"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ08"].ToString().Trim()); dtrow["TZYZ_JZ09"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ09"].ToString().Trim()); dtrow["TZYZ_JZ10"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ10"].ToString().Trim()); } dtrow["XLXSJGBMX_BJ"] = CMISproConvert.StrToFloat(towQry["XLXSJGBMX_BJ"].ToString().Trim()); if (bZSJJZC) { dtrow["JLDW"] = towQry["JLDW"].ToString().Trim(); dtrow["XLXSCLQD_CLZL"] = CMISproConvert.StrToFloat(towQry["XLXSCLQD_CLZL"].ToString().Trim()); string sJGCZBID = towQry["XLXSCLQD_JGCZBID"].ToString().Trim(); for (int i = 1; i <= 80; i++) { icount++; string sLMH = i.ToString().PadLeft(2, '0').Trim(); string sKey = sJGCZBID + "|" + sLMH; if (dicCZBLMCL.ContainsKey(sKey)) { string sCLID = dicCZBLMCL[sKey]; double dYL = CMISproConvert.StrToFloat(towQry["SL" + sLMH].ToString().Trim()); if (sCLID.Contains("|")) { string sWLID = sCLID.Split('|')[1]; if (DicJGYWLID.ContainsKey(sWLID)) sWLID = DicJGYWLID[sWLID]; sCLID = sCLID.Split('|')[0]; if (dicBJCL.ContainsKey(sCLID)) { double dJG = 0; if (dicWLHQ.ContainsKey(sWLID)) dJG = dicWLHQ[sWLID]; if (dYL != 0) dicBJCL_Visible[sCLID] = "Y"; dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dYL;//相同栏目的用量要合并 if (dicCLWL.ContainsKey(sWLID)) { if (dtrow[sCLID + "_WLXX"].ToString().Trim().Equals("")) { dtrow[sCLID + "_WLXX"] = sWLID + "|" + dicCLWL[sWLID]; } else { if (!dtrow[sCLID + "_WLXX"].ToString().Trim().Contains(sWLID + "|" + dicCLWL[sWLID])) { dtrow[sCLID + "_WLXX"] = dtrow[sCLID + "_WLXX"].ToString().Trim() + "..."; } } } else { if (dtrow[sCLID + "_WLXX"].ToString().Trim().Equals("")) { dtrow[sCLID + "_WLXX"] = sWLID; } else { if (!dtrow[sCLID + "_WLXX"].ToString().Trim().Contains(sWLID) || (sWLID.Equals("") && !dtrow[sCLID + "_WLXX"].ToString().Trim().Equals(""))) { dtrow[sCLID + "_WLXX"] = dtrow[sCLID + "_WLXX"].ToString().Trim() + "..."; } } } if (dtrow[sCLID + "_WLXX"].ToString().EndsWith("...")) dtrow[sCLID + "_WLJG"] = 0; else dtrow[sCLID + "_WLJG"] = dJG; dtrow[sCLID + "_WLCB"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_WLCB"].ToString(), 0.0) + dJG * dYL; } } else { if (dicBJCL.ContainsKey(sCLID)) { double dJG = 0; if (dicCLHQ.ContainsKey(sCLID)) dJG = dicCLHQ[sCLID]; if (dYL != 0) dicBJCL_Visible[sCLID] = "Y"; dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dYL;//相同栏目的用量要合并 dtrow[sCLID + "_CLJG"] = dJG; dtrow[sCLID + "_CLCB"] = dJG * CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0); } } } } } dt1.Rows.Add(dtrow); } } Mac.MacLog.TraceFormat(String.Format("dicBJCL_Visible-begin:" + icount.ToString().Trim())); foreach (string sBJCLID in dicBJCL_Visible.Keys) { if (dicBJCL_Visible[sBJCLID].Equals("N"))//不显示的栏目需要删除,否则记录导出时会因为最大栏目数256的限制导致栏目导出不全 { grdXLJGBMX.Columns.Remove(grdXLJGBMX.FindColumnByFieldName(sBJCLID + "_SL")); if (dt1.Columns.Contains(sBJCLID + "_SL")) dt1.Columns.Remove(sBJCLID + "_SL"); if (dicBJCL_WL.ContainsKey(sBJCLID)) { grdXLJGBMX.Columns.Remove(grdXLJGBMX.FindColumnByFieldName(sBJCLID + "_WLXX")); grdXLJGBMX.Columns.Remove(grdXLJGBMX.FindColumnByFieldName(sBJCLID + "_WLJG")); grdXLJGBMX.Columns.Remove(grdXLJGBMX.FindColumnByFieldName(sBJCLID + "_WLCB")); if (dt1.Columns.Contains(sBJCLID + "_WLXX")) dt1.Columns.Remove(sBJCLID + "_WLXX"); if (dt1.Columns.Contains(sBJCLID + "_WLJG")) dt1.Columns.Remove(sBJCLID + "_WLJG"); if (dt1.Columns.Contains(sBJCLID + "_WLCB")) dt1.Columns.Remove(sBJCLID + "_WLCB"); } else { grdXLJGBMX.Columns.Remove(grdXLJGBMX.FindColumnByFieldName(sBJCLID + "_CLJG")); grdXLJGBMX.Columns.Remove(grdXLJGBMX.FindColumnByFieldName(sBJCLID + "_CLCB")); if (dt1.Columns.Contains(sBJCLID + "_CLJG")) dt1.Columns.Remove(sBJCLID + "_CLJG"); if (dt1.Columns.Contains(sBJCLID + "_CLCB")) dt1.Columns.Remove(sBJCLID + "_CLCB"); } } } Mac.MacLog.TraceFormat(String.Format("dicBJCL_Visible-end")); if (grdXLJGBMX.Columns.Count > 450) { for (int i = grdXLJGBMX.Columns.Count - 1; i >= 449; i--) { grdXLJGBMX.Columns.Remove(grdXLJGBMX.Columns[i]); } AddColumn("LMCXSLF", "...", 60, HorizontalAlign.Center); } DataSet dsResult = new DataSet(); dsResult.Tables.Add(dt1); Mac.MacLog.TraceFormat(String.Format("GetSQLDataSet-end")); return dsResult; } private void InitDic() { if (dicJGBTJYZ.Count > 0) return; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(" select XLXSTZYZ_YZID,XLXSTZYZ_YZMC from XLXSTZYZ where XLXSTZYZ_MXBH = 'JZJ' "); DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow trow in ds.Tables[0].Rows) { dicJGBTJYZ.Add(trow["XLXSTZYZ_YZID"].ToString().Trim(), trow["XLXSTZYZ_YZMC"].ToString().Trim()); } } } #endregion #region 控件事件 protected void btnRefresh_Click(object sender, EventArgs e) { int tmpIndex = grdXLJGBMX.SelectedIndex; moduleGV_PageIndexChanging(null, null); grdXLJGBMX.SelectedIndex = tmpIndex; } #region 导出数据 protected void btnSJDC_Click(object sender, EventArgs e) { Mac.MacLog.TraceFormat(String.Format("btnSJDC_Click-Begin")); base.InitEntityByCondition(); bool bXSCLCB = false; if (CurQueryEntity.FieldByName("XSCLCB").Value == "True") { bXSCLCB = true; } string sFileName = ""; sFileName = PageParam.GetRTrimString("JGBID") + "价格表表价"; string m_tmpFilePath = FileService.CombineTempPath(sFileName + ".xlsx"); Dictionary dicColumns = new Dictionary(); DataTable dt1 = new DataTable(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); Dictionary DicJGYWLID = new Dictionary(); #region 物料加工原物料ID TSQL sql = new TSQL(dberp); sql.Clear(); sql.Add(" select XLXSBJCLWL_WLID,XLXSBJCLWL_JGYWLID "); sql.Add(" from XLXSBJCLWL "); sql.Add(" where XLXSBJCLWL_JGYWLID <> '-' "); DataSet dsWLJGYWL = dberp.OpenDataSet(sql); if (dsWLJGYWL.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsWLJGYWL.Tables[0].Rows) { string sWLID = trow["XLXSBJCLWL_WLID"].ToString().Trim(); string sJGYWLID = trow["XLXSBJCLWL_JGYWLID"].ToString().Trim(); if (!DicJGYWLID.ContainsKey(sWLID)) { DicJGYWLID.Add(sWLID, sJGYWLID); } } } #endregion TSQL SQL = new TSQL(dberp); StringBuilder strSQL = new StringBuilder(); strSQL.AppendLine(" select XLXSJGBMX_JGBID,XLXSJGBMX_XH, XLXSJGBMX_XLXHID, XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID, rtrim(XLXSJGBMX_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC) as XLBZ,XLXSJGBMX_DYDJID,"); dt1.Columns.Add("XLXSJGBMX_JGBID", typeof(string)); dt1.Columns.Add("XLXSJGBMX_XH", typeof(double)); dicColumns.Add("XLXSJGBMX_XH", "序号"); dt1.Columns.Add("XLXSJGBMX_XLXHID", typeof(string)); dicColumns.Add("XLXSJGBMX_XLXHID", "型号"); dt1.Columns.Add("XLXSJGBMX_XLGGID", typeof(string)); dicColumns.Add("XLXSJGBMX_XLGGID", "规格"); dt1.Columns.Add("XLXSJGBMX_XLBZID", typeof(string)); dt1.Columns.Add("XLBZ", typeof(string)); dicColumns.Add("XLBZ", "标准"); dt1.Columns.Add("XLXSJGBMX_DYDJID", typeof(string)); dicColumns.Add("XLXSJGBMX_DYDJID", "电压等级"); dt1.Columns.Add("XLXSJGBMX_JJ", typeof(double)); bool bHSBZ = CurQueryEntity.FieldByName("HSBZ").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bHSBZ) { dicColumns.Add("XLXSJGBMX_JJ", "含税基价"); strSQL.AppendLine(" XLXSJGBMX_HSJJ as XLXSJGBMX_JJ"); } else { dicColumns.Add("XLXSJGBMX_JJ", "无税基价"); strSQL.AppendLine(" XLXSJGBMX_WSJJ as XLXSJGBMX_JJ"); } bool bZSBJZC = CurQueryEntity.FieldByName("ZSBJZC").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSBJZC) { strSQL.AppendLine(",XLXSJGBYZZ0_YZZ01 as TZYZ_JZ01 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ02 as TZYZ_JZ02 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ03 as TZYZ_JZ03 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ04 as TZYZ_JZ04 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ05 as TZYZ_JZ05 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ06 as TZYZ_JZ06 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ07 as TZYZ_JZ07 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ08 as TZYZ_JZ08 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ09 as TZYZ_JZ09 "); strSQL.AppendLine(",XLXSJGBYZZ0_YZZ10 as TZYZ_JZ10 "); dt1.Columns.Add("TZYZ_JZ01", typeof(double)); dt1.Columns.Add("TZYZ_JZ02", typeof(double)); dt1.Columns.Add("TZYZ_JZ03", typeof(double)); dt1.Columns.Add("TZYZ_JZ04", typeof(double)); dt1.Columns.Add("TZYZ_JZ05", typeof(double)); dt1.Columns.Add("TZYZ_JZ06", typeof(double)); dt1.Columns.Add("TZYZ_JZ07", typeof(double)); dt1.Columns.Add("TZYZ_JZ08", typeof(double)); dt1.Columns.Add("TZYZ_JZ09", typeof(double)); dt1.Columns.Add("TZYZ_JZ10", typeof(double)); SQL.Clear(); SQL.Add("select XLXSTZYZ_YZID, XLXSTZYZ_YZMC,XLXSTZYZ_JJFS "); SQL.Add(" from XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH = 'JZJ' "); if (!PageParam.GetRTrimString("JGBID").Equals("")) { SQL.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID=:pJGBID and XLXSJGBYZ_YZID=XLXSTZYZ_YZID)");//必须是当前价格表所用的调价因子 SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID"); } SQL.Add(" order by XLXSTZYZ_XSXH,XLXSTZYZ_YZID "); DataSet ds = dberp.OpenDataSet(SQL); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string sJJFS = ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim(); string sJJ = sJJFS.Equals("JJ") ? "(元)" : (sJJFS.Equals("") ? "" : "(%)"); string sYZMC = ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim() + sJJ; string sYZID = "TZYZ_" + ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim(); int iDecimal = XLBJDUtils.JGBYZZDecimal; dicColumns.Add(sYZID, sYZMC); } } dt1.Columns.Add("XLXSJGBMX_BJ", typeof(double)); if (bHSBZ) { dicColumns.Add("XLXSJGBMX_BJ", "含税表价"); strSQL.AppendLine(" ,XLXSJGBMX_HSBJ as XLXSJGBMX_BJ "); } else { dicColumns.Add("XLXSJGBMX_BJ", "无税表价"); strSQL.AppendLine(" ,XLXSJGBMX_WSBJ as XLXSJGBMX_BJ "); } bool bZSJJZC = CurQueryEntity.FieldByName("ZSJJZC").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSJJZC) { strSQL.AppendLine(" ,'" + GetOption("BJU003") + "' as JLDW "); dt1.Columns.Add("JLDW", typeof(string)); dicColumns.Add("JLDW", "计量单位"); strSQL.AppendLine(" ,XLXSCLQD_CLZL,XLXSCLQD_JGCZBID "); dt1.Columns.Add("XLXSCLQD_CLZL", typeof(double)); dicColumns.Add("XLXSCLQD_CLZL", "材料重量"); int iDecimal = CMISproConvert.StrToInt(GetOption("BJU002"), 2); //构建物料信息字典 if (dicCLWL.Count <= 0) { SQL.Clear(); SQL.Add(" select WL_WLID,WL_MC,WL_GG "); SQL.Add(" from XLXSBJCLWL "); SQL.Add(" left join WL on XLXSBJCLWL_WLID = WL_WLID "); SQL.Add(" where 1=1 "); SQL.Add(" order by XLXSBJCLWL_WLID "); DataSet dsWL = dberp.OpenDataSet(SQL); foreach (DataRow wlRow in dsWL.Tables[0].Rows) { string sWLID = wlRow["WL_WLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); string sWLXX = wlRow["WL_MC"].ToString().Trim() + " " + wlRow["WL_GG"].ToString().Trim(); if (!dicCLWL.ContainsKey(sWLID)) { dicCLWL.Add(sWLID, sWLXX); } } } dicCLHQ.Clear(); SQL.Clear(); SQL.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_HSJG,XLXSCLHQ_WSJG from XLXSCLHQ where XLXSCLHQ_JGBID=:pJGBID "); SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID"); DataSet dsCLHQ = dberp.OpenDataSet(SQL); foreach (DataRow clhqRow in dsCLHQ.Tables[0].Rows) { string sBJCLID = clhqRow["XLXSCLHQ_BJCLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); double dHSJG = CMISproConvert.StrToFloat(clhqRow["XLXSCLHQ_HSJG"].ToString().Trim()); double dWSJG = CMISproConvert.StrToFloat(clhqRow["XLXSCLHQ_WSJG"].ToString().Trim()); if (!dicCLHQ.ContainsKey(sBJCLID)) { if (bHSBZ) dicCLHQ.Add(sBJCLID, dHSJG); else dicCLHQ.Add(sBJCLID, dWSJG); } } dicWLHQ.Clear(); if (XLJGB_CLJGTZList.NeedJGBJJFP()) { SQL.Clear(); SQL.Add(" select XLXSWLHQ_WLID,XLXSWLHQ_HSJG,XLXSWLHQ_WSJG from XLXSWLHQ where XLXSWLHQ_JGBID=:pJGBID "); SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID"); DataSet dsWLHQ = dberp.OpenDataSet(SQL); foreach (DataRow wlhqRow in dsWLHQ.Tables[0].Rows) { string sWLID = wlhqRow["XLXSWLHQ_WLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); double dHSJG = CMISproConvert.StrToFloat(wlhqRow["XLXSWLHQ_HSJG"].ToString().Trim()); double dWSJG = CMISproConvert.StrToFloat(wlhqRow["XLXSWLHQ_WSJG"].ToString().Trim()); if (!dicWLHQ.ContainsKey(sWLID)) { if (bHSBZ) dicWLHQ.Add(sWLID, dHSJG); else dicWLHQ.Add(sWLID, dWSJG); } } } if (dicWLHQ.Count <= 0) { SQL.Clear(); SQL.Add(" select XLXSWLHQ_WLID,XLXSWLHQ_HSJG,XLXSWLHQ_WSJG from XLXSWLHQ where 1=1 "); SQL.Add(" and XLXSWLHQ_JGBID=' '"); SQL.Add(" and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"); SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); DataSet dsWLHQ = dberp.OpenDataSet(SQL); foreach (DataRow wlhqRow in dsWLHQ.Tables[0].Rows) { string sWLID = wlhqRow["XLXSWLHQ_WLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); double dHSJG = CMISproConvert.StrToFloat(wlhqRow["XLXSWLHQ_HSJG"].ToString().Trim()); double dWSJG = CMISproConvert.StrToFloat(wlhqRow["XLXSWLHQ_WSJG"].ToString().Trim()); if (!dicWLHQ.ContainsKey(sWLID)) { if (bHSBZ) dicWLHQ.Add(sWLID, dHSJG); else dicWLHQ.Add(sWLID, dWSJG); } } } Mac.MacLog.TraceFormat(String.Format("if (dicBJCL_WL.Count <= 0)")); //构建包含物料的报价材料字典 if (dicBJCL_WL.Count <= 0) { Mac.MacLog.TraceFormat(String.Format("dicBJCL_WL-begin")); SQL.Clear(); SQL.Add(" select XLXSCLQD_JGCZBID,XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID, isnull(XLXSBJCL_BJHQ,'1') as BJHQ,XLXSBJCL_BJCLMC, "); SQL.Add(" case when isnull(XLXSBJCL_BJHQ,'1')='1' then isnull(XLJGCZBLM_BJCLID,' ') "); for (int i = 1; i <= 80; i++) { SQL.Add(string.Format(" when isnull(XLXSBJCL_BJHQ,'1')='2' and isnull(XLJGCZBLM_CLQDL,' ')='第{0}列' then isnull(XLXSCLQDWL_WLID{0},' ') ", i.ToString().PadLeft(2, '0').Trim())); } SQL.Add(" else ' ' end as CLID "); SQL.Add(" from XLXSJGBMX "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=isnull(XLXSJGBMX_DYDJID,' ') "); SQL.Add(" left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH "); SQL.Add(" left join XLJGCZBLM on XLJGCZBLM_JGCZBID=XLXSCLQD_JGCZBID and XLJGCZBLM_JGCZBBBID=XLXSCLQD_JGCZBBBID and isnull(XLJGCZBLM_CLQDL,' ')<>' ' "); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID "); SQL.Add(" where XLXSJGBMX_JGBID = :pJGBID "); SQL.Add(" order by XLXSJGBMX_XH "); SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID").Trim(); DataSet dsBJCL_WL = dberp.OpenDataSet(SQL); Mac.MacLog.TraceFormat(String.Format("dsBJCL_WL.Tables[0].Rows:" + dsBJCL_WL.Tables[0].Rows.Count.ToString().Trim())); foreach (DataRow bjclRow in dsBJCL_WL.Tables[0].Rows) { string sJGCZBID = bjclRow["XLXSCLQD_JGCZBID"].ToString().Trim(); string sCLQDL = bjclRow["XLJGCZBLM_CLQDL"].ToString().Trim(); sCLQDL = sCLQDL.Replace("第", "").Replace("列", ""); string sKey = sJGCZBID + "|" + sCLQDL; string sCLID = bjclRow["CLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); string sBJHQ = bjclRow["BJHQ"].ToString().Trim(); string sBJCLID = bjclRow["XLJGCZBLM_BJCLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); string sBJCLMC = bjclRow["XLXSBJCL_BJCLMC"].ToString().Trim(); if (!sBJCLID.Equals("")) { if (!dicBJCL.ContainsKey(sBJCLID)) { dicBJCL.Add(sBJCLID, sBJCLMC); } if (sBJHQ.Equals("2")) { sCLID = sBJCLID + "|" + sCLID; if (!dicBJCL_WL.ContainsKey(sBJCLID)) { dicBJCL_WL.Add(sBJCLID, sCLID); } } if (!dicCZBLMCL.ContainsKey(sKey)) { dicCZBLMCL.Add(sKey, sCLID); } } } Mac.MacLog.TraceFormat(String.Format("dicBJCL_WL-end")); } //报价材料是否显示 dicBJCL_Visible.Clear(); //构建报价材料字典和查询列 Mac.MacLog.TraceFormat(String.Format(" if (dicBJCL.Count :" + dicBJCL.Keys.Count.ToString().Trim())); if (dicBJCL.Count > 0) { foreach (string sBJCLID in dicBJCL.Keys) { dicBJCL_Visible.Add(sBJCLID, "N"); string sBJCLMC = dicBJCL[sBJCLID]; strSQL.AppendLine(" ,0 as " + sBJCLID + "_SL "); dt1.Columns.Add(sBJCLID + "_SL", typeof(string)); dicColumns.Add(sBJCLID + "_SL", sBJCLMC); if (dicBJCL_WL.ContainsKey(sBJCLID)) { strSQL.AppendLine(" ,' ' as " + sBJCLID + "_WLXX "); strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLJG "); strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLCB "); dt1.Columns.Add(sBJCLID + "_WLXX", typeof(string)); dt1.Columns.Add(sBJCLID + "_WLJG", typeof(double)); dt1.Columns.Add(sBJCLID + "_WLCB", typeof(double)); dicColumns.Add(sBJCLID + "_WLXX", "材料物料"); dicColumns.Add(sBJCLID + "_WLJG", "物料价格(元/Kg)"); if (bXSCLCB) dicColumns.Add(sBJCLID + "_WLCB", "物料成本"); } else { strSQL.AppendLine(" ,' ' as " + sBJCLID + "_CLJG "); strSQL.AppendLine(" ,0 as " + sBJCLID + "_CLCB "); dt1.Columns.Add(sBJCLID + "_CLJG", typeof(double)); dt1.Columns.Add(sBJCLID + "_CLCB", typeof(double)); dicColumns.Add(sBJCLID + "_CLJG", "材料价格(元/Kg)"); if (bXSCLCB) dicColumns.Add(sBJCLID + "_CLCB", "材料成本"); } } } for (int i = 1; i <= 80; i++) { strSQL.AppendLine(string.Format(" ,XLXSCLQD_SL{0} * (1+XLXSCLQD_SHL{0}/100) * XLXSCLQD_CLJGBL{0} as SL{0} ", i.ToString().PadLeft(2, '0').Trim())); } } Mac.MacLog.TraceFormat(String.Format(" if (dicBJCL.Count > 0)-end")); strSQL.AppendLine(" from XLXSJGBMX "); strSQL.AppendLine(" left join XLBZ on XLBZ_XLBZID = XLXSJGBMX_XLBZID "); if (bZSBJZC) { strSQL.AppendLine(" left join XLXSJGBYZZ0 on XLXSJGBYZZ0_JGBID=XLXSJGBMX_JGBID and XLXSJGBYZZ0_XH=XLXSJGBMX_XH "); } if (bZSJJZC) { strSQL.AppendLine(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=isnull(XLXSJGBMX_DYDJID,' ') "); } strSQL.AppendLine(" where 1=1 and XLXSJGBMX_JGBID = :pJGBID and XLXSJGBMX_SYXH = 0 "); strSQL.AppendLine(" order by XLXSJGBMX_XH "); SQL.Clear(); SQL.Add(strSQL.ToString().Trim()); SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID").Trim(); Mac.MacLog.TraceFormat(String.Format("dberp.OpenDataSet(SQL)")); DataSet dsQry = dberp.OpenDataSet(SQL); Mac.MacLog.TraceFormat(String.Format("dsQry.Tables[0].Rows.Count" + dsQry.Tables[0].Rows.Count.ToString().Trim())); if (dsQry.Tables[0].Rows.Count > 0) { foreach (DataRow towQry in dsQry.Tables[0].Rows) { DataRow dtrow = dt1.NewRow(); dtrow["XLXSJGBMX_JGBID"] = towQry["XLXSJGBMX_JGBID"].ToString().Trim(); dtrow["XLXSJGBMX_XH"] = CMISproConvert.StrToFloat(towQry["XLXSJGBMX_XH"].ToString().Trim()); dtrow["XLXSJGBMX_XLXHID"] = towQry["XLXSJGBMX_XLXHID"].ToString().Trim(); dtrow["XLXSJGBMX_XLGGID"] = towQry["XLXSJGBMX_XLGGID"].ToString().Trim(); dtrow["XLXSJGBMX_XLBZID"] = towQry["XLXSJGBMX_XLBZID"].ToString().Trim(); dtrow["XLBZ"] = towQry["XLBZ"].ToString().Trim(); dtrow["XLXSJGBMX_DYDJID"] = towQry["XLXSJGBMX_DYDJID"].ToString().Trim(); dtrow["XLXSJGBMX_JJ"] = CMISproConvert.StrToFloat(towQry["XLXSJGBMX_JJ"].ToString().Trim()); if (bZSBJZC) { dtrow["TZYZ_JZ01"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ01"].ToString().Trim()); dtrow["TZYZ_JZ02"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ02"].ToString().Trim()); dtrow["TZYZ_JZ03"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ03"].ToString().Trim()); dtrow["TZYZ_JZ04"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ04"].ToString().Trim()); dtrow["TZYZ_JZ05"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ05"].ToString().Trim()); dtrow["TZYZ_JZ06"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ06"].ToString().Trim()); dtrow["TZYZ_JZ07"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ07"].ToString().Trim()); dtrow["TZYZ_JZ08"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ08"].ToString().Trim()); dtrow["TZYZ_JZ09"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ09"].ToString().Trim()); dtrow["TZYZ_JZ10"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ10"].ToString().Trim()); } dtrow["XLXSJGBMX_BJ"] = CMISproConvert.StrToFloat(towQry["XLXSJGBMX_BJ"].ToString().Trim()); if (bZSJJZC) { dtrow["JLDW"] = towQry["JLDW"].ToString().Trim(); dtrow["XLXSCLQD_CLZL"] = CMISproConvert.StrToFloat(towQry["XLXSCLQD_CLZL"].ToString().Trim()); string sJGCZBID = towQry["XLXSCLQD_JGCZBID"].ToString().Trim(); for (int i = 1; i <= 80; i++) { string sLMH = i.ToString().PadLeft(2, '0').Trim(); string sKey = sJGCZBID + "|" + sLMH; if (dicCZBLMCL.ContainsKey(sKey)) { string sCLID = dicCZBLMCL[sKey]; double dYL = CMISproConvert.StrToFloat(towQry["SL" + sLMH].ToString().Trim()); if (sCLID.Contains("|")) { string sWLID = sCLID.Split('|')[1]; if (DicJGYWLID.ContainsKey(sWLID)) sWLID = DicJGYWLID[sWLID]; sCLID = sCLID.Split('|')[0]; if (dicBJCL.ContainsKey(sCLID)) { double dJG = 0; if (dicWLHQ.ContainsKey(sWLID)) dJG = dicWLHQ[sWLID]; if (dYL != 0) dicBJCL_Visible[sCLID] = "Y"; dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dYL;//相同栏目的用量要合并 if (dicCLWL.ContainsKey(sWLID)) { if (dtrow[sCLID + "_WLXX"].ToString().Trim().Equals("")) { dtrow[sCLID + "_WLXX"] = sWLID + "|" + dicCLWL[sWLID]; } else { if (!dtrow[sCLID + "_WLXX"].ToString().Trim().Contains(sWLID + "|" + dicCLWL[sWLID])) { dtrow[sCLID + "_WLXX"] = dtrow[sCLID + "_WLXX"].ToString().Trim() + "..."; } } } else { if (dtrow[sCLID + "_WLXX"].ToString().Trim().Equals("")) { dtrow[sCLID + "_WLXX"] = sWLID; } else { if (!dtrow[sCLID + "_WLXX"].ToString().Trim().Contains(sWLID) || (sWLID.Equals("") && !dtrow[sCLID + "_WLXX"].ToString().Trim().Equals(""))) { dtrow[sCLID + "_WLXX"] = dtrow[sCLID + "_WLXX"].ToString().Trim() + "..."; } } } if (dtrow[sCLID + "_WLXX"].ToString().EndsWith("...")) dtrow[sCLID + "_WLJG"] = 0; else dtrow[sCLID + "_WLJG"] = dJG; dtrow[sCLID + "_WLCB"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_WLCB"].ToString(), 0.0) + dJG * dYL; } } else { if (dicBJCL.ContainsKey(sCLID)) { double dJG = 0; if (dicCLHQ.ContainsKey(sCLID)) dJG = dicCLHQ[sCLID]; if (dYL != 0) dicBJCL_Visible[sCLID] = "Y"; dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dYL;//相同栏目的用量要合并 dtrow[sCLID + "_CLJG"] = dJG; dtrow[sCLID + "_CLCB"] = dJG * CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0); } } } } } dt1.Rows.Add(dtrow); } } Mac.MacLog.TraceFormat(String.Format("dicBJCL_Visible-begin")); foreach (string sBJCLID in dicBJCL_Visible.Keys) { if (dicBJCL_Visible[sBJCLID].Equals("N"))//不显示的栏目需要删除,否则记录导出时会因为最大栏目数256的限制导致栏目导出不全 { dicColumns.Remove(sBJCLID + "_SL"); if (dt1.Columns.Contains(sBJCLID + "_SL")) dt1.Columns.Remove(sBJCLID + "_SL"); if (dicBJCL_WL.ContainsKey(sBJCLID)) { dicColumns.Remove(sBJCLID + "_WLXX"); dicColumns.Remove(sBJCLID + "_WLJG"); dicColumns.Remove(sBJCLID + "_WLCB"); if (dt1.Columns.Contains(sBJCLID + "_WLXX")) dt1.Columns.Remove(sBJCLID + "_WLXX"); if (dt1.Columns.Contains(sBJCLID + "_WLJG")) dt1.Columns.Remove(sBJCLID + "_WLJG"); if (dt1.Columns.Contains(sBJCLID + "_WLCB")) dt1.Columns.Remove(sBJCLID + "_WLCB"); } else { dicColumns.Remove(sBJCLID + "_CLJG"); dicColumns.Remove(sBJCLID + "_CLCB"); if (dt1.Columns.Contains(sBJCLID + "_CLJG")) dt1.Columns.Remove(sBJCLID + "_CLJG"); if (dt1.Columns.Contains(sBJCLID + "_CLCB")) dt1.Columns.Remove(sBJCLID + "_CLCB"); } } } Mac.MacLog.TraceFormat(String.Format("dicBJCL_Visible-end")); if (grdXLJGBMX.Columns.Count > 450) { for (int i = grdXLJGBMX.Columns.Count - 1; i >= 449; i--) { grdXLJGBMX.Columns.Remove(grdXLJGBMX.Columns[i]); } AddColumn("LMCXSLF", "...", 60, HorizontalAlign.Center); } DataSet dsResult = new DataSet(); dsResult.Tables.Add(dt1); Mac.MacLog.TraceFormat(String.Format("dsResult.Tables.Add")); string sColName = ""; //循环列名,进行赋值 for (int i = 0; i < dsResult.Tables[0].Columns.Count; i++) { if (dicColumns.ContainsKey(dsResult.Tables[0].Columns[i].ColumnName)) { sColName = dsResult.Tables[0].Columns[i].ColumnName; dsResult.Tables[0].Columns[i].Caption = "待处理列&_" + dicColumns[sColName]; } } //循环,删除列 for (int i = dsResult.Tables[0].Columns.Count - 1; i >= 0; i--) { if (dsResult.Tables[0].Columns[i].Caption.StartsWith("待处理列&_")) { dsResult.Tables[0].Columns[i].Caption = dsResult.Tables[0].Columns[i].Caption.Replace("待处理列&_", ""); } else { dsResult.Tables[0].Columns.RemoveAt(i); } } Mac.MacLog.TraceFormat(String.Format("dsResult.Tables[0].Rows.Count:" + dsResult.Tables[0].Rows.Count.ToString().Trim())); if (dsResult.Tables[0].Rows.Count > 0) { string smessage = ""; string sLet = ""; // NpoiSheetData sd = new NpoiSheetData(); sd.ColumnStyle = new System.Collections.Generic.Dictionary(); NpoiColumnStyle ct = new NpoiColumnStyle(); ct.DataFormat = "@"; sd.ColumnStyle.Add("B", ct); sd.ColumnType = new System.Collections.Generic.Dictionary(); string sCellStr = ""; string sCellStrBJ = GetBJJSGS(PageParam.GetRTrimString("JGBID")); if (!bZSBJZC) sCellStrBJ = ""; string sJJLM = ""; string sBJLM = ""; Dictionary sCLJGCellIndexs = new Dictionary(); List CellIndexsList = new List(); for (int k = 0; k < dicColumns.Count; k++) { if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("XLXSJGBMX_XH")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); } else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("XLXSJGBMX_JJ")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); sJJLM = GetLMZF(k + 1); } else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("XLXSJGBMX_BJ")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); sBJLM = GetLMZF(k + 1); } else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("TZYZ_JZ"))//因子值要设为数值型 { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); string sYZNAME = dsResult.Tables[0].Columns[k].ColumnName; sYZNAME = sYZNAME.Replace("TZYZ_", ""); sCellStrBJ = sCellStrBJ.Replace(sYZNAME, GetLMZF(k + 1) + "row"); } else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("CLZL")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); } else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_SL")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); sCellStr += "+" + GetLMZF(k + 1) + "row"; } else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_WLJG")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); sCellStr += "*" + GetLMZF(k + 1) + "row"; } else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_WLCB")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); } else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_CLJG")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); sCellStr += "*" + GetLMZF(k + 1) + "row"; sCLJGCellIndexs.Add(k + 1, "1"); CellIndexsList.Add(k + 1); } else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_CLCB")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); } } Mac.MacLog.TraceFormat(String.Format("NpoiCellData cd = new NpoiCellData();")); NpoiCellData cd = new NpoiCellData(); cd.CellFormula = new Dictionary(); if (!sCellStr.Equals("") || !sCellStrBJ.Equals("")) { for (int k = 0; k < dsResult.Tables[0].Rows.Count; k++) { int tk = k + 2; string sk = tk.ToString().Trim(); if (!sCellStr.Equals("")) { sCellStr = sCellStr.TrimStart('+'); string stCellStr = sCellStr.Replace("row", sk); cd.CellFormula.Add(sJJLM + sk, stCellStr); foreach (int cellIndex in CellIndexsList) { double dSL = CMISproConvert.StrToFloat(dsResult.Tables[0].Rows[k][cellIndex - 1].ToString(), 0); if (dSL == 0) continue; if (sCLJGCellIndexs[cellIndex].Equals("1")) { sCLJGCellIndexs[cellIndex] = sk; continue; } cd.CellFormula.Add(GetLMZF(cellIndex) + sk, GetLMZF(cellIndex) + sCLJGCellIndexs[cellIndex]); } } if (!sCellStrBJ.Equals("")) { if (!sCellStr.Equals("")) sCellStrBJ = sCellStrBJ.Replace("JGBJJ", "(" + sCellStr + ")"); else sCellStrBJ = sCellStrBJ.Replace("JGBJJ", sJJLM + "row"); string stCellStrBJ = sCellStrBJ.Replace("row", sk); cd.CellFormula.Add(sBJLM + sk, stCellStrBJ); } } } Mac.MacLog.TraceFormat(String.Format("cd.CellFormula-end")); TExcelData.CreateExcel_XLSX_NPOI(m_tmpFilePath, dsResult, true, cd, sd, ref smessage); Mac.MacLog.TraceFormat(String.Format("CreateExcel_XLSX_NPOI-end")); if (smessage.Equals("")) { System.IO.FileInfo file = new System.IO.FileInfo(m_tmpFilePath); string URL = Page.ResolveClientUrl("~") + "/N_MODEL/Dialog/TempFileDownload.ashx?TempFileName=" + file.Name + "&FileName=" + sFileName + file.Extension; string jsript = @"var JLDCDiv = document.createElement('div');JLDCDiv.style.width=0;JLDCDiv.style.height=0;JLDCDiv.id = 'DivifrDownLoad';" + " var ele=document.documentElement||document.body;ele.appendChild(JLDCDiv);var iJLDCfrm = document.createElement('iframe');iJLDCfrm.id = 'iJLDCfrmDownLoad';iJLDCfrm.src = '" + URL + "';" + "iJLDCfrm.style.width = 0;iJLDCfrm.style.height = 0; JLDCDiv.appendChild(iJLDCfrm);"; AJAXRunScript(this, "OPENJLDC", jsript); } else { ShowMessage(smessage); } } else { ShowMessage("无记录可以导出!"); } Mac.MacLog.TraceFormat(String.Format("btnSJDC_Click-end")); } public static string GetLMZF(int i) { string sLMZF = ""; Dictionary sZF = new Dictionary(); sZF.Add(1, "A"); sZF.Add(2, "B"); sZF.Add(3, "C"); sZF.Add(4, "D"); sZF.Add(5, "E"); sZF.Add(6, "F"); sZF.Add(7, "G"); sZF.Add(8, "H"); sZF.Add(9, "I"); sZF.Add(10, "J"); sZF.Add(11, "K"); sZF.Add(12, "L"); sZF.Add(13, "M"); sZF.Add(14, "N"); sZF.Add(15, "O"); sZF.Add(16, "P"); sZF.Add(17, "Q"); sZF.Add(18, "R"); sZF.Add(19, "S"); sZF.Add(20, "T"); sZF.Add(21, "U"); sZF.Add(22, "V"); sZF.Add(23, "W"); sZF.Add(24, "X"); sZF.Add(25, "Y"); sZF.Add(26, "Z"); sZF.Add(0, ""); sZF.Add(-1, ""); int j = i / 26; int k = i % 26; if (k == 0) sLMZF = sZF[j - 1] + "Z"; else sLMZF = sZF[j] + sZF[k]; return sLMZF; } public static string GetBJJSGS(string sJGBID) { string sJSGS = ""; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select XLXSJGB_JSGS from XLXSJGB where XLXSJGB_JGBID=:pJGBID "); SQL.ParamByName("pJGBID").Value = sJGBID; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { sJSGS = ds.Tables[0].Rows[0]["XLXSJGB_JSGS"].ToString().Trim(); } if (sJSGS.Equals("")) { DataSet dsJGBYZ = new DataSet(); XLBJDUtils.GetdsJGBYZ_JGE(sJGBID, ref dsJGBYZ); Dictionary DicTJYZ = new Dictionary(); Dictionary DicJJFS = new Dictionary(); string sFistJJFS = ""; foreach (DataRow trow in dsJGBYZ.Tables[0].Rows) { string sTJYZ = trow["XLXSTZYZ_TJYZID"].ToString().Trim(); string sYZID = trow["XLXSJGBYZ_YZID"].ToString().Trim(); string sJJFS = trow["XLXSTZYZ_JJFS"].ToString().Trim(); if (sJJFS.Equals("SX")) return sJSGS; if (sFistJJFS.Equals("")) sFistJJFS = sJJFS; if (!DicJJFS.ContainsKey(sTJYZ)) DicJJFS.Add(sTJYZ, sJJFS); if (DicTJYZ.ContainsKey(sTJYZ)) { string sTJYZGS = DicTJYZ[sTJYZ] + "+" + sYZID; DicTJYZ[sTJYZ] = sTJYZGS; } else DicTJYZ.Add(sTJYZ, sYZID); } string sJDGS = ""; string sJJGS = ""; string sKDGS = ""; foreach (string sKey in DicTJYZ.Keys) { if (DicJJFS[sKey].Equals("JD")) { sJDGS += "*(1+(" + DicTJYZ[sKey] + ")/100.00)"; } else if (DicJJFS[sKey].Equals("JJ")) { sJJGS += "+" + DicTJYZ[sKey]; } else if (DicJJFS[sKey].Equals("KD")) { sKDGS += "/(1-(" + DicTJYZ[sKey] + ")/100.00)"; } } sJSGS = "JGBJJ"; if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { if (!sJJGS.Equals("")) { sJSGS += sJJGS; sJSGS = "(" + sJSGS + ")"; } if (!sJJGS.Equals("")) sJSGS += sJJGS; if (!sJDGS.Equals("")) sJSGS += sJDGS; if (!sKDGS.Equals("")) sJSGS += sKDGS; } else { if (!sJDGS.Equals("")) sJSGS += sJDGS; if (!sKDGS.Equals("")) sJSGS += sKDGS; if (!sJJGS.Equals("")) sJSGS += sJJGS; } } return sJSGS; } #endregion #endregion #region GridView增加列 /// /// 设置etCheckBox列的属性 /// /// /// /// /// private void AddColumn(string sDataField, string HeadText, int Width, TEditType CheckBox) { BoundField Column = new BoundField(); Column.DataField = sDataField; Column.HeaderText = HeadText; Column.ItemStyle.Width = (Unit)Width; Column.HeaderStyle.Width = (Unit)Width; grdXLJGBMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etCheckBox; grdXLJGBMX.ColumnsEx.Insert(0, ColumnEx); } /// /// 设置etString列的属性 /// /// /// /// private void AddColumn(string sDataField, string HeadText, int Width) { BoundField Column = new BoundField(); Column.DataField = sDataField; Column.HeaderText = HeadText; Column.ItemStyle.Width = (Unit)Width; Column.HeaderStyle.Width = (Unit)Width; grdXLJGBMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etString; ColumnEx.ShowHint = true; grdXLJGBMX.ColumnsEx.Insert(0, ColumnEx); } /// /// 设置etString列的属性 /// /// /// /// /// private void AddColumn(string sDataField, string HeadText, int Width, HorizontalAlign Align) { BoundField Column = new BoundField(); Column.DataField = sDataField; Column.HeaderText = HeadText; Column.ItemStyle.Width = (Unit)Width; Column.ItemStyle.HorizontalAlign = Align; Column.HeaderStyle.Width = (Unit)Width; grdXLJGBMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etString; ColumnEx.ShowHint = true; grdXLJGBMX.ColumnsEx.Insert(0, ColumnEx); } /// /// 设置etNumber列的属 /// /// /// /// /// private void AddColumn(string sDataField, string HeadText, int NumberDecimalPlace, int Width) { BoundField Column = new BoundField(); Column.DataField = sDataField; Column.HeaderText = HeadText; Column.ItemStyle.Width = (Unit)Width; Column.HeaderStyle.Width = (Unit)Width; Column.ItemStyle.HorizontalAlign = HorizontalAlign.Right; grdXLJGBMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etNumber; ColumnEx.ShowHint = true; ColumnEx.NumberDecimalPlace = NumberDecimalPlace; grdXLJGBMX.ColumnsEx.Insert(0, ColumnEx); } /// /// 设置etDateTime列的属性 /// /// /// /// /// private void AddColumn(string sDataField, string HeadText, TDateTimeEditKinds DateTimeKind) { BoundField Column = new BoundField(); Column.DataField = sDataField; Column.HeaderText = HeadText; Column.ItemStyle.Width = (Unit)(DateTimeKind == TDateTimeEditKinds.dtDateTime ? 125 : 72); Column.HeaderStyle.Width = (Unit)(DateTimeKind == TDateTimeEditKinds.dtDateTime ? 125 : 72); grdXLJGBMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etDateTime; ColumnEx.DateTimeEditKins = DateTimeKind; grdXLJGBMX.ColumnsEx.Insert(0, ColumnEx); } #endregion } }