using System; using System.Data; using System.Configuration; using System.Collections; using System.Collections.Generic; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using GThinking.N_MISPRO; using GThinking.N_MISPRO.Data; using GThinking.N_MODEL.Page; using GThinking.N_CONTROL; using GThinking.N_PUBLIC; using GThinking.N_MISPRO.Caching; using GThinking.N_MISPRO.Utility; namespace GThinking.N_XLXSBJ { public partial class XLJGB_PLSZList : OperationBase { XLJGB_PLSZ entity = new XLJGB_PLSZ(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860001; this.UMName = "线缆销售报价价格表"; this.CurMaster = Master; this.Tabs = Tab; this.PageHeight = 400; this.PageWidth = 500; AddListSetMap(new ListSet(pagSHD.ID, null, grdSHD, entity, UPSHD)); this.Master.BtnQueryVisible = false; this.Master.BtnReportVisible = false; base.InitPage(); grdSHD.EnabledToolBar = false; if (!IsPostBack) { InitControl(); Master_OnQuery(); GridDataBind(); } } #region 模板继承事件 protected override void Master_OnQuery() { entity.sJGBID = PageParam.GetRTrimString("XLXSJGBMX_JGBID"); base.Master_OnQuery(); grdSHD.SelectedIndex = -1; } protected override void GridDataBind() { base.GridDataBind(); } protected override bool DataLogicValid() { if (grdSHD.CheckedRows.Trim().Equals("")) { ShowMessage("请勾选需要设置的因子!"); return false; } Dictionary dicJGBTJYZ = XLBJDInfo.GetJGBBTYZ(PageParam.GetRTrimString("XLXSJGBMX_JGBID")); string[] sIndexList = grdSHD.CheckedRows.Trim().Split(','); foreach (string sIndex in sIndexList) { string sYZID = grdSHD.GetValueByFieldName("XLXSJGBYZ_YZID", grdSHD.NewRows[CMISproConvert.StrToInt(sIndex)]).Trim(); double fYZZ = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("YZZ", grdSHD.NewRows[CMISproConvert.StrToInt(sIndex)])); if (dicJGBTJYZ.ContainsKey(sYZID)&&fYZZ==0) { ShowMessage(string.Format("因子【{0}】的值为必填项,不允许为0!",dicJGBTJYZ[sYZID])); return false; } } return base.DataLogicValid(); } protected override bool Master_OnOK() { bool bResult = base.Master_OnOK(); if (!bResult) return false; TPageParams pageParams = new TPageParams(); pageParams.UrlPath = "XLJGB_PLSZXHInfo.aspx"; pageParams.AddString("XLXSJGBMX_JGBID", PageParam.GetRTrimString("XLXSJGBMX_JGBID")); pageParams.AddString("XLXHIDClientID", txtXLXHID.ClientID); pageParams.AddString("DYDJIDClientID", txtDYDJID.ClientID); pageParams.AddString("QRZTClientID", txtQRZT.ClientID); OpenDialogClickBtn(pageParams, btnRefresh.ClientID); return false; } protected override void Grid_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow && Tab.ActiveTabIndex == 1) { } base.Grid_RowDataBound(sender, e); } #endregion #region 自定义函数 private void UpdateJJ(TDatabase dberp) { if (grdSHD.CheckedRows.Trim().Equals("")) return; string[] sIndexList = grdSHD.CheckedRows.Trim().Split(','); string sYZIDList = ""; foreach (string sIndex in sIndexList) { string sYZID = grdSHD.GetValueByFieldName("XLXSJGBYZ_YZID", grdSHD.NewRows[CMISproConvert.StrToInt(sIndex)]).Trim(); if (!sYZID.Equals("")) { sYZIDList += sYZID + ","; } } sYZIDList = sYZIDList.TrimEnd(','); if (sYZIDList.Equals("")) return; string sJGBID = PageParam.GetRTrimString("XLXSJGBMX_JGBID"); string sJSBLFS = PageParam.GetRTrimString("JSBLFS"); string sXLXHIDList = txtXLXHID.Value.Trim(); string sDYDJIDList = txtDYDJID.Value.Trim(); int iXSWS = string.IsNullOrEmpty(GetOption("BJU002")) ? 5 : CMISproConvert.StrToInt(GetOption("BJU002")); if (iXSWS < 0) iXSWS = 0; else if (iXSWS > 8) iXSWS = 8; TSQL sSQL = new TSQL(dberp); //先清空当前价格表选中型号的调价因子值 string[] sYZIDs = sYZIDList.Split(','); sSQL.Clear(); sSQL.Add("update XLXSJGBYZZ0 set "); bool bFirstLine = true; foreach (string sIndex in sIndexList) { string sYZID = grdSHD.GetValueByFieldName("XLXSJGBYZ_YZID", grdSHD.NewRows[CMISproConvert.StrToInt(sIndex)]).Trim(); double fYZZ = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("YZZ", grdSHD.NewRows[CMISproConvert.StrToInt(sIndex)])); if (bFirstLine) sSQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sYZID.Replace("JZ", ""), fYZZ)); else sSQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sYZID.Replace("JZ", ""), fYZZ)); bFirstLine = false; } sSQL.Add(" where XLXSJGBYZZ0_JGBID=:pJGBID "); sSQL.Add(" and XLXSJGBYZZ0_XH in (select XLXSJGBMX_XH from XLXSJGBMX where XLXSJGBMX_JGBID=:pJGBID "); if (!sXLXHIDList.Equals("")) sSQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_XLXHID", sXLXHIDList)); if (!sDYDJIDList.Equals("")) sSQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_DYDJID", sDYDJIDList)); sSQL.Add(" ) "); sSQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(sSQL); //据材料成本及调价因子的值计算无税产品单价、含税产品单价 string sJSGS = XLBJDUtils.GetJGBJSGS(sJGBID); if (sJSGS.Trim().Equals("")) { #region 无公式计算 sSQL.Clear(); sSQL.Add("select XLXSJGBYZ_YZID,XLXSTZYZ_JJFS,XLXSTZYZ_TJYZID,XLXSTZYZ_TJYS"); sSQL.Add(" from XLXSJGBYZ"); sSQL.Add(" left join XLXSTZYZ on XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=XLXSJGBYZ_YZID"); sSQL.Add(" where XLXSJGBYZ_JGBID=:pJGBID"); sSQL.Add(" order by XLXSTZYZ_TJYZID,XLXSTZYZ_XSXH,XLXSJGBYZ_YZID"); sSQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGBYZ = dberp.OpenDataSet(sSQL); if (dsJGBYZ.Tables[0].Rows.Count > 0) { 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)"; sSQL.Clear(); sSQL.Add("merge into XLXSJGBMX tar "); sSQL.Add("using("); sSQL.Add(" select XLXSJGBMX_XH,XLXSJGBMX_JGBID,"); if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一) { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 sSQL.Add(string.Format("CEILING(RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*{0},8))/{0}", Math.Pow(10.0, iXSWS))); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJ ,"); sSQL.Add(string.Format("CEILING(RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*{0},8))/{0}", Math.Pow(10.0, iXSWS))); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJ, "); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJM ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJM "); } else { //先加点 sSQL.Add(string.Format("CEILING(RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*{0},8))/{0}", Math.Pow(10.0, iXSWS))); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJ ,"); sSQL.Add(string.Format("CEILING(RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*{0},8))/{0}", Math.Pow(10.0, iXSWS))); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJ ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0)),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJM ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0)),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJM "); } } else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位 { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 sSQL.Add(string.Format(" CEILING(RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),{0})/10)*10", iXSWS.ToString().Trim())); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJ ,"); sSQL.Add(string.Format(" CEILING(RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),{0})/10)*10", iXSWS.ToString().Trim())); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJ , "); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJM ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJM "); } else { //先加点 sSQL.Add(string.Format(" CEILING(RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)),{0})/10)*10", iXSWS.ToString().Trim())); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJ ,"); sSQL.Add(string.Format("CEILING(RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)),{0})/10)*10", iXSWS.ToString().Trim())); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJ ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0)),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJM ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0)),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJM "); } } else { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJ ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJ ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJM ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJM "); } else { //先加点 sSQL.Add("RoundFix(abs(isnull(XLXSJGBMX_WSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJ ,"); sSQL.Add("RoundFix(abs(isnull(XLXSJGBMX_HSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJ ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0)),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_WSBJM ,"); sSQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ case when XLXSJGBMX_JLDW in ('Km','千米') then 0.001 when XLXSJGBMX_JLDW in ('M','米') then 1 else 0 end * isnull(JJYZZ,0)),6)"); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) as XLXSJGBMX_HSBJM "); } } sSQL.Add(" from XLXSJGBMX "); sSQL.Add(" left join "); sSQL.Add("( "); sSQL.Add("select JGBID,XH," + sJDSQL + " as JDYZZ," + sKDSQL + " as KDYZZ," + sJJSQL + " as JJYZZ," + sSXSQL + " as SXYZZ "); sSQL.Add(" from "); sSQL.Add("("); sSQL.Add(" select XLXSJGBYZZ0_JGBID as JGBID,XLXSJGBYZZ0_XH as XH,"); sSQL.Add(" ("); sSQL.Add(string.Format("XLXSJGBYZZ0_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())) { sSQL.Add(string.Format("+XLXSJGBYZZ0_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", ""))); } else { if (sJJFS.Equals("JD")) sSQL.Add(") as " + "JDYZZ_" + sTJYZID); else if (sJJFS.Equals("KD")) sSQL.Add(") as " + "KDYZZ_" + sTJYZID); else if (sJJFS.Equals("JJ")) sSQL.Add(") as " + "JJYZZ_" + sTJYZID); else if (sJJFS.Equals("SX")) sSQL.Add(") as " + "SXYZZ_" + sTJYZID); sTJYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim(); sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim(); sSQL.Add(",("); sSQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", ""))); } } if (sJJFS.Equals("JD")) sSQL.Add(") as " + "JDYZZ_" + sTJYZID); else if (sJJFS.Equals("KD")) sSQL.Add(") as " + "KDYZZ_" + sTJYZID); else if (sJJFS.Equals("JJ")) sSQL.Add(") as " + "JJYZZ_" + sTJYZID); else if (sJJFS.Equals("SX")) sSQL.Add(") as " + "SXYZZ_" + sTJYZID); sSQL.Add(" from XLXSJGBYZZ0"); sSQL.Add(" where XLXSJGBYZZ0_JGBID=:pJGBID "); sSQL.Add(" ) a"); sSQL.Add(") b "); sSQL.Add("on XLXSJGBMX_JGBID=:pJGBID "); sSQL.Add(" and XLXSJGBMX_JGBID=JGBID "); sSQL.Add(" and XLXSJGBMX_XH=XH "); sSQL.Add(" and XLXSJGBMX_SYXH=0 "); sSQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (!sXLXHIDList.Equals("")) sSQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_XLXHID", sXLXHIDList)); if (!sDYDJIDList.Equals("")) sSQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_DYDJID", sDYDJIDList)); sSQL.Add(" and XLXSJGBMX_SYXH=0 "); sSQL.Add(" )sor "); sSQL.Add(" on( tar.XLXSJGBMX_JGBID=sor.XLXSJGBMX_JGBID and tar.XLXSJGBMX_XH=sor.XLXSJGBMX_XH ) "); sSQL.Add(" when matched then update set tar.XLXSJGBMX_WSBJ=sor.XLXSJGBMX_WSBJ,tar.XLXSJGBMX_HSBJ=sor.XLXSJGBMX_HSBJ,tar.XLXSJGBMX_WSBJM=sor.XLXSJGBMX_WSBJM,tar.XLXSJGBMX_HSBJM=sor.XLXSJGBMX_HSBJM "); sSQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(sSQL); } #endregion } else { #region 公式计算 Dictionary dicJGBYZJJF = XLJGB_CLJGTZList.GetJGBYZJJFS(sJGBID); string sJSGSKM = sJSGS; string sJSGSQT = sJSGS; foreach (string key in dicJGBYZJJF.Keys) { if (dicJGBYZJJF[key].Equals("JJ")) { sJSGSKM = sJSGSKM.Replace(key, "0.001 * " + key); sJSGSQT = sJSGSQT.Replace(key, "0 * " + key); } } sSQL.Clear(); sSQL.Add("update XLXSJGBMX set "); if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一) { sSQL.Add(string.Format("XLXSJGBMX_WSBJ=CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), Math.Pow(10.0, iXSWS))); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); sSQL.Add(string.Format("XLXSJGBMX_HSBJ=CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), Math.Pow(10.0, iXSWS))); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end), "); sSQL.Add(string.Format("XLXSJGBMX_WSBJM=RoundFix(case when XLXSJGBMX_JLDW in ('Km','千米') then {0} when XLXSJGBMX_JLDW in ('M','米') then {1} else {2} end,6)", sJSGSKM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"), sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"), sJSGSQT.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); sSQL.Add(string.Format("XLXSJGBMX_HSBJM=RoundFix(case when XLXSJGBMX_JLDW in ('Km','千米') then {0} when XLXSJGBMX_JLDW in ('M','米') then {1} else {2} end,6) ", sJSGSKM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"), sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"), sJSGSQT.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); } else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位 { sSQL.Add(string.Format("XLXSJGBMX_WSBJ = CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS.ToString().Trim())); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); sSQL.Add(string.Format("XLXSJGBMX_HSBJ = CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS.ToString().Trim())); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end), "); sSQL.Add(string.Format("XLXSJGBMX_WSBJM=RoundFix(case when XLXSJGBMX_JLDW in ('Km','千米') then {0} when XLXSJGBMX_JLDW in ('M','米') then {1} else {2} end,6) ", sJSGSKM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"), sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"), sJSGSQT.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); sSQL.Add(string.Format("XLXSJGBMX_HSBJM=RoundFix(case when XLXSJGBMX_JLDW in ('Km','千米') then {0} when XLXSJGBMX_JLDW in ('M','米') then {1} else {2} end,6) ", sJSGSKM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"), sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"), sJSGSQT.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); } else { sSQL.Add(string.Format("XLXSJGBMX_WSBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS)); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); sSQL.Add(string.Format("XLXSJGBMX_HSBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS)); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); sSQL.Add(string.Format("XLXSJGBMX_WSBJM=RoundFix(case when XLXSJGBMX_JLDW in ('Km','千米') then {0} when XLXSJGBMX_JLDW in ('M','米') then {1} else {2} end,6) ", sJSGSKM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"), sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"), sJSGSQT.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); sSQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); sSQL.Add(string.Format("XLXSJGBMX_HSBJM=RoundFix(case when XLXSJGBMX_JLDW in ('Km','千米') then {0} when XLXSJGBMX_JLDW in ('M','米') then {1} else {2} end,6) ", sJSGSKM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"), sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"), sJSGSQT.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); sSQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); } sSQL.Add("from XLXSJGBYZZ0"); sSQL.Add("where XLXSJGBMX_JGBID=:pJGBID "); if (!sXLXHIDList.Equals("")) sSQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_XLXHID", sXLXHIDList)); if (!sDYDJIDList.Equals("")) sSQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_DYDJID", sDYDJIDList)); sSQL.Add(" and XLXSJGBMX_JGBID=XLXSJGBYZZ0_JGBID "); sSQL.Add(" and XLXSJGBMX_XH=XLXSJGBYZZ0_XH "); sSQL.Add(" and XLXSJGBMX_SYXH=0 "); sSQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(sSQL); #endregion } } private void InitControl() { this.Master.PnlQuery.Visible = false; this.Master.PnlBill.Visible = false; //this.Master.PnlBill.GroupingText = "单据信息"; } #endregion protected void btnRefresh_Click(object sender, EventArgs e) { if (!txtQRZT.Value.Equals("Y")) return; TDatabase DBERP = TContextDatabases.GetDatabase("DBERP"); try { DBERP.BeginTrans(); //更新当前价格表下对应型号记录的基价调价因子栏目、基准报价 UpdateJJ(DBERP); DBERP.CommitTrans(); //执行完毕后关闭当前页面 DialogOperationScript dos = new DialogOperationScript(this); dos.ClickOwnerButton(PageParam.GetRTrimString("btnRefresh1CID")); dos.CloseSelf(); dos.Execute(); } catch (Exception ex) { ShowMessage(ex.Message); DBERP.RollbackTrans(); } } } }