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_MISPRO; using GThinking.N_MISPRO.Data; using GThinking.N_MODEL.Page; using GThinking.N_CONTROL; using GThinking.N_PUBLIC; using GThinking.N_PUBLIC2; using GThinking.N_MISPRO.Caching; using GThinking.N_MISPRO.Utility; using GThinking.N_MISPRO.TableCache; using System.Collections.Generic; using GThinking.N_MISPROAS.Services; namespace GThinking.N_XLXSBJ { public partial class XLJGB_CLJGTZList : OperationBase { XLJGB_CLJGTZ entity = new XLJGB_CLJGTZ(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860001; this.UMName = "线缆销售报价价格表"; this.CurMaster = Master; this.Tabs = Tab; this.PageHeight = 500; this.PageWidth = 700; CurMaster.BtnQueryVisible = false; CurMaster.BtnReportVisible = false; AddListSetMap(new ListSet(pagSHD.ID, null, grdSHD, entity, UPSHD)); base.CustomPageSize = 1000; base.InitPage(); if (!IsPostBack) InsertVHQB(PageParam.GetRTrimString("XLXSJGBMX_JGBID")); grdSHD.EnabledToolBar = false; CurMaster.PnlBill.Visible = false; CurMaster.PnlQuery.Visible = false; if (!PageParam.GetRTrimString("XLXSJGBMX_JGBID").Equals("")) { string sJGBID = PageParam.GetRTrimString("XLXSJGBMX_JGBID"); string sMXBH = PageParam.GetRTrimString("MXBH"); //如果不是组合产品目录价格表 或者不为导入类型 if (!PageParam.GetRTrimString("BJLY").Equals("D") && !PageParam.GetRTrimString("BJLY").Equals("C")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSBJD where isnull(XLXSBJD_WFID,' ')<>' ' and XLXSBJD_JGBID='{0}'", sJGBID))) { grdSHD.FindColumnByFieldName("XLXSCLHQ_WSJG").ReadOnly = true; grdSHD.FindColumnByFieldName("XLXSCLHQ_HSJG").ReadOnly = true; grdSHD.FindColumnByFieldName("XLXSCLHQ_BZ").ReadOnly = true; btnUpdCLHQ.Enabled = false; btnSZHQ.Enabled = false; } } if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSJGB where XLXSJGB_JGBID = '{0}' and XLXSJGB_MXBH ='{1}' and (isnull(XLXSJGB_TJZT,' ') = 'W' or isnull(XLXSJGB_TJZT,' ') = 'J') ", sJGBID, sMXBH))) { grdSHD.FindColumnByFieldName("XLXSCLHQ_WSJG").ReadOnly = true; grdSHD.FindColumnByFieldName("XLXSCLHQ_HSJG").ReadOnly = true; grdSHD.FindColumnByFieldName("XLXSCLHQ_BZ").ReadOnly = true; btnUpdCLHQ.Enabled = false; btnSZHQ.Enabled = false; } if (NeedJGBJJFP() && PageParam.GetRTrimString("TJYS").Equals("1")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSJGB_JGBID from XLXSJGB where ','||rtrim(isnull(XLXSJGB_JGBIDS,' '))||',' like '{0}'", "%," + sJGBID + ",%"))) { grdSHD.FindColumnByFieldName("XLXSCLHQ_WSJG").ReadOnly = true; grdSHD.FindColumnByFieldName("XLXSCLHQ_HSJG").ReadOnly = true; grdSHD.FindColumnByFieldName("XLXSCLHQ_BZ").ReadOnly = true; btnUpdCLHQ.Enabled = false; btnSZHQ.Enabled = false; } } } if (PageParam.GetRTrimString("XLXSJGBMX_JGBIDS").Equals("")) { grdSHD.FindColumnByFieldName("SYJGB_HSJG").Visible = false; } //从价格目录过来 if (PageParam.ContainsKey("FromJGBML")) { btnUpdCLHQ.Visible = false; } if (!IsPostBack) { Master_OnQuery(); GridDataBind(); } grdSHD.FindColumnByFieldName("XLXSCLHQ_WSJG").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD.FindColumnByFieldName("XLXSCLHQ_HSJG").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD.FindColumnByFieldName("XLXSCLHQ_WSJGF").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD.FindColumnByFieldName("XLXSCLHQ_HSJGF").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD.FindColumnByFieldName("SYJGB_HSJG").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; } #region 模板继承事件 protected override void Master_OnQuery() { entity.sJGBID = PageParam.GetRTrimString("XLXSJGBMX_JGBID"); entity.sVID = txtVCLHQID.Value; entity.sRYID = CurSession.RYID; entity.sJGBIDS = PageParam.GetRTrimString("XLXSJGBMX_JGBIDS"); if (PageParam.ContainsKey("FromJGBML")) { entity.FromJGBML = true; } base.Master_OnQuery(); grdSHD.SelectedIndex = -1; } protected override void GridDataBind() { base.GridDataBind(); } protected override bool DataLogicValid() { if (!PageParam.GetRTrimString("XLXSJGBMX_JGBID").Equals("")) { if (!PageParam.GetRTrimString("BJLY").Equals("D") && !PageParam.GetRTrimString("BJLY").Equals("C")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSBJD where isnull(XLXSBJD_WFID,' ')<>' ' and XLXSBJD_JGBID='{0}'", PageParam.GetRTrimString("XLXSJGBMX_JGBID")))) { ShowMessage("已被报价单使用,不允许调整价格表材料行情!"); return false; } } if (NeedJGBJJFP() && PageParam.GetRTrimString("TJYS").Equals("1")) { if ( CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSJGB_JGBID from XLXSJGB where ','||rtrim(isnull(XLXSJGB_JGBIDS,' '))||',' like '{0}'", "%," + PageParam.GetRTrimString("XLXSJGBMX_JGBID") + ",%"))) { ShowMessage("已被其他价格表作为所依出厂价,不允许调整价格表材料行情!"); return false; } } } return base.DataLogicValid(); } protected override bool Master_OnOK() { bool bResult = base.Master_OnOK(); if (!bResult) return false; TDatabase DBERP = TContextDatabases.GetDatabase("DBERP"); //接收0,1,当接收3时,同步接收对应JGBIDS,仅一个值 string sJGBID = PageParam.GetRTrimString("XLXSJGBMX_JGBID"); string sJGBIDS = PageParam.GetRTrimString("XLXSJGBMX_JGBIDS"); string sMXBH = PageParam.GetRTrimString("MXBH"); string sTJYS = PageParam.GetRTrimString("TJYS"); int iXSWS = string.IsNullOrEmpty(GetOption("BJU002")) ? 5 : CMISproConvert.StrToInt(GetOption("BJU002")); if (iXSWS < 0) iXSWS = 0; else if (iXSWS > 8) iXSWS = 8; string sBJU003 = GetOption(100860000, "BJU003"); if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSJGB where XLXSJGB_JGBID = '{0}' and XLXSJGB_MXBH ='{1}' and (isnull(XLXSJGB_TJZT,' ') = 'W' or isnull(XLXSJGB_TJZT,' ') = 'J') ", sJGBID, sMXBH))) { ShowMessage("正在同步,无需重复执行!"); return false; } TSQL tmpSQL = new TSQL(DBERP); try { DataSet dsJGB2 = null; bool bNeedTB = false; //如果不是导入类型价格表、且不是组合产品目录价格表,才执行同步语句,也才会询问是否同步区域价 if (!PageParam.GetRTrimString("BJLY").Equals("D") && !PageParam.GetRTrimString("BJLY").Equals("C")) { tmpSQL.Clear(); tmpSQL.Add("select XLXSJGB_JGBID,XLXSJGB_JGBMC,XLXSJGB_JGBIDS from XLXSJGB where XLXSJGB_MXBH=:pMXBH and XLXSJGB_TJYS='2'"); tmpSQL.Add(" and isnull(XLXSJGB_JGBIDS,' ')<>' ' and ','||rtrim(isnull(XLXSJGB_JGBIDS,' '))||',' like :pJGBID"); tmpSQL.Add(" order by XLXSJGB_JGBID"); tmpSQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); tmpSQL.ParamByName("pJGBID").Value = "%," + sJGBID + ",%"; dsJGB2 = DBERP.OpenDataSet(tmpSQL); //如果当前价格表存在关联的区域价价格表,则进行询问 if (dsJGB2.Tables[0].Rows.Count > 0) { string sMsg = "是否一并执行如下区域价的同步操作?" + "\r\n"; for (int i = 0; i < dsJGB2.Tables[0].Rows.Count; i++) { sMsg += dsJGB2.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim() + "|" + dsJGB2.Tables[0].Rows[i]["XLXSJGB_JGBMC"].ToString().Trim() + "\r\n"; } Confirm.Register("IsQD", sMsg); Confirm.ShowBtnText = TConfirm.cBtnText.Yes_No; if (Confirm.GetValue("IsQD").Trim().Equals("")) { Confirm.Ask("IsQD"); return false; } else if (Confirm.GetValue("IsQD").Trim().Equals("N")) { //否 Confirm.Clear(); //return false; } else if (Confirm.GetValue("IsQD").Trim().Equals("Y")) { //是 bNeedTB = true; Confirm.Clear(); } } } DBERP.BeginTrans(); //先删除销售价格表的材料行情 DBERP.ExecSQL(string.Format("delete from XLXSCLHQ where XLXSCLHQ_JGBID='{0}'", sJGBID)); //将临时表内容更新至材料行情、物料行情 InsertHQB(DBERP, sJGBID, CurSession.RYID, txtVCLHQID.Value); if (PageParam.GetRTrimString("BJLY").Equals("D")) { DBERP.CommitTrans(); ShowMessage("已完成材料行情调整!"); CloseWindow(); } else { string sMsgTB = ""; if (!PageParam.GetRTrimString("BJLY").Equals("C"))//如果不是组合产品目录价格表,才执行同步语句 { if (sTJYS.Equals("3")) { //sJGBIDS不为空,则XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB只用来记录材料价价差 XLBJDCalcUtils.UpdateJGBTJYS_3(DBERP, tmpSQL, sJGBID, iXSWS, PageParam.GetRTrimString("JSBLFS"), CurSession.UserId, CurSession.UserName, sJGBIDS, "", 0); //XLJGB_CLJGTZList.UpdateCLCB(DBERP, tmpSQL, sJGBID, "", "", iXSWS, PageParam.GetRTrimString("JSBLFS"), CurSession.UserId, CurSession.UserName, 0, sJGBIDS, "", "", 0, 0, "", 0); //sJGBIDS不为空,则利用XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB记录的材料价价差更新价格表基价、表价 //XLJGB_CLJGTZList.UpdateCLCB_TJYS(DBERP, PageParam.GetRTrimString("MXBH"), sJGBID, sJGBIDS, "3"); XLJGB_CLJGTZList.DoCPJJ(DBERP, PageParam.GetRTrimString("MXBH"), sJGBID, false, "", "", iXSWS, PageParam.GetRTrimString("JSBLFS"), CurSession.UserId, CurSession.UserName, 0, sBJU003); } else if (sTJYS.Equals("0") || sTJYS.Equals("1")) { //初始化调价人、起止调价时间 tmpSQL.Clear(); tmpSQL.Add("update XLXSJGB set "); tmpSQL.Add(" XLXSJGB_TJRGH=:pTJRGH,XLXSJGB_TJKSSJ=null,XLXSJGB_TJWCSJ=null,"); tmpSQL.Add(" XLXSJGB_TJZT=' '");//不设置为“W|等待”,以防计算异常或超时时,记录被锁无法编辑 tmpSQL.Add(" where XLXSJGB_MXBH=:pMXBH"); tmpSQL.Add(" and XLXSJGB_JGBID=:pJGBID"); tmpSQL.ParamByName("pMXBH").Value = sMXBH; tmpSQL.ParamByName("pJGBID").Value = sJGBID; tmpSQL.ParamByName("pTJRGH").Value = CurSession.UserId; DBERP.ExecSQL(tmpSQL); if (XLBJDUtils.CheckJGBTJServ()) { //使用异步服务计算 ServiceParams serviceParams = new ServiceParams(); JGBTJXX objJGB = new JGBTJXX(); objJGB.JGBID = sJGBID; objJGB.MXBH = sMXBH; objJGB.JJLY = "A"; objJGB.XSWS = iXSWS; objJGB.JGCZBID = ""; objJGB.JGCZBBBID = ""; objJGB.JSBLFS = PageParam.GetRTrimString("JSBLFS"); Dictionary dicJGB2 = new Dictionary(); for (int i = 0; i < dsJGB2.Tables[0].Rows.Count; i++) { dicJGB2.Add(dsJGB2.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim(), dsJGB2.Tables[0].Rows[i]["XLXSJGB_JGBIDS"].ToString().Trim()); } objJGB.dicJGB2 = dicJGB2; objJGB.bUpdateByJCZB = false; objJGB.bNeedTB = bNeedTB; objJGB.XLJGU007 = GetOption(102579000, "XLJGU007"); objJGB.sBJU003 = sBJU003; serviceParams.Add("objJGB", objJGB); ServiceProgress serviceProgress = AsyncService.Enqueue("N_XLXSBJ", 100860077, "AsyncDoJGBTJ", serviceParams); tmpSQL.Clear(); tmpSQL.Add("update XLXSJGB set "); tmpSQL.Add(" XLXSJGB_TJZT='W'");//W|等待 tmpSQL.Add(" where XLXSJGB_MXBH=:pMXBH"); tmpSQL.Add(" and XLXSJGB_JGBID=:pJGBID"); tmpSQL.ParamByName("pMXBH").Value = sMXBH; tmpSQL.ParamByName("pJGBID").Value = sJGBID; DBERP.ExecSQL(tmpSQL); } else { tmpSQL.Clear(); tmpSQL.Add("update XLXSJGB set XLXSJGB_TJZT='J',");//J|计算中 tmpSQL.Add(" XLXSJGB_TJKSSJ=:pTJKSSJ"); tmpSQL.Add(" where XLXSJGB_MXBH=:pMXBH"); tmpSQL.Add(" and XLXSJGB_JGBID=:pJGBID"); tmpSQL.ParamByName("pMXBH").Value = sMXBH; tmpSQL.ParamByName("pJGBID").Value = sJGBID; tmpSQL.ParamByName("pTJKSSJ").Value = MISproUtils.GetServerTime(); DBERP.ExecSQL(tmpSQL); DoCLCB(DBERP, PageParam.GetRTrimString("MXBH"), sJGBID, CurSession.UserId, CurSession.UserName, iXSWS, PageParam.GetRTrimString("JSBLFS"), sBJU003); //若当前价格表调价因素为1,且价格表明细存在扩充的明细记录,则自动执行型号加点扩充。 if (sTJYS.Equals("1") && CMISproDataBase.ExistsRecord("DBERP",string.Format("SELECT 1 from XLXSJGBMX where XLXSJGBMX_JGBID = '{0}' and XLXSJGBMX_SYXH>0 ",sJGBID))) { string sDXKCMessage = string.Empty; string sXHJDKCMessage = string.Empty; XLJGB_JGBMXList.DoXHJDDZKC(DBERP, tmpSQL, sJGBID, PageParam.GetRTrimString("JSBLFS"), iXSWS.ToString(), CurSession.UserName, CurSession.UserId, ref sDXKCMessage, ref sXHJDKCMessage, GetOption(102579000, "XLJGU007")); } if (bNeedTB && dsJGB2 != null)//需要同步区域价 { for (int i = 0; i < dsJGB2.Tables[0].Rows.Count; i++) { if (TBCLCB_2(DBERP, PageParam.GetRTrimString("MXBH"), dsJGB2.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim(), dsJGB2.Tables[0].Rows[i]["XLXSJGB_JGBIDS"].ToString().Trim(), iXSWS, PageParam.GetRTrimString("JSBLFS"), CurSession.UserId, CurSession.UserName, sBJU003)) { sMsgTB += dsJGB2.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim() + "|" + dsJGB2.Tables[0].Rows[i]["XLXSJGB_JGBMC"].ToString().Trim() + "\r\n"; } } } } } } DBERP.CommitTrans(); if (!PageParam.GetRTrimString("BJLY").Equals("C")) { if (sTJYS.Equals("3")) { ShowMessage("已完成材料行情调整,并同步了基价、表价!"); } else if (sTJYS.Equals("0") || sTJYS.Equals("1")) { if (XLBJDUtils.CheckJGBTJServ()) { ShowMessage("正在同步,请稍后查看!"); } else { tmpSQL.Clear(); tmpSQL.Add("update XLXSJGB set XLXSJGB_TJZT='S',");//S|完成 tmpSQL.Add(" XLXSJGB_TJWCSJ=:pTJWCSJ"); tmpSQL.Add(" where XLXSJGB_MXBH=:pMXBH"); tmpSQL.Add(" and XLXSJGB_JGBID=:pJGBID"); tmpSQL.ParamByName("pMXBH").Value = sMXBH; tmpSQL.ParamByName("pJGBID").Value = sJGBID; tmpSQL.ParamByName("pTJWCSJ").Value = MISproUtils.GetServerTime(); DBERP.ExecSQL(tmpSQL); if (sMsgTB.Trim().Equals("")) ShowMessage("已完成材料行情调整,并同步了基价、表价!"); else ShowMessage("已完成材料行情调整,并同步了基价、表价,以及如下区域价的基价、表价!" + "\r\n" + sMsgTB.Trim()); } } CacheNotify.TableIsUpdated("DBERP", "XLXSJGB"); DialogOperationScript dos = new DialogOperationScript(this); if (!PageParam.ContainsKey("FromJGBML")) dos.ClickOwnerButton(PageParam.GetRTrimString("btnRefreshCID")); dos.CloseSelf(); dos.Execute(); } else { CacheNotify.TableIsUpdated("DBERP", "XLXSJGB"); ShowMessage("已完成材料行情调整!"); CloseWindow(); } } } catch (Exception ex) { ShowMessage(ex.Message); DBERP.RollbackTrans(); if (!PageParam.GetRTrimString("BJLY").Equals("C")) { if (sTJYS.Equals("0") || sTJYS.Equals("1")) { if (!XLBJDUtils.CheckJGBTJServ()) { tmpSQL.Clear(); tmpSQL.Add("update XLXSJGB set XLXSJGB_TJZT='F'");//F|失败 tmpSQL.Add(" where XLXSJGB_MXBH=:pMXBH"); tmpSQL.Add(" and XLXSJGB_JGBID=:pJGBID"); tmpSQL.ParamByName("pMXBH").Value = sMXBH; tmpSQL.ParamByName("pJGBID").Value = sJGBID; DBERP.ExecSQL(tmpSQL); CacheNotify.TableIsUpdated("DBERP", "XLXSJGB"); } } } return false; } 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); } protected void grdSHD_CalculateField(object sender, CalculateFieldEventArgs e) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); string sJGBID = PageParam.GetRTrimString("XLXSJGBMX_JGBID"); string sVID = GetVID(sJGBID, CurSession.RYID); string sRYID = CurSession.RYID; string sBJCLID = e.RowData["XLXSCLHQ_BJCLID"].ToString().Trim(); string sCLJG = e.RowData["XLXSCLHQ_WSJG"].ToString().Trim(); string sHSJG = e.RowData["XLXSCLHQ_HSJG"].ToString().Trim(); string sWSJGF = e.RowData["XLXSCLHQ_WSJGF"].ToString().Trim(); string sHSJGF = e.RowData["XLXSCLHQ_HSJGF"].ToString().Trim(); string sBZ = e.RowData["XLXSCLHQ_BZ"].ToString().Trim(); if (e.EventFieldName.Equals("XLXSCLHQ_WSJG")) { double dHSJG = NumberUtils.RoundX(CMISproConvert.StrToFloat(e.EventFieldValue) * (1 + CMISproConvert.StrToFloat(e.RowData["XLXSBJCL_ZZSL"].ToString().Trim(), 0) / 100), XLBJDUtils.BJCLPriceDecimal); sCLJG = e.EventFieldValue; sHSJG = dHSJG.ToString(); e.ResultPairs.Add("XLXSCLHQ_HSJG", dHSJG.ToString()); e.ResultPairs.Add("XLXSCLHQ_WHR", CurSession.UserName); e.ResultPairs.Add("XLXSCLHQ_WHRID", CurSession.UserId); e.ResultPairs.Add("XLXSCLHQ_WHSJ", DateTime.Now.ToString().Trim()); } else if (e.EventFieldName.Equals("XLXSCLHQ_HSJG")) { double dCLJG = NumberUtils.RoundX(CMISproConvert.StrToFloat(e.EventFieldValue) / (1 + CMISproConvert.StrToFloat(e.RowData["XLXSBJCL_ZZSL"].ToString().Trim(), 0) / 100), XLBJDUtils.BJCLPriceDecimal); sHSJG = e.EventFieldValue; sCLJG = dCLJG.ToString(); e.ResultPairs.Add("XLXSCLHQ_WSJG", dCLJG.ToString()); e.ResultPairs.Add("XLXSCLHQ_WHR", CurSession.UserName); e.ResultPairs.Add("XLXSCLHQ_WHRID", CurSession.UserId); e.ResultPairs.Add("XLXSCLHQ_WHSJ", DateTime.Now.ToString().Trim()); } else if (e.EventFieldName.Equals("XLXSCLHQ_BZ")) { e.ResultPairs.Add("XLXSCLHQ_WHR", CurSession.UserName); e.ResultPairs.Add("XLXSCLHQ_WHRID", CurSession.UserId); e.ResultPairs.Add("XLXSCLHQ_WHSJ", DateTime.Now.ToString().Trim()); } SQL.Clear(); SQL.Add("select V_XLXSCLHQ_YXQS from V_XLXSCLHQ where V_XLXSCLHQ_JGBID =:pJGBID and V_XLXSCLHQ_BJCLID = :pBJCLID and V_XLXSCLHQ_ID = :pVID and V_XLXSCLHQ_TZRYID = :pRYID "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pBJCLID").Value = sBJCLID; SQL.ParamByName("pVID").Value = sVID; SQL.ParamByName("pRYID").Value = sRYID; DataSet dsCLHQ = dberp.OpenDataSet(SQL); if (dsCLHQ.Tables[0].Rows.Count > 0) { SQL.Clear(); SQL.Add(" update V_XLXSCLHQ "); SQL.Add(" set V_XLXSCLHQ_WSJG = :XLXSCLHQ_WSJG,V_XLXSCLHQ_HSJG=:XLXSCLHQ_HSJG, "); SQL.Add(" V_XLXSCLHQ_WHRID = :XLXSCLHQ_WHRID, V_XLXSCLHQ_WHR = :XLXSCLHQ_WHR, V_XLXSCLHQ_WHSJ = :XLXSCLHQ_WHSJ,V_XLXSCLHQ_BZ=:XLXSCLHQ_BZ "); SQL.Add(" where V_XLXSCLHQ_JGBID =:pJGBID and V_XLXSCLHQ_YXQS= :pRQ and V_XLXSCLHQ_BJCLID = :pBJCLID and V_XLXSCLHQ_ID = :pVID and V_XLXSCLHQ_TZRYID = :pRYID "); SQL.ParamByName("XLXSCLHQ_WSJG").Value = sCLJG; SQL.ParamByName("XLXSCLHQ_HSJG").Value = sHSJG; SQL.ParamByName("pRQ").Value = dsCLHQ.Tables[0].Rows[0][0].ToString().Trim(); SQL.ParamByName("XLXSCLHQ_BZ").Value = sBZ; SQL.ParamByName("XLXSCLHQ_WHR").Value = CurSession.UserName; SQL.ParamByName("XLXSCLHQ_WHRID").Value = CurSession.UserId; SQL.ParamByName("XLXSCLHQ_WHSJ").Value = DateTime.Now; SQL.ParamByName("pBJCLID").Value = sBJCLID; SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pVID").Value = sVID; SQL.ParamByName("pRYID").Value = sRYID; dberp.ExecSQL(SQL); } else { SQL.Clear(); SQL.Add(" insert into V_XLXSCLHQ( "); SQL.Add(" V_XLXSCLHQ_BJCLID,V_XLXSCLHQ_JGBID, V_XLXSCLHQ_WSJG,V_XLXSCLHQ_HSJG, V_XLXSCLHQ_WSJGF,V_XLXSCLHQ_HSJGF, V_XLXSCLHQ_YXQS, V_XLXSCLHQ_YXQZ,V_XLXSCLHQ_BZ,"); SQL.Add(" V_XLXSCLHQ_ID,V_XLXSCLHQ_TZRYID,V_XLXSCLHQ_TZRYGH,V_XLXSCLHQ_TZRYMC,V_XLXSCLHQ_WHRID, V_XLXSCLHQ_WHR, V_XLXSCLHQ_WHSJ )"); SQL.Add(" values("); SQL.Add(" :XLXSCLHQ_BJCLID,:XLXSCLHQ_JGBID, :XLXSCLHQ_WSJG,:XLXSCLHQ_HSJG, :XLXSCLHQ_WSJGF, :XLXSCLHQ_HSJGF,:XLXSCLHQ_YXQS, :XLXSCLHQ_YXQZ,"); SQL.Add(" :XLXSCLHQ_BZ,:V_XLXSCLHQ_ID,:V_XLXSCLHQ_TZRYID,:V_XLXSCLHQ_TZRYGH,:V_XLXSCLHQ_TZRYMC,:XLXSCLHQ_WHRID, :XLXSCLHQ_WHR, :XLXSCLHQ_WHSJ )"); SQL.ParamByName("XLXSCLHQ_BJCLID").Value = sBJCLID; SQL.ParamByName("XLXSCLHQ_JGBID").Value = sJGBID; SQL.ParamByName("V_XLXSCLHQ_ID").Value = sVID; SQL.ParamByName("V_XLXSCLHQ_TZRYID").Value = CurSession.RYID; SQL.ParamByName("V_XLXSCLHQ_TZRYGH").Value = CurSession.UserId; SQL.ParamByName("V_XLXSCLHQ_TZRYMC").Value = CurSession.UserName; SQL.ParamByName("XLXSCLHQ_WSJG").Value = sCLJG; SQL.ParamByName("XLXSCLHQ_HSJG").Value = sHSJG; SQL.ParamByName("XLXSCLHQ_WSJGF").Value = sWSJGF; SQL.ParamByName("XLXSCLHQ_HSJGF").Value = sHSJGF; SQL.ParamByName("XLXSCLHQ_YXQS").Value = "1900-01-01 00:00:00.000"; SQL.ParamByName("XLXSCLHQ_YXQZ").Value = "1900-01-01 00:00:00.000"; SQL.ParamByName("XLXSCLHQ_BZ").Value = sBZ; SQL.ParamByName("XLXSCLHQ_WHR").Value = CurSession.UserName; SQL.ParamByName("XLXSCLHQ_WHRID").Value = CurSession.UserId; SQL.ParamByName("XLXSCLHQ_WHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); } } #endregion #region 自定义函数 /// /// 价格表基价复盘 /// /// public static bool NeedJGBJJFP() { return XLBJDUtils.GetXLXSBJPZXX(100860018).NeedJGBJJFP(); } //根据价格表专属的材料行情,重新计算价格表的材料成本、无税基准报价、含税基准报价 public static void DoCLCB(TDatabase dberp, string sMXBH, string sJGBID, string sWHRID, string sWHR, int iXSWS, string sJSBLFS, string sBJU003) { DoCLCB(dberp, sMXBH, sJGBID, sWHRID, sWHR, "", "", iXSWS, sJSBLFS,sBJU003); } //如果传入结构尺重表号,则只计算该结构尺重表下的产品 public static void DoCLCB(TDatabase dberp, string sMXBH, string sJGBID, string sWHRID, string sWHR, string sJGCZBID, string sJGCZBBBID, int iXSWS, string sJSBLFS, string sBJU003) { DoCLCB(dberp, sMXBH, sJGBID, sWHRID, sWHR, sJGCZBID, sJGCZBBBID, iXSWS, sJSBLFS, "",sBJU003); } //价格表调价因素3,则XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB只用来记录材料价价差 public static void DoCLCB(TDatabase dberp, string sMXBH, string sJGBID, string sWHRID, string sWHR, string sJGCZBID, string sJGCZBBBID, int iXSWS, string sJSBLFS, string sJGBID1,string sBJU003) { bool IsJGBID3 = false;//sJGBID1不为空可能是价格表设置了所依出厂价,用于导入基价用的,改为根据调价因素3判断 if (!sJGBID1.Equals("")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSJGB where XLXSJGB_JGBID='{0}' and XLXSJGB_TJYS='3'", sJGBID))) IsJGBID3 = true; } TSQL SQL = new TSQL(dberp); //据材料行情补齐销售价格表的材料行情 SQL.Clear(); SQL.Add("insert into XLXSCLHQ(XLXSCLHQ_JGBID,XLXSCLHQ_BJCLID,XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_HSJGF,XLXSCLHQ_WSJGF,"); SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_HSJG1,XLXSCLHQ_WSJG1,XLXSCLHQ_JGBL1,"); SQL.Add(" XLXSCLHQ_YXQS,XLXSCLHQ_YXQZ,XLXSCLHQ_BZ,XLXSCLHQ_WHRID,XLXSCLHQ_WHR,XLXSCLHQ_WHSJ)"); SQL.Add(" select :pJGBID,XLXSBJCL_BJCLID,isnull(XLXSCLHQ_WSJG,0.0),isnull(XLXSCLHQ_HSJG,0.0),isnull(XLXSCLHQ_HSJGF,0.0),isnull(XLXSCLHQ_WSJGF,0.0),"); SQL.Add(" isnull(XLXSCLHQ_JGYBJCLID1,' '),isnull(XLXSCLHQ_HSJG1,0.0),isnull(XLXSCLHQ_WSJG1,0.0),isnull(XLXSCLHQ_JGBL1,0.0),"); SQL.Add(" convert(datetime, '1900-01-01'),convert(datetime, '1900-01-01'),"); SQL.Add(" isnull(XLXSCLHQ_BZ,' '),:pWHRID,:pWHR,:pWHSJ "); SQL.Add(" from XLXSBJCL,"); SQL.Add("("); //取销售价格表没有的材料行情 SQL.Add("select XLXSCLHQ_BJCLID,XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_HSJGF,XLXSCLHQ_WSJGF,"); SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_HSJG1,XLXSCLHQ_WSJG1,XLXSCLHQ_JGBL1,"); SQL.Add(" XLXSCLHQ_BZ"); SQL.Add(" from XLXSCLHQ,"); SQL.Add("("); SQL.Add("select a.XLXSCLHQ_BJCLID as BJCLID,max(a.XLXSCLHQ_YXQS)as maxYXQS"); SQL.Add(" from XLXSCLHQ a"); SQL.Add(" where a.XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add(" and a.XLXSCLHQ_YXQS<=:pRQ "); SQL.Add(" and isnull(a.XLXSCLHQ_YXQZ,convert(datetime,'9999-12-31'))>=:pRQ "); SQL.Add(" and not exists");//排除掉销售价格表已有的材料行情 SQL.Add("("); SQL.Add("select 1 from XLXSCLHQ b where b.XLXSCLHQ_JGBID=:pJGBID and b.XLXSCLHQ_BJCLID=a.XLXSCLHQ_BJCLID"); SQL.Add(")"); SQL.Add(" group by a.XLXSCLHQ_BJCLID"); SQL.Add(") c"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID "); SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS"); SQL.Add(") d"); SQL.Add(" where XLXSCLHQ_BJCLID=XLXSBJCL_BJCLID"); SQL.Add(" and isnull(XLXSBJCL_BJCLMC,' ')<>' '"); //SQL.Add(" order by XLXSCLHQ_BJCLID"); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHRID").Value = sWHRID; SQL.ParamByName("pWHR").Value = sWHR; SQL.ParamByName("pWHSJ").Value = DateTime.Now; SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); dberp.ExecSQL(SQL); if (XLJGB_CLJGTZList.NeedJGBJJFP()) { //据物料行情补齐销售价格表的物料行情 InsertXLXSJGBWLHQbyJGBCLHQ(dberp, SQL, sJGBID, DateTime.Now.ToShortDateString(), sWHR, sWHRID, false); } //价格表调价因素3,则利用XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB记录的材料价价差更新价格表基价、表价 if (IsJGBID3) { XLBJDCalcUtils.UpdateJGBTJYS_3(dberp, SQL, sJGBID, iXSWS, sJSBLFS, sWHRID, sWHR, sJGBID1, "", 0); //UpdateCLCB_TJYS(dberp, sMXBH, sJGBID, sJGBID1, "3"); } else { //据材料行情、材料单耗计算材料成本 UpdateCLCB(dberp, SQL, sJGBID, sJGCZBID, sJGCZBBBID, iXSWS, sJSBLFS, sWHRID, sWHR, 0, sJGBID1, "", "", 0, 0, "", 0,sBJU003); } DoCPJJ(dberp, sMXBH, sJGBID, false, sJGCZBID, sJGCZBBBID, iXSWS, sJSBLFS, sWHRID, sWHR, 0, sBJU003); ReCalcWSJG(dberp,SQL,sJGBID,sMXBH,iXSWS,0); } public static void UpdateCLCB(TDatabase dberp, TSQL SQL, string sJGBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR,string sBJU003) { UpdateCLCB(dberp, SQL, sJGBID, "", "", iXSWS, sJSBLFS, sWHRID, sWHR, 0, "", "", "", 0, 0, "", 0, sBJU003);//参数maxXH为0时的处理逻辑保持不变 } public static void UpdateCLCB(TDatabase dberp, TSQL SQL, string sJGBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, double maxXH, string sBJU003) { UpdateCLCB(dberp, SQL, sJGBID, "", "", iXSWS, sJSBLFS, sWHRID, sWHR, maxXH, "", "", "", 0, 0, "", 0, sBJU003); } //调价因素3价格表,则XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB只用来记录材料价价差 public static void UpdateCLCB(TDatabase dberp, TSQL SQL, string sJGBID, string sJGCZBID, string sJGCZBBBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, double maxXH, string sJGBID1, string sTBJCLID_JGBBJ, string sLBJCLID_JGBBJ, double dTJ_JGBBJ, double dLJ_JGBBJ, string sBJDID, int iMinXH, string sBJDXHList, string sBJU003) { bool bExistsWLHQ = false;//是否存在物料行情报价材料 if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJCL_BJCLID from XLXSBJCL where XLXSBJCL_BJHQ='2'"))) bExistsWLHQ = true; bool IsJGBID3 = false; if (!sJGBID1.Equals("")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSJGB where XLXSJGB_JGBID='{0}' and XLXSJGB_TJYS='3'", sJGBID))) IsJGBID3 = true; } #region 产品目录限制 bool bCPMLXZ = false; string sCPMLIDS = string.Empty; if (XLBJDUtils.IsJGEJGB(sJGBID) && !sBJDID.Equals("")) { //查询报价分类产品目录 SQL.Clear(); SQL.Add(@"select XLXSCPML_CPMLIDS from XLXSBJD left join XLXSBJFL on XLXSBJD_BJFLID=XLXSBJFL_BJFLID left join XLXSCPML on XLXSCPML_CPMLID=XLXSBJFL_CPMLID where XLXSBJD_BJDID=:pBJDID and isnull(XLXSCPML_CPMLIDS,' ')<>' ' "); SQL.ParamByName("pBJDID").Value = sBJDID; DataSet dsFLML = dberp.OpenDataSet(SQL); if (dsFLML.Tables[0].Rows.Count > 0) { bCPMLXZ = true; string[] sCPMLID_List = dsFLML.Tables[0].Rows[0][0].ToString().Trim().Split(','); sCPMLIDS = "("; for (int i = 0; i < sCPMLID_List.Length; i++) { sCPMLIDS += "'" + sCPMLID_List[i] + "',"; } sCPMLIDS = sCPMLIDS.TrimEnd(',') + ")"; } } #endregion string sBJFLID = ""; string sBJRQ = ""; string sTBJCLID = ""; string sLBJCLID = ""; double dTJ = 0.0; double dLJ = 0.0; string sBJDHQLX = "JGBHQ";//报价单行情类型 bool bNeedCalJGBEx = false;//被报价单调用时,是否需要重算衍生扩展价格表 if (!sBJDID.Trim().Equals("")) { SQL.Clear(); SQL.Add("select XLXSBJD_BJFLID,XLXSBJD_BJRQ,XLXSBJD_TJ,XLXSBJD_LJ, "); SQL.Add(" XLXSBJFL_BJDHQLY,XLXSBJFL_TZCLHQ,XLXSBJFL_TBJCLID,XLXSBJFL_LBJCLID"); SQL.Add(" from XLXSBJD"); SQL.Add(" left join XLXSBJFL on XLXSBJFL_BJFLID=XLXSBJD_BJFLID"); SQL.Add(" where XLXSBJD_BJDID=:pBJDID"); SQL.ParamByName("pBJDID").Value = sBJDID.Trim(); DataSet dsBJD = dberp.OpenDataSet(SQL); if (dsBJD.Tables[0].Rows.Count > 0) { sBJFLID = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJFLID"].ToString().Trim(); sBJRQ = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJRQ"].ToString().Trim(); sTBJCLID = dsBJD.Tables[0].Rows[0]["XLXSBJFL_TBJCLID"].ToString().Trim(); sLBJCLID = dsBJD.Tables[0].Rows[0]["XLXSBJFL_LBJCLID"].ToString().Trim(); dTJ = CMISproConvert.StrToFloat(dsBJD.Tables[0].Rows[0]["XLXSBJD_TJ"].ToString()); dLJ = CMISproConvert.StrToFloat(dsBJD.Tables[0].Rows[0]["XLXSBJD_LJ"].ToString()); string sBJDHQLY = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim(); if (sBJDHQLY.Equals("1"))//1|价格表行情 { //报价分类设置了“报价日行情材料” if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJFLBJRHQCL_BJCLID from XLXSBJFLBJRHQCL where XLXSBJFLBJRHQCL_BJFLID='{0}'", sBJFLID))) { sBJDHQLX = "BJRCLHQ"; } else sBJDHQLX = "JGBHQ"; //允许调整材料行情且存在报价单材料行情时使用报价单材料行情计算 if (dsBJD.Tables[0].Rows[0]["XLXSBJFL_TZCLHQ"].ToString().Trim().Equals("Y")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJDCLHQ_BJCLID from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID='{0}'", sBJDID))) sBJDHQLX = "BJDHQ"; } } else//2|报价日行情 { sBJDHQLX = "BJRHQ"; if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJDCLHQ_BJCLID from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID='{0}'", sBJDID))) sBJDHQLX = "BJDHQ"; } } if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSJGBMX_XH from XLXSJGBMX where XLXSJGBMX_JGBID='{0}' and XLXSJGBMX_SYXH>0.0", sJGBID))) { bNeedCalJGBEx = true; } } bool bNeedAddWLHQ = bExistsWLHQ && (!IsJGBID3 || sBJDHQLX.Equals("BJDHQ"));//若调价因素3价格表,无需执行此分支,因为价格表行情不单独记录物料行情,所以这部分材料价价差始终是0 #region 加工物料行情校验 if (bExistsWLHQ) { SQL.Clear(); SQL.Add(" select XLXSBJCLWL_WLID,A.WL_MC as WLMC,XLXSBJCLWL_JGYWLID,B.WL_MC as JGYWLMC "); SQL.Add(" from XLXSBJCLWL "); SQL.Add(" left join WL A on A.WL_WLID = XLXSBJCLWL_WLID "); SQL.Add(" left join WL B on B.WL_WLID = XLXSBJCLWL_JGYWLID "); SQL.Add(" where XLXSBJCLWL_JGYWLID <> '-' "); DataSet dsCLWL = dberp.OpenDataSet(SQL); if (dsCLWL.Tables[0].Rows.Count > 0) { Dictionary DicWLHQ = new Dictionary(); string sBJDHQTS = ""; #region 获取用于计算的物料行情 if (!sBJDID.Trim().Equals("")) { sBJDHQTS += "或更新报价单材料行情"; SQL.Clear(); SQL.Add(" select XLXSBJDWLHQ_WLID,"); SQL.Add(string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sTBJCLID, dTJ)); SQL.Add(string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sLBJCLID, dLJ)); SQL.Add(" else XLXSBJDWLHQ_WSJG end as WSJG, "); SQL.Add(string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sTBJCLID, dTJ)); SQL.Add(string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sLBJCLID, dLJ)); SQL.Add(" else XLXSBJDWLHQ_HSJG end as HSJG "); SQL.Add(" from XLXSBJDWLHQ where XLXSBJDWLHQ_BJDID = :pBJDID "); SQL.ParamByName("pBJDID").Value = sBJDID; DataSet dsBJDWLHQ = dberp.OpenDataSet(SQL); if (dsBJDWLHQ.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsBJDWLHQ.Tables[0].Rows) { string sWLID = trow["XLXSBJDWLHQ_WLID"].ToString().Trim(); if (!DicWLHQ.ContainsKey(sWLID)) { DicWLHQ.Add(sWLID, CMISproConvert.StrToFloat(trow["HSJG"].ToString().Trim())); } } } SQL.Clear(); SQL.Add(" select WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG "); SQL.Add(" from XLXSWLHQ, "); SQL.Add(" (select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS "); SQL.Add(" from XLXSWLHQ where XLXSWLHQ_JGBID=' ' "); SQL.Add(" and XLXSWLHQ_YXQS<=:pBJRQ and (XLXSWLHQ_YXQZ>=:pBJRQ or XLXSWLHQ_YXQZ is null) "); SQL.Add(" group by XLXSWLHQ_WLID "); SQL.Add(" ) wlhq "); SQL.Add(" where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS "); SQL.ParamByName("pBJRQ").Value = sBJRQ; DataSet dsSSWLHQ = dberp.OpenDataSet(SQL); if (dsSSWLHQ.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsSSWLHQ.Tables[0].Rows) { string sWLID = trow["WLID"].ToString().Trim(); if (!DicWLHQ.ContainsKey(sWLID)) { DicWLHQ.Add(sWLID, CMISproConvert.StrToFloat(trow["XLXSWLHQ_HSJG"].ToString().Trim())); } } } } else { SQL.Clear(); SQL.Add(" select WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG "); SQL.Add(" from XLXSWLHQ, "); SQL.Add(" (select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS "); SQL.Add(" from XLXSWLHQ where XLXSWLHQ_JGBID=' ' "); SQL.Add(" and XLXSWLHQ_YXQS<=:pBJRQ and (XLXSWLHQ_YXQZ>=:pBJRQ or XLXSWLHQ_YXQZ is null) "); SQL.Add(" group by XLXSWLHQ_WLID "); SQL.Add(" ) wlhq "); SQL.Add(" where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS "); SQL.ParamByName("pBJRQ").Value = DateTime.Now.ToShortDateString().Trim(); DataSet dsSSWLHQ = dberp.OpenDataSet(SQL); if (dsSSWLHQ.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsSSWLHQ.Tables[0].Rows) { string sWLID = trow["WLID"].ToString().Trim(); if (!DicWLHQ.ContainsKey(sWLID)) { DicWLHQ.Add(sWLID, CMISproConvert.StrToFloat(trow["XLXSWLHQ_HSJG"].ToString().Trim())); } } } } #endregion foreach (DataRow trow in dsCLWL.Tables[0].Rows) { string sWLID = trow["XLXSBJCLWL_WLID"].ToString().Trim(); double dWLHQ = 0; if (DicWLHQ.ContainsKey(sWLID)) dWLHQ = DicWLHQ[sWLID]; string sJGYWLID = trow["XLXSBJCLWL_JGYWLID"].ToString().Trim(); double dJGYWLHQ = 0; if (DicWLHQ.ContainsKey(sJGYWLID)) dJGYWLHQ = DicWLHQ[sJGYWLID]; if ((dWLHQ != dJGYWLHQ)&&(dWLHQ != 0)&&(dJGYWLHQ != 0)) { throw new Exception("【" + sWLID + "|" + trow["WLMC"].ToString().Trim() + "|" + dWLHQ.ToString() + "】与【" + trow["JGYWLMC"].ToString().Trim() + "|" + dJGYWLHQ.ToString() + "】存在加工关系,但价格不一致,无法计算,请检查物料行情数据" + sBJDHQTS + "!"); } } } } #endregion if (!sJGCZBID.Trim().Equals("")) { SQL.Clear(); SQL.Add("select :pJGCZBID as XLXSCLQD_JGCZBID,:pJGCZBBBID as XLXSCLQD_JGCZBBBID, XLJGCZBML_CZBLX from XLJGCZBML where XLJGCZBML_JGCZBID=:pJGCZBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } else { if (sBJDID.Trim().Equals(""))//sBJDID为空,说明是销售价格表模块调用 { SQL.Clear(); SQL.Add("select distinct XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLJGCZBML_CZBLX"); SQL.Add(" from XLXSJGBMX"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID"); SQL.Add(" and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID"); SQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLXSCLQD_JGCZBID"); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID"); SQL.Add(" and isnull(XLXSCLQD_JGCZBID,' ')<>' ' and XLXSCLQD_WPID='ZZZZ'"); //此处未传参数区分,暂先默认 SQL.Add(" and XLXSJGBMX_SYXH=0 "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); } if (!sJGCZBBBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH"); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" order by XLXSCLQD_JGCZBID"); SQL.ParamByName("pJGBID").Value = sJGBID; } else//sBJDID不为空,说明是被报价单调用 { if (bNeedCalJGBEx) { //此段执行是为了在JGB衍生加点的模式下能计算“报价单行情料价” SQL.Clear(); SQL.Add("select distinct XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLJGCZBML_CZBLX"); SQL.Add(" from XLXSBJDMX"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSBJDMX_XLXHID and XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID"); SQL.Add(" and XLXSCLQD_XLBZID=XLXSBJDMX_XLBZID and XLXSCLQD_DYDJID=XLXSBJDMX_DYDJID"); SQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLXSCLQD_JGCZBID"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if(!sBJDXHList.Trim().Equals("")) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.Add(" and XLXSBJDMX_XH >= :piMinXH"); SQL.Add(" and isnull(XLXSCLQD_JGCZBID,' ')<>' '"); SQL.Add(" order by XLXSCLQD_JGCZBID"); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; //衍生扩展的价格表支持被报价单重算,需要弄个临时表,将如下语句的查询结果插入到临时表中,然后用临时表与所依价格表明细进行关联 //select case when XLXSJGBMX_SYXH=0.0 then XLXSJGBMX_XH else XLXSJGBMX_SYXH end as XH //from XLXSJGBMX //where XLXSJGBMX_JGBID='21100001' //and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID='CZ/XMD2022100005' and XLXSBJDMX_XH>=0 // and XLXSBJDMX_XLXHID=XLXSJGBMX_XLXHID and XLXSBJDMX_XLGGID=XLXSJGBMX_XLGGID // and XLXSBJDMX_XLBZID=XLXSJGBMX_XLBZID and XLXSBJDMX_DYDJID=XLXSJGBMX_DYDJID) } else { SQL.Clear(); SQL.Add("select distinct XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLJGCZBML_CZBLX"); SQL.Add(" from XLXSBJDMX"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSBJDMX_XLXHID and XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID"); SQL.Add(" and XLXSCLQD_XLBZID=XLXSBJDMX_XLBZID and XLXSCLQD_DYDJID=XLXSBJDMX_DYDJID"); SQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLXSCLQD_JGCZBID"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if (!sBJDXHList.Trim().Equals("")) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.Add(" and XLXSBJDMX_XH >= :piMinXH"); SQL.Add(" and isnull(XLXSCLQD_JGCZBID,' ')<>' '"); SQL.Add(" order by XLXSCLQD_JGCZBID"); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; } //SQL.Add(" and exists ( "); //SQL.Add(" select top 1 XLXSBJDMX_XH from XLXSBJDMX "); //SQL.Add(" left join XLXSJGBMX a on a.XLXSJGBMX_JGBID=:pJGBID "); //SQL.Add(" and a.XLXSJGBMX_XLXHID=XLXSBJDMX_XLXHID and a.XLXSJGBMX_XLGGID=XLXSBJDMX_XLGGID "); //SQL.Add(" and a.XLXSJGBMX_XLBZID=XLXSBJDMX_XLBZID and a.XLXSJGBMX_DYDJID=XLXSBJDMX_DYDJID "); //SQL.Add(" where XLXSBJDMX_BJDID= :pBJDID and XLXSBJDMX_XH >= :piMinXH "); //SQL.Add(" and a.XLXSJGBMX_JGBID= XLXSJGBMX_JGBID "); //SQL.Add(" and (case when isnull(a.XLXSJGBMX_SYXH,0)=0 then a.XLXSJGBMX_XH else a.XLXSJGBMX_SYXH end)= XLXSJGBMX_XH"); //SQL.Add(" )"); //SQL.ParamByName("pBJDID").Value = sBJDID; //SQL.ParamByName("piMinXH").Value = iMinXH; } } Dictionary dicJGYLHSJG = new Dictionary(); Dictionary dicJGYLWSJG = new Dictionary(); if (bNeedAddWLHQ) { TSQL sSQL = new TSQL(dberp); sSQL.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_HSJG,XLXSCLHQ_WSJG,isnull(JGYBJCLID,' ') as JGYBJCLID "); sSQL.Add(" from XLXSCLHQ "); sSQL.Add(" left join ( "); sSQL.Add(" select distinct XLXSBJCL_JGYBJCLID as JGYBJCLID "); sSQL.Add(" from XLXSBJCL where isnull(XLXSBJCL_JGYBJCLID,' ')<>' '"); sSQL.Add(" ) a on JGYBJCLID=XLXSCLHQ_BJCLID"); sSQL.Add(" where XLXSCLHQ_JGBID=:pJGBID "); sSQL.Add(" and isnull(JGYBJCLID,' ') <> ' ' "); sSQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGYL = dberp.OpenDataSet(sSQL); if (dsJGYL.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsJGYL.Tables[0].Rows) { if (!dicJGYLHSJG.ContainsKey(trow["XLXSCLHQ_BJCLID"].ToString().Trim())) { dicJGYLHSJG.Add(trow["XLXSCLHQ_BJCLID"].ToString().Trim(), CMISproConvert.StrToFloat(trow["XLXSCLHQ_HSJG"].ToString().Trim())); dicJGYLWSJG.Add(trow["XLXSCLHQ_BJCLID"].ToString().Trim(), CMISproConvert.StrToFloat(trow["XLXSCLHQ_WSJG"].ToString().Trim())); } } } } DataSet dsJGCZB = dberp.OpenDataSet(SQL); for (int j = 0; j < dsJGCZB.Tables[0].Rows.Count; j++) { string tmpJGCZBID = dsJGCZB.Tables[0].Rows[j]["XLXSCLQD_JGCZBID"].ToString().Trim(); string tmpJGCZBBBID = dsJGCZB.Tables[0].Rows[j]["XLXSCLQD_JGCZBBBID"].ToString().Trim(); string tmpCZBLX = dsJGCZB.Tables[0].Rows[j]["XLJGCZBML_CZBLX"].ToString().Trim(); //标志材料行情/物料行情 int flag_1 = 0; int flag_2 = 0; string sCLQDL = ""; string sBJHQ = ""; string sBJRCLCB = ""; SQL.Clear(); SQL.Add("select XLJGCZBLM_CLQDL,isnull(XLXSBJCL_BJHQ,'1') as XLXSBJCL_BJHQ,isnull(XLJGCZBLM_BJRCLCB,'N') as XLJGCZBLM_BJRCLCB "); SQL.Add(" from XLJGCZBLM"); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID"); SQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID"); SQL.Add(" and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '"); SQL.Add(" order by XLJGCZBLM_CLQDL"); SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; DataSet dsCLQDL = dberp.OpenDataSet(SQL); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { flag_1 = 1; } if (sBJHQ.Equals("2"))//2|物料行情 { flag_2 = 1; } if (1 == flag_1 && 1 == flag_2) { break; } } //B类尺重表都按材料行情计算 //B类实际上应当与下方一致,如果导入的报价材料没有物料行情 if (tmpCZBLX.Equals("B")) { /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" ("); SQL.Add(" select XLJGCZBLM_JGCZBID as JGCZBID, XLJGCZBLM_JGCZBBBID as JGCZBBBID,"); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); SQL.Add(string.Format(" sum(case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_WSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end ) as CLJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); SQL.Add(string.Format(" sum(case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end ) as HSJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } SQL.Add(" ' ' as MJBZ "); SQL.Add(" from XLJGCZBLM "); if (IsJGBID3) { SQL.Add(" left join ("); if (!sTBJCLID_JGBBJ.Trim().Equals("") || !sLBJCLID_JGBBJ.Trim().Equals(""))//存在铜铝报价材料ID时用传入的铜铝价代替材料清单中的铜铝报价材料价格 { SQL.Add(" select j3.XLXSCLHQ_BJCLID as XLXSCLHQ_BJCLID,"); SQL.Add(" case when ISNULL(j3.XLXSCLHQ_BJCLID, ' ') = :pTBJCLID then :pTJ - j1.XLXSCLHQ_HSJG "); SQL.Add(" when ISNULL(j3.XLXSCLHQ_BJCLID, ' ') = :pLBJCLID then :pLJ - j1.XLXSCLHQ_HSJG else j3.XLXSCLHQ_HSJG-j1.XLXSCLHQ_HSJG end as XLXSCLHQ_HSJG,"); SQL.Add(" case when ISNULL(j3.XLXSCLHQ_BJCLID, ' ') = :pTBJCLID then :pTJ - j1.XLXSCLHQ_WSJG "); SQL.Add(" when ISNULL(j3.XLXSCLHQ_BJCLID, ' ') = :pLBJCLID then :pLJ - j1.XLXSCLHQ_WSJG else j3.XLXSCLHQ_WSJG-j1.XLXSCLHQ_WSJG end as XLXSCLHQ_WSJG "); SQL.ParamByName("pTBJCLID").Value = sTBJCLID_JGBBJ; SQL.ParamByName("pLBJCLID").Value = sLBJCLID_JGBBJ; SQL.ParamByName("pTJ").Value = dTJ_JGBBJ; SQL.ParamByName("pLJ").Value = dLJ_JGBBJ; SQL.Add(" from XLXSCLHQ j1,XLXSCLHQ j3"); SQL.Add(" where j1.XLXSCLHQ_JGBID=:pJGBID1 and j3.XLXSCLHQ_JGBID=:pJGBID"); SQL.Add(" and j1.XLXSCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID"); SQL.Add(" ) jj on XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID1").Value = sJGBID1; SQL.ParamByName("pJGBID").Value = sJGBID; } else if (sBJDID.Trim().Equals(""))//sBJDID为空,说明是销售价格表模块调用 { SQL.Add(" select j3.XLXSCLHQ_BJCLID as XLXSCLHQ_BJCLID,"); SQL.Add(" j3.XLXSCLHQ_HSJG-j1.XLXSCLHQ_HSJG as XLXSCLHQ_HSJG,j3.XLXSCLHQ_WSJG-j1.XLXSCLHQ_WSJG as XLXSCLHQ_WSJG"); SQL.Add(" from XLXSCLHQ j1,XLXSCLHQ j3"); SQL.Add(" where j1.XLXSCLHQ_JGBID=:pJGBID1 and j3.XLXSCLHQ_JGBID=:pJGBID"); SQL.Add(" and j1.XLXSCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID"); SQL.Add(" ) jj on XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID1").Value = sJGBID1; SQL.ParamByName("pJGBID").Value = sJGBID; } else { SQL.Add(" select j3.XLXSCLHQ_BJCLID as XLXSCLHQ_BJCLID,"); SQL.Add(" case when isnull(XLXSBJDCLHQ_BJCLID,' ')=' ' then (j3.XLXSCLHQ_HSJG-j1.XLXSCLHQ_HSJG) else (XLXSBJDCLHQ_HSJG-j1.XLXSCLHQ_HSJG) end as XLXSCLHQ_HSJG,"); SQL.Add(" case when isnull(XLXSBJDCLHQ_BJCLID,' ')=' ' then (j3.XLXSCLHQ_WSJG-j1.XLXSCLHQ_WSJG) else (XLXSBJDCLHQ_WSJG-j1.XLXSCLHQ_WSJG) end as XLXSCLHQ_WSJG "); SQL.Add(" from XLXSCLHQ j1,XLXSCLHQ j3"); SQL.Add(" left join XLXSBJDCLHQ on XLXSBJDCLHQ_BJDID=:pBJDIDD and XLXSBJDCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID"); SQL.Add(" where j1.XLXSCLHQ_JGBID=:pJGBID1 and j3.XLXSCLHQ_JGBID=:pJGBID"); SQL.Add(" and j1.XLXSCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID"); SQL.Add(" ) jj on XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID1").Value = sJGBID1; SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pBJDIDD").Value = sBJDID.Trim(); } } else { if (!sTBJCLID_JGBBJ.Trim().Equals("") || !sLBJCLID_JGBBJ.Trim().Equals("")) { SQL.Add(" left join ("); SQL.Add(" select XLXSCLHQ_BJCLID,"); SQL.Add(" case when ISNULL(XLXSCLHQ_BJCLID, ' ') = :pTBJCLID then :pTJ "); SQL.Add(" when isnull(XLXSCLHQ_JGYBJCLID1,' ')=:pTBJCLID then :pTJ*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF"); SQL.Add(" when ISNULL(XLXSCLHQ_BJCLID, ' ') = :pLBJCLID then :pLJ "); SQL.Add(" when isnull(XLXSCLHQ_JGYBJCLID1,' ')=:pLBJCLID then :pLJ*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF"); SQL.Add(" else XLXSCLHQ_HSJG end as XLXSCLHQ_HSJG,"); SQL.Add(" case when ISNULL(XLXSCLHQ_BJCLID, ' ') = :pTBJCLID then roundfix(:pTJ/(1+XLXSBJCL_ZZSL/100.0)," + XLBJDUtils.BJCLPriceDecimal + ") "); SQL.Add(" when isnull(XLXSCLHQ_JGYBJCLID1,' ')=:pTBJCLID then roundfix(:pTJ/(1+XLXSBJCL_ZZSL/100.0)," + XLBJDUtils.BJCLPriceDecimal + ")*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF"); SQL.Add(" when ISNULL(XLXSCLHQ_BJCLID, ' ') = :pLBJCLID then roundfix(:pLJ/(1+XLXSBJCL_ZZSL/100.0)," + XLBJDUtils.BJCLPriceDecimal + ") "); SQL.Add(" when isnull(XLXSCLHQ_JGYBJCLID1,' ')=:pLBJCLID then roundfix(:pLJ/(1+XLXSBJCL_ZZSL/100.0)," + XLBJDUtils.BJCLPriceDecimal + ")*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF"); SQL.Add(" else XLXSCLHQ_WSJG end as XLXSCLHQ_WSJG "); SQL.Add(" from XLXSCLHQ "); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID"); SQL.Add(" where XLXSCLHQ_JGBID=:pJGBID ) jj on XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pTBJCLID").Value = sTBJCLID_JGBBJ; SQL.ParamByName("pLBJCLID").Value = sLBJCLID_JGBBJ; SQL.ParamByName("pTJ").Value = dTJ_JGBBJ; SQL.ParamByName("pLJ").Value = dLJ_JGBBJ; SQL.ParamByName("pJGBID").Value = sJGBID; } else { if (sBJDHQLX.Equals("BJRCLHQ"))//报价日材料行情 { #region 构建报价日材料行情价格表 SQL.Add(" left join "); SQL.Add(" ("); SQL.Add(" select XLXSBJCL_BJCLID as XLXSCLHQ_BJCLID,"); SQL.Add(" case when isnull(XLXSBJFLBJRHQCL_BJCLID,' ')<>' ' then bjrclhq.CLJG else jgbclhq.CLJG end as XLXSCLHQ_WSJG, "); SQL.Add(" case when isnull(XLXSBJFLBJRHQCL_BJCLID,' ')<>' ' then bjrclhq.HSJG else jgbclhq.HSJG end as XLXSCLHQ_HSJG "); SQL.Add(" from XLXSBJCL"); SQL.Add(" left join XLXSBJFLBJRHQCL on XLXSBJFLBJRHQCL_BJFLID=:pBJFLID and XLXSBJFLBJRHQCL_BJCLID=XLXSBJCL_BJCLID"); //bjrclhq 报价材料之报价日行情 SQL.Add(" left join ("); SQL.Add(" select BJCLID,XLXSCLHQ_WSJG as CLJG,XLXSCLHQ_HSJG as HSJG"); SQL.Add(" from XLXSCLHQ,"); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS)as maxYXQS"); SQL.Add(" from XLXSCLHQ"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'"); SQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)"); SQL.Add(" group by XLXSCLHQ_BJCLID"); SQL.Add(" ) a"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID"); SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS"); SQL.Add(" )bjrclhq on bjrclhq.BJCLID=XLXSBJCL_BJCLID"); //jgbclhq 报价材料之价格表行情 SQL.Add(" left join ("); SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_WSJG as CLJG,XLXSCLHQ_HSJG as HSJG"); SQL.Add(" from XLXSCLHQ"); SQL.Add(" where XLXSCLHQ_JGBID<>'ZZZZZZZZ' and XLXSCLHQ_JGBID=:pJGBID"); SQL.Add(" )jgbclhq on jgbclhq.BJCLID=XLXSBJCL_BJCLID"); SQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pBJFLID").Value = sBJFLID; SQL.ParamByName("pBJRQ").Value = sBJRQ; SQL.ParamByName("pJGBID").Value = sJGBID; #endregion } else if (sBJDHQLX.Equals("BJRHQ"))//报价日行情 { #region 构建报价日行情价格表 SQL.Add(" left join "); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_WSJG,XLXSCLHQ_HSJG"); SQL.Add(" from XLXSCLHQ,"); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS)as maxYXQS"); SQL.Add(" from XLXSCLHQ"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'"); SQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)"); SQL.Add(" group by XLXSCLHQ_BJCLID"); SQL.Add(" ) a"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID"); SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS"); SQL.Add(" ) JGB on JGB.XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pBJRQ").Value = sBJRQ; #endregion } else if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { #region 报价单行情价格表 SQL.Add(" left join "); SQL.Add(" ("); SQL.Add(" select XLXSBJDCLHQ_BJCLID as XLXSCLHQ_BJCLID,XLXSBJDCLHQ_WSJG as XLXSCLHQ_WSJG,XLXSBJDCLHQ_HSJG as XLXSCLHQ_HSJG"); SQL.Add(" from XLXSBJDCLHQ"); SQL.Add(string.Format(" where XLXSBJDCLHQ_BJDID='{0}'", sBJDID)); SQL.Add(" ) JGB on JGB.XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); #endregion } else//价格表行情 { SQL.Add(" left join XLXSCLHQ on XLXSCLHQ_JGBID=:pJGBID and XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID").Value = sJGBID; } } } SQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID"); SQL.Add(" and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '"); SQL.Add(" group by XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID"); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and a.XLXSCLQD_JGCZBID=b.JGCZBID and a.XLXSCLQD_JGCZBBBID=b.JGCZBBBID "); if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定 { SQL.Add(" and exists ("); SQL.Add("select 1 "); SQL.Add(" from XLXSBJDMX"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if (!sBJDXHList.Trim().Equals("")) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.Add(" and XLXSBJDMX_XH >= :piMinXH"); SQL.Add(" and XLXSBJDMX_XLXHID=a.XLXSCLQD_XLXHID and XLXSBJDMX_XLGGID=a.XLXSCLQD_XLGGID"); SQL.Add(" and XLXSBJDMX_XLBZID=a.XLXSCLQD_XLBZID and XLXSBJDMX_DYDJID=a.XLXSCLQD_DYDJID"); SQL.Add(" ) "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; } SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBWSCB= "); if (!IsJGBID3)//调价因素3价格表不进行负数的校验,因为此时CLJG{0}代表的是两个价格表行情之差 { if (1 == flag_1) { SQL.Add(" (case "); } for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("1") && !sBJRCLCB.Equals("Y"))//1|材料行情 { SQL.Add(string.Format(" when (a.XLXSCLQD_SL{0} > 0 and isnull(b.CLJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } if (1 == flag_1) { SQL.Add(" else 1 end)* "); } } SQL.Add(" ( "); if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一) { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); SQL.Add(string.Format("CEILING(RoundFix(a.XLXSCLQD_SL{0}*b.CLJG{0}*(1+a.XLXSCLQD_SHL{0}/100)*a.XLXSCLQD_CLJGBL{0}*{1},8))/{1}+", sCLQDL.Replace("第", "").Replace("列", ""), Math.Pow(10.0, iXSWS))); } } else { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); SQL.Add(string.Format("a.XLXSCLQD_SL{0}*b.CLJG{0}*(1+a.XLXSCLQD_SHL{0}/100)*a.XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add("0), "); SQL.Add(" a.XLXSCLQD_JGBHSCB="); if (!IsJGBID3)//调价因素3价格表不进行负数的校验,因为此时CLJG{0}代表的是两个价格表行情之差 { if (1 == flag_1) { SQL.Add(" (case "); } for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("1") && !sBJRCLCB.Equals("Y"))//1|材料行情 { SQL.Add(string.Format(" when (a.XLXSCLQD_SL{0} > 0 and isnull(b.CLJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } if (1 == flag_1) { SQL.Add(" else 1 end)* "); } } SQL.Add(" ( "); if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一) { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); SQL.Add(string.Format("CEILING(RoundFix(a.XLXSCLQD_SL{0}*b.HSJG{0}*(1+a.XLXSCLQD_SHL{0}/100)*a.XLXSCLQD_CLJGBL{0}*{1},8))/{1}+", sCLQDL.Replace("第", "").Replace("列", ""), Math.Pow(10.0, iXSWS))); } } else { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); SQL.Add(string.Format("a.XLXSCLQD_SL{0}*b.HSJG{0}*(1+a.XLXSCLQD_SHL{0}/100)*a.XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add("0) "); SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); } else//Z类A类C类 { #region 计算XLXSBJCL_BJHQ='1'的材料成本 /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" ("); SQL.Add(" select XLJGCZBLM_JGCZBID as JGCZBID, XLJGCZBLM_JGCZBBBID as JGCZBBBID,"); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { SQL.Add(string.Format(" sum(case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_WSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end ) as CLJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); SQL.Add(string.Format(" sum(case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end ) as HSJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" ' ' as MJBZ "); SQL.Add(" from XLJGCZBLM "); if (IsJGBID3) { SQL.Add(" left join ("); if (!sTBJCLID_JGBBJ.Trim().Equals("") || !sLBJCLID_JGBBJ.Trim().Equals(""))//存在铜铝报价材料ID时用传入的铜铝价代替材料清单中的铜铝报价材料价格 { SQL.Add(" select j3.XLXSCLHQ_BJCLID as XLXSCLHQ_BJCLID,"); SQL.Add(" case when ISNULL(j3.XLXSCLHQ_BJCLID, ' ') = :pTBJCLID then :pTJ - j1.XLXSCLHQ_HSJG "); SQL.Add(" when ISNULL(j3.XLXSCLHQ_BJCLID, ' ') = :pLBJCLID then :pLJ - j1.XLXSCLHQ_HSJG else j3.XLXSCLHQ_HSJG-j1.XLXSCLHQ_HSJG end as XLXSCLHQ_HSJG,"); SQL.Add(" case when ISNULL(j3.XLXSCLHQ_BJCLID, ' ') = :pTBJCLID then :pTJ - j1.XLXSCLHQ_WSJG "); SQL.Add(" when ISNULL(j3.XLXSCLHQ_BJCLID, ' ') = :pLBJCLID then :pLJ - j1.XLXSCLHQ_WSJG else j3.XLXSCLHQ_WSJG-j1.XLXSCLHQ_WSJG end as XLXSCLHQ_WSJG "); SQL.ParamByName("pTBJCLID").Value = sTBJCLID_JGBBJ; SQL.ParamByName("pLBJCLID").Value = sLBJCLID_JGBBJ; SQL.ParamByName("pTJ").Value = dTJ_JGBBJ; SQL.ParamByName("pLJ").Value = dLJ_JGBBJ; SQL.Add(" from XLXSCLHQ j1,XLXSCLHQ j3"); SQL.Add(" where j1.XLXSCLHQ_JGBID=:pJGBID1 and j3.XLXSCLHQ_JGBID=:pJGBID"); SQL.Add(" and j1.XLXSCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID"); SQL.Add(" ) jj on XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID1").Value = sJGBID1; SQL.ParamByName("pJGBID").Value = sJGBID; } else if (sBJDID.Trim().Equals(""))//sBJDID为空,说明是销售价格表模块调用 { SQL.Add(" select j3.XLXSCLHQ_BJCLID as XLXSCLHQ_BJCLID,"); SQL.Add(" j3.XLXSCLHQ_HSJG-j1.XLXSCLHQ_HSJG as XLXSCLHQ_HSJG,j3.XLXSCLHQ_WSJG-j1.XLXSCLHQ_WSJG as XLXSCLHQ_WSJG"); SQL.Add(" from XLXSCLHQ j1,XLXSCLHQ j3"); SQL.Add(" where j1.XLXSCLHQ_JGBID=:pJGBID1 and j3.XLXSCLHQ_JGBID=:pJGBID"); SQL.Add(" and j1.XLXSCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID"); SQL.Add(" ) jj on XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID1").Value = sJGBID1; SQL.ParamByName("pJGBID").Value = sJGBID; } else { SQL.Add(" select j3.XLXSCLHQ_BJCLID as XLXSCLHQ_BJCLID,"); SQL.Add(" case when isnull(XLXSBJDCLHQ_BJCLID,' ')=' ' then (j3.XLXSCLHQ_HSJG-j1.XLXSCLHQ_HSJG) else (XLXSBJDCLHQ_HSJG-j1.XLXSCLHQ_HSJG) end as XLXSCLHQ_HSJG,"); SQL.Add(" case when isnull(XLXSBJDCLHQ_BJCLID,' ')=' ' then (j3.XLXSCLHQ_WSJG-j1.XLXSCLHQ_WSJG) else (XLXSBJDCLHQ_WSJG-j1.XLXSCLHQ_WSJG) end as XLXSCLHQ_WSJG "); SQL.Add(" from XLXSCLHQ j1,XLXSCLHQ j3"); SQL.Add(" left join XLXSBJDCLHQ on XLXSBJDCLHQ_BJDID=:pBJDIDD and XLXSBJDCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID"); SQL.Add(" where j1.XLXSCLHQ_JGBID=:pJGBID1 and j3.XLXSCLHQ_JGBID=:pJGBID"); SQL.Add(" and j1.XLXSCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID"); SQL.Add(" ) jj on XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID1").Value = sJGBID1; SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pBJDIDD").Value = sBJDID.Trim(); } } else { if (!sTBJCLID_JGBBJ.Trim().Equals("") || !sLBJCLID_JGBBJ.Trim().Equals("")) { SQL.Add(" left join ("); SQL.Add(" select XLXSCLHQ_BJCLID,"); SQL.Add(" case when ISNULL(XLXSCLHQ_BJCLID, ' ') = :pTBJCLID then :pTJ "); SQL.Add(" when isnull(XLXSCLHQ_JGYBJCLID1,' ')=:pTBJCLID then :pTJ*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF"); SQL.Add(" when ISNULL(XLXSCLHQ_BJCLID, ' ') = :pLBJCLID then :pLJ "); SQL.Add(" when isnull(XLXSCLHQ_JGYBJCLID1,' ')=:pLBJCLID then :pLJ*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF"); SQL.Add(" else XLXSCLHQ_HSJG end as XLXSCLHQ_HSJG,"); SQL.Add(" case when ISNULL(XLXSCLHQ_BJCLID, ' ') = :pTBJCLID then roundfix(:pTJ/(1+XLXSBJCL_ZZSL/100.0)," + XLBJDUtils.BJCLPriceDecimal + ") "); SQL.Add(" when isnull(XLXSCLHQ_JGYBJCLID1,' ')=:pTBJCLID then roundfix(:pTJ/(1+XLXSBJCL_ZZSL/100.0)," + XLBJDUtils.BJCLPriceDecimal + ")*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF"); SQL.Add(" when ISNULL(XLXSCLHQ_BJCLID, ' ') = :pLBJCLID then roundfix(:pLJ/(1+XLXSBJCL_ZZSL/100.0)," + XLBJDUtils.BJCLPriceDecimal + ") "); SQL.Add(" when isnull(XLXSCLHQ_JGYBJCLID1,' ')=:pLBJCLID then roundfix(:pLJ/(1+XLXSBJCL_ZZSL/100.0)," + XLBJDUtils.BJCLPriceDecimal + ")*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF"); SQL.Add(" else XLXSCLHQ_WSJG end as XLXSCLHQ_WSJG "); SQL.Add(" from XLXSCLHQ "); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID"); SQL.Add(" where XLXSCLHQ_JGBID=:pJGBID ) jj on XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pTBJCLID").Value = sTBJCLID_JGBBJ; SQL.ParamByName("pLBJCLID").Value = sLBJCLID_JGBBJ; SQL.ParamByName("pTJ").Value = dTJ_JGBBJ; SQL.ParamByName("pLJ").Value = dLJ_JGBBJ; SQL.ParamByName("pJGBID").Value = sJGBID; } else { if (sBJDHQLX.Equals("BJRCLHQ"))//报价日材料行情 { #region 构建报价日材料行情价格表 SQL.Add(" left join "); SQL.Add(" ("); SQL.Add(" select XLXSBJCL_BJCLID as XLXSCLHQ_BJCLID,"); SQL.Add(" case when isnull(XLXSBJFLBJRHQCL_BJCLID,' ')<>' ' then bjrclhq.CLJG else jgbclhq.CLJG end as XLXSCLHQ_WSJG, "); SQL.Add(" case when isnull(XLXSBJFLBJRHQCL_BJCLID,' ')<>' ' then bjrclhq.HSJG else jgbclhq.HSJG end as XLXSCLHQ_HSJG "); SQL.Add(" from XLXSBJCL"); SQL.Add(" left join XLXSBJFLBJRHQCL on XLXSBJFLBJRHQCL_BJFLID=:pBJFLID and XLXSBJFLBJRHQCL_BJCLID=XLXSBJCL_BJCLID"); //bjrclhq 报价材料之报价日行情 SQL.Add(" left join ("); SQL.Add(" select BJCLID,XLXSCLHQ_WSJG as CLJG,XLXSCLHQ_HSJG as HSJG"); SQL.Add(" from XLXSCLHQ,"); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS)as maxYXQS"); SQL.Add(" from XLXSCLHQ"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'"); SQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)"); SQL.Add(" group by XLXSCLHQ_BJCLID"); SQL.Add(" ) a"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID"); SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS"); SQL.Add(" )bjrclhq on bjrclhq.BJCLID=XLXSBJCL_BJCLID"); //jgbclhq 报价材料之价格表行情 SQL.Add(" left join ("); SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_WSJG as CLJG,XLXSCLHQ_HSJG as HSJG"); SQL.Add(" from XLXSCLHQ"); SQL.Add(" where XLXSCLHQ_JGBID<>'ZZZZZZZZ' and XLXSCLHQ_JGBID=:pJGBID"); SQL.Add(" )jgbclhq on jgbclhq.BJCLID=XLXSBJCL_BJCLID"); SQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pBJFLID").Value = sBJFLID; SQL.ParamByName("pBJRQ").Value = sBJRQ; SQL.ParamByName("pJGBID").Value = sJGBID; #endregion } else if (sBJDHQLX.Equals("BJRHQ"))//报价日行情 { #region 构建报价日行情价格表 SQL.Add(" left join "); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_WSJG,XLXSCLHQ_HSJG"); SQL.Add(" from XLXSCLHQ,"); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS)as maxYXQS"); SQL.Add(" from XLXSCLHQ"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'"); SQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)"); SQL.Add(" group by XLXSCLHQ_BJCLID"); SQL.Add(" ) a"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID"); SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS"); SQL.Add(" ) JGB on JGB.XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pBJRQ").Value = sBJRQ; #endregion } else if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { #region 报价单行情价格表 SQL.Add(" left join "); SQL.Add(" ("); SQL.Add(" select XLXSBJDCLHQ_BJCLID as XLXSCLHQ_BJCLID,XLXSBJDCLHQ_WSJG as XLXSCLHQ_WSJG,XLXSBJDCLHQ_HSJG as XLXSCLHQ_HSJG"); SQL.Add(" from XLXSBJDCLHQ"); SQL.Add(string.Format(" where XLXSBJDCLHQ_BJDID='{0}'", sBJDID)); SQL.Add(" ) JGB on JGB.XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); #endregion } else//价格表行情 { SQL.Add(" left join XLXSCLHQ on XLXSCLHQ_JGBID=:pJGBID and XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID").Value = sJGBID; } } } SQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID"); SQL.Add(" and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '"); SQL.Add(" group by XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID"); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and a.XLXSCLQD_JGCZBID=b.JGCZBID and a.XLXSCLQD_JGCZBBBID=b.JGCZBBBID "); if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定 { SQL.Add(" and exists ("); SQL.Add("select 1 "); SQL.Add(" from XLXSBJDMX"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if (!sBJDXHList.Trim().Equals("")) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.Add(" and XLXSBJDMX_XH >= :piMinXH"); SQL.Add(" and XLXSBJDMX_XLXHID=a.XLXSCLQD_XLXHID and XLXSBJDMX_XLGGID=a.XLXSCLQD_XLGGID"); SQL.Add(" and XLXSBJDMX_XLBZID=a.XLXSCLQD_XLBZID and XLXSBJDMX_DYDJID=a.XLXSCLQD_DYDJID"); SQL.Add(" ) "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; } SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBWSCB= "); if (!IsJGBID3)//调价因素3价格表不进行负数的校验,因为此时CLJG{0}代表的是两个价格表行情之差 { //case 语句用于挑拣出用量大于0价格等于0的那一列,返回-1 if (1 == flag_1) { SQL.Add(" (case "); } for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("1") && !sBJRCLCB.Equals("Y"))//1|材料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(CLJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } if (1 == flag_1) { SQL.Add(" else 1 end)* "); } } SQL.Add(" ( "); if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一) { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { SQL.Add(string.Format("CEILING(RoundFix(XLXSCLQD_SL{0}*CLJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*{1},8))/{1}+", sCLQDL.Replace("第", "").Replace("列", ""), Math.Pow(10.0, iXSWS))); } } } else { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*CLJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", ""))); } } } if (bNeedAddWLHQ) { SQL.Add("1.0), ");//这里+1.0是为了解决即使材料价都为0,也要保证成本之和不为0 } else SQL.Add("0), "); SQL.Add(" a.XLXSCLQD_JGBHSCB="); if (!IsJGBID3)//调价因素3价格表不进行负数的校验,因为此时CLJG{0}代表的是两个价格表行情之差 { if (1 == flag_1) { SQL.Add(" (case "); } for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("1") && !sBJRCLCB.Equals("Y"))//1|材料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(CLJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } if (1 == flag_1) { SQL.Add(" else 1 end)* "); } } SQL.Add(" ( "); if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一) { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { SQL.Add(string.Format("CEILING(RoundFix(XLXSCLQD_SL{0}*HSJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*{1},8))/{1}+", sCLQDL.Replace("第", "").Replace("列", ""), Math.Pow(10.0, iXSWS))); } } } else { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*HSJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", ""))); } } } if (bNeedAddWLHQ) { SQL.Add("1.0) ");//这里+1.0是为了解决即使材料价都为0,也要保证成本之和不为0 } else SQL.Add("0) "); SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion #region 追加XLXSBJCL_BJHQ='2'的材料成本 if (bNeedAddWLHQ) { #region 循环dsCLQDL更新临时表 string sWLHQCLQDL = string.Empty;//记录物料行情的材料清单列 for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 sWLHQCLQDL += sCLQDL.Replace("第", "").Replace("列", "") + ","; } sWLHQCLQDL = sWLHQCLQDL.TrimEnd(','); string[] sWLHQCLQDList = sWLHQCLQDL.Split(','); if (sWLHQCLQDList.Length <= 20) { #region 追加XLXSBJCL_BJHQ='2'的材料成本-物料小于20列 /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" (");//获取结构尺重表每个单元格所指报价物料的无税价格、含税价格 SQL.Add(" select XLXSCLQD_XLXHID as XLXHID,XLXSCLQD_XLGGID as XLGGID,XLXSCLQD_XLBZID as XLBZID, XLXSCLQD_DYDJID as DYDJID, "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { SQL.Add(string.Format("case when isnull(d{0}.XLXSBJDWLHQ_WLID,' ')<>' ' then isnull(d{0}.WSJG,0) else isnull(c{0}.WSJG,0) end as WSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""))); SQL.Add(string.Format("case when isnull(d{0}.XLXSBJDWLHQ_WLID,' ')<>' ' then isnull(d{0}.HSJG,0) else isnull(c{0}.HSJG,0) end as HSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""))); } else { SQL.Add(string.Format(" isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0},", sCLQDL.Replace("第", "").Replace("列", ""))); } } } SQL.Add(" ' ' as MJBZ "); SQL.Add(" from XLXSCLQD");//这里不直接查XLXSCLQDWL的原因是XLXSCLQDWL可能还没有记录 SQL.Add(" left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH"); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { //关联XLXSBJDWLHQ,获取报价单物料行情 SQL.Add(" left join "); SQL.Add(" ("); SQL.Add(" select XLXSBJDWLHQ_WLID,"); SQL.Add(string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sTBJCLID, dTJ)); SQL.Add(string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sLBJCLID, dLJ)); SQL.Add(" else XLXSBJDWLHQ_WSJG end as WSJG, "); SQL.Add(string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sTBJCLID, dTJ)); SQL.Add(string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sLBJCLID, dLJ)); SQL.Add(" else XLXSBJDWLHQ_HSJG end as HSJG "); SQL.Add(" from XLXSBJDWLHQ"); SQL.Add(" left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSBJDWLHQ_WLID"); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"); SQL.Add(string.Format(" where XLXSBJDWLHQ_BJDID='{0}'", sBJDID)); SQL.Add(string.Format(") d{0} on d{0}.XLXSBJDWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""))); //关联XLXSWLHQ,获取物料行情 SQL.Add(" left join"); SQL.Add(" ("); SQL.Add(" select XLXSWLHQ_WLID,"); SQL.Add(string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sTBJCLID, dTJ)); SQL.Add(string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sLBJCLID, dLJ)); SQL.Add(" else XLXSWLHQ_WSJG end as WSJG, "); SQL.Add(string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sTBJCLID, dTJ)); SQL.Add(string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sLBJCLID, dLJ)); SQL.Add(" else XLXSWLHQ_HSJG end as HSJG "); SQL.Add(" from XLXSWLHQ,"); SQL.Add(" ("); SQL.Add(" select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS"); SQL.Add(" from XLXSWLHQ"); SQL.Add(" where XLXSWLHQ_JGBID=' '"); SQL.Add(" and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"); SQL.Add(" group by XLXSWLHQ_WLID"); SQL.Add(string.Format(") a{0} ", sCLQDL.Replace("第", "").Replace("列", ""))); SQL.Add(" left join XLXSBJCLWL on XLXSBJCLWL_WLID=WLID");//20.09.22新增 SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID");//20.09.22新增 SQL.Add(" where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS"); SQL.Add(string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""))); SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } else { //Dictionary dicJGYLHSJG = new Dictionary(); //Dictionary dicJGYLWSJG = new Dictionary(); //TSQL sSQL = new TSQL(dberp); //sSQL.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_HSJG,XLXSCLHQ_WSJG,isnull(JGYBJCLID,' ') as JGYBJCLID "); //sSQL.Add(" from XLXSCLHQ "); //sSQL.Add(" left join ( "); //sSQL.Add(" select distinct XLXSBJCL_JGYBJCLID as JGYBJCLID "); //sSQL.Add(" from XLXSBJCL where isnull(XLXSBJCL_JGYBJCLID,' ')<>' '"); //sSQL.Add(" ) a on JGYBJCLID=XLXSCLHQ_BJCLID"); //sSQL.Add(" where XLXSCLHQ_JGBID=:pJGBID "); //sSQL.Add(" and isnull(JGYBJCLID,' ') <> ' ' "); //sSQL.ParamByName("pJGBID").Value = sJGBID; //DataSet dsJGYL = dberp.OpenDataSet(sSQL); //if (dsJGYL.Tables[0].Rows.Count > 0) //{ // foreach (DataRow trow in dsJGYL.Tables[0].Rows) // { // if (!dicJGYLHSJG.ContainsKey(trow["XLXSCLHQ_BJCLID"].ToString().Trim())) // { // dicJGYLHSJG.Add(trow["XLXSCLHQ_BJCLID"].ToString().Trim(), CMISproConvert.StrToFloat(trow["XLXSCLHQ_HSJG"].ToString().Trim())); // dicJGYLWSJG.Add(trow["XLXSCLHQ_BJCLID"].ToString().Trim(), CMISproConvert.StrToFloat(trow["XLXSCLHQ_WSJG"].ToString().Trim())); // } // } //} SQL.Add(" left join"); SQL.Add(" ("); SQL.Add(" select XLXSWLHQ_WLID,"); //无税价格 if (dicJGYLWSJG.Count > 0) { SQL.Add(" case "); foreach (string BJCLID in dicJGYLWSJG.Keys) { SQL.Add(string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", BJCLID, dicJGYLWSJG[BJCLID])); } SQL.Add(" else XLXSWLHQ_WSJG end as XLXSWLHQ_WSJG, "); } else { SQL.Add(" XLXSWLHQ_WSJG, "); } //含税价格 if (dicJGYLHSJG.Count > 0) { SQL.Add(" case "); foreach (string BJCLID in dicJGYLHSJG.Keys) { SQL.Add(string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", BJCLID, dicJGYLHSJG[BJCLID])); } SQL.Add(" else XLXSWLHQ_HSJG end as XLXSWLHQ_HSJG "); } else { SQL.Add(" XLXSWLHQ_HSJG "); } SQL.Add(" from XLXSWLHQ"); SQL.Add(" left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSWLHQ_WLID"); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"); SQL.Add(" where 1=1"); if (XLJGB_CLJGTZList.NeedJGBJJFP()) { SQL.Add(" and XLXSWLHQ_JGBID=:pJGBID_JJFP"); SQL.ParamByName("pJGBID_JJFP").Value = sJGBID; } else { //同一个物料,在同一天当中只会存在一个价格,可以不用先查出maxYXQS SQL.Add(" and XLXSWLHQ_JGBID=' '"); SQL.Add(" and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"); SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } SQL.Add(string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""))); } } } SQL.Add(" where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID "); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and a.XLXSCLQD_XLXHID=b.XLXHID and a.XLXSCLQD_XLGGID=b.XLGGID "); SQL.Add(" and XLBZID=XLXSCLQD_XLBZID and DYDJID=XLXSCLQD_DYDJID "); if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定 { SQL.Add(" and exists ("); SQL.Add("select 1 "); SQL.Add(" from XLXSBJDMX"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if (!sBJDXHList.Trim().Equals("")) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.Add(" and XLXSBJDMX_XH >= :piMinXH"); SQL.Add(" and XLXSBJDMX_XLXHID=a.XLXSCLQD_XLXHID and XLXSBJDMX_XLGGID=a.XLXSCLQD_XLGGID"); SQL.Add(" and XLXSBJDMX_XLBZID=a.XLXSCLQD_XLBZID and XLXSBJDMX_DYDJID=a.XLXSCLQD_DYDJID"); SQL.Add(" ) "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; } SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBWSCB= "); //用量部分以abs计算,始终为正数,在case语句先判断材料部分是否是正数 //case 语句用于挑拣出用量大于0价格等于0的那一列,返回-1 SQL.Add(" (case when XLXSCLQD_JGBWSCB < 0 then (-1) "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(WSJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" else 1 end)* "); SQL.Add(" (abs(XLXSCLQD_JGBWSCB)-1.0+ ");//这里需要把上边材料行情部分算XLXSCLQD_JGBHSCB时加的1.0减掉 if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一) { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("CEILING(RoundFix(XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)*{1},8))/{1}+", sCLQDL.Replace("第", "").Replace("列", ""), Math.Pow(10.0, iXSWS))); } } } else { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""))); } } } SQL.Add("0), "); SQL.Add(" XLXSCLQD_JGBHSCB="); SQL.Add(" (case when XLXSCLQD_JGBHSCB < 0 then (-1) "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(HSJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" else 1 end)* "); SQL.Add(" (abs(XLXSCLQD_JGBHSCB)-1.0+ ");//这里需要把上边材料行情部分算XLXSCLQD_JGBHSCB时加的1.0减掉 if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一) { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("CEILING(RoundFix(XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)*{1},8))/{1}+", sCLQDL.Replace("第", "").Replace("列", ""), Math.Pow(10.0, iXSWS))); } } } else { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""))); } } } SQL.Add("0)"); SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion } else { #region 追加XLXSBJCL_BJHQ='2'的材料成本-物料大于20列 DateTime TimeStamp = MISproUtils.GetServerTime(); int VnewID = CMISproDataBase.GetMaxXH("DBERP", "V_XLXSCLQDWLHQ", "V_XLXSCLQDWLHQ_ID", "") + 1; #region 创建临时表 SQL.Clear(); SQL.Add(@"insert into V_XLXSCLQDWLHQ(V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_TIMESTAMP,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_JGCZBXH,V_XLXSCLQDWLHQ_DRHH,V_XLXSCLQDWLHQ_HSBZ) select :pID,:pTime,XLXSCLQD_JGCZBID, XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH,:pHSBZ from XLXSCLQD where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_WPID='ZZZZ' "); if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定 { SQL.Add(" and exists ("); SQL.Add("select 1 "); SQL.Add(" from XLXSBJDMX"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if (!sBJDXHList.Trim().Equals("")) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.Add(" and XLXSBJDMX_XH >= :piMinXH"); SQL.Add(" and XLXSBJDMX_XLXHID=XLXSCLQD_XLXHID and XLXSBJDMX_XLGGID=XLXSCLQD_XLGGID"); SQL.Add(" and XLXSBJDMX_XLBZID=XLXSCLQD_XLBZID and XLXSBJDMX_DYDJID=XLXSCLQD_DYDJID"); SQL.Add(" ) "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; } SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pTime").Value = TimeStamp; SQL.ParamByName("pHSBZ").Value = "N"; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(@"insert into V_XLXSCLQDWLHQ(V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_TIMESTAMP,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_JGCZBXH,V_XLXSCLQDWLHQ_DRHH,V_XLXSCLQDWLHQ_HSBZ) select :pID,:pTime,XLXSCLQD_JGCZBID, XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH,:pHSBZ from XLXSCLQD where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_WPID='ZZZZ' "); if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定 { SQL.Add(" and exists ("); SQL.Add("select 1 "); SQL.Add(" from XLXSBJDMX"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if (!sBJDXHList.Trim().Equals("")) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.Add(" and XLXSBJDMX_XH >= :piMinXH"); SQL.Add(" and XLXSBJDMX_XLXHID=XLXSCLQD_XLXHID and XLXSBJDMX_XLGGID=XLXSCLQD_XLGGID"); SQL.Add(" and XLXSBJDMX_XLBZID=XLXSCLQD_XLBZID and XLXSBJDMX_DYDJID=XLXSCLQD_DYDJID"); SQL.Add(" ) "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; } SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pTime").Value = TimeStamp; SQL.ParamByName("pHSBZ").Value = "Y"; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion #region 含税 string sSQL_1 = " merge into V_XLXSCLQDWLHQ a " + " using (" + " select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH, "; string sSQL_2 = string.Empty; string sSQL_3 = " ' ' as MJBZ " + " from XLXSCLQD " + " left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH "; string sSQL_4 = string.Empty; string sSQL_5 = " where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_WPID='ZZZZ' " + " ) b " + " on( " + " V_XLXSCLQDWLHQ_ID=:pID and XLXSCLQD_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and XLXSCLQD_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID and XLXSCLQD_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH and XLXSCLQD_DRHH=V_XLXSCLQDWLHQ_DRHH and V_XLXSCLQDWLHQ_HSBZ=:pHSBZ " + " ) " + " when matched then update set V_XLXSCLQDWLHQ_HSBZ='Y' "; string sSQL_6 = string.Empty; for (int i = 0; i < sWLHQCLQDList.Length; i++) { if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { sSQL_2 += string.Format("case when isnull(d{0}.XLXSBJDWLHQ_WLID,' ')<>' ' then isnull(d{0}.WSJG,0) else isnull(c{0}.WSJG,0) end as WSJG{0}, ", sWLHQCLQDList[i]); sSQL_2 += string.Format("case when isnull(d{0}.XLXSBJDWLHQ_WLID,' ')<>' ' then isnull(d{0}.HSJG,0) else isnull(c{0}.HSJG,0) end as HSJG{0}, ", sWLHQCLQDList[i]); } else { sSQL_2 += string.Format(" isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0},", sWLHQCLQDList[i]); } if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { //关联XLXSBJDWLHQ,获取报价单物料行情 sSQL_4 += " left join "; sSQL_4 += " ("; sSQL_4 += " select XLXSBJDWLHQ_WLID,"; sSQL_4 += string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sTBJCLID, dTJ); sSQL_4 += string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sLBJCLID, dLJ); sSQL_4 += " else XLXSBJDWLHQ_WSJG end as WSJG, "; sSQL_4 += string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sTBJCLID, dTJ); sSQL_4 += string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sLBJCLID, dLJ); sSQL_4 += " else XLXSBJDWLHQ_HSJG end as HSJG "; sSQL_4 += " from XLXSBJDWLHQ"; sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSBJDWLHQ_WLID"; sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"; sSQL_4 += string.Format(" where XLXSBJDWLHQ_BJDID='{0}'", sBJDID); sSQL_4 += string.Format(") d{0} on d{0}.XLXSBJDWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sWLHQCLQDList[i]); //关联XLXSWLHQ,获取物料行情 sSQL_4 += " left join"; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID,"; sSQL_4 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sTBJCLID, dTJ); sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sLBJCLID, dLJ); sSQL_4 += " else XLXSWLHQ_WSJG end as WSJG, "; sSQL_4 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sTBJCLID, dTJ); sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sLBJCLID, dLJ); sSQL_4 += " else XLXSWLHQ_HSJG end as HSJG "; sSQL_4 += " from XLXSWLHQ,"; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS"; sSQL_4 += " from XLXSWLHQ"; sSQL_4 += " where XLXSWLHQ_JGBID=' '"; sSQL_4 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"; sSQL_4 += " group by XLXSWLHQ_WLID"; sSQL_4 += string.Format(") a{0} ", sWLHQCLQDList[i]); sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=WLID";//20.09.22新增 sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID";//20.09.22新增 sSQL_4 += " where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS"; sSQL_4 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sWLHQCLQDList[i]); //SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } else { sSQL_4 += " left join"; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID,"; //无税价格 if (dicJGYLWSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLWSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", BJCLID, dicJGYLWSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_WSJG end as XLXSWLHQ_WSJG, "; } else { sSQL_4 += " XLXSWLHQ_WSJG, "; } //含税价格 if (dicJGYLHSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLHSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", BJCLID, dicJGYLHSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_HSJG end as XLXSWLHQ_HSJG "; } else { sSQL_4 += " XLXSWLHQ_HSJG "; } sSQL_4 += " from XLXSWLHQ"; sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSWLHQ_WLID"; sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"; sSQL_4 += " where 1=1"; if (XLJGB_CLJGTZList.NeedJGBJJFP()) { sSQL_4 += " and XLXSWLHQ_JGBID=:pJGBID_JJFP"; //SQL.ParamByName("pJGBID_JJFP").Value = sJGBID; } else { //同一个物料,在同一天当中只会存在一个价格,可以不用先查出maxYXQS sSQL_4 += " and XLXSWLHQ_JGBID=' '"; sSQL_4 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"; //SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } sSQL_4 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sWLHQCLQDList[i]); } sSQL_6 += string.Format(" ,V_XLXSCLQDWLHQ_JG{0} = HSJG{0} ", sWLHQCLQDList[i]); if ((i + 1) % 20 == 0 || i == sWLHQCLQDList.Length - 1) { SQL.Clear(); SQL.Add(sSQL_1); SQL.Add(sSQL_2); SQL.Add(sSQL_3); SQL.Add(sSQL_4); SQL.Add(sSQL_5); SQL.Add(sSQL_6); if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } else { if (XLJGB_CLJGTZList.NeedJGBJJFP()) { SQL.ParamByName("pJGBID_JJFP").Value = sJGBID; } else { SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } } SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pHSBZ").Value = "Y"; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); sSQL_2 = string.Empty; sSQL_4 = string.Empty; sSQL_6 = string.Empty; } } #endregion #region 无税 sSQL_1 = " merge into V_XLXSCLQDWLHQ a " + " using (" + " select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH, "; sSQL_2 = string.Empty; sSQL_3 = " ' ' as MJBZ " + " from XLXSCLQD " + " left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH "; sSQL_4 = string.Empty; sSQL_5 = " where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_WPID='ZZZZ' " + " ) b " + " on( " + " V_XLXSCLQDWLHQ_ID=:pID and XLXSCLQD_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and XLXSCLQD_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID and XLXSCLQD_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH and XLXSCLQD_DRHH=V_XLXSCLQDWLHQ_DRHH and V_XLXSCLQDWLHQ_HSBZ=:pHSBZ " + " ) " + " when matched then update set V_XLXSCLQDWLHQ_HSBZ='N' "; sSQL_6 = string.Empty; for (int i = 0; i < sWLHQCLQDList.Length; i++) { if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { sSQL_2 += string.Format("case when isnull(d{0}.XLXSBJDWLHQ_WLID,' ')<>' ' then isnull(d{0}.WSJG,0) else isnull(c{0}.WSJG,0) end as WSJG{0}, ", sWLHQCLQDList[i]); sSQL_2 += string.Format("case when isnull(d{0}.XLXSBJDWLHQ_WLID,' ')<>' ' then isnull(d{0}.HSJG,0) else isnull(c{0}.HSJG,0) end as HSJG{0}, ", sWLHQCLQDList[i]); } else { sSQL_2 += string.Format(" isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0},", sWLHQCLQDList[i]); } if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { //关联XLXSBJDWLHQ,获取报价单物料行情 sSQL_4 += " left join "; sSQL_4 += " ("; sSQL_4 += " select XLXSBJDWLHQ_WLID,"; sSQL_4 += string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sTBJCLID, dTJ); sSQL_4 += string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sLBJCLID, dLJ); sSQL_4 += " else XLXSBJDWLHQ_WSJG end as WSJG, "; sSQL_4 += string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sTBJCLID, dTJ); sSQL_4 += string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sLBJCLID, dLJ); sSQL_4 += " else XLXSBJDWLHQ_HSJG end as HSJG "; sSQL_4 += " from XLXSBJDWLHQ"; sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSBJDWLHQ_WLID"; sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"; sSQL_4 += string.Format(" where XLXSBJDWLHQ_BJDID='{0}'", sBJDID); sSQL_4 += string.Format(") d{0} on d{0}.XLXSBJDWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sWLHQCLQDList[i]); //关联XLXSWLHQ,获取物料行情 sSQL_4 += " left join"; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID,"; sSQL_4 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sTBJCLID, dTJ); sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sLBJCLID, dLJ); sSQL_4 += " else XLXSWLHQ_WSJG end as WSJG, "; sSQL_4 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sTBJCLID, dTJ); sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sLBJCLID, dLJ); sSQL_4 += " else XLXSWLHQ_HSJG end as HSJG "; sSQL_4 += " from XLXSWLHQ,"; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS"; sSQL_4 += " from XLXSWLHQ"; sSQL_4 += " where XLXSWLHQ_JGBID=' '"; sSQL_4 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"; sSQL_4 += " group by XLXSWLHQ_WLID"; sSQL_4 += string.Format(") a{0} ", sWLHQCLQDList[i]); sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=WLID";//20.09.22新增 sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID";//20.09.22新增 sSQL_4 += " where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS"; sSQL_4 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sWLHQCLQDList[i]); //SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } else { sSQL_4 += " left join"; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID,"; //无税价格 if (dicJGYLWSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLWSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", BJCLID, dicJGYLWSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_WSJG end as XLXSWLHQ_WSJG, "; } else { sSQL_4 += " XLXSWLHQ_WSJG, "; } //含税价格 if (dicJGYLHSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLHSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", BJCLID, dicJGYLHSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_HSJG end as XLXSWLHQ_HSJG "; } else { sSQL_4 += " XLXSWLHQ_HSJG "; } sSQL_4 += " from XLXSWLHQ"; sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSWLHQ_WLID"; sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"; sSQL_4 += " where 1=1"; if (XLJGB_CLJGTZList.NeedJGBJJFP()) { sSQL_4 += " and XLXSWLHQ_JGBID=:pJGBID_JJFP"; //SQL.ParamByName("pJGBID_JJFP").Value = sJGBID; } else { //同一个物料,在同一天当中只会存在一个价格,可以不用先查出maxYXQS sSQL_4 += " and XLXSWLHQ_JGBID=' '"; sSQL_4 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"; //SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } sSQL_4 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sWLHQCLQDList[i]); } sSQL_6 += string.Format(" ,V_XLXSCLQDWLHQ_JG{0} = WSJG{0} ", sWLHQCLQDList[i]); if ((i + 1) % 20 == 0 || i == sWLHQCLQDList.Length - 1) { SQL.Clear(); SQL.Add(sSQL_1); SQL.Add(sSQL_2); SQL.Add(sSQL_3); SQL.Add(sSQL_4); SQL.Add(sSQL_5); SQL.Add(sSQL_6); if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } else { if (XLJGB_CLJGTZList.NeedJGBJJFP()) { SQL.ParamByName("pJGBID_JJFP").Value = sJGBID; } else { SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } } SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pHSBZ").Value = "N"; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); sSQL_2 = string.Empty; sSQL_4 = string.Empty; sSQL_6 = string.Empty; } } #endregion #region 使用临时表更新XLXSCLQD /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ #region 无税 SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" (");//获取结构尺重表每个单元格所指报价物料的无税价格、含税价格 SQL.Add(" select V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_DRHH, "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" V_XLXSCLQDWLHQ_JG{0} as WSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" V_XLXSCLQDWLHQ_JGCZBXH "); SQL.Add(" from V_XLXSCLQDWLHQ");//这里不直接查XLXSCLQDWL的原因是XLXSCLQDWL可能还没有记录 SQL.Add(" where V_XLXSCLQDWLHQ_JGCZBID=:pJGCZBID and V_XLXSCLQDWLHQ_JGCZBBBID=:pJGCZBBBID and V_XLXSCLQDWLHQ_HSBZ<>'Y' and V_XLXSCLQDWLHQ_ID=:pID "); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and a.XLXSCLQD_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and a.XLXSCLQD_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID "); SQL.Add(" and a.XLXSCLQD_DRHH=V_XLXSCLQDWLHQ_DRHH and a.XLXSCLQD_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH "); if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定 { SQL.Add(" and exists ("); SQL.Add("select 1 "); SQL.Add(" from XLXSBJDMX"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if (!sBJDXHList.Trim().Equals("")) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.Add(" and XLXSBJDMX_XH >= :piMinXH"); SQL.Add(" and XLXSBJDMX_XLXHID=a.XLXSCLQD_XLXHID and XLXSBJDMX_XLGGID=a.XLXSCLQD_XLGGID"); SQL.Add(" and XLXSBJDMX_XLBZID=a.XLXSCLQD_XLBZID and XLXSBJDMX_DYDJID=a.XLXSCLQD_DYDJID"); SQL.Add(" ) "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; } SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBWSCB= "); //用量部分以abs计算,始终为正数,在case语句先判断材料部分是否是正数 //case 语句用于挑拣出用量大于0价格等于0的那一列,返回-1 SQL.Add(" (case when XLXSCLQD_JGBWSCB < 0 then (-1) "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(WSJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" else 1 end)* "); SQL.Add(" (abs(XLXSCLQD_JGBWSCB)-1.0+ ");//这里需要把上边材料行情部分算XLXSCLQD_JGBHSCB时加的1.0减掉 if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一) { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("CEILING(RoundFix(XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)*{1},8))/{1}+", sCLQDL.Replace("第", "").Replace("列", ""), Math.Pow(10.0, iXSWS))); } } } else { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""))); } } } SQL.Add("0) "); SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion #region 含税 SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" (");//获取结构尺重表每个单元格所指报价物料的无税价格、含税价格 SQL.Add(" select V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_DRHH, "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" V_XLXSCLQDWLHQ_JG{0} as HSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" V_XLXSCLQDWLHQ_JGCZBXH "); SQL.Add(" from V_XLXSCLQDWLHQ");//这里不直接查XLXSCLQDWL的原因是XLXSCLQDWL可能还没有记录 SQL.Add(" where V_XLXSCLQDWLHQ_JGCZBID=:pJGCZBID and V_XLXSCLQDWLHQ_JGCZBBBID=:pJGCZBBBID and V_XLXSCLQDWLHQ_HSBZ='Y' and V_XLXSCLQDWLHQ_ID=:pID "); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID "); SQL.Add(" and a.XLXSCLQD_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and a.XLXSCLQD_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID "); SQL.Add(" and a.XLXSCLQD_DRHH=V_XLXSCLQDWLHQ_DRHH and a.XLXSCLQD_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH "); if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定 { SQL.Add(" and exists ("); SQL.Add("select 1 "); SQL.Add(" from XLXSBJDMX"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); if (!sBJDXHList.Trim().Equals("")) SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList)); SQL.Add(" and XLXSBJDMX_XH >= :piMinXH"); SQL.Add(" and XLXSBJDMX_XLXHID=a.XLXSCLQD_XLXHID and XLXSBJDMX_XLGGID=a.XLXSCLQD_XLGGID"); SQL.Add(" and XLXSBJDMX_XLBZID=a.XLXSCLQD_XLBZID and XLXSBJDMX_DYDJID=a.XLXSCLQD_DYDJID"); SQL.Add(" ) "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; } SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBHSCB= "); SQL.Add(" (case when XLXSCLQD_JGBHSCB < 0 then (-1) "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(HSJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" else 1 end)* "); SQL.Add(" (abs(XLXSCLQD_JGBHSCB)-1.0+ ");//这里需要把上边材料行情部分算XLXSCLQD_JGBHSCB时加的1.0减掉 if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一) { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("CEILING(RoundFix(XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)*{1},8))/{1}+", sCLQDL.Replace("第", "").Replace("列", ""), Math.Pow(10.0, iXSWS))); } } } else { for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""))); } } } SQL.Add("0)"); SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion #endregion #region 删除临时表 SQL.Clear(); SQL.Add("delete from V_XLXSCLQDWLHQ where V_XLXSCLQDWLHQ_ID=:pID "); SQL.ParamByName("pID").Value = VnewID; dberp.ExecSQL(SQL); #endregion #endregion } #endregion } #endregion } #region 报价产品限制 if (bCPMLXZ) { string tmpSQL = ""; if(!sBJDXHList.Trim().Equals("")) tmpSQL=" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList); SQL.Clear(); SQL.Add(string.Format(@"merge into XLXSCLQD tag using( select XLXSCLQD_XLXHID as XLXHID,XLXSCLQD_XLGGID as XLGGID,XLXSCLQD_XLBZID as XLBZID,XLXSCLQD_DYDJID as DYDJID,CPMLID from( select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID, case when isnull(A.XLXSBJXHML_CPMLID,' ')<>' ' then A.XLXSBJXHML_CPMLID else case when isnull(B.XLXSBJXHML_CPMLID,' ')<>' ' then B.XLXSBJXHML_CPMLID else ' ' end end as CPMLID from XLXSCLQD left join XLXSBJXHML A on A.XLXSBJXHML_XLXHID=XLXSCLQD_XLXHID and A.XLXSBJXHML_DYDJID <>' ' and A.XLXSBJXHML_DYDJID=XLXSCLQD_DYDJID left join XLXSBJXHML B on B.XLXSBJXHML_XLXHID=XLXSCLQD_XLXHID and B.XLXSBJXHML_DYDJID =' ' where 1=1 and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and exists(select top 1 XLXSBJDMX_BJDID from XLXSBJDMX where XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH >= :piMinXH {1} and XLXSBJDMX_XLXHID=XLXSCLQD_XLXHID and XLXSBJDMX_XLGGID=XLXSCLQD_XLGGID and XLXSBJDMX_XLBZID=XLXSCLQD_XLBZID and XLXSBJDMX_DYDJID=XLXSCLQD_DYDJID) )a where CPMLID <>' 'and CPMLID not in {0} )sor on (tag.XLXSCLQD_XLXHID=sor.XLXHID and tag.XLXSCLQD_XLGGID=sor.XLGGID and tag.XLXSCLQD_XLBZID=sor.XLBZID and tag.XLXSCLQD_DYDJID=sor.DYDJID and tag.XLXSCLQD_JGCZBID=:pJGCZBID and tag.XLXSCLQD_JGCZBBBID=:pJGCZBBBID ) when matched then update set tag.XLXSCLQD_JGBWSCB=0,tag.XLXSCLQD_JGBHSCB=0", sCPMLIDS, tmpSQL)); SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("piMinXH").Value = iMinXH; dberp.ExecSQL(SQL); } #endregion } if (sBJDID.Equals("")) { string tWHSJCondition = MISproUtils.GetServerTime().ToString();//这里ToString()是为了去除毫秒,因为UpdateJGBTJYS_3方法中根据查出的JJFPSJ限制其他数据时也只到秒 //重算价格表基价前清空基价、表价 SQL.Clear(); SQL.Add(" update XLXSJGBMX set XLXSJGBMX_WSJJ = 0, XLXSJGBMX_WSBJ = 0, XLXSJGBMX_HSJJ = 0, XLXSJGBMX_HSBJ = 0, "); SQL.Add(" XLXSJGBMX_HSJJM = 0,XLXSJGBMX_HSBJM = 0,XLXSJGBMX_WSJJM = 0,XLXSJGBMX_WSBJM = 0 ,"); SQL.Add(" XLXSJGBMX_WHR=:pWHR,XLXSJGBMX_WHRID=:pWHRID,XLXSJGBMX_WHSJ=:pWHSJ "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); SQL.Add(" and XLXSJGBMX_SYXH=0 "); if (!sJGCZBID.Trim().Equals("") && !sJGCZBBBID.Trim().Equals("")) { SQL.Add(" and exists(select 1 from XLXSCLQD where XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID"); SQL.Add(" and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID and XLXSCLQD_WPID='ZZZZ' and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID)"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH"); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHR").Value = sWHR; SQL.ParamByName("pWHRID").Value = sWHRID; SQL.ParamByName("pWHSJ").Value = tWHSJCondition; dberp.ExecSQL(SQL); if (dsJGCZB.Tables[0].Rows.Count > 0) { //WSJJM、WSBJM, string sHSBLSQL = string.Empty; sHSBLSQL += " (case when XLXSJGBMX_JLDW in ('M', '米') then 1"; sHSBLSQL += " when XLXSJGBMX_JLDW in ('Km', '千米') then 0.001 "; if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米")) { sHSBLSQL += " when XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then 0.001 "; sHSBLSQL += " when XLXSJGBMX_JLDW in ('T', '吨') then 0.001"; } else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M")) { sHSBLSQL += " when XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then 1"; sHSBLSQL += " when XLXSJGBMX_JLDW in ('T', '吨') then 1 "; } sHSBLSQL += " else 0 "; sHSBLSQL += " end "; sHSBLSQL += " ) "; string sJJHSBLSQL=string.Empty; sJJHSBLSQL += " (case when XLXSJGBMX_JLDW in ('M', '米') then 1"; sJJHSBLSQL += " when XLXSJGBMX_JLDW in ('Km', '千米') then 1 "; if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米")) { sJJHSBLSQL += " when XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 1 else 1/XLXSCLQD_CLZL end)"; sJJHSBLSQL += " when XLXSJGBMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 1 else 1000/XLXSCLQD_CLZL end)"; } else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M")) { sJJHSBLSQL += " when XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 1 else 1/XLXSCLQD_CLZL end)"; sJJHSBLSQL += " when XLXSJGBMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 1 else 1000/XLXSCLQD_CLZL end)"; } sJJHSBLSQL += " else 1 "; sJJHSBLSQL += " end "; sJJHSBLSQL += " ) "; /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into XLXSJGBMX a "); SQL.Add(" using XLXSCLQD b "); SQL.Add(" on ( "); SQL.Add(" XLXSJGBMX_JGBID=:pJGBID "); SQL.Add(" and XLXSJGBMX_XLXHID=XLXSCLQD_XLXHID and XLXSJGBMX_XLGGID=XLXSCLQD_XLGGID and XLXSJGBMX_XLBZID=XLXSCLQD_XLBZID and XLXSJGBMX_DYDJID=XLXSCLQD_DYDJID "); SQL.Add(" and XLXSJGBMX_SYXH=0 "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); } if (!sJGCZBBBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH"); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" ) "); SQL.Add(" when matched then update set "); if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2") || sJSBLFS.Equals("C3"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一)、C3|材料价汇总进一+表价进一到十位 { SQL.Add(string.Format(" XLXSJGBMX_WSJJ=CEILING(RoundFix(" + sJJHSBLSQL + " *isnull(XLXSCLQD_JGBWSCB,0)*{0},8))/{0},XLXSJGBMX_HSJJ=CEILING(RoundFix(" + sJJHSBLSQL + " *isnull(XLXSCLQD_JGBHSCB,0)*{0},8))/{0},", Math.Pow(10.0, iXSWS))); if (sJSBLFS.Equals("C3")) SQL.Add(string.Format(" XLXSJGBMX_WSBJ=CEILING(RoundFix(" + sJJHSBLSQL + " *isnull(XLXSCLQD_JGBWSCB,0),{0})/10)*10,XLXSJGBMX_HSBJ=CEILING(RoundFix(" + sJJHSBLSQL + " *isnull(XLXSCLQD_JGBHSCB,0),{0})/10)*10,", iXSWS.ToString().Trim())); else SQL.Add(string.Format(" XLXSJGBMX_WSBJ=CEILING(RoundFix(" + sJJHSBLSQL + " *isnull(XLXSCLQD_JGBWSCB,0)*{0},8))/{0},XLXSJGBMX_HSBJ=CEILING(" + sJJHSBLSQL + " *RoundFix(isnull(XLXSCLQD_JGBHSCB,0)*{0},8))/{0},", Math.Pow(10.0, iXSWS))); SQL.Add(" XLXSJGBMX_WSJJM = RoundFix(" + sHSBLSQL + " * XLXSCLQD_JGBWSCB ,6),"); SQL.Add(" XLXSJGBMX_HSJJM = RoundFix(" + sHSBLSQL + " * XLXSCLQD_JGBHSCB ,6),"); SQL.Add(" XLXSJGBMX_WSBJM = RoundFix(" + sHSBLSQL + " * XLXSCLQD_JGBWSCB ,6),"); SQL.Add(" XLXSJGBMX_HSBJM = RoundFix(" + sHSBLSQL + " * XLXSCLQD_JGBHSCB ,6),"); } else { SQL.Add(" XLXSJGBMX_WSJJ=RoundFix(" + sJJHSBLSQL + " *isnull(XLXSCLQD_JGBWSCB,0)," + iXSWS + "),XLXSJGBMX_HSJJ=RoundFix(" + sJJHSBLSQL + " *isnull(XLXSCLQD_JGBHSCB,0)," + iXSWS + "),"); SQL.Add(" XLXSJGBMX_WSBJ=RoundFix(" + sJJHSBLSQL + " *isnull(XLXSCLQD_JGBWSCB,0)," + iXSWS + "),XLXSJGBMX_HSBJ=RoundFix(" + sJJHSBLSQL + " *isnull(XLXSCLQD_JGBHSCB,0)," + iXSWS + "),"); SQL.Add(" XLXSJGBMX_WSJJM=RoundFix(" + sHSBLSQL + " * isnull(XLXSCLQD_JGBWSCB,0) ,6),"); SQL.Add(" XLXSJGBMX_HSJJM=RoundFix(" + sHSBLSQL + " * isnull(XLXSCLQD_JGBHSCB,0) ,6),"); SQL.Add(" XLXSJGBMX_WSBJM=RoundFix(" + sHSBLSQL + " * isnull(XLXSCLQD_JGBWSCB,0) ,6),"); SQL.Add(" XLXSJGBMX_HSBJM=RoundFix(" + sHSBLSQL + " * isnull(XLXSCLQD_JGBHSCB,0) ,6),"); } SQL.Add(" XLXSJGBMX_WHR=:pWHR, "); SQL.Add(" XLXSJGBMX_WHRID=:pWHRID, "); SQL.Add(" XLXSJGBMX_WHSJ=:pWHSJ "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHR").Value = sWHR; SQL.ParamByName("pWHRID").Value = sWHRID; SQL.ParamByName("pWHSJ").Value = tWHSJCondition; dberp.ExecSQL(SQL); } if (XLJGB_CLJGTZList.NeedJGBJJFP()) { #region 删除XLXSJGBCLQD、XLXSJGBYLLM、XLXSJGBCLQDWL //把这一波更新的价格表明细对应的复盘数据删除 SQL.Clear(); SQL.Add("delete from XLXSJGBCLQD where XLXSJGBCLQD_JGBID=:pJGBID and exists(select 1 from XLXSJGBMX where XLXSJGBMX_JGBID=XLXSJGBCLQD_JGBID and XLXSJGBMX_XH=XLXSJGBCLQD_XH and XLXSJGBMX_WHSJ=:pWHSJ) "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHSJ").Value = tWHSJCondition; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from XLXSJGBYLLM where XLXSJGBYLLM_JGBID=:pJGBID and not exists(select 1 from XLXSJGBCLQD where XLXSJGBCLQD_JGBID=XLXSJGBYLLM_JGBID and XLXSJGBYLLM_JGCZBID=XLXSJGBCLQD_JGCZBID and XLXSJGBYLLM_JGCZBBBID=XLXSJGBCLQD_JGCZBBBID and XLXSJGBYLLM_JJFPSJ=XLXSJGBCLQD_JJFPSJ)"); SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from XLXSJGBCLQDWL where XLXSJGBCLQDWL_JGBID=:pJGBID and exists(select 1 from XLXSJGBMX where XLXSJGBMX_JGBID=XLXSJGBCLQDWL_JGBID and XLXSJGBMX_XH=XLXSJGBCLQDWL_XH and XLXSJGBMX_WHSJ=:pWHSJ) "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHSJ").Value = tWHSJCondition; dberp.ExecSQL(SQL); #endregion #region 插入XLXSJGBCLQD string sSQL = ""; SQL.Clear(); SQL.Add(" insert into XLXSJGBCLQD "); SQL.Add(" (XLXSJGBCLQD_JGBID,XLXSJGBCLQD_XH,XLXSJGBCLQD_JGCZBID,XLXSJGBCLQD_JGCZBBBID,XLXSJGBCLQD_JGCZBXH,XLXSJGBCLQD_DRHH,XLXSJGBCLQD_JJFPSJ "); for (int i = 1; i <= 80; i++) { SQL.Add(",XLXSJGBCLQD_ZL" + i.ToString().PadLeft(2, '0')); sSQL += string.Format(",isnull(XLXSCLQD_SL{0}*XLXSCLQD_CLJGBL{0}*(1+XLXSCLQD_SHL{0}/100.0),0) as ZL{0}", i.ToString().PadLeft(2, '0')); } SQL.Add(" )"); SQL.Add(" select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,isnull(XLXSCLQD_JGCZBXH,0),isnull(XLXSCLQD_DRHH,0),:pJJFPSJ "); SQL.Add(sSQL); SQL.Add(" from XLXSJGBMX "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add(" and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" and isnull(XLXSCLQD_WPID,' ')='ZZZZ' "); SQL.Add(" where XLXSJGBMX_JGBID = :pJGBID "); SQL.Add(" and not exists(select 1 from XLXSJGBCLQD where XLXSJGBCLQD_JGBID=XLXSJGBMX_JGBID and XLXSJGBCLQD_XH=XLXSJGBMX_XH)"); SQL.ParamByName("pJJFPSJ").Value = tWHSJCondition; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); #endregion #region 插入XLXSJGBYLLM SQL.Clear(); SQL.Add(" insert into XLXSJGBYLLM(XLXSJGBYLLM_JGBID,XLXSJGBYLLM_JGCZBID,XLXSJGBYLLM_JGCZBBBID,XLXSJGBYLLM_CZBLMBH,XLXSJGBYLLM_HLMLX,XLXSJGBYLLM_JJFPSJ, "); SQL.Add(" XLXSJGBYLLM_CZBLMMC,XLXSJGBYLLM_CLQDL,XLXSJGBYLLM_BJCLID,XLXSJGBYLLM_WHRID,XLXSJGBYLLM_WHR,XLXSJGBYLLM_WHSJ) "); SQL.Add(" select :pJGBID as JGBID,XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID,XLJGCZBLM_CZBLMBH,XLJGCZBLM_HLMLX,:pJJFPSJ, "); SQL.Add(" XLJGCZBLM_CZBLMMC,XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,:pWHR,:pWHRID,:pWHSJ "); SQL.Add(" from XLJGCZBLM "); SQL.Add(" where isnull(XLJGCZBLM_CLQDL,' ')<>' ' "); SQL.Add(" and exists( "); SQL.Add(" select 1 from XLXSJGBMX "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add(" and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" where XLXSJGBMX_JGBID = :pJGBID and XLXSJGBMX_WHSJ=:pWHSJ "); SQL.Add(" and XLJGCZBLM_JGCZBID=XLXSCLQD_JGCZBID and XLJGCZBLM_JGCZBBBID=XLXSCLQD_JGCZBBBID "); SQL.Add(" ) "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHR").Value = sWHR; SQL.ParamByName("pWHRID").Value = sWHRID; SQL.ParamByName("pJJFPSJ").Value = tWHSJCondition; SQL.ParamByName("pWHSJ").Value = tWHSJCondition; dberp.ExecSQL(SQL); #endregion #region 插入XLXSJGBCLQDWL SQL.Clear(); sSQL = ""; SQL.Add(" insert into XLXSJGBCLQDWL(XLXSJGBCLQDWL_JGBID,XLXSJGBCLQDWL_XH "); for (int i = 1; i <= 80; i++) { SQL.Add(",XLXSJGBCLQDWL_WLID" + i.ToString().PadLeft(2, '0')); sSQL += string.Format(",XLXSCLQDWL_WLID{0}", i.ToString().PadLeft(2, '0')); } SQL.Add(" )"); SQL.Add(" select XLXSJGBCLQD_JGBID,XLXSJGBCLQD_XH "); SQL.Add(sSQL); SQL.Add(" from XLXSJGBCLQD "); SQL.Add(" left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSJGBCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSJGBCLQD_JGCZBBBID "); SQL.Add(" and XLXSCLQDWL_JGCZBXH=XLXSJGBCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSJGBCLQD_DRHH "); SQL.Add(" where XLXSJGBCLQD_JGBID = :pJGBID "); SQL.Add(" and not exists(select 1 from XLXSJGBCLQDWL where XLXSJGBCLQDWL_JGBID=XLXSJGBCLQD_JGBID and XLXSJGBCLQDWL_XH=XLXSJGBCLQD_XH)"); SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); #endregion } } } //调价因素3价格表,则XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB只用来记录材料价价差 public static void UpdateCLCB(TDatabase dberp, TSQL SQL, string sJGBID, string sJGCZBID, string sJGCZBBBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, double maxXH, string sJGBID1, string sTBJCLID_JGBBJ, string sLBJCLID_JGBBJ, double dTJ_JGBBJ, double dLJ_JGBBJ, string sBJDID, int iMinXH, string sBJU003) { UpdateCLCB(dberp, SQL, sJGBID, sJGCZBID, sJGCZBBBID, iXSWS, sJSBLFS, sWHRID, sWHR, maxXH, sJGBID1, sTBJCLID_JGBBJ, sLBJCLID_JGBBJ, dTJ_JGBBJ, dLJ_JGBBJ, sBJDID, iMinXH, "", sBJU003); } #region 因素3-江南报价 public static void DoCPJJ(TDatabase dberp, string sMXBH, string sJGBID, bool bInsertXLXSJGBYZZ0, string sJGCZBID, string sJGCZBBBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, double maxXH) { //据材料成本及调整因子的值计算无税产品单价、含税产品单价 TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select XLXSJGBYZ_YZID,XLXSTZYZ_JJFS,XLXSTZYZ_TJYZID,XLXSTZYZ_TJYS,XLXSJGB_JSGS "); SQL.Add(" from XLXSJGBYZ"); SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID = XLXSJGBYZ_JGBID "); SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=XLXSJGBYZ_YZID"); SQL.Add(" where XLXSJGBYZ_JGBID=:pJGBID"); SQL.Add(" order by XLXSTZYZ_TJYZID,XLXSTZYZ_XSXH,XLXSJGBYZ_YZID"); SQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGBYZ = dberp.OpenDataSet(SQL); if (dsJGBYZ.Tables[0].Rows.Count > 0) { string sJSGS = dsJGBYZ.Tables[0].Rows[0]["XLXSJGB_JSGS"].ToString().Trim(); string sTJYSList_ = "";//记录调价因素为空的因子id string sTJYSList1 = "";//记录调价因素为'1'的因子id string sTJYSList3 = "";//记录调价因素为'3'的因子id string sTJYSList4 = "";//记录调价因素为'4'的因子id string sTJYSList5 = "";//记录调价因素为'5'的因子id string sTJYSList8 = "";//记录调价因素为'8'的因子id string sTJYSList9 = "";//记录调价因素为'9'的因子id string sTJYSListA = "";//记录调价因素为'A'的因子id string sTJYSListB = "";//记录调价因素为'B'的因子id string sTJYSListC = "";//记录调价因素为'C'的因子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() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("9")) { sTJYSList9 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("A")) { sTJYSListA += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("B")) { sTJYSListB += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("C")) { sTJYSListC += 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(','); sTJYSList9 = sTJYSList9.TrimEnd(','); sTJYSListA = sTJYSListA.TrimEnd(','); sTJYSListB = sTJYSListB.TrimEnd(','); sTJYSListC = sTJYSListC.TrimEnd(','); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-Begin")); AddXLXSJGBYZZ0(dberp, sMXBH, sJGBID, sTJYSList_, sTJYSList1, sTJYSList3, sTJYSList4, sTJYSList5, sTJYSList8, sTJYSList9, sTJYSListA, sTJYSListB, sTJYSListC, bInsertXLXSJGBYZZ0, sJGCZBID, sJGCZBBBID, maxXH); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-End")); if (sJSGS.Trim().Equals("")) { #region 无公式计算表价 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)"; /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ Dictionary dicJGBTJYZ = XLBJDInfo.GetJGBBTYZ(sJGBID); Dictionary dicJGBFGQCPYZ = XLBJDInfo.GetJGBFGQCPYZ(sJGBID); SQL.Clear(); SQL.Add(" merge into XLXSJGBMX tar "); SQL.Add(" using ( "); SQL.Add("select JGBID,XH," + sJDSQL + " as JDYZZ," + sKDSQL + " as KDYZZ," + sJJSQL + " as JJYZZ," + sSXSQL + " as SXYZZ"); if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) SQL.Add(",JSYCBZ"); //if (dicJGBFGQCPYZ.Count > 0) // SQL.Add(",JGBTJYZYCBZ"); SQL.Add(" from "); SQL.Add("("); SQL.Add(" select XLXSJGBYZZ0_JGBID as JGBID,XLXSJGBYZZ0_XH as XH,"); if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add(" case "); if (dicJGBTJYZ.Count > 0) { foreach (string sKey in dicJGBTJYZ.Keys) { SQL.Add(string.Format(" when XLXSJGBYZZ0_YZZ" + sKey.Replace("JZ", "") + " = 0 then '{0}' ", sKey.Substring(3, 1))); } } if (dicJGBFGQCPYZ.Count > 0) { foreach (string sKey in dicJGBFGQCPYZ.Keys) { SQL.Add(string.Format(" when XLXSJGBYZZ0_YZZ" + sKey.Replace("JZ", "") + " = -9999 then '{0}' ", sKey.Substring(3, 1))); } } SQL.Add(" else 'S' "); SQL.Add(" end as JSYCBZ, "); } SQL.Add(" ("); SQL.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())) { SQL.Add(string.Format("+XLXSJGBYZZ0_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("XLXSJGBYZZ0_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 XLXSJGBYZZ0"); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSJGBMX on XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" where XLXSJGBYZZ0_JGBID=:pJGBID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID = :pJGCZBID"); SQL.Add(" and XLXSCLQD_JGCZBBBID = :pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } if (maxXH != 0) { SQL.Add(" and XLXSJGBYZZ0_XH > :pmaxXH"); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" ) a"); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBMX_JGBID=:pJGBID "); SQL.Add(" and XLXSJGBMX_JGBID=sor.JGBID "); SQL.Add(" and XLXSJGBMX_XH=XH "); //此处未传参数区分,暂先默认 SQL.Add(" and XLXSJGBMX_SYXH=0 "); //SQL.Add(" and XLXSJGBMX_JLDW in ('M','Km','米','千米') "); 需支持非长度单位导入基价以及计算表价 SQL.Add(" ) "); SQL.Add(" when matched then update set "); if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一) { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ=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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ=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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } else { //先加点 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ=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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ=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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=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)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=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)"); SQL.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|材料价汇总进一+表价进一到十位 { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ = 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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ = 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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=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)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=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)"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } else { //先加点 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ = 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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ = 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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=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)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=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)"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } } else { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end , "); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add("XLXSJGBMX_WSBJ=RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJ=RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=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)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=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)"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } else { //先加点 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix(abs(isnull(XLXSJGBMX_WSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix(abs(isnull(XLXSJGBMX_WSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix(abs(isnull(XLXSJGBMX_HSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix(abs(isnull(XLXSJGBMX_HSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add("XLXSJGBMX_WSBJ=RoundFix(abs(isnull(XLXSJGBMX_WSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJ=RoundFix(abs(isnull(XLXSJGBMX_HSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=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)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=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)"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } } SQL.Add(" XLXSJGBMX_WHR=:pWHR, "); SQL.Add(" XLXSJGBMX_WHRID=:pWHRID, "); SQL.Add(" XLXSJGBMX_WHSJ=:pWHSJ "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHR").Value = sWHR; SQL.ParamByName("pWHRID").Value = sWHRID; SQL.ParamByName("pWHSJ").Value = DateTime.Now.ToString(); string ss = SQL.Text; Mac.MacLog.TraceFormat(String.Format("DoCPJJ-merge-Begin")); dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("DoCPJJ-merge-End")); #endregion } else { #region 公式计算 /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ Dictionary dicJGBYZJJF = GetJGBYZJJFS(sJGBID); Dictionary dicJGBTJYZ = XLBJDInfo.GetJGBBTYZ(sJGBID); Dictionary dicJGBFGQCPYZ = XLBJDInfo.GetJGBFGQCPYZ(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); } } SQL.Clear(); SQL.Add(" merge into XLXSJGBMX tar "); SQL.Add(" using ( "); string sYZZFields_1 = ""; for (int i = 1; i <= 20; i++) { sYZZFields_1 += "XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : ""); } SQL.Add("select JGBID,XH," + sYZZFields_1 + " "); if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) SQL.Add(",JSYCBZ"); //if (dicJGBFGQCPYZ.Count > 0) // SQL.Add(",JGBTJYZYCBZ"); SQL.Add(" from "); SQL.Add("("); string sYZZFields_2 = ""; for (int i = 1; i <= 20; i++) { sYZZFields_2 += "XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : ""); } SQL.Add(" select XLXSJGBYZZ0_JGBID as JGBID,XLXSJGBYZZ0_XH as XH," + sYZZFields_2 + " "); if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add(" , case "); if (dicJGBTJYZ.Count > 0) { foreach (string sKey in dicJGBTJYZ.Keys) { SQL.Add(string.Format(" when XLXSJGBYZZ0_YZZ" + sKey.Replace("JZ", "") + " = 0 then '{0}' ", sKey.Substring(3, 1))); } } if (dicJGBFGQCPYZ.Count > 0) { foreach (string sKey in dicJGBFGQCPYZ.Keys) { SQL.Add(string.Format(" when XLXSJGBYZZ0_YZZ" + sKey.Replace("JZ", "") + " = -9999 then '{0}' ", sKey.Substring(3, 1))); } } SQL.Add(" else 'S' "); SQL.Add(" end as JSYCBZ "); } SQL.Add(" from XLXSJGBYZZ0"); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSJGBMX on XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" where XLXSJGBYZZ0_JGBID=:pJGBID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID = :pJGCZBID"); SQL.Add(" and XLXSCLQD_JGCZBBBID = :pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } if (maxXH != 0) { SQL.Add(" and XLXSJGBYZZ0_XH > :pmaxXH"); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" ) a"); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBMX_JGBID=:pJGBID "); SQL.Add(" and XLXSJGBMX_JGBID=sor.JGBID "); SQL.Add(" and XLXSJGBMX_XH=XH "); //此处未传参数区分,暂先默认 SQL.Add(" and XLXSJGBMX_SYXH=0 "); SQL.Add(" and XLXSJGBMX_JLDW in ('M','Km','米','千米') "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一) { if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("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))"))); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("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))"))); SQL.Add(" )*-1 end ,"); } else { SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end), "); SQL.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))"))); SQL.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|材料价汇总进一+表价进一到十位 { if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("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))"))); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("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))"))); SQL.Add(" )*-1 end ,"); } else { SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) , "); SQL.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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end), "); } } else { if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end , "); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("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))"))); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("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))"))); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end), "); SQL.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))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end), "); } } SQL.Add(" XLXSJGBMX_WHR=:pWHR, "); SQL.Add(" XLXSJGBMX_WHRID=:pWHRID, "); SQL.Add(" XLXSJGBMX_WHSJ=:pWHSJ "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHR").Value = sWHR; SQL.ParamByName("pWHRID").Value = sWHRID; SQL.ParamByName("pWHSJ").Value = DateTime.Now.ToString(); string ss = SQL.Text; Mac.MacLog.TraceFormat(String.Format("DoCPJJ-merge-Begin")); dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("DoCPJJ-merge-End")); #endregion } } else { Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-Begin")); AddXLXSJGBYZZ0(dberp, sMXBH, sJGBID, "", "", "", "", "", "", "", "", "", "", true, sJGCZBID, sJGCZBBBID, maxXH); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-End")); } } public static void AddXLXSJGBYZZ0(TDatabase dberp, string sMXBH, string sJGBID, string sTJYSList_, string sTJYSList1, string sTJYSList3, string sTJYSList4, string sTJYSList5, string sTJYSList8, string sTJYSList9, string sTJYSListA, string sTJYSListB, string sTJYSListC, bool bInsertXLXSJGBYZZ0, string sJGCZBID, string sJGCZBBBID, double maxXH) { CMISproSession tSession = CMISproApp.GetSession(); TSQL SQL = new TSQL(dberp); //插入XLXSJGBMX记录后需要自动补齐XLXSJGBYZZ0记录 if (bInsertXLXSJGBYZZ0) { Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-InsXLXSJGBYZZ0-Begin")); //如果存在调价因素为空的因子 if (!sTJYSList_.Trim().Equals("")) { string[] sTJYZs = sTJYSList_.Split(','); SQL.Clear(); SQL.Add("insert into XLXSJGBYZZ0(XLXSJGBYZZ0_JGBID,XLXSJGBYZZ0_XH"); for (int i = 0; i < sTJYZs.Length; i++) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}", sTJYZs[i].Trim().Replace("JZ", ""))); } SQL.Add(") "); SQL.Add("select XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); for (int i = 0; i < sTJYZs.Length; i++) { SQL.Add(string.Format(",sum(CASE XLXSTZYZ_YZID WHEN '{0}' THEN XLXSJGBYZZ_YZZ ELSE 0 END) as YZZ{1}", sTJYZs[i].Trim(), sTJYZs[i].Trim().Replace("JZ", ""))); } SQL.Add(" from XLXSJGBMX,XLXSTZYZ,XLXSJGBYZZ "); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add("and XLXSTZYZ_MXBH='JZJ' and " + CMISproDataBase.GetWhereEqual("XLXSTZYZ_YZID", sTJYSList_.Trim())); SQL.Add("and XLXSTZYZ_TJYS=' ' and XLXSJGBYZZ_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ_YZID=XLXSTZYZ_YZID "); SQL.Add("and not exists "); SQL.Add("( "); SQL.Add("select 1 "); SQL.Add("from XLXSJGBYZZ0 "); SQL.Add("where XLXSJGBYZZ0_JGBID=:pJGBID "); SQL.Add("and XLXSJGBYZZ0_XH=XLXSJGBMX_XH "); SQL.Add(") "); SQL.Add(" group by XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSJGBMX_JLDW"); SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-InsXLXSJGBYZZ0-调价因素为空1-end")); } else { SQL.Clear(); SQL.Add("insert into XLXSJGBYZZ0(XLXSJGBYZZ0_JGBID,XLXSJGBYZZ0_XH) "); SQL.Add("select XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(" from XLXSJGBMX "); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add("and not exists "); SQL.Add("( "); SQL.Add("select 1 "); SQL.Add("from XLXSJGBYZZ0 "); SQL.Add("where XLXSJGBYZZ0_JGBID=:pJGBID "); SQL.Add("and XLXSJGBYZZ0_XH=XLXSJGBMX_XH "); SQL.Add(") "); SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-InsXLXSJGBYZZ0-调价因素为空2-end")); } } //先清空TJYS<>' '的调价因子值 if (!sTJYSList1.Trim().Equals("") || !sTJYSList3.Trim().Equals("") || !sTJYSList4.Trim().Equals("") || !sTJYSList5.Trim().Equals("") || !sTJYSList8.Trim().Equals("") || !sTJYSList9.Trim().Equals("") || !sTJYSListA.Trim().Equals("") || !sTJYSListB.Trim().Equals("") || !sTJYSListC.Trim().Equals("")) { Dictionary dicJGBFGQCPYZ = XLBJDInfo.GetJGBFGQCPYZ(sJGBID); string[] sTJYZ1 = sTJYSList1.Split(','); string[] sTJYZ3 = sTJYSList3.Split(','); string[] sTJYZ4 = sTJYSList4.Split(','); string[] sTJYZ5 = sTJYSList5.Split(','); string[] sTJYZ8 = sTJYSList8.Split(','); string[] sTJYZ9 = sTJYSList9.Split(','); string[] sTJYZA = sTJYSListA.Split(','); string[] sTJYZB = sTJYSListB.Split(','); string[] sTJYZC = sTJYSListC.Split(','); bool bflag = false; SQL.Clear(); SQL.Add("update XLXSJGBYZZ0 set "); if (!sTJYSList1.Trim().Equals("")) { for (int i = 0; i < sTJYZ1.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ1[i].Trim())) iYZZ = -9999; if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ1[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ1[i].Trim().Replace("JZ", ""), iYZZ)); bflag = true; } } if (!sTJYSList3.Trim().Equals("")) { for (int i = 0; i < sTJYZ3.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ3[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ3[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ3[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ3[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSList4.Trim().Equals("")) { for (int i = 0; i < sTJYZ4.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ4[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ4[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ4[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ4[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSList5.Trim().Equals("")) { for (int i = 0; i < sTJYZ5.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ5[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ5[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ5[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ5[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSList8.Trim().Equals("")) { for (int i = 0; i < sTJYZ8.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ8[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ8[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ8[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ8[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSList9.Trim().Equals("")) { for (int i = 0; i < sTJYZ9.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ9[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ9[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ9[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ9[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSListA.Trim().Equals("")) { for (int i = 0; i < sTJYZA.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZA[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZA[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZA[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZA[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSListB.Trim().Equals("")) { for (int i = 0; i < sTJYZB.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZB[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZB[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZB[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZB[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSListC.Trim().Equals("")) { for (int i = 0; i < sTJYZC.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZC[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZC[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZC[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZC[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } SQL.Add(" where XLXSJGBYZZ0_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBYZZ0_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and exists(select 1 from XLXSJGBMX"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH "); SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" )"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pJGBID").Value = sJGBID; Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-清空TJYS<>' '的调价因子值-begin")); dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-清空TJYS<>' '的调价因子值-end")); } int VID = CMISproDataBase.NewID("DBERP", "V_XLXSBJTJ"); DateTime TimeStamp = MISproUtils.GetServerTime(); //自动插入TJYS=1的调价因子值 if (!sTJYSList1.Trim().Equals("")) { string[] sTJYZ = sTJYSList1.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ1_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" ,XLXSJGBYZZ1 "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZ1_JGBID=:pTJJGBID and XLXSJGBYZZ1_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZ1_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ1_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ1_XLBZID=' ' and XLXSJGBYZZ1_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-TJYS=1-begin")); dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-TJYS=1-end")); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ1_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX,XLXSJGBYZZ1 "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBYZZ1_XLXHID and XLXSCLQD_XLGGID=XLXSJGBYZZ1_XLGGID and XLXSCLQD_XLBZID=XLXSJGBYZZ1_XLBZID and XLXSCLQD_DYDJID=XLXSJGBYZZ1_DYDJID "); } SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZ1_JGBID=:pTJJGBID and XLXSJGBYZZ1_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZ1_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ1_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ1_XLBZID=XLXSJGBMX_XLBZID and XLXSJGBYZZ1_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-TJYS=1-begin")); dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-TJYS=1-end")); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=3的调价因子值 if (!sTJYSList3.Trim().Equals("")) { string[] sTJYZ = sTJYSList3.Split(','); SQL.Clear(); SQL.Add("select XLXSJGB_XSQYIDS from XLXSJGB where XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=:pJGBID"); SQL.ParamByName("pMXBH").Value = sMXBH; SQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGB = dberp.OpenDataSet(SQL); string sXSQYIDS = dsJGB.Tables[0].Rows[0][0].ToString().Trim(); sXSQYIDS = sXSQYIDS.Split(',')[0].Trim();//只取第一个区域设置的因子值 for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add("select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH "); SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join "); SQL.Add("( "); SQL.Add(" select XLXSJGBYZZ3_XSQYID as XSQYID,XLXSJGBYZZ3_DTCLID as DTCLID,XLXSJGBYZZ3_YZID as YZID,XLXSJGBYZZ3_YZZ as YZZ"); SQL.Add(" from XLXSJGBYZZ3,XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_TJYS='3' and XLXSJGBYZZ3_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ3_YZID=XLXSTZYZ_YZID"); //型号、主芯截面都没有匹配 SQL.Add(" and XLXSJGBYZZ3_XLXHID=' '"); SQL.Add(" and XLXSJGBYZZ3_ZXJM=0"); SQL.Add(" and XLXSJGBYZZ3_XSQYID='" + sXSQYIDS + "'"); SQL.Add(" and XLXSJGBYZZ3_YZID=:pYZID"); SQL.Add(" ) a on a.DTCLID=XLXHB_DTCLID"); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(YZID,' ')<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add("select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH "); SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB1 on XLXSBJXLGGTHB_JGB1.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB1.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join "); SQL.Add("( "); SQL.Add(" select XLXSJGBYZZ3_XSQYID as XSQYID,XLXSJGBYZZ3_DTCLID as DTCLID,XLXSJGBYZZ3_ZXJM as ZXJM,XLXSJGBYZZ3_YZID as YZID,XLXSJGBYZZ3_YZZ as YZZ"); SQL.Add(" from XLXSJGBYZZ3,XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_TJYS='3' and XLXSJGBYZZ3_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ3_YZID=XLXSTZYZ_YZID"); //主芯截面完全匹配 SQL.Add(" and XLXSJGBYZZ3_XLXHID=' ' "); SQL.Add(" and XLXSJGBYZZ3_ZXJM<>0 "); SQL.Add(" and XLXSJGBYZZ3_XSQYID='" + sXSQYIDS + "'"); SQL.Add(" and XLXSJGBYZZ3_YZID=:pYZID"); SQL.Add(" ) a on a.DTCLID=XLXHB_DTCLID"); SQL.Add(" and ((convert(char,a.ZXJM)=XLGGB_DTJMZHID) or (XLGGB_DTJMZHID like (rtrim(convert(char,a.ZXJM))||'/%'))) "); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(YZID,' ')<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add("select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH "); SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join "); SQL.Add("( "); SQL.Add(" select XLXSJGBYZZ3_XSQYID as XSQYID,XLXSJGBYZZ3_DTCLID as DTCLID,XLXSJGBYZZ3_XLXHID as XLXHID,XLXSJGBYZZ3_YZID as YZID,XLXSJGBYZZ3_YZZ as YZZ"); SQL.Add(" from XLXSJGBYZZ3,XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_TJYS='3' and XLXSJGBYZZ3_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ3_YZID=XLXSTZYZ_YZID"); //型号完全匹配 SQL.Add(" and XLXSJGBYZZ3_ZXJM=0"); SQL.Add(" and XLXSJGBYZZ3_XSQYID='" + sXSQYIDS + "'"); SQL.Add(" and XLXSJGBYZZ3_YZID=:pYZID"); SQL.Add(" ) a on a.DTCLID=XLXHB_DTCLID"); SQL.Add(" and a.XLXHID=XLXSJGBMX_XLXHID"); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(YZID,' ')<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add("select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH "); SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB2 on XLXSBJXLGGTHB_JGB2.XLXSBJXLGGTHB_XLGGID = XLXSJGBMX_XLGGID left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB2.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join "); SQL.Add("( "); SQL.Add(" select XLXSJGBYZZ3_XSQYID as XSQYID,XLXSJGBYZZ3_DTCLID as DTCLID,XLXSJGBYZZ3_XLXHID as XLXHID,XLXSJGBYZZ3_ZXJM as ZXJM,XLXSJGBYZZ3_YZID as YZID,XLXSJGBYZZ3_YZZ as YZZ"); SQL.Add(" from XLXSJGBYZZ3,XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_TJYS='3' and XLXSJGBYZZ3_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ3_YZID=XLXSTZYZ_YZID"); //型号、主芯截面完全匹配 SQL.Add(" and XLXSJGBYZZ3_ZXJM<>0 "); SQL.Add(" and XLXSJGBYZZ3_XSQYID='" + sXSQYIDS + "'"); SQL.Add(" and XLXSJGBYZZ3_YZID=:pYZID"); SQL.Add(" ) a on a.DTCLID=XLXHB_DTCLID"); SQL.Add(" and a.XLXHID=XLXSJGBMX_XLXHID"); SQL.Add(" and ((convert(char,a.ZXJM)=XLGGB_DTJMZHID) or (XLGGB_DTJMZHID like (rtrim(convert(char,a.ZXJM))||'/%'))) "); //SQL.Add(" and ((to_char(a.ZXJM)=XLGGB_DTJMZHID) or (XLGGB_DTJMZHID like (rtrim(to_char(a.ZXJM))||'/%'))) "); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(YZID,' ')<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=4的调价因子值 if (!sTJYSList4.Trim().Equals("")) { string[] sTJYZ = sTJYSList4.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB3 on XLXSBJXLGGTHB_JGB3.XLXSBJXLGGTHB_XLGGID = XLXSJGBMX_XLGGID left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB3.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" left join ( "); SQL.Add(" select XLXSJGBYZZ4_XLXHID,XLXSJGBYZZ4_DYDJID,XLXSJGBYZZ4_XXJGID,XLXSJGBYZZ4_ZXJMXX,XLXSJGBYZZ4_ZXJMSX,XLXSJGBYZZ4_YZZ "); SQL.Add(" from XLXSJGBYZZ4 "); SQL.Add(" where XLXSJGBYZZ4_JGBID=:pTJJGBID and XLXSJGBYZZ4_YZID=:pYZID "); //1、优先级由低到高依次更新:电压、芯线结构为空 SQL.Add(" and XLXSJGBYZZ4_DYDJID=' '"); SQL.Add(" and XLXSJGBYZZ4_XXJGID=' ' "); SQL.Add(" ) a "); SQL.Add(" on XLXSJGBYZZ4_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ4_ZXJMXX<= ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ4_ZXJMSX<>0 and XLXSJGBYZZ4_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ4_ZXJMSX=0)"); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBYZZ4_XLXHID<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB4 on XLXSBJXLGGTHB_JGB4.XLXSBJXLGGTHB_XLGGID = XLXSJGBMX_XLGGID left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB4.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" left join ( "); SQL.Add(" select XLXSJGBYZZ4_XLXHID,XLXSJGBYZZ4_DYDJID,XLXSJGBYZZ4_XXJGID,XLXSJGBYZZ4_ZXJMXX,XLXSJGBYZZ4_ZXJMSX,XLXSJGBYZZ4_YZZ "); SQL.Add(" from XLXSJGBYZZ4 "); SQL.Add(" where XLXSJGBYZZ4_JGBID=:pTJJGBID and XLXSJGBYZZ4_YZID=:pYZID "); //2、优先级由低到高依次更新:电压为空、芯线结构不为空 SQL.Add(" and XLXSJGBYZZ4_DYDJID=' '"); SQL.Add(" ) a "); SQL.Add(" on XLXSJGBYZZ4_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ4_ZXJMXX<= ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ4_ZXJMSX<>0 and XLXSJGBYZZ4_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ4_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ4_XXJGID=XLGGB_XXJGID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBYZZ4_XLXHID<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB7 on XLXSBJXLGGTHB_JGB7.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB7.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" left join ( "); SQL.Add(" select XLXSJGBYZZ4_XLXHID,XLXSJGBYZZ4_DYDJID,XLXSJGBYZZ4_XXJGID,XLXSJGBYZZ4_ZXJMXX,XLXSJGBYZZ4_ZXJMSX,XLXSJGBYZZ4_YZZ "); SQL.Add(" from XLXSJGBYZZ4 "); SQL.Add(" where XLXSJGBYZZ4_JGBID=:pTJJGBID and XLXSJGBYZZ4_YZID=:pYZID "); //3、优先级由低到高依次更新:电压不为空、芯线结构为空 SQL.Add(" and XLXSJGBYZZ4_XXJGID=' '"); SQL.Add(" ) a "); SQL.Add(" on XLXSJGBYZZ4_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ4_ZXJMXX<= ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ4_ZXJMSX<>0 and XLXSJGBYZZ4_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ4_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ4_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBYZZ4_XLXHID<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB8 on XLXSBJXLGGTHB_JGB8.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add(" left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB8.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" left join ( "); SQL.Add(" select XLXSJGBYZZ4_XLXHID,XLXSJGBYZZ4_DYDJID,XLXSJGBYZZ4_XXJGID,XLXSJGBYZZ4_ZXJMXX,XLXSJGBYZZ4_ZXJMSX,XLXSJGBYZZ4_YZZ "); SQL.Add(" from XLXSJGBYZZ4 "); SQL.Add(" where XLXSJGBYZZ4_JGBID=:pTJJGBID and XLXSJGBYZZ4_YZID=:pYZID "); //4、优先级由低到高依次更新:电压不为空、芯线结构不为空 SQL.Add(" ) a "); SQL.Add(" on XLXSJGBYZZ4_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ4_ZXJMXX<= ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ4_ZXJMSX<>0 and XLXSJGBYZZ4_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ4_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ4_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" and XLXSJGBYZZ4_XXJGID=XLGGB_XXJGID"); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBYZZ4_XLXHID<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=5的调价因子值 if (!sTJYSList5.Trim().Equals("")) { string[] sTJYZ = sTJYSList5.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ5_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSTZYZ,XLXSJGBYZZ5,XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB9 on XLXSBJXLGGTHB_JGB9.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add(" left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB9.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID"); SQL.Add(" and XLXSTZYZ_TJYS='5' and XLXSJGBYZZ5_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ5_YZID=XLXSTZYZ_YZID "); SQL.Add(" and XLXSJGBYZZ5_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ5_ZXJMXX<=ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ5_ZXJMSX<>0 and XLXSJGBYZZ5_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ5_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ5_ZXSXX<=XLGGB_GGZXS and ((XLXSJGBYZZ5_ZXSSX<>0 and XLXSJGBYZZ5_ZXSSX>=XLGGB_GGZXS) or XLXSJGBYZZ5_ZXSSX=0)"); //1、优先级由低到高依次更新:电压为空 SQL.Add(" and XLXSJGBYZZ5_DYDJID=' '"); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ5_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSTZYZ,XLXSJGBYZZ5,XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB10 on XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID"); SQL.Add(" and XLXSTZYZ_TJYS='5' and XLXSJGBYZZ5_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ5_YZID=XLXSTZYZ_YZID "); SQL.Add(" and XLXSJGBYZZ5_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ5_ZXJMXX<=ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ5_ZXJMSX<>0 and XLXSJGBYZZ5_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ5_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ5_ZXSXX<=XLGGB_GGZXS and ((XLXSJGBYZZ5_ZXSSX<>0 and XLXSJGBYZZ5_ZXSSX>=XLGGB_GGZXS) or XLXSJGBYZZ5_ZXSSX=0)"); //2、优先级由低到高依次更新:电压不为空 SQL.Add(" and XLXSJGBYZZ5_DYDJID=XLXSJGBMX_DYDJID "); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=8的调价因子值 if (!sTJYSList8.Trim().Equals("")) { string[] sTJYZ = sTJYSList8.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",ISNULL(XLXSJGBYZZ8_YZZ * XLXSCLQD_CLZL/1000,0) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX,XLXSTZYZ,XLXSJGBYZZ8 "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBYZZ8_XLXHID and XLXSCLQD_XLGGID=XLXSJGBYZZ8_XLGGID and XLXSCLQD_XLBZID=XLXSJGBYZZ8_XLBZID and XLXSCLQD_DYDJID=XLXSJGBYZZ8_DYDJID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID"); SQL.Add(" and XLXSTZYZ_TJYS='8' and XLXSJGBYZZ8_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ8_YZID=XLXSTZYZ_YZID "); SQL.Add(" and XLXSJGBYZZ8_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ8_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ8_XLBZID=XLXSJGBMX_XLBZID and XLXSJGBYZZ8_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=9的调价因子值 if (!sTJYSList9.Trim().Equals("")) { string[] sTJYZ = sTJYSList9.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ9_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" ,XLXSJGBYZZ9 "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZ9_JGBID=:pTJJGBID and XLXSJGBYZZ9_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZ9_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ9_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ9_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ9_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX,XLXSJGBYZZ9 "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBYZZ9_XLXHID and XLXSCLQD_XLGGID=XLXSJGBYZZ9_XLGGID and XLXSCLQD_DYDJID=XLXSJGBYZZ9_DYDJID "); } SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZ9_JGBID=:pTJJGBID and XLXSJGBYZZ9_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZ9_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ9_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ9_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } if (!sTJYSListA.Trim().Equals("")) { string[] sTJYZ = sTJYSListA.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZA_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); SQL.Add(" left join XLXSBJTJXHML A on A.XLXSBJTJXHML_XLXHID=XLXSJGBMX_XLXHID and A.XLXSBJTJXHML_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" left join XLXSBJTJXHML B on B.XLXSBJTJXHML_XLXHID=XLXSJGBMX_XLXHID and B.XLXSBJTJXHML_DYDJID=' ' "); SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(XLXSJGBMX_XLGGID , '*','×') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" ,XLXSJGBYZZA "); SQL.Add(" left join XLXSCPML on XLXSCPML_CPMLID=XLXSJGBYZZA_CPMLID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZA_JGBID=:pTJJGBID and XLXSJGBYZZA_YZID=:pYZID "); SQL.Add(" and XLXSCPML_CPMLIDS like '%'||rtrim(case when A.XLXSBJTJXHML_CPMLID is null then B.XLXSBJTJXHML_CPMLID else A.XLXSBJTJXHML_CPMLID end)||'%' and XLXSJGBYZZA_XLGGID=convert(char,XLDTJMZHB_DTJM1) "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } if (!sTJYSListB.Trim().Equals("")) { string[] sTJYZ = sTJYSListB.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZB_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB10 on XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" ,XLXSJGBYZZB "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZB_JGBID=:pTJJGBID and XLXSJGBYZZB_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZB_ZXJMS<=ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZB_ZXJMZ<>0 and XLXSJGBYZZB_ZXJMZ>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZB_ZXJMZ=0)"); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } if (!sTJYSListC.Trim().Equals("")) { string[] sTJYZ = sTJYSListC.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",SUM(XLXSJGBYZZC_YZZ) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB10 on XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" LEFT JOIN XLXSBJCPYS ON XLXSBJCPYS_XLJBXHID=XLXSJGBMX_XLXHID and XLXSBJCPYS_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" ,XLXSJGBYZZC "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZC_JGBID=:pTJJGBID and XLXSJGBYZZC_YZID=:pYZID "); SQL.Add(" and XLXSBJCPYS_XXJGID =XLXSJGBYZZC_CPTX and XLDTJMZHB_DTJM1=XLXSJGBYZZC_ZXJM "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.Add(" GROUP BY XLXSJGBMX_JGBID,XLXSJGBMX_XH "); SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } } #endregion public static void UpdateCLSH(TDatabase dberp, TSQL SQL, string sJGBID, string sLX, double maxXH) { bool bExistsWLHQ = false;//是否存在物料行情报价材料 if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJCL_BJCLID from XLXSBJCL where XLXSBJCL_BJHQ='2'"))) bExistsWLHQ = true; string sBJFLID = ""; string sBJRQ = ""; string sTBJCLID = ""; string sLBJCLID = ""; double dTJ = 0.0; double dLJ = 0.0; string sBJDHQLX = "JGBHQ";//报价单行情类型 bool bNeedCalJGBEx = false;//被报价单调用时,是否需要重算衍生扩展价格表 bool bNeedAddWLHQ = bExistsWLHQ;//若调价因素3价格表,无需执行此分支,因为价格表行情不单独记录物料行情,所以这部分材料价价差始终是0 #region 加工物料行情校验 if (bExistsWLHQ) { SQL.Clear(); SQL.Add(" select XLXSBJCLWL_WLID,A.WL_MC as WLMC,XLXSBJCLWL_JGYWLID,B.WL_MC as JGYWLMC "); SQL.Add(" from XLXSBJCLWL "); SQL.Add(" left join WL A on A.WL_WLID = XLXSBJCLWL_WLID "); SQL.Add(" left join WL B on B.WL_WLID = XLXSBJCLWL_JGYWLID "); SQL.Add(" where XLXSBJCLWL_JGYWLID <> '-' "); DataSet dsCLWL = dberp.OpenDataSet(SQL); if (dsCLWL.Tables[0].Rows.Count > 0) { Dictionary DicWLHQ = new Dictionary(); string sBJDHQTS = ""; #region 获取用于计算的物料行情 SQL.Clear(); SQL.Add(" select WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG "); SQL.Add(" from XLXSWLHQ, "); SQL.Add(" (select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS "); SQL.Add(" from XLXSWLHQ where XLXSWLHQ_JGBID=' ' "); SQL.Add(" and XLXSWLHQ_YXQS<=:pBJRQ and (XLXSWLHQ_YXQZ>=:pBJRQ or XLXSWLHQ_YXQZ is null) "); SQL.Add(" group by XLXSWLHQ_WLID "); SQL.Add(" ) wlhq "); SQL.Add(" where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS "); SQL.ParamByName("pBJRQ").Value = DateTime.Now.ToShortDateString().Trim(); DataSet dsSSWLHQ = dberp.OpenDataSet(SQL); if (dsSSWLHQ.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsSSWLHQ.Tables[0].Rows) { string sWLID = trow["WLID"].ToString().Trim(); if (!DicWLHQ.ContainsKey(sWLID)) { DicWLHQ.Add(sWLID, CMISproConvert.StrToFloat(trow["XLXSWLHQ_HSJG"].ToString().Trim())); } } } #endregion foreach (DataRow trow in dsCLWL.Tables[0].Rows) { string sWLID = trow["XLXSBJCLWL_WLID"].ToString().Trim(); double dWLHQ = 0; if (DicWLHQ.ContainsKey(sWLID)) dWLHQ = DicWLHQ[sWLID]; string sJGYWLID = trow["XLXSBJCLWL_JGYWLID"].ToString().Trim(); double dJGYWLHQ = 0; if (DicWLHQ.ContainsKey(sJGYWLID)) dJGYWLHQ = DicWLHQ[sJGYWLID]; if ((dWLHQ != dJGYWLHQ) && (dWLHQ != 0) && (dJGYWLHQ != 0)) { throw new Exception("【" + sWLID + "|" + trow["WLMC"].ToString().Trim() + "|" + dWLHQ.ToString() + "】与【" + trow["JGYWLMC"].ToString().Trim() + "|" + dJGYWLHQ.ToString() + "】存在加工关系,但价格不一致,无法计算,请检查物料行情数据" + sBJDHQTS + "!"); } } } } #endregion SQL.Clear(); SQL.Add("select distinct XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLJGCZBML_CZBLX"); SQL.Add(" from XLXSJGBMX"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID"); SQL.Add(" and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID"); SQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLXSCLQD_JGCZBID"); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID"); SQL.Add(" and isnull(XLXSCLQD_JGCZBID,' ')<>' ' and XLXSCLQD_WPID='ZZZZ'"); //此处未传参数区分,暂先默认 SQL.Add(" and XLXSJGBMX_SYXH=0 "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH"); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" order by XLXSCLQD_JGCZBID"); SQL.ParamByName("pJGBID").Value = sJGBID; Dictionary dicJGYLHSJG = new Dictionary(); Dictionary dicJGYLWSJG = new Dictionary(); if (bNeedAddWLHQ) { TSQL sSQL = new TSQL(dberp); sSQL.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_HSJG,XLXSCLHQ_WSJG,isnull(JGYBJCLID,' ') as JGYBJCLID "); sSQL.Add(" from XLXSCLHQ "); sSQL.Add(" left join ( "); sSQL.Add(" select distinct XLXSBJCL_JGYBJCLID as JGYBJCLID "); sSQL.Add(" from XLXSBJCL where isnull(XLXSBJCL_JGYBJCLID,' ')<>' '"); sSQL.Add(" ) a on JGYBJCLID=XLXSCLHQ_BJCLID"); sSQL.Add(" where XLXSCLHQ_JGBID=:pJGBID "); sSQL.Add(" and isnull(JGYBJCLID,' ') <> ' ' "); sSQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGYL = dberp.OpenDataSet(sSQL); if (dsJGYL.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsJGYL.Tables[0].Rows) { if (!dicJGYLHSJG.ContainsKey(trow["XLXSCLHQ_BJCLID"].ToString().Trim())) { dicJGYLHSJG.Add(trow["XLXSCLHQ_BJCLID"].ToString().Trim(), CMISproConvert.StrToFloat(trow["XLXSCLHQ_HSJG"].ToString().Trim())); dicJGYLWSJG.Add(trow["XLXSCLHQ_BJCLID"].ToString().Trim(), CMISproConvert.StrToFloat(trow["XLXSCLHQ_WSJG"].ToString().Trim())); } } } } DataSet dsJGCZB = dberp.OpenDataSet(SQL); for (int j = 0; j < dsJGCZB.Tables[0].Rows.Count; j++) { string tmpJGCZBID = dsJGCZB.Tables[0].Rows[j]["XLXSCLQD_JGCZBID"].ToString().Trim(); string tmpJGCZBBBID = dsJGCZB.Tables[0].Rows[j]["XLXSCLQD_JGCZBBBID"].ToString().Trim(); string tmpCZBLX = dsJGCZB.Tables[0].Rows[j]["XLJGCZBML_CZBLX"].ToString().Trim(); //标志材料行情/物料行情 int flag_1 = 0; int flag_2 = 0; string sCLQDL = ""; string sBJHQ = ""; string sBJRCLCB = ""; SQL.Clear(); SQL.Add("select XLJGCZBLM_CLQDL,isnull(XLXSBJCL_BJHQ,'1') as XLXSBJCL_BJHQ,isnull(XLJGCZBLM_BJRCLCB,'N') as XLJGCZBLM_BJRCLCB "); SQL.Add(" from XLJGCZBLM"); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID"); SQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID"); SQL.Add(" and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '"); if (sLX == "QTCLSH") { SQL.Add(" and isnull(XLJGCZBLM_XLCLZLID,' ') <> 'DTCL' and XLJGCZBLM_CZBLMMC not like '%铜%' and XLJGCZBLM_CZBLMMC not like '%铝%' "); } if (sLX == "DTCLSH") { SQL.Add(" and isnull(XLJGCZBLM_XLCLZLID,' ') = 'DTCL' and (XLJGCZBLM_CZBLMMC like '%铜%' or XLJGCZBLM_CZBLMMC like '%铝%') "); } SQL.Add(" order by XLJGCZBLM_CLQDL"); SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; DataSet dsCLQDL = dberp.OpenDataSet(SQL); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { flag_1 = 1; } if (sBJHQ.Equals("2"))//2|物料行情 { flag_2 = 1; } if (1 == flag_1 && 1 == flag_2) { break; } } //B类尺重表都按材料行情计算 //B类实际上应当与下方一致,如果导入的报价材料没有物料行情 if (tmpCZBLX.Equals("B")) { /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" ("); SQL.Add(" select XLJGCZBLM_JGCZBID as JGCZBID, XLJGCZBLM_JGCZBBBID as JGCZBBBID,"); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); SQL.Add(string.Format(" sum(case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_WSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end ) as CLJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); SQL.Add(string.Format(" sum(case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end ) as HSJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } SQL.Add(" ' ' as MJBZ "); SQL.Add(" from XLJGCZBLM "); SQL.Add(" left join XLXSCLHQ on XLXSCLHQ_JGBID=:pJGBID and XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID"); SQL.Add(" and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '"); SQL.Add(" group by XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID"); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and a.XLXSCLQD_JGCZBID=b.JGCZBID and a.XLXSCLQD_JGCZBBBID=b.JGCZBBBID "); SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBWSCB= "); SQL.Add(" ( "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); SQL.Add(string.Format("a.XLXSCLQD_SL{0}*b.CLJG{0}*(1+a.XLXSCLQD_SHL{0}/100)*a.XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", ""))); } SQL.Add("0), "); SQL.Add(" a.XLXSCLQD_JGBHSCB="); SQL.Add(" ( "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); SQL.Add(string.Format("a.XLXSCLQD_SL{0}*b.HSJG{0}*(1+a.XLXSCLQD_SHL{0}/100)*a.XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", ""))); } SQL.Add("0) "); SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); } else//Z类A类C类 { #region 计算XLXSBJCL_BJHQ='1'的材料成本 /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" ("); SQL.Add(" select XLJGCZBLM_JGCZBID as JGCZBID, XLJGCZBLM_JGCZBBBID as JGCZBBBID,"); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { SQL.Add(string.Format(" sum(case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_WSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end ) as CLJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); SQL.Add(string.Format(" sum(case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end ) as HSJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" ' ' as MJBZ "); SQL.Add(" from XLJGCZBLM "); SQL.Add(" left join XLXSCLHQ on XLXSCLHQ_JGBID=:pJGBID and XLXSCLHQ_BJCLID=XLJGCZBLM_BJCLID"); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID"); SQL.Add(" and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '"); SQL.Add(" group by XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID"); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and a.XLXSCLQD_JGCZBID=b.JGCZBID and a.XLXSCLQD_JGCZBBBID=b.JGCZBBBID "); SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBWSCB= "); SQL.Add(" ( "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*CLJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", ""))); } } if (bNeedAddWLHQ) { SQL.Add("1.0), ");//这里+1.0是为了解决即使材料价都为0,也要保证成本之和不为0 } else SQL.Add("0), "); SQL.Add(" a.XLXSCLQD_JGBHSCB="); SQL.Add(" ( "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); if (sBJHQ.Equals("1"))//1|材料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*HSJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", ""))); } } if (bNeedAddWLHQ) { SQL.Add("1.0) ");//这里+1.0是为了解决即使材料价都为0,也要保证成本之和不为0 } else SQL.Add("0) "); SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion #region 追加XLXSBJCL_BJHQ='2'的材料成本 if (bNeedAddWLHQ) { #region 循环dsCLQDL更新临时表 string sWLHQCLQDL = string.Empty;//记录物料行情的材料清单列 for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 sWLHQCLQDL += sCLQDL.Replace("第", "").Replace("列", "") + ","; } sWLHQCLQDL = sWLHQCLQDL.TrimEnd(','); string[] sWLHQCLQDList = sWLHQCLQDL.Split(','); if (sWLHQCLQDList.Length <= 20) { #region 追加XLXSBJCL_BJHQ='2'的材料成本-物料小于20列 /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" (");//获取结构尺重表每个单元格所指报价物料的无税价格、含税价格 SQL.Add(" select XLXSCLQD_XLXHID as XLXHID,XLXSCLQD_XLGGID as XLGGID,XLXSCLQD_XLBZID as XLBZID, XLXSCLQD_DYDJID as DYDJID, "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0},", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" ' ' as MJBZ "); SQL.Add(" from XLXSCLQD");//这里不直接查XLXSCLQDWL的原因是XLXSCLQDWL可能还没有记录 SQL.Add(" left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH"); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(" left join"); SQL.Add(" ("); SQL.Add(" select XLXSWLHQ_WLID,"); //无税价格 if (dicJGYLWSJG.Count > 0) { SQL.Add(" case "); foreach (string BJCLID in dicJGYLWSJG.Keys) { SQL.Add(string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", BJCLID, dicJGYLWSJG[BJCLID])); } SQL.Add(" else XLXSWLHQ_WSJG end as XLXSWLHQ_WSJG, "); } else { SQL.Add(" XLXSWLHQ_WSJG, "); } //含税价格 if (dicJGYLHSJG.Count > 0) { SQL.Add(" case "); foreach (string BJCLID in dicJGYLHSJG.Keys) { SQL.Add(string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", BJCLID, dicJGYLHSJG[BJCLID])); } SQL.Add(" else XLXSWLHQ_HSJG end as XLXSWLHQ_HSJG "); } else { SQL.Add(" XLXSWLHQ_HSJG "); } SQL.Add(" from XLXSWLHQ"); SQL.Add(" left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSWLHQ_WLID"); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"); SQL.Add(" where 1=1"); if (XLJGB_CLJGTZList.NeedJGBJJFP()) { SQL.Add(" and XLXSWLHQ_JGBID=:pJGBID_JJFP"); SQL.ParamByName("pJGBID_JJFP").Value = sJGBID; } else { //同一个物料,在同一天当中只会存在一个价格,可以不用先查出maxYXQS SQL.Add(" and XLXSWLHQ_JGBID=' '"); SQL.Add(" and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"); SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } SQL.Add(string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID "); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and a.XLXSCLQD_XLXHID=b.XLXHID and a.XLXSCLQD_XLGGID=b.XLGGID "); SQL.Add(" and XLBZID=XLXSCLQD_XLBZID and DYDJID=XLXSCLQD_DYDJID "); SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBWSCB= "); //用量部分以abs计算,始终为正数,在case语句先判断材料部分是否是正数 //case 语句用于挑拣出用量大于0价格等于0的那一列,返回-1 SQL.Add(" (case when XLXSCLQD_JGBWSCB < 0 then (-1) "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(WSJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" else 1 end)* "); SQL.Add(" (abs(XLXSCLQD_JGBWSCB)-1.0+ ");//这里需要把上边材料行情部分算XLXSCLQD_JGBHSCB时加的1.0减掉 for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add("0), "); SQL.Add(" XLXSCLQD_JGBHSCB="); SQL.Add(" (case when XLXSCLQD_JGBHSCB < 0 then (-1) "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(HSJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" else 1 end)* "); SQL.Add(" (abs(XLXSCLQD_JGBHSCB)-1.0+ ");//这里需要把上边材料行情部分算XLXSCLQD_JGBHSCB时加的1.0减掉 for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add("0)"); SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion } else { #region 追加XLXSBJCL_BJHQ='2'的材料成本-物料大于20列 DateTime TimeStamp = MISproUtils.GetServerTime(); int VnewID = CMISproDataBase.GetMaxXH("DBERP", "V_XLXSCLQDWLHQ", "V_XLXSCLQDWLHQ_ID", "") + 1; #region 创建临时表 SQL.Clear(); SQL.Add(@"insert into V_XLXSCLQDWLHQ(V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_TIMESTAMP,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_JGCZBXH,V_XLXSCLQDWLHQ_DRHH,V_XLXSCLQDWLHQ_HSBZ) select :pID,:pTime,XLXSCLQD_JGCZBID, XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH,:pHSBZ from XLXSCLQD where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_WPID='ZZZZ' "); SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pTime").Value = TimeStamp; SQL.ParamByName("pHSBZ").Value = "N"; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(@"insert into V_XLXSCLQDWLHQ(V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_TIMESTAMP,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_JGCZBXH,V_XLXSCLQDWLHQ_DRHH,V_XLXSCLQDWLHQ_HSBZ) select :pID,:pTime,XLXSCLQD_JGCZBID, XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH,:pHSBZ from XLXSCLQD where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_WPID='ZZZZ' "); SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pTime").Value = TimeStamp; SQL.ParamByName("pHSBZ").Value = "Y"; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion #region 含税 string sSQL_1 = " merge into V_XLXSCLQDWLHQ a " + " using (" + " select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH, "; string sSQL_2 = string.Empty; string sSQL_3 = " ' ' as MJBZ " + " from XLXSCLQD " + " left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH "; string sSQL_4 = string.Empty; string sSQL_5 = " where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_WPID='ZZZZ' " + " ) b " + " on( " + " V_XLXSCLQDWLHQ_ID=:pID and XLXSCLQD_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and XLXSCLQD_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID and XLXSCLQD_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH and XLXSCLQD_DRHH=V_XLXSCLQDWLHQ_DRHH and V_XLXSCLQDWLHQ_HSBZ=:pHSBZ " + " ) " + " when matched then update set V_XLXSCLQDWLHQ_HSBZ='Y' "; string sSQL_6 = string.Empty; for (int i = 0; i < sWLHQCLQDList.Length; i++) { sSQL_2 += string.Format(" isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0},", sWLHQCLQDList[i]); sSQL_4 += " left join"; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID,"; //无税价格 if (dicJGYLWSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLWSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", BJCLID, dicJGYLWSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_WSJG end as XLXSWLHQ_WSJG, "; } else { sSQL_4 += " XLXSWLHQ_WSJG, "; } //含税价格 if (dicJGYLHSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLHSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", BJCLID, dicJGYLHSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_HSJG end as XLXSWLHQ_HSJG "; } else { sSQL_4 += " XLXSWLHQ_HSJG "; } sSQL_4 += " from XLXSWLHQ"; sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSWLHQ_WLID"; sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"; sSQL_4 += " where 1=1"; if (XLJGB_CLJGTZList.NeedJGBJJFP()) { sSQL_4 += " and XLXSWLHQ_JGBID=:pJGBID_JJFP"; //SQL.ParamByName("pJGBID_JJFP").Value = sJGBID; } else { //同一个物料,在同一天当中只会存在一个价格,可以不用先查出maxYXQS sSQL_4 += " and XLXSWLHQ_JGBID=' '"; sSQL_4 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"; //SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } sSQL_4 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sWLHQCLQDList[i]); sSQL_6 += string.Format(" ,V_XLXSCLQDWLHQ_JG{0} = HSJG{0} ", sWLHQCLQDList[i]); if ((i + 1) % 20 == 0 || i == sWLHQCLQDList.Length - 1) { SQL.Clear(); SQL.Add(sSQL_1); SQL.Add(sSQL_2); SQL.Add(sSQL_3); SQL.Add(sSQL_4); SQL.Add(sSQL_5); SQL.Add(sSQL_6); SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pHSBZ").Value = "Y"; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); sSQL_2 = string.Empty; sSQL_4 = string.Empty; sSQL_6 = string.Empty; } } #endregion #region 无税 sSQL_1 = " merge into V_XLXSCLQDWLHQ a " + " using (" + " select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH, "; sSQL_2 = string.Empty; sSQL_3 = " ' ' as MJBZ " + " from XLXSCLQD " + " left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH "; sSQL_4 = string.Empty; sSQL_5 = " where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_WPID='ZZZZ' " + " ) b " + " on( " + " V_XLXSCLQDWLHQ_ID=:pID and XLXSCLQD_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and XLXSCLQD_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID and XLXSCLQD_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH and XLXSCLQD_DRHH=V_XLXSCLQDWLHQ_DRHH and V_XLXSCLQDWLHQ_HSBZ=:pHSBZ " + " ) " + " when matched then update set V_XLXSCLQDWLHQ_HSBZ='N' "; sSQL_6 = string.Empty; for (int i = 0; i < sWLHQCLQDList.Length; i++) { sSQL_2 += string.Format(" isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0},", sWLHQCLQDList[i]); sSQL_4 += " left join"; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID,"; //无税价格 if (dicJGYLWSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLWSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", BJCLID, dicJGYLWSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_WSJG end as XLXSWLHQ_WSJG, "; } else { sSQL_4 += " XLXSWLHQ_WSJG, "; } //含税价格 if (dicJGYLHSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLHSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", BJCLID, dicJGYLHSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_HSJG end as XLXSWLHQ_HSJG "; } else { sSQL_4 += " XLXSWLHQ_HSJG "; } sSQL_4 += " from XLXSWLHQ"; sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSWLHQ_WLID"; sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"; sSQL_4 += " where 1=1"; if (XLJGB_CLJGTZList.NeedJGBJJFP()) { sSQL_4 += " and XLXSWLHQ_JGBID=:pJGBID_JJFP"; //SQL.ParamByName("pJGBID_JJFP").Value = sJGBID; } else { //同一个物料,在同一天当中只会存在一个价格,可以不用先查出maxYXQS sSQL_4 += " and XLXSWLHQ_JGBID=' '"; sSQL_4 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"; //SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } sSQL_4 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sWLHQCLQDList[i]); sSQL_6 += string.Format(" ,V_XLXSCLQDWLHQ_JG{0} = WSJG{0} ", sWLHQCLQDList[i]); if ((i + 1) % 20 == 0 || i == sWLHQCLQDList.Length - 1) { SQL.Clear(); SQL.Add(sSQL_1); SQL.Add(sSQL_2); SQL.Add(sSQL_3); SQL.Add(sSQL_4); SQL.Add(sSQL_5); SQL.Add(sSQL_6); if (sBJDHQLX.Equals("BJDHQ"))//报价单行情 { SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } else { if (XLJGB_CLJGTZList.NeedJGBJJFP()) { SQL.ParamByName("pJGBID_JJFP").Value = sJGBID; } else { SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } } SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pHSBZ").Value = "N"; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); sSQL_2 = string.Empty; sSQL_4 = string.Empty; sSQL_6 = string.Empty; } } #endregion #region 使用临时表更新XLXSCLQD /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ #region 无税 SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" (");//获取结构尺重表每个单元格所指报价物料的无税价格、含税价格 SQL.Add(" select V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_DRHH, "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" V_XLXSCLQDWLHQ_JG{0} as WSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" V_XLXSCLQDWLHQ_JGCZBXH "); SQL.Add(" from V_XLXSCLQDWLHQ");//这里不直接查XLXSCLQDWL的原因是XLXSCLQDWL可能还没有记录 SQL.Add(" where V_XLXSCLQDWLHQ_JGCZBID=:pJGCZBID and V_XLXSCLQDWLHQ_JGCZBBBID=:pJGCZBBBID and V_XLXSCLQDWLHQ_HSBZ<>'Y' and V_XLXSCLQDWLHQ_ID=:pID "); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" and a.XLXSCLQD_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and a.XLXSCLQD_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID "); SQL.Add(" and a.XLXSCLQD_DRHH=V_XLXSCLQDWLHQ_DRHH and a.XLXSCLQD_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH "); SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBWSCB= "); //用量部分以abs计算,始终为正数,在case语句先判断材料部分是否是正数 //case 语句用于挑拣出用量大于0价格等于0的那一列,返回-1 SQL.Add(" (case when XLXSCLQD_JGBWSCB < 0 then (-1) "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(WSJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" else 1 end)* "); SQL.Add(" (abs(XLXSCLQD_JGBWSCB)-1.0+ ");//这里需要把上边材料行情部分算XLXSCLQD_JGBHSCB时加的1.0减掉 for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add("0) "); SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion #region 含税 SQL.Clear(); SQL.Add(" merge into XLXSCLQD a "); SQL.Add(" using "); SQL.Add(" (");//获取结构尺重表每个单元格所指报价物料的无税价格、含税价格 SQL.Add(" select V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_DRHH, "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" V_XLXSCLQDWLHQ_JG{0} as HSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" V_XLXSCLQDWLHQ_JGCZBXH "); SQL.Add(" from V_XLXSCLQDWLHQ");//这里不直接查XLXSCLQDWL的原因是XLXSCLQDWL可能还没有记录 SQL.Add(" where V_XLXSCLQDWLHQ_JGCZBID=:pJGCZBID and V_XLXSCLQDWLHQ_JGCZBBBID=:pJGCZBBBID and V_XLXSCLQDWLHQ_HSBZ='Y' and V_XLXSCLQDWLHQ_ID=:pID "); SQL.Add(" ) b "); SQL.Add(" on( "); SQL.Add(" a.XLXSCLQD_JGCZBID=:pJGCZBID and a.XLXSCLQD_JGCZBBBID=:pJGCZBBBID "); SQL.Add(" and a.XLXSCLQD_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and a.XLXSCLQD_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID "); SQL.Add(" and a.XLXSCLQD_DRHH=V_XLXSCLQDWLHQ_DRHH and a.XLXSCLQD_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH "); SQL.Add(" ) "); SQL.Add(" when matched then update set a.XLXSCLQD_JGBHSCB= "); SQL.Add(" (case when XLXSCLQD_JGBHSCB < 0 then (-1) "); for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format(" when (XLXSCLQD_SL{0} > 0 and isnull(HSJG{0},0) = 0) then (-1) ", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add(" else 1 end)* "); SQL.Add(" (abs(XLXSCLQD_JGBHSCB)-1.0+ ");//这里需要把上边材料行情部分算XLXSCLQD_JGBHSCB时加的1.0减掉 for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++) { sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim(); sBJRCLCB = dsCLQDL.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim(); if (sBJHQ.Equals("2") && !sBJRCLCB.Equals("Y"))//2|物料行情 { SQL.Add(string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""))); } } SQL.Add("0)"); SQL.ParamByName("pID").Value = VnewID; SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID; SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID; dberp.ExecSQL(SQL); #endregion #endregion #region 删除临时表 SQL.Clear(); SQL.Add("delete from V_XLXSCLQDWLHQ where V_XLXSCLQDWLHQ_ID=:pID "); SQL.ParamByName("pID").Value = VnewID; dberp.ExecSQL(SQL); #endregion #endregion } #endregion } #endregion } } } //根据价格表专属的材料行情,重新计算价格表的材料成本、无税基准报价、含税基准报价 public static void DoCPJJ(TDatabase dberp, string sMXBH, string sJGBID, bool bInsertXLXSJGBYZZ0, int iXSWS, string sJSBLFS, string sWHRID, string sWHR,string sBJU003) { DoCPJJ(dberp, sMXBH, sJGBID, bInsertXLXSJGBYZZ0, "", "", iXSWS, sJSBLFS, sWHRID, sWHR, 0, sBJU003);//参数maxXH为0时的处理逻辑保持不变 } public static void DoCPJJ(TDatabase dberp, string sMXBH, string sJGBID, bool bInsertXLXSJGBYZZ0, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, double maxXH, string sBJU003) { DoCPJJ(dberp, sMXBH, sJGBID, bInsertXLXSJGBYZZ0, "", "", iXSWS, sJSBLFS, sWHRID, sWHR, maxXH, sBJU003); } //如果传入结构尺重表号,则只计算该结构尺重表下的产品 public static void DoCPJJ(TDatabase dberp, string sMXBH, string sJGBID, bool bInsertXLXSJGBYZZ0, string sJGCZBID, string sJGCZBBBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, double maxXH, string sBJU003) { //据材料成本及调整因子的值计算无税产品单价、含税产品单价 TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select XLXSJGBYZ_YZID,XLXSTZYZ_JJFS,XLXSTZYZ_TJYZID,XLXSTZYZ_TJYS,XLXSJGB_JSGS "); SQL.Add(" from XLXSJGBYZ"); SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID = XLXSJGBYZ_JGBID "); SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=XLXSJGBYZ_YZID"); SQL.Add(" where XLXSJGBYZ_JGBID=:pJGBID"); SQL.Add(" order by XLXSTZYZ_TJYZID,XLXSTZYZ_XSXH,XLXSJGBYZ_YZID"); SQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGBYZ = dberp.OpenDataSet(SQL); if (dsJGBYZ.Tables[0].Rows.Count > 0) { string sJSGS = dsJGBYZ.Tables[0].Rows[0]["XLXSJGB_JSGS"].ToString().Trim(); string sTJYSList_ = "";//记录调价因素为空的因子id string sTJYSList1 = "";//记录调价因素为'1'的因子id string sTJYSList3 = "";//记录调价因素为'3'的因子id string sTJYSList4 = "";//记录调价因素为'4'的因子id string sTJYSList5 = "";//记录调价因素为'5'的因子id string sTJYSList8 = "";//记录调价因素为'8'的因子id string sTJYSList9 = "";//记录调价因素为'9'的因子id string sTJYSListA = "";//记录调价因素为'A'的因子id string sTJYSListB = "";//记录调价因素为'B'的因子id string sTJYSListC = "";//记录调价因素为'C'的因子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() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("9")) { sTJYSList9 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("A")) { sTJYSListA += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("B")) { sTJYSListB += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ","; } else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("C")) { sTJYSListC += 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(','); sTJYSList9 = sTJYSList9.TrimEnd(','); sTJYSListA = sTJYSListA.TrimEnd(','); sTJYSListB = sTJYSListB.TrimEnd(','); sTJYSListC = sTJYSListC.TrimEnd(','); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-Begin")); AddXLXSJGBYZZ0(dberp, sMXBH, sJGBID, sTJYSList_, sTJYSList1, sTJYSList3, sTJYSList4, sTJYSList5, sTJYSList8, sTJYSList9, sTJYSListA, sTJYSListB, sTJYSListC, bInsertXLXSJGBYZZ0, sJGCZBID, sJGCZBBBID, maxXH, sBJU003); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-End")); string sHSBLSQL = string.Empty; sHSBLSQL+=" (case when XLXSJGBMX_JLDW in ('M', '米') then 1"; sHSBLSQL+=" when XLXSJGBMX_JLDW in ('Km', '千米') then 0.001 "; if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米")) { sHSBLSQL+=" when XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 1 else XLXSCLQD_CLZL/1000 end)"; sHSBLSQL+=" when XLXSJGBMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 1 else XLXSCLQD_CLZL/1000000.0 end)"; } else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M")) { sHSBLSQL+=" when XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 1 else XLXSCLQD_CLZL end)"; sHSBLSQL+=" when XLXSJGBMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 1 else XLXSCLQD_CLZL/1000 end)"; } sHSBLSQL+=" else 0 "; sHSBLSQL+=" end "; sHSBLSQL+=" ) "; if (sJSGS.Trim().Equals("")) { #region 无公式计算表价 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)"; /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ Dictionary dicJGBTJYZ = XLBJDInfo.GetJGBBTYZ(sJGBID); Dictionary dicJGBFGQCPYZ = XLBJDInfo.GetJGBFGQCPYZ(sJGBID); SQL.Clear(); SQL.Add(" merge into XLXSJGBMX tar "); SQL.Add(" using ( "); string sYZZFields_3 = ""; for (int i = 1; i <= 20; i++) { sYZZFields_3 += "XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : ""); } SQL.Add("select XLXSCLQD_CLZL,JGBID,XH," + sYZZFields_3 + " "); if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) SQL.Add(",JSYCBZ"); //if (dicJGBFGQCPYZ.Count > 0) // SQL.Add(",JGBTJYZYCBZ"); SQL.Add(" from "); SQL.Add("("); string sYZZFields_4 = ""; for (int i = 1; i <= 20; i++) { sYZZFields_4 += "XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + ","; } SQL.Add(" select isnull(XLXSCLQD_CLZL,0) as XLXSCLQD_CLZL,XLXSJGBYZZ0_JGBID as JGBID,XLXSJGBYZZ0_XH as XH," + sYZZFields_4 + " "); if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("case "); if (dicJGBTJYZ.Count > 0) { foreach (string sKey in dicJGBTJYZ.Keys) { SQL.Add(string.Format(" when XLXSJGBYZZ0_YZZ" + sKey.Replace("JZ", "") + " = 0 then '{0}' ", sKey.Substring(3, 1))); } } if (dicJGBFGQCPYZ.Count > 0) { foreach (string sKey in dicJGBFGQCPYZ.Keys) { SQL.Add(string.Format(" when XLXSJGBYZZ0_YZZ" + sKey.Replace("JZ", "") + " = -9999 then '{0}' ", sKey.Substring(3, 1))); } } SQL.Add(" else 'S' "); SQL.Add(" end as JSYCBZ, "); } SQL.Add(" ("); SQL.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())) { SQL.Add(string.Format("+XLXSJGBYZZ0_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("XLXSJGBYZZ0_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 XLXSJGBYZZ0"); SQL.Add(" left join XLXSJGBMX on XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" where XLXSJGBYZZ0_JGBID=:pJGBID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID = :pJGCZBID"); SQL.Add(" and XLXSCLQD_JGCZBBBID = :pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } if (maxXH != 0) { SQL.Add(" and XLXSJGBYZZ0_XH > :pmaxXH"); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" ) a"); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBMX_JGBID=:pJGBID "); SQL.Add(" and XLXSJGBMX_JGBID=sor.JGBID "); SQL.Add(" and XLXSJGBMX_XH=XH "); //此处未传参数区分,暂先默认 SQL.Add(" and XLXSJGBMX_SYXH=0 "); //SQL.Add(" and XLXSJGBMX_JLDW in ('M','Km','米','千米') "); 需支持非长度单位导入基价以及计算表价 SQL.Add(" ) "); SQL.Add(" when matched then update set "); if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一) { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ=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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ=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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } else { //先加点 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ=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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ=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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6)"); SQL.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|材料价汇总进一+表价进一到十位 { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ = 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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ = 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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } else { //先加点 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ = 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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ = 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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6)"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } } else { //此处根据序号区分先加价还是先加点/扣点 if (XLBJDUtils.JJFirst_JGBYZ(sJGBID)) { //先加价 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end , "); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add("XLXSJGBMX_WSBJ=RoundFix((abs(isnull(XLXSJGBMX_WSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJ=RoundFix((abs(isnull(XLXSJGBMX_HSJJ,0))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))+ " + sHSBLSQL + "* isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),6)"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } else { //先加点 if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix(abs(isnull(XLXSJGBMX_WSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix(abs(isnull(XLXSJGBMX_WSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix(abs(isnull(XLXSJGBMX_HSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix(abs(isnull(XLXSJGBMX_HSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add("RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6) "); SQL.Add(" )*-1 end ,"); } else { SQL.Add("XLXSJGBMX_WSBJ=RoundFix(abs(isnull(XLXSJGBMX_WSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJ=RoundFix(abs(isnull(XLXSJGBMX_HSJJ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_WSBJM=RoundFix((abs(isnull(XLXSJGBMX_WSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6)"); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) ,"); SQL.Add("XLXSJGBMX_HSBJM=RoundFix((abs(isnull(XLXSJGBMX_HSJJM,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+ " + sHSBLSQL + "* isnull(JJYZZ,0)),6)"); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) ,"); } } } SQL.Add(" XLXSJGBMX_WHR=:pWHR, "); SQL.Add(" XLXSJGBMX_WHRID=:pWHRID, "); SQL.Add(" XLXSJGBMX_WHSJ=:pWHSJ "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHR").Value = sWHR; SQL.ParamByName("pWHRID").Value = sWHRID; SQL.ParamByName("pWHSJ").Value = DateTime.Now.ToString(); string ss = SQL.Text; Mac.MacLog.TraceFormat(String.Format("DoCPJJ-merge-Begin")); dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("DoCPJJ-merge-End")); #endregion } else { #region 公式计算 /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ Dictionary dicJGBYZJJF = GetJGBYZJJFS(sJGBID); Dictionary dicJGBTJYZ = XLBJDInfo.GetJGBBTYZ(sJGBID); Dictionary dicJGBFGQCPYZ = XLBJDInfo.GetJGBFGQCPYZ(sJGBID); string sJSGSM = sJSGS; foreach (string key in dicJGBYZJJF.Keys) { if (dicJGBYZJJF[key].Equals("JJ")) { sJSGSM = sJSGSM.Replace(key, sHSBLSQL + " * " + key); } } SQL.Clear(); SQL.Add(" merge into XLXSJGBMX tar "); SQL.Add(" using ( "); SQL.Add("select XLXSCLQD_CLZL,JGBID,XH,XLXSJGBYZZ0_YZZ01,XLXSJGBYZZ0_YZZ02,XLXSJGBYZZ0_YZZ03,XLXSJGBYZZ0_YZZ04,XLXSJGBYZZ0_YZZ05,XLXSJGBYZZ0_YZZ06,XLXSJGBYZZ0_YZZ07,XLXSJGBYZZ0_YZZ08,XLXSJGBYZZ0_YZZ09,XLXSJGBYZZ0_YZZ10, "); SQL.Add(" XLXSJGBYZZ0_YZZ11,XLXSJGBYZZ0_YZZ12,XLXSJGBYZZ0_YZZ13,XLXSJGBYZZ0_YZZ14,XLXSJGBYZZ0_YZZ15,XLXSJGBYZZ0_YZZ16,XLXSJGBYZZ0_YZZ17,XLXSJGBYZZ0_YZZ18,XLXSJGBYZZ0_YZZ19,XLXSJGBYZZ0_YZZ20 "); if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) SQL.Add(",JSYCBZ"); //if (dicJGBFGQCPYZ.Count > 0) // SQL.Add(",JGBTJYZYCBZ"); SQL.Add(" from "); SQL.Add("("); SQL.Add(" select isnull(XLXSCLQD_CLZL,0) as XLXSCLQD_CLZL,XLXSJGBYZZ0_JGBID as JGBID,XLXSJGBYZZ0_XH as XH,XLXSJGBYZZ0_YZZ01,XLXSJGBYZZ0_YZZ02,XLXSJGBYZZ0_YZZ03,XLXSJGBYZZ0_YZZ04,XLXSJGBYZZ0_YZZ05,XLXSJGBYZZ0_YZZ06,XLXSJGBYZZ0_YZZ07,XLXSJGBYZZ0_YZZ08,XLXSJGBYZZ0_YZZ09,XLXSJGBYZZ0_YZZ10, "); SQL.Add(" XLXSJGBYZZ0_YZZ11,XLXSJGBYZZ0_YZZ12,XLXSJGBYZZ0_YZZ13,XLXSJGBYZZ0_YZZ14,XLXSJGBYZZ0_YZZ15,XLXSJGBYZZ0_YZZ16,XLXSJGBYZZ0_YZZ17,XLXSJGBYZZ0_YZZ18,XLXSJGBYZZ0_YZZ19,XLXSJGBYZZ0_YZZ20 "); if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add(" ,case "); if (dicJGBTJYZ.Count > 0) { foreach (string sKey in dicJGBTJYZ.Keys) { SQL.Add(string.Format(" when XLXSJGBYZZ0_YZZ" + sKey.Replace("JZ", "") + " = 0 then '{0}' ", sKey.Substring(3, 1))); } } if (dicJGBFGQCPYZ.Count > 0) { foreach (string sKey in dicJGBFGQCPYZ.Keys) { SQL.Add(string.Format(" when XLXSJGBYZZ0_YZZ" + sKey.Replace("JZ", "") + " = -9999 then '{0}' ", sKey.Substring(3, 1))); } } SQL.Add(" else 'S' "); SQL.Add(" end as JSYCBZ "); } SQL.Add(" from XLXSJGBYZZ0"); SQL.Add(" left join XLXSJGBMX on XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" where XLXSJGBYZZ0_JGBID=:pJGBID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID = :pJGCZBID"); SQL.Add(" and XLXSCLQD_JGCZBBBID = :pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } if (maxXH != 0) { SQL.Add(" and XLXSJGBYZZ0_XH > :pmaxXH"); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" ) a"); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBMX_JGBID=:pJGBID "); SQL.Add(" and XLXSJGBMX_JGBID=sor.JGBID "); SQL.Add(" and XLXSJGBMX_XH=XH "); //此处未传参数区分,暂先默认 SQL.Add(" and XLXSJGBMX_SYXH=0 "); SQL.Add(" and XLXSJGBMX_JLDW in ('M','Km','米','千米') "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一) { if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), Math.Pow(10.0, iXSWS))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0} ,6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); SQL.Add(" )*-1 end ,"); } else { SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.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))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_WSBJM=RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end), "); SQL.Add(string.Format("XLXSJGBMX_HSBJM=RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); SQL.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|材料价汇总进一+表价进一到十位 { if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS.ToString().Trim())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); SQL.Add(" )*-1 end ,"); } else { SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.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())); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_WSBJM=RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) , "); SQL.Add(string.Format("XLXSJGBMX_HSBJM=RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end), "); } } else { if (dicJGBTJYZ.Count > 0 || dicJGBFGQCPYZ.Count > 0) { SQL.Add("XLXSJGBMX_WSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJ="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) "); SQL.Add(" )*-1 end , "); SQL.Add("XLXSJGBMX_WSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); SQL.Add(" )*-1 end ,"); SQL.Add("XLXSJGBMX_HSBJM="); SQL.Add(" case when JSYCBZ='S' then "); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end) "); SQL.Add("else ABS("); SQL.Add(string.Format("RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); SQL.Add(" )*-1 end ,"); } else { SQL.Add(string.Format("XLXSJGBMX_WSBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_HSBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJ,0))"), iXSWS)); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJ,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJ,0) = 0 then 0 else 1 end) ,"); SQL.Add(string.Format("XLXSJGBMX_WSBJM=RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_WSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_WSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_WSJJM,0) = 0 then 0 else 1 end), "); SQL.Add(string.Format("XLXSJGBMX_HSBJM=RoundFix({0},6) ", sJSGSM.Replace("JZ", "XLXSJGBYZZ0_YZZ").Replace("JGBJJ", "abs(isnull(XLXSJGBMX_HSJJM,0))"))); SQL.Add(" * (case when isnull(XLXSJGBMX_HSJJM,0) < 0 then (-1) when isnull(XLXSJGBMX_HSJJM,0) = 0 then 0 else 1 end), "); } } SQL.Add(" XLXSJGBMX_WHR=:pWHR, "); SQL.Add(" XLXSJGBMX_WHRID=:pWHRID, "); SQL.Add(" XLXSJGBMX_WHSJ=:pWHSJ "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pWHR").Value = sWHR; SQL.ParamByName("pWHRID").Value = sWHRID; SQL.ParamByName("pWHSJ").Value = DateTime.Now.ToString(); string ss = SQL.Text; Mac.MacLog.TraceFormat(String.Format("DoCPJJ-merge-Begin")); dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("DoCPJJ-merge-End")); #endregion } } else { Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-Begin")); AddXLXSJGBYZZ0(dberp, sMXBH, sJGBID, "", "", "", "", "", "", "", "", "", "", true, sJGCZBID, sJGCZBBBID, maxXH, sBJU003); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-End")); } } public static Dictionary GetJGBYZJJFS(string sJGBID) { Dictionary dicJGBJJYZ = new Dictionary(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(" SELECT XLXSJGBYZ_YZID,XLXSTZYZ_JJFS "); SQL.Add(" FROM XLXSJGBYZ "); SQL.Add(" LEFT JOIN XLXSTZYZ ON XLXSTZYZ_YZID = XLXSJGBYZ_YZID AND XLXSTZYZ_MXBH='JZJ' "); SQL.Add(" WHERE XLXSJGBYZ_JGBID = :pJGBID "); SQL.ParamByName("pJGBID").Value = sJGBID; DataSet ds = dberp.OpenDataSet(SQL); dicJGBJJYZ.Clear(); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { if (!dicJGBJJYZ.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim())) dicJGBJJYZ.Add(ds.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim(), ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim()); } return dicJGBJJYZ; } //根据出厂价自动同步区域价 public static bool TBCLCB_2(TDatabase dberp, string sMXBH, string sJGBID, string sJGBIDS, int iXSWS, string sJSBLFS, string sWHRID, string sWHR,string sBJU003) { TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(" select XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID,XLXSJGBMX_DYDJID "); SQL.Add(" from XLXSJGBMX "); SQL.Add(" where 1 = 1 AND " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBIDS)); SQL.Add(" group by XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID,XLXSJGBMX_DYDJID "); SQL.Add(" having count(XLXSJGBMX_XLXHID)>1 "); DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { //同一型号规格标准电压存在多种基准报价,不允许同步 return false; } else { try { //同步出厂价的无税表价、含税表价->区域价的无税基价、含税基价 //dberp.BeginTrans(); /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into XLXSJGBMX tar "); SQL.Add(" using "); SQL.Add(" (select b.XLXSJGBMX_XLXHID,b.XLXSJGBMX_XLGGID,b.XLXSJGBMX_XLBZID,b.XLXSJGBMX_DYDJID, b.XLXSJGBMX_WSBJ,b.XLXSJGBMX_HSBJ,"); SQL.Add(" b.XLXSJGBMX_HSBJM,b.XLXSJGBMX_WSBJM from XLXSJGBMX b where 1 = 1 "); SQL.Add(" AND " + CMISproDataBase.GetWhereEqual("b.XLXSJGBMX_JGBID", sJGBIDS)); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" tar.XLXSJGBMX_JGBID=:pJGBID "); SQL.Add(" and tar.XLXSJGBMX_XLXHID=sor.XLXSJGBMX_XLXHID "); SQL.Add(" and tar.XLXSJGBMX_XLGGID=sor.XLXSJGBMX_XLGGID "); SQL.Add(" and tar.XLXSJGBMX_XLBZID=sor.XLXSJGBMX_XLBZID "); SQL.Add(" and tar.XLXSJGBMX_DYDJID=sor.XLXSJGBMX_DYDJID "); SQL.Add(" ) "); SQL.Add(" when matched then update set XLXSJGBMX_WSJJ = sor.XLXSJGBMX_WSBJ, XLXSJGBMX_HSJJ=sor.XLXSJGBMX_HSBJ, XLXSJGBMX_WSJJM = sor.XLXSJGBMX_WSBJM, XLXSJGBMX_HSJJM=sor.XLXSJGBMX_HSBJM"); SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); DoCPJJ(dberp, sMXBH, sJGBID, false, iXSWS, sJSBLFS, sWHRID, sWHR, sBJU003); //dberp.CommitTrans(); return true; } catch { //ShowMessage(ex.Message); //dberp.RollbackTrans(); return false; } } } public static void UpdateCLCB_TJYS(TDatabase dberp, string sMXBH, string sJGBID, string sJGBIDS, string sTJYS) { TSQL SQL = new TSQL(dberp); SQL.Clear(); /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into XLXSJGBMX tar "); SQL.Add(" using "); SQL.Add(" ("); SQL.Add(" select XLXSJGBMX_JGBID,XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID,XLXSJGBMX_DYDJID, "); SQL.Add(" XLXSJGBMX_HSJJ,XLXSJGBMX_WSJJ,XLXSJGBMX_WSBJM,XLXSJGBMX_HSBJM, "); SQL.Add(" XLXSJGBMX_HSBJ,XLXSJGBMX_WSBJ from XLXSJGBMX "); SQL.Add(" where XLXSJGBMX_JGBID=:pOLDJGBID"); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" tar.XLXSJGBMX_JGBID = :pNEWJGBID "); SQL.Add(" and sor.XLXSJGBMX_XLXHID = tar.XLXSJGBMX_XLXHID "); SQL.Add(" and sor.XLXSJGBMX_XLGGID = tar.XLXSJGBMX_XLGGID "); SQL.Add(" and sor.XLXSJGBMX_XLBZID = tar.XLXSJGBMX_XLBZID "); SQL.Add(" and sor.XLXSJGBMX_DYDJID = tar.XLXSJGBMX_DYDJID "); //此处未传参数区分,暂先默认 SQL.Add(" and tar.XLXSJGBMX_SYXH=0 "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); //SQL.Add(" tar.XLXSJGBMX_HSJJ = sor.XLXSJGBMX_HSBJ, "); //SQL.Add(" tar.XLXSJGBMX_WSJJ = sor.XLXSJGBMX_WSBJ, "); //SQL.Add(" tar.XLXSJGBMX_HSBJ = tar.XLXSJGBMX_HSBJ + sor.XLXSJGBMX_HSBJ, "); //SQL.Add(" tar.XLXSJGBMX_WSBJ = tar.XLXSJGBMX_WSBJ + sor.XLXSJGBMX_WSBJ "); SQL.Add(" tar.XLXSJGBMX_HSJJ = tar.XLXSJGBMX_HSBJ + sor.XLXSJGBMX_HSBJ, "); SQL.Add(" tar.XLXSJGBMX_WSJJ = tar.XLXSJGBMX_WSBJ + sor.XLXSJGBMX_WSBJ, "); SQL.Add(" tar.XLXSJGBMX_HSBJ = tar.XLXSJGBMX_HSBJ + sor.XLXSJGBMX_HSBJ, "); SQL.Add(" tar.XLXSJGBMX_WSBJ = tar.XLXSJGBMX_WSBJ + sor.XLXSJGBMX_WSBJ, "); SQL.Add(" tar.XLXSJGBMX_HSJJM = tar.XLXSJGBMX_HSBJM + sor.XLXSJGBMX_HSBJM, "); SQL.Add(" tar.XLXSJGBMX_WSJJM = tar.XLXSJGBMX_WSBJM + sor.XLXSJGBMX_WSBJM, "); SQL.Add(" tar.XLXSJGBMX_HSBJM = tar.XLXSJGBMX_HSBJM + sor.XLXSJGBMX_HSBJM, "); SQL.Add(" tar.XLXSJGBMX_WSBJM = tar.XLXSJGBMX_WSBJM + sor.XLXSJGBMX_WSBJM "); SQL.ParamByName("pOLDJGBID").Value = sJGBIDS; SQL.ParamByName("pNEWJGBID").Value = sJGBID; dberp.ExecSQL(SQL); } //sTJYSList1:记录调价因素不为空的因子id //sTJYSList_:记录调价因素为空的因子id public static void AddXLXSJGBYZZ0(TDatabase dberp, string sMXBH, string sJGBID, string sTJYSList_, string sTJYSList1, string sTJYSList3, string sTJYSList4, string sTJYSList5, string sTJYSList8, string sTJYSList9, string sTJYSListA, string sTJYSListB, string sTJYSListC, bool bInsertXLXSJGBYZZ0, string sJGCZBID, string sJGCZBBBID, double maxXH, string sBJU003) { CMISproSession tSession = CMISproApp.GetSession(); string sJJYZIDList = string.Empty; Dictionary dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD(); TSQL SQL = new TSQL(dberp); //插入XLXSJGBMX记录后需要自动补齐XLXSJGBYZZ0记录 if (bInsertXLXSJGBYZZ0) { Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-InsXLXSJGBYZZ0-Begin")); //如果存在调价因素为空的因子 if (!sTJYSList_.Trim().Equals("")) { string[] sTJYZs = sTJYSList_.Split(','); SQL.Clear(); SQL.Add("insert into XLXSJGBYZZ0(XLXSJGBYZZ0_JGBID,XLXSJGBYZZ0_XH"); for (int i = 0; i < sTJYZs.Length; i++) { if (XLBJDUtils.GetYZXXByYZID(sTJYZs[i].Trim()).XLXSTZYZ_JJFS == "JJ") sJJYZIDList += sTJYZs[i].Trim() + ","; SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}", sTJYZs[i].Trim().Replace("JZ", ""))); } SQL.Add(") "); SQL.Add("select XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); for (int i = 0; i < sTJYZs.Length; i++) { SQL.Add(string.Format(",sum(CASE XLXSTZYZ_YZID WHEN '{0}' THEN XLXSJGBYZZ_YZZ ELSE 0 END) as YZZ{1}", sTJYZs[i].Trim(), sTJYZs[i].Trim().Replace("JZ", ""))); } SQL.Add(" from XLXSJGBMX,XLXSTZYZ,XLXSJGBYZZ "); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add("and XLXSTZYZ_MXBH='JZJ' and " + CMISproDataBase.GetWhereEqual("XLXSTZYZ_YZID", sTJYSList_.Trim())); SQL.Add("and XLXSTZYZ_TJYS=' ' and XLXSJGBYZZ_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ_YZID=XLXSTZYZ_YZID "); SQL.Add("and not exists "); SQL.Add("( "); SQL.Add("select 1 "); SQL.Add("from XLXSJGBYZZ0 "); SQL.Add("where XLXSJGBYZZ0_JGBID=:pJGBID "); SQL.Add("and XLXSJGBYZZ0_XH=XLXSJGBMX_XH "); SQL.Add(") "); SQL.Add(" group by XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSJGBMX_JLDW"); SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-InsXLXSJGBYZZ0-调价因素为空1-end")); } else { SQL.Clear(); SQL.Add("insert into XLXSJGBYZZ0(XLXSJGBYZZ0_JGBID,XLXSJGBYZZ0_XH) "); SQL.Add("select XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(" from XLXSJGBMX "); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add("and not exists "); SQL.Add("( "); SQL.Add("select 1 "); SQL.Add("from XLXSJGBYZZ0 "); SQL.Add("where XLXSJGBYZZ0_JGBID=:pJGBID "); SQL.Add("and XLXSJGBYZZ0_XH=XLXSJGBMX_XH "); SQL.Add(") "); SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-InsXLXSJGBYZZ0-调价因素为空2-end")); } } //先清空TJYS<>' '的调价因子值 if (!sTJYSList1.Trim().Equals("") || !sTJYSList3.Trim().Equals("") || !sTJYSList4.Trim().Equals("") || !sTJYSList5.Trim().Equals("") || !sTJYSList8.Trim().Equals("") || !sTJYSList9.Trim().Equals("") || !sTJYSListA.Trim().Equals("") || !sTJYSListB.Trim().Equals("") || !sTJYSListC.Trim().Equals("")) { Dictionary dicJGBFGQCPYZ = XLBJDInfo.GetJGBFGQCPYZ(sJGBID); string[] sTJYZ1 = sTJYSList1.Split(','); string[] sTJYZ3 = sTJYSList3.Split(','); string[] sTJYZ4 = sTJYSList4.Split(','); string[] sTJYZ5 = sTJYSList5.Split(','); string[] sTJYZ8 = sTJYSList8.Split(','); string[] sTJYZ9 = sTJYSList9.Split(','); string[] sTJYZA = sTJYSListA.Split(','); string[] sTJYZB = sTJYSListB.Split(','); string[] sTJYZC = sTJYSListC.Split(','); bool bflag = false; SQL.Clear(); SQL.Add("update XLXSJGBYZZ0 set "); if (!sTJYSList1.Trim().Equals("")) { for (int i = 0; i < sTJYZ1.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ1[i].Trim())) iYZZ = -9999; if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ1[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ1[i].Trim().Replace("JZ", ""), iYZZ)); bflag = true; } } if (!sTJYSList3.Trim().Equals("")) { for (int i = 0; i < sTJYZ3.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ3[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ3[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ3[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ3[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSList4.Trim().Equals("")) { for (int i = 0; i < sTJYZ4.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ4[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ4[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ4[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ4[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSList5.Trim().Equals("")) { for (int i = 0; i < sTJYZ5.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ5[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ5[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ5[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ5[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSList8.Trim().Equals("")) { for (int i = 0; i < sTJYZ8.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ8[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ8[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ8[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ8[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSList9.Trim().Equals("")) { for (int i = 0; i < sTJYZ9.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZ9[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ9[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ9[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZ9[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSListA.Trim().Equals("")) { for (int i = 0; i < sTJYZA.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZA[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZA[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZA[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZA[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSListB.Trim().Equals("")) { for (int i = 0; i < sTJYZB.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZB[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZB[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZB[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZB[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } if (!sTJYSListC.Trim().Equals("")) { for (int i = 0; i < sTJYZC.Length; i++) { int iYZZ = 0; if (dicJGBFGQCPYZ.ContainsKey(sTJYZC[i].Trim())) iYZZ = -9999; if (bflag) { SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZC[i].Trim().Replace("JZ", ""), iYZZ)); } else { if (i == 0) SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}={1}", sTJYZC[i].Trim().Replace("JZ", ""), iYZZ)); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}={1}", sTJYZC[i].Trim().Replace("JZ", ""), iYZZ)); } bflag = true; } } SQL.Add(" where XLXSJGBYZZ0_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBYZZ0_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and exists(select 1 from XLXSJGBMX"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH "); SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.Add(" )"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pJGBID").Value = sJGBID; Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-清空TJYS<>' '的调价因子值-begin")); dberp.ExecSQL(SQL); Mac.MacLog.TraceFormat(String.Format("AddXLXSJGBYZZ0-清空TJYS<>' '的调价因子值-end")); } int VID = CMISproDataBase.NewID("DBERP", "V_XLXSBJTJ"); DateTime TimeStamp = MISproUtils.GetServerTime(); //自动插入TJYS=1的调价因子值 if (!sTJYSList1.Trim().Equals("")) { string[] sTJYZ = sTJYSList1.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); if (yzxx.XLXSTZYZ_JJFS == "JJ") sJJYZIDList += sTJYZ[i].Trim() + ","; SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ1_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" ,XLXSJGBYZZ1 "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZ1_JGBID=:pTJJGBID and XLXSJGBYZZ1_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZ1_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ1_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ1_XLBZID=' ' and XLXSJGBYZZ1_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ1_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX,XLXSJGBYZZ1 "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBYZZ1_XLXHID and XLXSCLQD_XLGGID=XLXSJGBYZZ1_XLGGID and XLXSCLQD_XLBZID=XLXSJGBYZZ1_XLBZID and XLXSCLQD_DYDJID=XLXSJGBYZZ1_DYDJID "); } SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZ1_JGBID=:pTJJGBID and XLXSJGBYZZ1_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZ1_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ1_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ1_XLBZID=XLXSJGBMX_XLBZID and XLXSJGBYZZ1_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=3的调价因子值 if (!sTJYSList3.Trim().Equals("")) { string[] sTJYZ = sTJYSList3.Split(','); SQL.Clear(); SQL.Add("select XLXSJGB_XSQYIDS from XLXSJGB where XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=:pJGBID"); SQL.ParamByName("pMXBH").Value = sMXBH; SQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGB = dberp.OpenDataSet(SQL); string sXSQYIDS = dsJGB.Tables[0].Rows[0][0].ToString().Trim(); sXSQYIDS = sXSQYIDS.Split(',')[0].Trim();//只取第一个区域设置的因子值 for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); if (yzxx.XLXSTZYZ_JJFS == "JJ") sJJYZIDList += sTJYZ[i].Trim() + ","; SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add("select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH "); SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join "); SQL.Add("( "); SQL.Add(" select XLXSJGBYZZ3_XSQYID as XSQYID,XLXSJGBYZZ3_DTCLID as DTCLID,XLXSJGBYZZ3_YZID as YZID,XLXSJGBYZZ3_YZZ as YZZ"); SQL.Add(" from XLXSJGBYZZ3,XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_TJYS='3' and XLXSJGBYZZ3_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ3_YZID=XLXSTZYZ_YZID"); //型号、主芯截面都没有匹配 SQL.Add(" and XLXSJGBYZZ3_XLXHID=' '"); SQL.Add(" and XLXSJGBYZZ3_ZXJM=0"); SQL.Add(" and XLXSJGBYZZ3_XSQYID='" + sXSQYIDS + "'"); SQL.Add(" and XLXSJGBYZZ3_YZID=:pYZID"); SQL.Add(" ) a on a.DTCLID=XLXHB_DTCLID"); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(YZID,' ')<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add("select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH "); SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB11 on XLXSBJXLGGTHB_JGB11.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB11.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join "); SQL.Add("( "); SQL.Add(" select XLXSJGBYZZ3_XSQYID as XSQYID,XLXSJGBYZZ3_DTCLID as DTCLID,XLXSJGBYZZ3_ZXJM as ZXJM,XLXSJGBYZZ3_YZID as YZID,XLXSJGBYZZ3_YZZ as YZZ"); SQL.Add(" from XLXSJGBYZZ3,XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_TJYS='3' and XLXSJGBYZZ3_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ3_YZID=XLXSTZYZ_YZID"); //主芯截面完全匹配 SQL.Add(" and XLXSJGBYZZ3_XLXHID=' ' "); SQL.Add(" and XLXSJGBYZZ3_ZXJM<>0 "); SQL.Add(" and XLXSJGBYZZ3_XSQYID='" + sXSQYIDS + "'"); SQL.Add(" and XLXSJGBYZZ3_YZID=:pYZID"); SQL.Add(" ) a on a.DTCLID=XLXHB_DTCLID"); SQL.Add(" and ((convert(char,a.ZXJM)=XLGGB_DTJMZHID) or (XLGGB_DTJMZHID like (rtrim(convert(char,a.ZXJM))||'/%'))) "); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(YZID,' ')<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add("select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH "); SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join "); SQL.Add("( "); SQL.Add(" select XLXSJGBYZZ3_XSQYID as XSQYID,XLXSJGBYZZ3_DTCLID as DTCLID,XLXSJGBYZZ3_XLXHID as XLXHID,XLXSJGBYZZ3_YZID as YZID,XLXSJGBYZZ3_YZZ as YZZ"); SQL.Add(" from XLXSJGBYZZ3,XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_TJYS='3' and XLXSJGBYZZ3_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ3_YZID=XLXSTZYZ_YZID"); //型号完全匹配 SQL.Add(" and XLXSJGBYZZ3_ZXJM=0"); SQL.Add(" and XLXSJGBYZZ3_XSQYID='" + sXSQYIDS + "'"); SQL.Add(" and XLXSJGBYZZ3_YZID=:pYZID"); SQL.Add(" ) a on a.DTCLID=XLXHB_DTCLID"); SQL.Add(" and a.XLXHID=XLXSJGBMX_XLXHID"); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(YZID,' ')<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add("select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH "); SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB12 on XLXSBJXLGGTHB_JGB12.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB12.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join "); SQL.Add("( "); SQL.Add(" select XLXSJGBYZZ3_XSQYID as XSQYID,XLXSJGBYZZ3_DTCLID as DTCLID,XLXSJGBYZZ3_XLXHID as XLXHID,XLXSJGBYZZ3_ZXJM as ZXJM,XLXSJGBYZZ3_YZID as YZID,XLXSJGBYZZ3_YZZ as YZZ"); SQL.Add(" from XLXSJGBYZZ3,XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_TJYS='3' and XLXSJGBYZZ3_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ3_YZID=XLXSTZYZ_YZID"); //型号、主芯截面完全匹配 SQL.Add(" and XLXSJGBYZZ3_ZXJM<>0 "); SQL.Add(" and XLXSJGBYZZ3_XSQYID='" + sXSQYIDS + "'"); SQL.Add(" and XLXSJGBYZZ3_YZID=:pYZID"); SQL.Add(" ) a on a.DTCLID=XLXHB_DTCLID"); SQL.Add(" and a.XLXHID=XLXSJGBMX_XLXHID"); SQL.Add(" and ((convert(char,a.ZXJM)=XLGGB_DTJMZHID) or (XLGGB_DTJMZHID like (rtrim(convert(char,a.ZXJM))||'/%'))) "); //SQL.Add(" and ((to_char(a.ZXJM)=XLGGB_DTJMZHID) or (XLGGB_DTJMZHID like (rtrim(to_char(a.ZXJM))||'/%'))) "); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(YZID,' ')<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=4的调价因子值 if (!sTJYSList4.Trim().Equals("")) { string[] sTJYZ = sTJYSList4.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); if (yzxx.XLXSTZYZ_JJFS == "JJ") sJJYZIDList += sTJYZ[i].Trim() + ","; SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB13 on XLXSBJXLGGTHB_JGB13.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB13.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" left join ( "); SQL.Add(" select XLXSJGBYZZ4_XLXHID,XLXSJGBYZZ4_DYDJID,XLXSJGBYZZ4_XXJGID,XLXSJGBYZZ4_ZXJMXX,XLXSJGBYZZ4_ZXJMSX,XLXSJGBYZZ4_YZZ "); SQL.Add(" from XLXSJGBYZZ4 "); SQL.Add(" where XLXSJGBYZZ4_JGBID=:pTJJGBID and XLXSJGBYZZ4_YZID=:pYZID "); //1、优先级由低到高依次更新:电压、芯线结构为空 SQL.Add(" and XLXSJGBYZZ4_DYDJID=' '"); SQL.Add(" and XLXSJGBYZZ4_XXJGID=' ' "); SQL.Add(" ) a "); SQL.Add(" on XLXSJGBYZZ4_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ4_ZXJMXX<= ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ4_ZXJMSX<>0 and XLXSJGBYZZ4_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ4_ZXJMSX=0)"); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBYZZ4_XLXHID<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB14 on XLXSBJXLGGTHB_JGB14.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB14.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" left join ( "); SQL.Add(" select XLXSJGBYZZ4_XLXHID,XLXSJGBYZZ4_DYDJID,XLXSJGBYZZ4_XXJGID,XLXSJGBYZZ4_ZXJMXX,XLXSJGBYZZ4_ZXJMSX,XLXSJGBYZZ4_YZZ "); SQL.Add(" from XLXSJGBYZZ4 "); SQL.Add(" where XLXSJGBYZZ4_JGBID=:pTJJGBID and XLXSJGBYZZ4_YZID=:pYZID "); //2、优先级由低到高依次更新:电压为空、芯线结构不为空 SQL.Add(" and XLXSJGBYZZ4_DYDJID=' '"); SQL.Add(" ) a "); SQL.Add(" on XLXSJGBYZZ4_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ4_ZXJMXX<= ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ4_ZXJMSX<>0 and XLXSJGBYZZ4_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ4_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ4_XXJGID=XLGGB_XXJGID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBYZZ4_XLXHID<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB16 on XLXSBJXLGGTHB_JGB16.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB16.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" left join ( "); SQL.Add(" select XLXSJGBYZZ4_XLXHID,XLXSJGBYZZ4_DYDJID,XLXSJGBYZZ4_XXJGID,XLXSJGBYZZ4_ZXJMXX,XLXSJGBYZZ4_ZXJMSX,XLXSJGBYZZ4_YZZ "); SQL.Add(" from XLXSJGBYZZ4 "); SQL.Add(" where XLXSJGBYZZ4_JGBID=:pTJJGBID and XLXSJGBYZZ4_YZID=:pYZID "); //3、优先级由低到高依次更新:电压不为空、芯线结构为空 SQL.Add(" and XLXSJGBYZZ4_XXJGID=' '"); SQL.Add(" ) a "); SQL.Add(" on XLXSJGBYZZ4_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ4_ZXJMXX<= ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ4_ZXJMSX<>0 and XLXSJGBYZZ4_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ4_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ4_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBYZZ4_XLXHID<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB17 on XLXSBJXLGGTHB_JGB17.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add(" left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB17.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" left join ( "); SQL.Add(" select XLXSJGBYZZ4_XLXHID,XLXSJGBYZZ4_DYDJID,XLXSJGBYZZ4_XXJGID,XLXSJGBYZZ4_ZXJMXX,XLXSJGBYZZ4_ZXJMSX,XLXSJGBYZZ4_YZZ "); SQL.Add(" from XLXSJGBYZZ4 "); SQL.Add(" where XLXSJGBYZZ4_JGBID=:pTJJGBID and XLXSJGBYZZ4_YZID=:pYZID "); //4、优先级由低到高依次更新:电压不为空、芯线结构不为空 SQL.Add(" ) a "); SQL.Add(" on XLXSJGBYZZ4_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ4_ZXJMXX<= ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ4_ZXJMSX<>0 and XLXSJGBYZZ4_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ4_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ4_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" and XLXSJGBYZZ4_XXJGID=XLGGB_XXJGID"); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBYZZ4_XLXHID<>' ' "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=5的调价因子值 if (!sTJYSList5.Trim().Equals("")) { string[] sTJYZ = sTJYSList5.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); if (yzxx.XLXSTZYZ_JJFS == "JJ") sJJYZIDList += sTJYZ[i].Trim() + ","; SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ5_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSTZYZ,XLXSJGBYZZ5,XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB18 on XLXSBJXLGGTHB_JGB18.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add(" left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB18.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID"); SQL.Add(" and XLXSTZYZ_TJYS='5' and XLXSJGBYZZ5_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ5_YZID=XLXSTZYZ_YZID "); SQL.Add(" and XLXSJGBYZZ5_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ5_ZXJMXX<=ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ5_ZXJMSX<>0 and XLXSJGBYZZ5_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ5_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ5_ZXSXX<=XLGGB_GGZXS and ((XLXSJGBYZZ5_ZXSSX<>0 and XLXSJGBYZZ5_ZXSSX>=XLGGB_GGZXS) or XLXSJGBYZZ5_ZXSSX=0)"); //1、优先级由低到高依次更新:电压为空 SQL.Add(" and XLXSJGBYZZ5_DYDJID=' '"); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ5_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSTZYZ,XLXSJGBYZZ5,XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB15 on XLXSBJXLGGTHB_JGB15.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB15.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID"); SQL.Add(" and XLXSTZYZ_TJYS='5' and XLXSJGBYZZ5_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ5_YZID=XLXSTZYZ_YZID "); SQL.Add(" and XLXSJGBYZZ5_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" and XLXSJGBYZZ5_ZXJMXX<=ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZ5_ZXJMSX<>0 and XLXSJGBYZZ5_ZXJMSX>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZ5_ZXJMSX=0)"); SQL.Add(" and XLXSJGBYZZ5_ZXSXX<=XLGGB_GGZXS and ((XLXSJGBYZZ5_ZXSSX<>0 and XLXSJGBYZZ5_ZXSSX>=XLGGB_GGZXS) or XLXSJGBYZZ5_ZXSSX=0)"); //2、优先级由低到高依次更新:电压不为空 SQL.Add(" and XLXSJGBYZZ5_DYDJID=XLXSJGBMX_DYDJID "); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=8的调价因子值 if (!sTJYSList8.Trim().Equals("")) { string[] sTJYZ = sTJYSList8.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID,XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH,"); SQL.Add(" case when XLXSJGBMX_JLDW in ('T', '吨') then isnull(XLXSJGBYZZ8_YZZ,0) "); SQL.Add(" when XLXSJGBMX_JLDW in ('Kg', '千克','公斤') then isnull(XLXSJGBYZZ8_YZZ,0)/1000 "); SQL.Add(string.Format(" else ISNULL(XLXSJGBYZZ8_YZZ * XLXSCLQD_CLZL/1000,0) end as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX,XLXSTZYZ,XLXSJGBYZZ8 "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBYZZ8_XLXHID and XLXSCLQD_XLGGID=XLXSJGBYZZ8_XLGGID and XLXSCLQD_XLBZID=XLXSJGBYZZ8_XLBZID and XLXSCLQD_DYDJID=XLXSJGBYZZ8_DYDJID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID"); SQL.Add(" and XLXSTZYZ_TJYS='8' and XLXSJGBYZZ8_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ8_YZID=XLXSTZYZ_YZID "); SQL.Add(" and XLXSJGBYZZ8_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ8_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ8_XLBZID=XLXSJGBMX_XLBZID and XLXSJGBYZZ8_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } //自动插入TJYS=9的调价因子值 if (!sTJYSList9.Trim().Equals("")) { string[] sTJYZ = sTJYSList9.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); if (yzxx.XLXSTZYZ_JJFS == "JJ") sJJYZIDList += sTJYZ[i].Trim() + ","; SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ9_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" ,XLXSJGBYZZ9 "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZ9_JGBID=:pTJJGBID and XLXSJGBYZZ9_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZ9_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ9_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ9_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZ9_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX,XLXSJGBYZZ9 "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBYZZ9_XLXHID and XLXSCLQD_XLGGID=XLXSJGBYZZ9_XLGGID and XLXSCLQD_DYDJID=XLXSJGBYZZ9_DYDJID "); } SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZ9_JGBID=:pTJJGBID and XLXSJGBYZZ9_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZ9_XLXHID=XLXSJGBMX_XLXHID and XLXSJGBYZZ9_XLGGID=XLXSJGBMX_XLGGID and XLXSJGBYZZ9_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } if (!sTJYSListA.Trim().Equals("")) { string[] sTJYZ = sTJYSListA.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZA_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); SQL.Add(" left join XLXSBJTJXHML A on A.XLXSBJTJXHML_XLXHID=XLXSJGBMX_XLXHID and A.XLXSBJTJXHML_DYDJID=XLXSJGBMX_DYDJID "); SQL.Add(" left join XLXSBJTJXHML B on B.XLXSBJTJXHML_XLXHID=XLXSJGBMX_XLXHID and B.XLXSBJTJXHML_DYDJID=' ' "); SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(XLXSJGBMX_XLGGID , '*','×') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" ,XLXSJGBYZZA "); SQL.Add(" left join XLXSCPML on XLXSCPML_CPMLID=XLXSJGBYZZA_CPMLID "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZA_JGBID=:pTJJGBID and XLXSJGBYZZA_YZID=:pYZID "); SQL.Add(" and XLXSCPML_CPMLIDS like '%'||rtrim(case when A.XLXSBJTJXHML_CPMLID is null then B.XLXSBJTJXHML_CPMLID else A.XLXSBJTJXHML_CPMLID end)||'%' and XLXSJGBYZZA_XLGGID=convert(char,XLDTJMZHB_DTJM1) "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } if (!sTJYSListB.Trim().Equals("")) { string[] sTJYZ = sTJYSListB.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",XLXSJGBYZZB_YZZ as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB10 on XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" ,XLXSJGBYZZB "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZB_JGBID=:pTJJGBID and XLXSJGBYZZB_YZID=:pYZID "); SQL.Add(" and XLXSJGBYZZB_ZXJMS<=ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZB_ZXJMZ<>0 and XLXSJGBYZZB_ZXJMZ>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZB_ZXJMZ=0)"); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } if (!sTJYSListC.Trim().Equals("")) { string[] sTJYZ = sTJYSListC.Split(','); for (int i = 0; i < sTJYZ.Length; i++) { if (!sTJYZ[i].Trim().Equals("")) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sTJYZ[i].Trim()); SQL.Clear(); SQL.Add(" insert into V_XLXSBJTJ(V_XLXSBJTJ_ID,V_XLXSBJTJ_JGBID,V_XLXSBJTJ_XH,V_XLXSBJTJ_YZZ,V_XLXSBJTJ_TIMESTAMP,V_XLXSBJTJ_WHR,V_XLXSBJTJ_WHRID,V_XLXSBJTJ_WHSJ) "); SQL.Add(" select :pID, XLXSJGBMX_JGBID as JGBID,XLXSJGBMX_XH as XH"); SQL.Add(string.Format(",SUM(XLXSJGBYZZC_YZZ) as YZZ{0},:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.Add(" from XLXSJGBMX "); SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID "); SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB10 on XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGID=XLXSJGBMX_XLGGID "); SQL.Add("left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID "); SQL.Add(" LEFT JOIN XLXSBJCPYS ON XLXSBJCPYS_XLJBXHID=XLXSJGBMX_XLXHID and XLXSBJCPYS_DYDJID=XLXSJGBMX_DYDJID "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID "); } SQL.Add(" ,XLXSJGBYZZC "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" and XLXSJGBYZZC_JGBID=:pTJJGBID and XLXSJGBYZZC_YZID=:pYZID "); SQL.Add(" and XLXSBJCPYS_XXJGID =XLXSJGBYZZC_CPTX and XLDTJMZHB_DTJM1=XLXSJGBYZZC_ZXJM "); if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.Add(" GROUP BY XLXSJGBMX_JGBID,XLXSJGBMX_XH "); SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim(); SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim(); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pTIMESTAMP").Value = TimeStamp; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" merge into XLXSJGBYZZ0 tar "); SQL.Add(" using V_XLXSBJTJ sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and V_XLXSBJTJ_ID=:pID and XLXSJGBYZZ0_JGBID=V_XLXSBJTJ_JGBID and XLXSJGBYZZ0_XH=V_XLXSBJTJ_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(string.Format("XLXSJGBYZZ0_YZZ{0}=V_XLXSBJTJ_YZZ ", sTJYZ[i].Trim().Replace("JZ", ""))); SQL.ParamByName("pID").Value = VID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add("delete from V_XLXSBJTJ where V_XLXSBJTJ_ID=:pID "); SQL.ParamByName("pID").Value = VID; dberp.ExecSQL(SQL); } } } UpdateCJGS(dberp,SQL,sJGBID,maxXH); sJJYZIDList = sJJYZIDList.TrimEnd(','); if (!string.IsNullOrEmpty(sJJYZIDList)) { SQL.Clear(); SQL.Add("merge into XLXSJGBYZZ0 using( "); SQL.Add(" select XLXSJGBMX_XH as XH,("); SQL.Add(" case when :pBJU003 in ('KM', '千米') and XLXSJGBMX_JLDW in ('M', '米') then 0.001"); SQL.Add(" when :pBJU003 in ('M', '米') and XLXSJGBMX_JLDW in ('Km', '千米') then 1000.0"); SQL.Add(" when :pBJU003 in ('M', '米') and XLXSJGBMX_JLDW in ('M', '米') then 1.0"); SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSJGBMX_JLDW in ('Km', '千米') then 1.0"); string sTDDWList = "("; foreach (string sKey in dicLenJLDWTD.Keys) { SQL.Add(string.Format(" when :pBJU003 in ('KM', '千米') and XLXSJGBMX_JLDW='{0}' then 0.001*{1} ", sKey, dicLenJLDWTD[sKey])); SQL.Add(string.Format(" when :pBJU003 in ('M', '米') and XLXSJGBMX_JLDW='{0}' then {1} ", sKey, dicLenJLDWTD[sKey])); SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSJGBMX_JLDW in ('Km', '千米') then 1000.0/{1} ", sKey, dicLenJLDWTD[sKey])); SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSJGBMX_JLDW in ('M', '米') then 1.0/{1} ", sKey, dicLenJLDWTD[sKey])); sTDDWList += "'" + sKey + "',"; } sTDDWList = sTDDWList.TrimEnd(','); sTDDWList += ")"; SQL.Add(" when :pBJU003 in " + sTDDWList + " and XLXSJGBMX_JLDW in " + sTDDWList + " then 1.0"); SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then 0.001"); SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW in ('T', '吨') then 1000.0"); SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then 1.0"); SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSJGBMX_JLDW in ('T', '吨') then 1.0"); if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米")) { SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else 1.0/XLXSCLQD_CLZL end)"); SQL.Add(" when :pBJU003 in ('M', '米') and XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*1000.0 end)"); SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL"); SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSJGBMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*1000.0 end)"); SQL.Add(" when :pBJU003 in ('M', '米') and XLXSJGBMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)* 1000.0*1000.0 end)"); SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL"); SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSJGBMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL/1000.0"); SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW in ('M', '米') then XLXSCLQD_CLZL/1000.0"); SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSJGBMX_JLDW in ('M', '米') then XLXSCLQD_CLZL/1000.0/1000.0"); foreach (string sKey in dicLenJLDWTD.Keys) { SQL.Add(string.Format(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey])); SQL.Add(string.Format(" when :pBJU003 in ('T', '吨') and XLXSJGBMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL/1000.0/1000.0 ", sKey, dicLenJLDWTD[sKey])); SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSJGBMX_JLDW in ('KG', '千克', '公斤') then 1000.0/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey])); SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSJGBMX_JLDW in ('T', '吨') then 1000.0*1000.0/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey])); } } else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M")) { SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*(1/1000.0) end)"); SQL.Add(" when :pBJU003 in ('M', '米') and XLXSJGBMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else 1.0/XLXSCLQD_CLZL end)"); SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL*1000.0"); SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSJGBMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL) end)"); SQL.Add(" when :pBJU003 in ('M', '米') and XLXSJGBMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*1000.0 end)"); SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL*1000.0"); SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSJGBMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL"); SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW in ('M', '米') then XLXSCLQD_CLZL"); SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSJGBMX_JLDW in ('M', '米') then XLXSCLQD_CLZL/1000.0"); foreach (string sKey in dicLenJLDWTD.Keys) { SQL.Add(string.Format(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSJGBMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL ", sKey, dicLenJLDWTD[sKey])); SQL.Add(string.Format(" when :pBJU003 in ('T', '吨') and XLXSJGBMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey])); SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSJGBMX_JLDW in ('KG', '千克', '公斤') then 1/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey])); SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSJGBMX_JLDW in ('T', '吨') then 1000.0/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey])); } } SQL.Add(" when :pBJU003=upper(XLXSJGBMX_JLDW) and :pBJU003 not in ('M','KM','米','千米','KG','T','千克','公斤','吨') "); SQL.Add(" and XLXSJGBMX_JLDW not in ('M','Km','米','千米','Kg','T','千克','公斤','吨') "); foreach (string sKey in dicLenJLDWTD.Keys) { SQL.Add(string.Format("and XLXSJGBMX_JLDW<>'{0}' ", sKey)); } SQL.Add(" then 1.0 else 1.0"); SQL.Add(" end "); SQL.Add(" ) as HSBL "); SQL.Add(" from XLXSJGBMX "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID and XLXSCLQD_WPID='ZZZZ' "); SQL.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(XLXSCLQD_CLZL,0)<>0 "); if (maxXH != 0) { SQL.Add(" and XLXSJGBMX_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } if (!sJGCZBID.Trim().Equals("")) { SQL.Add(" and XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); SQL.ParamByName("pJGCZBID").Value = sJGCZBID.Trim(); SQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID.Trim(); } SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" XLXSJGBYZZ0_JGBID=:pJGBID and XLXSJGBYZZ0_XH=XH "); if (maxXH != 0) { SQL.Add(" and XLXSJGBYZZ0_XH > :pmaxXH "); SQL.ParamByName("pmaxXH").Value = maxXH; } SQL.Add(" ) "); SQL.Add(" when matched then update set "); string[] JJYZIDnum = sJJYZIDList.Split(','); for (int j = 0; j < JJYZIDnum.Length; j++) { if (j == 0) SQL.Add(string.Format(" XLXSJGBYZZ0_YZZ{0}=XLXSJGBYZZ0_YZZ{0}*HSBL", JJYZIDnum[j].Trim().Replace("JZ", ""))); else SQL.Add(string.Format(",XLXSJGBYZZ0_YZZ{0}=XLXSJGBYZZ0_YZZ{0}*HSBL", JJYZIDnum[j].Trim().Replace("JZ", ""))); } SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pBJU003").Value = sBJU003; dberp.ExecSQL(SQL); } } public static void UpdateCJGS(TDatabase dberp, TSQL SQL, string sJGBID,double maxXH) { int iXSWS = 5; string sCJGS = ""; string sMXBH = ""; string sBJFLID = "02"; if (sJGBID == "26080009") sBJFLID = "04"; BJFLXX flxx = XLBJDUtils.GetBJFLXX(sBJFLID); if (!string.IsNullOrEmpty(flxx.XLXSBJFL_CJGS)) { int indexXSML = 0; int indexFJSX = 0; int indexGJ = 0; int indexDF = 0; int indexQTSH = 0; int indexFXYL = 0; int indexZJF = 0; int indexPTF = 0; int indexZZSCB = 0; for (int i = 1; i <= 20; i++) { if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "其他损耗") { UpdateCLSH(dberp, SQL, sJGBID,"QTCLSH",maxXH); SQL.Clear(); SQL.Add("merge into XLXSJGBYZZ0 tar "); SQL.Add("using ( select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSCLQD_JGBWSCB,XLXSCLQD_JGBHSCB from XLXSJGBMX "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID and XLXSCLQD_WPID='ZZZZ' "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH>=:maxXH "); SQL.Add(" )sor on(XLXSJGBYZZ0_JGBID=XLXSJGBMX_JGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH) "); SQL.Add(" when matched then update set XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "*isnull(XLXSCLQD_JGBHSCB,0)/100.0 "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; dberp.ExecSQL(SQL); } if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "风险余量") { UpdateCLSH(dberp, SQL, sJGBID, "DTCLSH",maxXH); SQL.Clear(); SQL.Add("merge into XLXSJGBYZZ0 tar "); SQL.Add("using ( select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSCLQD_JGBWSCB,XLXSCLQD_JGBHSCB from XLXSJGBMX "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSJGBMX_XLXHID and XLXSCLQD_XLGGID=XLXSJGBMX_XLGGID and XLXSCLQD_XLBZID=XLXSJGBMX_XLBZID and XLXSCLQD_DYDJID=XLXSJGBMX_DYDJID and XLXSCLQD_WPID='ZZZZ' "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH>=:maxXH "); SQL.Add(" )sor on(XLXSJGBYZZ0_JGBID=XLXSJGBMX_JGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH) "); SQL.Add(" when matched then update set XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "*isnull(XLXSCLQD_JGBHSCB,0)/100.0 "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; dberp.ExecSQL(SQL); } if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "销售毛利") indexXSML = i; if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "附加属性") indexFJSX = i; } if (indexXSML > 0 && indexFJSX > 0) { SQL.Clear(); SQL.Add(string.Format("update XLXSJGBYZZ0 set XLXSJGBYZZ0_YZZ{0}=XLXSJGBYZZ0_YZZ{0}+XLXSJGBYZZ0_YZZ{1} where XLXSJGBYZZ0_JGBID=:pJGBID and XLXSJGBYZZ0_XH>=:maxXH ", indexXSML.ToString().PadLeft(2, '0'), indexFJSX.ToString().PadLeft(2, '0'))); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; dberp.ExecSQL(SQL); } sCJGS = flxx.XLXSBJFL_CJGS; sMXBH = flxx.XLXSBJFL_MXBH; //将数据都处理为0-防止编辑存在部分计算公式出错 SQL.Clear(); SQL.Add(" update XLXSJGBMX set XLXSJGBMX_CJ = 0.0 where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH>=:maxXH "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; dberp.ExecSQL(SQL); if (!sCJGS.Equals("")) { sCJGS = sCJGS.Replace("CLCB", "XXX01").Replace("JGBJJ", "XXX02").Replace("JGBBJ", "XXX03").Replace("CPBJ", "XXX04").Replace("ZDXJ", "XXX05").Replace("BJDHQCB", "XXX06"); sCJGS = sCJGS.Replace("JZ", "tar.XLXSJGBYZZ0_YZZ"); sCJGS = sCJGS.Replace("XXX01", "sor.XLXSJGBMX_HSJJ"); sCJGS = sCJGS.Replace("XXX02", "sor.XLXSJGBMX_HSJJ"); sCJGS = sCJGS.Replace("XXX06", "sor.XLXSJGBMX_HSJJ"); sCJGS = sCJGS.Replace(" ", "").Replace("×", "*").Replace("100", "100.00"); sCJGS = sCJGS.Replace("round", "roundFix"); SQL.Clear(); SQL.Add(" merge into XLXSJGBMX sor "); SQL.Add(" using ("); SQL.Add(" select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSJGBMX_HSJJ "); SQL.Add(" ,XLXSJGBYZZ0_YZZ01,XLXSJGBYZZ0_YZZ02,XLXSJGBYZZ0_YZZ03,XLXSJGBYZZ0_YZZ04,XLXSJGBYZZ0_YZZ05, "); SQL.Add(" XLXSJGBYZZ0_YZZ06,XLXSJGBYZZ0_YZZ07,XLXSJGBYZZ0_YZZ08,XLXSJGBYZZ0_YZZ09,XLXSJGBYZZ0_YZZ10"); SQL.Add(" ,XLXSJGBYZZ0_YZZ11,XLXSJGBYZZ0_YZZ12,XLXSJGBYZZ0_YZZ13,XLXSJGBYZZ0_YZZ14,XLXSJGBYZZ0_YZZ15, "); SQL.Add(" XLXSJGBYZZ0_YZZ16,XLXSJGBYZZ0_YZZ17,XLXSJGBYZZ0_YZZ18,XLXSJGBYZZ0_YZZ19,XLXSJGBYZZ0_YZZ20"); SQL.Add(" from XLXSJGBMX "); SQL.Add(" left join XLXSJGBYZZ0 on XLXSJGBYZZ0_JGBID = XLXSJGBMX_JGBID and XLXSJGBYZZ0_XH = XLXSJGBMX_XH "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH>=:maxXH "); SQL.Add(" ) tar "); SQL.Add(" on ( "); SQL.Add(" tar.XLXSJGBMX_JGBID = sor.XLXSJGBMX_JGBID "); SQL.Add(" and tar.XLXSJGBMX_XH = sor.XLXSJGBMX_XH "); SQL.Add(" ) "); SQL.Add(" when matched then update set XLXSJGBMX_CJ= RoundFix( "); SQL.Add(sCJGS); SQL.Add(" ," + iXSWS.ToString() + " )"); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; string SS = SQL.Text; try { dberp.ExecSQL(SQL); } catch { } } for (int i = 1; i <= 20; i++) { if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "工价") indexGJ = i; if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "生产电费") indexDF = i; if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "其他损耗") indexQTSH = i; if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "风险余量") indexFXYL = i; if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "增值税成本") indexZZSCB = i; if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "折旧费") { indexZJF = i; SQL.Clear(); SQL.Add("merge into XLXSJGBYZZ0 tar "); SQL.Add("using ( select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSJGBMX_CJ from XLXSJGBMX "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH>=:maxXH "); SQL.Add(" )sor on(XLXSJGBMX_JGBID=XLXSJGBYZZ0_JGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH) "); SQL.Add(" when matched then update set XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "*XLXSJGBMX_CJ/100.0 "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; dberp.ExecSQL(SQL); } if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "配套费") { indexPTF = i; SQL.Clear(); SQL.Add("merge into XLXSJGBYZZ0 tar "); SQL.Add("using ( select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSJGBMX_CJ from XLXSJGBMX "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH>=:maxXH "); SQL.Add(" )sor on(XLXSJGBMX_JGBID=XLXSJGBYZZ0_JGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH) "); SQL.Add(" when matched then update set XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "*XLXSJGBMX_CJ/100.0 "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; dberp.ExecSQL(SQL); } if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "销售毛利") { SQL.Clear(); SQL.Add("merge into XLXSJGBYZZ0 tar "); SQL.Add("using ( select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSJGBMX_CJ from XLXSJGBMX "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH>=:maxXH "); SQL.Add(" )sor on(XLXSJGBMX_JGBID=XLXSJGBYZZ0_JGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH) "); SQL.Add(" when matched then update set XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "*XLXSJGBMX_CJ/100.0 "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; dberp.ExecSQL(SQL); } if (XLBJDUtils.GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "认证费") { SQL.Clear(); SQL.Add("merge into XLXSJGBYZZ0 tar "); SQL.Add("using ( select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSJGBMX_CJ from XLXSJGBMX "); SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH>=:maxXH "); SQL.Add(" )sor on(XLXSJGBMX_JGBID=XLXSJGBYZZ0_JGBID and XLXSJGBMX_XH=XLXSJGBYZZ0_XH) "); SQL.Add(" when matched then update set XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + "*XLXSJGBMX_CJ/100.0 "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; dberp.ExecSQL(SQL); } } if (indexZZSCB > 0 && indexPTF > 0 && indexZJF > 0 && indexFXYL > 0 && indexQTSH > 0 && indexDF > 0 && indexGJ > 0) { SQL.Clear(); SQL.Add(string.Format("update XLXSJGBYZZ0 set XLXSJGBYZZ0_YZZ{0}=XLXSJGBYZZ0_YZZ{0}*(XLXSJGBYZZ0_YZZ{1}+(XLXSJGBYZZ0_YZZ{2}* 10000 / 81.2655989526499 / 71.3980341706337)+XLXSJGBYZZ0_YZZ{3}+XLXSJGBYZZ0_YZZ{4}+XLXSJGBYZZ0_YZZ{5}+XLXSJGBYZZ0_YZZ{6}) where XLXSJGBYZZ0_JGBID=:pJGBID and XLXSJGBYZZ0_XH>=:maxXH ", indexZZSCB.ToString().PadLeft(2, '0'), indexDF.ToString().PadLeft(2, '0'), indexGJ.ToString().PadLeft(2, '0'), indexZJF.ToString().PadLeft(2, '0'), indexPTF.ToString().PadLeft(2, '0'), indexQTSH.ToString().PadLeft(2, '0'), indexFXYL.ToString().PadLeft(2, '0'))); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("maxXH").Value = maxXH; dberp.ExecSQL(SQL); } } } public static void ReCalcWSJG(TDatabase dberp, TSQL SQL, string sJGBID, string sMXBH, int iXSWS, double maxXH) { JGBMLXX jgbxx = XLBJDUtils.GetXLXSJGBXX(sJGBID, sMXBH); if (jgbxx.XLXSJGB_TJYS == "1" && jgbxx.XLXSJGB_JJLY == "A" && jgbxx.XLXSJGB_BJLY == "J" && jgbxx.XLXSJGB_WSJGJSLY == "2") { SQL.Clear(); SQL.Add(string.Format(@"update XLXSJGBMX set XLXSJGBMX_WSJJ = roundfix(XLXSJGBMX_HSJJ*(1-:pZZSL/100),{0}), XLXSJGBMX_WSJJM = roundfix(XLXSJGBMX_HSJJM*(1- :pZZSL/100),6), XLXSJGBMX_WSBJ = roundfix(XLXSJGBMX_HSBJ*(1- :pZZSL/100),{0}), XLXSJGBMX_WSBJM = roundfix(XLXSJGBMX_HSBJM*(1- :pZZSL/100),6) where XLXSJGBMX_JGBID = :pJGBID and XLXSJGBMX_XH > :pMaxXH ",iXSWS)); SQL.ParamByName("pZZSL").Value = CMISproConvert.StrToFloat(jgbxx.XLXSJGB_ZZSL, 0); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pMaxXH").Value = maxXH; dberp.ExecSQL(SQL); } } //插入行情V表 private void InsertVHQB(string sJGBID) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(" delete from V_XLXSCLHQ where V_XLXSCLHQ_TZRYID = :pTZRYID and V_XLXSCLHQ_JGBID = :pJGBID "); SQL.ParamByName("pTZRYID").Value = CurSession.RYID; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); int VnewCLHQID = CMISproDataBase.GetMaxXH("DBERP", "V_XLXSCLHQ", "V_XLXSCLHQ_ID", "") + 1; txtVCLHQID.Value = VnewCLHQID.ToString().Trim(); SQL.Clear(); SQL.Add(" insert into V_XLXSCLHQ(V_XLXSCLHQ_JGBID,V_XLXSCLHQ_BJCLID,V_XLXSCLHQ_WSJG,V_XLXSCLHQ_HSJG,V_XLXSCLHQ_WSJGF,V_XLXSCLHQ_HSJGF,V_XLXSCLHQ_BZ, "); SQL.Add(" V_XLXSCLHQ_JGYBJCLID1,V_XLXSCLHQ_HSJG1,V_XLXSCLHQ_WSJG1,V_XLXSCLHQ_JGBL1, "); SQL.Add(" V_XLXSCLHQ_ID,V_XLXSCLHQ_YXQS,V_XLXSCLHQ_TZRYID,V_XLXSCLHQ_TZRYGH,V_XLXSCLHQ_TZRYMC,V_XLXSCLHQ_WHR,V_XLXSCLHQ_WHRID,V_XLXSCLHQ_WHSJ)"); SQL.Add(" select XLXSCLHQ_JGBID,XLXSCLHQ_BJCLID,XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF,XLXSCLHQ_BZ, "); SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_HSJG1,XLXSCLHQ_WSJG1,XLXSCLHQ_JGBL1, "); SQL.Add(" :V_XLXSCLHQ_ID,XLXSCLHQ_YXQS,:V_XLXSCLHQ_TZRYID,:V_XLXSCLHQ_TZRYGH,:V_XLXSCLHQ_TZRYMC,XLXSCLHQ_WHR,XLXSCLHQ_WHRID,XLXSCLHQ_WHSJ "); SQL.Add(" from XLXSCLHQ where XLXSCLHQ_JGBID = :pJGBID "); SQL.ParamByName("V_XLXSCLHQ_ID").Value = txtVCLHQID.Value; SQL.ParamByName("V_XLXSCLHQ_TZRYID").Value = CurSession.RYID; SQL.ParamByName("V_XLXSCLHQ_TZRYGH").Value = CurSession.UserId; SQL.ParamByName("V_XLXSCLHQ_TZRYMC").Value = CurSession.UserName; SQL.ParamByName("pJGBID").Value = sJGBID; dberp.ExecSQL(SQL); } //插入行情表 private void InsertHQB(TDatabase dberp, string sJGBID, string sTZRYID, string sCLVID) { TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(" insert into XLXSCLHQ(XLXSCLHQ_JGBID,XLXSCLHQ_BJCLID,XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF,XLXSCLHQ_BZ, "); SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_HSJG1,XLXSCLHQ_WSJG1,XLXSCLHQ_JGBL1, "); SQL.Add(" XLXSCLHQ_YXQS,XLXSCLHQ_YXQZ,XLXSCLHQ_WHR,XLXSCLHQ_WHRID,XLXSCLHQ_WHSJ)"); SQL.Add(" select V_XLXSCLHQ_JGBID,V_XLXSCLHQ_BJCLID,V_XLXSCLHQ_WSJG,V_XLXSCLHQ_HSJG,V_XLXSCLHQ_WSJGF,V_XLXSCLHQ_HSJGF,V_XLXSCLHQ_BZ, "); SQL.Add(" V_XLXSCLHQ_JGYBJCLID1,V_XLXSCLHQ_HSJG1,V_XLXSCLHQ_WSJG1,V_XLXSCLHQ_JGBL1, "); SQL.Add(" V_XLXSCLHQ_YXQS,convert(datetime,'1900-01-01 00:00:00') as V_XLXSCLHQ_YXQZ,V_XLXSCLHQ_WHR,V_XLXSCLHQ_WHRID,V_XLXSCLHQ_WHSJ "); SQL.Add(" from V_XLXSCLHQ where V_XLXSCLHQ_JGBID = :pJGBID and V_XLXSCLHQ_TZRYID = :pTZRYID and V_XLXSCLHQ_ID = :pCLVID "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pTZRYID").Value = sTZRYID; SQL.ParamByName("pCLVID").Value = sCLVID; dberp.ExecSQL(SQL); SQL.Clear(); SQL.Add(" delete from V_XLXSCLHQ where V_XLXSCLHQ_TZRYID = :pTZRYID and V_XLXSCLHQ_JGBID = :pJGBID and V_XLXSCLHQ_ID = :pCLVID "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pTZRYID").Value = sTZRYID; SQL.ParamByName("pCLVID").Value = sCLVID; dberp.ExecSQL(SQL); } private string GetVID(string sJGBID,string sTZRYID) { string sVID = ""; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(" select V_XLXSCLHQ_ID from V_XLXSCLHQ where V_XLXSCLHQ_TZRYID = :pTZRYID and V_XLXSCLHQ_JGBID = :pJGBID "); SQL.ParamByName("pTZRYID").Value = sTZRYID; SQL.ParamByName("pJGBID").Value = sJGBID; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { sVID = ds.Tables[0].Rows[0]["V_XLXSCLHQ_ID"].ToString().Trim(); } return sVID; } #endregion #region 按钮事件 //更新自材料行情 protected void btnUpdCLHQ_Click(object sender, EventArgs e) { string sJGBID = PageParam.GetRTrimString("XLXSJGBMX_JGBID"); if (sJGBID.Equals("")) return; string sVID = txtVCLHQID.Value; string sRYID = CurSession.RYID; 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(); } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select 1 from XLXSJGB where XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=:pJGBID "); SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGB = dberp.OpenDataSet(SQL); if (dsJGB.Tables[0].Rows.Count > 0) { //价格表行情分段材料、以及以价格表行情分段材料为加工原料的材料行情记录不删 SQL.Clear(); SQL.Add("delete from V_XLXSCLHQ where V_XLXSCLHQ_JGBID = :pJGBID and V_XLXSCLHQ_ID = :pVID and V_XLXSCLHQ_TZRYID = :pRYID "); SQL.Add(" and not exists (select 1 from XLXSJGBCLHQFD where XLXSJGBCLHQFD_BJCLID = V_XLXSCLHQ_BJCLID and XLXSJGBCLHQFD_MXBH =:pMXBH and XLXSJGBCLHQFD_JGBID = :pJGBID) "); SQL.Add(" and not exists "); SQL.Add("( "); SQL.Add("select 1 from XLXSBJCL d where d.XLXSBJCL_BJCLID=V_XLXSCLHQ_BJCLID and d.XLXSBJCL_JGYBJCLID "); SQL.Add(" in ( select XLXSJGBCLHQFD_BJCLID from XLXSJGBCLHQFD where XLXSJGBCLHQFD_MXBH=:pMXBH and XLXSJGBCLHQFD_JGBID=:pJGBID ) "); SQL.Add(") "); SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pVID").Value = sVID; SQL.ParamByName("pRYID").Value = sRYID; dberp.ExecSQL(SQL); //取材料行情插入价格表的材料行情 SQL.Clear(); SQL.Add("insert into V_XLXSCLHQ(V_XLXSCLHQ_JGBID,V_XLXSCLHQ_BJCLID,V_XLXSCLHQ_HSJG,V_XLXSCLHQ_WSJG,V_XLXSCLHQ_HSJGF,V_XLXSCLHQ_WSJGF, "); SQL.Add("V_XLXSCLHQ_JGYBJCLID1,V_XLXSCLHQ_HSJG1,V_XLXSCLHQ_WSJG1,V_XLXSCLHQ_JGBL1, "); SQL.Add("V_XLXSCLHQ_YXQS,V_XLXSCLHQ_YXQZ,V_XLXSCLHQ_BZ,V_XLXSCLHQ_ID,V_XLXSCLHQ_TZRYID,V_XLXSCLHQ_TZRYGH,V_XLXSCLHQ_TZRYMC,V_XLXSCLHQ_WHRID,V_XLXSCLHQ_WHR,V_XLXSCLHQ_WHSJ) "); SQL.Add("select :pJGBID as JGBID,XLXSBJCL_BJCLID as BJCLID,isnull(HSJG,0.0) as HSJG,isnull(CLJG,0.0) as CLJG,isnull(HSJGF,0.0) as HSJGF,isnull(WSJGF,0.0) as WSJGF, "); SQL.Add(" isnull(JGYBJCLID1,' ') as JGYBJCLID1,isnull(HSJG1,0.0) as HSJG1,isnull(WSJG1,0.0) as WSJG1,isnull(JGBL1,0.0) as JGBL1, "); SQL.Add("convert(datetime,'1900-01-01 00:00:00') as YXQS,convert(datetime,'1900-01-01 00:00:00') as YXQZ,' ' as BZ,:V_XLXSCLHQ_ID,:V_XLXSCLHQ_TZRYID,:V_XLXSCLHQ_TZRYGH,:V_XLXSCLHQ_TZRYMC,:pWHRID as WHRID,:pWHR as WHR,:pWHSJ as WHSJ "); SQL.Add("from XLXSBJCL left join "); SQL.Add("("); SQL.Add("select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_HSJG as HSJG,XLXSCLHQ_WSJG as CLJG, XLXSCLHQ_HSJGF as HSJGF, XLXSCLHQ_WSJGF as WSJGF, "); SQL.Add("XLXSCLHQ_JGYBJCLID1 as JGYBJCLID1,XLXSCLHQ_HSJG1 as HSJG1,XLXSCLHQ_WSJG1 as WSJG1,XLXSCLHQ_JGBL1 as JGBL1"); SQL.Add("from XLXSCLHQ, "); SQL.Add("("); SQL.Add("select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS) as maxYXQS "); SQL.Add("from XLXSCLHQ "); SQL.Add("where XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add("and XLXSCLHQ_YXQS<=:pRQ "); SQL.Add("and (XLXSCLHQ_YXQZ is null or XLXSCLHQ_YXQZ>=:pRQ) "); SQL.Add("group by XLXSCLHQ_BJCLID "); SQL.Add(") a "); SQL.Add("where XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add("and XLXSCLHQ_BJCLID=BJCLID "); SQL.Add("and XLXSCLHQ_YXQS=maxYXQS "); SQL.Add(") b on BJCLID=XLXSBJCL_BJCLID "); SQL.Add("where isnull(XLXSBJCL_BJCLMC,' ')<>' ' "); //排除价格表行情分段材料---(报价材料行情分段标志) SQL.Add(" and not exists (select 1 from XLXSJGBCLHQFD where XLXSJGBCLHQFD_BJCLID = XLXSBJCL.XLXSBJCL_BJCLID and XLXSJGBCLHQFD_MXBH =:pMXBH and XLXSJGBCLHQFD_JGBID = :pJGBID) "); SQL.Add(" and not exists "); SQL.Add("( "); SQL.Add("select 1 from XLXSBJCL d where d.XLXSBJCL_BJCLID=XLXSBJCL.XLXSBJCL_BJCLID and d.XLXSBJCL_JGYBJCLID "); SQL.Add(" in ( select XLXSJGBCLHQFD_BJCLID from XLXSJGBCLHQFD where XLXSJGBCLHQFD_MXBH=:pMXBH and XLXSJGBCLHQFD_JGBID=:pJGBID ) "); SQL.Add(") "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("V_XLXSCLHQ_ID").Value = sVID; SQL.ParamByName("V_XLXSCLHQ_TZRYID").Value = CurSession.RYID; SQL.ParamByName("V_XLXSCLHQ_TZRYGH").Value = CurSession.UserId; SQL.ParamByName("V_XLXSCLHQ_TZRYMC").Value = CurSession.UserName; SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pWHRID").Value = CurSession.UserId; SQL.ParamByName("pWHR").Value = CurSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); dberp.ExecSQL(SQL); //更新以价格表行情分段材料为加工原料的材料加工费,并重算材料行情 /* merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……) */ SQL.Clear(); SQL.Add(" merge into V_XLXSCLHQ tar "); SQL.Add(" using ( "); SQL.Add(" select XLXSBJCL_BJCLID as BJCLID,"); SQL.Add(" isnull(HSJG1,0.0)*isnull(JGBL1,0.0)+isnull(HSJGF,0.0) as HSJG,isnull(WSJG1,0.0)*isnull(JGBL1,0.0)+isnull(WSJGF,0.0) as CLJG,"); SQL.Add(" isnull(HSJGF,0.0) as HSJGF,isnull(WSJGF,0.0) as WSJGF,"); SQL.Add(" isnull(HSJG1,0.0) as HSJG1,isnull(WSJG1,0.0) as WSJG1,isnull(JGBL1,0.0) as JGBL1"); SQL.Add(" from XLXSBJCL"); //取最新加工费 SQL.Add(" left join "); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_HSJGF as HSJGF, XLXSCLHQ_WSJGF as WSJGF, "); SQL.Add(" XLXSCLHQ_HSJG1 as HSJG1,XLXSCLHQ_WSJG1 as WSJG1,XLXSCLHQ_JGBL1 as JGBL1"); SQL.Add(" from XLXSCLHQ, "); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS) as maxYXQS "); SQL.Add(" from XLXSCLHQ "); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add(" and XLXSCLHQ_YXQS<=:pRQ "); SQL.Add(" and (XLXSCLHQ_YXQZ is null or XLXSCLHQ_YXQZ>=:pRQ) "); SQL.Add(" group by XLXSCLHQ_BJCLID "); SQL.Add(" ) a "); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID "); SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS "); SQL.Add(" ) b on BJCLID=XLXSBJCL_BJCLID "); SQL.Add(" where isnull(XLXSBJCL_BJCLMC,' ')<>' ' "); SQL.Add(" and XLXSBJCL_JGYBJCLID in (select XLXSJGBCLHQFD_BJCLID from XLXSJGBCLHQFD where XLXSJGBCLHQFD_MXBH=:pMXBH and XLXSJGBCLHQFD_JGBID=:pJGBID) "); SQL.Add(" ) sor "); SQL.Add(" on(V_XLXSCLHQ_JGBID=:pJGBID and V_XLXSCLHQ_ID = :pVID and V_XLXSCLHQ_TZRYID = :pRYID and V_XLXSCLHQ_BJCLID=sor.BJCLID ) "); SQL.Add(" when matched then update set "); SQL.Add(" V_XLXSCLHQ_HSJG=HSJG,V_XLXSCLHQ_WSJG=CLJG,V_XLXSCLHQ_HSJGF=HSJGF,V_XLXSCLHQ_WSJGF=WSJGF,"); SQL.Add(" V_XLXSCLHQ_HSJG1=HSJG1,V_XLXSCLHQ_WSJG1=WSJG1,V_XLXSCLHQ_JGBL1=JGBL1,"); SQL.Add(" V_XLXSCLHQ_WHRID=:pWHRID,V_XLXSCLHQ_WHR=:pWHR,V_XLXSCLHQ_WHSJ=:pWHSJ "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pVID").Value = sVID; SQL.ParamByName("pRYID").Value = sRYID; SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pWHRID").Value = CurSession.UserId; SQL.ParamByName("pWHR").Value = CurSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); dberp.ExecSQL(SQL); if (XLBJDUtils.HasJGBWLHQ(sJGBID))//判断价格表是否记录物料行情 { InsertXLXSJGBWLHQbyJGBCLHQ(dberp, SQL, sJGBID, DateTime.Now.ToShortDateString(), CurSession.UserName, CurSession.UserId, true); } //刷新 Master_OnQuery(); GridDataBind(); FormAreaUpdate(); ShowMessage("更新完成!"); } } public static void InsertXLXSJGBWLHQbyJGBCLHQ(TDatabase dberp, TSQL SQL, string sJGBID, string sRQ, string sWHR, string sWHRID, bool bCanUpdate) { SQL.Clear(); SQL.Add("merge into XLXSWLHQ "); SQL.Add("using "); SQL.Add("( "); SQL.Add("select :pJGBID as JGBID,XLXSBJCLWL_WLID as WLID, "); SQL.Add("case when XLXSCLHQ_BJCLID is not null and isnull(XLXSBJCL_JGYBJCLID,' ') <> ' ' then isnull(XLXSCLHQ_WSJG*XLXSWLHQ_JGBL1,0)+isnull(XLXSWLHQ_WSJGF,0) else isnull(XLXSWLHQ_WSJG,0) end as WSJG, "); SQL.Add("case when XLXSCLHQ_BJCLID is not null and isnull(XLXSBJCL_JGYBJCLID,' ') <> ' ' then isnull(XLXSCLHQ_HSJG*XLXSWLHQ_JGBL1,0)+isnull(XLXSWLHQ_HSJGF,0) else isnull(XLXSWLHQ_HSJG,0) end as HSJG, "); SQL.Add("isnull(XLXSWLHQ_WSJGF,0) as WSJGF,isnull(XLXSWLHQ_HSJGF,0) as HSJGF, "); SQL.Add("isnull(XLXSWLHQ_WSJG1,0.0) as WSJG1,isnull(XLXSWLHQ_HSJG1,0.0) as HSJG1,isnull(XLXSWLHQ_JGBL1,0.0) as JGBL1,isnull(XLXSWLHQ_JGYBJCLID1,' ') as JGYBJCLID1"); SQL.Add("from XLXSBJCLWL "); SQL.Add("left join "); SQL.Add(" (select XLXSWLHQ_WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG,XLXSWLHQ_WSJGF,XLXSWLHQ_HSJGF,"); SQL.Add(" XLXSWLHQ_JGYBJCLID1,XLXSWLHQ_WSJG1,XLXSWLHQ_HSJG1,XLXSWLHQ_JGBL1"); SQL.Add(" from XLXSWLHQ,"); SQL.Add(" ("); SQL.Add(" select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS) as maxYXQS"); SQL.Add(" from XLXSWLHQ"); SQL.Add(" where XLXSWLHQ_JGBID=' '"); SQL.Add(" and XLXSWLHQ_YXQS<=:pRQ and(XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"); SQL.Add(" group by XLXSWLHQ_WLID"); SQL.Add(" ) a "); SQL.Add(" where XLXSWLHQ_JGBID=' ' "); SQL.Add(" and XLXSWLHQ_WLID=WLID "); SQL.Add(" and XLXSWLHQ_YXQS=maxYXQS "); SQL.Add(" ) c on XLXSWLHQ_WLID=XLXSBJCLWL_WLID "); SQL.Add("left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID "); SQL.Add("left join XLXSCLHQ on XLXSCLHQ_JGBID=:pJGBID and XLXSCLHQ_BJCLID=XLXSBJCL_JGYBJCLID "); SQL.Add("where XLXSBJCL_BJHQ = '2' ");//and isnull(XLXSBJCL_JGYBJCLID,' ') <> ' ' 只有存在加工原料的物料才记!--存不存在加工原料的物料行情都记 SQL.Add(") B on (XLXSWLHQ_JGBID=B.JGBID and XLXSWLHQ_WLID=B.WLID) "); if (bCanUpdate) { SQL.Add("when matched then "); SQL.Add("update set XLXSWLHQ_WSJG=B.WSJG,XLXSWLHQ_HSJG=B.HSJG,XLXSWLHQ_WSJGF=B.WSJGF,XLXSWLHQ_HSJGF=B.HSJGF, "); SQL.Add(" XLXSWLHQ_WSJG1=B.WSJG1,XLXSWLHQ_HSJG1=B.HSJG1,XLXSWLHQ_JGBL1=B.JGBL1,"); SQL.Add(" XLXSWLHQ_WHR=:pWHR,XLXSWLHQ_WHRID=:pWHRID,XLXSWLHQ_WHSJ=:pWHSJ "); } SQL.Add("when not matched then "); SQL.Add("insert (XLXSWLHQ_JGBID,XLXSWLHQ_WLID,XLXSWLHQ_YXQS,XLXSWLHQ_YXQZ,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG,XLXSWLHQ_WSJGF,XLXSWLHQ_HSJGF,"); SQL.Add(" XLXSWLHQ_JGYBJCLID1,XLXSWLHQ_HSJG1,XLXSWLHQ_WSJG1,XLXSWLHQ_JGBL1,"); SQL.Add(" XLXSWLHQ_WHR,XLXSWLHQ_WHRID,XLXSWLHQ_WHSJ) "); SQL.Add("values (B.JGBID,B.WLID,convert(datetime,'1900-01-01 00:00:00'),convert(datetime,'1900-01-01 00:00:00'),B.WSJG,B.HSJG,B.WSJGF,B.HSJGF,"); SQL.Add(" B.JGYBJCLID1,B.HSJG1,B.WSJG1,B.JGBL1,"); SQL.Add(" :pWHR,:pWHRID,:pWHSJ) "); SQL.ParamByName("pJGBID").Value = sJGBID; SQL.ParamByName("pRQ").Value = sRQ; SQL.ParamByName("pWHR").Value = sWHR; SQL.ParamByName("pWHRID").Value = sWHRID; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); } protected void btnSZHQ_Click(object sender, EventArgs e) { if (grdSHD.SelectedIndex < 0) { ShowMessage("请选择需要处理的记录!"); return; } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); string sBJCLID = grdSHD.GetValueByFieldName("XLXSCLHQ_BJCLID", grdSHD.NewRows[grdSHD.SelectedIndex]).Trim(); string sCLJG = grdSHD.GetValueByFieldName("XLXSCLHQ_WSJG", grdSHD.NewRows[grdSHD.SelectedIndex]).Trim(); string sHSJG = grdSHD.GetValueByFieldName("XLXSCLHQ_HSJG", grdSHD.NewRows[grdSHD.SelectedIndex]).Trim(); string sZZSL = grdSHD.GetValueByFieldName("XLXSBJCL_ZZSL", grdSHD.NewRows[grdSHD.SelectedIndex]).Trim(); string sWSJGF = grdSHD.GetValueByFieldName("XLXSCLHQ_WSJGF", grdSHD.NewRows[grdSHD.SelectedIndex]).Trim(); string sHSJGF = grdSHD.GetValueByFieldName("XLXSCLHQ_HSJGF", grdSHD.NewRows[grdSHD.SelectedIndex]).Trim(); //加工料对应加工原料 无税/含税价格 string sJGYBJCLID1 = grdSHD.GetValueByFieldName("XLXSCLHQ_JGYBJCLID1", grdSHD.NewRows[grdSHD.SelectedIndex]).Trim(); string sJGBL1 = ""; string sJCCLJG = ""; string sJCHSJG = ""; string sSQL = string.Format(" select 1 from XLXSBJCL " + " where XLXSBJCL_JGYBJCLID = '{0}' or (XLXSBJCL_BJCLID ='{0}' and isnull(XLXSBJCL_JGYBJCLID,' ') <>' ' ) ", sBJCLID); if (!CMISproDataBase.ExistsRecord("DBERP", sSQL)) { ShowMessage("当前报价材料非加工料或加工原料!"); return; } else { if (!sJGYBJCLID1.Trim().Equals("")) { sJGBL1 = grdSHD.GetValueByFieldName("XLXSCLHQ_JGBL1", grdSHD.NewRows[grdSHD.SelectedIndex]).Trim(); foreach (GridViewRow row in grdSHD.NewRows) { if (grdSHD.GetValueByFieldName("XLXSCLHQ_BJCLID", row).ToString().Trim().Equals(sJGYBJCLID1.Trim())) { sJCCLJG = grdSHD.GetValueByFieldName("XLXSCLHQ_WSJG", row).ToString().Trim(); sJCHSJG = grdSHD.GetValueByFieldName("XLXSCLHQ_HSJG", row).ToString().Trim(); } } } TPageParams pageParams = new TPageParams(); pageParams.UrlPath = "XLJGB_JGFLDInfo.aspx"; pageParams.Title = "设置加工料/加工原料行情"; pageParams.AddString("BJCLID", sBJCLID); pageParams.AddString("CLJG", sCLJG); pageParams.AddString("HSJG", sHSJG); pageParams.AddString("ZZSL", sZZSL); pageParams.AddString("WSJGF", sWSJGF); pageParams.AddString("HSJGF", sHSJGF); pageParams.AddString("JCCLJG", sJCCLJG); pageParams.AddString("JCHSJG", sJCHSJG); pageParams.AddString("JGYBJCLID1", sJGYBJCLID1); pageParams.AddString("JGBL1", sJGBL1); pageParams.AddString("MXBH", PageParam.GetRTrimString("MXBH")); pageParams.AddString("BJLY", PageParam.GetRTrimString("BJLY")); pageParams.AddString("XLXSJGBMX_JGBID", PageParam.GetRTrimString("XLXSJGBMX_JGBID")); pageParams.AddString("CLVID", txtVCLHQID.Value); pageParams.AddString("CallBackCtrlID", btnCallBack.ClientID.Trim()); OpenDialog(pageParams); } } protected void btnCallBack_Click(object sender, EventArgs e) { int index = grdSHD.SelectedIndex; Master_OnQuery(); GridDataBind(); BillAreaUpdate(); FormAreaUpdate(); grdSHD.SelectedIndex = index; } #endregion } }