6659 lines
433 KiB
Plaintext
6659 lines
433 KiB
Plaintext
using System;
|
||
using System.Data;
|
||
using System.Configuration;
|
||
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_MISPROAS.Web.AjaxServices;
|
||
using GThinking.N_MISPRO.Data;
|
||
using System.Collections.Generic;
|
||
using System.Collections;
|
||
using GThinking.N_MISPRO.Utility;
|
||
using System.IO;
|
||
using System.Text;
|
||
using GThinking.N_MISPRO;
|
||
using GThinking.N_MISPRO.TableCache;
|
||
|
||
namespace GThinking.U20261363_N_XLXSBJ
|
||
{
|
||
public enum CalcAction
|
||
{
|
||
Insert, //新增明细
|
||
ReCalc, //重算明细,比如:报价单行情调整
|
||
HSBZChange, //表价含税切换
|
||
Copy //复制明细
|
||
}
|
||
|
||
public class XLBJDCalcUtils
|
||
{
|
||
/// <summary>
|
||
/// 插入报价单明细后调用触发计算,注:XLXSBJDMX_JLDW必须提前赋好值
|
||
/// </summary>
|
||
/// <param name="dberp"></param>
|
||
/// <param name="SQL"></param>
|
||
/// <param name="sBJDID"></param>
|
||
/// <param name="startBJDXH"></param>
|
||
/// <param name="sBJU002"></param>
|
||
/// <param name="sBJU003"></param>
|
||
/// <param name="sWHR"></param>
|
||
/// <param name="sWHRID"></param>
|
||
/// <param name="sErrMsg"></param>
|
||
public static void CalcBJDMXAfterIns(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, string sBJU002, string sBJU003, string sBJU018, string sWHRID, string sWHR, string sJMBGSYZID, ref string sErrMsg)
|
||
{
|
||
try
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSBJD_JGBID,XLXSJGB_MXBH,XLXSJGB_JGBIDS,XLXSJGB_JGCIDS,XLXSJGB_BJLY,XLXSJGB_TJYS,XLXSJGB_JSBLFS, ");
|
||
SQL.Add(" XLXSBJD_BJFLID,XLXSBJFL_BJDHQLY,XLXSBJFL_TZCLHQ,XLXSBJFL_JGBTJYSS,XLXSBJFL_BJJCLLX,XLXSBJFL_LJJCLLX,XLXSBJFL_CPBJMRXSWS,XLXSBJFL_ZDXJJCLLX,XLXSBJFL_JYF,XLXSBJFL_YFWLID,XLXSBJFL_BJHYF,");
|
||
SQL.Add(" XLXSBJD_JZBJHS,XLXSBJD_BJRQ,XLXSBJFL_TZYLBL ");
|
||
SQL.Add(" from XLXSBJD ");
|
||
SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID=XLXSBJD_JGBID ");
|
||
SQL.Add(" left join XLXSBJFL on XLXSBJFL_BJFLID=XLXSBJD_BJFLID");
|
||
SQL.Add(" where XLXSBJD_BJDID=:pBJDID");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet dsBJD = dberp.OpenDataSet(SQL);
|
||
if (dsBJD.Tables[0].Rows.Count == 0)
|
||
{
|
||
throw new Exception("报价单记录不存在!");
|
||
}
|
||
|
||
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
|
||
if (iXSWS < 0)
|
||
iXSWS = 0;
|
||
else if (iXSWS > 8)
|
||
iXSWS = 8;
|
||
|
||
bool bHSBZ = dsBJD.Tables[0].Rows[0]["XLXSBJD_JZBJHS"].ToString().Trim().Equals("Y");
|
||
string sBJRQ = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJRQ"].ToString().Trim();
|
||
|
||
string sJGBID = dsBJD.Tables[0].Rows[0]["XLXSBJD_JGBID"].ToString().Trim();
|
||
string sMXBH = dsBJD.Tables[0].Rows[0]["XLXSJGB_MXBH"].ToString().Trim();
|
||
string sJGBIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGBIDS"].ToString().Trim();
|
||
string sJGCIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim();
|
||
string sBJLY = dsBJD.Tables[0].Rows[0]["XLXSJGB_BJLY"].ToString().Trim();
|
||
string sTJYS = dsBJD.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim();
|
||
string sJSBLFS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JSBLFS"].ToString().Trim();
|
||
|
||
string sBJFLID = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJFLID"].ToString().Trim();
|
||
string sBJDHQLY = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim();//1|价格表行情、2|报价日行情
|
||
string sTZCLHQ = dsBJD.Tables[0].Rows[0]["XLXSBJFL_TZCLHQ"].ToString().Trim();//允许调整材料行情
|
||
string sJGBTJYSS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JGBTJYSS"].ToString().Trim();//价格表调价因素
|
||
string sJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJJCLLX"].ToString().Trim();
|
||
string sLJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_LJJCLLX"].ToString().Trim();
|
||
string sCPBJMRXSWS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_CPBJMRXSWS"].ToString().Trim();
|
||
string sZDXJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJJCLLX"].ToString().Trim();
|
||
string sJYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JYF"].ToString().Trim();
|
||
string sYFWLID = dsBJD.Tables[0].Rows[0]["XLXSBJFL_YFWLID"].ToString().Trim();
|
||
string sBJHYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJHYF"].ToString().Trim();
|
||
string sTZCLYLBL = dsBJD.Tables[0].Rows[0]["XLXSBJFL_TZYLBL"].ToString().Trim();
|
||
|
||
|
||
CalcBJDHQCLCB_CLCB_JGBJJ_JGBBJ(dberp, SQL, sBJDID, startBJDXH, bHSBZ, sBJRQ,
|
||
sJGBID, sMXBH, sJGBIDS, sJGCIDS, sBJLY, sTJYS, sJSBLFS,
|
||
sBJFLID, sBJDHQLY, sTZCLHQ, sJGBTJYSS,
|
||
sBJU002, sBJU003, sBJU018, sWHRID, sWHR, CalcAction.Insert, ref sErrMsg);
|
||
|
||
if (!sErrMsg.Equals(""))
|
||
{
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
|
||
Dictionary<string, string> dicTJYZList = new Dictionary<string, string>();
|
||
XLBJDUtils.GetDicTJYZList(dberp, SQL, sBJFLID, sJMBGSYZID,ref dicTJYZList);
|
||
XLBJDUtils.AddXLXSBJDYZZ0(dberp, sBJDID, sBJFLID, sBJU003, dicTJYZList, true, "", startBJDXH - 1, ref sErrMsg);
|
||
|
||
if (SystemInfoUtils.GetSystem().Id.Trim().Equals("0574000503") || SystemInfoUtils.GetSystem().Id.Trim().Equals("0574000504"))//0574000503|宁波东方正式系统,0574000504|宁波东方测试系统
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(" update XLXSBJDYZZ0 set XLXSBJDYZZ0_YZZ02 = XLXSBJDYZZ0_YZZ01 - XLXSBJDYZZ0_YZZ03 where XLXSBJDYZZ0_BJDID = :pBJDID and XLXSBJDYZZ0_XH > :pBJDXH ");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pBJDXH").Value = startBJDXH - 1;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
if (!sErrMsg.Equals(""))
|
||
{
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
|
||
//同步报价单明细记录插入XLXSBJDCLCB、XLXSBJDJJYZ
|
||
XLBJDInfo.InsertCLCBandJJYZ(dberp, SQL, TControlState.ctsEdit, sBJDID, sJGBID, sBJRQ, sWHRID, sWHR, sBJU003, bHSBZ);
|
||
|
||
if (dberp.DriverName == "ORACLE")
|
||
{
|
||
if (dberp.InTransaction)
|
||
{
|
||
dberp.CommitTrans();
|
||
|
||
dberp.BeginTrans();
|
||
}
|
||
}
|
||
|
||
XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, iXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, "", startBJDXH);
|
||
//同步补充插入XLXSCLQD、XLXSJGBMX中没有的记录
|
||
XLBJDInfo.InsertCLQDorJGBMX(dberp, SQL, sBJDID, sJGBID, sJGBIDS, CMISproSessionManager.GetCurrentSession());
|
||
|
||
//更新产品目录
|
||
if (XLBJDUtils.ExistXSCPML())
|
||
{
|
||
XLBJDUtils.UpdateBJDMX_CPMLMC(sBJDID, "", startBJDXH - 1, true, ref sErrMsg);
|
||
if (!sErrMsg.Equals(""))
|
||
{
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
}
|
||
|
||
if (dberp.DriverName == "ORACLE")
|
||
{
|
||
if (dberp.InTransaction)
|
||
{
|
||
dberp.CommitTrans();
|
||
|
||
dberp.BeginTrans();
|
||
}
|
||
}
|
||
|
||
XLBJDUtils.UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", startBJDXH);
|
||
XLBJDUtils.UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", startBJDXH);
|
||
XLBJDCalcUtils.Check_UpdBJSLYZZ(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJU003);
|
||
XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, sJCLLX, sLJJCLLX, sZDXJJCLLX, sJYF, "", "", sYFWLID, sBJHYF);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
sErrMsg = ex.Message;
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 插入报价单明细后调用触发计算,注:XLXSBJDMX_JLDW必须提前赋好值
|
||
/// </summary>
|
||
/// <param name="dberp"></param>
|
||
/// <param name="SQL"></param>
|
||
/// <param name="sBJDID"></param>
|
||
/// <param name="startBJDXH"></param>
|
||
/// <param name="sBJU002"></param>
|
||
/// <param name="sBJU003"></param>
|
||
/// <param name="sWHR"></param>
|
||
/// <param name="sWHRID"></param>
|
||
/// <param name="sErrMsg"></param>
|
||
public static void CalcBJDMXAfterIns(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, string sBJU002, string sBJU003,string sBJU018, string sWHRID, string sWHR, ref string sErrMsg)
|
||
{
|
||
CalcBJDMXAfterIns(dberp, SQL, sBJDID, startBJDXH, sBJU002, sBJU003, sBJU018, sWHRID, sWHR, "", ref sErrMsg);
|
||
}
|
||
|
||
//表价含税切换后进行批量重算
|
||
public static void CalcAfterHSBZChange(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, string sBJU002, string sBJU003, string sBJU018, string sWHRID, string sWHR, ref string sErrMsg)
|
||
{
|
||
CalcAfterBJDHQChange(dberp, SQL, sBJDID, startBJDXH, sBJU002, sBJU003, sBJU018, sWHRID, sWHR, CalcAction.HSBZChange, ref sErrMsg);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 报价单行情调整后进行批量重算
|
||
/// </summary>
|
||
/// <param name="dberp"></param>
|
||
/// <param name="SQL"></param>
|
||
/// <param name="sBJDID"></param>
|
||
/// <param name="startBJDXH"></param>
|
||
/// <param name="sBJU002"></param>
|
||
/// <param name="sBJU003"></param>
|
||
/// <param name="sWHRID"></param>
|
||
/// <param name="sWHR"></param>
|
||
/// <param name="sErrMsg"></param>
|
||
public static void CalcAfterBJDHQChange(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, string sBJU002, string sBJU003, string sBJU018, string sWHRID, string sWHR, ref string sErrMsg)
|
||
{
|
||
CalcAfterBJDHQChange(dberp, SQL, sBJDID, startBJDXH, sBJU002, sBJU003, sBJU018, sWHRID, sWHR, CalcAction.ReCalc, "", ref sErrMsg);
|
||
}
|
||
public static void CalcAfterBJDHQChange(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, string sBJU002, string sBJU003, string sBJU018, string sWHRID, string sWHR, CalcAction Act, ref string sErrMsg)
|
||
{
|
||
CalcAfterBJDHQChange(dberp, SQL, sBJDID, startBJDXH, sBJU002, sBJU003, sBJU018, sWHRID, sWHR, Act, "", ref sErrMsg);
|
||
}
|
||
public static void CalcAfterBJDHQChange(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, string sBJU002, string sBJU003, string sBJU018, string sWHRID, string sWHR, CalcAction Act, string sBLBJCP, ref string sErrMsg)
|
||
{
|
||
try
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSBJD_JGBID,XLXSJGB_MXBH,XLXSJGB_JGBIDS,XLXSJGB_JGCIDS,XLXSJGB_BJLY,XLXSJGB_TJYS,XLXSJGB_JSBLFS, ");
|
||
SQL.Add(" XLXSBJD_BJFLID,XLXSBJFL_BJDHQLY,XLXSBJFL_TZCLHQ,XLXSBJFL_JGBTJYSS,XLXSBJFL_BJJCLLX,XLXSBJFL_LJJCLLX,XLXSBJFL_CPBJMRXSWS,");
|
||
SQL.Add(" XLXSBJFL_ZDXJJCLLX,XLXSBJFL_JYF,XLXSBJFL_YFWLID,XLXSBJFL_BJHYF,XLXSBJFL_ZDXJGS,XLXSBJFL_JSJGS,XLXSBJFL_TZYLBL,");
|
||
SQL.Add(" XLXSBJD_JZBJHS,XLXSBJD_BJRQ");
|
||
SQL.Add(" from XLXSBJD ");
|
||
SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID=XLXSBJD_JGBID ");
|
||
SQL.Add(" left join XLXSBJFL on XLXSBJFL_BJFLID=XLXSBJD_BJFLID");
|
||
SQL.Add(" where XLXSBJD_BJDID=:pBJDID");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet dsBJD = dberp.OpenDataSet(SQL);
|
||
if (dsBJD.Tables[0].Rows.Count == 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
|
||
if (iXSWS < 0)
|
||
iXSWS = 0;
|
||
else if (iXSWS > 8)
|
||
iXSWS = 8;
|
||
|
||
bool bHSBZ = dsBJD.Tables[0].Rows[0]["XLXSBJD_JZBJHS"].ToString().Trim().Equals("Y");
|
||
string sBJRQ = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJRQ"].ToString().Trim();
|
||
|
||
string sJGBID = dsBJD.Tables[0].Rows[0]["XLXSBJD_JGBID"].ToString().Trim();
|
||
string sMXBH = dsBJD.Tables[0].Rows[0]["XLXSJGB_MXBH"].ToString().Trim();
|
||
string sJGBIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGBIDS"].ToString().Trim();
|
||
string sJGCIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim();
|
||
string sBJLY = dsBJD.Tables[0].Rows[0]["XLXSJGB_BJLY"].ToString().Trim();
|
||
string sTJYS = dsBJD.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim();
|
||
string sJSBLFS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JSBLFS"].ToString().Trim();
|
||
|
||
string sBJFLID = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJFLID"].ToString().Trim();
|
||
string sBJDHQLY = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim();//1|价格表行情、2|报价日行情
|
||
string sTZCLHQ = dsBJD.Tables[0].Rows[0]["XLXSBJFL_TZCLHQ"].ToString().Trim();//允许调整材料行情
|
||
string sJGBTJYSS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JGBTJYSS"].ToString().Trim();//价格表调价因素
|
||
string sJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJJCLLX"].ToString().Trim();
|
||
string sLJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_LJJCLLX"].ToString().Trim();
|
||
string sCPBJMRXSWS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_CPBJMRXSWS"].ToString().Trim();
|
||
string sZDXJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJJCLLX"].ToString().Trim();
|
||
string sJYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JYF"].ToString().Trim();
|
||
string sYFWLID = dsBJD.Tables[0].Rows[0]["XLXSBJFL_YFWLID"].ToString().Trim();
|
||
string sBJHYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJHYF"].ToString().Trim();
|
||
string sZDXJGS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJGS"].ToString().Trim();
|
||
string sJSJGS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JSJGS"].ToString().Trim();
|
||
string sTZCLYLBL = dsBJD.Tables[0].Rows[0]["XLXSBJFL_TZYLBL"].ToString().Trim();
|
||
|
||
|
||
CalcBJDHQCLCB_CLCB_JGBJJ_JGBBJ(dberp, SQL, sBJDID, startBJDXH, bHSBZ, sBJRQ,
|
||
sJGBID, sMXBH, sJGBIDS, sJGCIDS, sBJLY, sTJYS, sJSBLFS,
|
||
sBJFLID, sBJDHQLY, sTZCLHQ, sJGBTJYSS,
|
||
sBJU002, sBJU003, sBJU018, sWHRID, sWHR, "", Act, sBLBJCP, ref sErrMsg);
|
||
|
||
if (!sErrMsg.Equals(""))
|
||
{
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
|
||
//同步报价单明细记录插入XLXSBJDCLCB、XLXSBJDJJYZ
|
||
XLBJDInfo.InsertCLCBandJJYZ(dberp, SQL, TControlState.ctsEdit, sBJDID, sJGBID, sBJRQ, sWHRID, sWHR, sBJU003, bHSBZ);
|
||
|
||
XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, iXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, "", startBJDXH);
|
||
bool bZDXJTZ = false;
|
||
if (sZDXJGS.Contains("CLCB") || sZDXJGS.Contains("JGBJJ") || sZDXJGS.Contains("JGBBJ") || sZDXJGS.Contains("CPBJ"))
|
||
{
|
||
XLBJDUtils.UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", startBJDXH);
|
||
bZDXJTZ = true;
|
||
|
||
}
|
||
if (sJSJGS.Contains("CLCB") || sJSJGS.Contains("JGBJJ") || sJSJGS.Contains("JGBBJ") || sJSJGS.Contains("CPBJ") || bZDXJTZ)
|
||
{
|
||
XLBJDUtils.UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", startBJDXH);
|
||
|
||
}
|
||
|
||
XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, sJCLLX, sLJJCLLX, sZDXJJCLLX, sJYF, "", "", sYFWLID, sBJHYF);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
sErrMsg = ex.Message;
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
}
|
||
|
||
public static void CalcAfterBJDHQChange(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, string sBJU002, string sBJU003, string sBJU018, string sWHRID, string sWHR, CalcAction Act, ref string sErrMsg, string sLJRQ, bool bQLJRQJ)
|
||
{
|
||
try
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSBJD_JGBID,XLXSJGB_MXBH,XLXSJGB_JGBIDS,XLXSJGB_JGCIDS,XLXSJGB_BJLY,XLXSJGB_TJYS,XLXSJGB_JSBLFS, ");
|
||
SQL.Add(" XLXSBJD_BJFLID,XLXSBJFL_BJDHQLY,XLXSBJFL_TZCLHQ,XLXSBJFL_JGBTJYSS,XLXSBJFL_BJJCLLX,XLXSBJFL_LJJCLLX,XLXSBJFL_CPBJMRXSWS,");
|
||
SQL.Add(" XLXSBJFL_ZDXJJCLLX,XLXSBJFL_JYF,XLXSBJFL_YFWLID,XLXSBJFL_BJHYF,XLXSBJFL_ZDXJGS,XLXSBJFL_JSJGS,XLXSBJFL_TZYLBL,");
|
||
SQL.Add(" XLXSBJD_JZBJHS,XLXSBJD_BJRQ");
|
||
SQL.Add(" from XLXSBJD ");
|
||
SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID=XLXSBJD_JGBID ");
|
||
SQL.Add(" left join XLXSBJFL on XLXSBJFL_BJFLID=XLXSBJD_BJFLID");
|
||
SQL.Add(" where XLXSBJD_BJDID=:pBJDID");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet dsBJD = dberp.OpenDataSet(SQL);
|
||
if (dsBJD.Tables[0].Rows.Count == 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
|
||
if (iXSWS < 0)
|
||
iXSWS = 0;
|
||
else if (iXSWS > 8)
|
||
iXSWS = 8;
|
||
|
||
bool bHSBZ = dsBJD.Tables[0].Rows[0]["XLXSBJD_JZBJHS"].ToString().Trim().Equals("Y");
|
||
string sBJRQ = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJRQ"].ToString().Trim();
|
||
|
||
string sJGBID = dsBJD.Tables[0].Rows[0]["XLXSBJD_JGBID"].ToString().Trim();
|
||
string sMXBH = dsBJD.Tables[0].Rows[0]["XLXSJGB_MXBH"].ToString().Trim();
|
||
string sJGBIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGBIDS"].ToString().Trim();
|
||
string sJGCIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim();
|
||
string sBJLY = dsBJD.Tables[0].Rows[0]["XLXSJGB_BJLY"].ToString().Trim();
|
||
string sTJYS = dsBJD.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim();
|
||
string sJSBLFS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JSBLFS"].ToString().Trim();
|
||
|
||
string sBJFLID = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJFLID"].ToString().Trim();
|
||
string sBJDHQLY = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim();//1|价格表行情、2|报价日行情
|
||
string sTZCLHQ = dsBJD.Tables[0].Rows[0]["XLXSBJFL_TZCLHQ"].ToString().Trim();//允许调整材料行情
|
||
string sJGBTJYSS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JGBTJYSS"].ToString().Trim();//价格表调价因素
|
||
string sJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJJCLLX"].ToString().Trim();
|
||
string sLJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_LJJCLLX"].ToString().Trim();
|
||
string sCPBJMRXSWS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_CPBJMRXSWS"].ToString().Trim();
|
||
string sZDXJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJJCLLX"].ToString().Trim();
|
||
string sJYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JYF"].ToString().Trim();
|
||
string sYFWLID = dsBJD.Tables[0].Rows[0]["XLXSBJFL_YFWLID"].ToString().Trim();
|
||
string sBJHYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJHYF"].ToString().Trim();
|
||
string sZDXJGS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJGS"].ToString().Trim();
|
||
string sJSJGS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JSJGS"].ToString().Trim();
|
||
string sTZCLYLBL = dsBJD.Tables[0].Rows[0]["XLXSBJFL_TZYLBL"].ToString().Trim();
|
||
|
||
|
||
|
||
CalcBJDHQCLCB_CLCB_JGBJJ_JGBBJ(dberp, SQL, sBJDID, startBJDXH, bHSBZ, sBJRQ,
|
||
sJGBID, sMXBH, sJGBIDS, sJGCIDS, sBJLY, sTJYS, sJSBLFS,
|
||
sBJFLID, sBJDHQLY, sTZCLHQ, sJGBTJYSS,
|
||
sBJU002, sBJU003, sBJU018, sWHRID, sWHR, Act, ref sErrMsg);
|
||
|
||
if (!sErrMsg.Equals(""))
|
||
{
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
|
||
//同步报价单明细记录插入XLXSBJDCLCB、XLXSBJDJJYZ
|
||
if (bQLJRQJ)
|
||
XLBJDInfo.InsertCLCBandJJYZ(dberp, SQL, TControlState.ctsEdit, sBJDID, sJGBID, sLJRQ, sWHRID, sWHR, sBJU003, bHSBZ);
|
||
else
|
||
XLBJDInfo.InsertCLCBandJJYZ(dberp, SQL, TControlState.ctsEdit, sBJDID, sJGBID, sBJRQ, sWHRID, sWHR, sBJU003, bHSBZ);
|
||
|
||
XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, iXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, "", startBJDXH);
|
||
bool bZDXJTZ = false;
|
||
if (sZDXJGS.Contains("CLCB") || sZDXJGS.Contains("JGBJJ") || sZDXJGS.Contains("JGBBJ") || sZDXJGS.Contains("CPBJ"))
|
||
{
|
||
XLBJDUtils.UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", startBJDXH);
|
||
bZDXJTZ = true;
|
||
|
||
}
|
||
if (sJSJGS.Contains("CLCB") || sJSJGS.Contains("JGBJJ") || sJSJGS.Contains("JGBBJ") || sJSJGS.Contains("CPBJ") || bZDXJTZ)
|
||
{
|
||
XLBJDUtils.UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", startBJDXH);
|
||
|
||
}
|
||
|
||
XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, sJCLLX, sLJJCLLX, sZDXJJCLLX, sJYF, "", "", sYFWLID, sBJHYF);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
sErrMsg = ex.Message;
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 报价单因子值调整后进行批量重算
|
||
/// </summary>
|
||
/// <param name="dberp"></param>
|
||
/// <param name="SQL"></param>
|
||
/// <param name="sBJDID"></param>
|
||
/// <param name="startBJDXH"></param>
|
||
/// <param name="sBJDXHList"></param>
|
||
/// <param name="bYBJ">有表价</param>
|
||
/// <param name="bWG">外购</param>
|
||
/// <param name="bFWG">非外购</param>
|
||
/// <param name="sTLcpList">铜铝产品</param>
|
||
/// <param name="sBJU002"></param>
|
||
/// <param name="sBJU003"></param>
|
||
/// <param name="sWHRID"></param>
|
||
/// <param name="sWHR"></param>
|
||
/// <param name="sErrMsg"></param>
|
||
public static void CalcAfterBJDYZZChange(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, string sBJDXHList, bool bYBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition,
|
||
string sBJU002, string sBJU003, string sWHRID, string sWHR, ref string sErrMsg)
|
||
{
|
||
try
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSBJD_JGBID,XLXSJGB_MXBH,XLXSJGB_JGBIDS,XLXSJGB_JGCIDS,XLXSJGB_BJLY,XLXSJGB_TJYS,XLXSJGB_JSBLFS,XLXSBJFL_XSTZZDXJ, ");
|
||
SQL.Add(" XLXSBJD_BJFLID,XLXSBJFL_BJDHQLY,XLXSBJFL_TZCLHQ,XLXSBJFL_JGBTJYSS,XLXSBJFL_BJJCLLX,XLXSBJFL_LJJCLLX,XLXSBJFL_CPBJMRXSWS,");
|
||
SQL.Add(" XLXSBJFL_ZDXJJCLLX,XLXSBJFL_JYF,XLXSBJFL_YFWLID,XLXSBJFL_BJHYF,XLXSBJFL_ZDXJGS,XLXSBJFL_JSJGS,");
|
||
SQL.Add(" XLXSBJD_JZBJHS,XLXSBJD_BJRQ");
|
||
SQL.Add(" from XLXSBJD ");
|
||
SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID=XLXSBJD_JGBID ");
|
||
SQL.Add(" left join XLXSBJFL on XLXSBJFL_BJFLID=XLXSBJD_BJFLID");
|
||
SQL.Add(" where XLXSBJD_BJDID=:pBJDID");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet dsBJD = dberp.OpenDataSet(SQL);
|
||
if (dsBJD.Tables[0].Rows.Count == 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
|
||
if (iXSWS < 0)
|
||
iXSWS = 0;
|
||
else if (iXSWS > 8)
|
||
iXSWS = 8;
|
||
|
||
bool bHSBZ = dsBJD.Tables[0].Rows[0]["XLXSBJD_JZBJHS"].ToString().Trim().Equals("Y");
|
||
string sBJRQ = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJRQ"].ToString().Trim();
|
||
|
||
string sJGBID = dsBJD.Tables[0].Rows[0]["XLXSBJD_JGBID"].ToString().Trim();
|
||
string sMXBH = dsBJD.Tables[0].Rows[0]["XLXSJGB_MXBH"].ToString().Trim();
|
||
string sJGBIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGBIDS"].ToString().Trim();
|
||
string sJGCIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim();
|
||
string sBJLY = dsBJD.Tables[0].Rows[0]["XLXSJGB_BJLY"].ToString().Trim();
|
||
string sTJYS = dsBJD.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim();
|
||
string sJSBLFS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JSBLFS"].ToString().Trim();
|
||
|
||
string sBJFLID = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJFLID"].ToString().Trim();
|
||
string sBJDHQLY = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim();//1|价格表行情、2|报价日行情
|
||
string sJGBTJYSS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JGBTJYSS"].ToString().Trim();//价格表调价因素
|
||
string sJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJJCLLX"].ToString().Trim();
|
||
string sLJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_LJJCLLX"].ToString().Trim();
|
||
string sCPBJMRXSWS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_CPBJMRXSWS"].ToString().Trim();
|
||
string sZDXJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJJCLLX"].ToString().Trim();
|
||
string sJYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JYF"].ToString().Trim();
|
||
string sYFWLID = dsBJD.Tables[0].Rows[0]["XLXSBJFL_YFWLID"].ToString().Trim();
|
||
string sBJHYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJHYF"].ToString().Trim();
|
||
string sZDXJGS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJGS"].ToString().Trim();
|
||
string sXSTZZDXJ = dsBJD.Tables[0].Rows[0]["XLXSBJFL_XSTZZDXJ"].ToString().Trim();
|
||
string sJSJGS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JSJGS"].ToString().Trim();
|
||
|
||
//重算明细时,需提前初始化一些字段
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_CLCBJCLSDBZ='N' ");
|
||
if (XLBJDUtils.GetXLXSBJPZXX(100860000).XLXSBJPZ_BQKTZBJ != "Y")
|
||
{
|
||
SQL.Add(" ,XLXSBJDMX_TZCPBJ=0");
|
||
}
|
||
if (XLBJDUtils.GetXLXSBJPZXX(100860000).XLXSBJPZ_BQKTZZDXJ != "Y")
|
||
{
|
||
SQL.Add(" ,XLXSBJDMX_TZZDXJ=0");
|
||
}
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XH>=:pstartBJDXH");
|
||
if (!sBJDXHList.Equals(""))
|
||
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
|
||
if (bYBJ)
|
||
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
|
||
if (bWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ='Y'");
|
||
if (bFWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ<>'Y' ");
|
||
if (!sTLcpList.Equals(""))
|
||
SQL.Add(" and exists(select 1 from XLXHB where XLXHB_XLXHID=UPPER(XLXSBJDMX_XLXHID) and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTLcpList) + ") ");
|
||
if (tWHSJCondition != DateTime.MinValue)
|
||
{
|
||
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
|
||
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
|
||
}
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pstartBJDXH").Value = startBJDXH;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
if (dberp.DriverName == "ORACLE")
|
||
{
|
||
if (dberp.InTransaction)
|
||
{
|
||
dberp.CommitTrans();
|
||
|
||
dberp.BeginTrans();
|
||
}
|
||
}
|
||
|
||
XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, iXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, sBJDXHList, startBJDXH, bYBJ, bWG, bFWG, sTLcpList, tWHSJCondition);
|
||
|
||
|
||
if (dberp.DriverName == "ORACLE")
|
||
{
|
||
if (dberp.InTransaction)
|
||
{
|
||
dberp.CommitTrans();
|
||
|
||
dberp.BeginTrans();
|
||
}
|
||
}
|
||
|
||
bool bZDXJTZ = false;
|
||
if (sZDXJGS.Contains("BJ01") || sZDXJGS.Contains("BJ02") || sZDXJGS.Contains("BJ03") || sZDXJGS.Contains("BJ04") || sZDXJGS.Contains("BJ05")
|
||
|| sZDXJGS.Contains("BJ06") || sZDXJGS.Contains("BJ07") || sZDXJGS.Contains("BJ08") || sZDXJGS.Contains("BJ09") || sZDXJGS.Contains("BJ10")
|
||
|| sZDXJGS.Contains("BJ11") || sZDXJGS.Contains("BJ12") || sZDXJGS.Contains("BJ13") || sZDXJGS.Contains("BJ14") || sZDXJGS.Contains("BJ15")
|
||
|| sZDXJGS.Contains("BJ16") || sZDXJGS.Contains("BJ17") || sZDXJGS.Contains("BJ18") || sZDXJGS.Contains("BJ19") || sZDXJGS.Contains("BJ20")
|
||
|| sZDXJGS.Contains("CPBJ") || sXSTZZDXJ.Equals("Y"))
|
||
{
|
||
XLBJDUtils.UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJDXHList, startBJDXH, bYBJ, false, bWG, bFWG, sTLcpList, tWHSJCondition);
|
||
bZDXJTZ = true;
|
||
|
||
}
|
||
if (sJSJGS.Contains("BJ01") || sJSJGS.Contains("BJ02") || sJSJGS.Contains("BJ03") || sJSJGS.Contains("BJ04") || sJSJGS.Contains("BJ05")
|
||
|| sJSJGS.Contains("BJ06") || sJSJGS.Contains("BJ07") || sJSJGS.Contains("BJ08") || sJSJGS.Contains("BJ09") || sJSJGS.Contains("BJ10")
|
||
|| sJSJGS.Contains("BJ11") || sJSJGS.Contains("BJ12") || sJSJGS.Contains("BJ13") || sJSJGS.Contains("BJ14") || sJSJGS.Contains("BJ15")
|
||
|| sJSJGS.Contains("BJ16") || sJSJGS.Contains("BJ17") || sJSJGS.Contains("BJ18") || sJSJGS.Contains("BJ19") || sJSJGS.Contains("BJ20")
|
||
|| sJSJGS.Contains("CPBJ") || sXSTZZDXJ.Equals("Y") || bZDXJTZ)
|
||
{
|
||
XLBJDUtils.UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJDXHList, startBJDXH, bYBJ, false, bWG, bFWG, sTLcpList, tWHSJCondition);
|
||
}
|
||
|
||
XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, sJCLLX, sLJJCLLX, sZDXJJCLLX, sJYF, "", "", sYFWLID, sBJHYF);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
sErrMsg = ex.Message;
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 报价数量调整进行批量重算
|
||
/// </summary>
|
||
/// <param name="dberp"></param>
|
||
/// <param name="SQL"></param>
|
||
/// <param name="fBJSL"></param>
|
||
/// <param name="sBJDID"></param>
|
||
/// <param name="startBJDXH"></param>
|
||
/// <param name="sBJDXHList"></param>
|
||
/// <param name="bYBJ">有表价</param>
|
||
/// <param name="bWG">外购</param>
|
||
/// <param name="bFWG">非外购</param>
|
||
/// <param name="sBJU002"></param>
|
||
/// <param name="sBJU003"></param>
|
||
/// <param name="sWHRID"></param>
|
||
/// <param name="sWHR"></param>
|
||
/// <param name="sErrMsg"></param>
|
||
public static void CalcWithBJSLChange(TDatabase dberp, TSQL SQL, double fBJSL, string sBJDID, int startBJDXH, string sBJDXHList, bool bYBJ, bool bWG, bool bFWG,
|
||
string sBJU002, string sBJU003, string sWHRID, string sWHR, ref string sErrMsg)
|
||
{
|
||
try
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSBJD_JGBID,XLXSJGB_MXBH,XLXSJGB_JGBIDS,XLXSJGB_JGCIDS,XLXSJGB_BJLY,XLXSJGB_TJYS,XLXSJGB_JSBLFS, ");
|
||
SQL.Add(" XLXSBJD_BJFLID,XLXSBJFL_BJDHQLY,XLXSBJFL_TZCLHQ,XLXSBJFL_JGBTJYSS,XLXSBJFL_BJJCLLX,XLXSBJFL_LJJCLLX,XLXSBJFL_CPBJMRXSWS,");
|
||
SQL.Add(" XLXSBJFL_ZDXJJCLLX,XLXSBJFL_JYF,XLXSBJFL_YFWLID,XLXSBJFL_BJHYF,XLXSBJFL_ZDXJGS,");
|
||
SQL.Add(" XLXSBJD_JZBJHS,XLXSBJD_BJRQ");
|
||
SQL.Add(" from XLXSBJD ");
|
||
SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID=XLXSBJD_JGBID ");
|
||
SQL.Add(" left join XLXSBJFL on XLXSBJFL_BJFLID=XLXSBJD_BJFLID");
|
||
SQL.Add(" where XLXSBJD_BJDID=:pBJDID");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet dsBJD = dberp.OpenDataSet(SQL);
|
||
if (dsBJD.Tables[0].Rows.Count == 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
|
||
if (iXSWS < 0)
|
||
iXSWS = 0;
|
||
else if (iXSWS > 8)
|
||
iXSWS = 8;
|
||
|
||
bool bHSBZ = dsBJD.Tables[0].Rows[0]["XLXSBJD_JZBJHS"].ToString().Trim().Equals("Y");
|
||
string sBJRQ = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJRQ"].ToString().Trim();
|
||
|
||
string sJGBID = dsBJD.Tables[0].Rows[0]["XLXSBJD_JGBID"].ToString().Trim();
|
||
string sMXBH = dsBJD.Tables[0].Rows[0]["XLXSJGB_MXBH"].ToString().Trim();
|
||
string sJGBIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGBIDS"].ToString().Trim();
|
||
string sJGCIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim();
|
||
string sBJLY = dsBJD.Tables[0].Rows[0]["XLXSJGB_BJLY"].ToString().Trim();
|
||
string sTJYS = dsBJD.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim();
|
||
string sJSBLFS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JSBLFS"].ToString().Trim();
|
||
|
||
string sBJFLID = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJFLID"].ToString().Trim();
|
||
string sBJDHQLY = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim();//1|价格表行情、2|报价日行情
|
||
string sJGBTJYSS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JGBTJYSS"].ToString().Trim();//价格表调价因素
|
||
string sJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJJCLLX"].ToString().Trim();
|
||
string sLJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_LJJCLLX"].ToString().Trim();
|
||
string sCPBJMRXSWS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_CPBJMRXSWS"].ToString().Trim();
|
||
string sZDXJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJJCLLX"].ToString().Trim();
|
||
string sJYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JYF"].ToString().Trim();
|
||
string sYFWLID = dsBJD.Tables[0].Rows[0]["XLXSBJFL_YFWLID"].ToString().Trim();
|
||
string sBJHYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJHYF"].ToString().Trim();
|
||
string sZDXJGS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJGS"].ToString().Trim();
|
||
|
||
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select XLXSBJDMX_XH as BJDXH,");
|
||
SQL.Add(" (case when XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then 1.0");
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('T', '吨') then 1000.0");
|
||
if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米"))
|
||
{
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('M', '米') then RoundFix(isnull(XLXSCLQD_CLZL,0.0),6)*0.001");
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('Km', '千米') then RoundFix(isnull(XLXSCLQD_CLZL,0.0),6)");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then RoundFix(isnull(XLXSCLQD_CLZL,0.0),6)*0.001*{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M"))
|
||
{
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('Km', '千米') then RoundFix(isnull(XLXSCLQD_CLZL,0.0),6)*1000.0");
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('M', '米') then RoundFix(isnull(XLXSCLQD_CLZL,0.0),6)");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then RoundFix(isnull(XLXSCLQD_CLZL,0.0),6)*{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
SQL.Add(" else 0.0 ");
|
||
SQL.Add(" end ");
|
||
SQL.Add(" ) as DWCLZL");
|
||
SQL.Add(" from XLXSBJDMX");
|
||
SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSBJDMX_XLXHID and XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID and XLXSCLQD_XLBZID=XLXSBJDMX_XLBZID and XLXSCLQD_DYDJID=XLXSBJDMX_DYDJID and XLXSCLQD_WPID='ZZZZ'");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XH>=:pstartBJDXH");
|
||
if (!sBJDXHList.Equals(""))
|
||
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
|
||
if (bYBJ)
|
||
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
|
||
if (bWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ='Y'");
|
||
if (bFWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ<>'Y' ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=BJDXH)");
|
||
SQL.Add(" when matched then update set XLXSBJDMX_BJSL=:pBJSL,XLXSBJDMX_CLZL=:pBJSL*DWCLZL");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pstartBJDXH").Value = startBJDXH;
|
||
SQL.ParamByName("pBJSL").Value = fBJSL;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
CalBJDTLZL(dberp,SQL,sBJDID);
|
||
|
||
Dictionary<string, string> dicTJYZList = new Dictionary<string, string>();
|
||
Dictionary<string, string> dicTJYZListSL = new Dictionary<string, string>();
|
||
XLBJDUtils.GetDicTJYZList(dberp, SQL, sBJFLID, ref dicTJYZList);
|
||
if (dicTJYZList.ContainsKey("sTJYSList2"))
|
||
{
|
||
dicTJYZListSL.Add("sTJYSList2", dicTJYZList["sTJYSList2"].Trim());
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSList3"))
|
||
{
|
||
dicTJYZListSL.Add("sTJYSList3", dicTJYZList["sTJYSList3"].Trim());
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSList6"))
|
||
{
|
||
dicTJYZListSL.Add("sTJYSList6", dicTJYZList["sTJYSList6"].Trim());
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSListE"))
|
||
{
|
||
dicTJYZListSL.Add("sTJYSListE", dicTJYZList["sTJYSListE"].Trim());
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSListF"))
|
||
{
|
||
dicTJYZListSL.Add("sTJYSListF", dicTJYZList["sTJYSListF"].Trim());
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSListG"))
|
||
{
|
||
dicTJYZListSL.Add("sTJYSListG", dicTJYZList["sTJYSListG"].Trim());
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSListH"))
|
||
{
|
||
dicTJYZListSL.Add("sTJYSListH", dicTJYZList["sTJYSListH"].Trim());
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSListK"))
|
||
{
|
||
dicTJYZListSL.Add("sTJYSListK", dicTJYZList["sTJYSListK"].Trim());
|
||
}
|
||
|
||
//如果用到了和报价数量相关的因子,则调用CalcAfterBJDYZZChange计算
|
||
if (dicTJYZListSL.Keys.Count > 0)
|
||
{
|
||
XLBJDUtils.AddXLXSBJDYZZ0(dberp, sBJDID, sBJFLID, sBJU003, dicTJYZListSL, false, sBJDXHList, startBJDXH - 1, bYBJ, bWG, bFWG, ref sErrMsg);
|
||
XLBJDCalcUtils.Check_UpdBJSLYZZ(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJU003);
|
||
CalcAfterBJDYZZChange(dberp, SQL, sBJDID, startBJDXH, sBJDXHList, bYBJ, bWG, bFWG, "", DateTime.MinValue, sBJU002, sBJU003, sWHRID, sWHR, ref sErrMsg);
|
||
}
|
||
else
|
||
{
|
||
XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, iXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, sBJDXHList, startBJDXH, bYBJ, bWG, bFWG, "");
|
||
XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, sJCLLX, sLJJCLLX, sZDXJJCLLX, sJYF, "", "", sYFWLID, sBJHYF);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
sErrMsg = ex.Message;
|
||
throw new Exception(sErrMsg);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 计算铜重量,铝重量
|
||
/// </summary>
|
||
/// <param name="dberp"></param>
|
||
/// <param name="SQL"></param>
|
||
/// <param name="sBJDID"></param>
|
||
public static void CalBJDTLZL(TDatabase dberp, TSQL SQL, string sBJDID)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add("using( select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_CLZL,XLXSCLQD_TZL,XLXSCLQD_LZL,XLXSCLQD_CLZL from XLXSBJDMX ");
|
||
SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSBJDMX_XLXHID and XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID and XLXSCLQD_XLBZID=XLXSBJDMX_XLBZID and XLXSCLQD_DYDJID=XLXSBJDMX_DYDJID and XLXSCLQD_WPID='ZZZZ' ");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID and XLXSCLQD_CLZL>0 ");
|
||
SQL.Add(" )sor ");
|
||
SQL.Add(" on( tar.XLXSBJDMX_BJDID=sor.XLXSBJDMX_BJDID ");
|
||
SQL.Add(" and tar.XLXSBJDMX_XH=sor.XLXSBJDMX_XH ) ");
|
||
SQL.Add(" when matched then update set tar.XLXSBJDMX_TZL= round(sor.XLXSBJDMX_CLZL*(XLXSCLQD_TZL/XLXSCLQD_CLZL),8) ,tar.XLXSBJDMX_LZL= round(sor.XLXSBJDMX_CLZL*(XLXSCLQD_LZL/XLXSCLQD_CLZL),8) ");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 计算更新XLXSBJDMX_BJDHQCLCB、XLXSBJDMX_CLCB、XLXSBJDMX_JGBJJ、XLXSBJDMX_JGBBJ
|
||
/// 注:XLXSBJDMX_JLDW必须提前赋好值
|
||
/// </summary>
|
||
public static void CalcBJDHQCLCB_CLCB_JGBJJ_JGBBJ(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, bool bHSBZ, string sBJRQ,
|
||
string sJGBID,string sMXBH,string sJGBIDS,string sJGCIDS,string sBJLY,string sTJYS,string sJSBLFS,
|
||
string sBJFLID, string sBJDHQLY, string sTZCLHQ, string sJGBTJYSS,
|
||
string sBJU002, string sBJU003,string sBJU018, string sWHRID, string sWHR, CalcAction Act, ref string sErrMsg)
|
||
{
|
||
CalcBJDHQCLCB_CLCB_JGBJJ_JGBBJ(dberp, SQL, sBJDID, startBJDXH, bHSBZ, sBJRQ,
|
||
sJGBID, sMXBH, sJGBIDS, sJGCIDS, sBJLY, sTJYS, sJSBLFS,
|
||
sBJFLID, sBJDHQLY, sTZCLHQ, sJGBTJYSS,
|
||
sBJU002, sBJU003, sBJU018, sWHRID, sWHR, "", Act, "", ref sErrMsg);
|
||
}
|
||
|
||
public static void CalcBJDHQCLCB_CLCB_JGBJJ_JGBBJ(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, bool bHSBZ, string sBJRQ,
|
||
string sJGBID, string sMXBH, string sJGBIDS, string sJGCIDS, string sBJLY, string sTJYS, string sJSBLFS,
|
||
string sBJFLID, string sBJDHQLY, string sTZCLHQ, string sJGBTJYSS,
|
||
string sBJU002, string sBJU003, string sBJU018, string sWHRID, string sWHR,string sBJDXHList, CalcAction Act, ref string sErrMsg)
|
||
{
|
||
CalcBJDHQCLCB_CLCB_JGBJJ_JGBBJ(dberp, SQL, sBJDID, startBJDXH, bHSBZ, sBJRQ,
|
||
sJGBID, sMXBH, sJGBIDS, sJGCIDS, sBJLY, sTJYS, sJSBLFS,
|
||
sBJFLID, sBJDHQLY, sTZCLHQ, sJGBTJYSS,
|
||
sBJU002, sBJU003, sBJU018, sWHRID, sWHR, sBJDXHList, Act, "", ref sErrMsg);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 计算更新XLXSBJDMX_BJDHQCLCB、XLXSBJDMX_CLCB、XLXSBJDMX_JGBJJ、XLXSBJDMX_JGBBJ
|
||
/// 注:XLXSBJDMX_JLDW必须提前赋好值
|
||
/// </summary>
|
||
public static void CalcBJDHQCLCB_CLCB_JGBJJ_JGBBJ(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, bool bHSBZ, string sBJRQ,
|
||
string sJGBID, string sMXBH, string sJGBIDS, string sJGCIDS, string sBJLY, string sTJYS, string sJSBLFS,
|
||
string sBJFLID, string sBJDHQLY, string sTZCLHQ, string sJGBTJYSS,
|
||
string sBJU002, string sBJU003, string sBJU018, string sWHRID, string sWHR, string sBJDXHList, CalcAction Act, string sBLBJCP, ref string sErrMsg)
|
||
{
|
||
int VnewID = CMISproDataBase.NewID("DBERP", "V_XSBJJSJGB");
|
||
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
|
||
string sJGBJJLY = XLBJDUtils.GetXLXSJGBXXByJGBID(sJGBID).XLXSJGB_JJLY;
|
||
string ABJDHQJSBJ = XLBJDUtils.GetBJFLXX(sBJFLID).XLXSBJFL_ABJDHQJSBJ;
|
||
string FJGBCPBJSBJ = XLBJDUtils.GetBJFLXX(sBJFLID).XLXSBJFL_FJGBCPBJSBJ;
|
||
try
|
||
{
|
||
if (Act == CalcAction.ReCalc)//重算明细时,需提前初始化一些字段
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_TZCPBJ=0,XLXSBJDMX_CLCBJCLSDBZ='N' ");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
if (!sBJDXHList.Trim().Equals(""))
|
||
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
|
||
SQL.Add(" and XLXSBJDMX_XH>=:pstartBJDXH");
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ<>'Y' and XLXSBJDMX_JGFBZ<>'Y'");//已打外购标记的不再参与价格计算
|
||
if (sMXBH.Equals("JGE"))//重算明细时,JGE价格表,手输表价的记录不参与价格重算
|
||
{
|
||
SQL.Add(" and isnull(XLXSBJDMX_BJLY,' ')<>'SSJGBBJ' ");
|
||
}
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pstartBJDXH").Value = startBJDXH;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
DateTime TimeStamp = MISproUtils.GetServerTime();
|
||
//构建待计算临时表
|
||
SQL.Clear();
|
||
SQL.Add("insert into V_XSBJJSJGB(V_XSBJJSJGB_ID,V_XSBJJSJGB_TIMESTAMP,V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH,V_XSBJJSJGB_XLXHID,V_XSBJJSJGB_XLGGID,V_XSBJJSJGB_XLBZID,V_XSBJJSJGB_DYDJID,V_XSBJJSJGB_WGCPBZ,V_XSBJJSJGB_JGFBZ,V_XSBJJSJGB_CLZL,V_XSBJJSJGB_XLXSCLQD,V_XSBJJSJGB_JGBJLDW,V_XSBJJSJGB_JGBMXCPBZ) ");
|
||
SQL.Add("select :pID,:pTime,XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_XLXHID,XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID,XLXSBJDMX_DYDJID,'N','N',isnull(XLXSCLQD_CLZL,0.0),case when XLXSCLQD_XLXHID is null then 'N' else 'Y' end as HasCLQD,:pJGBJLDW ");
|
||
if (ABJDHQJSBJ == "Y" && sJGBJJLY == "A" && FJGBCPBJSBJ == "Y")
|
||
SQL.Add(" ,'N' as HasJGBMX ");
|
||
else
|
||
SQL.Add(" ,'Y' as HasJGBMX ");
|
||
SQL.Add(" from XLXSBJDMX");
|
||
SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSBJDMX_XLXHID and XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID and XLXSCLQD_XLBZID=XLXSBJDMX_XLBZID and XLXSCLQD_DYDJID=XLXSBJDMX_DYDJID and XLXSCLQD_WPID='ZZZZ'");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
if (!sBJDXHList.Trim().Equals(""))
|
||
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
|
||
SQL.Add(" and XLXSBJDMX_XH>=:pstartBJDXH");
|
||
if (Act != CalcAction.HSBZChange && Act != CalcAction.Copy)//表价含税切换时/报价单复制时,外购产品需要重新获取价格
|
||
{
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ<>'Y' and XLXSBJDMX_JGFBZ<>'Y' ");//已打外购标记的不再参与价格计算
|
||
}
|
||
if (Act != CalcAction.Insert)//非新增明细时,JGE价格表,报价来源为手输表价的记录不参与价格重算
|
||
{
|
||
if (sMXBH.Equals("JGE") || Act == CalcAction.Copy)
|
||
{
|
||
SQL.Add(" and isnull(XLXSBJDMX_BJLY,' ')<>'SSJGBBJ' ");
|
||
}
|
||
}
|
||
if (!sBLBJCP.Equals(""))
|
||
{
|
||
if (sBLBJCP.Contains("1"))//表价调整
|
||
SQL.Add(" and isnull(XLXSBJDMX_JGBBJTZ,' ') <> 'Y' ");
|
||
if (sBLBJCP.Contains("2"))//外购产品
|
||
SQL.Add(" and isnull(XLXSBJDMX_WGCPBZ,' ') <> 'Y' ");
|
||
}
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pJGBJLDW").Value = sBJU003;
|
||
SQL.ParamByName("pTime").Value = TimeStamp;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pstartBJDXH").Value = startBJDXH;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
|
||
if (iXSWS < 0)
|
||
iXSWS = 0;
|
||
else if (iXSWS > 8)
|
||
iXSWS = 8;
|
||
|
||
bool bSameJLDW = false;//V_XSBJJSJGB_CLQDJLDW与V_XSBJJSJGB_JGBJLDW是否一致
|
||
string sJGEJJYZList = ""; //记录JGE价格表加价因子id,用于对XLXSBJDJJYZ_YZZ??进行单位换算
|
||
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSJGB_JGBID from XLXSJGB ");
|
||
SQL.Add(" where XLXSJGB_MXBH='JGF' and XLXSJGB_YXQS<=:pBJRQ");
|
||
SQL.Add(" and (XLXSJGB_YXQZ is null or XLXSJGB_YXQZ>=:pBJRQ)");
|
||
SQL.Add(" order by XLXSJGB_JGBID");
|
||
SQL.ParamByName("pBJRQ").Value = sBJRQ;
|
||
DataSet dsJGF = dberp.OpenDataSet(SQL);
|
||
if (dsJGF.Tables[0].Rows.Count > 0)
|
||
{
|
||
string sJGFID = dsJGF.Tables[0].Rows[0]["XLXSJGB_JGBID"].ToString().Trim();
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
if (sBJU018.Equals("Y"))
|
||
{
|
||
SQL.Add(" select XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID,XLXSJGBMX_DYDJID,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_HSJJM else XLXSJGBMX_HSJJ end as XLXSJGBMX_HSJJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_WSJJM else XLXSJGBMX_WSJJ end as XLXSJGBMX_WSJJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_HSBJM else XLXSJGBMX_HSBJ end as XLXSJGBMX_HSBJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_WSBJM else XLXSJGBMX_WSBJ end as XLXSJGBMX_WSBJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then 'M' else XLXSJGBMX_JLDW end as XLXSJGBMX_JLDW ");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" select XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID,XLXSJGBMX_DYDJID,");
|
||
SQL.Add(" XLXSJGBMX_HSJJ,XLXSJGBMX_WSJJ,XLXSJGBMX_HSBJ,XLXSJGBMX_WSBJ,XLXSJGBMX_JLDW");
|
||
}
|
||
SQL.Add(" from XLXSJGBMX");
|
||
SQL.Add(" where XLXSJGBMX_JGBID=:pJGFID");
|
||
SQL.Add(") sor ");
|
||
SQL.Add("on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID=XLXSJGBMX_XLXHID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLGGID=XLXSJGBMX_XLGGID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLBZID=XLXSJGBMX_XLBZID");
|
||
SQL.Add(" and V_XSBJJSJGB_DYDJID=XLXSJGBMX_DYDJID");
|
||
SQL.Add(" ) ");
|
||
if (bHSBZ)
|
||
{
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSJGBMX_HSJJ,V_XSBJJSJGB_CLQDJLDW=XLXSJGBMX_JLDW, ");
|
||
SQL.Add(" V_XSBJJSJGB_CLCB=XLXSJGBMX_HSJJ,V_XSBJJSJGB_JGBJJ=XLXSJGBMX_HSJJ,V_XSBJJSJGB_JGBBJ=XLXSJGBMX_HSBJ,V_XSBJJSJGB_JGBJLDW=XLXSJGBMX_JLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_JGFBZ='Y' ");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSJGBMX_WSJJ,V_XSBJJSJGB_CLQDJLDW=XLXSJGBMX_JLDW, ");
|
||
SQL.Add(" V_XSBJJSJGB_CLCB=XLXSJGBMX_WSJJ,V_XSBJJSJGB_JGBJJ=XLXSJGBMX_WSJJ,V_XSBJJSJGB_JGBBJ=XLXSJGBMX_WSBJ,V_XSBJJSJGB_JGBJLDW=XLXSJGBMX_JLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_JGFBZ='Y'");
|
||
}
|
||
SQL.ParamByName("pJGFID").Value = sJGFID;
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
bSameJLDW = true;
|
||
}
|
||
|
||
SQL.Clear();
|
||
SQL.Add(@"update V_XSBJJSJGB
|
||
SET V_XSBJJSJGB_WGCPBZ='Y'
|
||
WHERE V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID
|
||
AND EXISTS(SELECT 1 FROM XLWGCP WHERE V_XSBJJSJGB_XLXHID=XLWGCP_XLXHID AND V_XSBJJSJGB_XLGGID=XLWGCP_XLGGID
|
||
AND V_XSBJJSJGB_XLBZID=XLWGCP_XLBZID AND V_XSBJJSJGB_DYDJID=XLWGCP_DYDJID)
|
||
");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
if (!sMXBH.Equals("JGE"))//非表价实时计算价格表
|
||
{
|
||
//报价分类设置了“报价日行情材料”,则价格表基价、表价都要重算
|
||
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJFLBJRHQCL_BJCLID from XLXSBJFLBJRHQCL where XLXSBJFLBJRHQCL_BJFLID='{0}'", sBJFLID)))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("select V_XSBJJSJGB_BJDXH,V_XSBJJSJGB_XLXHID,V_XSBJJSJGB_XLGGID,V_XSBJJSJGB_XLBZID,V_XSBJJSJGB_DYDJID,XLXSJGBMX_JLDW");
|
||
SQL.Add(" from V_XSBJJSJGB");
|
||
SQL.Add(" left join XLXSJGBMX on XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XLXHID=V_XSBJJSJGB_XLXHID and XLXSJGBMX_XLGGID=V_XSBJJSJGB_XLGGID and XLXSJGBMX_XLBZID=V_XSBJJSJGB_XLBZID and XLXSJGBMX_DYDJID=V_XSBJJSJGB_DYDJID");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" order by V_XSBJJSJGB_BJDXH");
|
||
SQL.ParamByName("pJGBID").Value = sJGBID;
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet dsV = dberp.OpenDataSet(SQL);
|
||
for (int i = 0; i < dsV.Tables[0].Rows.Count; i++)
|
||
{
|
||
string sBJDXH = dsV.Tables[0].Rows[i]["V_XSBJJSJGB_BJDXH"].ToString().Trim();
|
||
string sXLXHID = dsV.Tables[0].Rows[i]["V_XSBJJSJGB_XLXHID"].ToString().Trim();
|
||
string sXLGGID = dsV.Tables[0].Rows[i]["V_XSBJJSJGB_XLGGID"].ToString().Trim();
|
||
string sXLBZID = dsV.Tables[0].Rows[i]["V_XSBJJSJGB_XLBZID"].ToString().Trim();
|
||
string sXLDYDJ = dsV.Tables[0].Rows[i]["V_XSBJJSJGB_DYDJID"].ToString().Trim();
|
||
string sJGBJLDW = dsV.Tables[0].Rows[i]["XLXSJGBMX_JLDW"].ToString().Trim();
|
||
if (sJGBJLDW.Trim().Equals(""))
|
||
sJGBJLDW = sBJU003;
|
||
string sJGBJSDW = XLBJDUtils.GetsJSDW(sJGBJLDW, sBJU003);
|
||
|
||
string sCPJJ = "";//表价
|
||
string sJJ = "";//基价
|
||
string sCLCB = "";//价格表行情料价
|
||
string sBJDHQCLCB = "";//报价单行情料价
|
||
bool JgIsZero = false;//是否存在有材料用量、无材料价格的情况
|
||
if (sBJU018.Equals("Y") && XLBJDUtils.sJQCDJLDWList.Contains(sJGBJLDW.ToUpper()))//若BJU018参数值为Y,且为价格表单位为长度单位,则重新计算成本时,成本的小数位数为XLBJDUtils.JQJSXSWS
|
||
{
|
||
XLBJDUtils.GetFromJGB_BJRHQ(sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sJGBID, sJGCIDS, sBJRQ, bHSBZ, XLBJDUtils.JQJSXSWS.ToString(),
|
||
sBJFLID, sJGBJLDW, sBJU003, ref sCPJJ, ref sJJ, ref sCLCB, ref JgIsZero);
|
||
}
|
||
else
|
||
{
|
||
XLBJDUtils.GetFromJGB_BJRHQ(sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sJGBID, sJGCIDS, sBJRQ, bHSBZ, sBJU002,
|
||
sBJFLID, sJGBJLDW, sBJU003, ref sCPJJ, ref sJJ, ref sCLCB, ref JgIsZero);
|
||
}
|
||
|
||
if (sBJDHQLY.Trim().Equals("1"))
|
||
{
|
||
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的报价单行情料价改为负数显示
|
||
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sCLCB) * -1);
|
||
else
|
||
sBJDHQCLCB = sCLCB;
|
||
}
|
||
else
|
||
sBJDHQCLCB = "0.0";
|
||
|
||
SQL.Clear();
|
||
SQL.Add("update V_XSBJJSJGB set V_XSBJJSJGB_CLCB=:pCLCB,V_XSBJJSJGB_JGBJJ=:pJGBJJ,V_XSBJJSJGB_JGBBJ=:pJGBBJ,");
|
||
SQL.Add(" V_XSBJJSJGB_JGBJLDW=:pJGBJLDW,");
|
||
if (sBJDHQLY.Equals("1"))//1|价格表行情
|
||
SQL.Add(" V_XSBJJSJGB_BJDHQCLCB=:pBJDHQCLCB,V_XSBJJSJGB_CLQDJLDW=:pJGBJLDW");
|
||
else//2|报价日行情,需要单独算
|
||
SQL.Add(" V_XSBJJSJGB_BJDHQCLCB=:pBJDHQCLCB,V_XSBJJSJGB_CLQDJLDW=' '");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDXH=:pBJDXH");
|
||
SQL.ParamByName("pCLCB").Value = sCLCB;
|
||
SQL.ParamByName("pJGBJJ").Value = sJJ;
|
||
SQL.ParamByName("pJGBBJ").Value = sCPJJ;
|
||
SQL.ParamByName("pJGBJLDW").Value = sJGBJLDW;
|
||
SQL.ParamByName("pBJDHQCLCB").Value = sBJDHQCLCB;
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pBJDXH").Value = sBJDXH;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
if (sBJDHQLY.Equals("1"))//1|价格表行情
|
||
bSameJLDW = true;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (sTJYS.Equals("0") || sTJYS.Equals("1"))
|
||
{
|
||
//出厂价价格表扩充产品料价公式
|
||
string sCPLJGS = XLBJDUtils.GetCPLJGS();
|
||
|
||
//初始化V_XSBJJSJGB_SYJGBID、V_XSBJJSJGB_SYJGBXH、V_XSBJJSJGB_JGBYSJDZ
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("(");
|
||
SQL.Add(" select XLXSJGBMX_JGBID as SYJGBID,case when XLXSJGBMX_SYXH=0 then XLXSJGBMX_XH else XLXSJGBMX_SYXH end as SYJGBXH,case when XLXSJGBMX_YSJDZ=0 then 1.0 else XLXSJGBMX_YSJDZ end as YSJDZ,case when XLXSJGBMX_CLCBYSJDZ=0 then 1.0 else XLXSJGBMX_CLCBYSJDZ end as CLCBYSJDZ,");
|
||
SQL.Add(" XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID,XLXSJGBMX_XLBZID as XLBZID,XLXSJGBMX_DYDJID as DYDJID");
|
||
SQL.Add(" from XLXSJGBMX");
|
||
SQL.Add(" where 1=1");
|
||
if (sBJLY.Equals("C"))//C|基价价格表表价
|
||
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGCIDS));
|
||
else//D|直接导入、J|按调价因素计算
|
||
{
|
||
SQL.Add(" and XLXSJGBMX_JGBID=:pJGBID");
|
||
SQL.ParamByName("pJGBID").Value = sJGBID;
|
||
|
||
}
|
||
SQL.Add(" and exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID=XLXSJGBMX_XLXHID and V_XSBJJSJGB_XLGGID=XLXSJGBMX_XLGGID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLBZID=XLXSJGBMX_XLBZID and V_XSBJJSJGB_DYDJID=XLXSJGBMX_DYDJID)");
|
||
SQL.Add(") sor ");
|
||
SQL.Add("on (V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID=XLXHID and V_XSBJJSJGB_XLGGID=XLGGID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLBZID=XLBZID and V_XSBJJSJGB_DYDJID=DYDJID");
|
||
SQL.Add(") ");
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_SYJGBID=SYJGBID,V_XSBJJSJGB_SYJGBXH=SYJGBXH,V_XSBJJSJGB_JGBYSJDZ=YSJDZ,V_XSBJJSJGB_JGBMXCPBZ = 'Y',V_XSBJJSJGB_CLCBYSJDZ=CLCBYSJDZ ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB");
|
||
SQL.Add(" using");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select XLXSJGBMX_JGBID as SYJGBID,XLXSJGBMX_XH as JGBXH,XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID,XLXSJGBMX_XLBZID as XLBZID,XLXSJGBMX_DYDJID as DYDJID,");
|
||
if (sBJU018.Equals("Y"))
|
||
{
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then 'M' else XLXSJGBMX_JLDW end as JLDW, ");
|
||
if (bHSBZ)
|
||
{
|
||
SQL.Add(" case when XLXSJGBMX_SYXH=0.0 then (case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_HSJJM else XLXSJGBMX_HSJJ end) else 0.0 end as CLCB,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_HSJJM else XLXSJGBMX_HSJJ end as JGBJJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_HSBJM else XLXSJGBMX_HSBJ end as JGBBJ");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" case when XLXSJGBMX_SYXH=0.0 then (case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_WSJJM else XLXSJGBMX_WSJJ end) else 0.0 end as CLCB,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_WSJJM else XLXSJGBMX_WSJJ end as JGBJJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_WSBJM else XLXSJGBMX_WSBJ end as JGBBJ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" XLXSJGBMX_JLDW as JLDW, ");
|
||
if (bHSBZ)
|
||
SQL.Add(" case when XLXSJGBMX_SYXH=0.0 then XLXSJGBMX_HSJJ else 0.0 end as CLCB,XLXSJGBMX_HSJJ as JGBJJ,XLXSJGBMX_HSBJ as JGBBJ");
|
||
else
|
||
SQL.Add(" case when XLXSJGBMX_SYXH=0.0 then XLXSJGBMX_WSJJ else 0.0 end as CLCB,XLXSJGBMX_WSJJ as JGBJJ,XLXSJGBMX_WSBJ as JGBBJ");
|
||
}
|
||
SQL.Add(" from XLXSJGBMX");
|
||
SQL.Add(" where 1=1");
|
||
if (sBJLY.Equals("C"))//C|基价价格表表价
|
||
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGCIDS));
|
||
else//D|直接导入、J|按调价因素计算
|
||
{
|
||
SQL.Add(" and XLXSJGBMX_JGBID=:pJGBID");
|
||
SQL.ParamByName("pJGBID").Value = sJGBID;
|
||
}
|
||
SQL.Add(" ) JGB on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_SYJGBID=SYJGBID");
|
||
SQL.Add(" and V_XSBJJSJGB_SYJGBXH=JGBXH");
|
||
|
||
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" )");
|
||
SQL.Add(" when matched then");
|
||
if (sCPLJGS == "1")
|
||
{
|
||
SQL.Add(" update set V_XSBJJSJGB_CLCB=CLCB,");
|
||
|
||
if (sBJDHQLY.Equals("1"))//1|价格表行情
|
||
SQL.Add(" V_XSBJJSJGB_BJDHQCLCB=CLCB,V_XSBJJSJGB_CLQDJLDW=JLDW");
|
||
else//2|报价日行情,需要单独算
|
||
SQL.Add(" V_XSBJJSJGB_BJDHQCLCB=0.0,V_XSBJJSJGB_CLQDJLDW=' '");
|
||
}
|
||
else if (sCPLJGS == "2")
|
||
{
|
||
SQL.Add(" update set V_XSBJJSJGB_CLCB=CLCB*V_XSBJJSJGB_JGBYSJDZ,");
|
||
if (sBJDHQLY.Equals("1"))//1|价格表行情
|
||
SQL.Add(" V_XSBJJSJGB_BJDHQCLCB=CLCB*V_XSBJJSJGB_JGBYSJDZ,V_XSBJJSJGB_CLQDJLDW=JLDW");
|
||
else//2|报价日行情,需要单独算
|
||
SQL.Add(" V_XSBJJSJGB_BJDHQCLCB=0.0,V_XSBJJSJGB_CLQDJLDW=' '");
|
||
}
|
||
else if (sCPLJGS == "3")
|
||
{
|
||
SQL.Add(" update set V_XSBJJSJGB_CLCB=CLCB,");
|
||
SQL.Add(" V_XSBJJSJGB_BJDHQCLCB=0.0,V_XSBJJSJGB_CLQDJLDW=' ' ");
|
||
}
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB");
|
||
SQL.Add(" using");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID,XLXSJGBMX_XLBZID as XLBZID,XLXSJGBMX_DYDJID as DYDJID,");
|
||
if (sBJU018.Equals("Y"))
|
||
{
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then 'M' else XLXSJGBMX_JLDW end as JLDW, ");
|
||
if (bHSBZ)
|
||
{
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_HSJJM else XLXSJGBMX_HSJJ end as JGBJJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_HSBJM else XLXSJGBMX_HSBJ end as JGBBJ");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_WSJJM else XLXSJGBMX_WSJJ end as JGBJJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米','Km','千米') then XLXSJGBMX_WSBJM else XLXSJGBMX_WSBJ end as JGBBJ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" XLXSJGBMX_JLDW as JLDW, ");
|
||
if (bHSBZ)
|
||
SQL.Add(" XLXSJGBMX_HSJJ as JGBJJ,XLXSJGBMX_HSBJ as JGBBJ");
|
||
else
|
||
SQL.Add(" XLXSJGBMX_WSJJ as JGBJJ,XLXSJGBMX_WSBJ as JGBBJ");
|
||
}
|
||
SQL.Add(" from XLXSJGBMX");
|
||
SQL.Add(" where 1=1");
|
||
if (sBJLY.Equals("C"))//C|基价价格表表价
|
||
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGCIDS));
|
||
else//D|直接导入、J|按调价因素计算
|
||
{
|
||
SQL.Add(" and XLXSJGBMX_JGBID=:pJGBID");
|
||
SQL.ParamByName("pJGBID").Value = sJGBID;
|
||
}
|
||
SQL.Add(" ) JGB on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID=XLXHID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLGGID=XLGGID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLBZID=XLBZID");
|
||
SQL.Add(" and V_XSBJJSJGB_DYDJID=DYDJID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y'");
|
||
SQL.Add(" )");
|
||
SQL.Add(" when matched then");
|
||
SQL.Add(" update set V_XSBJJSJGB_JGBJJ=JGBJJ,V_XSBJJSJGB_JGBBJ=JGBBJ,");
|
||
SQL.Add(" V_XSBJJSJGB_JGBJLDW=JLDW ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
if (sBJDHQLY.Equals("1"))//1|价格表行情
|
||
bSameJLDW = true;
|
||
|
||
}
|
||
else if (sTJYS.Equals("2"))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB");
|
||
SQL.Add(" using");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select jgb1.XLXSJGBMX_XLXHID as XLXHID,jgb1.XLXSJGBMX_XLGGID as XLGGID,jgb1.XLXSJGBMX_XLBZID as XLBZID,jgb1.XLXSJGBMX_DYDJID as DYDJID,");
|
||
if (sBJU018.Equals("Y"))
|
||
{
|
||
SQL.Add(" case when jgb1.XLXSJGBMX_JLDW in ('M','米','Km','千米') then 'M' else jgb1.XLXSJGBMX_JLDW end as JLDW, ");
|
||
if (bHSBZ)
|
||
{
|
||
SQL.Add(" case when jgb2.XLXSJGBMX_JLDW in ('M','米','Km','千米') then isnull(jgb2.XLXSJGBMX_HSJJM,0.0) else isnull(jgb2.XLXSJGBMX_HSJJ,0.0) end as CLCB,");
|
||
SQL.Add(" case when jgb1.XLXSJGBMX_JLDW in ('M','米','Km','千米') then jgb1.XLXSJGBMX_HSJJM else jgb1.XLXSJGBMX_HSJJ end as JGBJJ,");
|
||
SQL.Add(" case when jgb1.XLXSJGBMX_JLDW in ('M','米','Km','千米') then jgb1.XLXSJGBMX_HSBJM else jgb1.XLXSJGBMX_HSBJ end as JGBBJ");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" case when jgb2.XLXSJGBMX_JLDW in ('M','米','Km','千米') then isnull(jgb2.XLXSJGBMX_WSJJM,0.0) else isnull(jgb2.XLXSJGBMX_WSJJ,0.0) end as CLCB,");
|
||
SQL.Add(" case when jgb1.XLXSJGBMX_JLDW in ('M','米','Km','千米') then jgb1.XLXSJGBMX_WSJJM else jgb1.XLXSJGBMX_WSJJ end as JGBJJ,");
|
||
SQL.Add(" case when jgb1.XLXSJGBMX_JLDW in ('M','米','Km','千米') then jgb1.XLXSJGBMX_WSBJM else jgb1.XLXSJGBMX_WSBJ end as JGBBJ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" jgb1.XLXSJGBMX_JLDW as JLDW,");
|
||
if (bHSBZ)
|
||
SQL.Add(" isnull(jgb2.XLXSJGBMX_HSJJ,0.0) as CLCB,jgb1.XLXSJGBMX_HSJJ as JGBJJ,jgb1.XLXSJGBMX_HSBJ as JGBBJ");
|
||
else
|
||
SQL.Add(" isnull(jgb2.XLXSJGBMX_WSJJ,0.0) as CLCB,jgb1.XLXSJGBMX_WSJJ as JGBJJ,jgb1.XLXSJGBMX_WSBJ as JGBBJ");
|
||
}
|
||
SQL.Add(" from XLXSJGBMX jgb1");
|
||
SQL.Add(" left join XLXSJGBMX jgb2 on " + CMISproDataBase.GetWhereEqual("jgb2.XLXSJGBMX_JGBID", sJGBIDS));
|
||
SQL.Add(" and jgb2.XLXSJGBMX_XLXHID=jgb1.XLXSJGBMX_XLXHID and jgb2.XLXSJGBMX_XLGGID=jgb1.XLXSJGBMX_XLGGID ");
|
||
SQL.Add(" and jgb2.XLXSJGBMX_XLBZID=jgb1.XLXSJGBMX_XLBZID and jgb2.XLXSJGBMX_DYDJID=jgb1.XLXSJGBMX_DYDJID ");
|
||
SQL.Add(" where jgb1.XLXSJGBMX_JGBID=:pJGBID");
|
||
SQL.Add(" ) JGB on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID=XLXHID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLGGID=XLGGID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLBZID=XLBZID");
|
||
SQL.Add(" and V_XSBJJSJGB_DYDJID=DYDJID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" )");
|
||
SQL.Add(" when matched then");
|
||
SQL.Add(" update set V_XSBJJSJGB_CLCB=CLCB,V_XSBJJSJGB_JGBJJ=JGBJJ,V_XSBJJSJGB_JGBBJ=JGBBJ,");
|
||
SQL.Add(" V_XSBJJSJGB_JGBJLDW=JLDW,");
|
||
if (sBJDHQLY.Equals("1"))//1|价格表行情
|
||
SQL.Add(" V_XSBJJSJGB_BJDHQCLCB=CLCB,V_XSBJJSJGB_CLQDJLDW=JLDW");
|
||
else//2|报价日行情,需要单独算
|
||
SQL.Add(" V_XSBJJSJGB_BJDHQCLCB=0.0,V_XSBJJSJGB_CLQDJLDW=' '");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pJGBID").Value = sJGBID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
if (sBJDHQLY.Equals("1"))//1|价格表行情
|
||
bSameJLDW = true;
|
||
|
||
}
|
||
else if (sTJYS.Equals("3"))
|
||
{
|
||
//初始化V_XSBJJSJGB_SYJGBID、V_XSBJJSJGB_SYJGBXH、V_XSBJJSJGB_JGBYSJDZ
|
||
//V_XSBJJSJGB_CLCB先赋值为JGBID3的基价,其值包含了JGBID1的表价+价格表行情材料价价差
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("(");
|
||
SQL.Add(" select case when XLXSJGBMX_SYXH=0 then XLXSJGBMX_XH else XLXSJGBMX_SYXH end as SYJGBXH,case when XLXSJGBMX_YSJDZ=0 then 1.0 else XLXSJGBMX_YSJDZ end as YSJDZ,case when XLXSJGBMX_CLCBYSJDZ=0 then 1.0 else XLXSJGBMX_CLCBYSJDZ end as CLCBYSJDZ,");
|
||
if (bHSBZ)
|
||
SQL.Add(" XLXSJGBMX_HSJJ as JGBJJ,");
|
||
else
|
||
SQL.Add(" XLXSJGBMX_WSJJ as JGBJJ,");
|
||
SQL.Add(" XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID,XLXSJGBMX_XLBZID as XLBZID,XLXSJGBMX_DYDJID as DYDJID");
|
||
SQL.Add(" from XLXSJGBMX");
|
||
SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID3");
|
||
SQL.Add(" and exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID=XLXSJGBMX_XLXHID and V_XSBJJSJGB_XLGGID=XLXSJGBMX_XLGGID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLBZID=XLXSJGBMX_XLBZID and V_XSBJJSJGB_DYDJID=XLXSJGBMX_DYDJID)");
|
||
SQL.Add(") sor ");
|
||
SQL.Add("on (V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID=XLXHID and V_XSBJJSJGB_XLGGID=XLGGID");
|
||
SQL.Add(" and V_XSBJJSJGB_XLBZID=XLBZID and V_XSBJJSJGB_DYDJID=DYDJID");
|
||
SQL.Add(") ");
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_SYJGBID=:pJGBID1,V_XSBJJSJGB_SYJGBXH=SYJGBXH,V_XSBJJSJGB_JGBYSJDZ=YSJDZ,");
|
||
SQL.Add(" V_XSBJJSJGB_CLCB=JGBJJ,V_XSBJJSJGB_CLCBYSJDZ=CLCBYSJDZ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pJGBID3").Value = sJGBID;
|
||
SQL.ParamByName("pJGBID1").Value = sJGBIDS;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
|
||
SQL.Clear();
|
||
SQL.Add(@" merge into V_XSBJJSJGB tar
|
||
using (
|
||
select V_XSBJJSJGB_ID as ID,V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH
|
||
,case when (XLXSJGBMX_JGBID is null or XLXSJGBMX_XH =0 or V_XSBJJSJGB_XLXSCLQD='Y' ) then V_XSBJJSJGB_XLXHID else XLXSJGBMX_XLXHID end as QDXLXHID
|
||
,case when (XLXSJGBMX_JGBID is null or XLXSJGBMX_XH =0 or V_XSBJJSJGB_XLXSCLQD='Y' ) then V_XSBJJSJGB_XLGGID else XLXSJGBMX_XLGGID end as QDXLGGID
|
||
,case when (XLXSJGBMX_JGBID is null or XLXSJGBMX_XH =0 or V_XSBJJSJGB_XLXSCLQD='Y' ) then V_XSBJJSJGB_XLBZID else XLXSJGBMX_XLBZID end as QDXLBZID
|
||
,case when (XLXSJGBMX_JGBID is null or XLXSJGBMX_XH =0 or V_XSBJJSJGB_XLXSCLQD='Y' ) then V_XSBJJSJGB_DYDJID else XLXSJGBMX_DYDJID end as QDDYDJID
|
||
from V_XSBJJSJGB
|
||
left join XLXSJGBMX on V_XSBJJSJGB_SYJGBID=XLXSJGBMX_JGBID and V_XSBJJSJGB_SYJGBXH=XLXSJGBMX_XH
|
||
where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y'
|
||
|
||
) sor
|
||
on(
|
||
tar.V_XSBJJSJGB_ID=:pID
|
||
and tar.V_XSBJJSJGB_BJDID=:pBJDID
|
||
and tar.V_XSBJJSJGB_WGCPBZ<>'Y'
|
||
and tar.V_XSBJJSJGB_JGFBZ<>'Y'
|
||
and tar.V_XSBJJSJGB_ID =sor.ID
|
||
and tar.V_XSBJJSJGB_BJDID=sor.BJDID
|
||
and tar.V_XSBJJSJGB_BJDXH=sor.BJDXH
|
||
)
|
||
when matched then update set tar.V_XSBJJSJGB_QDXLXHID =sor.QDXLXHID,
|
||
tar.V_XSBJJSJGB_QDXLGGID =sor.QDXLGGID,
|
||
tar.V_XSBJJSJGB_QDXLBZID =sor.QDXLBZID,
|
||
tar.V_XSBJJSJGB_QDDYDJID =sor.QDDYDJID ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
//根据清单四要素更新CLZL
|
||
|
||
SQL.Clear();
|
||
SQL.Add(@" merge into V_XSBJJSJGB tar
|
||
using XLXSCLQD sor
|
||
on(
|
||
tar.V_XSBJJSJGB_ID=:pID
|
||
and tar.V_XSBJJSJGB_BJDID=:pBJDID
|
||
and tar.V_XSBJJSJGB_QDXLXHID =sor.XLXSCLQD_XLXHID
|
||
and tar.V_XSBJJSJGB_QDXLGGID =sor.XLXSCLQD_XLGGID
|
||
and tar.V_XSBJJSJGB_QDXLBZID =sor.XLXSCLQD_XLBZID
|
||
and tar.V_XSBJJSJGB_QDDYDJID =sor.XLXSCLQD_DYDJID
|
||
and sor.XLXSCLQD_WPID='ZZZZ'
|
||
)
|
||
when matched then update set tar.V_XSBJJSJGB_CLZL =sor.XLXSCLQD_CLZL ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
//初始化V_XSBJJSJGB_CLCBC
|
||
SQL.Clear();
|
||
SQL.Add("select distinct XLXSJGBCLQD_JGCZBID,XLXSJGBCLQD_JGCZBBBID,XLXSJGBCLQD_JJFPSJ");//,XLJGCZBML_CZBLX
|
||
SQL.Add(" from XLXSJGBCLQD");
|
||
SQL.Add(" where XLXSJGBCLQD_JGBID=:pJGBID1");
|
||
SQL.Add(" and exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_SYJGBID=:pJGBID1 and V_XSBJJSJGB_SYJGBXH=XLXSJGBCLQD_XH)");
|
||
SQL.Add(" order by XLXSJGBCLQD_JGCZBID,XLXSJGBCLQD_JGCZBBBID,XLXSJGBCLQD_JJFPSJ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pJGBID1").Value = sJGBIDS;
|
||
DataSet dsJGCZB = dberp.OpenDataSet(SQL);
|
||
for (int j = 0; j < dsJGCZB.Tables[0].Rows.Count; j++)
|
||
{
|
||
string tmpJGCZBID = dsJGCZB.Tables[0].Rows[j]["XLXSJGBCLQD_JGCZBID"].ToString().Trim();
|
||
string tmpJGCZBBBID = dsJGCZB.Tables[0].Rows[j]["XLXSJGBCLQD_JGCZBBBID"].ToString().Trim();
|
||
string tmpJJFPSJ = dsJGCZB.Tables[0].Rows[j]["XLXSJGBCLQD_JJFPSJ"].ToString().Trim();
|
||
string sCLQDL = "";
|
||
//string sBJHQ = "";
|
||
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSJGBYLLM_CLQDL,isnull(XLXSBJCL_BJHQ,'1') as XLXSBJCL_BJHQ ");
|
||
SQL.Add(" from XLXSJGBYLLM");
|
||
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSJGBYLLM_BJCLID");
|
||
SQL.Add(" where XLXSJGBYLLM_JGBID=:pJGBID1");
|
||
SQL.Add(" and XLXSJGBYLLM_JJFPSJ=:pJJFPSJ");
|
||
SQL.Add(" and XLXSJGBYLLM_JGCZBID=:pJGCZBID");
|
||
SQL.Add(" and XLXSJGBYLLM_JGCZBBBID=:pJGCZBBBID");
|
||
SQL.Add(" order by XLXSJGBYLLM_CLQDL");
|
||
SQL.ParamByName("pJGBID1").Value = sJGBIDS;
|
||
SQL.ParamByName("pJJFPSJ").Value = tmpJJFPSJ;
|
||
SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID;
|
||
SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID;
|
||
DataSet dsCLQDL = dberp.OpenDataSet(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("(");
|
||
SQL.Add(" select XLXSJGBCLQD_XH as JGBXH,");
|
||
SQL.Add(" (");
|
||
if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一)
|
||
{
|
||
for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
{
|
||
sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
//sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
SQL.Add(string.Format("CEILING(RoundFix(XLXSJGBCLQD_ZL{0}*CLJG{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]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
//sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
SQL.Add(string.Format("XLXSJGBCLQD_ZL{0}*CLJG{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
}
|
||
}
|
||
SQL.Add("0.0) as WSCLCBC,");
|
||
SQL.Add(" (");
|
||
if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一)
|
||
{
|
||
for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
{
|
||
sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
//sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
SQL.Add(string.Format("CEILING(RoundFix(XLXSJGBCLQD_ZL{0}*HSJG{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]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
//sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
SQL.Add(string.Format("XLXSJGBCLQD_ZL{0}*HSJG{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
}
|
||
}
|
||
SQL.Add("0.0) as HSCLCBC ");
|
||
SQL.Add("from XLXSJGBCLQD ");
|
||
SQL.Add("left join (");
|
||
SQL.Add(" select XLXSJGBYLLM_JGBID as JGBID, XLXSJGBYLLM_JJFPSJ as JJFPSJ, XLXSJGBYLLM_JGCZBID as JGCZBID, XLXSJGBYLLM_JGCZBBBID as JGCZBBBID,");
|
||
for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
{
|
||
sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
//sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
//这里之所以能涵盖1|材料行情、2|物料行情,是因为因素3价格表和因素1价格表的物料行情不能随意改、且即使它们能发生变化也是因为期货铜价引起的,所以物料之间的价格差与细分之前的报价材料之间的价格差等同
|
||
SQL.Add(string.Format(" sum(case when XLXSJGBYLLM_CLQDL='{0}' then isnull(XLXSCLHQ_WSJG,0.0) else 0.0 end) as CLJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", "")));
|
||
SQL.Add(string.Format(" sum(case when XLXSJGBYLLM_CLQDL='{0}' then isnull(XLXSCLHQ_HSJG,0.0) else 0.0 end) as HSJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", "")));
|
||
}
|
||
SQL.Add(" ' ' as MJBZ ");
|
||
SQL.Add(" from XLXSJGBYLLM ");
|
||
SQL.Add(" left join (");
|
||
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=:pBJDID and XLXSBJDCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID");
|
||
SQL.Add(" where j1.XLXSCLHQ_JGBID=:pJGBID1 and j3.XLXSCLHQ_JGBID=:pJGBID3");
|
||
SQL.Add(" and j1.XLXSCLHQ_BJCLID=j3.XLXSCLHQ_BJCLID");
|
||
SQL.Add(" ) jj on XLXSCLHQ_BJCLID=XLXSJGBYLLM_BJCLID");
|
||
SQL.Add(" where XLXSJGBYLLM_JGBID=:pJGBID1");
|
||
SQL.Add(" and XLXSJGBYLLM_JJFPSJ=:pJJFPSJ");
|
||
SQL.Add(" and XLXSJGBYLLM_JGCZBID=:pJGCZBID");
|
||
SQL.Add(" and XLXSJGBYLLM_JGCZBBBID=:pJGCZBBBID");
|
||
SQL.Add(" group by XLXSJGBYLLM_JGBID,XLXSJGBYLLM_JJFPSJ,XLXSJGBYLLM_JGCZBID,XLXSJGBYLLM_JGCZBBBID");
|
||
SQL.Add(") JGCZBCLHQ on JGBID=XLXSJGBCLQD_JGBID and JJFPSJ=XLXSJGBCLQD_JJFPSJ and JGCZBID=XLXSJGBCLQD_JGCZBID and JGCZBBBID=XLXSJGBCLQD_JGCZBBBID ");
|
||
SQL.Add("where XLXSJGBCLQD_JGBID=:pJGBID1 and XLXSJGBCLQD_JJFPSJ=:pJJFPSJ and XLXSJGBCLQD_JGCZBID=:pJGCZBID and XLXSJGBCLQD_JGCZBBBID=:pJGCZBBBID");
|
||
SQL.Add(" and exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_SYJGBID=:pJGBID1 and V_XSBJJSJGB_SYJGBXH=XLXSJGBCLQD_XH)");
|
||
SQL.Add(") sor on (V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_SYJGBID=:pJGBID1 and V_XSBJJSJGB_SYJGBXH=JGBXH) ");
|
||
if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2") || sJSBLFS.Equals("C3"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一)、C3|材料价汇总进一+表价进一到十位
|
||
{
|
||
if (bHSBZ)
|
||
SQL.Add(string.Format("when matched then update set V_XSBJJSJGB_CLCBC=CEILING(RoundFix(HSCLCBC*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
|
||
else
|
||
SQL.Add(string.Format("when matched then update set V_XSBJJSJGB_CLCBC=CEILING(RoundFix(WSCLCBC*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
|
||
}
|
||
else
|
||
{
|
||
if (bHSBZ)
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_CLCBC=RoundFix(HSCLCBC," + iXSWS.ToString() + ")");
|
||
else
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_CLCBC=RoundFix(WSCLCBC," + iXSWS.ToString() + ")");
|
||
}
|
||
SQL.ParamByName("pJGBID1").Value = sJGBIDS;
|
||
SQL.ParamByName("pJJFPSJ").Value = tmpJJFPSJ;
|
||
SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID;
|
||
SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID;
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pJGBID3").Value = sJGBID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
}
|
||
|
||
//更新V_XSBJJSJGB_CLCB、V_XSBJJSJGB_BJDHQCLCB、V_XSBJJSJGB_CLQDJLDW、V_XSBJJSJGB_JGBJJ、V_XSBJJSJGB_JGBBJ、V_XSBJJSJGB_JGBJLDW
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("(");
|
||
SQL.Add("select XLXSJGBMX_XH,XLXSJGBMX_JLDW,");
|
||
if (sBJU018.Equals("Y"))
|
||
{
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米') then XLXSJGBMX_HSBJM when XLXSJGBMX_JLDW in ('Km','千米') then XLXSJGBMX_HSBJM * 1000.0 else XLXSJGBMX_HSBJ end as XLXSJGBMX_HSBJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米') then XLXSJGBMX_WSBJM when XLXSJGBMX_JLDW in ('Km','千米') then XLXSJGBMX_WSBJM * 1000.0 else XLXSJGBMX_WSBJ end as XLXSJGBMX_WSBJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米') then XLXSJGBMX_HSJJM when XLXSJGBMX_JLDW in ('Km','千米') then XLXSJGBMX_HSJJM * 1000.0 else XLXSJGBMX_HSJJ end as XLXSJGBMX_HSJJ,");
|
||
SQL.Add(" case when XLXSJGBMX_JLDW in ('M','米') then XLXSJGBMX_WSJJM when XLXSJGBMX_JLDW in ('Km','千米') then XLXSJGBMX_WSJJM * 1000.0 else XLXSJGBMX_WSJJ end as XLXSJGBMX_WSJJ ");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("XLXSJGBMX_HSBJ,XLXSJGBMX_WSBJ,XLXSJGBMX_HSJJ,XLXSJGBMX_WSJJ ");
|
||
}
|
||
SQL.Add("from XLXSJGBMX ");
|
||
SQL.Add("where XLXSJGBMX_JGBID=:pJGBID1 ");
|
||
SQL.Add(" and exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_SYJGBID=:pJGBID1 and V_XSBJJSJGB_SYJGBXH=XLXSJGBMX_XH)");
|
||
SQL.Add(") sor on (V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_SYJGBID=:pJGBID1 and V_XSBJJSJGB_SYJGBXH=XLXSJGBMX_XH) ");
|
||
if (XLBJDUtils.GetCPLJGS() == "2")
|
||
{
|
||
if (bHSBZ)
|
||
{
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_CLCB=XLXSJGBMX_HSJJ+(V_XSBJJSJGB_CLCB-XLXSJGBMX_HSBJ),V_XSBJJSJGB_BJDHQCLCB=(XLXSJGBMX_HSJJ+V_XSBJJSJGB_CLCBC)*(case when V_XSBJJSJGB_JGBYSJDZ=0 then 1 else V_XSBJJSJGB_JGBYSJDZ end ),V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_JGBJJ=XLXSJGBMX_HSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBBJ=XLXSJGBMX_HSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBJLDW=XLXSJGBMX_JLDW");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_CLCB=XLXSJGBMX_WSJJ+(V_XSBJJSJGB_CLCB-XLXSJGBMX_WSBJ),V_XSBJJSJGB_BJDHQCLCB=(XLXSJGBMX_WSJJ+V_XSBJJSJGB_CLCBC)*(case when V_XSBJJSJGB_JGBYSJDZ=0 then 1 else V_XSBJJSJGB_JGBYSJDZ end ),V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_JGBJJ=XLXSJGBMX_WSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBBJ=XLXSJGBMX_WSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBJLDW=XLXSJGBMX_JLDW");
|
||
}
|
||
}
|
||
else if (XLBJDUtils.GetCPLJGS() == "4")
|
||
{
|
||
if (bHSBZ)
|
||
{
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_CLCB=XLXSJGBMX_HSJJ+(V_XSBJJSJGB_CLCB-XLXSJGBMX_HSBJ),V_XSBJJSJGB_BJDHQCLCB=(XLXSJGBMX_HSJJ+V_XSBJJSJGB_CLCBC)*(case when V_XSBJJSJGB_CLCBYSJDZ=0 then 1 else V_XSBJJSJGB_CLCBYSJDZ end ),V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_JGBJJ=XLXSJGBMX_HSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBBJ=XLXSJGBMX_HSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBJLDW=XLXSJGBMX_JLDW");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_CLCB=XLXSJGBMX_WSJJ+(V_XSBJJSJGB_CLCB-XLXSJGBMX_WSBJ),V_XSBJJSJGB_BJDHQCLCB=(XLXSJGBMX_WSJJ+V_XSBJJSJGB_CLCBC)*(case when V_XSBJJSJGB_CLCBYSJDZ=0 then 1 else V_XSBJJSJGB_CLCBYSJDZ end ),V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_JGBJJ=XLXSJGBMX_WSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBBJ=XLXSJGBMX_WSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBJLDW=XLXSJGBMX_JLDW");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (bHSBZ)
|
||
{
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_CLCB=XLXSJGBMX_HSJJ+(V_XSBJJSJGB_CLCB-XLXSJGBMX_HSBJ),V_XSBJJSJGB_BJDHQCLCB=XLXSJGBMX_HSJJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_JGBJJ=XLXSJGBMX_HSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBBJ=XLXSJGBMX_HSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBJLDW=XLXSJGBMX_JLDW");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("when matched then update set V_XSBJJSJGB_CLCB=XLXSJGBMX_WSJJ+(V_XSBJJSJGB_CLCB-XLXSJGBMX_WSBJ),V_XSBJJSJGB_BJDHQCLCB=XLXSJGBMX_WSJJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_JGBJJ=XLXSJGBMX_WSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBBJ=XLXSJGBMX_WSBJ+V_XSBJJSJGB_CLCBC,V_XSBJJSJGB_JGBJLDW=XLXSJGBMX_JLDW");
|
||
}
|
||
}
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pJGBID1").Value = sJGBIDS;
|
||
SQL.ParamByName("pCLQDJLDW").Value = sBJU003;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
//依据表价调价政策,计算V_XSBJJSJGB_JGBBJ
|
||
DataSet dsJGBYZ = new DataSet();
|
||
XLBJDUtils.GetdsJGBYZ_JGE(sJGBID, ref dsJGBYZ);
|
||
if (dsJGBYZ.Tables[0].Rows.Count > 0)
|
||
{
|
||
CalcUpdateJGBBJ_JGE(dberp, SQL, dsJGBYZ, VnewID, sBJDID, sMXBH, sJGBID, iXSWS, sJSBLFS, sWHRID, sWHR, sJGBIDS);
|
||
|
||
sJGEJJYZList = "";
|
||
for (int i = 0; i < dsJGBYZ.Tables[0].Rows.Count; i++)
|
||
{
|
||
if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim().Equals("JJ"))
|
||
{
|
||
sJGEJJYZList += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
|
||
}
|
||
}
|
||
sJGEJJYZList = sJGEJJYZList.TrimEnd(',');
|
||
}
|
||
else
|
||
{
|
||
AddXLXSBJDJJYZ(dberp, SQL, VnewID, sBJDID, sMXBH, sJGBID, sJGBIDS, "", "", "", "", "", "", "", "", "", "");
|
||
}
|
||
|
||
//衍生加点
|
||
if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(string.Format("update V_XSBJJSJGB set V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((V_XSBJJSJGB_JGBBJ*V_XSBJJSJGB_JGBYSJDZ)*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_JGBYSJDZ>0");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(string.Format("update V_XSBJJSJGB set V_XSBJJSJGB_JGBBJ=CEILING(RoundFix(V_XSBJJSJGB_JGBBJ*V_XSBJJSJGB_JGBYSJDZ,{0})/10)*10", iXSWS.ToString().Trim()));
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_JGBYSJDZ>0");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
else
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(string.Format("update V_XSBJJSJGB set V_XSBJJSJGB_JGBBJ=RoundFix(V_XSBJJSJGB_JGBBJ*V_XSBJJSJGB_JGBYSJDZ,{0})", iXSWS));
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_JGBYSJDZ>0");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
//V_XSBJJSJGB_CLQDJLDW与V_XSBJJSJGB_JLDW一致
|
||
bSameJLDW = true;
|
||
|
||
}
|
||
}
|
||
|
||
//允许调整材料行情且存在报价单材料行情时使用报价单材料行情计算
|
||
bool bBJDCLCB = false;
|
||
if (sTZCLHQ.Equals("Y"))
|
||
{
|
||
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJDCLHQ_BJCLID from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID='{0}'", sBJDID)))
|
||
bBJDCLCB = true;
|
||
}
|
||
|
||
|
||
//2|报价日行情,单独计算V_XSBJJSJGB_BJDHQCLCB。价格表调价因素3使用价格表材料清单计算,已在上面处理,这里不用执行了。
|
||
if ((sBJDHQLY.Equals("2") || bBJDCLCB) && !sTJYS.Equals("3"))
|
||
{
|
||
|
||
if (sTJYS.Equals("1"))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(@" merge into V_XSBJJSJGB tar
|
||
using (
|
||
select V_XSBJJSJGB_ID as ID,V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH
|
||
,case when (XLXSJGBMX_JGBID is null or XLXSJGBMX_XH =0 or V_XSBJJSJGB_XLXSCLQD='Y' ) then V_XSBJJSJGB_XLXHID else XLXSJGBMX_XLXHID end as QDXLXHID
|
||
,case when (XLXSJGBMX_JGBID is null or XLXSJGBMX_XH =0 or V_XSBJJSJGB_XLXSCLQD='Y' ) then V_XSBJJSJGB_XLGGID else XLXSJGBMX_XLGGID end as QDXLGGID
|
||
,case when (XLXSJGBMX_JGBID is null or XLXSJGBMX_XH =0 or V_XSBJJSJGB_XLXSCLQD='Y' ) then V_XSBJJSJGB_XLBZID else XLXSJGBMX_XLBZID end as QDXLBZID
|
||
,case when (XLXSJGBMX_JGBID is null or XLXSJGBMX_XH =0 or V_XSBJJSJGB_XLXSCLQD='Y' ) then V_XSBJJSJGB_DYDJID else XLXSJGBMX_DYDJID end as QDDYDJID
|
||
from V_XSBJJSJGB
|
||
left join XLXSJGBMX on V_XSBJJSJGB_SYJGBID=XLXSJGBMX_JGBID and V_XSBJJSJGB_SYJGBXH=XLXSJGBMX_XH
|
||
where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y'
|
||
|
||
) sor
|
||
on(
|
||
tar.V_XSBJJSJGB_ID=:pID
|
||
and tar.V_XSBJJSJGB_BJDID=:pBJDID
|
||
and tar.V_XSBJJSJGB_WGCPBZ<>'Y'
|
||
and tar.V_XSBJJSJGB_JGFBZ<>'Y'
|
||
and tar.V_XSBJJSJGB_ID =sor.ID
|
||
and tar.V_XSBJJSJGB_BJDID=sor.BJDID
|
||
and tar.V_XSBJJSJGB_BJDXH=sor.BJDXH
|
||
)
|
||
when matched then update set tar.V_XSBJJSJGB_QDXLXHID =sor.QDXLXHID,
|
||
tar.V_XSBJJSJGB_QDXLGGID =sor.QDXLGGID,
|
||
tar.V_XSBJJSJGB_QDXLBZID =sor.QDXLBZID,
|
||
tar.V_XSBJJSJGB_QDDYDJID =sor.QDDYDJID ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
//根据清单四要素更新CLZL
|
||
|
||
SQL.Clear();
|
||
SQL.Add(@" merge into V_XSBJJSJGB tar
|
||
using XLXSCLQD sor
|
||
on(
|
||
tar.V_XSBJJSJGB_ID=:pID
|
||
and tar.V_XSBJJSJGB_BJDID=:pBJDID
|
||
and tar.V_XSBJJSJGB_QDXLXHID =sor.XLXSCLQD_XLXHID
|
||
and tar.V_XSBJJSJGB_QDXLGGID =sor.XLXSCLQD_XLGGID
|
||
and tar.V_XSBJJSJGB_QDXLBZID =sor.XLXSCLQD_XLBZID
|
||
and tar.V_XSBJJSJGB_QDDYDJID =sor.XLXSCLQD_DYDJID
|
||
and sor.XLXSCLQD_WPID='ZZZZ'
|
||
)
|
||
when matched then update set tar.V_XSBJJSJGB_CLZL =sor.XLXSCLQD_CLZL ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
|
||
|
||
//用清单四要素更新XLXSBJDMX四要素
|
||
SQL.Clear();
|
||
SQL.Add(@"merge into XLXSBJDMX tar
|
||
using (
|
||
select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH,
|
||
V_XSBJJSJGB_QDXLXHID as QDXLXHID,V_XSBJJSJGB_QDXLGGID as QDXLGGID,V_XSBJJSJGB_QDXLBZID as QDXLBZID,V_XSBJJSJGB_QDDYDJID as QDDYDJID
|
||
from V_XSBJJSJGB
|
||
where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y'
|
||
)sor
|
||
on(
|
||
XLXSBJDMX_BJDID=:pBJDID
|
||
and XLXSBJDMX_BJDID=sor.BJDID
|
||
and XLXSBJDMX_XH =sor.BJDXH
|
||
)
|
||
when matched then update set XLXSBJDMX_XLXHID =sor.QDXLXHID,
|
||
XLXSBJDMX_XLGGID =sor.QDXLGGID,
|
||
XLXSBJDMX_XLBZID =sor.QDXLBZID,
|
||
XLXSBJDMX_DYDJID =sor.QDDYDJID ");
|
||
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
|
||
|
||
//重新计算XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB
|
||
XLJGB_CLJGTZList.UpdateCLCB(dberp, SQL, sJGBID, "", "", iXSWS, sJSBLFS, sWHRID, sWHR, 0, sJGBIDS,
|
||
"", "", 0.0, 0.0, sBJDID, startBJDXH, sBJDXHList, sBJU003);
|
||
//回填四要素
|
||
|
||
SQL.Clear();
|
||
SQL.Add(@"merge into XLXSBJDMX tar
|
||
using (
|
||
select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH,
|
||
V_XSBJJSJGB_XLXHID as XLXHID,V_XSBJJSJGB_XLGGID as XLGGID,V_XSBJJSJGB_XLBZID as XLBZID,V_XSBJJSJGB_DYDJID as DYDJID
|
||
from V_XSBJJSJGB
|
||
where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y'
|
||
)sor
|
||
on(
|
||
XLXSBJDMX_BJDID=:pBJDID
|
||
and XLXSBJDMX_BJDID=sor.BJDID
|
||
and XLXSBJDMX_XH =sor.BJDXH
|
||
)
|
||
when matched then update set XLXSBJDMX_XLXHID =sor.XLXHID,
|
||
XLXSBJDMX_XLGGID =sor.XLGGID,
|
||
XLXSBJDMX_XLBZID =sor.XLBZID,
|
||
XLXSBJDMX_DYDJID =sor.DYDJID ");
|
||
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,XLXSCLQD_JGBHSCB,XLXSCLQD_JGBWSCB");
|
||
SQL.Add(" from XLXSCLQD");
|
||
SQL.Add(" where exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_QDXLXHID=XLXSCLQD_XLXHID and V_XSBJJSJGB_QDXLGGID=XLXSCLQD_XLGGID ");
|
||
SQL.Add(" and V_XSBJJSJGB_QDXLBZID=XLXSCLQD_XLBZID and V_XSBJJSJGB_QDDYDJID=XLXSCLQD_DYDJID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" )");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLXHID=V_XSBJJSJGB_QDXLXHID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLGGID=V_XSBJJSJGB_QDXLGGID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLBZID=V_XSBJJSJGB_QDXLBZID ");
|
||
SQL.Add(" and sor.XLXSCLQD_DYDJID=V_XSBJJSJGB_QDDYDJID ");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
if (XLBJDUtils.GetCPLJGS() == "3")//无清单产品的报价单行情成本单独计算
|
||
{
|
||
SQL.Add(" and V_XSBJJSJGB_XLXSCLQD='Y' ");
|
||
}
|
||
SQL.Add(" ) ");
|
||
|
||
if (bHSBZ)
|
||
SQL.Add(" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBHSCB,V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
else
|
||
SQL.Add(" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBWSCB,V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pCLQDJLDW").Value = sBJU003;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
if (ABJDHQJSBJ == "Y" && sJGBJJLY == "A")
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(" update V_XSBJJSJGB set V_XSBJJSJGB_JGBJJ = V_XSBJJSJGB_BJDHQCLCB,V_XSBJJSJGB_JGBBJ= V_XSBJJSJGB_BJDHQCLCB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_JGBMXCPBZ = 'Y' ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add("update V_XSBJJSJGB set V_XSBJJSJGB_XLXHID =V_XSBJJSJGB_QDXLXHID ,V_XSBJJSJGB_XLGGID=V_XSBJJSJGB_QDXLGGID,V_XSBJJSJGB_XLBZID =V_XSBJJSJGB_QDXLBZID,V_XSBJJSJGB_DYDJID=V_XSBJJSJGB_QDDYDJID ");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_JGBMXCPBZ = 'Y' ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
DataSet dsJGBYZ = new DataSet();
|
||
XLBJDUtils.GetdsJGBYZ_JGE(sJGBID, ref dsJGBYZ);
|
||
|
||
CalcUpdateJGBBJ_JGE(dberp, SQL, dsJGBYZ, VnewID, sBJDID, sMXBH, sJGBID, iXSWS, sJSBLFS, sWHRID, sWHR, sJGBIDS);
|
||
|
||
if (dsJGBYZ.Tables[0].Rows.Count == 0)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(" update V_XSBJJSJGB set V_XSBJJSJGB_JGBBJ =V_XSBJJSJGB_JGBJJ*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end) where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_JGBMXCPBZ = 'Y' ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
|
||
|
||
SQL.Clear();
|
||
SQL.Add(@"merge into V_XSBJJSJGB tar
|
||
using (
|
||
select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as BJDXH,
|
||
XLXSBJDMX_XLXHID as XLXHID,XLXSBJDMX_XLGGID as XLGGID,XLXSBJDMX_XLBZID as XLBZID,XLXSBJDMX_DYDJID as DYDJID
|
||
from XLXSBJDMX
|
||
where XLXSBJDMX_BJDID=:pBJDID
|
||
)sor
|
||
on(
|
||
V_XSBJJSJGB_ID=:pID and
|
||
V_XSBJJSJGB_BJDID=:pBJDID
|
||
and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_JGBMXCPBZ = 'Y'
|
||
and V_XSBJJSJGB_BJDXH =sor.BJDXH
|
||
)
|
||
when matched then update set V_XSBJJSJGB_XLXHID =sor.XLXHID,
|
||
V_XSBJJSJGB_XLGGID =sor.XLGGID,
|
||
V_XSBJJSJGB_XLBZID =sor.XLBZID,
|
||
V_XSBJJSJGB_DYDJID =sor.DYDJID ");
|
||
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add(@"delete from XLXSBJDJJYZ
|
||
where exists(
|
||
select 1 from V_XSBJJSJGB
|
||
where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_JGBMXCPBZ = 'Y'
|
||
and V_XSBJJSJGB_BJDID=XLXSBJDJJYZ_BJDID and V_XSBJJSJGB_BJDXH =XLXSBJDJJYZ_XH
|
||
and V_XSBJJSJGB_JGBYSJDZ>1
|
||
)");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
|
||
if (XLBJDUtils.GetCPLJGS() == "2")
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,XLXSCLQD_JGBHSCB,XLXSCLQD_JGBWSCB");
|
||
SQL.Add(" from XLXSCLQD");
|
||
SQL.Add(" where exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_QDXLXHID=XLXSCLQD_XLXHID and V_XSBJJSJGB_QDXLGGID=XLXSCLQD_XLGGID ");
|
||
SQL.Add(" and V_XSBJJSJGB_QDXLBZID=XLXSCLQD_XLBZID and V_XSBJJSJGB_QDDYDJID=XLXSCLQD_DYDJID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" )");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLXHID=V_XSBJJSJGB_QDXLXHID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLGGID=V_XSBJJSJGB_QDXLGGID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLBZID=V_XSBJJSJGB_QDXLBZID ");
|
||
SQL.Add(" and sor.XLXSCLQD_DYDJID=V_XSBJJSJGB_QDDYDJID ");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_XLXSCLQD='N' ");
|
||
SQL.Add(" ) ");
|
||
|
||
if (bHSBZ)
|
||
SQL.Add(@" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBHSCB*V_XSBJJSJGB_JGBYSJDZ ,
|
||
V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
else
|
||
SQL.Add(@" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBWSCB*V_XSBJJSJGB_JGBYSJDZ ,
|
||
V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
|
||
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pCLQDJLDW").Value = sBJU003;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
else if (XLBJDUtils.GetCPLJGS() == "3")
|
||
{
|
||
|
||
//匹配电压等级为空的材料清单型号、料价加点值
|
||
SQL.Clear();
|
||
SQL.Add(" merge into V_XSBJJSJGB tag ");
|
||
SQL.Add(" using ( select BJDLJXHDZB_CLQDXLXHID,BJDLJXHDZB_BJDXLXHID,BJDLJXHDZB_LJJDZ ");
|
||
SQL.Add(" from BJDLJXHDZB where isnull(BJDLJXHDZB_DYDJID,' ') = ' ' ) sor ");
|
||
SQL.Add(" on (V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_XLXSCLQD='N' ");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID = sor.BJDLJXHDZB_BJDXLXHID) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" V_XSBJJSJGB_QDXLXHID= sor.BJDLJXHDZB_CLQDXLXHID,V_XSBJJSJGB_LJJDZ = sor.BJDLJXHDZB_LJJDZ, ");
|
||
SQL.Add(" V_XSBJJSJGB_QDXLGGID= V_XSBJJSJGB_XLGGID, ");
|
||
SQL.Add(" V_XSBJJSJGB_QDXLBZID= V_XSBJJSJGB_XLBZID, ");
|
||
SQL.Add(" V_XSBJJSJGB_QDDYDJID= V_XSBJJSJGB_DYDJID");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
//匹配电压等级不为空的材料清单型号、料价加点值
|
||
SQL.Clear();
|
||
SQL.Add(" merge into V_XSBJJSJGB tag ");
|
||
SQL.Add(" using ( select BJDLJXHDZB_CLQDXLXHID,BJDLJXHDZB_BJDXLXHID,isnull(BJDLJXHDZB_DYDJID,' ') as DYDJID,BJDLJXHDZB_LJJDZ ");
|
||
SQL.Add(" from BJDLJXHDZB where isnull(BJDLJXHDZB_DYDJID,' ') <> ' ' ) sor ");
|
||
SQL.Add(" on (V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_XLXSCLQD='N' ");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID = sor.BJDLJXHDZB_BJDXLXHID and V_XSBJJSJGB_DYDJID = sor.DYDJID) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" V_XSBJJSJGB_QDXLXHID= sor.BJDLJXHDZB_CLQDXLXHID,V_XSBJJSJGB_LJJDZ = sor.BJDLJXHDZB_LJJDZ, ");
|
||
SQL.Add(" V_XSBJJSJGB_QDXLGGID= V_XSBJJSJGB_XLGGID, ");
|
||
SQL.Add(" V_XSBJJSJGB_QDXLBZID= V_XSBJJSJGB_XLBZID, ");
|
||
SQL.Add(" V_XSBJJSJGB_QDDYDJID= V_XSBJJSJGB_DYDJID");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
//用清单四要素更新XLXSBJDMX四要素
|
||
SQL.Clear();
|
||
SQL.Add(@"merge into XLXSBJDMX tar
|
||
using (
|
||
select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH,
|
||
V_XSBJJSJGB_QDXLXHID as QDXLXHID,V_XSBJJSJGB_QDXLGGID as QDXLGGID,V_XSBJJSJGB_QDXLBZID as QDXLBZID,V_XSBJJSJGB_QDDYDJID as QDDYDJID
|
||
from V_XSBJJSJGB
|
||
where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y'
|
||
)sor
|
||
on(
|
||
XLXSBJDMX_BJDID=:pBJDID
|
||
and XLXSBJDMX_BJDID=sor.BJDID
|
||
and XLXSBJDMX_XH =sor.BJDXH
|
||
)
|
||
when matched then update set XLXSBJDMX_XLXHID =sor.QDXLXHID,
|
||
XLXSBJDMX_XLGGID =sor.QDXLGGID,
|
||
XLXSBJDMX_XLBZID =sor.QDXLBZID,
|
||
XLXSBJDMX_DYDJID =sor.QDDYDJID ");
|
||
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
|
||
|
||
//重新计算XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB
|
||
XLJGB_CLJGTZList.UpdateCLCB(dberp, SQL, sJGBID, "", "", iXSWS, sJSBLFS, sWHRID, sWHR, 0, sJGBIDS,
|
||
"", "", 0.0, 0.0, sBJDID, startBJDXH, sBJU003);
|
||
//回填四要素
|
||
SQL.Clear();
|
||
SQL.Add(@"merge into XLXSBJDMX tar
|
||
using (
|
||
select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH,
|
||
V_XSBJJSJGB_XLXHID as XLXHID,V_XSBJJSJGB_XLGGID as XLGGID,V_XSBJJSJGB_XLBZID as XLBZID,V_XSBJJSJGB_DYDJID as DYDJID
|
||
from V_XSBJJSJGB
|
||
where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y'
|
||
)sor
|
||
on(
|
||
XLXSBJDMX_BJDID=:pBJDID
|
||
and XLXSBJDMX_BJDID=sor.BJDID
|
||
and XLXSBJDMX_XH =sor.BJDXH
|
||
)
|
||
when matched then update set XLXSBJDMX_XLXHID =sor.XLXHID,
|
||
XLXSBJDMX_XLGGID =sor.XLGGID,
|
||
XLXSBJDMX_XLBZID =sor.XLBZID,
|
||
XLXSBJDMX_DYDJID =sor.DYDJID ");
|
||
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
//更新V_XSBJJSJGB_BJDHQCLCB 无清单
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,XLXSCLQD_JGBHSCB,XLXSCLQD_JGBWSCB");
|
||
SQL.Add(" from XLXSCLQD");
|
||
SQL.Add(" where exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_QDXLXHID=XLXSCLQD_XLXHID and V_XSBJJSJGB_QDXLGGID=XLXSCLQD_XLGGID ");
|
||
SQL.Add(" and V_XSBJJSJGB_QDXLBZID=XLXSCLQD_XLBZID and V_XSBJJSJGB_QDDYDJID=XLXSCLQD_DYDJID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" )");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLXHID=V_XSBJJSJGB_QDXLXHID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLGGID=V_XSBJJSJGB_QDXLGGID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLBZID=V_XSBJJSJGB_QDXLBZID ");
|
||
SQL.Add(" and sor.XLXSCLQD_DYDJID=V_XSBJJSJGB_QDDYDJID ");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_XLXSCLQD='N' ");
|
||
SQL.Add(" ) ");
|
||
|
||
if (bHSBZ)
|
||
SQL.Add(@" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBHSCB*V_XSBJJSJGB_LJJDZ ,
|
||
V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
else
|
||
SQL.Add(@" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBWSCB*V_XSBJJSJGB_LJJDZ ,
|
||
V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pCLQDJLDW").Value = sBJU003;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
}
|
||
else if (XLBJDUtils.GetCPLJGS() == "4")
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,XLXSCLQD_JGBHSCB,XLXSCLQD_JGBWSCB");
|
||
SQL.Add(" from XLXSCLQD");
|
||
SQL.Add(" where exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_QDXLXHID=XLXSCLQD_XLXHID and V_XSBJJSJGB_QDXLGGID=XLXSCLQD_XLGGID ");
|
||
SQL.Add(" and V_XSBJJSJGB_QDXLBZID=XLXSCLQD_XLBZID and V_XSBJJSJGB_QDDYDJID=XLXSCLQD_DYDJID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" )");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLXHID=V_XSBJJSJGB_QDXLXHID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLGGID=V_XSBJJSJGB_QDXLGGID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLBZID=V_XSBJJSJGB_QDXLBZID ");
|
||
SQL.Add(" and sor.XLXSCLQD_DYDJID=V_XSBJJSJGB_QDDYDJID ");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_XLXSCLQD='N' ");
|
||
SQL.Add(" ) ");
|
||
|
||
if (bHSBZ)
|
||
SQL.Add(@" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBHSCB*V_XSBJJSJGB_CLCBYSJDZ ,
|
||
V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
else
|
||
SQL.Add(@" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBWSCB*V_XSBJJSJGB_CLCBYSJDZ ,
|
||
V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
|
||
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pCLQDJLDW").Value = sBJU003;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
bSameJLDW = false;
|
||
}
|
||
else
|
||
{
|
||
//重新计算XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB
|
||
XLJGB_CLJGTZList.UpdateCLCB(dberp, SQL, sJGBID, "", "", iXSWS, sJSBLFS, sWHRID, sWHR, 0, sJGBIDS,
|
||
"", "", 0.0, 0.0, sBJDID, startBJDXH, sBJDXHList, sBJU003);
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,XLXSCLQD_JGBHSCB,XLXSCLQD_JGBWSCB");
|
||
SQL.Add(" from XLXSCLQD");
|
||
SQL.Add(" where exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID=XLXSCLQD_XLXHID and V_XSBJJSJGB_XLGGID=XLXSCLQD_XLGGID ");
|
||
SQL.Add(" and V_XSBJJSJGB_XLBZID=XLXSCLQD_XLBZID and V_XSBJJSJGB_DYDJID=XLXSCLQD_DYDJID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" )");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLGGID=V_XSBJJSJGB_XLGGID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLBZID=V_XSBJJSJGB_XLBZID ");
|
||
SQL.Add(" and sor.XLXSCLQD_DYDJID=V_XSBJJSJGB_DYDJID ");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" ) ");
|
||
if (bHSBZ)
|
||
SQL.Add(" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBHSCB,V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
else
|
||
SQL.Add(" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBWSCB,V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pCLQDJLDW").Value = sBJU003;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
bSameJLDW = false;
|
||
}
|
||
|
||
}
|
||
}
|
||
else//表价实时计算价格表
|
||
{
|
||
//重新计算XLXSCLQD_JGBHSCB、XLXSCLQD_JGBWSCB
|
||
//这里不需要保留小数位数,统一在最后保留小数位数
|
||
XLJGB_CLJGTZList.UpdateCLCB(dberp, SQL, sJGBID, "", "", 5, sJSBLFS, sWHRID, sWHR, 0, sJGBIDS,
|
||
"", "", 0.0, 0.0, sBJDID, startBJDXH, sBJDXHList, sBJU003);
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,XLXSCLQD_JGBHSCB,XLXSCLQD_JGBWSCB");
|
||
SQL.Add(" from XLXSCLQD");
|
||
SQL.Add(" where exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_XLXHID=XLXSCLQD_XLXHID and V_XSBJJSJGB_XLGGID=XLXSCLQD_XLGGID ");
|
||
SQL.Add(" and V_XSBJJSJGB_XLBZID=XLXSCLQD_XLBZID and V_XSBJJSJGB_DYDJID=XLXSCLQD_DYDJID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" )");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLGGID=V_XSBJJSJGB_XLGGID ");
|
||
SQL.Add(" and sor.XLXSCLQD_XLBZID=V_XSBJJSJGB_XLBZID ");
|
||
SQL.Add(" and sor.XLXSCLQD_DYDJID=V_XSBJJSJGB_DYDJID ");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" ) ");
|
||
if (bHSBZ)
|
||
{
|
||
SQL.Add(" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBHSCB,V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_CLCB=XLXSCLQD_JGBHSCB,V_XSBJJSJGB_JGBJJ=XLXSCLQD_JGBHSCB,V_XSBJJSJGB_JGBBJ=XLXSCLQD_JGBHSCB,V_XSBJJSJGB_JGBJLDW=:pCLQDJLDW");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" when matched then update set V_XSBJJSJGB_BJDHQCLCB=XLXSCLQD_JGBWSCB,V_XSBJJSJGB_CLQDJLDW=:pCLQDJLDW,");
|
||
SQL.Add(" V_XSBJJSJGB_CLCB=XLXSCLQD_JGBWSCB,V_XSBJJSJGB_JGBJJ=XLXSCLQD_JGBWSCB,V_XSBJJSJGB_JGBBJ=XLXSCLQD_JGBWSCB,V_XSBJJSJGB_JGBJLDW=:pCLQDJLDW");
|
||
}
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pCLQDJLDW").Value = sBJU003;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
bSameJLDW = true;
|
||
|
||
//依据表价调价政策,计算V_XSBJJSJGB_JGBBJ
|
||
DataSet dsJGBYZ = new DataSet();
|
||
XLBJDUtils.GetdsJGBYZ_JGE(sJGBID, ref dsJGBYZ);
|
||
if (dsJGBYZ.Tables[0].Rows.Count > 0 && sJGBTJYSS.Equals("1"))
|
||
{
|
||
//统一在最后保留小数位数
|
||
CalcUpdateJGBBJ_JGE(dberp, SQL, dsJGBYZ, VnewID, sBJDID, sMXBH, sJGBID, 5, sJSBLFS, sWHRID, sWHR, "");
|
||
|
||
sJGEJJYZList = "";
|
||
for (int i = 0; i < dsJGBYZ.Tables[0].Rows.Count; i++)
|
||
{
|
||
if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim().Equals("JJ"))
|
||
{
|
||
sJGEJJYZList += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
|
||
}
|
||
}
|
||
sJGEJJYZList = sJGEJJYZList.TrimEnd(',');
|
||
}
|
||
else
|
||
{
|
||
AddXLXSBJDJJYZ(dberp, SQL, VnewID, sBJDID, sMXBH, sJGBID, sJGBIDS, "", "", "", "", "", "", "", "", "", "");
|
||
}
|
||
}
|
||
|
||
string sTDDWList = "";
|
||
if (!bSameJLDW)//V_XSBJJSJGB_CLQDJLDW与V_XSBJJSJGB_JLDW可能不一致,才要单独处理XLXSBJDMX_BJDHQCLCB
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into V_XSBJJSJGB tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDXH as BJDXH,V_XSBJJSJGB_BJDHQCLCB as BJDHQCLCB,V_XSBJJSJGB_JGBJJ as JGBJJ,V_XSBJJSJGB_JGBBJ as JGBBJ,");
|
||
SQL.Add(" (");
|
||
SQL.Add(" case when upper(V_XSBJJSJGB_CLQDJLDW) in ('KM', '千米') and V_XSBJJSJGB_JGBJLDW in ('M', '米') then 0.001");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('M', '米') and V_XSBJJSJGB_JGBJLDW in ('Km', '千米') then 1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('M', '米') and V_XSBJJSJGB_JGBJLDW in ('M', '米') then 1.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KM', '千米') and V_XSBJJSJGB_JGBJLDW in ('Km', '千米') then 1.0");
|
||
sTDDWList = "(";
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KM', '千米') and V_XSBJJSJGB_JGBJLDW='{0}' then 0.001*{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('M', '米') and V_XSBJJSJGB_JGBJLDW='{0}' then {1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) = '{0}' and V_XSBJJSJGB_JGBJLDW in ('Km', '千米') then 1000.0/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) = '{0}' and V_XSBJJSJGB_JGBJLDW in ('M', '米') then 1.0/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
sTDDWList += "'" + sKey + "',";
|
||
}
|
||
sTDDWList = sTDDWList.TrimEnd(',');
|
||
sTDDWList += ")";
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in " + sTDDWList + " and V_XSBJJSJGB_JGBJLDW in " + sTDDWList + " then 1.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('T', '吨') and V_XSBJJSJGB_JGBJLDW in ('Kg', '千克', '公斤') then 0.001");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW in ('T', '吨') then 1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW in ('Kg', '千克', '公斤') then 1.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('T', '吨') and V_XSBJJSJGB_JGBJLDW in ('T', '吨') then 1.0");
|
||
if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米"))
|
||
{
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KM', '千米') and V_XSBJJSJGB_JGBJLDW in ('Kg', '千克', '公斤') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else 1.0/V_XSBJJSJGB_CLZL end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('M', '米') and V_XSBJJSJGB_JGBJLDW in ('Kg', '千克', '公斤') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)*1000.0 end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KM', '千米') and V_XSBJJSJGB_JGBJLDW in ('T', '吨') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)*1000.0 end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('M', '米') and V_XSBJJSJGB_JGBJLDW in ('T', '吨') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)* 1000.0*1000.0 end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('T', '吨') and V_XSBJJSJGB_JGBJLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL/1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW in ('M', '米') then V_XSBJJSJGB_CLZL/1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('T', '吨') and V_XSBJJSJGB_JGBJLDW in ('M', '米') then V_XSBJJSJGB_CLZL/1000.0/1000.0");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW='{0}' then {1}*V_XSBJJSJGB_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('T', '吨') and V_XSBJJSJGB_JGBJLDW='{0}' then {1}*V_XSBJJSJGB_CLZL/1000.0/1000.0 ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) = '{0}' and V_XSBJJSJGB_JGBJLDW in ('KG', '千克', '公斤') then 1000.0/V_XSBJJSJGB_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) = '{0}' and V_XSBJJSJGB_JGBJLDW in ('T', '吨') then 1000.0*1000.0/V_XSBJJSJGB_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M"))
|
||
{
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KM', '千米') and V_XSBJJSJGB_JGBJLDW in ('Kg', '千克', '公斤') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)*(1/1000.0) end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('M', '米') and V_XSBJJSJGB_JGBJLDW in ('Kg', '千克', '公斤') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else 1.0/V_XSBJJSJGB_CLZL end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL*1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KM', '千米') and V_XSBJJSJGB_JGBJLDW in ('T', '吨') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL) end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('M', '米') and V_XSBJJSJGB_JGBJLDW in ('T', '吨') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)*1000.0 end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL*1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('T', '吨') and V_XSBJJSJGB_JGBJLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW in ('M', '米') then V_XSBJJSJGB_CLZL");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('T', '吨') and V_XSBJJSJGB_JGBJLDW in ('M', '米') then V_XSBJJSJGB_CLZL/1000.0");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('KG', '千克', '公斤') and V_XSBJJSJGB_JGBJLDW='{0}' then {1}*V_XSBJJSJGB_CLZL ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) in ('T', '吨') and V_XSBJJSJGB_JGBJLDW='{0}' then {1}*V_XSBJJSJGB_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) = '{0}' and V_XSBJJSJGB_JGBJLDW in ('KG', '千克', '公斤') then 1/V_XSBJJSJGB_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_CLQDJLDW) = '{0}' and V_XSBJJSJGB_JGBJLDW in ('T', '吨') then 1000.0/V_XSBJJSJGB_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
SQL.Add(" when upper(V_XSBJJSJGB_CLQDJLDW)=upper(V_XSBJJSJGB_JGBJLDW) and upper(V_XSBJJSJGB_CLQDJLDW) not in ('M','KM','米','千米','KG','T','千克','公斤','吨') ");
|
||
SQL.Add(" and V_XSBJJSJGB_JGBJLDW not in ('M','Km','米','千米','Kg','T','千克','公斤','吨') ");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format("and V_XSBJJSJGB_JGBJLDW<>'{0}' ", sKey));
|
||
}
|
||
SQL.Add(" then 1.0 else 0.0");
|
||
SQL.Add(" end ");
|
||
SQL.Add(" ) as HSBL,V_XSBJJSJGB_CLQDJLDW");
|
||
SQL.Add(" from V_XSBJJSJGB");
|
||
//SQL.Add(" left join XLXSBJDMX on XLXSBJDMX_BJDID=V_XSBJJSJGB_BJDID and XLXSBJDMX_XH=V_XSBJJSJGB_BJDXH");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_BJDXH=BJDXH and V_XSBJJSJGB_ID=:pID )");
|
||
SQL.Add(" when matched then update set V_XSBJJSJGB_BJDHQCLCB= BJDHQCLCB*HSBL ");
|
||
if (ABJDHQJSBJ == "Y" && sJGBJJLY == "A")
|
||
{
|
||
SQL.Add(",V_XSBJJSJGB_JGBJJ= JGBJJ*HSBL ");
|
||
SQL.Add(",V_XSBJJSJGB_JGBBJ= JGBBJ*HSBL ");
|
||
}
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDXH as BJDXH,V_XSBJJSJGB_BJDHQCLCB as BJDHQCLCB,V_XSBJJSJGB_CLCB as CLCB,V_XSBJJSJGB_JGBJJ as JGBJJ,V_XSBJJSJGB_JGBBJ as JGBBJ,V_XSBJJSJGB_WGCPBZ as WGCPBZ,V_XSBJJSJGB_JGFBZ as JGFBZ,");
|
||
SQL.Add(" (");
|
||
SQL.Add(" case when upper(V_XSBJJSJGB_JGBJLDW) in ('KM', '千米') and XLXSBJDMX_JLDW in ('M', '米') then 0.001");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('M', '米') and XLXSBJDMX_JLDW in ('Km', '千米') then 1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('M', '米') and XLXSBJDMX_JLDW in ('M', '米') then 1.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KM', '千米') and XLXSBJDMX_JLDW in ('Km', '千米') then 1.0");
|
||
sTDDWList = "(";
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KM', '千米') and XLXSBJDMX_JLDW='{0}' then 0.001*{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) in ('M', '米') and XLXSBJDMX_JLDW='{0}' then {1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) = '{0}' and XLXSBJDMX_JLDW in ('Km', '千米') then 1000.0/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) = '{0}' and XLXSBJDMX_JLDW in ('M', '米') then 1.0/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
sTDDWList += "'" + sKey + "',";
|
||
}
|
||
sTDDWList = sTDDWList.TrimEnd(',');
|
||
sTDDWList += ")";
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in " + sTDDWList + " and XLXSBJDMX_JLDW in " + sTDDWList + " then 1.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('T', '吨') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then 0.001");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('T', '吨') then 1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then 1.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('T', '吨') and XLXSBJDMX_JLDW in ('T', '吨') then 1.0");
|
||
if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米"))
|
||
{
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KM', '千米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else 1.0/V_XSBJJSJGB_CLZL end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('M', '米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)*1000.0 end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KM', '千米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)*1000.0 end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('M', '米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)* 1000.0*1000.0 end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('T', '吨') and XLXSBJDMX_JLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL/1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('M', '米') then V_XSBJJSJGB_CLZL/1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('T', '吨') and XLXSBJDMX_JLDW in ('M', '米') then V_XSBJJSJGB_CLZL/1000.0/1000.0");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW='{0}' then {1}*V_XSBJJSJGB_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) in ('T', '吨') and XLXSBJDMX_JLDW='{0}' then {1}*V_XSBJJSJGB_CLZL/1000.0/1000.0 ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) = '{0}' and XLXSBJDMX_JLDW in ('KG', '千克', '公斤') then 1000.0/V_XSBJJSJGB_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) = '{0}' and XLXSBJDMX_JLDW in ('T', '吨') then 1000.0*1000.0/V_XSBJJSJGB_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M"))
|
||
{
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KM', '千米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)*(1/1000.0) end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('M', '米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else 1.0/V_XSBJJSJGB_CLZL end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL*1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KM', '千米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL) end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('M', '米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when V_XSBJJSJGB_CLZL = 0 then 0 else (1.0/V_XSBJJSJGB_CLZL)*1000.0 end)");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL*1000.0");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('T', '吨') and XLXSBJDMX_JLDW in ('Km', '千米') then V_XSBJJSJGB_CLZL");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('M', '米') then V_XSBJJSJGB_CLZL");
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW) in ('T', '吨') and XLXSBJDMX_JLDW in ('M', '米') then V_XSBJJSJGB_CLZL/1000.0");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW='{0}' then {1}*V_XSBJJSJGB_CLZL ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) in ('T', '吨') and XLXSBJDMX_JLDW='{0}' then {1}*V_XSBJJSJGB_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) = '{0}' and XLXSBJDMX_JLDW in ('KG', '千克', '公斤') then 1/V_XSBJJSJGB_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
SQL.Add(string.Format(" when upper(V_XSBJJSJGB_JGBJLDW) = '{0}' and XLXSBJDMX_JLDW in ('T', '吨') then 1000.0/V_XSBJJSJGB_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
SQL.Add(" when upper(V_XSBJJSJGB_JGBJLDW)=upper(XLXSBJDMX_JLDW) and upper(V_XSBJJSJGB_JGBJLDW) not in ('M','KM','米','千米','KG','T','千克','公斤','吨') ");
|
||
SQL.Add(" and XLXSBJDMX_JLDW not in ('M','Km','米','千米','Kg','T','千克','公斤','吨') ");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format("and XLXSBJDMX_JLDW<>'{0}' ", sKey));
|
||
}
|
||
SQL.Add(" then 1.0 else 0.0");
|
||
SQL.Add(" end ");
|
||
SQL.Add(" ) as HSBL,V_XSBJJSJGB_JGBJLDW ");
|
||
SQL.Add(" from V_XSBJJSJGB");
|
||
SQL.Add(" left join XLXSBJDMX on XLXSBJDMX_BJDID=V_XSBJJSJGB_BJDID and XLXSBJDMX_XH=V_XSBJJSJGB_BJDXH");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=BJDXH)");
|
||
if (sBJU018.Equals("Y"))//若BJU018参数值为Y,且为价格表单位为长度单位,则先换算倍率后再保留小数位数。
|
||
{
|
||
SQL.Add(" when matched then update set XLXSBJDMX_CLCB= case when upper(V_XSBJJSJGB_JGBJLDW) in ('M','米','KM','千米','卷') then RoundFix(CLCB*HSBL," + iXSWS.ToString() + ") else RoundFix(CLCB," + iXSWS.ToString() + ")*HSBL end,");
|
||
SQL.Add(" XLXSBJDMX_JGBJJ= case when upper(V_XSBJJSJGB_JGBJLDW) in ('M','米','KM','千米','卷') then RoundFix(JGBJJ*HSBL," + iXSWS.ToString() + ") else RoundFix(JGBJJ," + iXSWS.ToString() + ")*HSBL end ,");
|
||
SQL.Add(" XLXSBJDMX_JGBBJ= case when upper(V_XSBJJSJGB_JGBJLDW) in ('M','米','KM','千米','卷') then RoundFix(JGBBJ*HSBL," + iXSWS.ToString() + ") else RoundFix(JGBBJ," + iXSWS.ToString() + ")*HSBL end,");
|
||
SQL.Add(" XLXSBJDMX_JGBBJTZ = 'N', XLXSBJDMX_JGBBJGXSJ=:pJGBBJGXSJ,");
|
||
SQL.Add(" XLXSBJDMX_BJLY='JGBBJ',");
|
||
if (!sMXBH.Equals("JGE"))//非表价实时计算价格表
|
||
{
|
||
SQL.Add(" XLXSBJDMX_BJDHQCLCB= case when isnull(XLXSBJDMX_BJDHQCLCBTZ,'N') = 'Y' THEN XLXSBJDMX_BJDHQCLCB ELSE case when upper(V_XSBJJSJGB_JGBJLDW) in ('M','米','KM','千米') then RoundFix(BJDHQCLCB*HSBL," + iXSWS.ToString() + ") else RoundFix(BJDHQCLCB," + iXSWS.ToString() + ")*HSBL end END,");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" XLXSBJDMX_BJDHQCLCB= case when upper(V_XSBJJSJGB_JGBJLDW) in ('M','米','KM','千米','卷') then RoundFix(BJDHQCLCB*HSBL," + iXSWS.ToString() + ") else RoundFix(BJDHQCLCB," + iXSWS.ToString() + ")*HSBL end,");
|
||
SQL.Add(" XLXSBJDMX_BJDHQCLCBTZ = 'N',");
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" when matched then update set XLXSBJDMX_CLCB=RoundFix(CLCB," + iXSWS.ToString() + ")*HSBL,");
|
||
SQL.Add(" XLXSBJDMX_JGBJJ=RoundFix(JGBJJ," + iXSWS.ToString() + ")*HSBL,");
|
||
SQL.Add(" XLXSBJDMX_JGBBJ=RoundFix(JGBBJ," + iXSWS.ToString() + ")*HSBL,");
|
||
SQL.Add(" XLXSBJDMX_JGBBJTZ = 'N',XLXSBJDMX_JGBBJGXSJ=:pJGBBJGXSJ,");
|
||
SQL.Add(" XLXSBJDMX_BJLY='JGBBJ',");
|
||
if (!sMXBH.Equals("JGE"))//非表价实时计算价格表
|
||
{
|
||
SQL.Add(" XLXSBJDMX_BJDHQCLCB=case when isnull(XLXSBJDMX_BJDHQCLCBTZ,'N') = 'Y' THEN XLXSBJDMX_BJDHQCLCB ELSE RoundFix(BJDHQCLCB," + iXSWS.ToString() + ")*HSBL END,");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" XLXSBJDMX_BJDHQCLCB=RoundFix(BJDHQCLCB," + iXSWS.ToString() + ")*HSBL,");
|
||
SQL.Add(" XLXSBJDMX_BJDHQCLCBTZ = 'N',");
|
||
}
|
||
|
||
}
|
||
SQL.Add(" XLXSBJDMX_WGCPBZ=WGCPBZ,");
|
||
SQL.Add(" XLXSBJDMX_JGFBZ=JGFBZ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pJGBBJGXSJ").Value = MISproUtils.GetServerTime();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
if (!sJGEJJYZList.Trim().Equals(""))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDXH as BJDXH,");
|
||
SQL.Add(" (case when XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when V_XSBJJSJGB_CLZL=0 then 0 else 1.0/V_XSBJJSJGB_CLZL end)");
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('T', '吨') then (case when V_XSBJJSJGB_CLZL=0 then 0 else (1.0/V_XSBJJSJGB_CLZL)*1000.0 end)");
|
||
if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米"))
|
||
{
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('M', '米') then 0.001");
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('Km', '千米') then 1.0");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then 0.001*{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M"))
|
||
{
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('M', '米') then 1.0");
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('Km', '千米') then 1000.0");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then {1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
SQL.Add(" else 0.0 ");
|
||
SQL.Add(" end ");
|
||
SQL.Add(" ) as HSBL");
|
||
SQL.Add(" from V_XSBJJSJGB");
|
||
SQL.Add(" left join XLXSBJDMX on XLXSBJDMX_BJDID=V_XSBJJSJGB_BJDID and XLXSBJDMX_XH=V_XSBJJSJGB_BJDXH");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH)");
|
||
SQL.Add(" when matched then update set ");
|
||
string[] sTJYZ = sJGEJJYZList.Split(',');
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=XLXSBJDJJYZ_YZZ{0}*HSBL", sTJYZ[0].Trim().Replace("JZ", "")));
|
||
for (int i = 1; i < sTJYZ.Length; i++)
|
||
{
|
||
if (!sTJYZ[i].Trim().Equals(""))
|
||
{
|
||
SQL.Add(string.Format(",XLXSBJDJJYZ_YZZ{0}=XLXSBJDJJYZ_YZZ{0}*HSBL", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
}
|
||
}
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
if (Act == CalcAction.Insert || Act == CalcAction.Copy)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDXH as BJDXH,");
|
||
SQL.Add(" (case when XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then 1.0");
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('T', '吨') then 1000.0");
|
||
if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米"))
|
||
{
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('M', '米') then RoundFix(V_XSBJJSJGB_CLZL,6)*0.001");
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('Km', '千米') then RoundFix(V_XSBJJSJGB_CLZL,6)");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then RoundFix(V_XSBJJSJGB_CLZL,6)*0.001*{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M"))
|
||
{
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('Km', '千米') then RoundFix(V_XSBJJSJGB_CLZL,6)*1000.0");
|
||
SQL.Add(" when XLXSBJDMX_JLDW in ('M', '米') then RoundFix(V_XSBJJSJGB_CLZL,6)");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then RoundFix(V_XSBJJSJGB_CLZL,6)*{1} ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
}
|
||
SQL.Add(" else 0.0 ");
|
||
SQL.Add(" end ");
|
||
SQL.Add(" ) as DWCLZL");
|
||
SQL.Add(" from V_XSBJJSJGB");
|
||
SQL.Add(" left join XLXSBJDMX on XLXSBJDMX_BJDID=V_XSBJJSJGB_BJDID and XLXSBJDMX_XH=V_XSBJJSJGB_BJDXH");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=BJDXH)");
|
||
SQL.Add(" when matched then update set XLXSBJDMX_CLZL=XLXSBJDMX_BJSL*DWCLZL");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
CalBJDTLZL(dberp, SQL, sBJDID);
|
||
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
sErrMsg = ex.Message;
|
||
}
|
||
finally
|
||
{
|
||
//删除计算临时表
|
||
SQL.Clear();
|
||
SQL.Add("delete from V_XSBJJSJGB ");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
}
|
||
|
||
public static void CalcUpdateJGBBJ_JGE(TDatabase dberp, TSQL SQL, DataSet dsJGBYZ, int VnewID, string sBJDID, string sMXBH, string sJGBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, string sJGBIDS)
|
||
{
|
||
//据材料成本及调整因子的值计算无税产品单价、含税产品单价
|
||
//SQL.Clear();
|
||
//SQL.Add("select XLXSJGBYZ_YZID,XLXSTZYZ_JJFS,XLXSTZYZ_TJYZID,XLXSTZYZ_TJYS");
|
||
//SQL.Add(" from XLXSJGBYZ");
|
||
//SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=XLXSJGBYZ_YZID");
|
||
//SQL.Add(" where XLXSJGBYZ_JGBID=:pJGBID");
|
||
//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)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSBJD_BJFLID ");
|
||
SQL.Add(" from XLXSBJD ");
|
||
SQL.Add(" where XLXSBJD_BJDID=:pBJDID");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet dsBJD = dberp.OpenDataSet(SQL);
|
||
string sBJFLID = "";
|
||
if (dsBJD.Tables[0].Rows.Count > 0)
|
||
{
|
||
sBJFLID = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJFLID"].ToString().Trim();
|
||
}
|
||
string sJSGS = XLBJDUtils.GetJGBJSGS(sJGBID);
|
||
|
||
string sJGBJJLY = XLBJDUtils.GetXLXSJGBXXByJGBID(sJGBID).XLXSJGB_JJLY;
|
||
string ABJDHQJSBJ = XLBJDUtils.GetBJFLXX(sBJFLID).XLXSBJFL_ABJDHQJSBJ;
|
||
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 = "";//记录调价因素为'8'的因子id
|
||
string sTJYSListA = "";//记录调价因素为'8'的因子id
|
||
string sTJYSListB = "";//记录调价因素为'8'的因子id
|
||
string sTJYSListC = "";//记录调价因素为'8'的因子id
|
||
for (int i = 0; i < dsJGBYZ.Tables[0].Rows.Count; i++)
|
||
{
|
||
if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals(""))
|
||
{
|
||
sTJYSList_ += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
|
||
}
|
||
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("1"))
|
||
{
|
||
sTJYSList1 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
|
||
}
|
||
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("3"))
|
||
{
|
||
sTJYSList3 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
|
||
}
|
||
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("4"))
|
||
{
|
||
sTJYSList4 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
|
||
}
|
||
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("5"))
|
||
{
|
||
sTJYSList5 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
|
||
}
|
||
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("8"))
|
||
{
|
||
sTJYSList8 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
|
||
}
|
||
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("9"))
|
||
{
|
||
sTJYSList8 += 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(',');
|
||
if (ABJDHQJSBJ == "Y" && sJGBJJLY == "A" && sMXBH == "JGB")
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("delete from XLXSBJDJJYZ where XLXSBJDJJYZ_BJDID=:pBJDID ");
|
||
SQL.Add(" and exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_BJDXH=XLXSBJDJJYZ_XH)");//这里不用限制V_XSBJJSJGB_WGCPBZ<>'Y'
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
string sYZZFields_1 = "";
|
||
for (int i = 1; i <= 20; i++)
|
||
{
|
||
sYZZFields_1 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : "");
|
||
}
|
||
SQL.Add("insert into XLXSBJDJJYZ(XLXSBJDJJYZ_BJDID, XLXSBJDJJYZ_XH, " + sYZZFields_1 + ",XLXSBJDJJYZ_YSJDZ) ");
|
||
string sYZZFields_2 = "";
|
||
for (int i = 1; i <= 20; i++)
|
||
{
|
||
sYZZFields_2 += "isnull(XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + ",0)" + (i < 20 ? "," : "");
|
||
}
|
||
SQL.Add("select V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH," + sYZZFields_2 + ",V_XSBJJSJGB_JGBYSJDZ ");
|
||
SQL.Add(" from V_XSBJJSJGB");
|
||
SQL.Add(" left join XLXSJGBYZZ0 on XLXSJGBYZZ0_JGBID=:pJGBID and XLXSJGBYZZ0_XH=V_XSBJJSJGB_SYJGBXH");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_JGBMXCPBZ = 'Y' ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pJGBID").Value = sJGBID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
else
|
||
AddXLXSBJDJJYZ(dberp, SQL, VnewID, sBJDID, sMXBH, sJGBID, sJGBIDS, sTJYSList_, sTJYSList1, sTJYSList3, sTJYSList4, sTJYSList5, sTJYSList8, sTJYSList9, sTJYSListA, sTJYSListB, sTJYSListC);
|
||
|
||
string sJDSQL = "1";
|
||
string sKDSQL = "1";
|
||
string sJJSQL = "0";
|
||
string sSXSQL = "1";
|
||
string sTJYZID = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim();
|
||
string sJJFS = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim();
|
||
for (int i = 1; i < dsJGBYZ.Tables[0].Rows.Count; i++)
|
||
{
|
||
if (!sTJYZID.Equals(dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim()))
|
||
{
|
||
if (sJJFS.Equals("JD"))
|
||
sJDSQL = sJDSQL + "*(1+JDYZZ_" + sTJYZID + "/100.0)";
|
||
else if (sJJFS.Equals("KD"))
|
||
sKDSQL = sKDSQL + "/(1-KDYZZ_" + sTJYZID + "/100.0)";
|
||
else if (sJJFS.Equals("JJ"))
|
||
sJJSQL += "+JJYZZ_" + sTJYZID;
|
||
else if (sJJFS.Equals("SX"))
|
||
sSXSQL = sSXSQL + "*(case when SXYZZ_" + sTJYZID + ">=0 then 1/(1-SXYZZ_" + sTJYZID + "/100.0) else (1+SXYZZ_" + sTJYZID + "/100.0) end)";
|
||
|
||
sTJYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
|
||
sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
|
||
}
|
||
}
|
||
if (sJJFS.Equals("JD"))
|
||
sJDSQL = sJDSQL + "*(1+JDYZZ_" + sTJYZID + "/100.0)";
|
||
else if (sJJFS.Equals("KD"))
|
||
sKDSQL = sKDSQL + "/(1-KDYZZ_" + sTJYZID + "/100.0)";
|
||
else if (sJJFS.Equals("JJ"))
|
||
sJJSQL += "+JJYZZ_" + sTJYZID;
|
||
else if (sJJFS.Equals("SX"))
|
||
sSXSQL = sSXSQL + "*(case when SXYZZ_" + sTJYZID + ">=0 then 1/(1-SXYZZ_" + sTJYZID + "/100.0) else (1+SXYZZ_" + sTJYZID + "/100.0) end)";
|
||
|
||
SQL.Clear();
|
||
SQL.Add(" merge into V_XSBJJSJGB tar ");
|
||
SQL.Add(" using ( ");
|
||
string sYZZFields_3 = "";
|
||
for (int i = 1; i <= 20; i++)
|
||
{
|
||
sYZZFields_3 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : "");
|
||
}
|
||
SQL.Add("select BJDID,BJDXH," + sJDSQL + " as JDYZZ," + sKDSQL + " as KDYZZ," + sJJSQL + " as JJYZZ," + sSXSQL + " as SXYZZ," + sYZZFields_3 + " ");
|
||
SQL.Add(" from ");
|
||
SQL.Add("(");
|
||
string sYZZFields_4 = "";
|
||
for (int i = 1; i <= 20; i++)
|
||
{
|
||
sYZZFields_4 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : "");
|
||
}
|
||
SQL.Add(" select XLXSBJDJJYZ_BJDID as BJDID,XLXSBJDJJYZ_XH as BJDXH," + sYZZFields_4 + ",");
|
||
SQL.Add(" (");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}", dsJGBYZ.Tables[0].Rows[0]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", "")));
|
||
|
||
sTJYZID = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim();
|
||
sJJFS = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim();
|
||
for (int i = 1; i < dsJGBYZ.Tables[0].Rows.Count; i++)
|
||
{
|
||
if (sTJYZID.Equals(dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim()))
|
||
{
|
||
SQL.Add(string.Format("+XLXSBJDJJYZ_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", "")));
|
||
}
|
||
else
|
||
{
|
||
if (sJJFS.Equals("JD"))
|
||
SQL.Add(") as " + "JDYZZ_" + sTJYZID);
|
||
else if (sJJFS.Equals("KD"))
|
||
SQL.Add(") as " + "KDYZZ_" + sTJYZID);
|
||
else if (sJJFS.Equals("JJ"))
|
||
SQL.Add(") as " + "JJYZZ_" + sTJYZID);
|
||
else if (sJJFS.Equals("SX"))
|
||
SQL.Add(") as " + "SXYZZ_" + sTJYZID);
|
||
|
||
sTJYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
|
||
sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
|
||
SQL.Add(",(");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", "")));
|
||
}
|
||
}
|
||
if (sJJFS.Equals("JD"))
|
||
SQL.Add(") as " + "JDYZZ_" + sTJYZID);
|
||
else if (sJJFS.Equals("KD"))
|
||
SQL.Add(") as " + "KDYZZ_" + sTJYZID);
|
||
else if (sJJFS.Equals("JJ"))
|
||
SQL.Add(") as " + "JJYZZ_" + sTJYZID);
|
||
else if (sJJFS.Equals("SX"))
|
||
SQL.Add(") as " + "SXYZZ_" + sTJYZID);
|
||
|
||
SQL.Add(" from XLXSBJDJJYZ");
|
||
SQL.Add(" where XLXSBJDJJYZ_BJDID=:pBJDID ");
|
||
SQL.Add(" ) a");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=sor.BJDID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDXH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
if (ABJDHQJSBJ == "Y" && sJGBJJLY == "A" && sMXBH == "JGB")
|
||
{
|
||
if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一)
|
||
{
|
||
if (sJSGS.Equals(""))
|
||
{
|
||
//此处根据序号区分先加价还是先加点/扣点
|
||
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
|
||
{
|
||
//先加价
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end)*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
else
|
||
{
|
||
//先加点
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end)*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), Math.Pow(10.0, iXSWS)));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位
|
||
{
|
||
if (sJSGS.Equals(""))
|
||
{
|
||
//此处根据序号区分先加价还是先加点/扣点
|
||
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
|
||
{
|
||
//先加价
|
||
SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end),{0})/10)*10", iXSWS.ToString().Trim()));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
else
|
||
{
|
||
//先加点
|
||
SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end),{0})/10)*10", iXSWS.ToString().Trim()));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS.ToString().Trim()));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (sJSGS.Equals(""))
|
||
{
|
||
//此处根据序号区分先加价还是先加点/扣点
|
||
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
|
||
{
|
||
//先加价
|
||
SQL.Add("V_XSBJJSJGB_JGBBJ=(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end))");
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
else
|
||
{
|
||
//先加点
|
||
SQL.Add("V_XSBJJSJGB_JGBBJ=(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))," + iXSWS + ")*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end))");
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一)
|
||
{
|
||
if (sJSGS.Equals(""))
|
||
{
|
||
//此处根据序号区分先加价还是先加点/扣点
|
||
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
|
||
{
|
||
//先加价
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
else
|
||
{
|
||
//先加点
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), Math.Pow(10.0, iXSWS)));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位
|
||
{
|
||
if (sJSGS.Equals(""))
|
||
{
|
||
//此处根据序号区分先加价还是先加点/扣点
|
||
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
|
||
{
|
||
//先加价
|
||
SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),{0})/10)*10", iXSWS.ToString().Trim()));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
else
|
||
{
|
||
//先加点
|
||
SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)),{0})/10)*10", iXSWS.ToString().Trim()));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS.ToString().Trim()));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (sJSGS.Equals(""))
|
||
{
|
||
//此处根据序号区分先加价还是先加点/扣点
|
||
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
|
||
{
|
||
//先加价
|
||
SQL.Add("V_XSBJJSJGB_JGBBJ=RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")");
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
else
|
||
{
|
||
//先加点
|
||
SQL.Add("V_XSBJJSJGB_JGBBJ=RoundFix(abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")");
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS));
|
||
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
|
||
}
|
||
}
|
||
}
|
||
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
else
|
||
{
|
||
AddXLXSBJDJJYZ(dberp, SQL, VnewID, sBJDID, sMXBH, sJGBID, sJGBIDS, "", "", "", "", "", "", "", "", "", "");
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
//sTJYSList1:记录调价因素不为空的因子id
|
||
//sTJYSList_:记录调价因素为空的因子id
|
||
public static void AddXLXSBJDJJYZ(TDatabase dberp, TSQL SQL, int VnewID, string sBJDID, string sMXBH, string sJGBID, string sJGBIDS, string sTJYSList_, string sTJYSList1, string sTJYSList3, string sTJYSList4, string sTJYSList5, string sTJYSList8, string sTJYSList9, string sTJYSListA, string sTJYSListB, string sTJYSListC)
|
||
{
|
||
#region 依据V_XSBJJSJGB重构XLXSBJDJJYZ
|
||
SQL.Clear();
|
||
SQL.Add("delete from XLXSBJDJJYZ where XLXSBJDJJYZ_BJDID=:pBJDID ");
|
||
SQL.Add(" and exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_BJDXH=XLXSBJDJJYZ_XH)");//这里不用限制V_XSBJJSJGB_WGCPBZ<>'Y'
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
//价格表调价因素3,直接使用价格表调价因子值
|
||
if (!sJGBIDS.Equals(""))
|
||
{
|
||
|
||
SQL.Clear();
|
||
string sYZZFields_5 = "";
|
||
for (int i = 1; i <= 20; i++)
|
||
{
|
||
sYZZFields_5 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : "");
|
||
}
|
||
SQL.Add("insert into XLXSBJDJJYZ(XLXSBJDJJYZ_BJDID, XLXSBJDJJYZ_XH, " + sYZZFields_5 + ",XLXSBJDJJYZ_YSJDZ) ");
|
||
string sYZZFields_6 = "";
|
||
for (int i = 1; i <= 20; i++)
|
||
{
|
||
sYZZFields_6 += "isnull(XLXSJGBYZZ0_YZZ" + i.ToString().PadLeft(2, '0') + ",0)" + (i < 20 ? "," : "");
|
||
}
|
||
SQL.Add("select V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH," + sYZZFields_6 + ",V_XSBJJSJGB_JGBYSJDZ ");
|
||
SQL.Add(" from V_XSBJJSJGB");
|
||
SQL.Add(" left join XLXSJGBYZZ0 on XLXSJGBYZZ0_JGBID=:pJGBID3 and XLXSJGBYZZ0_XH=V_XSBJJSJGB_SYJGBXH");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_SYJGBID=:pJGBID1");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pJGBID3").Value = sJGBID;
|
||
SQL.ParamByName("pJGBID1").Value = sJGBIDS;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
sTJYSList_ = "";
|
||
sTJYSList1 = "";
|
||
sTJYSList3 = "";
|
||
sTJYSList4 = "";
|
||
sTJYSList5 = "";
|
||
sTJYSList8 = "";
|
||
}
|
||
else
|
||
{
|
||
//如果存在调价因素为空的因子
|
||
if (!sTJYSList_.Trim().Equals(""))
|
||
{
|
||
string[] sTJYZs = sTJYSList_.Split(',');
|
||
|
||
SQL.Clear();
|
||
SQL.Add("insert into XLXSBJDJJYZ(XLXSBJDJJYZ_BJDID,XLXSBJDJJYZ_XH");
|
||
for (int i = 0; i < sTJYZs.Length; i++)
|
||
{
|
||
SQL.Add(string.Format(",XLXSBJDJJYZ_YZZ{0}", sTJYZs[i].Trim().Replace("JZ", "")));
|
||
}
|
||
SQL.Add(") ");
|
||
SQL.Add("select V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH");
|
||
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 V_XSBJJSJGB,XLXSTZYZ,XLXSJGBYZZ ");
|
||
SQL.Add("where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
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(" group by V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
else
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("insert into XLXSBJDJJYZ(XLXSBJDJJYZ_BJDID,XLXSBJDJJYZ_XH) ");
|
||
SQL.Add("select V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH");
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add("where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 覆盖全产品的价格表因子,先置为-9999
|
||
|
||
Dictionary<string, string> dicJGBFGQCPYZ = XLBJDInfo.GetJGBFGQCPYZ(sJGBID);//覆盖全产品的价格表因子
|
||
if (dicJGBFGQCPYZ.Count > 0)
|
||
{
|
||
List<string> sYZList = new List<string>();
|
||
foreach (string sKey in dicJGBFGQCPYZ.Keys)
|
||
{
|
||
if (sTJYSList1.Contains(sKey) || sTJYSList3.Contains(sKey) || sTJYSList4.Contains(sKey) || sTJYSList5.Contains(sKey) || sTJYSList8.Contains(sKey))
|
||
{
|
||
sYZList.Add(sKey);
|
||
}
|
||
}
|
||
if (sYZList.Count > 0)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(" update XLXSBJDJJYZ set ");
|
||
foreach (string sYZ in sYZList)
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=-9999,", sYZ.Replace("JZ", "")));
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID ");
|
||
SQL.Add(" where XLXSBJDJJYZ_BJDID=:pBJDID ");
|
||
SQL.Add(" and exists(select 1 from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' and V_XSBJJSJGB_BJDID=XLXSBJDJJYZ_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDJJYZ_XH ) ");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
#endregion
|
||
|
||
#region 自动插入TJYS=1的调价因子值--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());
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",XLXSJGBYZZ1_YZZ as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB,XLXSJGBYZZ1 ");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and XLXSJGBYZZ1_JGBID=:pTJJGBID and XLXSJGBYZZ1_YZID=:pYZID ");
|
||
SQL.Add(" and XLXSJGBYZZ1_XLXHID=V_XSBJJSJGB_XLXHID and XLXSJGBYZZ1_XLGGID=V_XSBJJSJGB_XLGGID and XLXSJGBYZZ1_XLBZID=V_XSBJJSJGB_XLBZID and XLXSJGBYZZ1_DYDJID=V_XSBJJSJGB_DYDJID ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pTJJGBID").Value = yzxx.XLXSTZYZ_JGBID.Trim();
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 自动插入TJYS=3的调价因子值--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(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ( ");
|
||
SQL.Add("select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH ");
|
||
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add("left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_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 V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and isnull(YZID,' ')<>' '");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ( ");
|
||
SQL.Add("select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH ");
|
||
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add("left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add("left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') 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 V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and isnull(YZID,' ')<>' ' ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ( ");
|
||
SQL.Add("select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH ");
|
||
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add("left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_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=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add("where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and isnull(YZID,' ')<>' ' ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ( ");
|
||
SQL.Add("select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH ");
|
||
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add("left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add("left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') 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=V_XSBJJSJGB_XLXHID");
|
||
SQL.Add(" and ((convert(char,a.ZXJM)=XLGGB_DTJMZHID) or (XLGGB_DTJMZHID like (rtrim(convert(char,a.ZXJM))||'/%'))) ");
|
||
SQL.Add("where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and isnull(YZID,' ')<>' ' ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 自动插入TJYS=4的调价因子值--4|型号&电压等级&芯线结构&主芯截面范围
|
||
if (!sTJYSList4.Trim().Equals(""))
|
||
{
|
||
string[] sTJYZ = sTJYSList4.Split(',');
|
||
for (int i = 0; i < sTJYZ.Length; i++)
|
||
{
|
||
if (!sTJYZ[i].Trim().Equals(""))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add(" left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') 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 exists(select 1 from XLXSTZYZ where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID and XLXSTZYZ_TJYS='4' ");
|
||
SQL.Add(" and XLXSTZYZ_JGBID=XLXSJGBYZZ4_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ4_YZID )");
|
||
//1、优先级由低到高依次更新:电压、芯线结构为空
|
||
SQL.Add(" and XLXSJGBYZZ4_DYDJID=' '");
|
||
SQL.Add(" and XLXSJGBYZZ4_XXJGID=' ' ");
|
||
SQL.Add(" ) a ");
|
||
SQL.Add(" on XLXSJGBYZZ4_XLXHID=V_XSBJJSJGB_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 V_XSBJJSJGB_ID=:pID and XLXSJGBYZZ4_XLXHID<>' '");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH )");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add(" left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') 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 exists(select 1 from XLXSTZYZ where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID and XLXSTZYZ_TJYS='4' ");
|
||
SQL.Add(" and XLXSTZYZ_JGBID=XLXSJGBYZZ4_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ4_YZID )");
|
||
//2、优先级由低到高依次更新:电压为空、芯线结构不为空
|
||
SQL.Add(" and XLXSJGBYZZ4_DYDJID=' '");
|
||
SQL.Add(" ) a ");
|
||
SQL.Add(" on XLXSJGBYZZ4_XLXHID=V_XSBJJSJGB_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 V_XSBJJSJGB_ID=:pID and XLXSJGBYZZ4_XLXHID<>' ' ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH )");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add(" left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') 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 exists(select 1 from XLXSTZYZ where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID and XLXSTZYZ_TJYS='4' ");
|
||
SQL.Add(" and XLXSTZYZ_JGBID=XLXSJGBYZZ4_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ4_YZID )");
|
||
//3、优先级由低到高依次更新:电压不为空、芯线结构为空
|
||
SQL.Add(" and XLXSJGBYZZ4_XXJGID=' '");
|
||
SQL.Add(" ) a ");
|
||
SQL.Add(" on XLXSJGBYZZ4_XLXHID=V_XSBJJSJGB_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=V_XSBJJSJGB_DYDJID");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID and XLXSJGBYZZ4_XLXHID<>' ' ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH )");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",XLXSJGBYZZ4_YZZ as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add(" left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') 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 exists(select 1 from XLXSTZYZ where XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID and XLXSTZYZ_TJYS='4' ");
|
||
SQL.Add(" and XLXSTZYZ_JGBID=XLXSJGBYZZ4_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ4_YZID )");
|
||
//4、优先级由低到高依次更新:电压不为空、芯线结构不为空
|
||
SQL.Add(" ) a ");
|
||
SQL.Add(" on XLXSJGBYZZ4_XLXHID=V_XSBJJSJGB_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=V_XSBJJSJGB_DYDJID");
|
||
SQL.Add(" and XLXSJGBYZZ4_XXJGID=XLGGB_XXJGID");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID and XLXSJGBYZZ4_XLXHID<>' ' ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH )");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 自动插入TJYS=5的调价因子值--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("merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",XLXSJGBYZZ5_YZZ as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from XLXSTZYZ,XLXSJGBYZZ5,V_XSBJJSJGB ");
|
||
SQL.Add(" left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
|
||
SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
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=V_XSBJJSJGB_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.Add(" ) a ");
|
||
SQL.Add(" on (XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH )");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",XLXSJGBYZZ5_YZZ as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from XLXSTZYZ,XLXSJGBYZZ5,V_XSBJJSJGB ");
|
||
SQL.Add(" left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
|
||
SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
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=V_XSBJJSJGB_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=V_XSBJJSJGB_DYDJID ");
|
||
SQL.Add(" ) a ");
|
||
SQL.Add(" on (XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH )");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 自动插入TJYS=8的调价因子值--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(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",ISNULL(XLXSJGBYZZ8_YZZ * XLXSCLQD_CLZL/1000,0) as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB,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 V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
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=V_XSBJJSJGB_XLXHID and XLXSJGBYZZ8_XLGGID=V_XSBJJSJGB_XLGGID and XLXSJGBYZZ8_XLBZID=V_XSBJJSJGB_XLBZID and XLXSJGBYZZ8_DYDJID=V_XSBJJSJGB_DYDJID ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 自动插入TJYS=9 A B C的调价因子值
|
||
|
||
|
||
if (!sTJYSList9.Trim().Equals(""))
|
||
{
|
||
string[] sTJYZ = sTJYSList9.Split(',');
|
||
for (int i = 0; i < sTJYZ.Length; i++)
|
||
{
|
||
if (!sTJYZ[i].Trim().Equals(""))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",ISNULL(XLXSJGBYZZ9_YZZ ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB,XLXSTZYZ,XLXSJGBYZZ9 ");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID");
|
||
SQL.Add(" and XLXSTZYZ_TJYS='9' and XLXSJGBYZZ9_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZ9_YZID=XLXSTZYZ_YZID ");
|
||
SQL.Add(" and XLXSJGBYZZ9_XLXHID=V_XSBJJSJGB_XLXHID and XLXSJGBYZZ9_XLGGID=V_XSBJJSJGB_XLGGID and XLXSJGBYZZ9_DYDJID=V_XSBJJSJGB_DYDJID ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!sTJYSListA.Trim().Equals(""))
|
||
{
|
||
string[] sTJYZ = sTJYSListA.Split(',');
|
||
for (int i = 0; i < sTJYZ.Length; i++)
|
||
{
|
||
if (!sTJYZ[i].Trim().Equals(""))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH,XLDTJMZHB_DTJM1 ");
|
||
SQL.Add(string.Format(",ISNULL(XLXSJGBYZZA_YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add(" left join XLXSBJTJXHML A on A.XLXSBJTJXHML_XLXHID=V_XSBJJSJGB_XLXHID and A.XLXSBJTJXHML_DYDJID=V_XSBJJSJGB_DYDJID ");
|
||
SQL.Add(" left join XLXSBJTJXHML B on B.XLXSBJTJXHML_XLXHID=V_XSBJJSJGB_XLXHID and B.XLXSBJTJXHML_DYDJID=' ' ");
|
||
SQL.Add(" left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
|
||
SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
|
||
SQL.Add(" ,XLXSTZYZ,XLXSJGBYZZA ");
|
||
SQL.Add(" left join XLXSCPML on XLXSCPML_CPMLID=XLXSJGBYZZA_CPMLID ");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID");
|
||
SQL.Add(" and XLXSTZYZ_TJYS='A' and XLXSJGBYZZA_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZA_YZID=XLXSTZYZ_YZID ");
|
||
SQL.Add(" and XLXSCPML_CPMLIDS like '%'||rtrim(case when A.XLXSBJTJXHML_CPMLID is null then B.XLXSBJTJXHML_CPMLID else A.XLXSBJTJXHML_CPMLID end)||'%' and CONVERT(float,XLXSJGBYZZA_XLGGID)=XLDTJMZHB_DTJM1 ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
|
||
}
|
||
}
|
||
}
|
||
if (!sTJYSListB.Trim().Equals(""))
|
||
{
|
||
string[] sTJYZ = sTJYSListB.Split(',');
|
||
for (int i = 0; i < sTJYZ.Length; i++)
|
||
{
|
||
if (!sTJYZ[i].Trim().Equals(""))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",ISNULL(XLXSJGBYZZB_YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add("left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add("left join XLXSBJXLGGTHB XLXSBJXLGGTHB_JGB10 on XLXSBJXLGGTHB_JGB10.XLXSBJXLGGTHB_XLGGID=V_XSBJJSJGB_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(" ,XLXSTZYZ,XLXSJGBYZZB ");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID");
|
||
SQL.Add(" and XLXSTZYZ_TJYS='B' and XLXSJGBYZZB_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZB_YZID=XLXSTZYZ_YZID ");
|
||
SQL.Add(" and XLXSJGBYZZB_ZXJMS<=ISNULL(XLDTJMZHB_DTJM1,0) and ((XLXSJGBYZZB_ZXJMZ<>0 and XLXSJGBYZZB_ZXJMZ>=ISNULL(XLDTJMZHB_DTJM1,0)) or XLXSJGBYZZB_ZXJMZ=0)");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
}
|
||
}
|
||
if (!sTJYSListC.Trim().Equals(""))
|
||
{
|
||
string[] sTJYZ = sTJYSListC.Split(',');
|
||
for (int i = 0; i < sTJYZ.Length; i++)
|
||
{
|
||
if (!sTJYZ[i].Trim().Equals(""))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDJJYZ tar ");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select V_XSBJJSJGB_BJDID as BJDID,V_XSBJJSJGB_BJDXH as BJDXH");
|
||
SQL.Add(string.Format(",ISNULL(SUM(XLXSJGBYZZC_YZZ) ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add(" left join XLXHB on XLXHB_XLXHID=V_XSBJJSJGB_XLXHID ");
|
||
SQL.Add(" left join XLGGB on XLGGB_XLGGID = REPLACE(V_XSBJJSJGB_XLGGID , '*','×') 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=V_XSBJJSJGB_XLXHID and XLXSBJCPYS_DYDJID=V_XSBJJSJGB_DYDJID ");
|
||
SQL.Add(" ,XLXSTZYZ,XLXSJGBYZZC ");
|
||
SQL.Add(" where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ<>'Y' and V_XSBJJSJGB_JGFBZ<>'Y' ");
|
||
SQL.Add(" and XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=:pYZID");
|
||
SQL.Add(" and XLXSTZYZ_TJYS='C' and XLXSJGBYZZC_JGBID=XLXSTZYZ_JGBID and XLXSJGBYZZC_YZID=XLXSTZYZ_YZID and XLDTJMZHB_DTJM1=XLXSJGBYZZC_ZXJM");
|
||
SQL.Add(" and XLXSBJCPYS_XXJGID =XLXSJGBYZZC_CPTX ");
|
||
SQL.Add(" GROUP BY V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH ");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=BJDXH ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("JZ", "")));
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
|
||
dberp.ExecSQL(SQL);
|
||
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
//最后补上外购产品XLXSBJDJJYZ的记录
|
||
SQL.Clear();
|
||
SQL.Add("insert into XLXSBJDJJYZ(XLXSBJDJJYZ_BJDID,XLXSBJDJJYZ_XH) ");
|
||
SQL.Add("select V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH");
|
||
SQL.Add(" from V_XSBJJSJGB ");
|
||
SQL.Add("where V_XSBJJSJGB_ID=:pID ");
|
||
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
|
||
SQL.Add(" and V_XSBJJSJGB_WGCPBZ='Y' or V_XSBJJSJGB_JGFBZ='Y' ");
|
||
SQL.ParamByName("pID").Value = VnewID;
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
XLBJDUtils.UpdateCJGS(dberp, SQL, sJGBID, sBJDID, VnewID);
|
||
}
|
||
|
||
|
||
public static void UpdateCLSH(TDatabase dberp, TSQL SQL, string sJGBID, string sBJDID, string sLX)
|
||
{
|
||
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;//被报价单调用时,是否需要重算衍生扩展价格表
|
||
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 && 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<string, double> DicWLHQ = new Dictionary<string, double>();
|
||
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
|
||
|
||
|
||
Dictionary<string, double> dicJGYLHSJG = new Dictionary<string, double>();
|
||
Dictionary<string, double> dicJGYLWSJG = new Dictionary<string, double>();
|
||
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()));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
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");
|
||
SQL.Add(" and isnull(XLXSCLQD_JGCZBID,' ')<>' '");
|
||
SQL.Add(" order by XLXSCLQD_JGCZBID");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
|
||
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 ");
|
||
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");
|
||
|
||
|
||
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.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 ");
|
||
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");
|
||
|
||
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.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|物料行情
|
||
{
|
||
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
|
||
{
|
||
|
||
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");
|
||
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.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'
|
||
");
|
||
if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定
|
||
{
|
||
SQL.Add(" and exists (");
|
||
SQL.Add("select 1 ");
|
||
SQL.Add(" from XLXSBJDMX");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
|
||
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("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");
|
||
|
||
|
||
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("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");
|
||
|
||
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.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 ");
|
||
if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定
|
||
{
|
||
SQL.Add(" and exists (");
|
||
SQL.Add("select 1 ");
|
||
SQL.Add(" from XLXSBJDMX");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
|
||
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.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
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 短米校验和修正
|
||
/// </summary>
|
||
public static void Check_UpdBJSLYZZ(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sBJU002, string sBJU003)
|
||
{
|
||
Dictionary<string, string> dicCheckedYZIDList = BJSLYZZCheck(dberp, SQL, sBJDID, sBJFLID, sBJU003);
|
||
if (dicCheckedYZIDList.Count > 0)
|
||
{
|
||
string sYZIDList2 = "";
|
||
string sYZIDList3 = "";
|
||
string sYZIDList6 = "";
|
||
string sYZIDListE = "";
|
||
string sYZIDListF = "";
|
||
string sYZIDListG = "";
|
||
string sYZIDListH = "";
|
||
if (dicCheckedYZIDList.ContainsKey("sTJYSList2"))
|
||
sYZIDList2 = dicCheckedYZIDList["sTJYSList2"];
|
||
if (dicCheckedYZIDList.ContainsKey("sTJYSList3"))
|
||
sYZIDList3 = dicCheckedYZIDList["sTJYSList3"];
|
||
if (dicCheckedYZIDList.ContainsKey("sTJYSList6"))
|
||
sYZIDList6 = dicCheckedYZIDList["sTJYSList6"];
|
||
if (dicCheckedYZIDList.ContainsKey("sTJYSListE"))
|
||
sYZIDListE = dicCheckedYZIDList["sTJYSListE"];
|
||
if (dicCheckedYZIDList.ContainsKey("sTJYSListF"))
|
||
sYZIDListF = dicCheckedYZIDList["sTJYSListF"];
|
||
if (dicCheckedYZIDList.ContainsKey("sTJYSListG"))
|
||
sYZIDListG = dicCheckedYZIDList["sTJYSListG"];
|
||
if (dicCheckedYZIDList.ContainsKey("sTJYSListH"))
|
||
sYZIDListH = dicCheckedYZIDList["sTJYSListH"];
|
||
|
||
CalcWithBJSLYZZCheck(dberp, SQL, sBJDID, sYZIDList2, sYZIDList3, sYZIDList6, sYZIDListE, sYZIDListF, sYZIDListG, sYZIDListH, sBJU002, sBJU003, false);//这里bUpdXLBJD传入false,表示不用执行UpdateXLXSBJD
|
||
}
|
||
}
|
||
|
||
public static Dictionary<string, string> BJSLYZZCheck(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sBJU003)
|
||
{
|
||
//如果用到了和报价数量相关的因子,则进行整单短米校验
|
||
Dictionary<string, string> dicCheckedYZIDList = new Dictionary<string, string>();
|
||
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSBJFLYZ_YZID from XLXSBJFLYZ");
|
||
SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_YZID=XLXSBJFLYZ_YZID and XLXSTZYZ_MXBH='BJD'");
|
||
SQL.Add(" where XLXSBJFLYZ_BJFLID=:pBJFLID");
|
||
SQL.Add(" and isnull(XLXSTZYZ_ABJCPJYYZZ,'N')='Y'");
|
||
SQL.Add(" order by XLXSTZYZ_XSXH,XLXSBJFLYZ_YZID");
|
||
SQL.ParamByName("pBJFLID").Value = sBJFLID;
|
||
DataSet ds = dberp.OpenDataSet(SQL);
|
||
//记录按报价产品校验因子值因子
|
||
Dictionary<string, string> dicABJCPJYYZList = new Dictionary<string, string>();
|
||
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
dicABJCPJYYZList.Add(ds.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim(), "");
|
||
}
|
||
|
||
if (dicABJCPJYYZList.Keys.Count==0)
|
||
{
|
||
return dicCheckedYZIDList;
|
||
}
|
||
|
||
Dictionary<string, string> dicTJYZList = new Dictionary<string, string>();
|
||
XLBJDUtils.GetDicTJYZList(dberp, SQL, sBJFLID, ref dicTJYZList);
|
||
|
||
if (dicTJYZList.ContainsKey("sTJYSList2"))
|
||
{
|
||
string[] sYZIDs = dicTJYZList["sTJYSList2"].Split(',');
|
||
for (int i = 0; i < sYZIDs.Length; i++)
|
||
{
|
||
string sYZID = sYZIDs[i].Trim();
|
||
if (dicABJCPJYYZList.ContainsKey(sYZID))
|
||
{
|
||
bool chkResult = CheckBJDTJYS2(dberp, SQL, sBJDID, sBJFLID, sYZID, sBJU003);
|
||
if (chkResult)
|
||
{
|
||
if (!dicCheckedYZIDList.ContainsKey("sTJYSList2"))
|
||
dicCheckedYZIDList.Add("sTJYSList2", sYZID);
|
||
else
|
||
dicCheckedYZIDList["sTJYSList2"] = dicCheckedYZIDList["sTJYSList2"] + "," + sYZID;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSList3"))
|
||
{
|
||
string[] sYZIDs = dicTJYZList["sTJYSList3"].Split(',');
|
||
for (int i = 0; i < sYZIDs.Length; i++)
|
||
{
|
||
string sYZID = sYZIDs[i].Trim();
|
||
if (dicABJCPJYYZList.ContainsKey(sYZID))
|
||
{
|
||
bool chkResult = CheckBJDTJYS3(dberp, SQL, sBJDID, sBJFLID, sYZID, sBJU003);
|
||
if (chkResult)
|
||
{
|
||
if (!dicCheckedYZIDList.ContainsKey("sTJYSList3"))
|
||
dicCheckedYZIDList.Add("sTJYSList3", sYZID);
|
||
else
|
||
dicCheckedYZIDList["sTJYSList3"] = dicCheckedYZIDList["sTJYSList3"] + "," + sYZID;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSList6"))
|
||
{
|
||
string[] sYZIDs = dicTJYZList["sTJYSList6"].Split(',');
|
||
for (int i = 0; i < sYZIDs.Length; i++)
|
||
{
|
||
string sYZID = sYZIDs[i].Trim();
|
||
if (dicABJCPJYYZList.ContainsKey(sYZID))
|
||
{
|
||
bool chkResult = CheckBJDTJYS6(dberp, SQL, sBJDID, sBJFLID, sYZID, sBJU003);
|
||
if (chkResult)
|
||
{
|
||
if (!dicCheckedYZIDList.ContainsKey("sTJYSList6"))
|
||
dicCheckedYZIDList.Add("sTJYSList6", sYZID);
|
||
else
|
||
dicCheckedYZIDList["sTJYSList6"] = dicCheckedYZIDList["sTJYSList6"] + "," + sYZID;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSListE"))
|
||
{
|
||
string[] sYZIDs = dicTJYZList["sTJYSListE"].Split(',');
|
||
for (int i = 0; i < sYZIDs.Length; i++)
|
||
{
|
||
string sYZID = sYZIDs[i].Trim();
|
||
if (dicABJCPJYYZList.ContainsKey(sYZID))
|
||
{
|
||
bool chkResult = CheckBJDTJYSE(dberp, SQL, sBJDID, sBJFLID, sYZID, sBJU003);
|
||
if (chkResult)
|
||
{
|
||
if (!dicCheckedYZIDList.ContainsKey("sTJYSListE"))
|
||
dicCheckedYZIDList.Add("sTJYSListE", sYZID);
|
||
else
|
||
dicCheckedYZIDList["sTJYSListE"] = dicCheckedYZIDList["sTJYSListE"] + "," + sYZID;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSListG"))
|
||
{
|
||
string[] sYZIDs = dicTJYZList["sTJYSListG"].Split(',');
|
||
for (int i = 0; i < sYZIDs.Length; i++)
|
||
{
|
||
string sYZID = sYZIDs[i].Trim();
|
||
if (dicABJCPJYYZList.ContainsKey(sYZID))
|
||
{
|
||
bool chkResult = CheckBJDTJYSG(dberp, SQL, sBJDID, sBJFLID, sYZID, sBJU003);
|
||
if (chkResult)
|
||
{
|
||
if (!dicCheckedYZIDList.ContainsKey("sTJYSListG"))
|
||
dicCheckedYZIDList.Add("sTJYSListG", sYZID);
|
||
else
|
||
dicCheckedYZIDList["sTJYSListG"] = dicCheckedYZIDList["sTJYSListG"] + "," + sYZID;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSListF"))
|
||
{
|
||
string[] sYZIDs = dicTJYZList["sTJYSListF"].Split(',');
|
||
for (int i = 0; i < sYZIDs.Length; i++)
|
||
{
|
||
string sYZID = sYZIDs[i].Trim();
|
||
if (dicABJCPJYYZList.ContainsKey(sYZID))
|
||
{
|
||
bool chkResult = CheckBJDTJYSF(dberp, SQL, sBJDID, sBJFLID, sYZID, sBJU003);
|
||
if (chkResult)
|
||
{
|
||
if (!dicCheckedYZIDList.ContainsKey("sTJYSListF"))
|
||
dicCheckedYZIDList.Add("sTJYSListF", sYZID);
|
||
else
|
||
dicCheckedYZIDList["sTJYSListF"] = dicCheckedYZIDList["sTJYSListF"] + "," + sYZID;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (dicTJYZList.ContainsKey("sTJYSListH"))
|
||
{
|
||
string[] sYZIDs = dicTJYZList["sTJYSListH"].Split(',');
|
||
for (int i = 0; i < sYZIDs.Length; i++)
|
||
{
|
||
string sYZID = sYZIDs[i].Trim();
|
||
if (dicABJCPJYYZList.ContainsKey(sYZID))
|
||
{
|
||
bool chkResult = CheckBJDTJYSH(dberp, SQL, sBJDID, sBJFLID, sYZID, sBJU003);
|
||
if (chkResult)
|
||
{
|
||
if (!dicCheckedYZIDList.ContainsKey("sTJYSListH"))
|
||
dicCheckedYZIDList.Add("sTJYSListH", sYZID);
|
||
else
|
||
dicCheckedYZIDList["sTJYSListH"] = dicCheckedYZIDList["sTJYSListH"] + "," + sYZID;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return dicCheckedYZIDList;
|
||
}
|
||
|
||
//对“2|导体材料&电压区间&报价数量区间”进行整单因子值校验,返回true代表因子值不一致
|
||
public static bool CheckBJDTJYS2(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sYZID, string sBJU003)
|
||
{
|
||
SQL.Clear();
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "2", sYZID, sBJU003, "exists");
|
||
DataSet dsTJYS = dberp.OpenDataSet(SQL);
|
||
if (dsTJYS.Tables[0].Rows.Count > 0)
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
|
||
//对“3|产品用途&电压等级分类&报价数量区间”进行整单因子值校验,返回true代表因子值不一致
|
||
public static bool CheckBJDTJYS3(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sYZID, string sBJU003)
|
||
{
|
||
SQL.Clear();
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "3", sYZID, sBJU003, "exists");
|
||
DataSet dsTJYS = dberp.OpenDataSet(SQL);
|
||
if (dsTJYS.Tables[0].Rows.Count > 0)
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
|
||
//对“6|报价数量区间调价米数/报价数量”进行整单因子值校验,返回true代表因子值不一致
|
||
public static bool CheckBJDTJYS6(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sYZID, string sBJU003)
|
||
{
|
||
SQL.Clear();
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "6", sYZID, sBJU003, "exists");
|
||
DataSet dsTJYS = dberp.OpenDataSet(SQL);
|
||
if (dsTJYS.Tables[0].Rows.Count > 0)
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
|
||
//对“E|型号&电压等级&主芯截面范围&报价数量区间”进行整单因子值校验,返回true代表因子值不一致
|
||
public static bool CheckBJDTJYSE(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sYZID, string sBJU003)
|
||
{
|
||
SQL.Clear();
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "E", sYZID, sBJU003, "exists");
|
||
DataSet dsTJYS = dberp.OpenDataSet(SQL);
|
||
if (dsTJYS.Tables[0].Rows.Count > 0)
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
public static bool CheckBJDTJYSG(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sYZID, string sBJU003)
|
||
{
|
||
SQL.Clear();
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "G", sYZID, sBJU003, "exists");
|
||
DataSet dsTJYS = dberp.OpenDataSet(SQL);
|
||
if (dsTJYS.Tables[0].Rows.Count > 0)
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
|
||
//对“F|电压等级&芯线结构&报价数量区间加价/报价数量”进行整单因子值校验,返回true代表因子值不一致
|
||
public static bool CheckBJDTJYSF(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sYZID, string sBJU003)
|
||
{
|
||
SQL.Clear();
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "F", sYZID, sBJU003, "exists");
|
||
DataSet dsTJYS = dberp.OpenDataSet(SQL);
|
||
if (dsTJYS.Tables[0].Rows.Count > 0)
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
|
||
public static bool CheckBJDTJYSH(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sYZID, string sBJU003)
|
||
{
|
||
SQL.Clear();
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "H", sYZID, sBJU003, "exists");
|
||
DataSet dsTJYS = dberp.OpenDataSet(SQL);
|
||
if (dsTJYS.Tables[0].Rows.Count > 0)
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
|
||
public static void CalcWithBJSLYZZCheck(TDatabase dberp, TSQL SQL, string sBJDID, string strYZIDList2, string strYZIDList3, string strYZIDList6, string strYZIDListE, string strYZIDListF, string strYZIDListG,
|
||
string strYZIDListH, string sBJU002, string sBJU003, bool bUpdXLBJD)
|
||
{
|
||
try
|
||
{
|
||
if (strYZIDList2.Equals("") && strYZIDList3.Equals("") && strYZIDList6.Equals("") && strYZIDListE.Equals("")
|
||
&& strYZIDListF.Equals("") && strYZIDListG.Equals("") && strYZIDListH.Equals(""))
|
||
return;
|
||
string[] sYZIDList2 = strYZIDList2.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||
string[] sYZIDList3 = strYZIDList3.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||
string[] sYZIDList6 = strYZIDList6.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||
string[] sYZIDListE = strYZIDListE.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||
string[] sYZIDListF = strYZIDListF.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||
string[] sYZIDListG = strYZIDListG.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||
string[] sYZIDListH = strYZIDListH.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSBJD_JGBID,XLXSJGB_MXBH,XLXSJGB_JGBIDS,XLXSJGB_JGCIDS,XLXSJGB_BJLY,XLXSJGB_TJYS,XLXSJGB_JSBLFS,XLXSBJFL_XSTZZDXJ, ");
|
||
SQL.Add(" XLXSBJD_BJFLID,XLXSBJFL_BJDHQLY,XLXSBJFL_TZCLHQ,XLXSBJFL_JGBTJYSS,XLXSBJFL_BJJCLLX,XLXSBJFL_LJJCLLX,XLXSBJFL_CPBJMRXSWS,");
|
||
SQL.Add(" XLXSBJFL_ZDXJJCLLX,XLXSBJFL_JYF,XLXSBJFL_YFWLID,XLXSBJFL_BJHYF,XLXSBJFL_ZDXJGS,XLXSBJFL_JSJGS,");
|
||
SQL.Add(" XLXSBJD_JZBJHS,XLXSBJD_BJRQ");
|
||
SQL.Add(" from XLXSBJD ");
|
||
SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID=XLXSBJD_JGBID ");
|
||
SQL.Add(" left join XLXSBJFL on XLXSBJFL_BJFLID=XLXSBJD_BJFLID");
|
||
SQL.Add(" where XLXSBJD_BJDID=:pBJDID");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet dsBJD = dberp.OpenDataSet(SQL);
|
||
if (dsBJD.Tables[0].Rows.Count == 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
|
||
if (iXSWS < 0)
|
||
iXSWS = 0;
|
||
else if (iXSWS > 8)
|
||
iXSWS = 8;
|
||
|
||
bool bHSBZ = dsBJD.Tables[0].Rows[0]["XLXSBJD_JZBJHS"].ToString().Trim().Equals("Y");
|
||
string sBJRQ = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJRQ"].ToString().Trim();
|
||
|
||
string sJGBID = dsBJD.Tables[0].Rows[0]["XLXSBJD_JGBID"].ToString().Trim();
|
||
string sMXBH = dsBJD.Tables[0].Rows[0]["XLXSJGB_MXBH"].ToString().Trim();
|
||
string sJGBIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGBIDS"].ToString().Trim();
|
||
string sJGCIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim();
|
||
string sBJLY = dsBJD.Tables[0].Rows[0]["XLXSJGB_BJLY"].ToString().Trim();
|
||
string sTJYS = dsBJD.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim();
|
||
string sJSBLFS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JSBLFS"].ToString().Trim();
|
||
|
||
string sBJFLID = dsBJD.Tables[0].Rows[0]["XLXSBJD_BJFLID"].ToString().Trim();
|
||
string sBJDHQLY = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim();//1|价格表行情、2|报价日行情
|
||
string sJGBTJYSS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JGBTJYSS"].ToString().Trim();//价格表调价因素
|
||
string sJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJJCLLX"].ToString().Trim();
|
||
string sLJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_LJJCLLX"].ToString().Trim();
|
||
string sCPBJMRXSWS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_CPBJMRXSWS"].ToString().Trim();
|
||
string sZDXJJCLLX = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJJCLLX"].ToString().Trim();
|
||
string sJYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JYF"].ToString().Trim();
|
||
string sYFWLID = dsBJD.Tables[0].Rows[0]["XLXSBJFL_YFWLID"].ToString().Trim();
|
||
string sBJHYF = dsBJD.Tables[0].Rows[0]["XLXSBJFL_BJHYF"].ToString().Trim();
|
||
string sZDXJGS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_ZDXJGS"].ToString().Trim();
|
||
string sXSTZZDXJ = dsBJD.Tables[0].Rows[0]["XLXSBJFL_XSTZZDXJ"].ToString().Trim();
|
||
string sJSJGS = dsBJD.Tables[0].Rows[0]["XLXSBJFL_JSJGS"].ToString().Trim();
|
||
|
||
//利用tWHSJCondition来锁定需要重算的报价单明细
|
||
DateTime tWHSJCondition = MISproUtils.GetServerTime();
|
||
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
SQL.Add(" select XLXSBJDMX_XH as BJDXH");
|
||
SQL.Add(" from XLXSBJDMX cur");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
//SQL.Add(" and XLXSBJDMX_XH>=:pstartBJDXH");
|
||
//if (!sBJDXHList.Equals(""))
|
||
// SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
|
||
//if (bYBJ)
|
||
// SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
|
||
//if (bWG)
|
||
// SQL.Add(" and XLXSBJDMX_WGCPBZ='Y'");
|
||
//if (bFWG)
|
||
// SQL.Add(" and XLXSBJDMX_WGCPBZ<>'Y'");
|
||
//if (!sTLcpList.Equals(""))
|
||
// SQL.Add(" and exists(select 1 from XLXHB where XLXHB_XLXHID=UPPER(XLXSBJDMX_XLXHID) and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTLcpList) + ") ");
|
||
bool bFirstYZ = true;
|
||
SQL.Add(" and (");
|
||
for (int i = 0; i < sYZIDList2.Length; i++)
|
||
{
|
||
if (!bFirstYZ)
|
||
SQL.Add(" or ");
|
||
bFirstYZ = false;
|
||
|
||
SQL.Add(" exists (");
|
||
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "2", sYZIDList2[i], sBJU003, "exists");
|
||
|
||
SQL.Add(" and upper(cur.XLXSBJDMX_XLXHID)=upper(tmp.XLXSBJDMX_XLXHID)");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLGGID=tmp.XLXSBJDMX_XLGGID");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLBZID=tmp.XLXSBJDMX_XLBZID");
|
||
SQL.Add(" and isnull(cur.XLXSBJDMX_DYDJID,' ')=isnull(tmp.XLXSBJDMX_DYDJID,' ')");
|
||
SQL.Add(" ) ");
|
||
}
|
||
for (int i = 0; i < sYZIDList3.Length; i++)
|
||
{
|
||
if (!bFirstYZ)
|
||
SQL.Add(" or ");
|
||
bFirstYZ = false;
|
||
|
||
SQL.Add(" exists (");
|
||
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "3", sYZIDList3[i], sBJU003, "exists");
|
||
|
||
SQL.Add(" and upper(cur.XLXSBJDMX_XLXHID)=upper(tmp.XLXSBJDMX_XLXHID)");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLGGID=tmp.XLXSBJDMX_XLGGID");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLBZID=tmp.XLXSBJDMX_XLBZID");
|
||
SQL.Add(" and isnull(cur.XLXSBJDMX_DYDJID,' ')=isnull(tmp.XLXSBJDMX_DYDJID,' ')");
|
||
SQL.Add(" ) ");
|
||
}
|
||
for (int i = 0; i < sYZIDList6.Length; i++)
|
||
{
|
||
if (!bFirstYZ)
|
||
SQL.Add(" or ");
|
||
bFirstYZ = false;
|
||
|
||
SQL.Add(" exists (");
|
||
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "6", sYZIDList6[i], sBJU003, "exists");
|
||
|
||
SQL.Add(" and upper(cur.XLXSBJDMX_XLXHID)=upper(tmp.XLXSBJDMX_XLXHID)");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLGGID=tmp.XLXSBJDMX_XLGGID");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLBZID=tmp.XLXSBJDMX_XLBZID");
|
||
SQL.Add(" and isnull(cur.XLXSBJDMX_DYDJID,' ')=isnull(tmp.XLXSBJDMX_DYDJID,' ')");
|
||
SQL.Add(" ) ");
|
||
}
|
||
for (int i = 0; i < sYZIDListE.Length; i++)
|
||
{
|
||
if (!bFirstYZ)
|
||
SQL.Add(" or ");
|
||
bFirstYZ = false;
|
||
|
||
SQL.Add(" exists (");
|
||
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "E", sYZIDListE[i], sBJU003, "exists");
|
||
|
||
SQL.Add(" and upper(cur.XLXSBJDMX_XLXHID)=upper(tmp.XLXSBJDMX_XLXHID)");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLGGID=tmp.XLXSBJDMX_XLGGID");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLBZID=tmp.XLXSBJDMX_XLBZID");
|
||
SQL.Add(" and isnull(cur.XLXSBJDMX_DYDJID,' ')=isnull(tmp.XLXSBJDMX_DYDJID,' ')");
|
||
SQL.Add(" ) ");
|
||
}
|
||
for (int i = 0; i < sYZIDListF.Length; i++)
|
||
{
|
||
if (!bFirstYZ)
|
||
SQL.Add(" or ");
|
||
bFirstYZ = false;
|
||
|
||
SQL.Add(" exists (");
|
||
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "F", sYZIDListF[i], sBJU003, "exists");
|
||
|
||
SQL.Add(" and upper(cur.XLXSBJDMX_XLXHID)=upper(tmp.XLXSBJDMX_XLXHID)");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLGGID=tmp.XLXSBJDMX_XLGGID");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLBZID=tmp.XLXSBJDMX_XLBZID");
|
||
SQL.Add(" and isnull(cur.XLXSBJDMX_DYDJID,' ')=isnull(tmp.XLXSBJDMX_DYDJID,' ')");
|
||
SQL.Add(" ) ");
|
||
}
|
||
for (int i = 0; i < sYZIDListG.Length; i++)
|
||
{
|
||
if (!bFirstYZ)
|
||
SQL.Add(" or ");
|
||
bFirstYZ = false;
|
||
|
||
SQL.Add(" exists (");
|
||
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "G", sYZIDListG[i], sBJU003, "exists");
|
||
|
||
SQL.Add(" and upper(cur.XLXSBJDMX_XLXHID)=upper(tmp.XLXSBJDMX_XLXHID)");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLGGID=tmp.XLXSBJDMX_XLGGID");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLBZID=tmp.XLXSBJDMX_XLBZID");
|
||
SQL.Add(" and isnull(cur.XLXSBJDMX_DYDJID,' ')=isnull(tmp.XLXSBJDMX_DYDJID,' ')");
|
||
SQL.Add(" ) ");
|
||
}
|
||
for (int i = 0; i < sYZIDListH.Length; i++)
|
||
{
|
||
if (!bFirstYZ)
|
||
SQL.Add(" or ");
|
||
bFirstYZ = false;
|
||
|
||
SQL.Add(" exists (");
|
||
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "H", sYZIDListH[i], sBJU003, "exists");
|
||
|
||
SQL.Add(" and upper(cur.XLXSBJDMX_XLXHID)=upper(tmp.XLXSBJDMX_XLXHID)");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLGGID=tmp.XLXSBJDMX_XLGGID");
|
||
SQL.Add(" and cur.XLXSBJDMX_XLBZID=tmp.XLXSBJDMX_XLBZID");
|
||
SQL.Add(" and isnull(cur.XLXSBJDMX_DYDJID,' ')=isnull(tmp.XLXSBJDMX_DYDJID,' ')");
|
||
SQL.Add(" ) ");
|
||
}
|
||
SQL.Add(" )");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=BJDXH)");
|
||
SQL.Add(" when matched then update set XLXSBJDMX_TZCPBJ=0,XLXSBJDMX_CLCBJCLSDBZ='N',XLXSBJDMX_WHSJ=:pWHSJ");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
//SQL.ParamByName("pstartBJDXH").Value = startBJDXH;
|
||
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
for (int i = 0; i < sYZIDList2.Length; i++)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDYZZ0 tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "2", sYZIDList2[i], sBJU003, "selectBJDXH");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=BJDXH)");
|
||
SQL.Add(string.Format(" when matched then update set XLXSBJDYZZ0_YZZ{0}=YZZ", sYZIDList2[i].Replace("BJ", "")));
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
for (int i = 0; i < sYZIDList3.Length; i++)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDYZZ0 tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "3", sYZIDList3[i], sBJU003, "selectBJDXH");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=BJDXH)");
|
||
SQL.Add(string.Format(" when matched then update set XLXSBJDYZZ0_YZZ{0}=YZZ", sYZIDList3[i].Replace("BJ", "")));
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
for (int i = 0; i < sYZIDList6.Length; i++)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDYZZ0 tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "6", sYZIDList6[i], sBJU003, "selectBJDXH");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=BJDXH)");
|
||
SQL.Add(string.Format(" when matched then update set XLXSBJDYZZ0_YZZ{0}=YZZ", sYZIDList6[i].Replace("BJ", "")));
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
for (int i = 0; i < sYZIDListE.Length; i++)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDYZZ0 tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "E", sYZIDListE[i], sBJU003, "selectBJDXH");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=BJDXH)");
|
||
SQL.Add(string.Format(" when matched then update set XLXSBJDYZZ0_YZZ{0}=YZZ", sYZIDListE[i].Replace("BJ", "")));
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
for (int i = 0; i < sYZIDListG.Length; i++)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDYZZ0 tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "G", sYZIDListG[i], sBJU003, "selectBJDXH");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=BJDXH)");
|
||
SQL.Add(string.Format(" when matched then update set XLXSBJDYZZ0_YZZ{0}=YZZ", sYZIDListG[i].Replace("BJ", "")));
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
string sBJU003JSDW = XLBJDUtils.GetsJSDW(sBJU003, sBJU003);
|
||
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
|
||
for (int i = 0; i < sYZIDListF.Length; i++)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDYZZ0 tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "F", sYZIDListF[i], sBJU003, "selectBJDXH");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=BJDXH)");
|
||
if (sBJU003JSDW.Equals("M"))
|
||
{
|
||
SQL.Add(string.Format(" when matched then update set XLXSBJDYZZ0_YZZ{0}= (case when XLXSBJDMX_JLDW in('Km','千米') then RoundFix(1000*YZZ,6) ", sYZIDListF[i].Replace("BJ", "")));
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then RoundFix(YZZ*{1},6) ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
SQL.Add(" else YZZ end)");
|
||
}
|
||
|
||
else if (sBJU003JSDW.Equals("Km"))
|
||
{
|
||
SQL.Add(string.Format(" when matched then update set XLXSBJDYZZ0_YZZ{0}= (case when XLXSBJDMX_JLDW in('M','米') then RoundFix(0.001*YZZ,6) ", sYZIDListF[i].Replace("BJ", "")));
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then RoundFix(YZZ/{1},6) ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
SQL.Add(" else YZZ end)");
|
||
}
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
for (int i = 0; i < sYZIDListH.Length; i++)
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDYZZ0 tar ");
|
||
SQL.Add("using ");
|
||
SQL.Add("( ");
|
||
XLBJD_YZZCheck.GetBJSLTJYS_SQL(SQL, sBJDID, sBJFLID, "H", sYZIDListH[i], sBJU003, "selectBJDXH");
|
||
SQL.Add(" ) sor ");
|
||
SQL.Add(" on (XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=BJDXH)");
|
||
if (sBJU003JSDW.Equals("M"))
|
||
{
|
||
SQL.Add(string.Format(" when matched then update set XLXSBJDYZZ0_YZZ{0}= (case when XLXSBJDMX_JLDW in('Km','千米') then RoundFix(1000*YZZ,6) ", sYZIDListH[i].Replace("BJ", "")));
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then RoundFix(YZZ*{1},6) ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
SQL.Add(" else YZZ end)");
|
||
}
|
||
|
||
else if (sBJU003JSDW.Equals("Km"))
|
||
{
|
||
SQL.Add(string.Format(" when matched then update set XLXSBJDYZZ0_YZZ{0}= (case when XLXSBJDMX_JLDW in('M','米') then RoundFix(0.001*YZZ,6) ", sYZIDListH[i].Replace("BJ", "")));
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" when XLXSBJDMX_JLDW='{0}' then RoundFix(YZZ/{1},6) ", sKey, dicLenJLDWTD[sKey]));
|
||
}
|
||
SQL.Add(" else YZZ end)");
|
||
}
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, iXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, tWHSJCondition);
|
||
|
||
bool bZDXJTZ = false;
|
||
if (sZDXJGS.Contains("BJ01") || sZDXJGS.Contains("BJ02") || sZDXJGS.Contains("BJ03") || sZDXJGS.Contains("BJ04") || sZDXJGS.Contains("BJ05")
|
||
|| sZDXJGS.Contains("BJ06") || sZDXJGS.Contains("BJ07") || sZDXJGS.Contains("BJ08") || sZDXJGS.Contains("BJ09") || sZDXJGS.Contains("BJ10")
|
||
|| sZDXJGS.Contains("BJ11") || sZDXJGS.Contains("BJ12") || sZDXJGS.Contains("BJ13") || sZDXJGS.Contains("BJ14") || sZDXJGS.Contains("BJ15")
|
||
|| sZDXJGS.Contains("BJ16") || sZDXJGS.Contains("BJ17") || sZDXJGS.Contains("BJ18") || sZDXJGS.Contains("BJ19") || sZDXJGS.Contains("BJ20")
|
||
|| sZDXJGS.Contains("CPBJ") || sXSTZZDXJ.Equals("Y"))
|
||
{
|
||
XLBJDUtils.UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", 1, false, false, false, false, "", tWHSJCondition);
|
||
bZDXJTZ = true;
|
||
|
||
}
|
||
if (sJSJGS.Contains("BJ01") || sJSJGS.Contains("BJ02") || sJSJGS.Contains("BJ03") || sJSJGS.Contains("BJ04") || sJSJGS.Contains("BJ05")
|
||
|| sJSJGS.Contains("BJ06") || sJSJGS.Contains("BJ07") || sJSJGS.Contains("BJ08") || sJSJGS.Contains("BJ09") || sJSJGS.Contains("BJ10")
|
||
|| sJSJGS.Contains("BJ11") || sJSJGS.Contains("BJ12") || sJSJGS.Contains("BJ13") || sJSJGS.Contains("BJ14") || sJSJGS.Contains("BJ15")
|
||
|| sJSJGS.Contains("BJ16") || sJSJGS.Contains("BJ17") || sJSJGS.Contains("BJ18") || sJSJGS.Contains("BJ19") || sJSJGS.Contains("BJ20")
|
||
|| sJSJGS.Contains("CPBJ") || sXSTZZDXJ.Equals("Y")||bZDXJTZ)
|
||
{
|
||
XLBJDUtils.UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", 1, false, false, false, false, "", tWHSJCondition);
|
||
|
||
}
|
||
|
||
|
||
if (bUpdXLBJD)
|
||
{
|
||
XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, sJCLLX, sLJJCLLX, sZDXJJCLLX, sJYF, "", "", sYFWLID, sBJHYF);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
throw new Exception(ex.Message);
|
||
}
|
||
}
|
||
|
||
|
||
//计算材料价价差
|
||
public static void UpdateJGBTJYS_3(TDatabase dberp, TSQL SQL, string sJGBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, string sJGBID1,
|
||
string sBJDID, int iMinXH)
|
||
{
|
||
//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;//被报价单调用时,是否需要重算衍生扩展价格表
|
||
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";
|
||
//}
|
||
//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 && (!sJGBID.Equals("") || sBJDHQLX.Equals("BJDHQ"));
|
||
|
||
if (sBJDID.Trim().Equals(""))//sBJDID为空,说明是销售价格表模块调用
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("select distinct XLXSJGBCLQD_JGCZBID,XLXSJGBCLQD_JGCZBBBID,XLXSJGBCLQD_JJFPSJ");//,XLJGCZBML_CZBLX
|
||
SQL.Add(" from XLXSJGBMX");
|
||
SQL.Add(" left join XLXSJGBCLQD on XLXSJGBCLQD_JGBID=:pJGBID1 and XLXSJGBCLQD_XH=XLXSJGBMX_XH");
|
||
//SQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLXSJGBYLLM_JGCZBID");
|
||
SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID");
|
||
SQL.Add(" order by XLXSJGBCLQD_JGCZBID,XLXSJGBCLQD_JGCZBBBID,XLXSJGBCLQD_JJFPSJ");
|
||
SQL.ParamByName("pJGBID1").Value = sJGBID1;
|
||
SQL.ParamByName("pJGBID").Value = sJGBID;
|
||
}
|
||
else//sBJDID不为空,说明是被报价单调用
|
||
{
|
||
if (bNeedCalJGBEx)
|
||
{
|
||
//衍生扩展的价格表支持被报价单重算
|
||
}
|
||
else
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("select distinct XLXSJGBCLQD_JGCZBID,XLXSJGBCLQD_JGCZBBBID,XLXSJGBCLQD_JJFPSJ");//,XLJGCZBML_CZBLX
|
||
SQL.Add(" from XLXSBJDMX");
|
||
SQL.Add(" left join XLXSJGBMX on XLXSJGBMX_JGBID=:pJGBID1 and XLXSJGBMX_XLXHID=XLXSBJDMX_XLXHID and XLXSJGBMX_XLGGID=XLXSBJDMX_XLGGID");
|
||
SQL.Add(" and XLXSJGBMX_XLBZID=XLXSBJDMX_XLBZID and XLXSJGBMX_DYDJID=XLXSBJDMX_DYDJID");
|
||
SQL.Add(" left join XLXSJGBCLQD on XLXSJGBCLQD_JGBID=:pJGBID1 and XLXSJGBCLQD_XH=XLXSJGBMX_XH");
|
||
//SQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLXSCLQD_JGCZBID");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XH >= :piMinXH");
|
||
SQL.Add(" order by XLXSJGBCLQD_JGCZBID,XLXSJGBCLQD_JGCZBBBID,XLXSJGBCLQD_JJFPSJ");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
SQL.ParamByName("piMinXH").Value = iMinXH;
|
||
SQL.ParamByName("pJGBID1").Value = sJGBID1;
|
||
}
|
||
}
|
||
DataSet dsJGCZB = dberp.OpenDataSet(SQL);
|
||
for (int j = 0; j < dsJGCZB.Tables[0].Rows.Count; j++)
|
||
{
|
||
string tmpJGCZBID = dsJGCZB.Tables[0].Rows[j]["XLXSJGBCLQD_JGCZBID"].ToString().Trim();
|
||
string tmpJGCZBBBID = dsJGCZB.Tables[0].Rows[j]["XLXSJGBCLQD_JGCZBBBID"].ToString().Trim();
|
||
string tmpJJFPSJ = dsJGCZB.Tables[0].Rows[j]["XLXSJGBCLQD_JJFPSJ"].ToString().Trim();
|
||
//标志材料行情/物料行情
|
||
//int flag_1 = 0;
|
||
//int flag_2 = 0;
|
||
string sCLQDL = "";
|
||
string sBJHQ = "";
|
||
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSJGBYLLM_CLQDL,isnull(XLXSBJCL_BJHQ,'1') as XLXSBJCL_BJHQ ");
|
||
SQL.Add(" from XLXSJGBYLLM");
|
||
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSJGBYLLM_BJCLID");
|
||
SQL.Add(" where XLXSJGBYLLM_JGBID=:pJGBID1");
|
||
SQL.Add(" and XLXSJGBYLLM_JJFPSJ=:pJJFPSJ");
|
||
SQL.Add(" and XLXSJGBYLLM_JGCZBID=:pJGCZBID");
|
||
SQL.Add(" and XLXSJGBYLLM_JGCZBBBID=:pJGCZBBBID");
|
||
SQL.Add(" order by XLXSJGBYLLM_CLQDL");
|
||
SQL.ParamByName("pJGBID1").Value = sJGBID1;
|
||
SQL.ParamByName("pJJFPSJ").Value = tmpJJFPSJ;
|
||
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;
|
||
// }
|
||
//}
|
||
|
||
/*
|
||
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 XLXSJGBCLQD a ");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select XLXSJGBYLLM_JGBID as JGBID, XLXSJGBYLLM_JJFPSJ as JJFPSJ, XLXSJGBYLLM_JGCZBID as JGCZBID, XLXSJGBYLLM_JGCZBBBID as JGCZBBBID,");
|
||
for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
{
|
||
sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
//if (sBJHQ.Equals("1"))//1|材料行情--这里之所以能涵盖2|物料行情,是因为因素3价格表和因素1价格表的物料行情不能随意改、且即使它们能发生变化也是因为期货铜价引起的,所以物料之前的价格差与细分之前的报价材料之间的价格差等同
|
||
{
|
||
SQL.Add(string.Format(" sum(case when XLXSJGBYLLM_CLQDL='{0}' then isnull(XLXSCLHQ_WSJG,0.0) else 0.0 end) as CLJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", "")));
|
||
SQL.Add(string.Format(" sum(case when XLXSJGBYLLM_CLQDL='{0}' then isnull(XLXSCLHQ_HSJG,0.0) else 0.0 end) as HSJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", "")));
|
||
}
|
||
}
|
||
SQL.Add(" ' ' as MJBZ ");
|
||
SQL.Add(" from XLXSJGBYLLM ");
|
||
SQL.Add(" left join (");
|
||
|
||
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=XLXSJGBYLLM_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=XLXSJGBYLLM_BJCLID");
|
||
//SQL.ParamByName("pJGBID1").Value = sJGBID1;
|
||
SQL.ParamByName("pJGBID").Value = sJGBID;
|
||
SQL.ParamByName("pBJDIDD").Value = sBJDID.Trim();
|
||
}
|
||
|
||
SQL.Add(" where XLXSJGBYLLM_JGBID=:pJGBID1");
|
||
SQL.Add(" and XLXSJGBYLLM_JJFPSJ=:pJJFPSJ");
|
||
SQL.Add(" and XLXSJGBYLLM_JGCZBID=:pJGCZBID");
|
||
SQL.Add(" and XLXSJGBYLLM_JGCZBBBID=:pJGCZBBBID");
|
||
SQL.Add(" group by XLXSJGBYLLM_JGBID,XLXSJGBYLLM_JJFPSJ,XLXSJGBYLLM_JGCZBID,XLXSJGBYLLM_JGCZBBBID");
|
||
SQL.Add(" ) b ");
|
||
SQL.Add(" on( ");
|
||
SQL.Add(" a.XLXSJGBCLQD_JGBID=:pJGBID1 and a.XLXSJGBCLQD_JJFPSJ=:pJJFPSJ and a.XLXSJGBCLQD_JGCZBID=:pJGCZBID and a.XLXSJGBCLQD_JGCZBBBID=:pJGCZBBBID");
|
||
SQL.Add(" and a.XLXSJGBCLQD_JGBID=b.JGBID and a.XLXSJGBCLQD_JJFPSJ=b.JJFPSJ and a.XLXSJGBCLQD_JGCZBID=b.JGCZBID and a.XLXSJGBCLQD_JGCZBBBID=b.JGCZBBBID ");
|
||
if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定
|
||
{
|
||
if (bNeedCalJGBEx)
|
||
{
|
||
//衍生扩展的价格表支持被报价单重算,需要弄个临时表,将如下语句的查询结果插入到临时表中,然后用临时表与所依价格表明细进行关联
|
||
|
||
}
|
||
else
|
||
{
|
||
//SQL.Add(" and exists (");
|
||
//SQL.Add("select top 1 XLXSBJDMX_BJDID");
|
||
//SQL.Add(" from XLXSBJDMX");
|
||
//SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
//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.XLXSJGBCLQD_WSCLCBC= ");
|
||
|
||
SQL.Add(" ( ");
|
||
if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一)
|
||
{
|
||
for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
{
|
||
sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
//if (sBJHQ.Equals("1"))//1|材料行情
|
||
{
|
||
SQL.Add(string.Format("CEILING(RoundFix(XLXSJGBCLQD_ZL{0}*CLJG{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]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
//if (sBJHQ.Equals("1"))//1|材料行情
|
||
{
|
||
SQL.Add(string.Format("XLXSJGBCLQD_ZL{0}*CLJG{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
}
|
||
}
|
||
}
|
||
//if (bNeedAddWLHQ)
|
||
//{
|
||
// SQL.Add("1.0), ");//这里+1.0是为了解决即使材料价都为0,也要保证成本之和不为0
|
||
//}
|
||
//else
|
||
SQL.Add("0), ");
|
||
SQL.Add(" a.XLXSJGBCLQD_HSCLCBC=");
|
||
|
||
SQL.Add(" ( ");
|
||
if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一)
|
||
{
|
||
for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
{
|
||
sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
//if (sBJHQ.Equals("1"))//1|材料行情
|
||
{
|
||
SQL.Add(string.Format("CEILING(RoundFix(XLXSJGBCLQD_ZL{0}*HSJG{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]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
//if (sBJHQ.Equals("1"))//1|材料行情
|
||
{
|
||
SQL.Add(string.Format("XLXSJGBCLQD_ZL{0}*HSJG{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
}
|
||
}
|
||
}
|
||
//if (bNeedAddWLHQ)
|
||
//{
|
||
// SQL.Add("1.0) ");//这里+1.0是为了解决即使材料价都为0,也要保证成本之和不为0
|
||
//}
|
||
//else
|
||
SQL.Add("0) ");
|
||
SQL.ParamByName("pJGBID1").Value = sJGBID1;
|
||
SQL.ParamByName("pJJFPSJ").Value = tmpJJFPSJ;
|
||
SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID;
|
||
SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
|
||
//if (bNeedAddWLHQ)
|
||
//{
|
||
// /*
|
||
// 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 XLXSJGBCLQD a ");
|
||
// SQL.Add(" using ");
|
||
// SQL.Add(" (");//获取结构尺重表每个单元格所指报价物料的无税价格、含税价格
|
||
// SQL.Add(" select XLXSJGBCLQD_JGBID as JGBID,XLXSJGBCLQD_XH as XH, ");
|
||
// for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
// {
|
||
// sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
// sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
// if (sBJHQ.Equals("2"))//2|物料行情
|
||
// {
|
||
// if (sBJDHQLX.Equals("BJDHQ"))//报价单行情
|
||
// {
|
||
// SQL.Add(string.Format("case when isnull(d{0}.XLXSBJDWLHQ_WLID,' ')<>' ' then isnull(d{0}.WSJG,0)-isnull(w{0}.XLXSWLHQ_WSJG,0) else isnull(c{0}.WSJG,0)-isnull(w{0}.XLXSWLHQ_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)-isnull(w{0}.XLXSWLHQ_HSJG,0) else isnull(c{0}.HSJG,0)-isnull(w{0}.XLXSWLHQ_HSJG,0) end as HSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
// }
|
||
// else
|
||
// {
|
||
// SQL.Add(string.Format(" isnull(c{0}.XLXSWLHQ_WSJG,0)-isnull(w{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0)-isnull(w{0}.XLXSWLHQ_HSJG,0) as HSJG{0},", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
// }
|
||
// }
|
||
// }
|
||
// SQL.Add(" ' ' as MJBZ ");
|
||
// SQL.Add(" from XLXSJGBCLQD");//这里不直接查XLXSCLQDWL的原因是XLXSCLQDWL可能还没有记录
|
||
// SQL.Add(" left join XLXSJGBCLQDWL on XLXSJGBCLQDWL_JGBID=XLXSJGBCLQD_JGBID and XLXSJGBCLQDWL_XH=XLXSJGBCLQD_XH");
|
||
// for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
// {
|
||
// sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
// sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
// if (sBJHQ.Equals("2"))//2|物料行情
|
||
// {
|
||
// SQL.Add(string.Format(" left join XLXSWLHQ w{0} on w{0}.XLXSWLHQ_JGBID='{1}' and w{0}.XLXSWLHQ_WLID=XLXSJGBCLQDWL_WLID{0}", sCLQDL.Replace("第", "").Replace("列", ""), sJGBID1));
|
||
|
||
// if (sBJDHQLX.Equals("BJDHQ"))//报价单行情
|
||
// {
|
||
// //关联XLXSBJDWLHQ,获取报价单物料行情
|
||
// SQL.Add(" left join ");
|
||
// SQL.Add(" (");
|
||
// SQL.Add(" select XLXSBJDWLHQ_WLID,");
|
||
// SQL.Add(string.Format("case when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSBJDWLHQ_WSJGF", sTBJCLID, dTJ));
|
||
// SQL.Add(string.Format(" when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSBJDWLHQ_WSJGF", sLBJCLID, dLJ));
|
||
// SQL.Add(" else XLXSBJDWLHQ_WSJG end as WSJG, ");
|
||
// SQL.Add(string.Format("case when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSBJDWLHQ_HSJGF", sTBJCLID, dTJ));
|
||
// SQL.Add(string.Format(" when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+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=XLXSJGBCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
// //关联XLXSWLHQ,获取物料行情
|
||
// SQL.Add(" left join");
|
||
// SQL.Add(" (");
|
||
// SQL.Add(" select XLXSWLHQ_WLID,");
|
||
// SQL.Add(string.Format("case when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSWLHQ_WSJGF", sTBJCLID, dTJ));
|
||
// SQL.Add(string.Format(" when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSWLHQ_WSJGF", sLBJCLID, dLJ));
|
||
// SQL.Add(" else XLXSWLHQ_WSJG end as WSJG, ");
|
||
// SQL.Add(string.Format("case when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSWLHQ_HSJGF", sTBJCLID, dTJ));
|
||
// SQL.Add(string.Format(" when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSWLHQ_HSJGF", sLBJCLID, dLJ));
|
||
// SQL.Add(" else XLXSWLHQ_HSJG end as 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(string.Format(" where XLXSWLHQ_JGBID='{0}'", sJGBID));
|
||
// SQL.Add(string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSJGBCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
// }
|
||
// else
|
||
// {
|
||
// SQL.Add(" left join");
|
||
// SQL.Add(" (");
|
||
// SQL.Add(" select XLXSWLHQ_WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG");
|
||
// SQL.Add(" from XLXSWLHQ");
|
||
// SQL.Add(string.Format(" where XLXSWLHQ_JGBID='{0}'", sJGBID));
|
||
|
||
// SQL.Add(string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSJGBCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
// }
|
||
// }
|
||
// }
|
||
// SQL.Add(" where XLXSJGBCLQD_JGBID=:pJGBID1 and XLXSJGBCLQD_JJFPSJ=:pJJFPSJ and XLXSJGBCLQD_JGCZBID=:pJGCZBID and XLXSJGBCLQD_JGCZBBBID=:pJGCZBBBID");
|
||
// SQL.Add(" ) b ");
|
||
// SQL.Add(" on( ");
|
||
// SQL.Add(" a.XLXSJGBCLQD_JGBID=:pJGBID1 and a.XLXSJGBCLQD_JJFPSJ=:pJJFPSJ and a.XLXSJGBCLQD_JGCZBID=:pJGCZBID and a.XLXSJGBCLQD_JGCZBBBID=:pJGCZBBBID");
|
||
// SQL.Add(" and a.XLXSJGBCLQD_JGBID=b.JGBID and a.XLXSJGBCLQD_XH=b.XH ");
|
||
// if (!sBJDID.Trim().Equals(""))//这段是否有必要限制到具体要重算的产品,还是整个尺重表一起算,需要看项目执行效果再定
|
||
// {
|
||
// if (bNeedCalJGBEx)
|
||
// {
|
||
// //衍生扩展的价格表支持被报价单重算,需要弄个临时表,将如下语句的查询结果插入到临时表中,然后用临时表与所依价格表明细进行关联
|
||
|
||
// }
|
||
// else
|
||
// {
|
||
// //SQL.Add(" and exists (");
|
||
// //SQL.Add("select top 1 XLXSBJDMX_BJDID");
|
||
// //SQL.Add(" from XLXSBJDMX");
|
||
// //SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
// //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.XLXSJGBCLQD_WSCLCBC= ");
|
||
// SQL.Add(" (XLXSJGBCLQD_WSCLCBC+ ");
|
||
// if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一)
|
||
// {
|
||
// for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
// {
|
||
// sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
// sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
// if (sBJHQ.Equals("2"))//2|物料行情
|
||
// {
|
||
// SQL.Add(string.Format("CEILING(RoundFix(XLXSJGBCLQD_ZL{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]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
// sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
// if (sBJHQ.Equals("2"))//2|物料行情
|
||
// {
|
||
// SQL.Add(string.Format("XLXSJGBCLQD_ZL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
// }
|
||
// }
|
||
// }
|
||
// SQL.Add("0), ");
|
||
// SQL.Add(" XLXSJGBCLQD_HSCLCBC=");
|
||
// SQL.Add(" (XLXSJGBCLQD_HSCLCBC+ ");
|
||
// if (sJSBLFS.Equals("C1"))//C1|进一法(材料价各分项进一)
|
||
// {
|
||
// for (int i = 0; i < dsCLQDL.Tables[0].Rows.Count; i++)
|
||
// {
|
||
// sCLQDL = dsCLQDL.Tables[0].Rows[i]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
// sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
// if (sBJHQ.Equals("2"))//2|物料行情
|
||
// {
|
||
// SQL.Add(string.Format("CEILING(RoundFix(XLXSJGBCLQD_ZL{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]["XLXSJGBYLLM_CLQDL"].ToString().Trim();
|
||
// sBJHQ = dsCLQDL.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim();
|
||
// if (sBJHQ.Equals("2"))//2|物料行情
|
||
// {
|
||
// SQL.Add(string.Format("XLXSJGBCLQD_ZL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", "")));
|
||
// }
|
||
// }
|
||
// }
|
||
// SQL.Add("0)");
|
||
// SQL.ParamByName("pJGBID1").Value = sJGBID1;
|
||
// SQL.ParamByName("pJJFPSJ").Value = tmpJJFPSJ;
|
||
// SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID;
|
||
// SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID;
|
||
// dberp.ExecSQL(SQL);
|
||
//}
|
||
}
|
||
if (sBJDID.Equals(""))
|
||
{
|
||
DateTime tWHSJCondition = MISproUtils.GetServerTime();
|
||
|
||
//重算价格表基价前清空基价、表价
|
||
SQL.Clear();
|
||
SQL.Add(" update XLXSJGBMX set XLXSJGBMX_WSJJ = 0, XLXSJGBMX_WSBJ = 0, XLXSJGBMX_HSJJ = 0, XLXSJGBMX_HSBJ = 0, XLXSJGBMX_WHR=:pWHR,XLXSJGBMX_WHRID=:pWHRID,XLXSJGBMX_WHSJ=:pWHSJ ");
|
||
SQL.Add(" where XLXSJGBMX_JGBID=:pJGBID ");
|
||
SQL.Add(" and XLXSJGBMX_SYXH=0 ");
|
||
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)
|
||
{
|
||
/*
|
||
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 XLXSJGBCLQD b ");
|
||
SQL.Add(" on ( ");
|
||
SQL.Add(" XLXSJGBMX_JGBID=:pJGBID ");
|
||
SQL.Add(" and XLXSJGBCLQD_JGBID=:pJGBID1 and XLXSJGBMX_XH=XLXSJGBCLQD_XH ");
|
||
SQL.Add(" and XLXSJGBMX_SYXH=0 ");
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一)
|
||
{
|
||
SQL.Add(string.Format(" XLXSJGBMX_WSJJ=CEILING(RoundFix(isnull(XLXSJGBCLQD_WSCLCBC,0)*{0},8))/{0},XLXSJGBMX_HSJJ=CEILING(RoundFix(isnull(XLXSJGBCLQD_HSCLCBC,0)*{0},8))/{0},", Math.Pow(10.0, iXSWS)));
|
||
SQL.Add(string.Format(" XLXSJGBMX_WSBJ=CEILING(RoundFix(isnull(XLXSJGBCLQD_WSCLCBC,0)*{0},8))/{0},XLXSJGBMX_HSBJ=CEILING(RoundFix(isnull(XLXSJGBCLQD_HSCLCBC,0)*{0},8))/{0},", Math.Pow(10.0, iXSWS)));
|
||
}
|
||
else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位
|
||
{
|
||
SQL.Add(string.Format(" XLXSJGBMX_WSJJ=CEILING(RoundFix(isnull(XLXSJGBCLQD_WSCLCBC,0)*{0},8))/{0},XLXSJGBMX_HSJJ=CEILING(RoundFix(isnull(XLXSJGBCLQD_HSCLCBC,0)*{0},8))/{0},", Math.Pow(10.0, iXSWS)));
|
||
SQL.Add(string.Format(" XLXSJGBMX_WSBJ=CEILING(RoundFix(isnull(XLXSJGBCLQD_WSCLCBC,0),{0})/10)*10,XLXSJGBMX_HSBJ=CEILING(RoundFix(isnull(XLXSJGBCLQD_HSCLCBC,0),{0})/10)*10,", iXSWS.ToString().Trim()));
|
||
}
|
||
else
|
||
{
|
||
SQL.Add(" XLXSJGBMX_WSJJ=RoundFix(isnull(XLXSJGBCLQD_WSCLCBC,0)," + iXSWS.ToString() + "),XLXSJGBMX_HSJJ=RoundFix(isnull(XLXSJGBCLQD_HSCLCBC,0)," + iXSWS.ToString() + "),");
|
||
SQL.Add(" XLXSJGBMX_WSBJ=RoundFix(isnull(XLXSJGBCLQD_WSCLCBC,0)," + iXSWS.ToString() + "),XLXSJGBMX_HSBJ=RoundFix(isnull(XLXSJGBCLQD_HSCLCBC,0)," + iXSWS.ToString() + "),");
|
||
}
|
||
SQL.Add(" XLXSJGBMX_WHR=:pWHR, ");
|
||
SQL.Add(" XLXSJGBMX_WHRID=:pWHRID, ");
|
||
SQL.Add(" XLXSJGBMX_WHSJ=:pWHSJ ");
|
||
SQL.ParamByName("pJGBID").Value = sJGBID;
|
||
SQL.ParamByName("pJGBID1").Value = sJGBID1;
|
||
SQL.ParamByName("pWHR").Value = sWHR;
|
||
SQL.ParamByName("pWHRID").Value = sWHRID;
|
||
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
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, ");
|
||
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 = 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.ParamByName("pOLDJGBID").Value = sJGBID1;
|
||
SQL.ParamByName("pNEWJGBID").Value = sJGBID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
}
|
||
}
|
||
|
||
public static void UpdateBJDMXByGS(TDatabase dberp, TSQL SQL, string sTZQCPBJGS, string sBJDID, string sBJFLID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sBJLJJCLLX, string sCPBJMRXSWS, string sXHList, int minBJDXH, bool bYBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition)
|
||
{
|
||
UpdateBJDMXByGS(dberp, SQL, sTZQCPBJGS, sBJDID, sBJFLID, tmpXSWS, sJCLLX, sLJJCLLX, sBJLJJCLLX, sCPBJMRXSWS, sXHList, minBJDXH, bYBJ, bWG, bFWG, sTLcpList, tWHSJCondition, false);
|
||
}
|
||
public static void UpdateBJDMXByGS(TDatabase dberp, TSQL SQL, string sTZQCPBJGS, string sBJDID, string sBJFLID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sBJLJJCLLX, string sCPBJMRXSWS, string sXHList, int minBJDXH, bool bYBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition, bool bYLZD)
|
||
{
|
||
UpdateBJDMXByGS( dberp, SQL, sTZQCPBJGS, sBJDID, sBJFLID, tmpXSWS, sJCLLX, sLJJCLLX, sBJLJJCLLX, sCPBJMRXSWS, sXHList, minBJDXH, bYBJ, bWG, bFWG, sTLcpList, tWHSJCondition, bYLZD,0);
|
||
}
|
||
|
||
public static void UpdateBJDMXByGS(TDatabase dberp, TSQL SQL, string sTZQCPBJGS, string sBJDID, string sBJFLID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sBJLJJCLLX, string sCPBJMRXSWS, string sXHList, int minBJDXH, bool bYBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition, bool bYLZD,int VBJDID)
|
||
{
|
||
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
|
||
BJFLXX bjflxx = XLBJDUtils.GetBJFLXX(sBJFLID);
|
||
string sJSJJCLLX = XLBJDUtils.GetBJFLXX(sBJFLID).XLXSBJFL_JSJJCLLX;
|
||
sTZQCPBJGS = sTZQCPBJGS.Replace("JGBBJ", "XXX01");
|
||
|
||
sTZQCPBJGS = sTZQCPBJGS.Replace("BJ", "tar.XLXSBJDYZZ0_YZZ");
|
||
sTZQCPBJGS = sTZQCPBJGS.Replace("XXX01", "sor.XLXSBJDMX_JGBBJ");
|
||
sTZQCPBJGS = sTZQCPBJGS.Replace(" ", "").Replace("×", "*").Replace("100", "100.00");
|
||
sTZQCPBJGS = sTZQCPBJGS.Replace("round", "roundFix");
|
||
sTZQCPBJGS = sTZQCPBJGS.Replace("TZZDXJ", "sor.XLXSBJDMX_TZZDXJ");
|
||
if (sTZQCPBJGS.Trim().Equals(""))
|
||
sTZQCPBJGS = "sor.XLXSBJDMX_JGBBJ";
|
||
else
|
||
sTZQCPBJGS = "(" + sTZQCPBJGS + ")";
|
||
string sBTYZJYSQL = "";//必填因子校验SQL
|
||
SQL.Clear();
|
||
SQL.Add("select XLXSBJFLYZ_YZID ");
|
||
SQL.Add(" from XLXSBJFLYZ");
|
||
SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_YZID=XLXSBJFLYZ_YZID");
|
||
SQL.Add(" where XLXSBJFLYZ_BJFLID=:pBJFLID");
|
||
SQL.Add(" and isnull(XLXSTZYZ_YZZBT,'N') = 'Y' ");
|
||
SQL.Add(" order by XLXSTZYZ_TJYZID,XLXSTZYZ_XSXH,XLXSBJFLYZ_YZID");
|
||
SQL.ParamByName("pBJFLID").Value = sBJFLID;
|
||
DataSet dsBJDYZ = dberp.OpenDataSet(SQL);
|
||
if (dsBJDYZ.Tables[0].Rows.Count > 0)
|
||
{
|
||
for (int i = 0; i < dsBJDYZ.Tables[0].Rows.Count; i++)
|
||
{
|
||
if (sBTYZJYSQL.Equals(""))
|
||
sBTYZJYSQL = "*( case ";
|
||
string sBTYZZ_SQL = string.Format("tar.XLXSBJDYZZ0_YZZ{0}", dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim().Replace("BJ", ""));
|
||
sBTYZJYSQL += "when " + sBTYZZ_SQL + " = 0 then 0 ";
|
||
}
|
||
if (!sBTYZJYSQL.Equals(""))
|
||
sBTYZJYSQL += " else 1 end )";
|
||
sTZQCPBJGS = sTZQCPBJGS + sBTYZJYSQL;
|
||
}
|
||
string sCPBJBLXSWS = Math.Pow(10, -1 * CMISproConvert.StrToFloat(sCPBJMRXSWS)).ToString("F9");
|
||
//区别非锁定-sqlBJJE,XLXSBJDMX_BJSDBZ
|
||
string sqlBJJE = string.Format("RoundFix(RoundFix((" + sTZQCPBJGS + "*(1+XLXSBJDMX_TZCPBJ/100))/{0},0)*{0}*XLXSBJDMX_BJSL+XLXSBJDMX_TZBJJE,2)", sCPBJBLXSWS);
|
||
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDMX sor ");
|
||
SQL.Add(" using (");
|
||
SQL.Add(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,");
|
||
SQL.Add(" XLXSBJDYZZ0_YZZ01,XLXSBJDYZZ0_YZZ02,XLXSBJDYZZ0_YZZ03,XLXSBJDYZZ0_YZZ04,XLXSBJDYZZ0_YZZ05, ");
|
||
SQL.Add(" XLXSBJDYZZ0_YZZ06,XLXSBJDYZZ0_YZZ07,XLXSBJDYZZ0_YZZ08,XLXSBJDYZZ0_YZZ09,XLXSBJDYZZ0_YZZ10, ");
|
||
SQL.Add(" XLXSBJDYZZ0_YZZ11,XLXSBJDYZZ0_YZZ12,XLXSBJDYZZ0_YZZ13,XLXSBJDYZZ0_YZZ14,XLXSBJDYZZ0_YZZ15, ");
|
||
SQL.Add(" XLXSBJDYZZ0_YZZ16,XLXSBJDYZZ0_YZZ17,XLXSBJDYZZ0_YZZ18,XLXSBJDYZZ0_YZZ19,XLXSBJDYZZ0_YZZ20 from XLXSBJDMX ");
|
||
SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID = XLXSBJDMX_BJDID and XLXSBJDYZZ0_XH = XLXSBJDMX_XH ");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID ");
|
||
SQL.Add(" and XLXSBJDMX_BJSDBZ<>'Y'");
|
||
//SQL.Add(" and upper(XLXSBJDMX_JLDW) in ('KM','M','千米','米') ");特意不执行,非长度单位与界面直接维护逻辑一致,按因子值正常计算
|
||
if (bYLZD)
|
||
{
|
||
SQL.Add(@" and exists( select 1 from XLXSBJYLZD
|
||
left join XLXSBJYLZDMX on XLXSBJYLZD_SQDH=XLXSBJYLZDMX_SQDH
|
||
where XLXSBJYLZD_BJDID=:pBJDID and XLXSBJYLZDMX_BJDXH=XLXSBJDMX_XH ) ");
|
||
}
|
||
else
|
||
{
|
||
|
||
if (minBJDXH != 0)
|
||
{
|
||
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
|
||
SQL.ParamByName("minBJDXH").Value = minBJDXH;
|
||
}
|
||
if (VBJDID > 0)
|
||
{
|
||
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
|
||
SQL.ParamByName("pID").Value = VBJDID;
|
||
}
|
||
else
|
||
{
|
||
if (!sXHList.Trim().Equals(""))
|
||
{
|
||
SQL.Add(" and " + XLBJDUtils.GetWhereEqual("XLXSBJDMX_XH", sXHList));
|
||
}
|
||
}
|
||
}
|
||
|
||
if (bYBJ)
|
||
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
|
||
if (bWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ='Y'");
|
||
if (bFWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ<>'Y' ");
|
||
if (!sTLcpList.Equals(""))
|
||
SQL.Add(" and exists(select 1 from XLXHB where XLXHB_XLXHID=UPPER(XLXSBJDMX_XLXHID) and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTLcpList) + ") ");
|
||
if (tWHSJCondition != DateTime.MinValue)
|
||
{
|
||
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
|
||
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
|
||
}
|
||
SQL.Add(" ) tar ");
|
||
SQL.Add(" on ( ");
|
||
SQL.Add(" tar.XLXSBJDMX_BJDID = sor.XLXSBJDMX_BJDID ");
|
||
SQL.Add(" and tar.XLXSBJDMX_XH = sor.XLXSBJDMX_XH ");
|
||
SQL.Add(" and sor.XLXSBJDMX_BJDID=:pBJDID ");
|
||
SQL.Add(" and sor.XLXSBJDMX_BJSDBZ<>'Y'");
|
||
if (bYLZD)
|
||
{
|
||
SQL.Add(@" and exists( select 1 from XLXSBJYLZD
|
||
left join XLXSBJYLZDMX on XLXSBJYLZD_SQDH=XLXSBJYLZDMX_SQDH
|
||
where XLXSBJYLZD_BJDID=:pBJDID and XLXSBJYLZDMX_BJDXH=sor.XLXSBJDMX_XH ) ");
|
||
}
|
||
else
|
||
{
|
||
|
||
if (VBJDID > 0)
|
||
{
|
||
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pID and V_BJDXH_BJDID = sor.XLXSBJDMX_BJDID and V_BJDXH_BJDXH = sor.XLXSBJDMX_XH) ");
|
||
SQL.ParamByName("pID").Value = VBJDID;
|
||
}
|
||
else
|
||
{
|
||
if (!sXHList.Equals(""))
|
||
{
|
||
SQL.Add(" and " + XLBJDUtils.GetWhereEqual("sor.XLXSBJDMX_XH", sXHList));
|
||
}
|
||
}
|
||
}
|
||
if (minBJDXH != 0)
|
||
{
|
||
SQL.Add("and sor.XLXSBJDMX_XH >= :minBJDXH");
|
||
SQL.ParamByName("minBJDXH").Value = minBJDXH;
|
||
}
|
||
if (bYBJ)
|
||
SQL.Add(" and sor.XLXSBJDMX_JGBBJ<>0.0");
|
||
if (bWG)
|
||
SQL.Add(" and sor.XLXSBJDMX_WGCPBZ='Y'");
|
||
if (bFWG)
|
||
SQL.Add(" and sor.XLXSBJDMX_WGCPBZ<>'Y' ");
|
||
if (!sTLcpList.Equals(""))
|
||
SQL.Add(" and exists(select 1 from XLXHB where XLXHB_XLXHID=UPPER(sor.XLXSBJDMX_XLXHID) and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTLcpList) + ") ");
|
||
if (tWHSJCondition != DateTime.MinValue)
|
||
{
|
||
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
|
||
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
|
||
}
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add("XLXSBJDMX_TZQCPBJ=RoundFix(" + sTZQCPBJGS + "," + (CMISproConvert.StrToInt(sCPBJMRXSWS) > tmpXSWS ? CMISproConvert.StrToInt(sCPBJMRXSWS) : tmpXSWS) + "),");//保留精度高的
|
||
SQL.Add(string.Format("XLXSBJDMX_CPBJ=RoundFix((" + sTZQCPBJGS + "*(1+XLXSBJDMX_TZCPBJ/100))/{0},0)*{0},", sCPBJBLXSWS));
|
||
SQL.Add(string.Format("XLXSBJDMX_TZQBJJE=RoundFix(RoundFix((" + sTZQCPBJGS + "*(1+XLXSBJDMX_TZCPBJ/100))/{0},0)*{0}*XLXSBJDMX_BJSL,2),", sCPBJBLXSWS));
|
||
SQL.Add("XLXSBJDMX_BJJE=" + sqlBJJE + ",");
|
||
|
||
if (bjflxx.XLXSBJFL_XSLSBJ == "Y")
|
||
SQL.Text = SQL.Text.Replace("sor.XLXSBJDMX_JGBBJ", " case when sor.XLXSBJDMX_LSJGBBJ=0 then sor.XLXSBJDMX_JGBBJ else sor.XLXSBJDMX_LSJGBBJ end ");
|
||
if (sJCLLX.Equals("1"))//表价价差率公式
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE =RoundFix(" + sqlBJJE + "-RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)," + tmpXSWS + "), ");
|
||
}
|
||
else if (sJCLLX.Equals("2"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL =case when RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL-" + sqlBJJE + ")/(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL),2) end,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE =RoundFix(RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)-" + sqlBJJE + "," + tmpXSWS + "), ");
|
||
}
|
||
else if (sJCLLX.Equals("3"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE =0, ");
|
||
}
|
||
else if (sJCLLX.Equals("4"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL =case when RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + " - XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL)/(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL),2) end,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE =RoundFix(" + sqlBJJE + " - RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)," + tmpXSWS + "), ");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL=0,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE=0,");
|
||
}
|
||
if (sLJJCLLX.Equals("1"))//料价价差率公式
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_CLCB*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else if (sLJJCLLX.Equals("2"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else if (sLJJCLLX.Equals("3"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL =case when XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL)/(XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL),2) end,");
|
||
}
|
||
else if (sLJJCLLX.Equals("4"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL=0,");
|
||
}
|
||
|
||
SQL.Add("XLXSBJDMX_JSJJE=RoundFix(XLXSBJDMX_JSJG*XLXSBJDMX_BJSL,2),");
|
||
if (sJSJJCLLX.Equals("1"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JSJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_JSJG*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else if (sJSJJCLLX.Equals("2"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JSJJCL =case when XLXSBJDMX_JSJG*XLXSBJDMX_BJSL=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_JSJG*XLXSBJDMX_BJSL)/(XLXSBJDMX_JSJG*XLXSBJDMX_BJSL),2) end,");
|
||
}
|
||
else if (sJSJJCLLX.Equals("3"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JSJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_JSJG*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("XLXSBJDMX_JSJJCL=0,");
|
||
}
|
||
|
||
if (sBJLJJCLLX.Equals("1"))//表价料价价差率公式
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJLJJCL =case XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ when 0 then 0 else RoundFix((XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ - XLXSBJDMX_BJSL*XLXSBJDMX_BJDHQCLCB)/ (XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ) * 100,2) end,");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJLJJCL=0,");
|
||
}
|
||
SQL.Add("XLXSBJDMX_BJTJCZ='TJYZJS',");
|
||
SQL.Add("XLXSBJDMX_CLCBJCLSDBZ='N'");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
sqlBJJE = "RoundFix(XLXSBJDMX_CPBJ*XLXSBJDMX_BJSL,2)+XLXSBJDMX_TZBJJE";
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDMX sor ");
|
||
SQL.Add(" using (");
|
||
SQL.Add(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,");
|
||
SQL.Add(" XLXSBJDYZZ0_YZZ01,XLXSBJDYZZ0_YZZ02,XLXSBJDYZZ0_YZZ03,XLXSBJDYZZ0_YZZ04,XLXSBJDYZZ0_YZZ05, ");
|
||
SQL.Add(" XLXSBJDYZZ0_YZZ06,XLXSBJDYZZ0_YZZ07,XLXSBJDYZZ0_YZZ08,XLXSBJDYZZ0_YZZ09,XLXSBJDYZZ0_YZZ10, ");
|
||
SQL.Add(" XLXSBJDYZZ0_YZZ11,XLXSBJDYZZ0_YZZ12,XLXSBJDYZZ0_YZZ13,XLXSBJDYZZ0_YZZ14,XLXSBJDYZZ0_YZZ15, ");
|
||
SQL.Add(" XLXSBJDYZZ0_YZZ16,XLXSBJDYZZ0_YZZ17,XLXSBJDYZZ0_YZZ18,XLXSBJDYZZ0_YZZ19,XLXSBJDYZZ0_YZZ20 from XLXSBJDMX ");
|
||
SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID = XLXSBJDMX_BJDID and XLXSBJDYZZ0_XH = XLXSBJDMX_XH ");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID ");
|
||
SQL.Add(" and XLXSBJDMX_BJSDBZ='Y'");
|
||
SQL.Add(" and (XLXSBJDMX_JLDW in ('Km','M','千米','米') ");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" or XLXSBJDMX_JLDW='{0}'", sKey));
|
||
}
|
||
SQL.Add(" ) ");
|
||
if (bYLZD)
|
||
{
|
||
SQL.Add(@" and exists( select 1 from XLXSBJYLZD
|
||
left join XLXSBJYLZDMX on XLXSBJYLZD_SQDH=XLXSBJYLZDMX_SQDH
|
||
where XLXSBJYLZD_BJDID=:pBJDID and XLXSBJYLZDMX_BJDXH=XLXSBJDMX_XH ) ");
|
||
}
|
||
else
|
||
{
|
||
|
||
if (minBJDXH != 0)
|
||
{
|
||
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
|
||
SQL.ParamByName("minBJDXH").Value = minBJDXH;
|
||
}
|
||
if (VBJDID > 0)
|
||
{
|
||
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
|
||
SQL.ParamByName("pID").Value = VBJDID;
|
||
}
|
||
else
|
||
{
|
||
if (!sXHList.Trim().Equals(""))
|
||
{
|
||
SQL.Add(" and " + XLBJDUtils.GetWhereEqual("XLXSBJDMX_XH", sXHList));
|
||
}
|
||
}
|
||
}
|
||
if (bYBJ)
|
||
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
|
||
if (bWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ='Y'");
|
||
if (bFWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ<>'Y' ");
|
||
if (!sTLcpList.Equals(""))
|
||
SQL.Add(" and exists(select 1 from XLXHB where XLXHB_XLXHID=UPPER(XLXSBJDMX_XLXHID) and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTLcpList) + ") ");
|
||
if (tWHSJCondition != DateTime.MinValue)
|
||
{
|
||
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
|
||
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
|
||
}
|
||
SQL.Add(" ) tar ");
|
||
SQL.Add(" on ( ");
|
||
SQL.Add(" tar.XLXSBJDMX_BJDID = sor.XLXSBJDMX_BJDID ");
|
||
SQL.Add(" and tar.XLXSBJDMX_XH = sor.XLXSBJDMX_XH ");
|
||
SQL.Add(" and sor.XLXSBJDMX_BJDID=:pBJDID ");
|
||
SQL.Add(" and sor.XLXSBJDMX_BJSDBZ='Y'");
|
||
SQL.Add(" and (sor.XLXSBJDMX_JLDW in ('Km','M','千米','米') ");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" or sor.XLXSBJDMX_JLDW='{0}'", sKey));
|
||
}
|
||
SQL.Add(" ) ");
|
||
if (bYLZD)
|
||
{
|
||
SQL.Add(@" and exists( select 1 from XLXSBJYLZD
|
||
left join XLXSBJYLZDMX on XLXSBJYLZD_SQDH=XLXSBJYLZDMX_SQDH
|
||
where XLXSBJYLZD_BJDID=:pBJDID and XLXSBJYLZDMX_BJDXH=sor.XLXSBJDMX_XH ) ");
|
||
}
|
||
else
|
||
{
|
||
|
||
if (minBJDXH != 0)
|
||
{
|
||
SQL.Add("and sor.XLXSBJDMX_XH >= :minBJDXH");
|
||
SQL.ParamByName("minBJDXH").Value = minBJDXH;
|
||
}
|
||
if (VBJDID > 0)
|
||
{
|
||
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pID and V_BJDXH_BJDID = sor.XLXSBJDMX_BJDID and V_BJDXH_BJDXH = sor.XLXSBJDMX_XH) ");
|
||
SQL.ParamByName("pID").Value = VBJDID;
|
||
}
|
||
else
|
||
{
|
||
if (!sXHList.Equals(""))
|
||
{
|
||
SQL.Add(" and " + XLBJDUtils.GetWhereEqual("sor.XLXSBJDMX_XH", sXHList));
|
||
}
|
||
}
|
||
}
|
||
if (bYBJ)
|
||
SQL.Add(" and sor.XLXSBJDMX_JGBBJ<>0.0");
|
||
if (bWG)
|
||
SQL.Add(" and sor.XLXSBJDMX_WGCPBZ='Y'");
|
||
if (bFWG)
|
||
SQL.Add(" and sor.XLXSBJDMX_WGCPBZ<>'Y' ");
|
||
if (!sTLcpList.Equals(""))
|
||
SQL.Add(" and exists(select 1 from XLXHB where XLXHB_XLXHID=UPPER(sor.XLXSBJDMX_XLXHID) and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTLcpList) + ") ");
|
||
if (tWHSJCondition != DateTime.MinValue)
|
||
{
|
||
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
|
||
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
|
||
}
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add("XLXSBJDMX_TZQCPBJ=RoundFix(" + sTZQCPBJGS + "," + (CMISproConvert.StrToInt(sCPBJMRXSWS) > tmpXSWS ? CMISproConvert.StrToInt(sCPBJMRXSWS) : tmpXSWS) + "),");//保留精度高的
|
||
SQL.Add("XLXSBJDMX_TZQBJJE=RoundFix(XLXSBJDMX_CPBJ*XLXSBJDMX_BJSL,2),");
|
||
SQL.Add("XLXSBJDMX_BJJE=" + sqlBJJE + ",");
|
||
|
||
if (bjflxx.XLXSBJFL_XSLSBJ == "Y")
|
||
SQL.Text = SQL.Text.Replace("sor.XLXSBJDMX_JGBBJ", " case when sor.XLXSBJDMX_LSJGBBJ=0 then sor.XLXSBJDMX_JGBBJ else sor.XLXSBJDMX_LSJGBBJ end ");
|
||
if (sJCLLX.Equals("1"))//表价价差率公式
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE =RoundFix(" + sqlBJJE + "-RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)," + tmpXSWS + "), ");
|
||
}
|
||
else if (sJCLLX.Equals("2"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL =case when RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL-" + sqlBJJE + ")/(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL),2) end,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE =RoundFix(RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)-" + sqlBJJE + "," + tmpXSWS + "), ");
|
||
}
|
||
else if (sJCLLX.Equals("3"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE =0, ");
|
||
}
|
||
else if (sJCLLX.Equals("4"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL =case when RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + " - XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL)/(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL),2) end,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE =RoundFix(" + sqlBJJE + " - RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)," + tmpXSWS + "), ");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJJCL=0,");
|
||
SQL.Add("XLXSBJDMX_JGBBJJCE=0,");
|
||
}
|
||
if (sLJJCLLX.Equals("1"))//料价价差率公式
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_CLCB*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else if (sLJJCLLX.Equals("2"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else if (sLJJCLLX.Equals("3"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL =case when XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL)/(XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL),2) end,");
|
||
}
|
||
else if (sLJJCLLX.Equals("4"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("XLXSBJDMX_CLCBJCL=0,");
|
||
}
|
||
|
||
SQL.Add("XLXSBJDMX_JSJJE=RoundFix(XLXSBJDMX_JSJG*XLXSBJDMX_BJSL,2),");
|
||
if (sJSJJCLLX.Equals("1"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JSJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_JSJG*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else if (sJSJJCLLX.Equals("2"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JSJJCL =case when XLXSBJDMX_JSJG*XLXSBJDMX_BJSL=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_JSJG*XLXSBJDMX_BJSL)/(XLXSBJDMX_JSJG*XLXSBJDMX_BJSL),2) end,");
|
||
}
|
||
else if (sJSJJCLLX.Equals("3"))
|
||
{
|
||
SQL.Add("XLXSBJDMX_JSJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_JSJG*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("XLXSBJDMX_JSJJCL=0,");
|
||
}
|
||
|
||
|
||
if (sBJLJJCLLX.Equals("1"))//表价料价价差率公式
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJLJJCL =case XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ when 0 then 0 else RoundFix((XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ - XLXSBJDMX_BJSL*XLXSBJDMX_BJDHQCLCB)/ (XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ) * 100,2) end,");
|
||
}
|
||
else
|
||
{
|
||
SQL.Add("XLXSBJDMX_JGBBJLJJCL=0,");
|
||
}
|
||
SQL.Add("XLXSBJDMX_CLCBJCLSDBZ='N'");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
//处理调整报价%
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_TZCPBJ=(case when XLXSBJDMX_TZQCPBJ=0.0 then 0.0 else 100.0*(XLXSBJDMX_CPBJ-XLXSBJDMX_TZQCPBJ)/XLXSBJDMX_TZQCPBJ end)");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_BJSDBZ='Y'");
|
||
SQL.Add(" and (XLXSBJDMX_JLDW in ('Km','M','千米','米') ");
|
||
foreach (string sKey in dicLenJLDWTD.Keys)
|
||
{
|
||
SQL.Add(string.Format(" or XLXSBJDMX_JLDW='{0}'", sKey));
|
||
}
|
||
SQL.Add(" ) ");
|
||
if (bYLZD)
|
||
{
|
||
SQL.Add(@" and exists( select 1 from XLXSBJYLZD
|
||
left join XLXSBJYLZDMX on XLXSBJYLZD_SQDH=XLXSBJYLZDMX_SQDH
|
||
where XLXSBJYLZD_BJDID=:pBJDID and XLXSBJYLZDMX_BJDXH=XLXSBJDMX_XH ) ");
|
||
}
|
||
else
|
||
{
|
||
|
||
if (minBJDXH != 0)
|
||
{
|
||
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
|
||
SQL.ParamByName("minBJDXH").Value = minBJDXH;
|
||
}
|
||
if (VBJDID > 0)
|
||
{
|
||
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
|
||
SQL.ParamByName("pID").Value = VBJDID;
|
||
}
|
||
else
|
||
{
|
||
if (!sXHList.Trim().Equals(""))
|
||
{
|
||
SQL.Add(" and " + XLBJDUtils.GetWhereEqual("XLXSBJDMX_XH", sXHList));
|
||
}
|
||
}
|
||
}
|
||
if (bYBJ)
|
||
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
|
||
if (bWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ='Y'");
|
||
if (bFWG)
|
||
SQL.Add(" and XLXSBJDMX_WGCPBZ<>'Y' ");
|
||
if (!sTLcpList.Equals(""))
|
||
SQL.Add(" and exists(select 1 from XLXHB where XLXHB_XLXHID=UPPER(XLXSBJDMX_XLXHID) and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTLcpList) + ") ");
|
||
if (tWHSJCondition != DateTime.MinValue)
|
||
{
|
||
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
|
||
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
|
||
}
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
}
|
||
}
|
||
}
|