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 XLBJD_CLCBInfo : SingleGridBase { XLBJD_CLCB entity = new XLBJD_CLCB(); XLBJD_CLCB_M queryentity = new XLBJD_CLCB_M(); Dictionary dicJGBTJYZ = new Dictionary(); //报价材料 Dictionary dicBJCL = new Dictionary(); Dictionary dicBJCL_Visible = new Dictionary(); Dictionary dicBJCL_WL = new Dictionary(); //材料物料 Dictionary dicCLWL = new Dictionary(); // IsTCP / IsLCP 静态缓存,避免循环内反复查库 private static readonly object _tcpLcpLock = new object(); private static Dictionary _tcpCache = new Dictionary(); private static Dictionary _lcpCache = new Dictionary(); #region Page_Load protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860010; this.UMName = "线缆销售报价单表价"; this.CurMaster = Master; this.ModuleGV = grdXLBJDMX; this.CurEntity = entity; this.CurQueryEntity = queryentity; this.PageHeight = 500; this.PageWidth = 700; this.sQueryURLTarget = "XLBJD_CLCBQuery.aspx"; base.DataKeyNames = new string[] { "XLXSBJDMX_XLXHID", "XLXSBJDMX_XLGGID", "XLXSBJDMX_XLBZID", "XLXSBJDMX_DYDJID", "XLXSBJDMX_XH", "XLXSBJDMX_JSYCBZ" }; 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("XSFBJYY").Value = "True"; CurQueryEntity.FieldByName("ZSBJZC").Value = "True"; CurQueryEntity.FieldByName("XSCLCB").Value = "True"; if (XLBJDUtils.IsJGEJGB(PageParam.GetRTrimString("JGBID"))) { CurQueryEntity.FieldByName("ISJGE").Value = "Y"; } else { CurQueryEntity.FieldByName("ISJGE").Value = "N"; } } base.InitPage(); this.ModuleGV.OnClientDblClick = "return false;"; if (!IsPostBack) { btnPLTJ.Visible = false; if (CMISproDataBase.ExistsRecord("DBERP",string.Format("select 1 from XLXSBJFL where XLXSBJFL_BJFLID='{0}' and XLXSBJFL_YXTZJGBYZ='Y' ", PageParam.GetRTrimString("BJFLID")))) btnPLTJ.Visible = true; Master_OnStandardQuery(null, null); } } #endregion #region 模板继承事件 protected override void Master_OnStandardQuery(object sender, EventArgs e) { base.InitEntityByCondition(); entity.EntityTable.QuerySelSql = "select top 1 XLXSBJDMX_BJDID from XLXSBJDMX where 1<>1"; base.Master_OnStandardQuery(sender, e); DataSet ds = GetSQLDataSet(); entity.GridDataBind(grdXLBJDMX, tSession); entity.GridDataBind(grdXLBJDMX, ds.Tables[0], ds.Tables[0].Rows.Count); grdXLBJDMX.DataSource = ds; } protected override void moduleGV_PageIndexChanging(object sender, GridViewPageEventArgs e) { base.InitEntityByCondition(); entity.EntityTable.QuerySelSql = "select top 1 XLXSBJDMX_BJDID from XLXSBJDMX where 1<>1"; grdXLBJDMX.SelectedIndex = -1; base.moduleGV_PageIndexChanging(sender, e); DataSet ds = GetSQLDataSet(); entity.GridDataBind(grdXLBJDMX, tSession); entity.GridDataBind(grdXLBJDMX, ds.Tables[0], ds.Tables[0].Rows.Count); grdXLBJDMX.DataSource = ds; } protected override void moduleGV_RowDataBound(object sender, GridViewRowEventArgs e) { InitDic(); if (e.Row.RowType == DataControlRowType.DataRow) { int indexFBJYY = grdXLBJDMX.Columns.IndexOf(grdXLBJDMX.FindColumnByFieldName("XLXSBJDMX_JSYCBZ"))+1; if (indexFBJYY >= 0) { if ((e.Row.Cells[indexFBJYY].Text.Trim() != "") && (e.Row.Cells[indexFBJYY].Text.Trim() != " ")) { e.Row.Cells[indexFBJYY].Text = XLBJD_FBJXQList.GetJSYCXQ(e.Row.Cells[indexFBJYY].Text.Trim(), dicJGBTJYZ); } } } base.moduleGV_RowDataBound(sender, e); } protected override void ReportRecordSetAdd() { DataSet ds = GetSQLDataSet(); AddUserReportDataSet("CX_XLXSBJDMX_CLCB", ds); base.ReportRecordSetAdd(); } protected override void ReportDataSetAdd() { DataSet ds = GetSQLDataSet(); for (int i = 0; i < grdXLBJDMX.Columns.Count; i++) { string sDataField = ((System.Web.UI.WebControls.BoundField)(grdXLBJDMX.Columns[i])).DataField.ToString().Trim(); string sHeaderText = grdXLBJDMX.Columns[i].HeaderText; AddUserReportField("CX_XLXSBJDMX_CLCB", sDataField, sHeaderText, "S"); } base.ReportDataSetAdd(); } #endregion #region 自定义事件 private DataSet GetSQLDataSet() { bool bXSCLCB = false; if (CurQueryEntity.FieldByName("XSCLCB").Value == "True") { bXSCLCB = true; } while (grdXLBJDMX.Columns.Count > 7) { grdXLBJDMX.Columns.RemoveAt(grdXLBJDMX.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 XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID, rtrim(XLXSBJDMX_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC) as XLBZ,XLXSBJDMX_DYDJID,"); strSQL.AppendLine(" XLXSBJDMX_XLYSID,rtrim(XLXSBJDMX_XLYSID)||'|'||rtrim(XLYSB_XLYSMC) as XLYS,XLXSBJDMX_BJCP,XLXSBJDMX_PWQDID,XLXSBJDMX_PWQDWLMC,XLXSBJDMX_PWQDMS,XLXSBJDMX_JLDW,XLXSBJDMX_BJSL,XLXSBJDMX_JGBJJ"); dt1.Columns.Add("XLXSBJDMX_BJDID", typeof(string)); dt1.Columns.Add("XLXSBJDMX_XH", typeof(double)); dt1.Columns.Add("XLXSBJDMX_XSSX", typeof(double)); dt1.Columns.Add("XLXSBJDMX_XLXHID", typeof(string)); dt1.Columns.Add("XLXSBJDMX_XLGGID", typeof(string)); dt1.Columns.Add("XLXSBJDMX_XLBZID", typeof(string)); dt1.Columns.Add("XLBZ", typeof(string)); dt1.Columns.Add("XLXSBJDMX_DYDJID", typeof(string)); dt1.Columns.Add("XLXSBJDMX_XLYSID", typeof(string)); dt1.Columns.Add("XLYS", typeof(string)); dt1.Columns.Add("XLXSBJDMX_BJCP", typeof(string)); XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860000); if (pzxx.XLXSBJPZ_XSPWQD == "Y") { dt1.Columns.Add("XLXSBJDMX_PWQDID", typeof(string)); dt1.Columns.Add("XLXSBJDMX_PWQDWLMC", typeof(string)); dt1.Columns.Add("XLXSBJDMX_PWQDMS", typeof(string)); AddColumn("XLXSBJDMX_PWQDID", "配网清单ID", 100); AddColumn("XLXSBJDMX_PWQDWLMC", "物料名称", 100); AddColumn("XLXSBJDMX_PWQDMS", "描述", 100); } dt1.Columns.Add("XLXSBJDMX_JGBJJ", typeof(double)); if (PageParam.GetRTrimString("HSBZ").Equals("Y")) { AddColumn("XLXSBJDMX_JGBJJ", "含税基价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80); } else { AddColumn("XLXSBJDMX_JGBJJ", "无税基价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80); } bool bZSBJZC = CurQueryEntity.FieldByName("ZSBJZC").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSBJZC) { strSQL.AppendLine(",round(XLXSBJDJJYZ_YZZ01*100*100/81.2655989526499/71.3980341706337,6) as SCRGF "); string sYZZFields_1 = ""; for (int i = 1; i <= 20; i++) { sYZZFields_1 += ",XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + " as TZYZ_JZ" + i.ToString().PadLeft(2, '0') + " "; } strSQL.AppendLine(sYZZFields_1); dt1.Columns.Add("SCRGF", typeof(double)); for (int i = 1; i <= 20; i++) { string colName = "TZYZ_JZ" + i.ToString("D2"); dt1.Columns.Add(colName, 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); AddColumn("SCRGF", "生产人工费", 6, 80); 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(100860000, "BJU002"), 2); AddColumn(sYZID, sYZMC, iDecimal, 80); } } strSQL.AppendLine(" ,XLXSBJDMX_JGBBJ "); dt1.Columns.Add("XLXSBJDMX_JGBBJ", typeof(double)); if (PageParam.GetRTrimString("HSBZ").Equals("Y")) AddColumn("XLXSBJDMX_JGBBJ", "含税表价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80); else AddColumn("XLXSBJDMX_JGBBJ", "无税表价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80); strSQL.AppendLine(" ,XLXSBJDMX_JSYCBZ "); dt1.Columns.Add("XLXSBJDMX_JSYCBZ", typeof(string)); bool bXSFBJYY = CurQueryEntity.FieldByName("XSFBJYY").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bXSFBJYY) { AddColumn("XLXSBJDMX_JSYCBZ", "负表价原因", 100); } Dictionary DicBJRCLCBLM = new Dictionary(); bool bZSJJZC = CurQueryEntity.FieldByName("ZSJJZC").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSJJZC) { #region 不计入成本栏目 if (CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLJGCZBLM where isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' and isnull(XLJGCZBLM_CLQDL,' ')<>' ' ")) { SQL.Clear(); SQL.Add(" select BJDLJZSBJRCBLM_XH,BJDLJZSBJRCBLM_BJDCLCBLMH from BJDLJZSBJRCBLM where BJDLJZSBJRCBLM_BJDID = :pBJDID "); SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim(); DataSet dsJRCBLM = dberp.OpenDataSet(SQL); if (dsJRCBLM.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsJRCBLM.Tables[0].Rows) { string sKey = trow["BJDLJZSBJRCBLM_XH"].ToString().Trim() + "," + trow["BJDLJZSBJRCBLM_BJDCLCBLMH"].ToString().Trim(); if (!DicBJRCLCBLM.ContainsKey(sKey)) DicBJRCLCBLM.Add(sKey, sKey); } } } #endregion strSQL.AppendLine(" ,'"+GetOption(100860000,"BJU003")+"' as JLDW "); dt1.Columns.Add("JLDW", typeof(string)); AddColumn("JLDW", "计量单位", 80); strSQL.AppendLine(" ,0 as CLZL "); dt1.Columns.Add("CLZL", typeof(double)); AddColumn("CLZL", "材料重量",3, 80); int iDecimal = CMISproConvert.StrToInt(GetOption(100860000, "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); } } } if (dicBJCL_WL.Count <= 0) { SQL.Clear(); SQL.Add(" select distinct XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC "); SQL.Add(" from XLXSBJCL "); SQL.Add(" where 1=1 "); //此处需要注意保存的dicBJCLCloums_Index不一定能囊括所有列,所有直接查询80列 //SQL.Add(" and ("); //for (int i = 1; i <= 80; i++) //{ // if (i != 1) // SQL.Add(" or "); // SQL.Add(" exists ( select top 1 XLXSBJDCLCB_XH from XLXSBJDCLCB where XLXSBJDCLCB_BJDID =:pBJDID "); // SQL.Add(string.Format(" and charindex('|',XLXSBJDCLCB_CLID{0}) > 0 and case when charindex('|',XLXSBJDCLCB_CLID{0}) > 0 then left(XLXSBJDCLCB_CLID{0},charindex('|',XLXSBJDCLCB_CLID{0})-1) else XLXSBJDCLCB_CLID{0} end = XLXSBJCL_BJCLID ) ", i.ToString().PadLeft(2, '0').Trim())); //} //SQL.Add(" ) "); SQL.Add(" and exists ( select top 1 XLXSBJDCLCB_XH from XLXSBJDCLCB where XLXSBJDCLCB_BJDID =:pBJDID "); SQL.Add(" and ("); for (int i = 1; i <= 80; i++) { if (i != 1) SQL.Add(" or "); SQL.Add(string.Format(" XLXSBJDCLCB_CLID{0} like rtrim(XLXSBJCL_BJCLID)||'|%'", i.ToString().PadLeft(2, '0'))); } SQL.Add(" ) "); SQL.Add(" ) "); SQL.Add(" order by XLXSBJCL_BJCLID "); SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim(); DataSet dsBJCL_WL = dberp.OpenDataSet(SQL); foreach (DataRow bjclRow in dsBJCL_WL.Tables[0].Rows) { string sBJCLID = bjclRow["XLXSBJCL_BJCLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); string sBJCLMC = bjclRow["XLXSBJCL_BJCLMC"].ToString().Trim(); if (!dicBJCL_WL.ContainsKey(sBJCLID)) { dicBJCL_WL.Add(sBJCLID, sBJCLMC); } } } //报价材料是否显示 dicBJCL_Visible.Clear(); //构建报价材料字典和查询列 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); } } } else { SQL.Clear(); SQL.Add(" select distinct XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC "); SQL.Add(" from XLXSBJCL "); SQL.Add(" where 1=1 "); //此处需要注意保存的dicBJCLCloums_Index不一定能囊括所有列,所有直接查询80列 //SQL.Add(" and ( "); //for (int i = 1; i <= 80; i++) //{ // if (i != 1) // SQL.Add(" or "); // SQL.Add(" exists ( select top 1 XLXSBJDCLCB_XH from XLXSBJDCLCB where XLXSBJDCLCB_BJDID =:pBJDID "); // SQL.Add(string.Format(" and case when charindex('|',XLXSBJDCLCB_CLID{0}) > 0 then left(XLXSBJDCLCB_CLID{0},charindex('|',XLXSBJDCLCB_CLID{0})-1) else XLXSBJDCLCB_CLID{0} end = XLXSBJCL_BJCLID ) ", i.ToString().PadLeft(2, '0').Trim())); //} //SQL.Add(" ) "); SQL.Add(" and exists ( select top 1 XLXSBJDCLCB_XH from XLXSBJDCLCB where XLXSBJDCLCB_BJDID =:pBJDID "); SQL.Add(" and ("); for (int i = 1; i <= 80; i++) { if (i != 1) SQL.Add(" or "); SQL.Add(string.Format(" XLXSBJDCLCB_CLID{0} like rtrim(XLXSBJCL_BJCLID)||'%'", i.ToString().PadLeft(2, '0'))); } SQL.Add(" ) "); SQL.Add(" ) "); SQL.Add(" order by XLXSBJCL_BJCLID "); SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim(); DataSet dsBJCL = dberp.OpenDataSet(SQL); foreach (DataRow bjclRow in dsBJCL.Tables[0].Rows) { string sBJCLID = bjclRow["XLXSBJCL_BJCLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); string sBJCLMC = bjclRow["XLXSBJCL_BJCLMC"].ToString().Trim(); if (!dicBJCL.ContainsKey(sBJCLID)) { dicBJCL.Add(sBJCLID, sBJCLMC); dicBJCL_Visible.Add(sBJCLID, "N"); 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(" ,XLXSBJDCLCB_CLSL{0},XLXSBJDCLCB_CLID{0},XLXSBJDCLCB_CLDJ{0} ", i.ToString().PadLeft(2, '0').Trim())); } } bool bZSGYBZ = CurQueryEntity.FieldByName("GYBZ").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSGYBZ) { AddColumn("XLXSBJYLZDMX_GYBZ", "工艺备注", 100); strSQL.AppendLine(" ,XLXSBJYLZDMX_GYBZ "); dt1.Columns.Add("XLXSBJYLZDMX_GYBZ", typeof(string)); } //栏目超限省略符号 strSQL.AppendLine(" ,'...' as LMCXSLF "); dt1.Columns.Add("LMCXSLF", typeof(string)); strSQL.AppendLine(" from XLXSBJDMX "); strSQL.AppendLine(" left join XLBZ on XLBZ_XLBZID = XLXSBJDMX_XLBZID "); strSQL.AppendLine(" left join XLYSB on XLYSB_XLYSID = XLXSBJDMX_XLYSID "); if (bZSBJZC) { strSQL.AppendLine(" left join XLXSBJDJJYZ on XLXSBJDJJYZ_BJDID=XLXSBJDMX_BJDID and XLXSBJDJJYZ_XH=XLXSBJDMX_XH "); } if (bZSJJZC) { strSQL.AppendLine(" left join XLXSBJDCLCB on XLXSBJDCLCB_BJDID=XLXSBJDMX_BJDID and XLXSBJDCLCB_XH=XLXSBJDMX_XH "); } if (bZSGYBZ) { strSQL.AppendLine(" left join ( select XLXSBJYLZD_BJDID,XLXSBJYLZD_SQDH,XLXSBJYLZDMX_BJDXH,XLXSBJYLZDMX_GYBZ "); strSQL.AppendLine(" from XLXSBJYLZDMX left join XLXSBJYLZD on XLXSBJYLZD_SQDH = XLXSBJYLZDMX_SQDH where XLXSBJYLZD_BJDID = :pBJDID ) YLZDMX on XLXSBJYLZD_BJDID = XLXSBJDMX_BJDID and XLXSBJYLZDMX_BJDXH = XLXSBJDMX_XH "); } strSQL.AppendLine(" where 1=1 and XLXSBJDMX_BJDID = :pBJDID "); strSQL.AppendLine(" order by XLXSBJDMX_XSSX,XLXSBJDMX_XH "); SQL.Clear(); SQL.Add(strSQL.ToString().Trim()); SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim(); DataSet dsQry = dberp.OpenDataSet(SQL); if (dsQry.Tables[0].Rows.Count > 0) { foreach (DataRow towQry in dsQry.Tables[0].Rows) { DataRow dtrow = dt1.NewRow(); dtrow["XLXSBJDMX_BJDID"] = towQry["XLXSBJDMX_BJDID"].ToString().Trim(); string sXH = towQry["XLXSBJDMX_XH"].ToString().Trim(); dtrow["XLXSBJDMX_XH"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_XH"].ToString().Trim()); dtrow["XLXSBJDMX_XSSX"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_XSSX"].ToString().Trim()); dtrow["XLXSBJDMX_XLXHID"] = towQry["XLXSBJDMX_XLXHID"].ToString().Trim(); dtrow["XLXSBJDMX_XLGGID"] = towQry["XLXSBJDMX_XLGGID"].ToString().Trim(); dtrow["XLXSBJDMX_XLBZID"] = towQry["XLXSBJDMX_XLBZID"].ToString().Trim(); dtrow["XLBZ"] = towQry["XLBZ"].ToString().Trim(); dtrow["XLXSBJDMX_DYDJID"] = towQry["XLXSBJDMX_DYDJID"].ToString().Trim(); dtrow["XLXSBJDMX_XLYSID"] = towQry["XLXSBJDMX_XLYSID"].ToString().Trim(); dtrow["XLYS"] = towQry["XLYS"].ToString().Trim(); dtrow["XLXSBJDMX_BJCP"] = towQry["XLXSBJDMX_BJCP"].ToString().Trim(); if (pzxx.XLXSBJPZ_XSPWQD == "Y") { dtrow["XLXSBJDMX_PWQDID"] = towQry["XLXSBJDMX_PWQDID"].ToString().Trim(); dtrow["XLXSBJDMX_PWQDWLMC"] = towQry["XLXSBJDMX_PWQDWLMC"].ToString().Trim(); dtrow["XLXSBJDMX_PWQDMS"] = towQry["XLXSBJDMX_PWQDMS"].ToString().Trim(); } dtrow["XLXSBJDMX_JGBJJ"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_JGBJJ"].ToString().Trim()); dtrow["LMCXSLF"] = towQry["LMCXSLF"].ToString().Trim(); if (bZSBJZC) { dtrow["SCRGF"] = CMISproConvert.StrToFloat(towQry["SCRGF"].ToString().Trim()); for (int i = 1; i <= 20; i++) { string colName = "TZYZ_JZ" + i.ToString("D2"); object value = towQry[colName]; // 获取原始值 dtrow[colName] = CMISproConvert.StrToFloat(value.ToString().Trim()); } } if (bXSFBJYY) { dtrow["XLXSBJDMX_JSYCBZ"] = towQry["XLXSBJDMX_JSYCBZ"].ToString().Trim(); } dtrow["XLXSBJDMX_JGBBJ"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_JGBBJ"].ToString().Trim()); if (bZSJJZC) { dtrow["JLDW"] = towQry["JLDW"].ToString().Trim(); double dCLZL = 0; for (int i = 1; i <= 80; i++) { string sBJRCBLMKey = sXH + "," + i.ToString().PadLeft(2, '0'); string sCLID = towQry["XLXSBJDCLCB_CLID" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); if (sCLID.Contains("|")) { string sWLID = sCLID.Split('|')[1]; if (DicJGYWLID.ContainsKey(sWLID)) sWLID = DicJGYWLID[sWLID]; sCLID = sCLID.Split('|')[0]; if (dicBJCL.ContainsKey(sCLID)) { double dSL = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim()); double dJG = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim()); if (dSL != 0) dicBJCL_Visible[sCLID] = "Y"; dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dSL;//相同栏目的用量要合并 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 * dSL; if (DicBJRCLCBLM.ContainsKey(sBJRCBLMKey)) dtrow[sCLID + "_WLCB"] = 0; dCLZL += dSL; } } else { if (dicBJCL.ContainsKey(sCLID)) { double dSL = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim()); double dJG = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim()); if (dSL != 0) dicBJCL_Visible[sCLID] = "Y"; dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dSL;//相同栏目的用量要合并 dtrow[sCLID + "_CLJG"] = dJG; dtrow[sCLID + "_CLCB"] = dJG * CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0); if (DicBJRCLCBLM.ContainsKey(sBJRCBLMKey)) dtrow[sCLID + "_CLCB"] = 0; dCLZL += dSL; } } } dtrow["CLZL"] = dCLZL; } if (bZSGYBZ) { dtrow["XLXSBJYLZDMX_GYBZ"] = towQry["XLXSBJYLZDMX_GYBZ"].ToString().Trim(); } dt1.Rows.Add(dtrow); } } foreach (string sBJCLID in dicBJCL_Visible.Keys) { if (dicBJCL_Visible[sBJCLID].Equals("N"))//不显示的栏目需要删除,否则记录导出时会因为最大栏目数256的限制导致栏目导出不全 { grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_SL")); if (dt1.Columns.Contains(sBJCLID + "_SL")) dt1.Columns.Remove(sBJCLID + "_SL"); if (dicBJCL_WL.ContainsKey(sBJCLID)) { grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_WLXX")); grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_WLJG")); grdXLBJDMX.Columns.Remove(grdXLBJDMX.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 { grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_CLJG")); grdXLBJDMX.Columns.Remove(grdXLBJDMX.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"); } } } if (grdXLBJDMX.Columns.Count > 450) { for (int i = grdXLBJDMX.Columns.Count - 1; i >= 449; i--) { grdXLBJDMX.Columns.Remove(grdXLBJDMX.Columns[i]); } AddColumn("LMCXSLF", "...", 60, HorizontalAlign.Center); } DataSet dsResult = new DataSet(); dsResult.Tables.Add(dt1); 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()); } } } private void PLTJ_JGBYZ(string sBJDID,string sBJFLID,string sJGBID, string sBJDXHList, int VnewID, string sYZID,double YZZ) {//研发自测:王威 2026/01/07 00:21:36 BJFLXX bjflxx = XLBJDUtils.GetBJFLXX(sBJFLID); TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sYZID); string sTJYS = yzxx.XLXSTZYZ_TJYS; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select XLXSBJD_JGBID,XLXSJGB_MXBH,XLXSJGB_JGBIDS,XLXSJGB_JGCIDS,XLXSJGB_BJLY,XLXSJGB_TJYS,XLXSJGB_JSBLFS, "); SQL.Add(" XLXSBJD_BJFLID,XLXSBJFL_BJDHQLY,XLXSBJFL_TZCLHQ,XLXSBJFL_JGBTJYSS,XLXSBJFL_BJJCLLX,XLXSBJFL_LJJCLLX,XLXSBJFL_CPBJMRXSWS,"); SQL.Add(" XLXSBJFL_ZDXJJCLLX,XLXSBJFL_JYF,XLXSBJFL_YFWLID,XLXSBJFL_BJHYF,XLXSBJFL_ZDXJGS,XLXSBJFL_JSJGS,XLXSBJFL_TZYLBL,"); SQL.Add(" XLXSBJD_JZBJHS,XLXSBJD_BJRQ"); SQL.Add(" from XLXSBJD "); SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID=XLXSBJD_JGBID "); SQL.Add(" left join XLXSBJFL on XLXSBJFL_BJFLID=XLXSBJD_BJFLID"); SQL.Add(" where XLXSBJD_BJDID=:pBJDID"); SQL.ParamByName("pBJDID").Value = sBJDID; DataSet dsBJD = dberp.OpenDataSet(SQL); if (dsBJD.Tables[0].Rows.Count == 0) { return; } string sMXBH = dsBJD.Tables[0].Rows[0]["XLXSJGB_MXBH"].ToString().Trim(); string sJGBIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGBIDS"].ToString().Trim(); string sJGCIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim(); string sBJLY = dsBJD.Tables[0].Rows[0]["XLXSJGB_BJLY"].ToString().Trim(); string sJSBLFS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JSBLFS"].ToString().Trim(); bool bHSBZ = dsBJD.Tables[0].Rows[0]["XLXSBJD_JZBJHS"].ToString().Trim().Equals("Y"); string sBJU002=GetOption(100860000,"BJU002"); int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002); if (iXSWS < 0) iXSWS = 0; else if (iXSWS > 8) iXSWS = 8; int VID = CMISproDataBase.NewID("DBERP", "V_XSBJJSJGB"); DateTime TimeStamp = MISproUtils.GetServerTime(); dberp.BeginTrans(); try { SQL.Clear(); SQL.Add(string.Format(" update XLXSBJDJJYZ set XLXSBJDJJYZ_YZZ{0}=:pYZZ", sYZID.Replace("JZ", ""))); SQL.Add(" where XLXSBJDJJYZ_BJDID=:pBJDID "); if (VnewID > 0) { SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID=:pID and XLXSBJDJJYZ_BJDID=V_BJDXH_BJDID and XLXSBJDJJYZ_XH=V_BJDXH_BJDXH)"); SQL.ParamByName("pID").Value = VnewID; } else if (!string.IsNullOrEmpty(sBJDXHList)) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDJJYZ_XH", sBJDXHList)); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pYZZ").Value = YZZ; dberp.ExecSQL(SQL); //构建待计算临时表 SQL.Clear(); SQL.Add("insert into V_XSBJJSJGB(V_XSBJJSJGB_ID,V_XSBJJSJGB_TIMESTAMP,V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH,V_XSBJJSJGB_JGBJJ,V_XSBJJSJGB_JGBJLDW) "); SQL.Add("select :pID,:pTime,XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_JGBJJ,XLXSBJDMX_JLDW "); SQL.Add(" from XLXSBJDMX"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if (VnewID > 0) { SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID=:pID and XLXSBJDMX_BJDID=V_BJDXH_BJDID and XLXSBJDMX_XH=V_BJDXH_BJDXH)"); SQL.ParamByName("pID").Value = VnewID; } else if (!string.IsNullOrEmpty(sBJDXHList)) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTime").Value = TimeStamp; SQL.ParamByName("pBJDID").Value = sBJDID; dberp.ExecSQL(SQL); DataSet dsJGBYZ = new DataSet(); XLBJDUtils.GetdsJGBYZ_JGE(sJGBID, ref dsJGBYZ); if (dsJGBYZ.Tables[0].Rows.Count > 0) { CalcUpdateJGBBJ(dberp, SQL, dsJGBYZ, VID, sBJDID, sBJFLID, sMXBH, sJGBID, iXSWS, sJSBLFS, tSession.UserId, tSession.UserName, sJGBIDS); SQL.Clear(); SQL.Add("merge into XLXSBJDMX tar "); SQL.Add("using(select V_XSBJJSJGB_BJDXH,V_XSBJJSJGB_JGBBJ from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID "); SQL.Add(" )sor "); SQL.Add(" on (XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=V_XSBJJSJGB_BJDXH)"); SQL.Add(" when matched then update set XLXSBJDMX_JGBBJ=V_XSBJJSJGB_JGBBJ "); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pBJDID").Value = sBJDID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("merge into XLXSBJDCLCB tar "); SQL.Add("using(select V_XSBJJSJGB_BJDXH,V_XSBJJSJGB_JGBBJ,(select max(XLXSBJCL_ZZSL) as ZZSL from XLXSBJCL where 1=1) as ZZSL from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID "); SQL.Add(" )sor "); SQL.Add(" on (XLXSBJDCLCB_BJDID=:pBJDID and XLXSBJDCLCB_XH=V_XSBJJSJGB_BJDXH)"); SQL.Add(" when matched then update set "); if (bHSBZ) { SQL.Add(" XLXSBJDCLCB_HSJGBBJ=V_XSBJJSJGB_JGBBJ,XLXSBJDCLCB_WSJGBBJ=V_XSBJJSJGB_JGBBJ/(1+isnull(ZZSL,0.0)/100.0) "); }else SQL.Add(" XLXSBJDCLCB_HSJGBBJ=V_XSBJJSJGB_JGBBJ*(1+isnull(ZZSL,0.0)/100.0),XLXSBJDCLCB_WSJGBBJ=V_XSBJJSJGB_JGBBJ "); //SQL.ParamByName("pZZSL").Value = 13; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pBJDID").Value = sBJDID; dberp.ExecSQL(SQL); XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, iXSWS, bjflxx.XLXSBJFL_BJJCLLX, bjflxx.XLXSBJFL_LJJCLLX, bjflxx.XLXSBJFL_CPBJMRXSWS, sBJDXHList, 0, false, false, false, "", DateTime.MinValue, false, VnewID); XLBJDUtils.UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", 0); XLBJDUtils.UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", 0); XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, bjflxx.XLXSBJFL_BJJCLLX, bjflxx.XLXSBJFL_LJJCLLX, bjflxx.XLXSBJFL_ZDXJJCLLX, bjflxx.XLXSBJFL_JYF, "", "", bjflxx.XLXSBJFL_YFWLID, bjflxx.XLXSBJFL_BJHYF); } dberp.CommitTrans(); } catch(Exception ex) { dberp.RollbackTrans(); ShowMessage("批量调价失败:"+ex.Message); } finally { //删除计算临时表 SQL.Clear(); SQL.Add("delete from V_XSBJJSJGB "); SQL.Add(" where V_XSBJJSJGB_ID=:pID"); SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID"); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pBJDID").Value = sBJDID; dberp.ExecSQL(SQL); } } #endregion #region 控件事件 protected void btnPLTJ_OnDropDown(object sender, EventArgs e) {//研发自测:王威 2026/01/07 00:21:13 btnPLTJ.Nodes.Clear(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); DataSet ds = null; SQL.Clear(); SQL.Add("select XLXSJGBYZ_YZID,XLXSTZYZ_YZMC,XLXSTZYZ_JJFS,XLXSTZYZ_TJYS "); SQL.Add(" from XLXSJGBYZ"); SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=XLXSJGBYZ_YZID "); SQL.Add(" where XLXSJGBYZ_JGBID=:pJGBID and XLXSTZYZ_TJYS not in('2','5','6') "); SQL.Add(" order by XLXSTZYZ_XSXH,XLXSTZYZ_YZID"); SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID"); ds = dberp.OpenDataSet(SQL); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string sYZID = ds.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim(); string sYZMC = ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim(); string sJJFS = ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim(); string sTJYS = ds.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim(); string sYZIDChild = sYZID; string sText = sYZMC; if (sJJFS.Equals("JD") || sJJFS.Equals("KD") || sJJFS.Equals("SX") || sJJFS.Equals("DD") || sJJFS.Equals("MD")) { sText = sText + "(%)"; } else if (sJJFS.Equals("JJ")) { if (XLBJDUtils.GetYZXXByYZID(sYZID).XLXSTZYZ_TJLX == "1") sText = sText + "(元)"; } btnPLTJ.Nodes.Add(new gtTreeNode(sYZID, sText)); } MenuAreaUpdate(); } protected void btnPLTJ_MenuItemClick(object sender, string ItemIndex) {//研发自测:王威 2026/01/07 00:21:23 string sYZID = ItemIndex; string sText =btnPLTJ.Nodes.getTreeNodeByValue(sYZID).Text; if (!(grdXLBJDMX.CheckBox && !String.IsNullOrEmpty(grdXLBJDMX.CheckedRowIndexs))) txtPLSZAll.Value = "C"; else txtPLSZAll.Value = "N"; txtPLSZYZList.Value = ""; string sBJFLID = PageParam.GetRTrimString("BJFLID"); string sBJDID = PageParam.GetRTrimString("BJDID"); BJFLXX bjflxx = XLBJDUtils.GetBJFLXX(sBJFLID); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); if (sYZID.Contains("|")) sYZID = sYZID.Trim().Split('|')[1]; TPageParams pageParams = new TPageParams(); pageParams.UrlPath = "XLBJD_JGBYZInfo.aspx"; pageParams.AddString("YZID", sYZID); pageParams.AddString("YZMC", sText); pageParams.AddString("PLSZAll", txtPLSZAll.Value); pageParams.AddString("txtPLSZAllCID", txtPLSZAll.ClientID); pageParams.AddString("txtPLSZYZListCID", txtPLSZYZList.ClientID); pageParams.AddString("btnRefreshCID", btnRefresh2.ClientID); OpenDialog(pageParams); } protected void btnRefresh_Click(object sender, EventArgs e) { int tmpIndex = grdXLBJDMX.SelectedIndex; moduleGV_PageIndexChanging(null, null); grdXLBJDMX.SelectedIndex = tmpIndex; } protected void btnRefresh2_Click(object sender, EventArgs e) {//研发自测:王威 2026/01/07 00:21:29 string sBJDID = PageParam.GetRTrimString("BJDID"); string sBJDXHList = ""; int VnewID = 0; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); if (txtPLSZAll.Value.Trim().Equals("N"))//调价范围:N|勾选记录 { string[] sTempArr = grdXLBJDMX.CheckedRowIndexs.Split(new char[] { ',' }); foreach (string sIndex in sTempArr) { int iRowIndex = CMISproConvert.StrToInt(sIndex.Trim()); string sBJDXH = grdXLBJDMX.DataKeys[iRowIndex]["XLXSBJDMX_XH"].ToString().Trim(); if (!sBJDXH.Equals("") && !sBJDXH.Equals("0")) { sBJDXHList += sBJDXH + ","; } } sBJDXHList = sBJDXHList.TrimEnd(','); } else if (txtPLSZAll.Value.Trim().Equals("C")) { #region 创建临时表 DateTime TimeStamp = MISproUtils.GetServerTime(); VnewID = CMISproDataBase.GetMaxXH("DBERP", "V_BJDXH", "V_BJDXH_ID", "") + 1; base.InitEntityByCondition(); SQL.Clear(); SQL.Add(" insert into V_BJDXH(V_BJDXH_ID,V_BJDXH_TIMESTAMP,V_BJDXH_BJDID,V_BJDXH_BJDXH )"); SQL.Add(" select distinct :pID,:pTime,XLXSBJDMX_BJDID, XLXSBJDMX_XH "); SQL.Add(" from XLXSBJDMX "); SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID "); SQL.Add(" left join XLDYDJB on XLDYDJB_DYDJID=XLXSBJDMX_DYDJID "); SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID "); SQL.Add(" left join XLGGB on XLGGB_XLGGID=XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); if (XLBJDUtils.ExistXSCPML()) { SQL.Add(" left join XLXSBJXHML XHMLA on XHMLA.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLA.XLXSBJXHML_DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') "); SQL.Add(" left join XLXSBJXHML XHMLB on XHMLB.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLB.XLXSBJXHML_DYDJID = ' ' "); SQL.Add(" left join XLXSCPML on XLXSCPML_CPMLID= (case when XHMLA.XLXSBJXHML_CPMLID is null then XHMLB.XLXSBJXHML_CPMLID else XHMLA.XLXSBJXHML_CPMLID end ) "); } SQL.Add(" where XLXSBJDMX_BJDID = :pBJDID "); SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pTime").Value = TimeStamp; SQL.ParamByName("pBJDID").Value = sBJDID; dberp.ExecSQL(SQL); #endregion } string[] sYZZList = txtPLSZYZList.Value.Trim().Split('|'); string sYZID = sYZZList[0].Trim(); double fYZZ = CMISproConvert.StrToFloat(sYZZList[1]); string sBJFLID = PageParam.GetRTrimString("BJFLID"); string sJGBID = PageParam.GetRTrimString("JGBID"); PLTJ_JGBYZ(sBJDID, sBJFLID, sJGBID,sBJDXHList, VnewID, sYZID, fYZZ); if (VnewID > 0) { #region 删除临时表 SQL.Clear(); SQL.Add("delete from V_BJDXH where V_BJDXH_ID=:pVID and V_BJDXH_BJDID =:pBJDID "); SQL.ParamByName("pVID").Value = VnewID; SQL.ParamByName("pBJDID").Value = sBJDID; dberp.ExecSQL(SQL); #endregion } //刷新 moduleGV_PageIndexChanging(null, null); FormAreaUpdate(); } protected void btnHSJJ_Click(object sender, EventArgs e) { if (grdXLBJDMX.SelectedIndex < 0) { ShowMessage("请选择处理记录!"); return; } string sXLXHID = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_XLXHID"].ToString().Trim(); string sXLGGID = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_XLGGID"].ToString().Trim(); string sXLBZID = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_XLBZID"].ToString().Trim(); string sDYDJID = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_DYDJID"].ToString().Trim(); string sXH = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_XH"].ToString().Trim(); TPageParams tpp = new TPageParams(); if (XLBJDUtils.IsJGEJGB(PageParam.GetRTrimString("JGBID"))) tpp.UrlPath = "XLBJD_JGECBZSList.aspx"; else tpp.UrlPath = "XLBJD_CBZSList.aspx"; tpp.CallAction = TPageCallAction.pcaBrowse; tpp.AddString("XLXHID", sXLXHID); tpp.AddString("XLGGID", sXLGGID); tpp.AddString("XLBZID", sXLBZID); tpp.AddString("DYDJID", sDYDJID); tpp.AddString("BJDID", PageParam.GetRTrimString("BJDID")); tpp.AddString("XH", sXH); tpp.AddString("BJRQ", PageParam.GetRTrimString("BJRQ")); tpp.AddString("BJFLID", PageParam.GetRTrimString("BJFLID")); tpp.AddString("JGBID", PageParam.GetRTrimString("JGBID")); tpp.AddString("JGBIDS", PageParam.GetRTrimString("JGBIDS")); tpp.AddString("HSBZ", PageParam.GetRTrimString("HSBZ")); tpp.AddString("BJDHQLY", PageParam.GetRTrimString("BJDHQLY")); tpp.AddString("TBJCLID", PageParam.GetRTrimString("TBJCLID")); tpp.AddString("LBJCLID", PageParam.GetRTrimString("LBJCLID")); tpp.AddString("TJ", PageParam.GetRTrimString("TJ")); tpp.AddString("LJ", PageParam.GetRTrimString("LJ")); tpp.AddString("JCLLX", PageParam.GetRTrimString("JCLLX")); tpp.AddString("LJJCLLX", PageParam.GetRTrimString("LJJCLLX")); tpp.AddString("BJLY", PageParam.GetRTrimString("BJLY")); tpp.AddString("CPBJMRXSWS", PageParam.GetRTrimString("CPBJMRXSWS")); tpp.AddString("TZCLHQ", PageParam.GetRTrimString("TZCLHQ"));//是否允许调整材料行情 tpp.AddString("CANEDIT", PageParam.GetRTrimString("CANEDIT"));//报价单是否允许编辑 tpp.AddString("ZDXJJCLLX", PageParam.GetRTrimString("ZDXJJCLLX")); tpp.AddString("JYF", PageParam.GetRTrimString("JYF"));//计运费 tpp.AddString("YSJDID", PageParam.GetRTrimString("YSJDID"));//运输节点 tpp.AddString("GYSID", PageParam.GetRTrimString("GYSID"));//运输单位 tpp.AddString("YFWLID", PageParam.GetRTrimString("YFWLID"));//运费物料 tpp.AddString("BJHYF", PageParam.GetRTrimString("BJHYF"));//报价含运费 if (PageParam.GetRTrimString("TZCLHQ").Equals("Y")) OpenModuleDialog(100860044, tpp, btnRefresh.ClientID); else OpenModuleDialog(100860044, tpp); } #region 导出数据 protected void btnSJDC_Click(object sender, EventArgs e) { if (CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLXSBJDMX where isnull(XLXSBJDMX_JSYCBZ,' ' )='A' and XLXSBJDMX_BJDID = '" + PageParam.GetRTrimString("BJDID") + "'")) { Confirm.Register("IsQD", "当前报价单明细存在材料价缺失/有用量栏目未指定材料的产品记录,是否确认导出?"); if (Confirm.GetValue("IsQD").Trim().Equals("")) { Confirm.Ask("IsQD"); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("N")) { //表示进行了提示并选择了取消,直接返回或其他处理 Confirm.Clear(); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("Y")) { //表示进行了提示并选择了确认 Confirm.Clear(); } } base.InitEntityByCondition(); short tcpys = 0; short lcpys = 0; string sTCPList = string.Empty; string sLCPList = string.Empty; if (!XLBJDUtils.GetXLXSBJPZXX(100860010).XLXSBJPZ_TCPBSYS.Trim().Equals("")) tcpys = (short)CMISproConvert.StrToInt(XLBJDUtils.GetXLXSBJPZXX(100860010).XLXSBJPZ_TCPBSYS.Trim(), 0); if (!XLBJDUtils.GetXLXSBJPZXX(100860010).XLXSBJPZ_LCPBSYS.Trim().Equals("")) lcpys = (short)CMISproConvert.StrToInt(XLBJDUtils.GetXLXSBJPZXX(100860010).XLXSBJPZ_LCPBSYS.Trim(), 0); bool bXSCLCB = false; if (CurQueryEntity.FieldByName("XSCLCB").Value == "True") { bXSCLCB = true; } int iNumberDecimal = XLBJDUtils.BJCLPriceDecimal; string sBJDID = PageParam.GetRTrimString("BJDID"); string sFileName = ""; sFileName = sBJDID + "报价单表价"; string m_tmpFilePath = FileService.CombineTempPath(sFileName + ".xlsx"); 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); Dictionary dicColumns = new Dictionary(); DataTable dt1 = new DataTable(); dt1.Columns.Add("XLXSBJDMX_BJDID", typeof(string)); dt1.Columns.Add("XLXSBJDMX_XH", typeof(double)); dt1.Columns.Add("XLXSBJDMX_XSSX", typeof(double)); dicColumns.Add("XLXSBJDMX_XSSX", "显示序号"); dt1.Columns.Add("XLXSBJDMX_XLXHID", typeof(string)); dicColumns.Add("XLXSBJDMX_XLXHID", "型号"); dt1.Columns.Add("XLXSBJDMX_XLGGID", typeof(string)); dicColumns.Add("XLXSBJDMX_XLGGID", "规格"); dt1.Columns.Add("XLXSBJDMX_XLBZID", typeof(string)); dt1.Columns.Add("XLBZ", typeof(string)); dicColumns.Add("XLBZ", "标准"); dt1.Columns.Add("XLXSBJDMX_DYDJID", typeof(string)); dicColumns.Add("XLXSBJDMX_DYDJID", "电压等级"); dt1.Columns.Add("XLXSBJDMX_XLYSID", typeof(string)); dt1.Columns.Add("XLYS", typeof(string)); dicColumns.Add("XLYS", "颜色"); dt1.Columns.Add("XLXSBJDMX_BJCP", typeof(string)); dicColumns.Add("XLXSBJDMX_BJCP", "报价产品"); XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860000); if (pzxx.XLXSBJPZ_XSPWQD == "Y") { dt1.Columns.Add("XLXSBJDMX_PWQDID", typeof(string)); dt1.Columns.Add("XLXSBJDMX_PWQDWLMC", typeof(string)); dt1.Columns.Add("XLXSBJDMX_PWQDMS", typeof(string)); dicColumns.Add("XLXSBJDMX_PWQDID", "配网清单ID"); dicColumns.Add("XLXSBJDMX_PWQDWLMC", "物料名称"); dicColumns.Add("XLXSBJDMX_PWQDMS", "描述"); } dt1.Columns.Add("XLXSBJDMX_JGBJJ", typeof(double)); StringBuilder strSQL = new StringBuilder(); strSQL.AppendLine(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID, rtrim(XLXSBJDMX_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC) as XLBZ,XLXSBJDMX_DYDJID,"); strSQL.AppendLine(" XLXSBJDMX_XLYSID,rtrim(XLXSBJDMX_XLYSID)||'|'||rtrim(XLYSB_XLYSMC) as XLYS,XLXSBJDMX_BJCP,XLXSBJDMX_PWQDID,XLXSBJDMX_PWQDWLMC,XLXSBJDMX_PWQDMS,XLXSBJDMX_JLDW,XLXSBJDMX_BJSL,XLXSBJDMX_JGBJJ"); if (PageParam.GetRTrimString("HSBZ").Equals("Y")) //AddColumn("XLXSBJDMX_JGBJJ", "含税基价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80); dicColumns.Add("XLXSBJDMX_JGBJJ", "含税基价"); else dicColumns.Add("XLXSBJDMX_JGBJJ", "无税基价"); bool bZSBJZC = CurQueryEntity.FieldByName("ZSBJZC").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSBJZC) { strSQL.AppendLine(",round(XLXSBJDJJYZ_YZZ01*100*100/81.2655989526499/71.3980341706337,6) as SCRGF "); for (int i = 1; i <= 20; i++) { string num = i.ToString("D2"); strSQL.AppendLine(",XLXSBJDJJYZ_YZZ" + num + " as TZYZ_JZ" + num + " "); } dt1.Columns.Add("SCRGF", typeof(double)); for (int i = 1; i <= 20; i++) { string colName = "TZYZ_JZ" + i.ToString("D2"); dt1.Columns.Add(colName, 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); dicColumns.Add("SCRGF", "生产人工费"); 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(100860000, "BJU002"), 2); dicColumns.Add(sYZID, sYZMC); } } strSQL.AppendLine(" ,XLXSBJDMX_JGBBJ "); dt1.Columns.Add("XLXSBJDMX_JGBBJ", typeof(double)); if (PageParam.GetRTrimString("HSBZ").Equals("Y")) //AddColumn("XLXSBJDMX_JGBBJ", "含税表价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80); dicColumns.Add("XLXSBJDMX_JGBBJ", "含税表价"); else dicColumns.Add("XLXSBJDMX_JGBBJ", "无税表价"); strSQL.AppendLine(" ,XLXSBJDMX_JSYCBZ "); dt1.Columns.Add("XLXSBJDMX_JSYCBZ", typeof(string)); bool bXSFBJYY = CurQueryEntity.FieldByName("XSFBJYY").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bXSFBJYY) { dicColumns.Add("XLXSBJDMX_JSYCBZ", "负表价原因"); } Dictionary DicBJRCLCBLM = new Dictionary(); bool bZSJJZC = CurQueryEntity.FieldByName("ZSJJZC").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSJJZC) { #region 不计入成本栏目 if (CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLJGCZBLM where isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' and isnull(XLJGCZBLM_CLQDL,' ')<>' ' ")) { SQL.Clear(); SQL.Add(" select BJDLJZSBJRCBLM_XH,BJDLJZSBJRCBLM_BJDCLCBLMH from BJDLJZSBJRCBLM where BJDLJZSBJRCBLM_BJDID = :pBJDID "); SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim(); DataSet dsJRCBLM = dberp.OpenDataSet(SQL); if (dsJRCBLM.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsJRCBLM.Tables[0].Rows) { string sKey = trow["BJDLJZSBJRCBLM_XH"].ToString().Trim() + "," + trow["BJDLJZSBJRCBLM_BJDCLCBLMH"].ToString().Trim(); if (!DicBJRCLCBLM.ContainsKey(sKey)) DicBJRCLCBLM.Add(sKey, sKey); } } } #endregion strSQL.AppendLine(" ,'" + GetOption(100860000, "BJU003") + "' as JLDW "); dt1.Columns.Add("JLDW", typeof(string)); dicColumns.Add("JLDW", "计量单位"); strSQL.AppendLine(" ,0 as CLZL "); dt1.Columns.Add("CLZL", typeof(double)); //AddColumn("CLZL", "材料重量", 3, 80); dicColumns.Add("CLZL", "材料重量"); int iDecimal = CMISproConvert.StrToInt(GetOption(100860000, "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); } } } // 一次性加载当前报价单实际使用的报价材料(含带物料的材料) LoadBJCLInfo(sBJDID, dberp); // 报价材料是否显示 dicBJCL_Visible.Clear(); // 根据实际使用的材料构建查询列(延迟创建,避免先增后删) 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(" ,XLXSBJDCLCB_CLSL{0},XLXSBJDCLCB_CLID{0},XLXSBJDCLCB_CLDJ{0} ", i.ToString().PadLeft(2, '0').Trim())); } } bool bZSGYBZ = CurQueryEntity.FieldByName("GYBZ").Value.ToString().Trim().ToUpper().Equals("TRUE"); if (bZSGYBZ) { dicColumns.Add("XLXSBJYLZDMX_GYBZ", "工艺备注"); strSQL.AppendLine(" ,XLXSBJYLZDMX_GYBZ "); dt1.Columns.Add("XLXSBJYLZDMX_GYBZ", typeof(string)); } //if (tcpys != 0 || lcpys != 0) // strSQL.AppendLine(" ,XLXSCLQD_TZL,XLXSCLQD_LZL "); //else // strSQL.AppendLine(" ,0 as XLXSCLQD_TZL,0 as XLXSCLQD_LZL "); strSQL.AppendLine(" from XLXSBJDMX "); strSQL.AppendLine(" left join XLBZ on XLBZ_XLBZID = XLXSBJDMX_XLBZID "); strSQL.AppendLine(" left join XLYSB on XLYSB_XLYSID = XLXSBJDMX_XLYSID "); if (bZSBJZC) { strSQL.AppendLine(" left join XLXSBJDJJYZ on XLXSBJDJJYZ_BJDID=XLXSBJDMX_BJDID and XLXSBJDJJYZ_XH=XLXSBJDMX_XH "); } if (bZSJJZC) { strSQL.AppendLine(" left join XLXSBJDCLCB on XLXSBJDCLCB_BJDID=XLXSBJDMX_BJDID and XLXSBJDCLCB_XH=XLXSBJDMX_XH "); } if (bZSGYBZ) { strSQL.AppendLine(" left join ( select XLXSBJYLZD_BJDID,XLXSBJYLZD_SQDH,XLXSBJYLZDMX_BJDXH,XLXSBJYLZDMX_GYBZ "); strSQL.AppendLine(" from XLXSBJYLZDMX left join XLXSBJYLZD on XLXSBJYLZD_SQDH = XLXSBJYLZDMX_SQDH where XLXSBJYLZD_BJDID = :pBJDID ) YLZDMX on XLXSBJYLZD_BJDID = XLXSBJDMX_BJDID and XLXSBJYLZDMX_BJDXH = XLXSBJDMX_XH "); } strSQL.AppendLine(" where 1=1 and XLXSBJDMX_BJDID = :pBJDID "); strSQL.AppendLine(" order by XLXSBJDMX_XSSX,XLXSBJDMX_XH "); SQL.Clear(); SQL.Add(strSQL.ToString().Trim()); SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim(); DataSet dsQry = dberp.OpenDataSet(SQL); if (dsQry.Tables[0].Rows.Count > 0) { foreach (DataRow towQry in dsQry.Tables[0].Rows) { //double dTZL = CMISproConvert.StrToFloat(towQry["XLXSCLQD_TZL"].ToString().Trim()); //double dLZL = CMISproConvert.StrToFloat(towQry["XLXSCLQD_LZL"].ToString().Trim()); DataRow dtrow = dt1.NewRow(); dtrow["XLXSBJDMX_BJDID"] = towQry["XLXSBJDMX_BJDID"].ToString().Trim(); string sXH = towQry["XLXSBJDMX_XH"].ToString().Trim(); dtrow["XLXSBJDMX_XH"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_XH"].ToString().Trim()); dtrow["XLXSBJDMX_XSSX"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_XSSX"].ToString().Trim()); dtrow["XLXSBJDMX_XLXHID"] = towQry["XLXSBJDMX_XLXHID"].ToString().Trim(); dtrow["XLXSBJDMX_XLGGID"] = towQry["XLXSBJDMX_XLGGID"].ToString().Trim(); dtrow["XLXSBJDMX_XLBZID"] = towQry["XLXSBJDMX_XLBZID"].ToString().Trim(); dtrow["XLBZ"] = towQry["XLBZ"].ToString().Trim(); dtrow["XLXSBJDMX_DYDJID"] = towQry["XLXSBJDMX_DYDJID"].ToString().Trim(); dtrow["XLXSBJDMX_XLYSID"] = towQry["XLXSBJDMX_XLYSID"].ToString().Trim(); dtrow["XLYS"] = towQry["XLYS"].ToString().Trim(); dtrow["XLXSBJDMX_BJCP"] = towQry["XLXSBJDMX_BJCP"].ToString().Trim(); if (pzxx.XLXSBJPZ_XSPWQD == "Y") { dtrow["XLXSBJDMX_PWQDID"] = towQry["XLXSBJDMX_PWQDID"].ToString().Trim(); dtrow["XLXSBJDMX_PWQDWLMC"] = towQry["XLXSBJDMX_PWQDWLMC"].ToString().Trim(); dtrow["XLXSBJDMX_PWQDMS"] = towQry["XLXSBJDMX_PWQDMS"].ToString().Trim(); } dtrow["XLXSBJDMX_JGBJJ"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_JGBJJ"].ToString().Trim()); //if (dTZL > 0) // sTCPList += towQry["XLXSBJDMX_XSSX"].ToString().Trim() + ","; //else if (dLZL > 0) // sLCPList += towQry["XLXSBJDMX_XSSX"].ToString().Trim() + ","; if (bZSBJZC) { dtrow["SCRGF"] = CMISproConvert.StrToFloat(towQry["SCRGF"].ToString().Trim()); for (int i = 1; i <= 20; i++) { string col = "TZYZ_JZ" + i.ToString("D2"); dtrow[col] = CMISproConvert.StrToFloat(towQry[col].ToString().Trim()); } } if (bXSFBJYY) { dtrow["XLXSBJDMX_JSYCBZ"] = XLBJD_FBJXQList.GetJSYCXQ(towQry["XLXSBJDMX_JSYCBZ"].ToString().Trim(), dicJGBTJYZ); } dtrow["XLXSBJDMX_JGBBJ"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_JGBBJ"].ToString().Trim()); if (bZSJJZC) { dtrow["JLDW"] = towQry["JLDW"].ToString().Trim(); double dCLZL = 0; for (int i = 1; i <= 80; i++) { string sBJRCBLMKey = sXH + "," + i.ToString().PadLeft(2, '0'); string sCLID = towQry["XLXSBJDCLCB_CLID" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); if (sCLID.Contains("|")) { string sWLID = sCLID.Split('|')[1]; if (DicJGYWLID.ContainsKey(sWLID)) sWLID = DicJGYWLID[sWLID]; sCLID = sCLID.Split('|')[0]; if (dicBJCL.ContainsKey(sCLID)) { double dSL = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim()); double dJG = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim()); if (dSL != 0) dicBJCL_Visible[sCLID] = "Y"; dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dSL;//相同栏目的用量要合并 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 * dSL; if (DicBJRCLCBLM.ContainsKey(sBJRCBLMKey)) dtrow[sCLID + "_WLCB"] = 0; dCLZL += dSL; } } else { if (dicBJCL.ContainsKey(sCLID)) { double dSL = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim()); double dJG = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim()); if (dSL != 0) dicBJCL_Visible[sCLID] = "Y"; dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dSL;//相同栏目的用量要合并 dtrow[sCLID + "_CLJG"] = dJG; dtrow[sCLID + "_CLCB"] = dJG * CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0); if (DicBJRCLCBLM.ContainsKey(sBJRCBLMKey)) dtrow[sCLID + "_CLCB"] = 0; dCLZL += dSL; } } } dtrow["CLZL"] = dCLZL; } if (bZSGYBZ) { dtrow["XLXSBJYLZDMX_GYBZ"] = towQry["XLXSBJYLZDMX_GYBZ"].ToString().Trim(); } dt1.Rows.Add(dtrow); } } 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"); } } } DataSet dsResult = new DataSet(); dsResult.Tables.Add(dt1); 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); } } 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("XLXSBJDMX_XSSX")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); } else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("XLXSBJDMX_JGBJJ")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); sJJLM = GetLMZF(k + 1); } else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("XLXSBJDMX_JGBBJ")) { 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"; if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sTCPList += GetLMZF(k + 1) + "1" + ","; else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sLCPList += GetLMZF(k + 1) + "1" + ","; } 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"; if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sTCPList += GetLMZF(k + 1) + "1" + ","; else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sLCPList += GetLMZF(k + 1) + "1" + ","; } else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_WLCB")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sTCPList += GetLMZF(k + 1) + "1" + ","; else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sLCPList += GetLMZF(k + 1) + "1" + ","; } 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); if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sTCPList += GetLMZF(k + 1) + "1" + ","; else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sLCPList += GetLMZF(k + 1) + "1" + ","; } else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_CLCB")) { sLet = TExcelData.ColIndexToReference(k); sd.ColumnType.Add(sLet, NpoiColumnType.Double); if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sTCPList += GetLMZF(k + 1) + "1" + ","; else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim())) sLCPList += GetLMZF(k + 1) + "1" + ","; } } 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); } } } if (!sTCPList.Equals("") || !sLCPList.Equals("")) { cd.CellColor = new Dictionary(); cd.CellFillPattern = new Dictionary(); string []sTCPLists = sTCPList.TrimEnd(',').Split(','); string[] sLCPLists = sLCPList.TrimEnd(',').Split(','); foreach (string sLm in sTCPLists) { cd.CellColor.Add(sLm, tcpys); cd.CellFillPattern.Add(sLm, gtFillPattern.SolidForeground); } foreach (string sLm in sLCPLists) { cd.CellColor.Add(sLm, lcpys); cd.CellFillPattern.Add(sLm, gtFillPattern.SolidForeground); } } TExcelData.CreateExcel_XLSX_NPOI(m_tmpFilePath, dsResult, true, cd, sd, ref smessage); 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("无记录可以导出!"); } } protected void btnHQDC_Click(object sender, EventArgs e) { BJDHQLJDCJGE(); } #region JGE导出 private DataSet GetCLCBTable(string sBJDID) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Clear(); sql.Add(" select XLXSBJDMX_XLXHID,XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID,XLXSBJDMX_DYDJID,XLXSBJDMX_XSSX "); for (int i = 1; i <= 80; i++) { string sL = i.ToString().PadLeft(2, '0'); sql.Add(string.Format(",XLXSBJDCLCB_CLSL{0},XLXSBJDCLCB_CLDJ{0},XLXSBJDCLCB_CLID{0} ", sL)); } sql.Add(" from XLXSBJDCLCB "); sql.Add(" left join XLXSBJDMX on XLXSBJDMX_BJDID=XLXSBJDCLCB_BJDID and XLXSBJDMX_XH=XLXSBJDCLCB_XH "); sql.Add(" where XLXSBJDCLCB_BJDID=:pBJDID "); sql.ParamByName("pBJDID").Value = sBJDID; return dberp.OpenDataSet(sql); } private Dictionary GetCLMCDic() { Dictionary dicCLHQ = new Dictionary(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Clear(); sql.Add(@"select XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC from XLXSBJCL where 1=1 "); DataSet ds = dberp.OpenDataSet(sql); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string sBJCLID = ds.Tables[0].Rows[i]["XLXSBJCL_BJCLID"].ToString().Trim(); string sCLMC = ds.Tables[0].Rows[i]["XLXSBJCL_BJCLMC"].ToString().Trim(); if (!dicCLHQ.ContainsKey(sBJCLID)) dicCLHQ.Add(sBJCLID, sCLMC); } return dicCLHQ; } private Dictionary> GetCLQDTable() { DataSet ds = GetCLCBTable(PageParam.GetRTrimString("BJDID")); Dictionary dicCLMC = GetCLMCDic(); Dictionary> dicCLQD = new Dictionary>(); int estimatedCapacity = ds.Tables[0].Rows.Count; if (estimatedCapacity > 0) { dicCLQD = new Dictionary>(estimatedCapacity); } int xlxhIdIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_XLXHID"); int xlggIdIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_XLGGID"); int xlbzIdIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_XLBZID"); int dydjIdIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_DYDJID"); int xssxIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_XSSX"); // 使用StringBuilder构建键 StringBuilder keyBuilder = new StringBuilder(100); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow row = ds.Tables[0].Rows[i]; // 使用StringBuilder构建键 keyBuilder.Length = 0; // 清空StringBuilder keyBuilder.Append(row[xlxhIdIndex].ToString().Trim()).Append("|"); keyBuilder.Append(row[xlggIdIndex].ToString().Trim()).Append("|"); keyBuilder.Append(row[xlbzIdIndex].ToString().Trim()).Append("|"); keyBuilder.Append(row[dydjIdIndex].ToString().Trim()).Append("|"); keyBuilder.Append(row[xssxIndex].ToString().Trim()); string sKey = keyBuilder.ToString(); if (!dicCLQD.ContainsKey(sKey)) { Dictionary XLCLQDList = new Dictionary(80); for (int j = 1; j <= 80; j++) { string sL = j.ToString().PadLeft(2, '0'); // 缓存列名 string clslColumn = "XLXSBJDCLCB_CLSL" + sL; string cldjColumn = "XLXSBJDCLCB_CLDJ" + sL; string clidColumn = "XLXSBJDCLCB_CLID" + sL; double dSL = CMISproConvert.StrToFloat(row[clslColumn].ToString().Trim(), 0); if (dSL > 0) { string sCLID = row[clidColumn].ToString().Trim().Split('|')[0]; XLCLQDLEntity clqd = new XLCLQDLEntity(); clqd.CLQDL = sL; clqd.CLSL = dSL; clqd.CLJG = CMISproConvert.StrToFloat(row[cldjColumn].ToString().Trim(), 0); clqd.SHL = 0; clqd.CLJGBL = 1; clqd.BJCLID = sCLID; if (dicCLMC.ContainsKey(sCLID)) clqd.LMMC = dicCLMC[sCLID]; XLCLQDList.Add(sL, clqd); } } if (XLCLQDList.Count > 0) dicCLQD.Add(sKey, XLCLQDList); } } return dicCLQD; } private void BJDHQLJDCJGE() { Dictionary> dicCLQD = GetCLQDTable(); DataSet FinalExcelSet = new DataSet(); DataTable FinalTable = new DataTable(); FinalTable.TableName = "报价单行情材料成本"; FinalTable.Columns.Add("显示序号", typeof(double)); FinalTable.Columns.Add("型号", typeof(string)); FinalTable.Columns.Add("规格", typeof(string)); FinalTable.Columns.Add("标准", typeof(string)); FinalTable.Columns.Add("电压等级", typeof(string)); FinalTable.Columns.Add("材料编码", typeof(string)); FinalTable.Columns.Add("材料名称", typeof(string)); FinalTable.Columns.Add("材料价格(元/Kg)", typeof(double)); FinalTable.Columns.Add("材料用量", typeof(double)); FinalTable.Columns.Add("材料成本", typeof(double)); // 使用字典提高查找效率 Dictionary rowDictionary = new Dictionary(); foreach (string sKey in dicCLQD.Keys) { bool flag = false; string[] keyParts = sKey.Split('|'); string sXLXHID = keyParts[0]; string sXLGGID = keyParts[1]; string sXLBZID = keyParts[2]; string sDYDJID = keyParts[3]; double dXSSX = CMISproConvert.StrToFloat(keyParts[4], 0); foreach (string CLQDL in dicCLQD[sKey].Keys) { XLCLQDLEntity entity = dicCLQD[sKey][CLQDL]; string sCLBM = entity.BJCLID; string sCLMC = entity.LMMC; double dCLJG = entity.CLJG; double dCLSL = NumberUtils.RoundX(entity.CLSL * (1 - entity.SHL / 100) * entity.CLJGBL, 6); if (dCLSL == 0) continue; double dCLCB = NumberUtils.RoundX(dCLJG * dCLSL, 6); // 创建唯一键用于查找 string rowKey = dXSSX.ToString() + "|" + sCLBM; if (rowDictionary.ContainsKey(rowKey)) { DataRow dr = rowDictionary[rowKey]; double currentUsage = CMISproConvert.StrToFloat(dr["材料用量"].ToString(), 0); double currentCost = CMISproConvert.StrToFloat(dr["材料成本"].ToString(), 0); dr["材料用量"] = currentUsage + dCLSL; dr["材料成本"] = currentCost + dCLCB; dr["材料价格(元/Kg)"] = NumberUtils.RoundX((currentCost + dCLCB) / (currentUsage + dCLSL), 6); } else { DataRow newRow = FinalTable.NewRow(); newRow["显示序号"] = dXSSX; newRow["型号"] = sXLXHID; newRow["规格"] = sXLGGID; newRow["标准"] = sXLBZID; newRow["电压等级"] = sDYDJID; newRow["材料编码"] = sCLBM; newRow["材料名称"] = sCLMC; newRow["材料价格(元/Kg)"] = dCLJG; newRow["材料用量"] = dCLSL; newRow["材料成本"] = dCLCB; FinalTable.Rows.Add(newRow); rowDictionary.Add(rowKey, newRow); } flag = true; } if (flag) { DataRow newRowBlank = FinalTable.NewRow(); FinalTable.Rows.Add(newRowBlank); } } // 其余代码保持不变... FinalExcelSet.Tables.Add(FinalTable); NpoiSheetData sd = new NpoiSheetData(); sd.ColumnStyle = new System.Collections.Generic.Dictionary(); NpoiColumnStyle ct = new NpoiColumnStyle(); ct.DataFormat = "0;-0;;@"; sd.ColumnStyle.Add("A", ct); ct.DataFormat = "0.000;-0.000;;@"; sd.ColumnStyle.Add("H", ct); ct.DataFormat = "0.000000;-0.000000;;@"; sd.ColumnStyle.Add("I", ct); ct.DataFormat = "0.0000;-0.0000;;@"; sd.ColumnStyle.Add("J", ct); sd.ColumnType = new System.Collections.Generic.Dictionary(); string sLet = ""; sLet = TExcelData.ColIndexToReference(0); sd.ColumnType.Add(sLet, NpoiColumnType.Double); sLet = TExcelData.ColIndexToReference(7); sd.ColumnType.Add(sLet, NpoiColumnType.Double); sLet = TExcelData.ColIndexToReference(8); sd.ColumnType.Add(sLet, NpoiColumnType.Double); sLet = TExcelData.ColIndexToReference(9); sd.ColumnType.Add(sLet, NpoiColumnType.Double); string sFileName = tSession.UserId.Trim() + Guid.NewGuid().ToString() + "材料成本"; string m_tmpFilePath = FileService.CombineTempPath(sFileName + ".xlsx"); string smessage = string.Empty; TExcelData.CreateExcel_XLSX_NPOI(m_tmpFilePath, FinalExcelSet, true, null, sd, ref smessage); 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); } } #endregion private bool IsTCP(string sBJCLID) { if (string.IsNullOrEmpty(sBJCLID)) return false; if (!_tcpCache.ContainsKey(sBJCLID)) { bool result = CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLXSBJCL where XLXSBJCL_JTZ='Y' and XLXSBJCL_BJCLID='" + sBJCLID + "'"); lock (_tcpLcpLock) { if (!_tcpCache.ContainsKey(sBJCLID)) _tcpCache.Add(sBJCLID, result); } } return _tcpCache[sBJCLID]; } private bool IsLCP(string sBJCLID) { if (string.IsNullOrEmpty(sBJCLID)) return false; if (!_lcpCache.ContainsKey(sBJCLID)) { bool result = CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLXSBJCL where XLXSBJCL_JLZ='Y' and XLXSBJCL_BJCLID='" + sBJCLID + "'"); lock (_tcpLcpLock) { if (!_lcpCache.ContainsKey(sBJCLID)) _lcpCache.Add(sBJCLID, result); } } return _lcpCache[sBJCLID]; } /// /// 一次性加载当前报价单实际使用到的报价材料(含带物料的材料) /// 替代原 80 OR LIKE 子查询,避免数据库全表扫描 /// private void LoadBJCLInfo(string sBJDID, TDatabase dberp) { if (dicBJCL.Count > 0) return; TSQL SQL = new TSQL(dberp); // 1. 取出当前报价单所有 CLID01~CLID80 的值,在内存中解析出 BJCLID StringBuilder sb = new StringBuilder(); sb.AppendLine("SELECT "); for (int i = 1; i <= 80; i++) { if (i > 1) sb.AppendLine(","); sb.Append("XLXSBJDCLCB_CLID").Append(i.ToString().PadLeft(2, '0')); } sb.AppendLine(" FROM XLXSBJDCLCB WHERE XLXSBJDCLCB_BJDID = :pBJDID"); SQL.Add(sb.ToString()); SQL.ParamByName("pBJDID").Value = sBJDID; DataSet dsCLID = dberp.OpenDataSet(SQL); Dictionary dicBJCLID = new Dictionary(); Dictionary dicBJCLID_WL = new Dictionary(); foreach (DataRow row in dsCLID.Tables[0].Rows) { for (int i = 1; i <= 80; i++) { string sCLID = row["XLXSBJDCLCB_CLID" + i.ToString().PadLeft(2, '0')].ToString().Trim(); if (string.IsNullOrEmpty(sCLID)) continue; bool bHasWL = sCLID.Contains("|"); string sBJCLID = bHasWL ? sCLID.Split('|')[0] : sCLID; if (string.IsNullOrEmpty(sBJCLID)) continue; if (!dicBJCLID.ContainsKey(sBJCLID)) dicBJCLID.Add(sBJCLID, sBJCLID); if (bHasWL && !dicBJCLID_WL.ContainsKey(sBJCLID)) dicBJCLID_WL.Add(sBJCLID, sBJCLID); } } if (dicBJCLID.Count == 0) return; // 2. 一次性查询 XLXSBJCL 获取材料名称(分批,避免参数过多) List listBJCLID = new List(dicBJCLID.Keys); int iBatchSize = 500; for (int iBatch = 0; iBatch < listBJCLID.Count; iBatch += iBatchSize) { SQL.Clear(); SQL.Add(" SELECT XLXSBJCL_BJCLID, XLXSBJCL_BJCLMC "); SQL.Add(" FROM XLXSBJCL "); SQL.Add(" WHERE XLXSBJCL_BJCLID IN ("); int idx = 0; int iEnd = Math.Min(iBatch + iBatchSize, listBJCLID.Count); for (int i = iBatch; i < iEnd; i++) { if (idx > 0) SQL.Add(","); string sParam = "pID" + idx.ToString(); SQL.Add(":"+sParam); SQL.ParamByName(sParam).Value = listBJCLID[i]; idx++; } SQL.Add(") "); SQL.Add(" ORDER BY XLXSBJCL_BJCLID "); DataSet dsBJCL = dberp.OpenDataSet(SQL); foreach (DataRow row in dsBJCL.Tables[0].Rows) { string sBJCLID_Raw = row["XLXSBJCL_BJCLID"].ToString().Trim(); string sBJCLID = sBJCLID_Raw .Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", ""); string sBJCLMC = row["XLXSBJCL_BJCLMC"].ToString().Trim(); if (!dicBJCL.ContainsKey(sBJCLID)) { dicBJCL.Add(sBJCLID, sBJCLMC); if (dicBJCLID_WL.ContainsKey(sBJCLID_Raw) && !dicBJCL_WL.ContainsKey(sBJCLID)) dicBJCL_WL.Add(sBJCLID, sBJCLMC); } } } } 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 = ""; if (!XLBJDUtils.IsJGEJGB(sJGBID)) return 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; } public static void CalcUpdateJGBBJ(TDatabase dberp, TSQL SQL, DataSet dsJGBYZ, int VnewID, string sBJDID,string sBJFLID, string sMXBH, string sJGBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, string sJGBIDS) { string sJSGS = XLBJDUtils.GetJGBJSGS(sJGBID); string sTJYSList_ = "";//记录调价因素为空的因子id string sTJYSList1 = "";//记录调价因素为'1'的因子id string sTJYSList3 = "";//记录调价因素为'3'的因子id string sTJYSList4 = "";//记录调价因素为'4'的因子id string sTJYSList5 = "";//记录调价因素为'5'的因子id string sTJYSList8 = "";//记录调价因素为'8'的因子id for (int i = 0; i < dsJGBYZ.Tables[0].Rows.Count; i++) { if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("")) { sTJYSList_ += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("1")) { sTJYSList1 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("3")) { sTJYSList3 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("4")) { sTJYSList4 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("5")) { sTJYSList5 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("8")) { sTJYSList8 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } } sTJYSList_ = sTJYSList_.TrimEnd(','); sTJYSList1 = sTJYSList1.TrimEnd(','); sTJYSList3 = sTJYSList3.TrimEnd(','); sTJYSList4 = sTJYSList4.TrimEnd(','); sTJYSList5 = sTJYSList5.TrimEnd(','); sTJYSList8 = sTJYSList8.TrimEnd(','); string sJDSQL = "1"; string sKDSQL = "1"; string sJJSQL = "0"; string sSXSQL = "1"; string sTJYZID = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim(); string sJJFS = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim(); for (int i = 1; i < dsJGBYZ.Tables[0].Rows.Count; i++) { if (!sTJYZID.Equals(dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim())) { if (sJJFS.Equals("JD")) sJDSQL = sJDSQL + "*(1+JDYZZ_" + sTJYZID + "/100.0)"; else if (sJJFS.Equals("KD")) sKDSQL = sKDSQL + "/(1-KDYZZ_" + sTJYZID + "/100.0)"; else if (sJJFS.Equals("JJ")) sJJSQL += "+JJYZZ_" + sTJYZID; else if (sJJFS.Equals("SX")) sSXSQL = sSXSQL + "*(case when SXYZZ_" + sTJYZID + ">=0 then 1/(1-SXYZZ_" + sTJYZID + "/100.0) else (1+SXYZZ_" + sTJYZID + "/100.0) end)"; sTJYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim(); sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim(); } } if (sJJFS.Equals("JD")) sJDSQL = sJDSQL + "*(1+JDYZZ_" + sTJYZID + "/100.0)"; else if (sJJFS.Equals("KD")) sKDSQL = sKDSQL + "/(1-KDYZZ_" + sTJYZID + "/100.0)"; else if (sJJFS.Equals("JJ")) sJJSQL += "+JJYZZ_" + sTJYZID; else if (sJJFS.Equals("SX")) sSXSQL = sSXSQL + "*(case when SXYZZ_" + sTJYZID + ">=0 then 1/(1-SXYZZ_" + sTJYZID + "/100.0) else (1+SXYZZ_" + sTJYZID + "/100.0) end)"; SQL.Clear(); SQL.Add(" merge into V_XSBJJSJGB tar "); SQL.Add(" using ( "); string sYZZFields_3 = ""; for (int i = 1; i <= 20; i++) { sYZZFields_3 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : ""); } SQL.Add("select BJDID,BJDXH," + sJDSQL + " as JDYZZ," + sKDSQL + " as KDYZZ," + sJJSQL + " as JJYZZ," + sSXSQL + " as SXYZZ," + sYZZFields_3 + " "); SQL.Add(" from "); SQL.Add("("); string sYZZFields_4 = ""; for (int i = 1; i <= 20; i++) { sYZZFields_4 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : ""); } SQL.Add(" select XLXSBJDJJYZ_BJDID as BJDID,XLXSBJDJJYZ_XH as BJDXH," + sYZZFields_4 + ","); SQL.Add(" ("); SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}", dsJGBYZ.Tables[0].Rows[0]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", ""))); sTJYZID = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim(); sJJFS = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim(); for (int i = 1; i < dsJGBYZ.Tables[0].Rows.Count; i++) { if (sTJYZID.Equals(dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim())) { SQL.Add(string.Format("+XLXSBJDJJYZ_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", ""))); } else { if (sJJFS.Equals("JD")) SQL.Add(") as " + "JDYZZ_" + sTJYZID); else if (sJJFS.Equals("KD")) SQL.Add(") as " + "KDYZZ_" + sTJYZID); else if (sJJFS.Equals("JJ")) SQL.Add(") as " + "JJYZZ_" + sTJYZID); else if (sJJFS.Equals("SX")) SQL.Add(") as " + "SXYZZ_" + sTJYZID); sTJYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim(); sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim(); SQL.Add(",("); SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", ""))); } } if (sJJFS.Equals("JD")) SQL.Add(") as " + "JDYZZ_" + sTJYZID); else if (sJJFS.Equals("KD")) SQL.Add(") as " + "KDYZZ_" + sTJYZID); else if (sJJFS.Equals("JJ")) SQL.Add(") as " + "JJYZZ_" + sTJYZID); else if (sJJFS.Equals("SX")) SQL.Add(") as " + "SXYZZ_" + sTJYZID); SQL.Add(" from XLXSBJDJJYZ"); SQL.Add(" where XLXSBJDJJYZ_BJDID=:pBJDID "); SQL.Add(" ) a"); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" V_XSBJJSJGB_ID=:pID "); SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID "); SQL.Add(" and V_XSBJJSJGB_BJDID=sor.BJDID "); SQL.Add(" and V_XSBJJSJGB_BJDXH=BJDXH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); if (sMXBH == "JGB") { if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一) { if (sJSGS.Equals("")) { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end)*{0},8))/{0}", Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } else { //先加点 SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end)*{0},8))/{0}", Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else { SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位 { if (sJSGS.Equals("")) { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end),{0})/10)*10", iXSWS.ToString().Trim())); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } else { //先加点 SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end),{0})/10)*10", iXSWS.ToString().Trim())); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else { SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else { if (sJSGS.Equals("")) { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 SQL.Add("V_XSBJJSJGB_JGBBJ=(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end))"); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } else { //先加点 SQL.Add("V_XSBJJSJGB_JGBBJ=(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))," + iXSWS + ")*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end))"); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else { SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS)); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } } else { if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一) { if (sJSGS.Equals("")) { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*{0},8))/{0}", Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } else { //先加点 SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*{0},8))/{0}", Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else { SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位 { if (sJSGS.Equals("")) { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),{0})/10)*10", iXSWS.ToString().Trim())); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } else { //先加点 SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)),{0})/10)*10", iXSWS.ToString().Trim())); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else { SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else { if (sJSGS.Equals("")) { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 SQL.Add("V_XSBJJSJGB_JGBBJ=RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } else { //先加点 SQL.Add("V_XSBJJSJGB_JGBBJ=RoundFix(abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } else { SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS)); SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) "); } } } SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pBJDID").Value = sBJDID; dberp.ExecSQL(SQL); } #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; grdXLBJDMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etCheckBox; grdXLBJDMX.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; grdXLBJDMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etString; ColumnEx.ShowHint = true; grdXLBJDMX.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; grdXLBJDMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etString; ColumnEx.ShowHint = true; grdXLBJDMX.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; grdXLBJDMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etNumber; ColumnEx.ShowHint = true; ColumnEx.NumberDecimalPlace = NumberDecimalPlace; grdXLBJDMX.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); grdXLBJDMX.Columns.Add(Column); gtGridView_Column ColumnEx = new gtGridView_Column(); ColumnEx.DataField = sDataField; ColumnEx.EditType = TEditType.etDateTime; ColumnEx.DateTimeEditKins = DateTimeKind; grdXLBJDMX.ColumnsEx.Insert(0, ColumnEx); } #endregion } }