Files
U20261363_N_XLXSBJ/.svn/pristine/04/049ed3df3a15d6b9a09209bbd839380d3db1fef7.svn-base
T
2026-10-13 03:41:34 +08:00

19861 lines
1.1 MiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 System.Text.RegularExpressions;
using GThinking.N_MISPRO.TableCache;
using GThinking.N_MISPRO.Caching;
namespace GThinking.U20261363_N_XLXSBJ
{
public class XLBJDUtils
{
public static string sJCJLDWList = "M、KM、米、千米、KG、T、千克、公斤、吨";
public static string sJCJLDWList_Weg = "KG、T、千克、公斤、吨";
public static int BJCLPriceDecimal
{
get { return CMISproConvert.StrToInt(GetXLXSBJPZXX(100860014).XLXSBJPZ_CLJGXSWS, 3); }
}
public static double ModifiedNum = 0.001;
public static string sJQCDJLDWList = "M、KM、米、千米";
public static int JQJSXSWS = 6;
public static double sCJXS = 0.8;
//报价单调价因子小数位数
public static int JGBYZZDecimal = 3;
//获取长度计量单位换算关系字典
public static Dictionary<string, double> GetLenJLDWTD()
{
Dictionary<string, double> dic = new Dictionary<string, double>();
dic.Add("百米", 100.0);
dic.Add("卷", 100.0);
return dic;
}
public static readonly Dictionary<string, string> CableCodeDict = CreateDictionary();
private static Dictionary<string, string> CreateDictionary()
{
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("超高压线缆", "CGYDL");
dict.Add("中压线缆", "ZYDL");
dict.Add("低压线缆(无屏蔽)", "DYWPPDL");
dict.Add("低压线缆(有屏蔽)", "DYYPPDL");
dict.Add("不带护套布电线", "WHTBDX");
dict.Add("对绞软电线工艺", "WHTDJRDX");
dict.Add("不带护套软电线", "WHTRDX");
dict.Add("带护套布电线", "YHTBDX");
dict.Add("带护套软电线", "YHTRDX");
dict.Add("扁形无护套电线", "BXWHTDX");
dict.Add("光伏电缆", "GFDL");
dict.Add("控制线缆", "KZDL");
dict.Add("架空绝缘线", "JKJYDL");
dict.Add("计算机线缆", "JSJDL");
dict.Add("柔性防火电缆", "FHDL");
dict.Add("高寿命低压电力电缆", "GSMDYDL");
dict.Add("高寿命电线", "GSMDX");
dict.Add("耐热交联聚烯烃电线", "NRJLDX");
dict.Add("云母带矿物绝缘波纹铜护套电缆", "YMDKWJYDL");
dict.Add("额定电压750V及以下矿物绝缘电缆", "KWJYDL");
dict.Add("金属护套无机矿物绝缘电缆", "WJKWJYDL");
dict.Add("铁路数字信号电缆", "TLSZXHDL");
dict.Add("低压变频电缆", "DYBPDL");
dict.Add("中压变频电缆", "ZYBPDL");
dict.Add("铁路信号电缆", "TLXHDL");
dict.Add("应答器数据传输电缆", "TLYDQDL");
dict.Add("铁路列车计轴综合信号电缆", "TLJZDL");
dict.Add("铁路综合屏蔽信号电缆", "TLZHDL");
dict.Add("铁路长途对称通信电缆", "TLDCDL");
dict.Add("数字通信用水平对绞电缆", "SZTXDL");
dict.Add("通信电源用阻燃耐火软电缆", "TXZRNHDL");
dict.Add("企业标准控制电缆", "KZDLQB");
dict.Add("氟塑料控制电缆", "KZDLFSL");
dict.Add("硅橡胶控制电缆", "KZDLGXJ");
dict.Add("耐高温计算机电缆", "JSJDLNGW");
dict.Add("电焊机电缆", "DHJDL");
dict.Add("通用橡套软电缆", "TYXTRDL");
dict.Add("铝绞线", "LJX001");
dict.Add("钢芯铝绞线", "LJX002");
dict.Add("防腐型钢芯铝绞线", "LJX003");
dict.Add("煤矿用控制电缆", "MKKZDL");
dict.Add("船用低压电力电缆", "CYDYDL");
dict.Add("采煤机软电缆", "MKCMJRDL");
dict.Add("采煤机屏蔽监视加强型软电缆", "MKCMJPBJSRDL");
dict.Add("采煤机金属屏蔽软电缆", "MKCMJJSPBRDL");
dict.Add("移动软电缆", "MKYDRDL");
dict.Add("移动金属屏蔽监视型软电缆", "MKYDJSPBJSRDL");
dict.Add("移动屏蔽软电缆", "MKYDPBRDL");
dict.Add("煤矿用电钻电缆", "MKDZDL");
dict.Add("煤矿用移动轻型软电缆", "MKYDQXRDL");
dict.Add("煤矿用矿工帽灯线", "MKMDX");
dict.Add("煤矿用中压电力电缆", "MKDLDL");
dict.Add("车辆高压电缆", "CLGYDL");
dict.Add("风能电缆", "FNDL");
dict.Add("煤矿用低压电力电缆", "MKDYDLDL");
dict.Add("潜油泵电缆", "QYBDL");
dict.Add("德标汽车低压线", "DBQCDYX");
dict.Add("电动汽车充电用电缆工艺", "DDQCCDYDL");
dict.Add("低压轨道交通车辆电缆工艺", "DYGDJTDL");
dict.Add("动车组第二类型低烟无卤标准壁电缆工艺", "DCZDEDL");
dict.Add("铁路客车用电线电缆工艺", "TLKCYDL");
dict.Add("低烟无卤标准壁电缆工艺", "DCZBZBDL");
dict.Add("家装环保电线工艺", "JZHBDX");
dict.Add("车辆高压电缆工艺", "CLGY001");
dict.Add("升降机电缆工艺", "SJJDL");
dict.Add("煤矿用通信电缆", "MKTXDL");
dict.Add("铝合金光伏电缆工艺", "GFLHJDL");
dict.Add("电机引接线工艺", "DJYJX");
dict.Add("船用低压电力电缆工艺", "CYDYDL");
dict.Add("煤矿用通信电缆工艺", "MKTXDL");
dict.Add("拖链电缆工艺", "TLDL");
dict.Add("扁电缆工艺", "BXYDRDL");
dict.Add("移动橡套卷筒电缆工艺", "YDXTDL");
dict.Add("盾构机用软电缆工艺", "DGJRDL");
dict.Add("船用中压电力电缆工艺", "CYZYDL");
dict.Add("船用控制电缆工艺", "CYKZDL");
dict.Add("船用仪表电缆工艺", "CYYBDL");
dict.Add("船用电线工艺", "CYBDX");
dict.Add("舰用中压电力电缆工艺", "JYZYDL");
dict.Add("舰用低压电力电缆工艺", "JYDYDL");
dict.Add("舰用通信电缆工艺", "JYTXDL");
dict.Add("舰用控制电缆工艺", "JYKZDL");
dict.Add("船用中压变频电力电缆工艺", "CYZYBPDL");
dict.Add("船用低压变频电力电缆工艺", "CYDYBPDL");
dict.Add("海洋工程低压电力电缆工艺", "HYGCDYDL");
dict.Add("海洋工程通信电缆工艺", "HYGCTXDL");
dict.Add("铝合金绞线工艺", "LJX004");
dict.Add("钢芯铝合金绞线工艺", "LJX005");
dict.Add("铝合金芯铝绞线工艺", "LJX006");
dict.Add("铝包钢芯铝绞线工艺", "LJX007");
dict.Add("铝包钢芯铝合金绞线工艺", "LJX008");
dict.Add("日标单芯汽车线工艺", "RBQC01");
dict.Add("日标多芯汽车线工艺", "RBQC02");
dict.Add("国标单芯汽车线工艺", "GBQC01");
dict.Add("国标多芯汽车线工艺", "GBQC02");
dict.Add("美标单芯汽车线工艺", "MBQC01");
dict.Add("新能源单芯汽车线工艺", "XNYQC01");
dict.Add("新能源多芯汽车线工艺", "XNYQC02");
dict.Add("螺旋电缆工艺", "LXDL01");
dict.Add("华通潜油泵电缆", "HTQYBDL");
dict.Add("德标通讯及数据传输用电缆工艺", "DBTXSJCSDL");
dict.Add("EN50525系列工艺", "EN50525");
dict.Add("EN50214系列扁线工艺", "EN50214");
dict.Add("EN50618系列光伏电缆工艺", "EN50618");
dict.Add("EN50620电动汽车充电电缆工艺", "EN50620");
dict.Add("欧标低压电力电缆工艺", "OBDYDL");
dict.Add("欧标电源安装电线工艺", "OBDYAZX");
dict.Add("澳标低压电力电缆工艺", "ABDYDL");
dict.Add("澳标控制电缆工艺", "ABKZDL");
dict.Add("美标UL758电器布线电线电缆工艺", "UL758");
dict.Add("美标UL1277电源和控制托架电缆工艺", "UL1277");
dict.Add("美标UL62软线及装置线工艺", "UL62");
dict.Add("美标UL83热塑性绝缘电线电缆工艺", "UL83");
dict.Add("美标UL44热固性绝缘电线电缆工艺", "UL44");
dict.Add("埃因企标电缆工艺", "ANQBDL");
dict.Add("安装用电线工艺", "DXAZ001");
dict.Add("影视灯光电缆", "YSDGDL");
dict.Add("音响线", "YXX");
dict.Add("射频电缆工艺", "SPTZ001");
dict.Add("移动电器用软电缆工艺", "YDDQYRDL");
dict.Add("煤矿用变频橡套软电缆工艺", "MKBPXTRDL");
dict.Add("汉缆低压乙丙橡胶软电缆", "HLDYYBXJRDL");
dict.Add("汉缆中压乙丙橡胶软电缆", "HLZYYBXJRDL");
dict.Add("梭车用金属屏蔽加强型橡套软电缆", "SCYXTRDL");
dict.Add("铁路贯通地线", "TLGTDX");
dict.Add("铁路通信漏泄同轴电缆", "TLLXTZDL");
dict.Add("核电中压电缆", "HDZYDL");
dict.Add("核电低压电缆", "HDDYDL");
dict.Add("核电站用1E级控制电缆", "HD1EKZDL");
dict.Add("核电测量电缆", "HDCLDL");
dict.Add("核级补偿电缆", "HDBCDL");
dict.Add("舰用核电低压电力电缆", "JYHDDYDL");
dict.Add("舰用核电控制电缆", "JYHDKZDL");
dict.Add("舰用核电通信电缆", "JYHDTXDL");
dict.Add("氟塑料绝缘电力电缆", "FSLDYWPPDL");
dict.Add("氟塑料绝缘有屏蔽电力电缆", "FSLDYYPPDL");
dict.Add("硅橡胶绝缘电力电缆", "GXJDYWPPDL");
dict.Add("硅橡胶绝缘有屏蔽电力电缆", "GXJDYYPPDL");
dict.Add("核电用布电线", "HDYBDX");
dict.Add("储能电缆工艺", "CNDL");
dict.Add("钢绞线工艺", "LJX009");
dict.Add("铝包钢绞线工艺", "LJX010");
dict.Add("补偿电缆工艺", "BCDL");
dict.Add("钢芯耐热铝合金绞线工艺", "LJX011");
dict.Add("铝包钢芯耐热铝合金绞线工艺", "LJX012");
dict.Add("钢芯高强度耐热铝合金绞线工艺", "LJX013");
dict.Add("圆线同心绞铝包殷钢芯铝合金绞线工艺", "LJX014");
dict.Add("钢芯耐热铝合金型线绞线工艺", "LJX015");
dict.Add("凯布斯企标电缆工艺", "KBSQBDL");
dict.Add("欧标直流充电用电缆工艺", "OBZLCDDL");
dict.Add("欧标交流充电用电缆工艺", "OBJLCDDL");
dict.Add("八益专用电缆工艺", "BYZYDL");
dict.Add("核电仪表电缆工艺", "HDYBDL");
dict.Add("核电通信电缆工艺", "HDTXDL");
dict.Add("电气化铁路27.5kV单相交流交联聚乙烯绝缘电缆工艺", "DQDXDL");
dict.Add("DC1500V直流电缆工艺", "DC1500DL");
dict.Add("通信电缆工艺", "TXDL");
dict.Add("核电同轴电缆工艺", "HDTZDL");
dict.Add("氟塑料安装线", "FSLAZDL");
dict.Add("东方电缆自研工艺", "DFDLZYGY");
dict.Add("移动用丁腈聚氯乙烯电缆工艺", "YDYDJJLYXDL");
dict.Add("移动用丁腈聚氯乙烯扁电缆工艺", "YDYDJJLYXBDL");
dict.Add("移动用弹性体软电缆工艺", "YDYTXTRDL");
dict.Add("航空航天用含氟聚合物绝缘电线电缆工艺", "HKHTYHFJHWJYDXDL");
dict.Add("中压交流海底电缆工艺", "ZYJLHDDL");
dict.Add("超高压交流海底电缆工艺", "CGYJLHDDL");
dict.Add("直流海底电缆工艺", "ZLHDDL");
dict.Add("铁路用铜及铜合金绞线工艺", "TLYTJX");
dict.Add("易初专用工艺", "YCZYGY");
dict.Add("防腐钢芯铝合金绞线工艺", "LJX016");
dict.Add("防腐铝包钢芯铝合金绞线工艺", "LJX017");
dict.Add("华菱专用工艺", "HLZYGY");
dict.Add("工业机器人电缆工艺", "GYJQRDL");
dict.Add("橡皮布电线工艺", "XPBDX");
dict.Add("橡套卷筒电缆工艺", "XTJTDL");
return dict;
}
public static double GetCLZL(string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
return GetCLZL(sXLXHID, sXLGGID, sXLBZID, sDYDJID, true);
}
public static double GetCLZL(string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, bool bXSWS)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSCLQD_CLZL ");
sql.Add("from XLXSCLQD ");
sql.Add("where XLXSCLQD_XLXHID=:pXLXHID ");
sql.Add(" and XLXSCLQD_XLGGID=:pXLGGID ");
sql.Add(" and XLXSCLQD_XLBZID=:pXLBZID ");
sql.Add(" and XLXSCLQD_DYDJID=:pDYDJID ");
sql.Add(" and XLXSCLQD_WPID='ZZZZ' ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
if (bXSWS)
return NumberUtils.RoundX(CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString()), 6);
else
return CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString());
}
else
return 0.0;
}
public static double GetCLZL(string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID,string sJGBID)
{
if (string.IsNullOrEmpty(sJGBID))
return GetCLZL(sXLXHID, sXLGGID, sXLBZID, sDYDJID);
string tmpXLXHID = sXLXHID;
string tmpXLGGID = sXLGGID;
string tmpXLBZID = sXLBZID;
string tmpDYDJID = sDYDJID;
int iSYXH = 0;
double dYSJDZ = 1;
double dCLCBYSJDZ = 1;
bool bExistedSYJGBMX = XLBJDUtils.ExistedSYJGBMX(sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBID, ref iSYXH, ref dYSJDZ, ref dCLCBYSJDZ);
if(!bExistedSYJGBMX)
return GetCLZL(sXLXHID, sXLGGID, sXLBZID, sDYDJID);
XLBJDUtils.GetJGBMXBySYXH(sJGBID, iSYXH, ref tmpXLXHID, ref tmpXLGGID, ref tmpXLBZID, ref tmpDYDJID);
return GetCLZL(tmpXLXHID, tmpXLGGID, tmpXLBZID, tmpDYDJID);
}
//初始化字典,value值赋值为0
public static Dictionary<string, double> InitdicYZZ(string sBJFLID, string sTJYS)
{
Dictionary<string, double> dicYZZ = new Dictionary<string, double>();
dicYZZ.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXSTZYZ_YZID ");
sql.Add(" from XLXSTZYZ");
sql.Add(" where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_TJYS = :pTJYS");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:sBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" order by XLXSTZYZ_YZID");
sql.ParamByName("pTJYS").Value = sTJYS.Trim();
sql.ParamByName("sBJFLID").Value = sBJFLID.Trim();
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dicYZZ.Add(ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim(), 0);
}
return dicYZZ;
}
//获取调价因素为" "的报价因子值
public static Dictionary<string, double> GetBJDYZZ0(string sBJFLID, bool bWGCP, bool bWGCPBZChanged, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSBJDYZZ_YZZ,XLXSBJDYZZ_YZID,XLXSTZYZ_MRTJFW,XLXSTZYZ_JJFS from XLXSBJDYZZ,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" order by XLXSBJDYZZ_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZ0 = new Dictionary<string, double>();
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//形如(BJ10,2)
if (!dicYZZ0.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ_YZID"].ToString().Trim()))
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
if ((!IsHS) && (!IsHSWL))
{
dYZZ = dYZZ / NumberUtils.RoundX((1 + dSL), 6);
}
}
string sMRTJFW = "," + ds.Tables[0].Rows[i]["XLXSTZYZ_MRTJFW"].ToString().Trim() + ",";
if (sMRTJFW.Contains(",2,") && !bWGCP)//2|外购产品
{
dYZZ = 0.0;
}
if (sMRTJFW.Contains(",3,") && bWGCP)//3|非外购产品
{
dYZZ = 0.0;
}
if (!bWGCPBZChanged)
{
dicYZZ0.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ_YZID"].ToString().Trim(), dYZZ);
}
else//如果是外购产品标志变了,则只重新获取外购因子、非外购因子的默认值,以免冲掉用户手动修改的因子值
{
if (sMRTJFW.Contains(",2,") || sMRTJFW.Contains(",3,"))
{
dicYZZ0.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ_YZID"].ToString().Trim(), dYZZ);
}
}
}
}
return dicYZZ0;
}
//获取调价因素为“1|付款方式”的报价因子值
public static Dictionary<string, double> GetBJDYZZ1(string sBJFLID, string sPJLX, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDID)
{
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSBJDYZZ1_YZZ,XLXSBJDYZZ1_YZID,XLXSTZYZ_JJFS from XLXSBJDYZZ1,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ1_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ1_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZ1_PJLX =:pPJLX ");
sql.Add(" order by XLXSBJDYZZ1_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pPJLX").Value = sPJLX;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZ1 = InitdicYZZ(sBJFLID, "1");
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ1_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
if ((!IsHS) && (!IsHSWL))
{
dYZZ = dYZZ / NumberUtils.RoundX((1 + dSL), 6);
}
}
//形如(BJ10,2)
if (!dicYZZ1.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ1_YZID"].ToString().Trim()))
{
dicYZZ1.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ1_YZID"].ToString().Trim(), dYZZ);
}
else
{
dicYZZ1[ds.Tables[0].Rows[i]["XLXSBJDYZZ1_YZID"].ToString().Trim()] = dYZZ;
}
}
return dicYZZ1;
}
//获取调价因素为“2|导体材料&电压区间&报价数量区间”的报价因子值
public static Dictionary<string, double> GetBJDYZZ2(string sBJFLID, string sDYDJID, double fBJSL, string sXLXHID, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID, string sBJDID)
{
string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
Dictionary<string, double> dicYZZ2 = new Dictionary<string, double>();
if (!CMISproDataBase.ExistsRecord("DBERP", string.Format("select XLXHB_CPYT from XLXHB where XLXHB_XLXHID ='{0}' and XLXHB_CPYT in (select XLXSBJDYZZ2BSY1_CPYT from XLXSBJDYZZ2BSY1)", sXLXHID)))
{
string sDTCLID = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" select XLXHB_DTCLID from XLXHB WHERE XLXHB_XLXHID =:pXLXHID ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
DataSet data = dberp.OpenDataSet(sql);
if (data.Tables[0].Rows.Count > 0)
{
sDTCLID = data.Tables[0].Rows[0][0].ToString().Trim();
}
sql.Clear();
sql.Add("select XLXSBJDYZZ2_YZZ,XLXSBJDYZZ2_YZID,XLXSBJDYZZ2_DTCLID,XLXSTZYZ_JJFS, ");
sql.Add(" case WHEN XLXSBJDYZZ2_DTCLID<>' ' then 1 ");
sql.Add(" WHEN XLXSBJDYZZ2_DTCLID=' ' then 2 ");
sql.Add("end as PX ");
sql.Add(" from XLXSBJDYZZ2,XLXSTZYZ,");
sql.Add("(");
sql.Add("select (case when XLDYDJB_XXLXDY>XLDYDJB_XXXXDY then XLDYDJB_XXLXDY else XLDYDJB_XXXXDY end)");
sql.Add(" *(case XLDYDJB_DYJLDW when 'V' then 1 else 1000 end) as DY");
sql.Add(" from XLDYDJB");
sql.Add(" where XLDYDJB_DYDJID=:pDYDJID");
sql.Add(") DYDJB ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ2_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ2_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZ2_DYXX<=DY and ((XLXSBJDYZZ2_DYSX<>0 and XLXSBJDYZZ2_DYSX>DY) or XLXSBJDYZZ2_DYSX=0)");
sql.Add(" and XLXSBJDYZZ2_BJSLXX<=:pBJSL and ((XLXSBJDYZZ2_BJSLSX<>0 and XLXSBJDYZZ2_BJSLSX>:pBJSL) or XLXSBJDYZZ2_BJSLSX=0)");
sql.Add(" order by PX,XLXSBJDYZZ2_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pDYDJID").Value = sDYDJID.Trim();
sql.ParamByName("pBJSL").Value = fBJSL;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ2_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZ2_DTCLID"].ToString().Trim().Equals(sDTCLID))
{
if (!dicYZZ2.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ2_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZ2.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ2_YZID"].ToString().Trim(), dYZZ);
else
dicYZZ2.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ2_YZID"].ToString().Trim(), 0);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (!dicYZZ2.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ2_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZ2.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ2_YZID"].ToString().Trim(), dYZZ);
else
dicYZZ2.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ2_YZID"].ToString().Trim(), 0);
}
}
//dicYZZ2.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ2_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ2_YZZ"].ToString()));
}
}
Dictionary<string, double> tmpdicYZZ2 = InitdicYZZ(sBJFLID, "2");
foreach (string key in tmpdicYZZ2.Keys)
{
if (!dicYZZ2.ContainsKey(key))
{
dicYZZ2.Add(key, 0);
}
}
return dicYZZ2;
}
//获取调价因素为“3|产品用途&电压等级分类&报价数量区间”的报价因子值
public static Dictionary<string, double> GetBJDYZZ3(string sBJFLID, double fBJSL, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDJLDW, string sBJU003, string sBJDID)
{
string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
Dictionary<string, double> dicYZZ3 = new Dictionary<string, double>();
bool bBSY1 = CMISproDataBase.ExistsRecord("DBERP", string.Format("select XLXHB_CPYT from XLXHB where XLXHB_XLXHID ='{0}' and XLXHB_CPYT in (select XLXSBJDYZZ3BSY1_CPYT from XLXSBJDYZZ3BSY1)", sXLXHID));
bool bBSY2 = CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSBJDYZZ3BSY2 " +
" where XLXSBJDYZZ3BSY2_XLXHID ='{0}' and XLXSBJDYZZ3BSY2_XLGGID='{1}' " +
" and XLXSBJDYZZ3BSY2_XLBZID='{2}' and XLXSBJDYZZ3BSY2_DYDJID='{3}' ", sXLXHID, sXLGGID, sXLBZID, sDYDJID));
bool bBSY3 = CMISproDataBase.ExistsRecord("DBERP", string.Format("select XLXHB_XLJBXHID from XLXHB where XLXHB_XLXHID ='{0}' and XLXHB_XLJBXHID in (select XLXSBJDYZZ3BSY3_XLJBXHID from XLXSBJDYZZ3BSY3 where 1=1)", sXLXHID));
if (!bBSY1 && !bBSY2 && !bBSY3)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSBJDYZZ3_YZZ,XLXSBJDYZZ3_YZID,XLXSTZYZ_JJFS, ");
sql.Add(" case WHEN XLXSBJDYZZ3_CPYT<>' ' and XLXSBJDYZZ3_DYDJFL<>' ' then 1");
sql.Add(" WHEN XLXSBJDYZZ3_CPYT<>' ' and XLXSBJDYZZ3_DYDJFL=' ' then 2 ");
sql.Add(" WHEN XLXSBJDYZZ3_CPYT=' ' and XLXSBJDYZZ3_DYDJFL<>' ' then 3 ");
sql.Add(" WHEN XLXSBJDYZZ3_CPYT=' ' and XLXSBJDYZZ3_DYDJFL=' ' then 4 END AS PX,XLXSBJDYZZ3_CPYT,XLXSBJDYZZ3_DYDJFL ");
sql.Add(" from XLXSBJDYZZ3,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ3_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ3_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZ3_BJSLXX<=:pBJSL and ((XLXSBJDYZZ3_BJSLSX<>0 and XLXSBJDYZZ3_BJSLSX>:pBJSL) or XLXSBJDYZZ3_BJSLSX=0)");
sql.Add(" and (XLXSBJDYZZ3_CPYT =' ' or XLXSBJDYZZ3_CPYT = (select XLXHB_CPYT from XLXHB where XLXHB_XLXHID = :pXLXHID))");
sql.Add(" and (XLXSBJDYZZ3_DYDJFL =' ' or XLXSBJDYZZ3_DYDJFL = (select XLDYDJB_DYDJFL from XLDYDJB where XLDYDJB_DYDJID = :pDYDJID)) ");
sql.Add(" order by PX,XLXSBJDYZZ3_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pBJSL").Value = fBJSL;
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (!dicYZZ3.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim(), dYZZ);
else
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim(), 0);
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (!dicYZZ3.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim(), dYZZ);
else
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim(), 0);
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("3"))
{
if (!dicYZZ3.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim(), dYZZ);
else
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim(), 0);
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("4"))
{
if (!dicYZZ3.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim(), dYZZ);
else
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ3_YZID"].ToString().Trim(), 0);
}
}
}
}
Dictionary<string, double> tmpdicYZZ3 = InitdicYZZ(sBJFLID, "3");
foreach (string key in tmpdicYZZ3.Keys)
{
if (!dicYZZ3.ContainsKey(key))
{
dicYZZ3.Add(key, 0);
}
}
return dicYZZ3;
}
//获取调价因素为“E|型号&电压等级&主芯截面范围&报价数量区间”的报价因子值
public static Dictionary<string, double> GetBJDYZZE(string sBJFLID, string sXLXHID, string sDYDJID, double fZXJM, double fBJSL, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID, string sBJDID)
{
string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
Dictionary<string, double> dicYZZE = new Dictionary<string, double>();
bool bBSY1 = CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXHB where XLXHB_XLXHID ='{0}' and XLXHB_CPYT in (select XLXSBJDYZZEBSY1_CPYT from XLXSBJDYZZEBSY1)", sXLXHID));
bool bBSY2 = CMISproDataBase.ExistsRecord("DBERP", string.Format("select XLXHB_XLJBXHID from XLXHB where XLXHB_XLXHID ='{0}' and XLXHB_XLJBXHID in (select XLXSBJDYZZEBSY2_XLJBXHID from XLXSBJDYZZEBSY2 where 1=1)", sXLXHID));
if (!bBSY1 && !bBSY2)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXSBJDYZZE_YZZ,XLXSBJDYZZE_YZID,XLXSBJDYZZE_XLXHID,XLXSBJDYZZE_DYDJID,XLXSTZYZ_JJFS, ");
sql.Add(" case WHEN XLXSBJDYZZE_XLXHID<>' ' and XLXSBJDYZZE_DYDJID<>' ' then 1 ");
sql.Add(" WHEN XLXSBJDYZZE_XLXHID<>' ' and XLXSBJDYZZE_DYDJID=' ' then 2 ");
sql.Add(" WHEN XLXSBJDYZZE_XLXHID=' ' and XLXSBJDYZZE_DYDJID=' ' then 3 ");
sql.Add("end as PX ");
sql.Add(" from XLXSBJDYZZE,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZE_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZE_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and (XLXSBJDYZZE_XLXHID=' ' or XLXSBJDYZZE_XLXHID=:pXLXHID)");
sql.Add(" and (XLXSBJDYZZE_DYDJID=' ' or XLXSBJDYZZE_DYDJID=:pDYDJID)");
sql.Add(" and XLXSBJDYZZE_ZXJMXX<=:pZXJM and ((XLXSBJDYZZE_ZXJMSX<>0 and XLXSBJDYZZE_ZXJMSX>=:pZXJM) or XLXSBJDYZZE_ZXJMSX=0)");
sql.Add(" and XLXSBJDYZZE_BJSLXX<=:pBJSL and ((XLXSBJDYZZE_BJSLSX<>0 and XLXSBJDYZZE_BJSLSX>:pBJSL) or XLXSBJDYZZE_BJSLSX=0)");
sql.Add(" order by PX,XLXSBJDYZZE_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
sql.ParamByName("pZXJM").Value = fZXJM;
sql.ParamByName("pBJSL").Value = fBJSL;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZE_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
if (!dicYZZE.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZE_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZE.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZE_YZID"].ToString().Trim(), dYZZ);
else
dicYZZE.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZE_YZID"].ToString().Trim(), 0);
}
}
}
Dictionary<string, double> tmpdicYZZE = InitdicYZZ(sBJFLID, "E");
foreach (string key in tmpdicYZZE.Keys)
{
if (!dicYZZE.ContainsKey(key))
{
dicYZZE.Add(key, 0);
}
}
return dicYZZE;
}
//获取调价因素为“G|按电压芯线结构导体材料主芯截面报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZG(string sBJFLID, string sXLXHID, string sDYDJID, string sXXJGID, double fZXJM, double fBJSL, string sBJDJLDW, string sBJU003, string sBJDID)
{
string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
Dictionary<string, double> dicYZZG = new Dictionary<string, double>();
string sDTCLID = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" select XLXHB_DTCLID,XLXHB_CPYT,XLXHB_XLTXID from XLXHB WHERE XLXHB_XLXHID =:pXLXHID ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
DataSet daXLXH = dberp.OpenDataSet(sql);
if (daXLXH.Tables[0].Rows.Count > 0)
{
sDTCLID = daXLXH.Tables[0].Rows[0][0].ToString().Trim();
}
sql.Clear();
sql.Add("select XLXSBJDYZZG_YZZ,XLXSBJDYZZG_YZID,XLXSBJDYZZG_DTCLID,XLXSBJDYZZG_XXJGID,XLXSBJDYZZG_DYDJID,XLXSTZYZ_JJFS, ");
sql.Add(" case WHEN XLXSBJDYZZG_DTCLID<>' ' then 1 ");
sql.Add(" WHEN XLXSBJDYZZG_DTCLID=' ' then 2 ");
sql.Add("end as PX ");
sql.Add(" from XLXSBJDYZZG,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZG_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZG_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and (XLXSBJDYZZG_DTCLID=' ' or XLXSBJDYZZG_DTCLID=:pDTCLID)");
sql.Add(" and (XLXSBJDYZZG_DYDJID=:pDYDJID) and XLXSBJDYZZG_XXJGID=:pXXJGID ");
sql.Add(" and XLXSBJDYZZG_ZXJMXX<=:pZXJM and ((XLXSBJDYZZG_ZXJMSX<>0 and XLXSBJDYZZG_ZXJMSX>=:pZXJM) or XLXSBJDYZZG_ZXJMSX=0)");
sql.Add(" and XLXSBJDYZZG_BJSLXX<=:pBJSL and ((XLXSBJDYZZG_BJSLSX<>0 and XLXSBJDYZZG_BJSLSX>:pBJSL) or XLXSBJDYZZG_BJSLSX=0)");
sql.Add(" order by PX,XLXSBJDYZZG_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXXJGID").Value = sXXJGID.Trim();
sql.ParamByName("pDTCLID").Value = sDTCLID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
sql.ParamByName("pZXJM").Value = fZXJM;
sql.ParamByName("pBJSL").Value = fBJSL;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZG_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
if (!dicYZZG.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZG_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZG.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZG_YZID"].ToString().Trim(), dYZZ);
else
dicYZZG.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZG_YZID"].ToString().Trim(), 0);
}
}
Dictionary<string, double> tmpdicYZZG = InitdicYZZ(sBJFLID, "G");
foreach (string key in tmpdicYZZG.Keys)
{
if (!dicYZZG.ContainsKey(key))
{
dicYZZG.Add(key, 0);
}
}
return dicYZZG;
}
//获取调价因素为“F|电压等级&芯线结构&报价数量区间加价/报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZF(string sBJFLID, string sDYDJID, string sXXJGID, double fBJSL, string sBJDJLDW, string sBJU003, string sBJDID)
{
return GetBJDYZZF(sBJFLID, " ", sDYDJID, sXXJGID, fBJSL, sBJDJLDW, sBJU003, sBJDID);
}
//获取调价因素为“F|导体材料&电压等级&芯线结构&报价数量区间加价/报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZF(string sBJFLID, string sXLXHID, string sDYDJID, string sXXJGID, double fBJSL, string sBJDJLDW, string sBJU003, string sBJDID)
{
string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
string sDTCLID = GetDTCLIDByXLXHID(sXLXHID);
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
Dictionary<string, double> dicYZZF = new Dictionary<string, double>();
//当前计量单位与参数一致后,报价数量的变化后的值
double dBJU003HSBL = 1.0;
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
dBJU003HSBL = XLBJDUtils.GetJLDWHSBL_SL(sBJDJSDW, sBJU003);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
if (fBJSL != 0)
{
sql.Clear();
sql.Add("select XLXSBJDYZZF_YZZ,XLXSBJDYZZF_YZID,XLXSBJDYZZF_XXJGID,XLXSBJDYZZF_DYDJID,XLXSTZYZ_JJFS, ");
sql.Add(" case WHEN XLXSBJDYZZF_XXJGID<>' ' and XLXSBJDYZZF_DYDJID<>' ' then 1 ");
sql.Add(" WHEN XLXSBJDYZZF_DYDJID<>' ' and XLXSBJDYZZF_XXJGID=' ' then 2 ");
sql.Add("end as PX ");
sql.Add(" from XLXSBJDYZZF,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZF_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZF_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and (XLXSBJDYZZF_XXJGID=' ' or XLXSBJDYZZF_XXJGID=:pXXJGID)");
sql.Add(" and (XLXSBJDYZZF_DYDJID=' ' or XLXSBJDYZZF_DYDJID=:pDYDJID)");
sql.Add(" and XLXSBJDYZZF_DTCLID=:pDTCLID ");
sql.Add(" and XLXSBJDYZZF_BJSLXX<=:pBJSL and ((XLXSBJDYZZF_BJSLSX<>0 and XLXSBJDYZZF_BJSLSX>:pBJSL) or XLXSBJDYZZF_BJSLSX=0)");
sql.Add(" order by PX,XLXSBJDYZZF_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXXJGID").Value = sXXJGID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
sql.ParamByName("pDTCLID").Value = sDTCLID;
sql.ParamByName("pBJSL").Value = fBJSL;
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZF_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZF_DYDJID"].ToString().Trim().Equals(sDYDJID) && ds.Tables[0].Rows[i]["XLXSBJDYZZF_XXJGID"].ToString().Trim().Equals(sXXJGID))
{
if (!dicYZZF.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZF_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZF.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZF_YZID"].ToString().Trim(), NumberUtils.RoundX(dYZZ / fBJSL * dBJU003HSBL, 6));
else
dicYZZF.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZF_YZID"].ToString().Trim(), 0);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZF_DYDJID"].ToString().Trim().Equals(sDYDJID))
{
if (!dicYZZF.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZF_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZF.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZF_YZID"].ToString().Trim(), NumberUtils.RoundX(dYZZ / fBJSL * dBJU003HSBL, 6));
else
dicYZZF.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZF_YZID"].ToString().Trim(), 0);
}
}
}
}
}
Dictionary<string, double> tmpdicYZZF = InitdicYZZ(sBJFLID, "F");
foreach (string key in tmpdicYZZF.Keys)
{
if (!dicYZZF.ContainsKey(key))
{
dicYZZF.Add(key, 0);
}
}
return dicYZZF;
}
//获取调价因素为“H|型号&主芯截面范围&报价数量区间加价/报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZH(string sBJFLID, string sXLXHID, string sDYDJID, string sXLYSID, double fZXJM, double fBJSL, string sBJDJLDW, string sBJU003, string sBJDID)
{
string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
Dictionary<string, double> dicYZZH = new Dictionary<string, double>();
//当前计量单位与参数一致后,报价数量的变化后的值
double dBJU003HSBL = 1.0;
dBJU003HSBL = XLBJDUtils.GetJLDWHSBL_SL(sBJDJSDW, sBJU003);
if (sXLYSID.Contains("|"))
sXLYSID = sXLYSID.Split('|')[0];
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
if (fBJSL != 0)
{
sql.Clear();
sql.Add("select XLXSBJDYZZH_YZZ,XLXSBJDYZZH_YZID,XLXSBJDYZZH_XLXHID,XLXSBJDYZZH_DYDJID,XLXSBJDYZZH_XLYSID,XLXSTZYZ_JJFS, ");
sql.Add("case WHEN isnull(XLXSBJDYZZH_DYDJID, ' ') <> ' ' and isnull(XLXSBJDYZZH_XLYSID,' ') <> ' ' then 1 ");
sql.Add(" WHEN isnull(XLXSBJDYZZH_DYDJID, ' ') <> ' ' and isnull(XLXSBJDYZZH_XLYSID,' ') = ' ' then 2 ");
sql.Add(" WHEN isnull(XLXSBJDYZZH_DYDJID, ' ') = ' ' and isnull(XLXSBJDYZZH_XLYSID,' ') <> ' ' then 3 ");
sql.Add(" WHEN isnull(XLXSBJDYZZH_DYDJID, ' ') = ' ' and isnull(XLXSBJDYZZH_XLYSID,' ') = ' ' then 4 end as PX");
sql.Add(" from XLXSBJDYZZH,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZH_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZH_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZH_XLXHID=:pXLXHID ");
sql.Add(" and XLXSBJDYZZH_ZXJMXX<=:pZXJM and ((XLXSBJDYZZH_ZXJMSX<>0 and XLXSBJDYZZH_ZXJMSX>=:pZXJM) or XLXSBJDYZZH_ZXJMSX=0)");
sql.Add(" and XLXSBJDYZZH_BJSLXX<=:pBJSL and ((XLXSBJDYZZH_BJSLSX<>0 and XLXSBJDYZZH_BJSLSX>:pBJSL) or XLXSBJDYZZH_BJSLSX=0)");
sql.Add(" order by PX,XLXSBJDYZZH_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pZXJM").Value = fZXJM;
sql.ParamByName("pBJSL").Value = fBJSL;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZH_DYDJID"].ToString().Trim().Equals(sDYDJID) && ds.Tables[0].Rows[i]["XLXSBJDYZZH_XLYSID"].ToString().Trim().Equals(sXLYSID))
{
if (!dicYZZH.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZH.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim(), NumberUtils.RoundX(dYZZ / fBJSL * dBJU003HSBL, 6));
else
dicYZZH.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim(), 0);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZH_DYDJID"].ToString().Trim().Equals(sDYDJID))
{
if (!dicYZZH.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZH.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim(), NumberUtils.RoundX(dYZZ / fBJSL * dBJU003HSBL, 6));
else
dicYZZH.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim(), 0);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("3"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZH_XLYSID"].ToString().Trim().Equals(sXLYSID))
{
if (!dicYZZH.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZH.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim(), NumberUtils.RoundX(dYZZ / fBJSL * dBJU003HSBL, 6));
else
dicYZZH.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim(), 0);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("4"))
{
if (!dicYZZH.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZH.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim(), NumberUtils.RoundX(dYZZ / fBJSL * dBJU003HSBL, 6));
else
dicYZZH.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZH_YZID"].ToString().Trim(), 0);
}
}
}
}
Dictionary<string, double> tmpdicYZZH = InitdicYZZ(sBJFLID, "H");
foreach (string key in tmpdicYZZH.Keys)
{
if (!dicYZZH.ContainsKey(key))
{
dicYZZH.Add(key, 0);
}
}
return dicYZZH;
}
//获取调价因素为“4|型号”的报价因子值
public static Dictionary<string, double> GetBJDYZZ4(string sBJFLID, string sXLXHID, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDID)
{
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSBJDYZZ4_YZZ,XLXSBJDYZZ4_YZID,XLXSTZYZ_JJFS from XLXSBJDYZZ4,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ4_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ4_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZ4_XLXHID =:pXLXHID ");
sql.Add(" order by XLXSBJDYZZ4_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXLXHID").Value = sXLXHID;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZ4 = InitdicYZZ(sBJFLID, "4");
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ4_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (!dicYZZ4.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ4_YZID"].ToString().Trim()))
{
dicYZZ4.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ4_YZID"].ToString().Trim(), dYZZ);
}
else
{
dicYZZ4[ds.Tables[0].Rows[i]["XLXSBJDYZZ4_YZID"].ToString().Trim()] = dYZZ;
}
}
return dicYZZ4;
}
//获取调价因素为“5|销售区域&型号&标准&电压等级&主芯截面范围”的报价因子值
public static Dictionary<string, double> GetBJDYZZ5(string sBJFLID, string sXSQYID, string sXLXHID, string sXLBZID, string sDYDJID, double fZXJM, string sBJDJLDW, string sBJU003, string sXLGGID, string sBJDID)
{
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
Dictionary<string, double> dicYZZ5 = new Dictionary<string, double>();
sql.Clear();
sql.Add("select XLXSBJDYZZ5_YZZ,XLXSBJDYZZ5_YZID,XLXSTZYZ_JJFS, ");
sql.Add("case WHEN XLXSBJDYZZ5_XSQYID<>' ' and XLXSBJDYZZ5_XLBZID<>' ' then 1 ");
sql.Add(" WHEN XLXSBJDYZZ5_XSQYID<>' ' and XLXSBJDYZZ5_XLBZID=' ' then 2 ");
sql.Add(" WHEN XLXSBJDYZZ5_XSQYID=' ' and XLXSBJDYZZ5_XLBZID<>' ' then 3 ");
sql.Add(" WHEN XLXSBJDYZZ5_XSQYID=' ' and XLXSBJDYZZ5_XLBZID=' ' then 4 ");
sql.Add(" END AS PX,XLXSBJDYZZ5_XSQYID,XLXSBJDYZZ5_XLBZID ");
sql.Add(" from XLXSBJDYZZ5,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ5_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ5_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZ5_XLXHID=:pXLXHID and XLXSBJDYZZ5_DYDJID=:pDYDJID");
sql.Add(" and XLXSBJDYZZ5_ZXJMXX<=:pZXJM and ((XLXSBJDYZZ5_ZXJMSX<>0 and XLXSBJDYZZ5_ZXJMSX>=:pZXJM) or XLXSBJDYZZ5_ZXJMSX=0)");
sql.Add(" order by PX,XLXSBJDYZZ5_YZID ");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
sql.ParamByName("pZXJM").Value = fZXJM;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ5_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZ5_XSQYID"].ToString().Trim().Equals(sXSQYID) && ds.Tables[0].Rows[i]["XLXSBJDYZZ5_XLBZID"].ToString().Trim().Equals(sXLBZID))
{
if (!dicYZZ5.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ5_YZID"].ToString().Trim()))
{
dicYZZ5.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ5_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZ5_XSQYID"].ToString().Trim().Equals(sXSQYID))
{
if (!dicYZZ5.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ5_YZID"].ToString().Trim()))
{
dicYZZ5.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ5_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("3"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZ5_XLBZID"].ToString().Trim().Equals(sXLBZID))
{
if (!dicYZZ5.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ5_YZID"].ToString().Trim()))
{
dicYZZ5.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ5_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("4"))
{
if (!dicYZZ5.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ5_YZID"].ToString().Trim()))
{
dicYZZ5.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ5_YZID"].ToString().Trim(), dYZZ);
}
}
}
Dictionary<string, double> tmpdicYZZ5 = InitdicYZZ(sBJFLID, "5");
foreach (string key in tmpdicYZZ5.Keys)
{
if (!dicYZZ5.ContainsKey(key))
{
dicYZZ5.Add(key, 0);
}
}
return dicYZZ5;
}
//获取调价因素为“6|报价数量区间调价米数/报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZ6(string sBJFLID, double fBJSL, string sBJDJLDW, string sBJU003, string sBJDID)
{
string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
Dictionary<string, double> dicYZZ6 = InitdicYZZ(sBJFLID, "6");
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSBJDYZZ6_YZZ,XLXSBJDYZZ6_YZID,XLXSTZYZ_JJFS from XLXSBJDYZZ6,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ6_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ6_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZ6_BJSLXX<=:pBJSL and ((XLXSBJDYZZ6_BJSLSX<>0 and XLXSBJDYZZ6_BJSLSX>:pBJSL) or XLXSBJDYZZ6_BJSLSX=0)");
sql.Add(" order by XLXSBJDYZZ6_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pBJSL").Value = fBJSL;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ6_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (fBJSL != 0)
{
if (!dicYZZ6.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ6_YZID"].ToString().Trim()))
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZ6.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ6_YZID"].ToString().Trim(), dYZZ * 100.0 / fBJSL);
else
dicYZZ6.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ6_YZID"].ToString().Trim(), 0);
}
else
{
if (sBJDJSDW.Equals("M") || sBJDJSDW.Equals("Km") || dicLenJLDWTD.ContainsKey(sBJDJSDW))
dicYZZ6[ds.Tables[0].Rows[i]["XLXSBJDYZZ6_YZID"].ToString().Trim()] = dYZZ * 100.0 / fBJSL;
}
}
}
return dicYZZ6;
}
//获取调价因素为“7|型号&电压等级&芯线结构&主芯截面范围”的报价因子值
public static Dictionary<string, double> GetBJDYZZ7(string sBJFLID, string sXLXHID, string sDYDJID, string sXXJGID, double fZXJM, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID, string sBJDID)
{
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
Dictionary<string, double> dicYZZ7 = new Dictionary<string, double>();
dicYZZ7.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSBJDYZZ7_YZZ,XLXSBJDYZZ7_YZID,XLXSTZYZ_JJFS, ");
sql.Add(" case WHEN XLXSBJDYZZ7_DYDJID<>' ' and XLXSBJDYZZ7_XXJGID<>' ' then 1 ");
sql.Add(" WHEN XLXSBJDYZZ7_DYDJID<>' ' and XLXSBJDYZZ7_XXJGID=' ' then 2 ");
sql.Add(" WHEN XLXSBJDYZZ7_DYDJID=' ' and XLXSBJDYZZ7_XXJGID<>' ' then 3 ");
sql.Add(" WHEN XLXSBJDYZZ7_DYDJID=' ' and XLXSBJDYZZ7_XXJGID=' ' then 4 ");
sql.Add(" END AS PX,XLXSBJDYZZ7_DYDJID,XLXSBJDYZZ7_XXJGID ");
sql.Add(" from XLXSBJDYZZ7,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ7_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ7_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZ7_XLXHID=:pXLXHID ");
sql.Add(" and XLXSBJDYZZ7_ZXJMXX<=:pZXJM and ((XLXSBJDYZZ7_ZXJMSX<>0 and XLXSBJDYZZ7_ZXJMSX>=:pZXJM) or XLXSBJDYZZ7_ZXJMSX=0)");
sql.Add(" order by PX,XLXSBJDYZZ7_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pZXJM").Value = fZXJM;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ7_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZ7_DYDJID"].ToString().Trim().Equals(sDYDJID) && ds.Tables[0].Rows[i]["XLXSBJDYZZ7_XXJGID"].ToString().Trim().Equals(sXXJGID))
{
if (!dicYZZ7.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ7_YZID"].ToString().Trim()))
{
dicYZZ7.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ7_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZ7_DYDJID"].ToString().Trim().Equals(sDYDJID))
{
if (!dicYZZ7.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ7_YZID"].ToString().Trim()))
{
dicYZZ7.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ7_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("3"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZ7_XXJGID"].ToString().Trim().Equals(sXXJGID))
{
if (!dicYZZ7.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ7_YZID"].ToString().Trim()))
{
dicYZZ7.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ7_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("4"))
{
if (!dicYZZ7.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ7_YZID"].ToString().Trim()))
{
dicYZZ7.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ7_YZID"].ToString().Trim(), dYZZ);
}
}
}
Dictionary<string, double> tmpdicYZZ7 = InitdicYZZ(sBJFLID, "7");
foreach (string key in tmpdicYZZ7.Keys)
{
if (!dicYZZ7.ContainsKey(key))
{
dicYZZ7.Add(key, 0);
}
}
return dicYZZ7;
}
//获取调价因素为“8|付款期限”的报价因子值
public static Dictionary<string, double> GetBJDYZZ8(string sBJFLID, string sFKQXNR, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDID)
{
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSBJDYZZ8_YZZ,XLXSBJDYZZ8_YZID,XLXSTZYZ_JJFS from XLXSBJDYZZ8,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ8_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ8_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZ8_FKQXNR =:pFKQXNR ");
sql.Add(" order by XLXSBJDYZZ8_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pFKQXNR").Value = sFKQXNR;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZ8 = InitdicYZZ(sBJFLID, "8");
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ8_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (!dicYZZ8.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ8_YZID"].ToString().Trim()))
{
dicYZZ8.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ8_YZID"].ToString().Trim(), dYZZ);
}
else
{
dicYZZ8[ds.Tables[0].Rows[i]["XLXSBJDYZZ8_YZID"].ToString().Trim()] = dYZZ;
}
}
return dicYZZ8;
}
//获取调价因素为“9|导体材料&产品用途&电压等级分类&产品特性”的报价因子值
public static Dictionary<string, double> GetBJDYZZ9(string sBJFLID, string sXLXHID, string sDYDJID, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID, string sBJDID)
{
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
string sDTCLID = "";
string sCPYT = "";
string sXLTXID = "";
string sDYDJFL = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" select XLXHB_DTCLID,XLXHB_CPYT,XLXHB_XLTXID from XLXHB WHERE XLXHB_XLXHID =:pXLXHID ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
DataSet daXLXH = dberp.OpenDataSet(sql);
if (daXLXH.Tables[0].Rows.Count > 0)
{
sDTCLID = daXLXH.Tables[0].Rows[0][0].ToString().Trim();
sCPYT = daXLXH.Tables[0].Rows[0][1].ToString().Trim();
sXLTXID = daXLXH.Tables[0].Rows[0][2].ToString().Trim();
}
sql.Clear();
sql.Add("select XLDYDJB_DYDJFL from XLDYDJB WHERE XLDYDJB_DYDJID =:pDYDJID ");
sql.ParamByName("pDYDJID").Value = sDYDJID;
DataSet daDYDJ = dberp.OpenDataSet(sql);
if (daDYDJ.Tables[0].Rows.Count > 0)
{
sDYDJFL = daDYDJ.Tables[0].Rows[0][0].ToString().Trim();
}
sql.Clear();
sql.Add("select XLXSBJDYZZ9_YZZ,XLXSBJDYZZ9_YZID,XLXSTZYZ_JJFS, ");
sql.Add("case WHEN XLXSBJDYZZ9_CPYT<>' ' and XLXSBJDYZZ9_DYDJFL<>' ' and XLXSBJDYZZ9_XLTXID <> ' ' then 1 ");
sql.Add(" WHEN ( ");
sql.Add(" (XLXSBJDYZZ9_CPYT <>' ' and XLXSBJDYZZ9_DYDJFL<>' ' and XLXSBJDYZZ9_XLTXID = ' ') ");
sql.Add(" or (XLXSBJDYZZ9_CPYT = ' ' and XLXSBJDYZZ9_DYDJFL<>' ' and XLXSBJDYZZ9_XLTXID <> ' ') ");
sql.Add(" or (XLXSBJDYZZ9_CPYT <> ' ' and XLXSBJDYZZ9_DYDJFL=' ' and XLXSBJDYZZ9_XLTXID <> ' ') ");
sql.Add(" ) then 2 ");
sql.Add(" WHEN ( ");
sql.Add(" (XLXSBJDYZZ9_CPYT <>' ' and XLXSBJDYZZ9_DYDJFL=' ' and XLXSBJDYZZ9_XLTXID = ' ') ");
sql.Add(" or (XLXSBJDYZZ9_CPYT = ' ' and XLXSBJDYZZ9_DYDJFL<>' ' and XLXSBJDYZZ9_XLTXID = ' ') ");
sql.Add(" or (XLXSBJDYZZ9_CPYT = ' ' and XLXSBJDYZZ9_DYDJFL=' ' and XLXSBJDYZZ9_XLTXID <> ' ') ");
sql.Add(" ) then 3 ");
sql.Add(" WHEN XLXSBJDYZZ9_CPYT=' ' and XLXSBJDYZZ9_DYDJFL=' ' and XLXSBJDYZZ9_XLTXID = ' ' then 4 ");
sql.Add(" END AS PX,XLXSBJDYZZ9_CPYT,XLXSBJDYZZ9_DYDJFL,XLXSBJDYZZ9_XLTXID ");
sql.Add(" from XLXSBJDYZZ9,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZ9_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ9_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZ9_DTCLID=:pDTCLID ");
sql.Add(" order by PX,XLXSBJDYZZ9_YZID ");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pDTCLID").Value = sDTCLID;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZ9 = new Dictionary<string, double>();
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZ9_CPYT"].ToString().Trim().Equals(sCPYT)
&& ds.Tables[0].Rows[i]["XLXSBJDYZZ9_DYDJFL"].ToString().Trim().Equals(sDYDJFL)
&& ds.Tables[0].Rows[i]["XLXSBJDYZZ9_XLTXID"].ToString().Trim().Equals(sXLTXID))
{
if (!dicYZZ9.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_YZID"].ToString().Trim()))
{
dicYZZ9.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (
(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_CPYT"].ToString().Trim().Equals(sCPYT) && ds.Tables[0].Rows[i]["XLXSBJDYZZ9_DYDJFL"].ToString().Trim().Equals(sDYDJFL))
|| (ds.Tables[0].Rows[i]["XLXSBJDYZZ9_CPYT"].ToString().Trim().Equals(sCPYT) && ds.Tables[0].Rows[i]["XLXSBJDYZZ9_XLTXID"].ToString().Trim().Equals(sXLTXID))
|| (ds.Tables[0].Rows[i]["XLXSBJDYZZ9_DYDJFL"].ToString().Trim().Equals(sDYDJFL) && ds.Tables[0].Rows[i]["XLXSBJDYZZ9_XLTXID"].ToString().Trim().Equals(sXLTXID))
)
{
if (!dicYZZ9.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_YZID"].ToString().Trim()))
{
dicYZZ9.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("3"))
{
if (
(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_CPYT"].ToString().Trim().Equals(sCPYT) && !sCPYT.Equals(""))
|| (ds.Tables[0].Rows[i]["XLXSBJDYZZ9_DYDJFL"].ToString().Trim().Equals(sDYDJFL) && !sDYDJFL.Equals(""))
|| (ds.Tables[0].Rows[i]["XLXSBJDYZZ9_XLTXID"].ToString().Trim().Equals(sXLTXID) && !sXLTXID.Equals(""))
)
{
if (!dicYZZ9.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_YZID"].ToString().Trim()))
{
dicYZZ9.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("4"))
{
if (!dicYZZ9.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_YZID"].ToString().Trim()))
{
dicYZZ9.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZ9_YZID"].ToString().Trim(), dYZZ);
}
}
}
Dictionary<string, double> tmpdicYZZ9 = InitdicYZZ(sBJFLID, "9");
foreach (string key in tmpdicYZZ9.Keys)
{
if (!dicYZZ9.ContainsKey(key))
{
dicYZZ9.Add(key, 0);
}
}
return dicYZZ9;
}
//获取调价因素为“A|型号&规格&电压&标准”的报价因子值
public static Dictionary<string, double> GetBJDYZZA(string sBJFLID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDJLDW, string sBJU003, string sBJDID)
{
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
bool bUseXLXSBJXLGGTHB = UseXLXSBJXLGGTHB();
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSBJDYZZA_YZZ,XLXSBJDYZZA_YZID,XLXSTZYZ_JJFS from XLXSBJDYZZA");
sql.Add(" left join XLXSTZYZ on XLXSTZYZ_JGBID=XLXSBJDYZZA_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZA_YZID and XLXSTZYZ_MXBH='BJD'");
if (bUseXLXSBJXLGGTHB)
{
sql.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB.XLXSBJXLGGTHB_XLGGID = XLXSBJDYZZA_XLGGID");
}
sql.Add(" where exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZA_XLXHID =:pXLXHID ");
if (bUseXLXSBJXLGGTHB)
{
sql.Add(" and isnull(XLXSBJXLGGTHB.XLXSBJXLGGTHB_XLGGIDCH,' ') =:pXLGGID ");
}
else
{
sql.Add(" and REPLACE(XLXSBJDYZZA_XLGGID,'*','×') =:pXLGGID ");
}
sql.Add(" and XLXSBJDYZZA_XLBZID =:pXLBZID ");
sql.Add(" and XLXSBJDYZZA_DYDJID =:pDYDJID ");
sql.Add(" order by XLXSBJDYZZA_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID.Replace('*', '×');
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZA = InitdicYZZ(sBJFLID, "A");
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZA_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (!dicYZZA.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZA_YZID"].ToString().Trim()))
{
dicYZZA.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZA_YZID"].ToString().Trim(), dYZZ);
}
else
{
dicYZZA[ds.Tables[0].Rows[i]["XLXSBJDYZZA_YZID"].ToString().Trim()] = dYZZ;
}
}
return dicYZZA;
}
//获取调价因素为“B|销售单位”的报价因子值
public static Dictionary<string, double> GetBJDYZZB(string sBJFLID, string sSYDWID, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDID)
{
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSBJDYZZB_YZZ,XLXSBJDYZZB_YZID,XLXSTZYZ_JJFS from XLXSBJDYZZB,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZB_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZB_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZB_SYDWID =:pSYDWID ");
sql.Add(" order by XLXSBJDYZZB_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pSYDWID").Value = sSYDWID;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZB = InitdicYZZ(sBJFLID, "B");
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZB_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (!dicYZZB.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZB_YZID"].ToString().Trim()))
{
dicYZZB.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZB_YZID"].ToString().Trim(), dYZZ);
}
else
{
dicYZZB[ds.Tables[0].Rows[i]["XLXSBJDYZZB_YZID"].ToString().Trim()] = dYZZ;
}
}
return dicYZZB;
}
//获取调价因素为“C|按产品目录主芯截面范围产品特性调报价”的报价因子值
public static Dictionary<string, double> GetBJDYZZC(string sBJDID, string sBJFLID, string sXLXHID, string sDYDJID, double fZXJM, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID)
{
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
Dictionary<string, double> dicYZZC = new Dictionary<string, double>();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
//先匹配因子值
sql.Add("select XLXSBJDYZZC_YZID,XLXSTZYZ_JJFS, ");
sql.Add(" XLXSBJDYZZC_CPMLYZZ + ");
sql.Add(" (case when XLXHB_RDT='Y' then XLXSBJDYZZC_RDTYZZ else 0 end) + ");
sql.Add(" (case when isnull(XLXHB_FPCLID,' ')<>' ' or isnull(XLXHB_PBCLID,' ')<>' ' then XLXSBJDYZZC_PBYZZ else 0 end) + ");
sql.Add(" (case when XLXHB_NHTX='Y' then XLXSBJDYZZC_NHYZZ else 0 end) as YZZ, ");
sql.Add(" case when XLXSBJXHML_DYDJID<>' ' and XLXSBJDYZZC_BJDID<>' ' then 1 ");
sql.Add(" when XLXSBJXHML_DYDJID<>' ' and XLXSBJDYZZC_BJDID=' ' then 2 ");
sql.Add(" when XLXSBJXHML_DYDJID=' ' and XLXSBJDYZZC_BJDID<>' ' then 3 ");
sql.Add(" when XLXSBJXHML_DYDJID=' ' and XLXSBJDYZZC_BJDID=' ' then 4 ");
sql.Add(" end as PX,XLXSBJXHML_DYDJID,XLXSBJDYZZC_BJDID ");
sql.Add(" from XLXSBJDYZZC,XLXSTZYZ,XLXSBJXHML,XLXHB ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZC_JGBID and XLXSTZYZ_TJYS='C' and XLXSTZYZ_YZID=XLXSBJDYZZC_YZID and XLXSTZYZ_MXBH='BJD' ");
sql.Add(" and (XLXSBJDYZZC_BJDID=' ' or XLXSBJDYZZC_BJDID=:pBJDID) ");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJXHML_CPMLID=XLXSBJDYZZC_CPMLID and XLXSBJXHML_XLXHID=XLXHB_XLXHID ");
sql.Add(" and (XLXSBJXHML_DYDJID=' ' or XLXSBJXHML_DYDJID=:pDYDJID) ");
sql.Add(" and XLXHB_XLXHID=:pXLXHID ");
sql.Add(" and XLXSBJDYZZC_ZXJMXX<=:pZXJM and ((XLXSBJDYZZC_ZXJMSX<>0 and XLXSBJDYZZC_ZXJMSX>=:pZXJM) or XLXSBJDYZZC_ZXJMSX=0)");
sql.Add(" order by PX,XLXSBJDYZZC_YZID");
sql.ParamByName("pBJDID").Value = sBJDID.Trim();
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pDYDJID").Value = sDYDJID.Trim();
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pZXJM").Value = fZXJM;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSBJXHML_DYDJID"].ToString().Trim().Equals(sDYDJID) && ds.Tables[0].Rows[i]["XLXSBJDYZZC_BJDID"].ToString().Trim().Equals(sBJDID))
{
if (!dicYZZC.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZC_YZID"].ToString().Trim()))
{
dicYZZC.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZC_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (ds.Tables[0].Rows[i]["XLXSBJXHML_DYDJID"].ToString().Trim().Equals(sDYDJID))
{
if (!dicYZZC.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZC_YZID"].ToString().Trim()))
{
dicYZZC.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZC_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("3"))
{
if (ds.Tables[0].Rows[i]["XLXSBJDYZZC_BJDID"].ToString().Trim().Equals(sBJDID))
{
if (!dicYZZC.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZC_YZID"].ToString().Trim()))
{
dicYZZC.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZC_YZID"].ToString().Trim(), dYZZ);
}
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("4"))
{
if (!dicYZZC.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZC_YZID"].ToString().Trim()))
{
dicYZZC.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZC_YZID"].ToString().Trim(), dYZZ);
}
}
}
Dictionary<string, double> tmpdicYZZC = InitdicYZZ(sBJFLID, "C");
foreach (string key in tmpdicYZZC.Keys)
{
if (!dicYZZC.ContainsKey(key))
{
dicYZZC.Add(key, 0);
}
}
return dicYZZC;
}
//获取调价因素为“D|颜色&主芯截面范围”的报价因子值
public static Dictionary<string, double> GetBJDYZZD(string sBJFLID, string sXLYSID, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDID)
{
Dictionary<string, string> dicXLGGB = GetXXJGIDByXLGGID(sXLGGID, sXLXHID);
double fZXJM = CMISproConvert.StrToFloat(dicXLGGB["ZXJM"]);
Dictionary<string, double> dicYZZD = InitdicYZZ(sBJFLID, "D");
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXSBJDYZZD_YZZ,XLXSBJDYZZD_YZID,XLXSTZYZ_JJFS from XLXSBJDYZZD,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZD_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZD_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZD_XLYSID =:pXLYSID ");
sql.Add(" and XLXSBJDYZZD_ZXJMXX<=:pZXJM and ((XLXSBJDYZZD_ZXJMSX<>0 and XLXSBJDYZZD_ZXJMSX>=:pZXJM) or XLXSBJDYZZD_ZXJMSX=0)");
sql.Add(" order by XLXSBJDYZZD_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXLYSID").Value = sXLYSID;
sql.ParamByName("pZXJM").Value = fZXJM;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZD_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (dicYZZD.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZD_YZID"].ToString().Trim()))
{
dicYZZD[ds.Tables[0].Rows[i]["XLXSBJDYZZD_YZID"].ToString().Trim()] = dYZZ;
}
else
{
dicYZZD.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZD_YZID"].ToString().Trim(), dYZZ);
}
}
return dicYZZD;
}
//获取调价因素为“K|导体类型电压等级/材料重量”的报价因子值
public static Dictionary<string, double> GetBJDYZZK(string sBJFLID, double fBJSL, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDID)
{
Dictionary<string, double> dicYZZK = InitdicYZZ(sBJFLID, "K");
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXHB_DTCLID from XLXHB where XLXHB_XLXHID=:pXLXHID ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
DataSet ds = dberp.OpenDataSet(sql);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
if (ds.Tables[0].Rows.Count > 0)
{
string sDTCLID = ds.Tables[0].Rows[0][0].ToString().Trim();
double dCLZL = 0;
sql.Clear();
sql.Add("select XLXSCLQD_CLZL from XLXSCLQD where XLXSCLQD_WPID='ZZZZ' and XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
dCLZL = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString().Trim());
sql.Clear();
sql.Add("select XLXSBJDYZZK_YZZ,XLXSBJDYZZK_YZID,XLXSTZYZ_JJFS from XLXSBJDYZZK,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZK_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZK_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZK_DTLX =:pDTLX and XLXSBJDYZZK_DYDJID =' ' ");
sql.Add(" order by XLXSBJDYZZK_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pDTLX").Value = sDTCLID;
ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = NumberUtils.RoundX(CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZK_YZZ"].ToString()) * dCLZL, 6);
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (dicYZZK.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZK_YZID"].ToString().Trim()))
{
dicYZZK[ds.Tables[0].Rows[i]["XLXSBJDYZZK_YZID"].ToString().Trim()] = dYZZ;
}
else
{
dicYZZK.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZK_YZID"].ToString().Trim(), dYZZ);
}
}
sql.Clear();
sql.Add("select XLXSBJDYZZK_YZZ,XLXSBJDYZZK_YZID,XLXSTZYZ_JJFS from XLXSBJDYZZK,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZK_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZK_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and exists(select 1 from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID)");
sql.Add(" and XLXSBJDYZZK_DTLX =:pDTLX and XLXSBJDYZZK_DYDJID =:pDYDJID ");
sql.Add(" order by XLXSBJDYZZK_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pDTLX").Value = sDTCLID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = NumberUtils.RoundX(CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZK_YZZ"].ToString()) * dCLZL, 6);
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
}
//形如(BJ10,2)
if (dicYZZK.ContainsKey(ds.Tables[0].Rows[i]["XLXSBJDYZZK_YZID"].ToString().Trim()))
{
dicYZZK[ds.Tables[0].Rows[i]["XLXSBJDYZZK_YZID"].ToString().Trim()] = dYZZ;
}
else
{
dicYZZK.Add(ds.Tables[0].Rows[i]["XLXSBJDYZZK_YZID"].ToString().Trim(), dYZZ);
}
}
}
return dicYZZK;
}
// 获取调价因素为“L|按标准&报价数量区间调报价”的报价因子值
public static Dictionary<string, double> GetBJDYZZL(string sBJFLID,string sXLBZID,double fBJSL,string sBJDJLDW,string sBJU003,string sXLXHID,string sXLGGID,string sDYDJID,string sBJDID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXSBJDYZZL_YZZ,");
sql.Add(" XLXSBJDYZZL_YZID,");
sql.Add(" XLXSTZYZ_JJFS");
sql.Add(" from XLXSBJDYZZL");
sql.Add(" left join XLXSTZYZ");
sql.Add(" on XLXSTZYZ_JGBID = XLXSBJDYZZL_JGBID");
sql.Add(" and XLXSTZYZ_YZID = XLXSBJDYZZL_YZID");
sql.Add(" and XLXSTZYZ_MXBH = 'BJD'");
sql.Add(" where exists");
sql.Add(" (");
sql.Add(" select 1");
sql.Add(" from XLXSBJFLYZ");
sql.Add(" where XLXSBJFLYZ_BJFLID = :pBJFLID");
sql.Add(" and XLXSBJFLYZ_YZID = XLXSTZYZ_YZID");
sql.Add(" )");
sql.Add(" and XLXSBJDYZZL_XLBZID = :pXLBZID");
sql.Add(" and XLXSBJDYZZL_BJSLS <= :pBJSL");
sql.Add(" and (");
sql.Add(" (XLXSBJDYZZL_BJSLZ <> 0 and XLXSBJDYZZL_BJSLZ > :pBJSL)");
sql.Add(" or XLXSBJDYZZL_BJSLZ = 0");
sql.Add(" )");
sql.Add(" order by XLXSBJDYZZL_YZID");
sql.ParamByName("pBJFLID").Value = sBJFLID.Trim();
sql.ParamByName("pXLBZID").Value = sXLBZID.Trim();
sql.ParamByName("pBJSL").Value = fBJSL;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZL = InitdicYZZ(sBJFLID, "L");
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL =string.IsNullOrEmpty(tSession.GetOption(100860000, "BJU055"))? 0: double.Parse(tSession.GetOption(100860000, "BJU055")) / 100.0;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZL_YZZ"].ToString());
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
{
dYZZ *= GetHSBL(sBJDJLDW,sBJU003,sXLXHID,sXLGGID,sXLBZID,sDYDJID);
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL),6);
}
}
string sYZID = ds.Tables[0].Rows[i]["XLXSBJDYZZL_YZID"].ToString().Trim();
if (!dicYZZL.ContainsKey(sYZID))
{
dicYZZL.Add(sYZID, dYZZ);
}
else
{
dicYZZL[sYZID] = dYZZ;
}
}
return dicYZZL;
}
//获取调价模块为“100860124|按包装长度包装方式调盘费”的报价因子值
public static Dictionary<string, double> GetBJDBZPFYZZ(string sBZPFYZID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDJLDW, string sBJU003, string sBJDID)
{
sBJU003 = "M";
//string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(@" SELECT isnull(MIN(ROUND(CASE WHEN ISNULL(CONVERT(FLOAT,ISNULL(XLBMYSMX_DHMC,'0')),0)=0 THEN 0 ELSE PJJG/CONVERT(FLOAT,ISNULL(XLBMYSMX_DHMC,'0')) END,6)),0) AS YZZ
FROM XLXSCLQD
LEFT JOIN XLXHJGCZBNR ON XLXHJGCZBNR_JGCZBID=XLXSCLQD_JGCZBID AND XLXHJGCZBNR_JGCZBBBID=XLXSCLQD_JGCZBBBID
AND XLXHJGCZBNR_JGCZBXH=XLXSCLQD_JGCZBXH AND XLXHJGCZBNR_DRHH=XLXSCLQD_DRHH
LEFT JOIN XLBMYSMX ON XLBMYSMX_YSBM='DC' AND XLBMYSMX_YSID=XLXHJGCZBNR_DC
LEFT JOIN XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSCLQD_XLGGID
LEFT JOIN (SELECT XLZPPJFL_PJFLMC,MAX(XLZPPJJG_PJJG) AS PJJG FROM XLZPPJFL
LEFT JOIN XLZPPJJG ON XLZPPJJG_PJCZ=XLZPPJFL_PJFLID
WHERE 1=1 and XLZPPJJG_YXQS <= :pDtNow and (XLZPPJJG_YXQZ>=:pDtNow or XLZPPJJG_YXQZ is null)
GROUP BY XLZPPJFL_PJFLMC) PJ ON RTRIM(XLZPPJFL_PJFLMC)=RTRIM(XLXHJGCZBNR_BZFS)
WHERE XLXSCLQD_XLXHID=:pXLXHID AND XLXSBJXLGGTHB_XLGGIDCH=:pXLGGID
AND XLXSCLQD_XLBZID = :pXLBZID AND XLXSCLQD_DYDJID=:pDYDJID
GROUP BY XLXSCLQD_XLXHID,XLXSBJXLGGTHB_XLGGIDCH,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID.Replace('*', '×');
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
sql.ParamByName("pDtNow").Value = DateTime.Now;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZBZPF = new Dictionary<string,double>();
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
dicYZZBZPF.Add(sBZPFYZID, 0);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["YZZ"].ToString());
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID); ;
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
dicYZZBZPF[sBZPFYZID] = dYZZ;
}
return dicYZZBZPF;
}
//获取调价模块为“100860162|按产品外径报价数量区间调盘费”的报价因子值
public static Dictionary<string, double> GetBJDCPWJPFYZZ(string sBZPFYZID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDJLDW, string sBJU003, string sBJDID, double fBJSL)
{
sBJU003 = "M";
string sBJDJSDW = GetsJSDW(sBJDJLDW, sBJU003);
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
if (sBJDJSDW.Equals("Km") || sBJDJSDW.Equals("千米"))
{
fBJSL *= 1000;
}
else if (dicLenJLDWTD.ContainsKey(sBJDJSDW))
{
fBJSL *= 100;
}
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
Dictionary<string, double> dicYZZBZPF = new Dictionary<string, double>();
dicYZZBZPF.Add(sBZPFYZID, 0);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
// 先获取产品外径(沿用线缆构成数据中的导体外径字段)
double dCPWJ = 0;
TSQL sqlWJ = new TSQL(dberp);
sqlWJ.Clear();
sqlWJ.Add(@" SELECT XLXLB_WJ
FROM XLXLB
WHERE XLXLB_XLXHID=:pXLXHID AND XLXLB_XLGGID=:pXLGGID
AND XLXLB_XLBZID=:pXLBZID AND XLXLB_DYDJID=:pDYDJID ");
sqlWJ.ParamByName("pXLXHID").Value = sXLXHID;
sqlWJ.ParamByName("pXLGGID").Value = sXLGGID.Replace('*', '×');
sqlWJ.ParamByName("pXLBZID").Value = sXLBZID;
sqlWJ.ParamByName("pDYDJID").Value = sDYDJID;
DataSet dsWJ = dberp.OpenDataSet(sqlWJ);
if ((dsWJ.Tables.Count == 0) || (dsWJ.Tables[0].Rows.Count == 0))
{
return dicYZZBZPF;
}
dCPWJ = CMISproConvert.StrToFloat(dsWJ.Tables[0].Rows[0]["XLXLB_WJ"].ToString());
// 按外径找可用区间
TSQL sqlQJ = new TSQL(dberp);
sqlQJ.Clear();
sqlQJ.Add(@" SELECT XLXSBJPJWJSLQJ_CPWJXX,XLXSBJPJWJSLQJ_CPWJSX,XLXSBJPJWJSLQJ_BJSLXX,XLXSBJPJWJSLQJ_BJSLSX,XLXSBJPJWJSLQJ_PJWLID
FROM XLXSBJPJWJSLQJ
WHERE :pCPWJ >= XLXSBJPJWJSLQJ_CPWJXX AND :pCPWJ <= XLXSBJPJWJSLQJ_CPWJSX
ORDER BY XLXSBJPJWJSLQJ_BJSLXX,XLXSBJPJWJSLQJ_BJSLSX ");
sqlQJ.ParamByName("pCPWJ").Value = dCPWJ;
DataSet dsQJ = dberp.OpenDataSet(sqlQJ);
if ((dsQJ.Tables.Count == 0) || (dsQJ.Tables[0].Rows.Count == 0))
{
// 外径不在配置区间内,返回0
return dicYZZBZPF;
}
DataRow drTarget = null;
bool bUseMaxSXScale = false;
double dMaxBJSLSX = 0;
int i;
for (i = 0; i < dsQJ.Tables[0].Rows.Count; i++)
{
double dBJSLXX = CMISproConvert.StrToFloat(dsQJ.Tables[0].Rows[i]["XLXSBJPJWJSLQJ_BJSLXX"].ToString());
double dBJSLSX = CMISproConvert.StrToFloat(dsQJ.Tables[0].Rows[i]["XLXSBJPJWJSLQJ_BJSLSX"].ToString());
if ((fBJSL >= dBJSLXX) && (fBJSL <= dBJSLSX))
{
drTarget = dsQJ.Tables[0].Rows[i];
break;
}
}
if (drTarget == null)
{
double dMinBJSLXX = CMISproConvert.StrToFloat(dsQJ.Tables[0].Rows[0]["XLXSBJPJWJSLQJ_BJSLXX"].ToString());
double dLastBJSLSX = CMISproConvert.StrToFloat(dsQJ.Tables[0].Rows[dsQJ.Tables[0].Rows.Count - 1]["XLXSBJPJWJSLQJ_BJSLSX"].ToString());
if (fBJSL < dMinBJSLXX)
{
// 数量小于最小下限,取最小下限记录
drTarget = dsQJ.Tables[0].Rows[0];
}
else if (fBJSL > dLastBJSLSX)
{
// 数量大于最大上限,取最大上限记录并按盘具数折算
drTarget = dsQJ.Tables[0].Rows[dsQJ.Tables[0].Rows.Count - 1];
bUseMaxSXScale = true;
dMaxBJSLSX = dLastBJSLSX;
}
else
{
// 若数量落在中间断档,按无匹配处理
return dicYZZBZPF;
}
}
string sPJWLID = drTarget["XLXSBJPJWJSLQJ_PJWLID"].ToString().Trim();
if (string.IsNullOrEmpty(sPJWLID))
{
return dicYZZBZPF;
}
// 根据盘具物料获取盘具最新有效价格(按PJCZ/PJWJ/PJNJ/PJKD关联)
TSQL sqlPJJG = new TSQL(dberp);
sqlPJJG.Clear();
sqlPJJG.Add(@" SELECT ISNULL(JG.XLZPPJJG_PJJG,0) AS PJJG
FROM XLZPPJ PJ
INNER JOIN XLZPPJJG JG ON JG.XLZPPJJG_PJCZ = PJ.XLZPPJ_PJCZ
AND ISNULL(JG.XLZPPJJG_PJWJ,0) = ISNULL(PJ.XLZPPJ_PJWJ,0)
AND ISNULL(JG.XLZPPJJG_PJNJ,0) = ISNULL(PJ.XLZPPJ_PJNJ,0)
AND ISNULL(JG.XLZPPJJG_PJKD,0) = ISNULL(PJ.XLZPPJ_PJKD,0)
WHERE PJ.XLZPPJ_PJWLID=:pPJWLID
AND ISNULL(PJ.XLZPPJ_TYBZ,'N')<>'Y'
AND (PJ.XLZPPJ_QYRQ IS NULL OR PJ.XLZPPJ_QYRQ <= :pDtNow)
AND JG.XLZPPJJG_YXQS <= :pDtNow
AND (JG.XLZPPJJG_YXQZ >= :pDtNow OR JG.XLZPPJJG_YXQZ IS NULL)
ORDER BY JG.XLZPPJJG_YXQS DESC ");
sqlPJJG.ParamByName("pPJWLID").Value = sPJWLID;
sqlPJJG.ParamByName("pDtNow").Value = DateTime.Now;
DataSet dsPJJG = dberp.OpenDataSet(sqlPJJG);
if ((dsPJJG.Tables.Count == 0) || (dsPJJG.Tables[0].Rows.Count == 0))
{
return dicYZZBZPF;
}
double dPJJG = CMISproConvert.StrToFloat(dsPJJG.Tables[0].Rows[0]["PJJG"].ToString());
if (dPJJG <= 0)
{
return dicYZZBZPF;
}
if (fBJSL <= 0)
{
return dicYZZBZPF;
}
double dYZZ = 0;
if (bUseMaxSXScale)
{
if (dMaxBJSLSX <= 0)
{
return dicYZZBZPF;
}
double dPJS = Math.Ceiling(fBJSL / dMaxBJSLSX);
dYZZ = (dPJS * dPJJG) / fBJSL;
}
else
{
dYZZ = dPJJG / fBJSL;
}
dYZZ *= GetHSBL(sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
if ((!IsHS) && (!IsHSWL))
{
dYZZ = NumberUtils.RoundX(dYZZ / (1 + dSL), 6);
}
dicYZZBZPF[sBZPFYZID] = dYZZ;
return dicYZZBZPF;
}
//获取运费因子
public static Dictionary<string, double> GetYFYZZ(string sYFYZID, string sXZQHID, string sXLXHID, double dTJ, double dLJ)
{
string sTcpList = "";
string sLcpList = "";
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860063);
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_TDTGSCLID))
sTcpList = pzxx.XLXSBJPZ_TDTGSCLID;
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_LDTGSCLID))
sLcpList = pzxx.XLXSBJPZ_LDTGSCLID;
bool bTCP = false;
bool bLCP = false;
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_TDTGSCLID) && CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLXHB where 1=1 XLXHB_XLXHID='" + sXLXHID + "' and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTcpList)))
bTCP = true;
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_LDTGSCLID) && CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLXHB where 1=1 XLXHB_XLXHID='" + sXLXHID + "' and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sLcpList)))
bLCP = true;
Dictionary<string, double> dicYZZBZPF = new Dictionary<string, double>();
dicYZZBZPF.Add(sYFYZID, 0);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
if (bTCP)
{
sql.Clear();
sql.Add(@" select XLXSBJYFJZQJ_YFJZQH
from XLXSBJYFJZQJ
where XLXSBJYFJZQJ_YFJZQJMC like '%铜%' and XLXSBJYFJZQJ_YFJZXX<=:pTJ and XLXSBJYFJZQJ_YFJZSX>:pTJ ");
sql.ParamByName("pTJ").Value = dTJ * 1000;
}
if (bLCP)
{
sql.Clear();
sql.Add(@" select XLXSBJYFJZQJ_YFJZQH
from XLXSBJYFJZQJ
where XLXSBJYFJZQJ_YFJZQJMC like '%铝%' and XLXSBJYFJZQJ_YFJZXX<=:pTJ and XLXSBJYFJZQJ_YFJZSX>:pTJ ");
sql.ParamByName("pTJ").Value = dLJ * 1000;
}
DataSet dsQH = dberp.OpenDataSet(sql);
if (dsQH.Tables[0].Rows.Count > 0)
{
string sQH = dsQH.Tables[0].Rows[0][0].ToString().Trim();
sql.Clear();
sql.Add(" select XLXSBJDQYFB_YSFL from XLXSBJDQYFB where XLXSBJDQYFB_XZQHID=:XLXSBJDQYFB_XZQHID and XLXSBJDQYFB_YFJZQH=:XLXSBJDQYFB_YFJZQH ");
sql.ParamByName("XLXSBJDQYFB_XZQHID").Value = sXZQHID;
sql.ParamByName("XLXSBJDQYFB_YFJZQH").Value = sQH;
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDQYFB_YSFL"].ToString());
dicYZZBZPF[sYFYZID] = dYZZ;
}
}
return dicYZZBZPF;
}
//获取报价因子的最小值
public static string GetMinYZZ(string sYZID, double dHSBL)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSBJDYZZ_MINC,XLXSTZYZ_JJFS from XLXSBJDYZZ ");
SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_JGBID=XLXSBJDYZZ_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ_YZID");
SQL.Add(" where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_YZID=:pYZID and XLXSTZYZ_TJYS=' '");
SQL.ParamByName("pYZID").Value = sYZID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
if (string.IsNullOrEmpty(ds.Tables[0].Rows[0][0].ToString().Trim()))
return "";
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString().Trim());
if (ds.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
dYZZ *= dHSBL;
return dYZZ.ToString();
}
else
return "";
}
//获取报价因子的最大值
public static string GetMaxYZZ(string sYZID, double dHSBL)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSBJDYZZ_MAXC,XLXSTZYZ_JJFS from XLXSBJDYZZ ");
SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_JGBID=XLXSBJDYZZ_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZ_YZID");
SQL.Add(" where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_YZID=:pYZID and XLXSTZYZ_TJYS=' '");
SQL.ParamByName("pYZID").Value = sYZID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
if (string.IsNullOrEmpty(ds.Tables[0].Rows[0][0].ToString().Trim()))
return "";
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString().Trim());
if (ds.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
dYZZ *= dHSBL;
return dYZZ.ToString();
}
else
return "";
}
//获取调价因素B的因子的最小值
public static string GetMinYZZB(string sSYDWID,string sYZID, double dHSBL)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSBJDYZZB_MINC,XLXSTZYZ_JJFS from XLXSBJDYZZB ");
SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_JGBID=XLXSBJDYZZB_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZB_YZID");
SQL.Add(" where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_YZID=:pYZID and XLXSTZYZ_TJYS='B' and XLXSBJDYZZB_SYDWID=:pSYDWID ");
SQL.ParamByName("pYZID").Value = sYZID;
SQL.ParamByName("pSYDWID").Value = sSYDWID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
if (string.IsNullOrEmpty(ds.Tables[0].Rows[0][0].ToString().Trim()))
return "";
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString().Trim());
if (ds.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
dYZZ *= dHSBL;
return dYZZ.ToString();
}
else
return "";
}
//获取调价因素B的因子的最大值
public static string GetMaxYZZB(string sSYDWID, string sYZID, double dHSBL)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSBJDYZZB_MAXC,XLXSTZYZ_JJFS from XLXSBJDYZZB ");
SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_JGBID=XLXSBJDYZZB_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZB_YZID ");
SQL.Add(" where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_YZID=:pYZID and XLXSTZYZ_TJYS='B' and XLXSBJDYZZB_SYDWID=:pSYDWID ");
SQL.ParamByName("pYZID").Value = sYZID;
SQL.ParamByName("pSYDWID").Value = sSYDWID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
if (string.IsNullOrEmpty(ds.Tables[0].Rows[0][0].ToString().Trim()))
return "";
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString().Trim());
if (ds.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim() == "JJ")
dYZZ *= dHSBL;
return dYZZ.ToString();
}
else
return "";
}
public static double GetHSBL(string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
double dBJDJLDWHSBL = 1;
if (sXLXHID.Equals(""))
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sBJDJLDW);
}
else if (XLBJDUtils.sJCJLDWList.IndexOf(sBJU003.ToUpper()) >= 0
&& XLBJDUtils.sJCJLDWList.IndexOf(sBJDJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sBJDJLDW);
}
return dBJDJLDWHSBL == 0 ? 1 : dBJDJLDWHSBL;
}
//获取调价因素为" "的报价格表因子值
public static Dictionary<string, double> GetJGBYZZ0(string sJGEJGBID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBYZZ_YZID,XLXSJGBYZZ_YZZ from XLXSJGBYZZ,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZ_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ_YZID and XLXSTZYZ_MXBH='JZJ' ");
sql.Add(" and exists ( select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID) ");
sql.Add(" order by XLXSJGBYZZ_YZID");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZ0 = new Dictionary<string, double>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//形如(JZ07,2)
if (!dicYZZ0.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ_YZID"].ToString().Trim()))
{
dicYZZ0.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ_YZZ"].ToString()));
}
}
return dicYZZ0;
}
//获取调价因素为【1|型号&规格&电压&标准】 的价格表因子值
public static Dictionary<string, double> GetJGBYZZ1(string sJGEJGBID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBYZZ1_YZID,XLXSJGBYZZ1_YZZ from XLXSJGBYZZ1");
sql.Add(" left join XLXSBJXLGGTHB XLXSBJXLGGTHB_YZZ1 on XLXSBJXLGGTHB_YZZ1.XLXSBJXLGGTHB_XLGGID=XLXSJGBYZZ1_XLGGID");
sql.Add(" ,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZ1_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ1_YZID and XLXSTZYZ_MXBH='JZJ'");
sql.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID)");
sql.Add(" and XLXSJGBYZZ1_XLXHID =:pXLXHID ");
sql.Add(" and XLXSBJXLGGTHB_YZZ1.XLXSBJXLGGTHB_XLGGIDCH=:pXLGGID ");
sql.Add(" and XLXSJGBYZZ1_XLBZID =:pXLBZID ");
sql.Add(" and XLXSJGBYZZ1_DYDJID =:pDYDJID ");
sql.Add(" order by XLXSJGBYZZ1_YZID");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID.Replace('*', '×');
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZ1 = new Dictionary<string, double>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//形如(JZ07,2)
if (!dicYZZ1.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ1_YZID"].ToString().Trim()))
{
dicYZZ1.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ1_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ1_YZZ"].ToString()));
}
}
return dicYZZ1;
}
//获取调价因素为【2|产品用途&电压等级分类&报价材料】 的价格表因子值----因子值无法选择到,不参与计算
//获取调价因素为【3|销售区域&导体材料&线缆型号&主芯截面】的价格表因子值
public static Dictionary<string, double> GetJGBYZZ3(string sJGEJGBID, string sXSQYID, string sXLXHID, string fZXJM)
{
Dictionary<string, double> dicYZZ3 = new Dictionary<string, double>();
dicYZZ3.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBYZZ3_YZZ,XLXSJGBYZZ3_YZID, ");
sql.Add(" case WHEN XLXSJGBYZZ3_XLXHID<>' ' and XLXSJGBYZZ3_ZXJM<>0 then 1 ");
sql.Add(" WHEN XLXSJGBYZZ3_XLXHID<>' ' and XLXSJGBYZZ3_ZXJM=0 then 2 ");
sql.Add(" WHEN XLXSJGBYZZ3_XLXHID=' ' and XLXSJGBYZZ3_ZXJM<>0 then 3 ");
sql.Add(" WHEN XLXSJGBYZZ3_XLXHID=' ' and XLXSJGBYZZ3_ZXJM=0 then 4 ");
sql.Add(" END AS PX,XLXSJGBYZZ3_XLXHID,XLXSJGBYZZ3_ZXJM ");
sql.Add(" from XLXSJGBYZZ3,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZ3_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ3_YZID and XLXSTZYZ_MXBH='JZJ'");
sql.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID)");
sql.Add(" and XLXSJGBYZZ3_DTCLID=(select XLXHB_DTCLID from XLXHB where XLXHB_XLXHID=:pXLXHID) ");
sql.Add(" and XLXSJGBYZZ3_XSQYID=:pXSQYID ");
sql.Add(" order by PX,XLXSJGBYZZ3_YZID");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXSQYID").Value = sXSQYID;
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSJGBYZZ3_XLXHID"].ToString().Trim().Equals(sXLXHID)
&& (CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_ZXJM"].ToString()) == CMISproConvert.StrToFloat(fZXJM)))
{
if (!dicYZZ3.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZID"].ToString().Trim()))
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (ds.Tables[0].Rows[i]["XLXSJGBYZZ3_XLXHID"].ToString().Trim().Equals(sXLXHID))
{
if (!dicYZZ3.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZID"].ToString().Trim()))
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("3"))
{
if (CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_ZXJM"].ToString()) == CMISproConvert.StrToFloat(fZXJM))
{
if (!dicYZZ3.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZID"].ToString().Trim()))
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("4"))
{
if (!dicYZZ3.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZID"].ToString().Trim()))
dicYZZ3.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ3_YZZ"].ToString()));
}
}
return dicYZZ3;
}
//获取调价因素为【4|型号&电压等级&芯线结构&主芯截面范围】的价格表因子值
public static Dictionary<string, double> GetJGBYZZ4(string sJGEJGBID, string sXLXHID, string sDYDJID, string sXXJGID, string fZXJM)
{
Dictionary<string, double> dicYZZ4 = new Dictionary<string, double>();
dicYZZ4.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBYZZ4_YZZ,XLXSJGBYZZ4_YZID, ");
sql.Add(" case WHEN XLXSJGBYZZ4_DYDJID<>' ' and XLXSJGBYZZ4_XXJGID<>' ' then 1 ");
sql.Add(" WHEN XLXSJGBYZZ4_DYDJID<>' ' and XLXSJGBYZZ4_XXJGID=' ' then 2 ");
sql.Add(" WHEN XLXSJGBYZZ4_DYDJID=' ' and XLXSJGBYZZ4_XXJGID<>' ' then 3 ");
sql.Add(" WHEN XLXSJGBYZZ4_DYDJID=' ' and XLXSJGBYZZ4_XXJGID=' ' then 4 ");
sql.Add(" END AS PX,XLXSJGBYZZ4_DYDJID,XLXSJGBYZZ4_XXJGID ");
sql.Add(" from XLXSJGBYZZ4,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZ4_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ4_YZID and XLXSTZYZ_MXBH='JZJ'");
sql.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID)");
sql.Add(" and XLXSJGBYZZ4_XLXHID=:pXLXHID ");
sql.Add(" and XLXSJGBYZZ4_ZXJMXX<=:pZXJM and ((XLXSJGBYZZ4_ZXJMSX<>0 and XLXSJGBYZZ4_ZXJMSX>=:pZXJM) or XLXSJGBYZZ4_ZXJMSX=0)");
sql.Add(" order by PX,XLXSJGBYZZ4_YZID");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pZXJM").Value = CMISproConvert.StrToFloat(fZXJM);
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSJGBYZZ4_DYDJID"].ToString().Trim().Equals(sDYDJID) && ds.Tables[0].Rows[i]["XLXSJGBYZZ4_XXJGID"].ToString().Trim().Equals(sXXJGID))
{
if (!dicYZZ4.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZID"].ToString().Trim()))
dicYZZ4.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (ds.Tables[0].Rows[i]["XLXSJGBYZZ4_DYDJID"].ToString().Trim().Equals(sDYDJID))
{
if (!dicYZZ4.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZID"].ToString().Trim()))
dicYZZ4.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("3"))
{
if (ds.Tables[0].Rows[i]["XLXSJGBYZZ4_XXJGID"].ToString().Trim().Equals(sXXJGID))
{
if (!dicYZZ4.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZID"].ToString().Trim()))
dicYZZ4.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("4"))
{
if (!dicYZZ4.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZID"].ToString().Trim()))
dicYZZ4.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ4_YZZ"].ToString()));
}
}
return dicYZZ4;
}
//获取调价因素为"9|型号&规格&电压等级&芯线结构&主芯截面范围"的价格表因子值
public static Dictionary<string, double> GetJGBYZZ9(string sJGEJGBID, string sXLXHID, string sXLGGID, string sDYDJID)
{
Dictionary<string, double> dicYZZ9 = new Dictionary<string, double>();
dicYZZ9.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBYZZ9_YZZ,XLXSJGBYZZ9_YZID, ");
sql.Add(" case WHEN XLXSJGBYZZ9_XLGGID<>' ' and XLXSJGBYZZ9_DYDJID<>' ' then 1 ");
sql.Add(" WHEN XLXSJGBYZZ9_XLGGID<>' ' and XLXSJGBYZZ9_DYDJID=' ' then 2 ");
sql.Add(" WHEN XLXSJGBYZZ9_XLGGID=' ' and XLXSJGBYZZ9_DYDJID<>' ' then 3 ");
sql.Add(" WHEN XLXSJGBYZZ9_XLGGID=' ' and XLXSJGBYZZ9_DYDJID=' ' then 4 ");
sql.Add(" END AS PX,XLXSJGBYZZ9_XLGGID,XLXSJGBYZZ9_DYDJID ");
sql.Add(" from XLXSJGBYZZ9,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZ9_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ9_YZID and XLXSTZYZ_MXBH='JZJ'");
sql.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID)");
sql.Add(" and XLXSJGBYZZ9_XLXHID=:pXLXHID ");
sql.Add(" order by PX,XLXSJGBYZZ9_YZID");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
sql.ParamByName("pXLXHID").Value = sXLXHID;
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSJGBYZZ9_XLGGID"].ToString().Trim().Equals(sXLGGID) && ds.Tables[0].Rows[i]["XLXSJGBYZZ9_DYDJID"].ToString().Trim().Equals(sDYDJID))
{
if (!dicYZZ9.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZID"].ToString().Trim()))
dicYZZ9.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (ds.Tables[0].Rows[i]["XLXSJGBYZZ9_XLGGID"].ToString().Trim().Equals(sXLGGID))
{
if (!dicYZZ9.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZID"].ToString().Trim()))
dicYZZ9.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("3"))
{
if (ds.Tables[0].Rows[i]["XLXSJGBYZZ9_DYDJID"].ToString().Trim().Equals(sDYDJID))
{
if (!dicYZZ9.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZID"].ToString().Trim()))
dicYZZ9.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("4"))
{
if (!dicYZZ9.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZID"].ToString().Trim()))
dicYZZ9.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ9_YZZ"].ToString()));
}
}
return dicYZZ9;
}
//获取调价因素为【5|型号&电压等级&主芯截面范围&总芯数范围】的价格表因子值
public static Dictionary<string, double> GetJGBYZZ5(string sJGEJGBID, string sXLXHID, string sDYDJID, string fZXJM, string fGGZXS)
{
Dictionary<string, double> dicYZZ5 = new Dictionary<string, double>();
dicYZZ5.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBYZZ5_YZZ,XLXSJGBYZZ5_YZID, ");
sql.Add(" case WHEN XLXSJGBYZZ5_DYDJID<>' ' then 1 ");
sql.Add(" WHEN XLXSJGBYZZ5_DYDJID=' ' then 2 ");
sql.Add(" END AS PX,XLXSJGBYZZ5_DYDJID ");
sql.Add(" from XLXSJGBYZZ5,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZ5_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ5_YZID and XLXSTZYZ_MXBH='JZJ'");
sql.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID)");
sql.Add(" and XLXSJGBYZZ5_XLXHID=:pXLXHID ");
sql.Add(" and XLXSJGBYZZ5_ZXJMXX<=:pZXJM and ((XLXSJGBYZZ5_ZXJMSX<>0 and XLXSJGBYZZ5_ZXJMSX>=:pZXJM) or XLXSJGBYZZ5_ZXJMSX=0)");
sql.Add(" and XLXSJGBYZZ5_ZXSXX<=:pZXS and ((XLXSJGBYZZ5_ZXSSX<>0 and XLXSJGBYZZ5_ZXSSX>=:pZXS) or XLXSJGBYZZ5_ZXSSX=0)");
sql.Add(" order by PX,XLXSJGBYZZ5_YZID");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pZXJM").Value = CMISproConvert.StrToFloat(fZXJM);
sql.ParamByName("pZXS").Value = CMISproConvert.StrToFloat(fGGZXS);
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("1"))
{
if (ds.Tables[0].Rows[i]["XLXSJGBYZZ5_DYDJID"].ToString().Trim().Equals(sDYDJID))
{
if (!dicYZZ5.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ5_YZID"].ToString().Trim()))
dicYZZ5.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ5_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ5_YZZ"].ToString()));
}
}
if (ds.Tables[0].Rows[i]["PX"].ToString().Trim().Equals("2"))
{
if (!dicYZZ5.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ5_YZID"].ToString().Trim()))
dicYZZ5.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ5_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ5_YZZ"].ToString()));
}
}
return dicYZZ5;
}
//获取调价因素为【8|材料重量】 的价格表因子值
public static Dictionary<string, double> GetJGBYZZ8(string sJGEJGBID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBYZZ8_YZID,XLXSJGBYZZ8_YZZ,XLXSCLQD_CLZL from XLXSTZYZ,XLXSJGBYZZ8 ");
sql.Add(" left join XLXSBJXLGGTHB XLXSBJXLGGTHB_YZZ8 on XLXSBJXLGGTHB_YZZ8.XLXSBJXLGGTHB_XLGGID=XLXSJGBYZZ8_XLGGID ");
sql.Add(" LEFT JOIN XLXSCLQD ON XLXSCLQD_XLXHID = XLXSJGBYZZ8_XLXHID AND XLXSCLQD_XLBZID = XLXSJGBYZZ8_XLBZID AND XLXSCLQD_XLGGID = XLXSJGBYZZ8_XLGGID AND XLXSCLQD_DYDJID = XLXSJGBYZZ8_DYDJID ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZ8_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZ8_YZID and XLXSTZYZ_MXBH='JZJ'");
sql.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID)");
sql.Add(" and XLXSJGBYZZ8_XLXHID =:pXLXHID ");
sql.Add(" and XLXSBJXLGGTHB_YZZ8.XLXSBJXLGGTHB_XLGGIDCH=:pXLGGID ");
sql.Add(" and XLXSJGBYZZ8_XLBZID =:pXLBZID ");
sql.Add(" and XLXSJGBYZZ8_DYDJID =:pDYDJID ");
sql.Add(" order by XLXSJGBYZZ8_YZID");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID.Replace('*', '×');
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
DataSet ds = dberp.OpenDataSet(sql);
Dictionary<string, double> dicYZZ8 = new Dictionary<string, double>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//形如(JZ07,2)
if (!dicYZZ8.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZ8_YZID"].ToString().Trim()))
{
dicYZZ8.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZ8_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZ8_YZZ"].ToString(), 0) * CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSCLQD_CLZL"].ToString(), 0) / 1000);
}
}
return dicYZZ8;
}
public static string GetCPMLID(string sXLXHID, string sDYDJID)
{
string sCPMLID = string.Empty;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXSBJXHML_CPMLID from XLXSBJXHML where XLXSBJXHML_XLXHID=:XLXSBJXHML_XLXHID and XLXSBJXHML_DYDJID=:XLXSBJXHML_DYDJID ");
sql.ParamByName("XLXSBJXHML_XLXHID").Value = sXLXHID;
sql.ParamByName("XLXSBJXHML_DYDJID").Value = sDYDJID;
DataSet dsCPML = dberp.OpenDataSet(sql);
if (dsCPML.Tables[0].Rows.Count > 0)
{
sCPMLID = dsCPML.Tables[0].Rows[0][0].ToString().Trim();
}
else
{
sql.ParamByName("XLXSBJXHML_XLXHID").Value = sXLXHID;
sql.ParamByName("XLXSBJXHML_DYDJID").Value = " ";
dsCPML = dberp.OpenDataSet(sql);
if (dsCPML.Tables[0].Rows.Count > 0)
{
sCPMLID = dsCPML.Tables[0].Rows[0][0].ToString().Trim();
}
}
return sCPMLID;
}
public static Dictionary<string, double> GetJGBYZZA(string sJGEJGBID, string sXLXHID, string sXLGGID, string sDYDJID)
{
string sCPMLID = GetCPMLID(sXLXHID, sDYDJID);
Dictionary<string, double> dicYZZA = new Dictionary<string, double>();
dicYZZA.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
string sZXJM = XLBJDUtils.GetZXJMByXLGGID(sXLGGID, sXLXHID);
if (!string.IsNullOrEmpty(sCPMLID))
{
sql.Clear();
sql.Add("select XLXSCPML_CPMLID from XLXSCPML where XLXSCPML_CPMLIDS like :pCPMLID ");
sql.ParamByName("pCPMLID").Value = "%" + sCPMLID + "%";
DataSet dsZHCP = dberp.OpenDataSet(sql);
if (dsZHCP.Tables[0].Rows.Count > 0)
{
sCPMLID = dsZHCP.Tables[0].Rows[0][0].ToString().Trim();
sql.Clear();
sql.Add("select XLXSJGBYZZA_YZZ,XLXSJGBYZZA_YZID ");
sql.Add(" from XLXSJGBYZZA,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZA_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZA_YZID and XLXSTZYZ_MXBH='JZJ'");
sql.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID)");
sql.Add(" and XLXSJGBYZZA_CPMLID=:XLXSJGBYZZA_CPMLID and XLXSJGBYZZA_XLGGID=:XLXSJGBYZZA_XLGGID ");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
sql.ParamByName("XLXSJGBYZZA_CPMLID").Value = sCPMLID;
sql.ParamByName("XLXSJGBYZZA_XLGGID").Value = sZXJM;
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (!dicYZZA.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZA_YZID"].ToString().Trim()))
dicYZZA.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZA_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZA_YZZ"].ToString()));
}
}
}
return dicYZZA;
}
public static Dictionary<string, double> GetJGBYZZB(string sJGEJGBID, string fZXJM)
{
Dictionary<string, double> dicYZZB = new Dictionary<string, double>();
dicYZZB.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBYZZB_YZZ,XLXSJGBYZZB_YZID ");
sql.Add(" from XLXSJGBYZZB,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZB_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZB_YZID and XLXSTZYZ_MXBH='JZJ'");
sql.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID)");
sql.Add(" and XLXSJGBYZZB_ZXJMS<=:pZXJM and ((XLXSJGBYZZB_ZXJMZ<>0 and XLXSJGBYZZB_ZXJMZ>=:pZXJM) or XLXSJGBYZZB_ZXJMZ=0)");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
sql.ParamByName("pZXJM").Value = CMISproConvert.StrToFloat(fZXJM);
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (!dicYZZB.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZB_YZID"].ToString().Trim()))
dicYZZB.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZB_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZB_YZZ"].ToString()));
}
return dicYZZB;
}
public static Dictionary<string, double> GetJGBYZZC(string sJGEJGBID, string sXLXHID, string sDYDJID, string sZXJM)
{
Dictionary<string, double> dicYZZC = new Dictionary<string, double>();
dicYZZC.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBYZZC_YZZ,XLXSJGBYZZC_YZID ");
sql.Add(" from XLXSJGBYZZC,XLXSTZYZ ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSJGBYZZC_JGBID and XLXSTZYZ_YZID=XLXSJGBYZZC_YZID and XLXSTZYZ_MXBH='JZJ' and XLXSJGBYZZC_ZXJM=:pZXJM ");
sql.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID =:pJGEJGBID and XLXSJGBYZ_YZID = XLXSTZYZ_YZID)");
sql.Add(" and exists(select 1 from XLXSBJCPYS where XLXSBJCPYS_XLJBXHID=:pXLXHID and XLXSBJCPYS_DYDJID=:pDYDJID and XLXSBJCPYS_XXJGID =XLXSJGBYZZC_CPTX )");
sql.ParamByName("pJGEJGBID").Value = sJGEJGBID;
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
sql.ParamByName("pZXJM").Value = sZXJM;
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (!dicYZZC.ContainsKey(ds.Tables[0].Rows[i]["XLXSJGBYZZC_YZID"].ToString().Trim()))
dicYZZC.Add(ds.Tables[0].Rows[i]["XLXSJGBYZZC_YZID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZC_YZZ"].ToString()));
else
{
dicYZZC[ds.Tables[0].Rows[i]["XLXSJGBYZZC_YZID"].ToString().Trim()] += CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSJGBYZZC_YZZ"].ToString());
}
}
return dicYZZC;
}
//根据型号获取导体材料ID
public static string GetDTCLIDByXLXHID(string sXLXHID)
{
string sDTCLID = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" select XLXHB_DTCLID from XLXHB WHERE XLXHB_XLXHID =:pXLXHID ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
DataSet data = dberp.OpenDataSet(sql);
if (data.Tables[0].Rows.Count > 0)
{
sDTCLID = data.Tables[0].Rows[0][0].ToString().Trim();
}
return sDTCLID;
}
//根据规格解析出主芯截面
//25, 2×50, 3×120+1×70, 3×120×70
public static string GetZXJMByXLGGID(string sXLGGID, string sXLXHID)
{
string sZXJM = "";
string sXLGGJDGZ = "0";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXHB_XLGGJDGZ from XLXHB WHERE XLXHB_XLXHID=:pXLXHID ");
sql.ParamByName("pXLXHID").Value = sXLXHID.Trim();
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
sXLGGJDGZ = ds.Tables[0].Rows[0][0].ToString().Trim();
sql.Clear();
sql.Add("select XLGGB_DTJMZHID from XLGGB WHERE XLGGB_XLGGID=:pXLGGID and XLGGB_XLGGJDGZ=:pXLGGJDGZ ");
sql.ParamByName("pXLGGID").Value = sXLGGID.Trim().Replace("*", "×");
sql.ParamByName("pXLGGJDGZ").Value = sXLGGJDGZ;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
string sDTJMZHID = ds.Tables[0].Rows[0]["XLGGB_DTJMZHID"].ToString().Trim();
if (sDTJMZHID.Split('/').Length > 0)
{
sZXJM = sDTJMZHID.Split('/')[0];
}
else
{
sZXJM = sDTJMZHID;
}
}
if (sZXJM.Equals(""))
{
sZXJM = "0";
}
return sZXJM;
}
//根据规格解析出主芯截面、芯线结构,规格总芯数
public static Dictionary<string, string> GetXXJGIDByXLGGID(string sXLGGID, string sXLXHID)
{
string sZXJM = "";
string sXXJGID = "";
string sGGZXS = "";
string sXLGGJDGZ = "0";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXHB_XLGGJDGZ from XLXHB WHERE XLXHB_XLXHID=:pXLXHID ");
sql.ParamByName("pXLXHID").Value = sXLXHID.Trim();
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
sXLGGJDGZ = ds.Tables[0].Rows[0][0].ToString().Trim();
sql.Clear();
sql.Add("select XLGGB_DTJMZHID,XLGGB_XXJGID,XLGGB_GGZXS from XLGGB WHERE XLGGB_XLGGID=:pXLGGID and XLGGB_XLGGJDGZ=:pXLGGJDGZ ");
sql.ParamByName("pXLGGID").Value = sXLGGID.Trim().Replace("*", "×");
sql.ParamByName("pXLGGJDGZ").Value = sXLGGJDGZ;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
string sDTJMZHID = ds.Tables[0].Rows[0]["XLGGB_DTJMZHID"].ToString().Trim();
if (sDTJMZHID.Split('/').Length > 0)
{
sZXJM = sDTJMZHID.Split('/')[0];
}
else
{
sZXJM = sDTJMZHID;
}
sXXJGID = ds.Tables[0].Rows[0]["XLGGB_XXJGID"].ToString().Trim();
sGGZXS = ds.Tables[0].Rows[0]["XLGGB_GGZXS"].ToString().Trim();
}
if (sZXJM.Equals(""))
{
sZXJM = "0";
}
Dictionary<string, string> dicXLGGB = new Dictionary<string, string>();
dicXLGGB.Add("ZXJM", sZXJM);
dicXLGGB.Add("XXJGID", sXXJGID);
dicXLGGB.Add("GGZXS", sGGZXS);
return dicXLGGB;
}
//新建报价单明细时,插入XLXSBJDYZZ0,给报价单因子赋默认值
public static void InsertXLXSBJDYZZ0(TDatabase dberp, TSQL sSQL, string sBJFLID, string sBJDID, int iXH, double fBJSL,
string sXLXHID, string sXLGGID, string sXLBZID, string sXLDYDJ, string sXSQYID, string sPJLX,
string sFKQXNR, string sSYDWID, string sJLDW, string sBJU003, string sWGCPBZ, string sXLYSID)
{
sSQL.Clear();
sSQL.Add("delete from XLXSBJDYZZ0 where XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH =:pXH ");
sSQL.ParamByName("pBJDID").Value = sBJDID;
sSQL.ParamByName("pXH").Value = iXH;
dberp.ExecSQL(sSQL);
//先插入再更新
sSQL.Clear();
sSQL.Add("insert into XLXSBJDYZZ0(XLXSBJDYZZ0_BJDID,XLXSBJDYZZ0_XH) ");
sSQL.Add("values(:pBJDID,:pXH) ");
sSQL.ParamByName("pBJDID").Value = sBJDID;
sSQL.ParamByName("pXH").Value = iXH;
dberp.ExecSQL(sSQL);
//按行存储因子值,用于一行执行一次update
Dictionary<string, double> dicBJDYZZ = new Dictionary<string, double>();
//报价分类使用到的调价因素
sSQL.Clear();
sSQL.Add("select XLXSTZYZ_TJYS from XLXSBJFLYZ");
sSQL.Add(" left join XLXSTZYZ on XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_YZID=XLXSBJFLYZ_YZID");
sSQL.Add(" where XLXSBJFLYZ_BJFLID=:pBJFLID");
sSQL.Add(" order by XLXSTZYZ_XSXH,XLXSBJFLYZ_YZID");
sSQL.ParamByName("pBJFLID").Value = sBJFLID.Trim();
DataSet dsTJYS = dberp.OpenDataSet(sSQL);
string sTJYSList = "";
for (int i = 0; i < dsTJYS.Tables[0].Rows.Count; i++)
{
string sTJYS = dsTJYS.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim();
if (sTJYS.Equals(""))
sTJYS = "空";
if (sTJYSList.Equals(""))
sTJYSList = "," + sTJYS + ",";
else
{
if (!sTJYSList.Contains("," + sTJYS + ","))
sTJYSList = sTJYSList + sTJYS + ",";
}
}
double dJLDWHSBL = 1.0;
dJLDWHSBL = XLBJDUtils.GetJLDWHSBL_SL(sJLDW, sBJU003);
double dTmpBJSL = fBJSL * dJLDWHSBL;
Dictionary<string, string> dicXLGGB = GetXXJGIDByXLGGID(sXLGGID, sXLXHID);
//解析获取主芯截面
string fZXJM = dicXLGGB["ZXJM"];
//获取芯线结构
string sXXJGID = dicXLGGB["XXJGID"];
//获取调价因素为空的因子值
Dictionary<string, double> dicYZZ0 = XLBJDUtils.GetBJDYZZ0(sBJFLID, sWGCPBZ.Equals("Y"), false, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sBJDID);
//获取按“1|付款方式”设置的调价因子值
Dictionary<string, double> dicYZZ1 = new Dictionary<string, double>();
if (sTJYSList.Contains(",1,"))
{
dicYZZ1 = XLBJDUtils.GetBJDYZZ1(sBJFLID, sPJLX, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sBJDID);
}
//获取按“2|导体材料&电压区间&报价数量区间”设置的调价因子值
Dictionary<string, double> dicYZZ2 = new Dictionary<string, double>();
if (sTJYSList.Contains(",2,"))
{
dicYZZ2 = XLBJDUtils.GetBJDYZZ2(sBJFLID, sXLDYDJ, dTmpBJSL, sXLXHID, sJLDW, sBJU003, sXLGGID, sXLBZID, sBJDID);
}
//获取按“3|产品用途&电压等级分类&报价数量区间”设置的调价因子值
Dictionary<string, double> dicYZZ3 = new Dictionary<string, double>();
if (sTJYSList.Contains(",3,"))
{
dicYZZ3 = XLBJDUtils.GetBJDYZZ3(sBJFLID, dTmpBJSL, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sJLDW, sBJU003, sBJDID);
}
//获取按“E|型号&电压等级&主芯截面范围&报价数量区间”设置的调价因子值
Dictionary<string, double> dicYZZE = new Dictionary<string, double>();
if (sTJYSList.Contains(",E,"))
{
dicYZZE = XLBJDUtils.GetBJDYZZE(sBJFLID, sXLXHID, sXLDYDJ, CMISproConvert.StrToFloat(fZXJM), dTmpBJSL, sJLDW, sBJU003, sXLGGID, sXLBZID, sBJDID);
}
//获取按“F|电压等级&芯线结构&报价数量区间加价/报价数量”设置的调价因子值
Dictionary<string, double> dicYZZF = new Dictionary<string, double>();
if (sTJYSList.Contains(",F,"))
{
dicYZZF = XLBJDUtils.GetBJDYZZF(sBJFLID, sXLXHID,sXLDYDJ, sXXJGID, dTmpBJSL, sJLDW, sBJU003, sBJDID);
}
//获取按“4|型号”设置的调价因子值
Dictionary<string, double> dicYZZ4 = new Dictionary<string, double>();
if (sTJYSList.Contains(",4,"))
{
dicYZZ4 = XLBJDUtils.GetBJDYZZ4(sBJFLID, sXLXHID, sJLDW, sBJU003, sXLGGID, sXLBZID, sXLDYDJ, sBJDID);
}
//获取按“5|销售区域&型号&标准&电压等级&主芯截面范围”设置的调价因子值
Dictionary<string, double> dicYZZ5 = new Dictionary<string, double>();
if (sTJYSList.Contains(",5,"))
{
dicYZZ5 = XLBJDUtils.GetBJDYZZ5(sBJFLID, sXSQYID, sXLXHID, sXLBZID, sXLDYDJ, CMISproConvert.StrToFloat(fZXJM), sJLDW, sBJU003, sXLGGID, sBJDID);
}
//获取按“6|报价数量区间调价米数/报价数量”设置的调价因子值
Dictionary<string, double> dicYZZ6 = new Dictionary<string, double>();
if (sTJYSList.Contains(",6,"))
{
dicYZZ6 = XLBJDUtils.GetBJDYZZ6(sBJFLID, dTmpBJSL, sJLDW, sBJU003, sBJDID);
}
//获取按“7|型号&电压等级&芯线结构&主芯截面范围”设置的调价因子值
Dictionary<string, double> dicYZZ7 = new Dictionary<string, double>();
if (sTJYSList.Contains(",7,"))
{
dicYZZ7 = XLBJDUtils.GetBJDYZZ7(sBJFLID, sXLXHID, sXLDYDJ, sXXJGID, CMISproConvert.StrToFloat(fZXJM), sJLDW, sBJU003, sXLGGID, sXLBZID, sBJDID);
}
//获取按“8|付款期限”设置的调价因子值
Dictionary<string, double> dicYZZ8 = new Dictionary<string, double>();
if (sTJYSList.Contains(",8,"))
{
dicYZZ8 = XLBJDUtils.GetBJDYZZ8(sBJFLID, sFKQXNR, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sBJDID);
}
//获取按“9|导体材料&产品用途&电压等级分类&产品特性”因子值
Dictionary<string, double> dicYZZ9 = new Dictionary<string, double>();
if (sTJYSList.Contains(",9,"))
{
dicYZZ9 = XLBJDUtils.GetBJDYZZ9(sBJFLID, sXLXHID, sXLDYDJ, sJLDW, sBJU003, sXLGGID, sXLBZID, sBJDID);
}
//获取按“A|型号&规格&电压&标准”因子值
Dictionary<string, double> dicYZZA = new Dictionary<string, double>();
if (sTJYSList.Contains(",A,"))
{
dicYZZA = XLBJDUtils.GetBJDYZZA(sBJFLID, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sJLDW, sBJU003, sBJDID);
}
Dictionary<string, double> dicYZZBZPF = new Dictionary<string, double>();
if (sTJYSList.Contains(",BZPF,"))
{
//包装盘费
string sBZPFYZID = XLBJDUtils.GetBJFLSYBZPFYZID(sBJFLID);
if (!sBZPFYZID.Equals(""))
{
sBZPFYZID = sBZPFYZID.Split('|')[0];
dicYZZBZPF = XLBJDUtils.GetBJDBZPFYZZ(sBZPFYZID, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sJLDW, sBJU003, sBJDID);
}
}
Dictionary<string, double> dicYZZCPWJPF = new Dictionary<string, double>();
if (sTJYSList.Contains(",CPWJPF,"))
{
//产品外径盘费
string sCPWJPFYZID = XLBJDUtils.GetBJFLSYCPWJPFYZID(sBJFLID);
if (!sCPWJPFYZID.Equals(""))
{
sCPWJPFYZID = sCPWJPFYZID.Split('|')[0];
dicYZZCPWJPF = XLBJDUtils.GetBJDCPWJPFYZZ(sCPWJPFYZID, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sJLDW, sBJU003, sBJDID, fBJSL);
}
}
//获取按“B|销售单位”因子值
Dictionary<string, double> dicYZZB = new Dictionary<string, double>();
if (sTJYSList.Contains(",B,"))
{
dicYZZB = XLBJDUtils.GetBJDYZZB(sBJFLID, sSYDWID, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sBJDID);
}
//获取按“C|产品目录&主芯截面范围&产品特性”因子值
Dictionary<string, double> dicYZZC = new Dictionary<string, double>();
if (sTJYSList.Contains(",C,"))
{
dicYZZC = XLBJDUtils.GetBJDYZZC(sBJDID, sBJFLID, sXLXHID, sXLDYDJ, CMISproConvert.StrToFloat(fZXJM), sJLDW, sBJU003, sXLGGID, sXLBZID);
}
//获取按“D|颜色”设置的调价因子值
Dictionary<string, double> dicYZZD = new Dictionary<string, double>();
if (sTJYSList.Contains(",D,"))
{
dicYZZD = XLBJDUtils.GetBJDYZZD(sBJFLID, sXLYSID, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sBJDID);
}
Dictionary<string, double> dicYZZG = new Dictionary<string, double>();
if (sTJYSList.Contains(",G,"))
{
dicYZZG = XLBJDUtils.GetBJDYZZG(sBJFLID, sXLXHID, sXLDYDJ, sXXJGID, CMISproConvert.StrToFloat(fZXJM), dTmpBJSL, sJLDW, sBJU003, sBJDID);
}
Dictionary<string, double> dicYZZH = new Dictionary<string, double>();
if (sTJYSList.Contains(",H,"))
{
dicYZZH = XLBJDUtils.GetBJDYZZH(sBJFLID, sXLXHID, sXLDYDJ, sXLYSID, CMISproConvert.StrToFloat(fZXJM), dTmpBJSL, sJLDW, sBJU003, sBJDID);
}
Dictionary<string, double> dicYZZK = new Dictionary<string, double>();
if (sTJYSList.Contains(",K,"))
{
dicYZZK = XLBJDUtils.GetBJDYZZK(sBJFLID, dTmpBJSL, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sXLDYDJ, sBJDID);
}
Dictionary<string, double> dicYZZL = new Dictionary<string, double>();
if (sTJYSList.Contains(",L,"))
{
dicYZZL = XLBJDUtils.GetBJDYZZL(sBJFLID, sXLBZID, dTmpBJSL, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLDYDJ, sBJDID);
}
foreach (string sYZID in dicYZZ0.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ0[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ0[sYZID]);
}
foreach (string sYZID in dicYZZ1.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ1[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ1[sYZID]);
}
foreach (string sYZID in dicYZZ2.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ2[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ2[sYZID]);
}
foreach (string sYZID in dicYZZ3.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ3[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ3[sYZID]);
}
foreach (string sYZID in dicYZZE.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZE[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZE[sYZID]);
}
foreach (string sYZID in dicYZZF.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZF[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZF[sYZID]);
}
foreach (string sYZID in dicYZZ4.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ4[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ4[sYZID]);
}
foreach (string sYZID in dicYZZ5.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ5[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ5[sYZID]);
}
foreach (string sYZID in dicYZZ6.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ6[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ6[sYZID]);
}
foreach (string sYZID in dicYZZ7.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ7[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ7[sYZID]);
}
foreach (string sYZID in dicYZZ8.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ8[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ8[sYZID]);
}
foreach (string sYZID in dicYZZ9.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZ9[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZ9[sYZID]);
}
foreach (string sYZID in dicYZZA.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZA[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZA[sYZID]);
}
foreach (string sYZID in dicYZZBZPF.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZBZPF[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZBZPF[sYZID]);
}
foreach (string sYZID in dicYZZB.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZB[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZB[sYZID]);
}
foreach (string sYZID in dicYZZC.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZC[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZC[sYZID]);
}
foreach (string sYZID in dicYZZD.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZD[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZD[sYZID]);
}
foreach (string sYZID in dicYZZG.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZG[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZG[sYZID]);
}
foreach (string sYZID in dicYZZH.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZH[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZH[sYZID]);
}
foreach (string sYZID in dicYZZK.Keys)
{
if (dicBJDYZZ.ContainsKey(sYZID))
dicBJDYZZ[sYZID] = dicYZZK[sYZID];
else
dicBJDYZZ.Add(sYZID, dicYZZK[sYZID]);
}
if (dicBJDYZZ.Keys.Count > 0)
{
sSQL.Clear();
sSQL.Add("update XLXSBJDYZZ0 set ");
bool IsFirstKey = true;
foreach (string sKey in dicBJDYZZ.Keys)
{
if (IsFirstKey)
sSQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}={1} ", sKey.Trim().Replace("BJ", ""), dicBJDYZZ[sKey]));
else
sSQL.Add(string.Format(",XLXSBJDYZZ0_YZZ{0}={1} ", sKey.Trim().Replace("BJ", ""), dicBJDYZZ[sKey]));
IsFirstKey = false;
}
sSQL.Add("where XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=:pXH ");
sSQL.ParamByName("pBJDID").Value = sBJDID;
sSQL.ParamByName("pXH").Value = iXH;
dberp.ExecSQL(sSQL);
}
}
public static void AfterDeleteBJD(TDatabase dberp, TSQL SQL, string sBJDID)
{
SQL.Clear();
SQL.Add("delete from XLXSBJDMX where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID");
SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJDYZZ0 where XLXSBJDYZZ0_BJDID = :XLXSBJDYZZ0_BJDID ");
SQL.ParamByName("XLXSBJDYZZ0_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJDMXFD where XLXSBJDMXFD_BJDID = :XLXSBJDMXFD_BJDID ");
SQL.ParamByName("XLXSBJDMXFD_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJDMXZP where XLXSBJDMXZP_BJDID = :XLXSBJDMXZP_BJDID ");
SQL.ParamByName("XLXSBJDMXZP_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJDCLCB where XLXSBJDCLCB_BJDID = :XLXSBJDCLCB_BJDID ");
SQL.ParamByName("XLXSBJDCLCB_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJDJJYZ where XLXSBJDJJYZ_BJDID = :XLXSBJDJJYZ_BJDID ");
SQL.ParamByName("XLXSBJDJJYZ_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID = :XLXSBJDCLHQ_BJDID");
SQL.ParamByName("XLXSBJDCLHQ_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJDWLHQ where XLXSBJDWLHQ_BJDID = :XLXSBJDWLHQ_BJDID");
SQL.ParamByName("XLXSBJDWLHQ_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
//删除比对操作的数据
SQL.Clear();
SQL.Add("delete from XLXSBJDBDMX where XLXSBJDBDMX_BJDID=:pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
//删除外部报价单
string sWBBJDList = string.Empty;
SQL.Clear();
SQL.Add("select XLWBBJDML_WBBJDID from XLWBBJDML where XLWBBJDML_BJDID=:pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet dsWBBJD = dberp.OpenDataSet(SQL);
for (int i = 0; i < dsWBBJD.Tables[0].Rows.Count; i++)
{
sWBBJDList += dsWBBJD.Tables[0].Rows[i][0].ToString().Trim() + ",";
}
sWBBJDList = sWBBJDList.TrimEnd(',');
if (!string.IsNullOrEmpty(sWBBJDList))
{
SQL.Clear();
SQL.Add("delete from XLWBBJDLM where " + GetWhereEqual("XLWBBJDLM_WBBJDID", sWBBJDList));
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLWBBJDNR where " + GetWhereEqual("XLWBBJDNR_WBBJDID", sWBBJDList));
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLWBBJDMX where " + GetWhereEqual("XLWBBJDMX_WBBJDID", sWBBJDList));
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLWBBJDMXYZZ where " + GetWhereEqual("XLWBBJDMXYZZ_WBBJDID", sWBBJDList));
dberp.ExecSQL(SQL);
}
SQL.Clear();
SQL.Add("delete from XLWBBJDML where XLWBBJDML_BJDID=:pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJDYZZC where XLXSBJDYZZC_BJDID=:pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJZDCZ where XLXSBJZDCZ_BJDID = :pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJKZXX where XLXSBJKZXX_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJDGYJD where XLXSBJDGYJD_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLXSBJFKCFMX where XLXSBJFKCFMX_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from BJDCLYLBL where BJDCLYLBL_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from CLYLZDFP where CLYLZDFP_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
//删除后,去除AI任务执行情况中对应的BJDID
SQL.Clear();
SQL.Add("update XLXSBJAIWDJXRW set XLXSBJAIWDJXRW_BJDID = '' where XLXSBJAIWDJXRW_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("update XLXSBJAIWD set XLXSBJAIWD_BJDID = '' where XLXSBJAIWD_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from BJDLJZSBJRCBLM where BJDLJZSBJRCBLM_BJDID=:pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLJXMX where XLJXMX_XLJXDH = :pBJDID and XLJXMX_XLJXDJ='XSBJ'");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
public static void UpdateBJDMX(TDatabase dberp, TSQL SQL, string sBJFLID, string sBJDID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sCPBJMRXSWS)
{
UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, "", 0);
}
public static void UpdateBJDMX(TDatabase dberp, TSQL SQL, string sBJFLID, string sBJDID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sCPBJMRXSWS, DateTime tWHSJCondition)
{
UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, "", 0, false, false, false, "", tWHSJCondition);
}
public static void UpdateBJDMX(TDatabase dberp, TSQL SQL, string sBJFLID, string sBJDID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sCPBJMRXSWS, string sXHList, int minBJDXH)
{
UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, sXHList, minBJDXH, false, false, false, "");
}
public static void UpdateBJDMX(TDatabase dberp, TSQL SQL, string sBJFLID, string sBJDID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sCPBJMRXSWS, string sXHList, int minBJDXH, bool bYBJ, bool bWG, bool bFWG, string sTLcpList)
{
UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, sXHList, minBJDXH, bYBJ, bWG, bFWG, sTLcpList, DateTime.MinValue);
}
/// <summary>
/// 批量更新报价单明细,不包含最低限价、最低限价价差率的更新,使用UpdateZDXJGS方法更新
/// </summary>
/// <param name="dberp"></param>
/// <param name="SQL"></param>
/// <param name="sBJFLID"></param>
/// <param name="sBJDID"></param>
/// <param name="tmpXSWS"></param>
/// <param name="sJCLLX">表价价差率公式</param>
/// <param name="sLJJCLLX">料价价差率公式</param>
/// <param name="sCPBJMRXSWS">报价默认小数位数</param>
public static void UpdateBJDMX(TDatabase dberp, TSQL SQL, string sBJFLID, string sBJDID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sCPBJMRXSWS, string sXHList, int minBJDXH, bool bYBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition)
{
UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, sXHList, minBJDXH, bYBJ, bWG, bFWG, sTLcpList, tWHSJCondition,false);
}
public static void UpdateBJDMX(TDatabase dberp, TSQL SQL, string sBJFLID, string sBJDID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sCPBJMRXSWS, string sXHList, int minBJDXH, bool bYBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition, bool bYLZD)
{
UpdateBJDMX( dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCLLX, sCPBJMRXSWS, sXHList, minBJDXH, bYBJ, bWG, bFWG, sTLcpList, tWHSJCondition, bYLZD,0);
}
public static void UpdateBJDMX(TDatabase dberp, TSQL SQL, string sBJFLID, string sBJDID, int tmpXSWS, string sJCLLX, string sLJJCLLX, string sCPBJMRXSWS, string sXHList, int minBJDXH, bool bYBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition, bool bYLZD,int VBJDID)
{
string sTZQCPBJGS = XLBJDUtils.GetTZQCPBJGS(sBJFLID);
string sBJLJJCLLX = "";
string sJSJJCLLX = "";
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
SQL.Clear();
SQL.Add("select XLXSBJFL_BJLJJCLLX,XLXSBJFL_JSJJCLLX FROM XLXSBJFL WHERE XLXSBJFL_BJFLID = :pFLID ");
SQL.ParamByName("pFLID").Value = sBJFLID;
BJFLXX bjflxx = GetBJFLXX(sBJFLID);
DataSet dsBJFL = dberp.OpenDataSet(SQL);
if (dsBJFL.Tables[0].Rows.Count > 0)
{
sBJLJJCLLX = dsBJFL.Tables[0].Rows[0]["XLXSBJFL_BJLJJCLLX"].ToString().Trim();
sJSJJCLLX = dsBJFL.Tables[0].Rows[0]["XLXSBJFL_JSJJCLLX"].ToString().Trim();
}
if (!sTZQCPBJGS.Equals(""))
{
XLBJDCalcUtils.UpdateBJDMXByGS(dberp, SQL, sTZQCPBJGS, sBJDID, sBJFLID, tmpXSWS, sJCLLX, sLJJCLLX, sBJLJJCLLX, sCPBJMRXSWS, sXHList, minBJDXH, bYBJ, bWG, bFWG, sTLcpList, tWHSJCondition, bYLZD, VBJDID);
}
else
{
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
SQL.Clear();
SQL.Add("select XLXSBJFLYZ_YZID,XLXSTZYZ_JJFS,XLXSTZYZ_TJYZID,XLXSTZYZ_TJYS,isnull(XLXSTZYZ_YZZBT,'N') as BTYZ,");
SQL.Add(" XLXSTZYZ_TYZZYZID");
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_BCYTJ,'N') <> 'Y' ");
SQL.Add(" and XLXSTZYZ_TJLX='1'");//1|调价格
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)
{
string sJDSQL = "1";
string sKDSQL = "1";
string sDDSQL = "1";
string sMDSQL = "1";
string sMPSQL = "1";
string sJJSQL = "0";
string sMXSQL = "1";
string sDXSQL = "1";
string sSXSQL = "1";
string sTJYZID = dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim();
string sJJFS = dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim();
string sBTYZJYSQL = "";//必填因子校验SQL
string sBTYZSQL = "";//必填因子SQL
for (int i = 1; i < dsBJDYZ.Tables[0].Rows.Count; i++)
{
if (!sTJYZID.Equals(dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim()))
{
//1*(1+JDYZZ_BJ02/100.0)
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("DD"))
sDDSQL = sDDSQL + "/(1+DDYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("MD"))
sMDSQL = sMDSQL + "*(1-MDYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("MP"))
sMPSQL = sMPSQL + "*(MPYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("JJ"))
{
if ((!IsHS) && (!IsHSWL))
{
sJJSQL = sJJSQL + "+(JJYZZ_" + sTJYZID + "/(1+" + dSL.ToString() + "))";
}
else
{
sJJSQL += "+JJYZZ_" + sTJYZID;
}
}
else if (sJJFS.Equals("MX"))
sMXSQL = sMXSQL + "*(MXYZZ_" + sTJYZID + ")";
else if (sJJFS.Equals("DX"))
sDXSQL = sDXSQL + "*(case when DXYZZ_" + sTJYZID + "= 0 then 0 else 1.0/ DXYZZ_" + sTJYZID + " end )";
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 = dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsBJDYZ.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("DD"))
sDDSQL = sDDSQL + "/(1+DDYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("MD"))
sMDSQL = sMDSQL + "*(1-MDYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("MP"))
sMPSQL = sMPSQL + "*(MPYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("JJ"))
{
if ((!IsHS) && (!IsHSWL))
{
sJJSQL = sJJSQL + "+(JJYZZ_" + sTJYZID + "/(1+" + dSL.ToString() + "))";
}
else
{
sJJSQL += "+JJYZZ_" + sTJYZID;
}
}
else if (sJJFS.Equals("MX"))
sMXSQL = sMXSQL + "*(MXYZZ_" + sTJYZID + ")";
else if (sJJFS.Equals("DX"))
sDXSQL = sDXSQL + "*(case when DXYZZ_" + sTJYZID + "= 0 then 0 else 1.0/ DXYZZ_" + sTJYZID + " end )";
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)";
for (int i = 0; i < dsBJDYZ.Tables[0].Rows.Count; i++)
{
if (dsBJDYZ.Tables[0].Rows[i]["BTYZ"].ToString().Trim().Equals("Y"))
{
if (sBTYZJYSQL.Equals(""))
sBTYZJYSQL = "*( case ";
string sBTYZZ_SQL = string.Format("XLXSBJDYZZ0_YZZ{0}", dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim().Replace("BJ", ""));
sBTYZJYSQL += "when " + sBTYZZ_SQL + " = 0 then 0 ";
sBTYZSQL += "," + sBTYZZ_SQL;
}
}
if (!sBTYZJYSQL.Equals(""))
sBTYZJYSQL += " else 1 end )";
//true表示先加价
bool JJFirst = JJFirst_BJDYZ(sBJFLID);
/*
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……)
*/
//区别非锁定-sqlBJJE,XLXSBJDMX_BJSDBZ
string sqlBJJE = "";
string sqlBJ = "";
string sCPBJBLXSWS = Math.Pow(10, -1 * CMISproConvert.StrToFloat(sCPBJMRXSWS)).ToString("F9");
if (SystemInfoUtils.GetSystem().Id.Trim().Equals("0574000503") || SystemInfoUtils.GetSystem().Id.Trim().Equals("0574000504"))//0574000503|宁波东方正式系统,0574000504|宁波东方测试系统
{
sCPBJBLXSWS = Math.Pow(10, -2).ToString("F9");
}
if (JJFirst)
{
sqlBJ = string.Format("RoundFix(((XLXSBJDMX_JGBBJ + isnull(JJYZZ,0)) * isnull(JDYZZ,1.0) * isnull(KDYZZ,1.0)* isnull(DDYZZ,1.0) * isnull(MDYZZ,1.0) * isnull(MPYZZ,1.0) * isnull(MXYZZ,1.0) * isnull(DXYZZ,1.0)* isnull(SXYZZ,1.0))*(1+XLXSBJDMX_TZCPBJ/100)*(case when XLXSBJDMX_JGBBJ = 0 then 0 else 1 end)/{0},0)*{0}" + sBTYZJYSQL, sCPBJBLXSWS);
}
else
{
sqlBJ = string.Format("RoundFix((XLXSBJDMX_JGBBJ * isnull(JDYZZ,1.0) * isnull(KDYZZ,1.0) *isnull(DDYZZ,1.0) * isnull(MDYZZ,1.0) * isnull(MXYZZ,1.0) * isnull(MPYZZ,1.0) * isnull(DXYZZ,1.0) * isnull(SXYZZ,1.0) + isnull(JJYZZ,0))*(1+XLXSBJDMX_TZCPBJ/100)*(case when XLXSBJDMX_JGBBJ = 0 then 0 else 1 end)/{0},0)*{0}" + sBTYZJYSQL, sCPBJBLXSWS);
}
sqlBJJE = string.Format("RoundFix(" + sqlBJ + "*XLXSBJDMX_BJSL+XLXSBJDMX_TZBJJE,2)");
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX tar ");
SQL.Add(" using ( ");
SQL.Add("select BJDID,XH," + sJDSQL + " as JDYZZ," + sKDSQL + " as KDYZZ," + sDDSQL + " as DDYZZ," + sMDSQL + " as MDYZZ," + sMPSQL + " as MPYZZ," + sMXSQL + " as MXYZZ," + sDXSQL + " as DXYZZ," + sJJSQL + " as JJYZZ," + sSXSQL + " as SXYZZ ");
SQL.Add(sBTYZSQL);
SQL.Add(" from ");
SQL.Add("(");
SQL.Add(" select XLXSBJDYZZ0_BJDID as BJDID,XLXSBJDYZZ0_XH as XH,");
SQL.Add(" (");
string sTYZZ_SQL1 = string.Format("XLXSBJDYZZ0_YZZ{0}", dsBJDYZ.Tables[0].Rows[0]["XLXSBJFLYZ_YZID"].ToString().Trim().Replace("BJ", ""));
if (!dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Equals(""))
{
string[] sTYZZYZIDList = dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Split(',');
for (int j = 0; j < sTYZZYZIDList.Length; j++)
{
if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "JD")
sTYZZ_SQL1 = sTYZZ_SQL1 + string.Format("*(1+XLXSBJDYZZ0_YZZ{0}/100.0)", sTYZZYZIDList[j].Replace("BJ", ""));
else if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "KD")
sTYZZ_SQL1 = sTYZZ_SQL1 + string.Format("/(case when (1-XLXSBJDYZZ0_YZZ{0}/100.0)=0 then 1 else (1-XLXSBJDYZZ0_YZZ{0}/100.0) end)", sTYZZYZIDList[j].Replace("BJ", ""));
else if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "JJ" && ((!IsHS) && (!IsHSWL)))
sTYZZ_SQL1 = sTYZZ_SQL1 + string.Format("+ XLXSBJDYZZ0_YZZ{0}/ (1+" + dSL.ToString() + ")", sTYZZYZIDList[j].Replace("BJ", ""));
else
sTYZZ_SQL1 = "(" + sTYZZ_SQL1 + string.Format("+XLXSBJDYZZ0_YZZ{0} )", sTYZZYZIDList[j].Replace("BJ", ""));
}
}
SQL.Add(sTYZZ_SQL1);
sTJYZID = dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim();
for (int i = 1; i < dsBJDYZ.Tables[0].Rows.Count; i++)
{
if (sTJYZID.Equals(dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim()))
{
string sTYZZ_SQL = string.Format("XLXSBJDYZZ0_YZZ{0}", dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim().Replace("BJ", ""));
if (!dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Equals(""))
{
string[] sTYZZYZIDList = dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Split(',');
for (int j = 0; j < sTYZZYZIDList.Length; j++)
{
if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "JD")
sTYZZ_SQL = sTYZZ_SQL + string.Format("*(1+XLXSBJDYZZ0_YZZ{0}/100.0)", sTYZZYZIDList[j].Replace("BJ", ""));
else if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "KD")
sTYZZ_SQL = sTYZZ_SQL + string.Format("/(case when (1-XLXSBJDYZZ0_YZZ{0}/100.0)=0 then 1 else (1-XLXSBJDYZZ0_YZZ{0}/100.0) end)", sTYZZYZIDList[j].Replace("BJ", ""));
else if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "JJ" && ((!IsHS) && (!IsHSWL)))
sTYZZ_SQL = sTYZZ_SQL + string.Format("+ XLXSBJDYZZ0_YZZ{0}/ (1+" + dSL.ToString() + ")", sTYZZYZIDList[j].Replace("BJ", ""));
else
sTYZZ_SQL = "(" + sTYZZ_SQL + string.Format("+XLXSBJDYZZ0_YZZ{0} )", sTYZZYZIDList[j].Replace("BJ", ""));
}
}
SQL.Add("+" + sTYZZ_SQL);
}
else
{
if (sJJFS.Equals("JD"))
SQL.Add(") as " + "JDYZZ_" + sTJYZID);
else if (sJJFS.Equals("KD"))
SQL.Add(") as " + "KDYZZ_" + sTJYZID);
else if (sJJFS.Equals("DD"))
SQL.Add(") as " + "DDYZZ_" + sTJYZID);
else if (sJJFS.Equals("MD"))
SQL.Add(") as " + "MDYZZ_" + sTJYZID);
else if (sJJFS.Equals("MP"))
SQL.Add(") as " + "MPYZZ_" + sTJYZID);
else if (sJJFS.Equals("JJ"))
SQL.Add(") as " + "JJYZZ_" + sTJYZID);
else if (sJJFS.Equals("MX"))
SQL.Add(") as " + "MXYZZ_" + sTJYZID);
else if (sJJFS.Equals("DX"))
SQL.Add(") as " + "DXYZZ_" + sTJYZID);
else if (sJJFS.Equals("SX"))
SQL.Add(") as " + "SXYZZ_" + sTJYZID);
sTJYZID = dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
SQL.Add(",(");
string sTYZZ_SQL = string.Format("XLXSBJDYZZ0_YZZ{0}", dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim().Replace("BJ", ""));
if (!dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Equals(""))
{
string[] sTYZZYZIDList = dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Split(',');
for (int j = 0; j < sTYZZYZIDList.Length; j++)
{
if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "JD")
sTYZZ_SQL = sTYZZ_SQL + string.Format("*(1+XLXSBJDYZZ0_YZZ{0}/100.0)", sTYZZYZIDList[j].Replace("BJ", ""));
else if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "KD")
sTYZZ_SQL = sTYZZ_SQL + string.Format("/(case when (1-XLXSBJDYZZ0_YZZ{0}/100.0)=0 then 1 else (1-XLXSBJDYZZ0_YZZ{0}/100.0) end)", sTYZZYZIDList[j].Replace("BJ", ""));
else if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "JJ" && ((!IsHS) && (!IsHSWL)))
sTYZZ_SQL = sTYZZ_SQL + string.Format("+ XLXSBJDYZZ0_YZZ{0}/ (1+" + dSL.ToString() + ")", sTYZZYZIDList[j].Replace("BJ", ""));
else
sTYZZ_SQL = "(" + sTYZZ_SQL + string.Format("+XLXSBJDYZZ0_YZZ{0} )", sTYZZYZIDList[j].Replace("BJ", ""));
}
}
SQL.Add(sTYZZ_SQL);
}
}
if (sJJFS.Equals("JD"))
SQL.Add(") as " + "JDYZZ_" + sTJYZID);
else if (sJJFS.Equals("KD"))
SQL.Add(") as " + "KDYZZ_" + sTJYZID);
else if (sJJFS.Equals("DD"))
SQL.Add(") as " + "DDYZZ_" + sTJYZID);
else if (sJJFS.Equals("MD"))
SQL.Add(") as " + "MDYZZ_" + sTJYZID);
else if (sJJFS.Equals("MP"))
SQL.Add(") as " + "MPYZZ_" + sTJYZID);
else if (sJJFS.Equals("JJ"))
SQL.Add(") as " + "JJYZZ_" + sTJYZID);
else if (sJJFS.Equals("MX"))
SQL.Add(") as " + "MXYZZ_" + sTJYZID);
else if (sJJFS.Equals("DX"))
SQL.Add(") as " + "DXYZZ_" + sTJYZID);
else if (sJJFS.Equals("SX"))
SQL.Add(") as " + "SXYZZ_" + sTJYZID);
SQL.Add(sBTYZSQL);
SQL.Add(" from XLXSBJDYZZ0");
SQL.Add(" where XLXSBJDYZZ0_BJDID=:pBJDID ");
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=XLXSBJDYZZ0_XH ) ");
}
else
{
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_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 = XLXSBJDYZZ0_BJDID and V_BJDXH_BJDXH = XLXSBJDYZZ0_XH) ");
SQL.ParamByName("pID").Value = VBJDID;
}
else
{
if (!sXHList.Trim().Equals(""))
{
SQL.Add(" and " + GetWhereEqual("XLXSBJDYZZ0_XH", sXHList));
}
}
}
SQL.Add(" ) a");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=XH ");
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 " + 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(" ) ");
SQL.Add(" when matched then update set ");
if (JJFirst)
{
SQL.Add("XLXSBJDMX_TZQCPBJ=RoundFix((XLXSBJDMX_JGBBJ + isnull(JJYZZ,0))* isnull(JDYZZ,1.0) * isnull(KDYZZ,1.0) * isnull(DDYZZ,1.0) * isnull(MDYZZ,1.0) * isnull(MPYZZ,1.0) * isnull(MXYZZ,1.0) * isnull(DXYZZ,1.0) * isnull(SXYZZ,1.0)*(case when XLXSBJDMX_JGBBJ = 0 then 0 else 1 end)," + (CMISproConvert.StrToInt(sCPBJMRXSWS) > tmpXSWS ? CMISproConvert.StrToInt(sCPBJMRXSWS) : tmpXSWS) + ")" + sBTYZJYSQL + ",");//保留精度高的
SQL.Add(string.Format("XLXSBJDMX_TZQBJJE=RoundFix(RoundFix(((XLXSBJDMX_JGBBJ + isnull(JJYZZ,0))* isnull(JDYZZ,1.0) * isnull(KDYZZ,1.0) * isnull(DDYZZ,1.0) * isnull(MDYZZ,1.0)* isnull(MXYZZ,1.0) * isnull(DXYZZ,1.0) * isnull(SXYZZ,1.0) )*(1+XLXSBJDMX_TZCPBJ/100)*(case when XLXSBJDMX_JGBBJ = 0 then 0 else 1 end)/{0},0)*{0}*XLXSBJDMX_BJSL,2)" + sBTYZJYSQL + ",", sCPBJBLXSWS));
}
else
{
SQL.Add("XLXSBJDMX_TZQCPBJ=RoundFix(XLXSBJDMX_JGBBJ * isnull(JDYZZ,1.0) * isnull(KDYZZ,1.0) * isnull(DDYZZ,1.0) * isnull(MDYZZ,1.0) * isnull(MPYZZ,1.0) * isnull(MXYZZ,1.0) * isnull(DXYZZ,1.0) * isnull(SXYZZ,1.0) + isnull(JJYZZ,0)*(case when XLXSBJDMX_JGBBJ = 0 then 0 else 1 end)," + (CMISproConvert.StrToInt(sCPBJMRXSWS) > tmpXSWS ? CMISproConvert.StrToInt(sCPBJMRXSWS) : tmpXSWS) + ")" + sBTYZJYSQL + ",");//保留精度高的
SQL.Add(string.Format("XLXSBJDMX_TZQBJJE=RoundFix(RoundFix((XLXSBJDMX_JGBBJ * isnull(JDYZZ,1.0) * isnull(KDYZZ,1.0) * isnull(DDYZZ,1.0) * isnull(MDYZZ,1.0)* isnull(MXYZZ,1.0) * isnull(DXYZZ,1.0) * isnull(SXYZZ,1.0) + isnull(JJYZZ,0))*(1+XLXSBJDMX_TZCPBJ/100)*(case when XLXSBJDMX_JGBBJ = 0 then 0 else 1 end)/{0},0)*{0}*XLXSBJDMX_BJSL,2)" + sBTYZJYSQL + ",", sCPBJBLXSWS));
}
SQL.Add("XLXSBJDMX_CPBJ=" + sqlBJ + ",");
SQL.Add(" XLXSBJDMX_BJXJKD = 0, XLXSBJDMX_BJXJJJ = 0, ");
SQL.Add("XLXSBJDMX_BJJE=" + sqlBJJE + ",");
if (bjflxx.XLXSBJFL_XSLSBJ == "Y")
SQL.Text = SQL.Text.Replace("XLXSBJDMX_JGBBJ", " case when XLXSBJDMX_LSJGBBJ=0 then XLXSBJDMX_JGBBJ else 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 tar ");
SQL.Add(" using ( ");
SQL.Add("select BJDID,XH," + sJDSQL + " as JDYZZ," + sKDSQL + " as KDYZZ," + sDDSQL + " as DDYZZ," + sMDSQL + " as MDYZZ," + sMPSQL + " as MPYZZ," + sMXSQL + " as MXYZZ," + sDXSQL + " as DXYZZ," + sJJSQL + " as JJYZZ," + sSXSQL + " as SXYZZ ");
SQL.Add(sBTYZSQL);
SQL.Add(" from ");
SQL.Add("(");
SQL.Add(" select XLXSBJDYZZ0_BJDID as BJDID,XLXSBJDYZZ0_XH as XH,");
SQL.Add(" (");
string sTYZZ_SQL2 = string.Format("XLXSBJDYZZ0_YZZ{0}", dsBJDYZ.Tables[0].Rows[0]["XLXSBJFLYZ_YZID"].ToString().Trim().Replace("BJ", ""));
if (!dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Equals(""))
{
string[] sTYZZYZIDList = dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Split(',');
for (int j = 0; j < sTYZZYZIDList.Length; j++)
{
if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "JD")
sTYZZ_SQL2 = sTYZZ_SQL2 + string.Format("*(1+XLXSBJDYZZ0_YZZ{0}/100.0)", sTYZZYZIDList[j].Replace("BJ", ""));
else if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "KD")
sTYZZ_SQL2 = sTYZZ_SQL2 + string.Format("/(case when (1-XLXSBJDYZZ0_YZZ{0}/100.0)=0 then 1 else (1-XLXSBJDYZZ0_YZZ{0}/100.0) end)", sTYZZYZIDList[j].Replace("BJ", ""));
else
sTYZZ_SQL2 = "(" + sTYZZ_SQL2 + string.Format("+XLXSBJDYZZ0_YZZ{0} )", sTYZZYZIDList[j].Replace("BJ", ""));
}
}
SQL.Add(sTYZZ_SQL2);
sTJYZID = dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim();
for (int i = 1; i < dsBJDYZ.Tables[0].Rows.Count; i++)
{
if (sTJYZID.Equals(dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim()))
{
string sTYZZ_SQL = string.Format("XLXSBJDYZZ0_YZZ{0}", dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim().Replace("BJ", ""));
if (!dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Equals(""))
{
string[] sTYZZYZIDList = dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Split(',');
for (int j = 0; j < sTYZZYZIDList.Length; j++)
{
if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "JD")
sTYZZ_SQL = sTYZZ_SQL + string.Format("*(1+XLXSBJDYZZ0_YZZ{0}/100.0)", sTYZZYZIDList[j].Replace("BJ", ""));
else if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "KD")
sTYZZ_SQL = sTYZZ_SQL + string.Format("/(case when (1-XLXSBJDYZZ0_YZZ{0}/100.0)=0 then 1 else (1-XLXSBJDYZZ0_YZZ{0}/100.0) end)", sTYZZYZIDList[j].Replace("BJ", ""));
else
sTYZZ_SQL = "(" + sTYZZ_SQL + string.Format("+XLXSBJDYZZ0_YZZ{0} )", sTYZZYZIDList[j].Replace("BJ", ""));
}
}
SQL.Add("+" + sTYZZ_SQL);
}
else
{
if (sJJFS.Equals("JD"))
SQL.Add(") as " + "JDYZZ_" + sTJYZID);
else if (sJJFS.Equals("KD"))
SQL.Add(") as " + "KDYZZ_" + sTJYZID);
else if (sJJFS.Equals("DD"))
SQL.Add(") as " + "DDYZZ_" + sTJYZID);
else if (sJJFS.Equals("MD"))
SQL.Add(") as " + "MDYZZ_" + sTJYZID);
else if (sJJFS.Equals("MP"))
SQL.Add(") as " + "MPYZZ_" + sTJYZID);
else if (sJJFS.Equals("JJ"))
SQL.Add(") as " + "JJYZZ_" + sTJYZID);
else if (sJJFS.Equals("MX"))
SQL.Add(") as " + "MXYZZ_" + sTJYZID);
else if (sJJFS.Equals("DX"))
SQL.Add(") as " + "DXYZZ_" + sTJYZID);
else if (sJJFS.Equals("SX"))
SQL.Add(") as " + "SXYZZ_" + sTJYZID);
sTJYZID = dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
SQL.Add(",(");
string sTYZZ_SQL = string.Format("XLXSBJDYZZ0_YZZ{0}", dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim().Replace("BJ", ""));
if (!dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Equals(""))
{
string[] sTYZZYZIDList = dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TYZZYZID"].ToString().Trim().Split(',');
for (int j = 0; j < sTYZZYZIDList.Length; j++)
{
if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "JD")
sTYZZ_SQL = sTYZZ_SQL + string.Format("*(1+XLXSBJDYZZ0_YZZ{0}/100.0)", sTYZZYZIDList[j].Replace("BJ", ""));
else if (XLBJDUtils.GetYZXXByYZID(sTYZZYZIDList[j]).XLXSTZYZ_JJFS == "KD")
sTYZZ_SQL = sTYZZ_SQL + string.Format("/(case when (1-XLXSBJDYZZ0_YZZ{0}/100.0)=0 then 1 else (1-XLXSBJDYZZ0_YZZ{0}/100.0) end)", sTYZZYZIDList[j].Replace("BJ", ""));
else
sTYZZ_SQL = "(" + sTYZZ_SQL + string.Format("+XLXSBJDYZZ0_YZZ{0} )", sTYZZYZIDList[j].Replace("BJ", ""));
}
}
SQL.Add(sTYZZ_SQL);
}
}
if (sJJFS.Equals("JD"))
SQL.Add(") as " + "JDYZZ_" + sTJYZID);
else if (sJJFS.Equals("KD"))
SQL.Add(") as " + "KDYZZ_" + sTJYZID);
else if (sJJFS.Equals("DD"))
SQL.Add(") as " + "DDYZZ_" + sTJYZID);
else if (sJJFS.Equals("MD"))
SQL.Add(") as " + "MDYZZ_" + sTJYZID);
else if (sJJFS.Equals("MP"))
SQL.Add(") as " + "MPYZZ_" + sTJYZID);
else if (sJJFS.Equals("JJ"))
SQL.Add(") as " + "JJYZZ_" + sTJYZID);
else if (sJJFS.Equals("MX"))
SQL.Add(") as " + "MXYZZ_" + sTJYZID);
else if (sJJFS.Equals("DX"))
SQL.Add(") as " + "DXYZZ_" + sTJYZID);
else if (sJJFS.Equals("SX"))
SQL.Add(") as " + "SXYZZ_" + sTJYZID);
SQL.Add(sBTYZSQL);
SQL.Add(" from XLXSBJDYZZ0");
SQL.Add(" where XLXSBJDYZZ0_BJDID=:pBJDID ");
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=XLXSBJDYZZ0_XH ) ");
}
else
{
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_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 = XLXSBJDYZZ0_BJDID and V_BJDXH_BJDXH = XLXSBJDYZZ0_XH) ");
SQL.ParamByName("pID").Value = VBJDID;
}
else
{
if (!sXHList.Trim().Equals(""))
{
SQL.Add(" and " + GetWhereEqual("XLXSBJDYZZ0_XH", sXHList));
}
}
}
SQL.Add(" ) a");
SQL.Add(") sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=XH ");
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 " + 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(" ) ");
SQL.Add(" when matched then update set ");
if (JJFirst)
{
SQL.Add("XLXSBJDMX_TZQCPBJ=RoundFix((XLXSBJDMX_JGBBJ + isnull(JJYZZ,0)) * isnull(JDYZZ,1.0) * isnull(KDYZZ,1.0)* isnull(DDYZZ,1.0) * isnull(MDYZZ,1.0) * isnull(MPYZZ,1.0) * isnull(MXYZZ,1.0) * isnull(DXYZZ,1.0) * isnull(SXYZZ,1.0)*(case when XLXSBJDMX_JGBBJ = 0 then 0 else 1 end) ," + (CMISproConvert.StrToInt(sCPBJMRXSWS) > tmpXSWS ? CMISproConvert.StrToInt(sCPBJMRXSWS) : tmpXSWS) + ")" + sBTYZJYSQL + ",");//保留精度高的
}
else
{
SQL.Add("XLXSBJDMX_TZQCPBJ=RoundFix(XLXSBJDMX_JGBBJ * isnull(JDYZZ,1.0) * isnull(KDYZZ,1.0) * isnull(DDYZZ,1.0) * isnull(MDYZZ,1.0) * isnull(MPYZZ,1.0) * isnull(MXYZZ,1.0) * isnull(DXYZZ,1.0) * isnull(SXYZZ,1.0)+ isnull(JJYZZ,0)*(case when XLXSBJDMX_JGBBJ = 0 then 0 else 1 end)," + (CMISproConvert.StrToInt(sCPBJMRXSWS) > tmpXSWS ? CMISproConvert.StrToInt(sCPBJMRXSWS) : tmpXSWS) + ")" + sBTYZJYSQL + ",");//保留精度高的
}
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("XLXSBJDMX_JGBBJ", " case when XLXSBJDMX_LSJGBBJ=0 then XLXSBJDMX_JGBBJ else 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 " + 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);
}
else
{
//更新非报价锁定记录
string sCPBJBLXSWS = Math.Pow(10, -1 * CMISproConvert.StrToFloat(sCPBJMRXSWS)).ToString("F9");
if (SystemInfoUtils.GetSystem().Id.Trim().Equals("0574000503") || SystemInfoUtils.GetSystem().Id.Trim().Equals("0574000504"))//0574000503|宁波东方正式系统,0574000504|宁波东方测试系统
{
sCPBJBLXSWS = Math.Pow(10, -2).ToString("F9");
}
string sqlBJJE = string.Format("RoundFix(RoundFix(XLXSBJDMX_JGBBJ*(1+XLXSBJDMX_TZCPBJ/100)/{0},0)*{0}*XLXSBJDMX_BJSL+XLXSBJDMX_TZBJJE,2)", sCPBJBLXSWS);
SQL.Clear();
SQL.Add("update XLXSBJDMX set ");
SQL.Add("XLXSBJDMX_TZQCPBJ=RoundFix(XLXSBJDMX_JGBBJ," + (CMISproConvert.StrToInt(sCPBJMRXSWS) > tmpXSWS ? CMISproConvert.StrToInt(sCPBJMRXSWS) : tmpXSWS) + "),");//保留精度高的
SQL.Add(string.Format("XLXSBJDMX_CPBJ=RoundFix(XLXSBJDMX_JGBBJ*(1+XLXSBJDMX_TZCPBJ/100)/{0},0)*{0},", sCPBJBLXSWS));
SQL.Add(string.Format("XLXSBJDMX_TZQBJJE=RoundFix(RoundFix(XLXSBJDMX_JGBBJ*(1+XLXSBJDMX_TZCPBJ/100)/{0},0)*{0}*XLXSBJDMX_BJSL,2),", sCPBJBLXSWS));
SQL.Add(" XLXSBJDMX_BJXJKD = 0, XLXSBJDMX_BJXJJJ = 0, ");
SQL.Add("XLXSBJDMX_BJJE=" + sqlBJJE + ",");
if (bjflxx.XLXSBJFL_XSLSBJ == "Y")
SQL.Text = SQL.Text.Replace("XLXSBJDMX_JGBBJ", " case when XLXSBJDMX_LSJGBBJ=0 then XLXSBJDMX_JGBBJ else 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.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 " + 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);
//更新报价锁定记录
sqlBJJE = "RoundFix(XLXSBJDMX_CPBJ*XLXSBJDMX_BJSL,2)+XLXSBJDMX_TZBJJE";
SQL.Clear();
SQL.Add("update XLXSBJDMX set ");
SQL.Add("XLXSBJDMX_TZQCPBJ=RoundFix(XLXSBJDMX_JGBBJ," + (CMISproConvert.StrToInt(sCPBJMRXSWS) > tmpXSWS ? CMISproConvert.StrToInt(sCPBJMRXSWS) : tmpXSWS) + "),");//保留精度高的
//SQL.Add("XLXSBJDMX_CPBJ=RoundFix(XLXSBJDMX_JGBBJ*(1+XLXSBJDMX_TZCPBJ/100)," + 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("XLXSBJDMX_JGBBJ", " case when XLXSBJDMX_LSJGBBJ=0 then XLXSBJDMX_JGBBJ else 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.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 " + 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);
//处理调整报价%
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 " + 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);
}
}
}
public static Dictionary<string, double> GetCLCB_BJHQ(string sBJFLID, string sJGBID, string sBJRQ, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sJGBJLDW, string sBJU003)
{
double dCLCB1 = 0.0;
double dWSCLCB1 = 0.0;
double dCLCB2 = 0.0;
double dWSCLCB2 = 0.0;
bool JgIsZero = false;//是否存在有材料用量、无材料价格的情况
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sSQL = new TSQL(dberp);
sSQL.Clear();
sSQL.Add("select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.Add(" and XLXSCLQD_WPID='ZZZZ'");
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet dsQD = dberp.OpenDataSet(sSQL);
if (dsQD.Tables[0].Rows.Count > 0)
{
string sJGCZBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim();
string sJGCZBBBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim();
sSQL.Clear();
sSQL.Add("select XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,XLXSBJCL_BJHQ,XLJGCZBML_CZBLX from XLJGCZBLM");
sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID");
sSQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLJGCZBLM_JGCZBID");
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID");
sSQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '");
sSQL.Add(" order by XLJGCZBLM_CLQDL");
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet dsJGCZB = dberp.OpenDataSet(sSQL);
Dictionary<string, string> dicCLHQ = new Dictionary<string, string>();
Dictionary<string, string> dicWLHQ = new Dictionary<string, string>();
for (int i = 0; i < dsJGCZB.Tables[0].Rows.Count; i++)
{
//B类尺重表只支持材料行情报价
if (dsJGCZB.Tables[0].Rows[i]["XLJGCZBML_CZBLX"].ToString().Trim().Equals("B"))
{
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else//Z类A类C类
{
if (dsJGCZB.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim().Equals("2"))
{
//2|物料行情
dicWLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else
{
//1|材料行情
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
}
}
sSQL.Clear();
sSQL.Add("select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,");
foreach (string sCLQDL in dicCLHQ.Keys)
{
sSQL.Add(string.Format("XLXSCLQD_SL{0}*CLJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add("0 as WSCLCB, ");
foreach (string sCLQDL in dicCLHQ.Keys)
{
sSQL.Add(string.Format("XLXSCLQD_SL{0}*HSJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add("0 as CLCB, ");
if (dicCLHQ.Keys.Count > 0)
{
//是否存在有材料用量、无材料价格的情况
sSQL.Add("case ");
foreach (string sCLQDL in dicCLHQ.Keys)
{
sSQL.Add(string.Format(" when (XLXSCLQD_SL{0}>0 and HSJG{0}=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add(" else 'N' end as JgIsZero ");
}
else
{
sSQL.Add(" 'N' as JgIsZero ");
}
sSQL.Add("from XLXSCLQD ");
sSQL.Add(" left join");
sSQL.Add(" (");
sSQL.Add(" select JGCZBID,JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
sSQL.Add(string.Format(" sum(CLJG{0}) as CLJG{0},sum(HSJG{0}) as HSJG{0},", i.ToString().PadLeft(2, '0')));
}
sSQL.Add(" sum(CLJG80) as CLJG80,sum(HSJG80) as HSJG80");
sSQL.Add(" from");
sSQL.Add(" (");
sSQL.Add(" select XLJGCZBLM_JGCZBID as JGCZBID,XLJGCZBLM_JGCZBBBID as JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(CLJG,0.0) else 0.0 end as CLJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(HSJG,0.0) else 0.0 end as HSJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
}
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(CLJG,0.0) else 0.0 end as CLJG80,");
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(HSJG,0.0) else 0.0 end as HSJG80 ");
sSQL.Add(" from XLJGCZBLM");
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select XLXSBJCL_BJCLID as BJCLID,");
sSQL.Add(" case when isnull(XLXSBJFLBJRHQCL_BJCLID,' ')<>' ' then bjrclhq.CLJG else jgbclhq.CLJG end as CLJG, ");
sSQL.Add(" case when isnull(XLXSBJFLBJRHQCL_BJCLID,' ')<>' ' then bjrclhq.HSJG else jgbclhq.HSJG end as HSJG ");
sSQL.Add(" from XLXSBJCL");
sSQL.Add(" left join XLXSBJFLBJRHQCL on XLXSBJFLBJRHQCL_BJFLID=:pBJFLID and XLXSBJFLBJRHQCL_BJCLID=XLXSBJCL_BJCLID");
//bjrclhq 报价材料之报价日行情
sSQL.Add(" left join (");
sSQL.Add(" select BJCLID,XLXSCLHQ_WSJG as CLJG,XLXSCLHQ_HSJG as HSJG");
sSQL.Add(" from XLXSCLHQ,");
sSQL.Add(" (");
sSQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS)as maxYXQS");
sSQL.Add(" from XLXSCLHQ");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)");
sSQL.Add(" group by XLXSCLHQ_BJCLID");
sSQL.Add(" ) a");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' ");
sSQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
sSQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
sSQL.Add(" )bjrclhq on bjrclhq.BJCLID=XLXSBJCL_BJCLID");
//jgbclhq 报价材料之价格表行情
sSQL.Add(" left join (");
sSQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_WSJG as CLJG,XLXSCLHQ_HSJG as HSJG");
sSQL.Add(" from XLXSCLHQ");
sSQL.Add(" where XLXSCLHQ_JGBID<>'ZZZZZZZZ' and XLXSCLHQ_JGBID=:pJGBID");
sSQL.Add(" )jgbclhq on jgbclhq.BJCLID=XLXSBJCL_BJCLID");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID");
sSQL.Add(" ) b");
sSQL.Add(" group by JGCZBID,JGCZBBBID");
sSQL.Add(" ) c on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID= XLXSCLQD_JGCZBBBID ");
sSQL.Add("where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.ParamByName("pJGBID").Value = sJGBID;
sSQL.ParamByName("pBJRQ").Value = sBJRQ;
sSQL.ParamByName("pBJFLID").Value = sBJFLID;
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet ds1 = dberp.OpenDataSet(sSQL);
if (ds1.Tables[0].Rows.Count > 0)
{
dCLCB1 = CMISproConvert.StrToFloat(ds1.Tables[0].Rows[0]["CLCB"].ToString());
dWSCLCB1 = CMISproConvert.StrToFloat(ds1.Tables[0].Rows[0]["WSCLCB"].ToString());
if (ds1.Tables[0].Rows[0]["JgIsZero"].ToString().Trim().Equals("Y"))
JgIsZero = true;
}
if (dicWLHQ.Keys.Count > 0)
{
string sSQL_1 = "select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,";
string sSQL_2 = string.Empty;
string sSQL_3 = " 0 as WSCLCB,";
string sSQL_4 = string.Empty;
string sSQL_5 = " 0 as CLCB, case ";
string sSQL_6 = string.Empty;
string sSQL_7 = " else 'N' end as JgIsZero from XLXSCLQD "
+ " left join ( "
+ " select XLXSCLQDWL_JGCZBID as JGCZBID,XLXSCLQDWL_JGCZBBBID as JGCZBBBID,XLXSCLQDWL_DRHH as DRHH, XLXSCLQDWL_JGCZBXH as JGCZBXH, ";
string sSQL_8 = string.Empty;
string sSQL_9 = " ' ' as MJBZ from XLXSCLQDWL ";
string sSQL_10 = string.Empty;
string sSQL_11 = " ) d on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID= XLXSCLQD_JGCZBBBID and JGCZBXH= XLXSCLQD_JGCZBXH and DRHH=XLXSCLQD_DRHH "
+ " where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID";
int count = 0;//拼接的栏目数量
foreach (string sCLQDL in dicWLHQ.Keys)
{
sSQL_2 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_4 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_6 += string.Format(" when (XLXSCLQD_SL{0}>0 and isnull(HSJG{0},0)=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_8 += string.Format(" isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""));
//关联XLXSWLHQ,获取物料行情
sSQL_10 += " left join";
sSQL_10 += " (";
sSQL_10 += " select XLXSWLHQ_WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG";
sSQL_10 += " from XLXSWLHQ,";
sSQL_10 += " (";
sSQL_10 += " select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS";
sSQL_10 += " from XLXSWLHQ";
sSQL_10 += " where XLXSWLHQ_JGBID=' '";
sSQL_10 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)";
sSQL_10 += " group by XLXSWLHQ_WLID";
sSQL_10 += string.Format(") a{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_10 += " where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS";
sSQL_10 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
count++;
if (count % 25 == 0 || count == dicWLHQ.Count)
{
sSQL.Clear();
sSQL.Add(sSQL_1);
sSQL.Add(sSQL_2);
sSQL.Add(sSQL_3);
sSQL.Add(sSQL_4);
sSQL.Add(sSQL_5);
sSQL.Add(sSQL_6);
sSQL.Add(sSQL_7);
sSQL.Add(sSQL_8);
sSQL.Add(sSQL_9);
sSQL.Add(sSQL_10);
sSQL.Add(sSQL_11);
sSQL.ParamByName("pRQ").Value = sBJRQ;
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet ds2 = dberp.OpenDataSet(sSQL);
if (ds2.Tables[0].Rows.Count > 0)
{
dCLCB2 += CMISproConvert.StrToFloat(ds2.Tables[0].Rows[0]["CLCB"].ToString());
dWSCLCB2 += CMISproConvert.StrToFloat(ds2.Tables[0].Rows[0]["WSCLCB"].ToString());
if (ds2.Tables[0].Rows[0]["JgIsZero"].ToString().Trim().Equals("Y"))
JgIsZero = true;
}
sSQL_2 = string.Empty;
sSQL_4 = string.Empty;
sSQL_6 = string.Empty;
sSQL_8 = string.Empty;
sSQL_10 = string.Empty;
}
}
}
}
Dictionary<string, double> aryCLCB = new Dictionary<string, double>();
double dBJU003_JGB_JLDWHSBL = GetJLDWHSBL_JG(sBJU003, sJGBJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
dCLCB1 = dCLCB1 * dBJU003_JGB_JLDWHSBL;
dCLCB2 = dCLCB2 * dBJU003_JGB_JLDWHSBL;
dWSCLCB1 = dWSCLCB1 * dBJU003_JGB_JLDWHSBL;
dWSCLCB2 = dWSCLCB2 * dBJU003_JGB_JLDWHSBL;
aryCLCB.Add("CLCB", dCLCB1 + dCLCB2);
aryCLCB.Add("WSCLCB", dWSCLCB1 + dWSCLCB2);
if (JgIsZero)
aryCLCB.Add("JgIsZero", 1);//1代表真
else
aryCLCB.Add("JgIsZero", 0);//0代表假
return aryCLCB;
}
public static double GetCPJJbyCLCB(double dCLCB, string sJGBID, string sJGCIDS, string sXLXHID, string sXLGGID, string sST, string sDYDJ)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
//如果是组合产品目录价格表,需要先确定当前报价产品属于组合产品目录价格表的哪一张JGC价格表,按该JGC价格表的调价方式对dCLCB进行调价,得到表价
if (!sJGCIDS.Trim().Equals(""))
{
//这里sJGBID变量被偷换成了JGC价格表
sJGBID = GetJGCID(sJGCIDS, sXLXHID, sXLGGID, sST, sDYDJ);
}
double dCPJJ = 0.0;
sql.Clear();
sql.Add("select XLXSJGBYZ_YZID,XLXSTZYZ_JJFS,XLXSTZYZ_TJYZID");
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)
{
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("select JGBID,XH," + sJDSQL + " as JDYZZ," + sKDSQL + " as KDYZZ," + sJJSQL + " as JJYZZ," + sSXSQL + " as SXYZZ");
sql.Add(" from ");
sql.Add("(");
sql.Add(" select XLXSJGBYZZ0_JGBID as JGBID,XLXSJGBYZZ0_XH as XH,");
sql.Add(" (");
sql.Add(string.Format("XLXSJGBYZZ0_YZZ{0}", dsJGBYZ.Tables[0].Rows[0]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", "")));
sTJYZID = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim();
for (int i = 1; i < dsJGBYZ.Tables[0].Rows.Count; i++)
{
if (sTJYZID.Equals(dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim()))
{
sql.Add(string.Format("+XLXSJGBYZZ0_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", "")));
}
else
{
if (sJJFS.Equals("JD"))
sql.Add(") as " + "JDYZZ_" + sTJYZID);
else if (sJJFS.Equals("KD"))
sql.Add(") as " + "KDYZZ_" + sTJYZID);
else if (sJJFS.Equals("JJ"))
sql.Add(") as " + "JJYZZ_" + sTJYZID);
else if (sJJFS.Equals("SX"))
sql.Add(") as " + "SXYZZ_" + sTJYZID);
sTJYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
sql.Add(",(");
sql.Add(string.Format("XLXSJGBYZZ0_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", "")));
}
}
if (sJJFS.Equals("JD"))
sql.Add(") as " + "JDYZZ_" + sTJYZID);
else if (sJJFS.Equals("KD"))
sql.Add(") as " + "KDYZZ_" + sTJYZID);
else if (sJJFS.Equals("JJ"))
sql.Add(") as " + "JJYZZ_" + sTJYZID);
else if (sJJFS.Equals("SX"))
sql.Add(") as " + "SXYZZ_" + sTJYZID);
sql.Add(" from XLXSJGBYZZ0");
sql.Add(" where XLXSJGBYZZ0_JGBID=:pJGBID ");
sql.Add(" and XLXSJGBYZZ0_XH=(select XLXSJGBMX_XH from XLXSJGBMX where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XLXHID=:pXLXHID and XLXSJGBMX_XLGGID=:pXLGGID ");
sql.Add(" and XLXSJGBMX_XLBZID=:pXLBZID and XLXSJGBMX_DYDJID=:pDYDJID)");
sql.Add(") a");
sql.ParamByName("pJGBID").Value = sJGBID;
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sST;
sql.ParamByName("pDYDJID").Value = sDYDJ;
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
double dJDYZZ = 1.0;
double dKDYZZ = 1.0;
double dJJYZZ = 0.0;
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
if (ds.Tables[0].Columns[j].ColumnName.StartsWith("JDYZZ_"))
dJDYZZ = dJDYZZ * (1 + CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][j].ToString()) / 100.0);
else if (ds.Tables[0].Columns[j].ColumnName.StartsWith("KDYZZ_"))
dKDYZZ = dKDYZZ / (1 - CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][j].ToString()) / 100.0);
else if (ds.Tables[0].Columns[j].ColumnName.StartsWith("JJYZZ_"))
dJJYZZ = dJJYZZ + CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][j].ToString());
}
if (JJFirst_JGBYZ(sJGBID))
{
dCPJJ = (dCLCB + CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["JJYZZ"].ToString())) * CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["JDYZZ"].ToString())
* CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["KDYZZ"].ToString()) * CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["SXYZZ"].ToString());
}
else
{
dCPJJ = dCLCB * CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["JDYZZ"].ToString()) * CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["KDYZZ"].ToString())
* CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["SXYZZ"].ToString()) + CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["JJYZZ"].ToString());
}
}
else
{
dCPJJ = dCLCB;
}
}
else
{
dCPJJ = dCLCB;
}
return NumberUtils.RoundX(dCPJJ, 8);//测试存在0.2816*1.25=0.35200000000000004的情况,故此处对精度做一下控制。
}
//按报价日行情重新计算基价、表价
public static void GetFromJGB_BJRHQ(string sXLXHID, string sXLGGID, string sST, string sDYDJ, string sJGBID, string sJGCIDS, string sBJRQ, bool bHSBZ,
string sBJU002, string sBJFLID, string sJGBJLDW, string sBJU003, ref string sCPJJ, ref string sJJ, ref string sCLCB, ref bool JgIsZero)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
double dCLCB = 0.0;
double dJJ = 0.0;
double dCPJJ = 0.0;
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
if (iXSWS < 0)
iXSWS = 0;
else if (iXSWS > 8)
iXSWS = 8;
sql.Clear();
sql.Add("select XLXSJGB_TJYS,XLXSJGB_JGBIDS from XLXSJGB where XLXSJGB_MXBH='JGB' and XLXSJGB_JGBID=:pJGBID ");
sql.ParamByName("pJGBID").Value = sJGBID;
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
if (ds.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim().Equals("0") || ds.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim().Equals("1"))
{
if (bHSBZ)
{
Dictionary<string, double> aryCLCB = GetCLCB_BJHQ(sBJFLID, sJGBID, sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ, sJGBJLDW, sBJU003);
dJJ = aryCLCB["CLCB"];
dCLCB = aryCLCB["CLCB"];//成本价、出厂价价格表的基价即材料成本
JgIsZero = aryCLCB["JgIsZero"] == 1 ? true : false;
}
else
{
Dictionary<string, double> aryCLCB = GetCLCB_BJHQ(sBJFLID, sJGBID, sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ, sJGBJLDW, sBJU003);
dJJ = aryCLCB["WSCLCB"];
dCLCB = aryCLCB["CLCB"];
JgIsZero = aryCLCB["JgIsZero"] == 1 ? true : false;
}
dCLCB = NumberUtils.RoundX(dCLCB, iXSWS);
dJJ = NumberUtils.RoundX(dJJ, iXSWS);
dCPJJ = GetCPJJbyCLCB(dJJ, sJGBID, sJGCIDS, sXLXHID, sXLGGID, sST, sDYDJ);
}
else if (ds.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim().Equals("2"))//暂不支持组合产品目录价格表
{
//出厂价价格表
string sJGBIDS = ds.Tables[0].Rows[0]["XLXSJGB_JGBIDS"].ToString().Trim();
sql.Clear();
sql.Add("select XLXSJGBMX_JGBID ");
sql.Add("from XLXSJGBMX ");
sql.Add("where " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBIDS));
sql.Add(" and XLXSJGBMX_XLXHID=:pXLXHID and XLXSJGBMX_XLGGID=:pXLGGID and XLXSJGBMX_XLBZID=:pXLBZID and isnull(XLXSJGBMX_DYDJID,' ')=:pDYDJID");
sql.Add(" order by XLXSJGBMX_JGBID");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sST;
sql.ParamByName("pDYDJID").Value = sDYDJ.Trim().Equals("") ? " " : sDYDJ.Trim();
DataSet dsJGBMX = dberp.OpenDataSet(sql);
if (dsJGBMX.Tables[0].Rows.Count > 0)
{
string sJGBID_1 = dsJGBMX.Tables[0].Rows[0]["XLXSJGBMX_JGBID"].ToString().Trim();
double dJJ_1 = 0.0;
if (bHSBZ)
{
Dictionary<string, double> aryCLCB_1 = GetCLCB_BJHQ(sBJFLID, sJGBID_1, sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ, sJGBJLDW, sBJU003);
dJJ_1 = aryCLCB_1["CLCB"];
dCLCB = aryCLCB_1["CLCB"];//区域价所依出厂价的基价即材料成本
JgIsZero = aryCLCB_1["JgIsZero"] == 1 ? true : false;
}
else
{
Dictionary<string, double> aryCLCB_1 = GetCLCB_BJHQ(sBJFLID, sJGBID_1, sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ, sJGBJLDW, sBJU003);
dJJ_1 = aryCLCB_1["WSCLCB"];
dCLCB = aryCLCB_1["WSCLCB"];
JgIsZero = aryCLCB_1["JgIsZero"] == 1 ? true : false;
}
dCLCB = NumberUtils.RoundX(dCLCB, iXSWS);
dJJ = GetCPJJbyCLCB(dJJ_1, sJGBID_1, "", sXLXHID, sXLGGID, sST, sDYDJ);
dJJ = NumberUtils.RoundX(dJJ, iXSWS);
dCPJJ = GetCPJJbyCLCB(dJJ, sJGBID, "", sXLXHID, sXLGGID, sST, sDYDJ);
}
}
}
sCPJJ = NumberUtils.RoundX(dCPJJ, iXSWS).ToString();
sJJ = dJJ.ToString();
sCLCB = dCLCB.ToString();
}
public static Dictionary<string, double> GetCLCB_BJDHQ(string sBJDID, string sBJRQ, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
return GetCLCB_BJDHQ(sBJDID, sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, "");
}
//特别处理:若存在有材料用量、无材料价格的情况,则算出的报价单行情料价改为负数显示
//若sJGBID1不为空,则只返回材料价价差
public static Dictionary<string, double> GetCLCB_BJDHQ(string sBJDID, string sBJRQ, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sJGBID1)
{
double dCLCB1 = 0.0;
double dWSCLCB1 = 0.0;
double dCLCB2 = 0.0;
double dWSCLCB2 = 0.0;
bool JgIsZero = false;//是否存在有材料用量、无材料价格的情况
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sSQL = new TSQL(dberp);
sSQL.Clear();
sSQL.Add("select XLXSCLQD_JGCZBID, XLXSCLQD_JGCZBBBID from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.Add(" and XLXSCLQD_WPID='ZZZZ'");
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet dsQD = dberp.OpenDataSet(sSQL);
if (dsQD.Tables[0].Rows.Count > 0)
{
string sJGCZBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim();
string sJGCZBBBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim();
sSQL.Clear();
sSQL.Add("select XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,XLXSBJCL_BJHQ,XLJGCZBML_CZBLX,isnull(XLJGCZBLM_BJRCLCB,'N') as XLJGCZBLM_BJRCLCB from XLJGCZBLM");
sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID");
sSQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLJGCZBLM_JGCZBID");
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID");
sSQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '");
sSQL.Add(" order by XLJGCZBLM_CLQDL");
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet dsJGCZB = dberp.OpenDataSet(sSQL);
Dictionary<string, string> dicCLHQ = new Dictionary<string, string>();
Dictionary<string, string> dicWLHQ = new Dictionary<string, string>();
Dictionary<string, string> dicBJRCB = new Dictionary<string, string>();
for (int i = 0; i < dsJGCZB.Tables[0].Rows.Count; i++)
{
//B类尺重表只支持材料行情报价
if (dsJGCZB.Tables[0].Rows[i]["XLJGCZBML_CZBLX"].ToString().Trim().Equals("B"))
{
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else//Z类A类C类
{
if (dsJGCZB.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim().Equals("2"))
{
//2|物料行情
dicWLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else
{
//1|材料行情
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
}
if (dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim().Equals("Y"))
{
dicBJRCB.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim());
}
}
sSQL.Clear();
sSQL.Add("select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,");
foreach (string sCLQDL in dicCLHQ.Keys)
{
sSQL.Add(string.Format("XLXSCLQD_SL{0}*CLJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add("0 as WSCLCB, ");
foreach (string sCLQDL in dicCLHQ.Keys)
{
sSQL.Add(string.Format("XLXSCLQD_SL{0}*HSJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add("0 as CLCB, ");
if (dicCLHQ.Keys.Count > 0)
{
//是否存在有材料用量、无材料价格的情况
sSQL.Add("case ");
foreach (string sCLQDL in dicCLHQ.Keys)
{
if (dicBJRCB.ContainsKey(sCLQDL))
continue;
sSQL.Add(string.Format(" when (XLXSCLQD_SL{0}>0 and HSJG{0}=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add(" else 'N' end as JgIsZero ");
}
else
{
sSQL.Add(" 'N' as JgIsZero ");
}
sSQL.Add("from XLXSCLQD ");
sSQL.Add(" left join");
sSQL.Add(" (");
sSQL.Add(" select JGCZBID,JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
sSQL.Add(string.Format(" sum(CLJG{0}) as CLJG{0},sum(HSJG{0}) as HSJG{0},", i.ToString().PadLeft(2, '0')));
}
sSQL.Add(" sum(CLJG80) as CLJG80,sum(HSJG80) as HSJG80");
sSQL.Add(" from");
sSQL.Add(" (");
sSQL.Add(" select XLJGCZBLM_JGCZBID as JGCZBID,XLJGCZBLM_JGCZBBBID as JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSBJDCLHQ_WSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as CLJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSBJDCLHQ_HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as HSJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
}
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(XLXSBJDCLHQ_WSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as CLJG80,");
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(XLXSBJDCLHQ_HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as HSJG80 ");
sSQL.Add(" from XLJGCZBLM");
if (!sJGBID1.Equals(""))
{
sSQL.Add(" left join (");
sSQL.Add(" select j3.XLXSBJDCLHQ_BJCLID as XLXSBJDCLHQ_BJCLID,");
sSQL.Add(" j3.XLXSBJDCLHQ_HSJG-j1.XLXSCLHQ_HSJG as XLXSBJDCLHQ_HSJG,j3.XLXSBJDCLHQ_WSJG-j1.XLXSCLHQ_WSJG as XLXSBJDCLHQ_WSJG");
sSQL.Add(" from XLXSCLHQ j1,XLXSBJDCLHQ j3");
sSQL.Add(" where j1.XLXSCLHQ_JGBID=:pJGBID1 and j3.XLXSBJDCLHQ_BJDID=:pBJDID");
sSQL.Add(" and j1.XLXSCLHQ_BJCLID=j3.XLXSBJDCLHQ_BJCLID");
sSQL.Add(" ) jj on XLXSBJDCLHQ_BJCLID=XLJGCZBLM_BJCLID");
sSQL.ParamByName("pJGBID1").Value = sJGBID1;
}
else
{
sSQL.Add(" left join XLXSBJDCLHQ on XLXSBJDCLHQ_BJDID=:pBJDID and XLXSBJDCLHQ_BJCLID=XLJGCZBLM_BJCLID");
}
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID ");
sSQL.Add(" ) b");
sSQL.Add(" group by JGCZBID,JGCZBBBID");
sSQL.Add(" ) c on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID=XLXSCLQD_JGCZBBBID ");
sSQL.Add("where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.ParamByName("pBJDID").Value = sBJDID;
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet ds1 = dberp.OpenDataSet(sSQL);
if (ds1.Tables[0].Rows.Count > 0)
{
dCLCB1 = CMISproConvert.StrToFloat(ds1.Tables[0].Rows[0]["CLCB"].ToString());
dWSCLCB1 = CMISproConvert.StrToFloat(ds1.Tables[0].Rows[0]["WSCLCB"].ToString());
if (ds1.Tables[0].Rows[0]["JgIsZero"].ToString().Trim().Equals("Y"))
JgIsZero = true;
}
if (dicWLHQ.Keys.Count > 0)
{
string sSQL_1 = "select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,";
string sSQL_2 = string.Empty;
string sSQL_3 = " 0 as WSCLCB,";
string sSQL_4 = string.Empty;
string sSQL_5 = " 0 as CLCB, case ";
string sSQL_6 = string.Empty;
string sSQL_7 = " else 'N' end as JgIsZero from XLXSCLQD "
+ " left join ( "
+ " select XLXSCLQDWL_JGCZBID as JGCZBID,XLXSCLQDWL_JGCZBBBID as JGCZBBBID,XLXSCLQDWL_DRHH as DRHH, XLXSCLQDWL_JGCZBXH as JGCZBXH, ";
string sSQL_8 = string.Empty;
string sSQL_9 = " ' ' as MJBZ from XLXSCLQDWL ";
string sSQL_10 = string.Empty;
string sSQL_11 = " ) d on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID= XLXSCLQD_JGCZBBBID and JGCZBXH= XLXSCLQD_JGCZBXH and DRHH=XLXSCLQD_DRHH "
+ " where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID";
int count = 0;//拼接的栏目数量
foreach (string sCLQDL in dicWLHQ.Keys)
{
if (dicBJRCB.ContainsKey(sCLQDL))
{
count++;
continue;
}
sSQL_2 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_4 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_6 += string.Format(" when (XLXSCLQD_SL{0}>0 and isnull(HSJG{0},0)=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_8 += string.Format(" isnull(c{0}.WSJG,0) as WSJG{0},isnull(c{0}.HSJG,0) as HSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""));
//关联XLXSWLHQ,获取物料行情
sSQL_10 += " left join";
sSQL_10 += " (";
sSQL_10 += " select XLXSBJCLWL_WLID,";
if (!sJGBID1.Equals(""))//若sJGBID1不为空,则获取价差
{
sSQL_10 += " case when isnull(XLXSBJDWLHQ_WLID,' ')=' ' then 0 else XLXSBJDWLHQ_WSJG-XLXSWLHQ_WSJG end as WSJG,";
sSQL_10 += " case when isnull(XLXSBJDWLHQ_WLID,' ')=' ' then 0 else XLXSBJDWLHQ_HSJG-XLXSWLHQ_HSJG end as HSJG ";
}
else
{
sSQL_10 += " case when isnull(XLXSBJDWLHQ_WLID,' ')=' ' then XLXSWLHQ_WSJG else XLXSBJDWLHQ_WSJG end as WSJG,";
sSQL_10 += " case when isnull(XLXSBJDWLHQ_WLID,' ')=' ' then XLXSWLHQ_HSJG else XLXSBJDWLHQ_HSJG end as HSJG ";
}
sSQL_10 += " from XLXSBJCLWL ";
sSQL_10 += string.Format("left join XLXSBJDWLHQ on XLXSBJDWLHQ_BJDID='{0}' and XLXSBJDWLHQ_WLID=XLXSBJCLWL_WLID", sBJDID);//关联XLXSBJDWLHQ,获取报价单物料行情
sSQL_10 += " left join";
sSQL_10 += " (";
sSQL_10 += " select WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG";
sSQL_10 += " from XLXSWLHQ,";
sSQL_10 += " (";
sSQL_10 += " select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS";
sSQL_10 += " from XLXSWLHQ";
sSQL_10 += " where XLXSWLHQ_JGBID=' '";
sSQL_10 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)";
sSQL_10 += " group by XLXSWLHQ_WLID";
sSQL_10 += string.Format(") a{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_10 += " where XLXSWLHQ_JGBID=' '";
sSQL_10 += " and XLXSWLHQ_WLID=WLID";
sSQL_10 += " and XLXSWLHQ_YXQS=maxYXQS";
sSQL_10 += string.Format(") WLJGB{0} on WLJGB{0}.WLID=XLXSBJCLWL_WLID", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_10 += string.Format(") c{0} on c{0}.XLXSBJCLWL_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
count++;
if (count % 25 == 0 || count == dicWLHQ.Count)
{
sSQL.Clear();
sSQL.Add(sSQL_1);
sSQL.Add(sSQL_2);
sSQL.Add(sSQL_3);
sSQL.Add(sSQL_4);
sSQL.Add(sSQL_5);
sSQL.Add(sSQL_6);
sSQL.Add(sSQL_7);
sSQL.Add(sSQL_8);
sSQL.Add(sSQL_9);
sSQL.Add(sSQL_10);
sSQL.Add(sSQL_11);
sSQL.ParamByName("pRQ").Value = sBJRQ;
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet ds2 = dberp.OpenDataSet(sSQL);
if (ds2.Tables[0].Rows.Count > 0)
{
dCLCB2 += CMISproConvert.StrToFloat(ds2.Tables[0].Rows[0]["CLCB"].ToString());
dWSCLCB2 += CMISproConvert.StrToFloat(ds2.Tables[0].Rows[0]["WSCLCB"].ToString());
if (ds2.Tables[0].Rows[0]["JgIsZero"].ToString().Trim().Equals("Y"))
JgIsZero = true;
}
sSQL_2 = string.Empty;
sSQL_4 = string.Empty;
sSQL_6 = string.Empty;
sSQL_8 = string.Empty;
sSQL_10 = string.Empty;
}
}
}
}
Dictionary<string, double> aryCLCB = new Dictionary<string, double>();
if (!sJGBID1.Equals(""))//若sJGBID1不为空,则不进行负数的校验,因为此时返回值代表的是两个价格表行情之差
{
aryCLCB.Add("CLCB", dCLCB1 + dCLCB2);
aryCLCB.Add("WSCLCB", dWSCLCB1 + dWSCLCB2);
}
else
{
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的报价单行情料价改为负数显示
{
aryCLCB.Add("CLCB", (dCLCB1 + dCLCB2) * -1);
aryCLCB.Add("WSCLCB", (dWSCLCB1 + dWSCLCB2) * -1);
}
else
{
aryCLCB.Add("CLCB", dCLCB1 + dCLCB2);
aryCLCB.Add("WSCLCB", dWSCLCB1 + dWSCLCB2);
}
}
return aryCLCB;
}
//报价日行情
public static Dictionary<string, double> GetCLCB_BJRHQ(string sBJRQ, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
double dCLCB1 = 0.0;
double dWSCLCB1 = 0.0;
double dCLCB2 = 0.0;
double dWSCLCB2 = 0.0;
bool JgIsZero = false;//是否存在有材料用量、无材料价格的情况
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sSQL = new TSQL(dberp);
sSQL.Clear();
sSQL.Add("select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.Add(" and XLXSCLQD_WPID='ZZZZ'");
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet dsQD = dberp.OpenDataSet(sSQL);
if (dsQD.Tables[0].Rows.Count > 0)
{
string sJGCZBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim();
string sJGCZBBBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim();
sSQL.Clear();
sSQL.Add("select XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,XLXSBJCL_BJHQ,XLJGCZBML_CZBLX,isnull(XLJGCZBLM_BJRCLCB,'N') as XLJGCZBLM_BJRCLCB from XLJGCZBLM");
sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID");
sSQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLJGCZBLM_JGCZBID");
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID");
sSQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '");
sSQL.Add(" order by XLJGCZBLM_CLQDL");
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet dsJGCZB = dberp.OpenDataSet(sSQL);
Dictionary<string, string> dicCLHQ = new Dictionary<string, string>();
Dictionary<string, string> dicWLHQ = new Dictionary<string, string>();
Dictionary<string, string> dicBJRCB = new Dictionary<string, string>();
for (int i = 0; i < dsJGCZB.Tables[0].Rows.Count; i++)
{
//B类尺重表只支持材料行情报价
if (dsJGCZB.Tables[0].Rows[i]["XLJGCZBML_CZBLX"].ToString().Trim().Equals("B"))
{
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else//Z类A类C类
{
if (dsJGCZB.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim().Equals("2"))
{
//2|物料行情
dicWLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else
{
//1|材料行情
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
}
if (dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim().Equals("Y"))
{
dicBJRCB.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim());
}
}
sSQL.Clear();
sSQL.Add("select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,");
foreach (string sCLQDL in dicCLHQ.Keys)
{
sSQL.Add(string.Format("XLXSCLQD_SL{0}*CLJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add("0 as WSCLCB, ");
foreach (string sCLQDL in dicCLHQ.Keys)
{
sSQL.Add(string.Format("XLXSCLQD_SL{0}*HSJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add("0 as CLCB, ");
if (dicCLHQ.Keys.Count > 0)
{
//是否存在有材料用量、无材料价格的情况
sSQL.Add("case ");
foreach (string sCLQDL in dicCLHQ.Keys)
{
if (dicBJRCB.ContainsKey(sCLQDL))
continue;
sSQL.Add(string.Format(" when (XLXSCLQD_SL{0}>0 and HSJG{0}=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add(" else 'N' end as JgIsZero ");
}
else
{
sSQL.Add(" 'N' as JgIsZero ");
}
sSQL.Add("from XLXSCLQD ");
sSQL.Add(" left join");
sSQL.Add(" (");
sSQL.Add(" select JGCZBID,JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
sSQL.Add(string.Format(" sum(CLJG{0}) as CLJG{0},sum(HSJG{0}) as HSJG{0},", i.ToString().PadLeft(2, '0')));
}
sSQL.Add(" sum(CLJG80) as CLJG80,sum(HSJG80) as HSJG80");
sSQL.Add(" from");
sSQL.Add(" (");
sSQL.Add(" select XLJGCZBLM_JGCZBID as JGCZBID,XLJGCZBLM_JGCZBBBID as JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(CLJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as CLJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as HSJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
}
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(CLJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as CLJG80,");
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as HSJG80 ");
sSQL.Add(" from XLJGCZBLM");
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select BJCLID,XLXSCLHQ_WSJG as CLJG,XLXSCLHQ_HSJG as HSJG");
sSQL.Add(" from XLXSCLHQ,");
sSQL.Add(" (");
sSQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS)as maxYXQS");
sSQL.Add(" from XLXSCLHQ");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)");
sSQL.Add(" group by XLXSCLHQ_BJCLID");
sSQL.Add(" ) a");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' ");
sSQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
sSQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID");
sSQL.Add(" ) b");
sSQL.Add(" group by JGCZBID,JGCZBBBID");
sSQL.Add(" ) c on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID= XLXSCLQD_JGCZBBBID ");
sSQL.Add("where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.ParamByName("pBJRQ").Value = sBJRQ;
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet ds1 = dberp.OpenDataSet(sSQL);
if (ds1.Tables[0].Rows.Count > 0)
{
dCLCB1 = CMISproConvert.StrToFloat(ds1.Tables[0].Rows[0]["CLCB"].ToString());
dWSCLCB1 = CMISproConvert.StrToFloat(ds1.Tables[0].Rows[0]["WSCLCB"].ToString());
if (ds1.Tables[0].Rows[0]["JgIsZero"].ToString().Trim().Equals("Y"))
JgIsZero = true;
}
if (dicWLHQ.Keys.Count > 0)
{
string sSQL_1 = "select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,";
string sSQL_2 = string.Empty;
string sSQL_3 = " 0 as WSCLCB,";
string sSQL_4 = string.Empty;
string sSQL_5 = " 0 as CLCB, case ";
string sSQL_6 = string.Empty;
string sSQL_7 = " else 'N' end as JgIsZero from XLXSCLQD "
+ " left join ( "
+ " select XLXSCLQDWL_JGCZBID as JGCZBID,XLXSCLQDWL_JGCZBBBID as JGCZBBBID,XLXSCLQDWL_DRHH as DRHH, XLXSCLQDWL_JGCZBXH as JGCZBXH, ";
string sSQL_8 = string.Empty;
string sSQL_9 = " ' ' as MJBZ from XLXSCLQDWL ";
string sSQL_10 = string.Empty;
string sSQL_11 = " ) d on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID= XLXSCLQD_JGCZBBBID and JGCZBXH= XLXSCLQD_JGCZBXH and DRHH=XLXSCLQD_DRHH "
+ " where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID";
int count = 0;//拼接的栏目数量
foreach (string sCLQDL in dicWLHQ.Keys)
{
if (dicBJRCB.ContainsKey(sCLQDL))
{
count++;
continue;
}
sSQL_2 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_4 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_6 += string.Format(" when (XLXSCLQD_SL{0}>0 and isnull(HSJG{0},0)=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_8 += string.Format(" isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""));
//关联XLXSWLHQ,获取物料行情
sSQL_10 += " left join";
sSQL_10 += " (";
sSQL_10 += " select XLXSWLHQ_WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG";
sSQL_10 += " from XLXSWLHQ,";
sSQL_10 += " (";
sSQL_10 += " select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS";
sSQL_10 += " from XLXSWLHQ";
sSQL_10 += " where XLXSWLHQ_JGBID=' '";
sSQL_10 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)";
sSQL_10 += " group by XLXSWLHQ_WLID";
sSQL_10 += string.Format(") a{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_10 += " where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS";
sSQL_10 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
count++;
if (count % 25 == 0 || count == dicWLHQ.Count)
{
sSQL.Clear();
sSQL.Add(sSQL_1);
sSQL.Add(sSQL_2);
sSQL.Add(sSQL_3);
sSQL.Add(sSQL_4);
sSQL.Add(sSQL_5);
sSQL.Add(sSQL_6);
sSQL.Add(sSQL_7);
sSQL.Add(sSQL_8);
sSQL.Add(sSQL_9);
sSQL.Add(sSQL_10);
sSQL.Add(sSQL_11);
sSQL.ParamByName("pRQ").Value = sBJRQ;
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet ds2 = dberp.OpenDataSet(sSQL);
if (ds2.Tables[0].Rows.Count > 0)
{
dCLCB2 += CMISproConvert.StrToFloat(ds2.Tables[0].Rows[0]["CLCB"].ToString());
dWSCLCB2 += CMISproConvert.StrToFloat(ds2.Tables[0].Rows[0]["WSCLCB"].ToString());
if (ds2.Tables[0].Rows[0]["JgIsZero"].ToString().Trim().Equals("Y"))
JgIsZero = true;
}
sSQL_2 = string.Empty;
sSQL_4 = string.Empty;
sSQL_6 = string.Empty;
sSQL_8 = string.Empty;
sSQL_10 = string.Empty;
}
}
}
}
Dictionary<string, double> aryCLCB = new Dictionary<string, double>();
aryCLCB.Add("CLCB", dCLCB1 + dCLCB2);
aryCLCB.Add("WSCLCB", dWSCLCB1 + dWSCLCB2);
if (JgIsZero)
aryCLCB.Add("JgIsZero", 1);//1代表真
else
aryCLCB.Add("JgIsZero", 0);//0代表假
return aryCLCB;
}
//按“JGE|表价实时计算价格表”报价,用界面上的铜价、铝价代替相关材料的报价日行情
public static Dictionary<string, double> GetCLCB_JGE(string sBJRQ, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sTBJCLID, string sLBJCLID, string sTJ, string sLJ, bool bHSBZ, bool bExistBJDHQ, string sBJDID)
{
double dCLCB1 = 0.0;
double dCLCB2 = 0.0;
bool JgIsZero = false;//是否存在有材料用量、无材料价格的情况
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sSQL = new TSQL(dberp);
if (!sBJDID.Equals(""))
{
sSQL.Clear();
sSQL.Add(@"select XLXSBJXHML_CPMLID
from XLXSBJXHML
where (XLXSBJXHML_XLXHID=:pXLXHID and XLXSBJXHML_DYDJID=:pDYDJID) or (XLXSBJXHML_XLXHID=:pXLXHID and XLXSBJXHML_DYDJID=' ')
order by XLXSBJXHML_XLXHID,XLXSBJXHML_DYDJID desc");
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID;
DataSet dsCPML = dberp.OpenDataSet(sSQL);
if (dsCPML.Tables[0].Rows.Count > 0)
{
string sCPMLID = dsCPML.Tables[0].Rows[0]["XLXSBJXHML_CPMLID"].ToString().Trim();
if (!string.IsNullOrEmpty(sCPMLID))
{
//查询报价分类产品目录
sSQL.Clear();
sSQL.Add(@"select XLXSCPML_CPMLIDS
from XLXSBJD
left join XLXSBJFL on XLXSBJD_BJFLID=XLXSBJFL_BJFLID
left join XLXSCPML on XLXSCPML_CPMLID=XLXSBJFL_CPMLID
where XLXSBJD_BJDID=:pBJDID and isnull(XLXSCPML_CPMLIDS,' ')<>' ' and ','||rtrim(ltrim(XLXSCPML_CPMLIDS))||',' not like :pCPMLID ");
sSQL.ParamByName("pBJDID").Value = sBJDID;
sSQL.ParamByName("pCPMLID").Value = "%," + sCPMLID + ",%";
DataSet dsFLML = dberp.OpenDataSet(sSQL);
if (dsFLML.Tables[0].Rows.Count > 0)
{
Dictionary<string, double> aryCLCBZero = new Dictionary<string, double>();
aryCLCBZero.Add("CLCB", dCLCB1 + dCLCB2);
aryCLCBZero.Add("JgIsZero", 0);//0代表假
return aryCLCBZero;
}
}
}
}
sSQL.Clear();
sSQL.Add("select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.Add(" and XLXSCLQD_WPID='ZZZZ'");
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet dsQD = dberp.OpenDataSet(sSQL);
if (dsQD.Tables[0].Rows.Count > 0)
{
string sJGCZBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim();
string sJGCZBBBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim();
sSQL.Clear();
sSQL.Add("select XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,XLXSBJCL_BJHQ,XLJGCZBML_CZBLX,isnull(XLJGCZBLM_BJRCLCB,'N') as XLJGCZBLM_BJRCLCB from XLJGCZBLM");
sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID");
sSQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLJGCZBLM_JGCZBID");
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID");
sSQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '");
sSQL.Add(" order by XLJGCZBLM_CLQDL");
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet dsJGCZB = dberp.OpenDataSet(sSQL);
Dictionary<string, string> dicCLHQ = new Dictionary<string, string>();
Dictionary<string, string> dicWLHQ = new Dictionary<string, string>();
Dictionary<string, string> dicBJRCB = new Dictionary<string, string>();
for (int i = 0; i < dsJGCZB.Tables[0].Rows.Count; i++)
{
//B类尺重表只支持材料行情报价
if (dsJGCZB.Tables[0].Rows[i]["XLJGCZBML_CZBLX"].ToString().Trim().Equals("B"))
{
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else//Z类A类C类
{
if (dsJGCZB.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim().Equals("2"))
{
//2|物料行情
dicWLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else
{
//1|材料行情
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
}
if (dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim().Equals("Y"))
{
dicBJRCB.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim());
}
}
sSQL.Clear();
sSQL.Add("select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,");
foreach (string sCLQDL in dicCLHQ.Keys)
{
if (bHSBZ)
sSQL.Add(string.Format("XLXSCLQD_SL{0}*HSJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
else
sSQL.Add(string.Format("XLXSCLQD_SL{0}*CLJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add("0 as CLCB, ");
if (dicCLHQ.Keys.Count > 0)
{
//是否存在有材料用量、无材料价格的情况
sSQL.Add("case ");
foreach (string sCLQDL in dicCLHQ.Keys)
{
if (dicBJRCB.ContainsKey(sCLQDL))
continue;
if (bHSBZ)
sSQL.Add(string.Format(" when (XLXSCLQD_SL{0}>0 and HSJG{0}=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", "")));
else
sSQL.Add(string.Format(" when (XLXSCLQD_SL{0}>0 and CLJG{0}=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add(" else 'N' end as JgIsZero ");
}
else
{
sSQL.Add(" 'N' as JgIsZero ");
}
sSQL.Add("from XLXSCLQD ");
sSQL.Add(" left join");
sSQL.Add(" (");
sSQL.Add(" select JGCZBID,JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
if (bHSBZ)
sSQL.Add(string.Format(" sum(HSJG{0}) as HSJG{0},", i.ToString().PadLeft(2, '0')));
else
sSQL.Add(string.Format(" sum(CLJG{0}) as CLJG{0},", i.ToString().PadLeft(2, '0')));
}
if (bHSBZ)
sSQL.Add(" sum(HSJG80) as HSJG80");
else
sSQL.Add(" sum(CLJG80) as CLJG80");
sSQL.Add(" from");
sSQL.Add(" (");
sSQL.Add(" select XLJGCZBLM_JGCZBID as JGCZBID,XLJGCZBLM_JGCZBBBID as JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
if (bHSBZ)
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as HSJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
else
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(CLJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as CLJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
}
if (bHSBZ)
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as HSJG80 ");
else
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(CLJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as CLJG80 ");
sSQL.Add(" from XLJGCZBLM");
if (bHSBZ)
{
if (bExistBJDHQ)//存在报价单行情
{
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select XLXSBJDCLHQ_BJCLID as BJCLID,");
sSQL.Add(string.Format("case when isnull(XLXSBJDCLHQ_BJCLID,' ')<>' ' and XLXSBJDCLHQ_BJCLID='{0}' then {1}", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_BJCLID,' ')<>' ' and XLXSBJDCLHQ_BJCLID='{0}' then {1}", sLBJCLID.Trim(), sLJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDCLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_HSJGF", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDCLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_HSJGF", sLBJCLID.Trim(), sLJ));
sSQL.Add(" else XLXSBJDCLHQ_HSJG end as HSJG ");
sSQL.Add(" from XLXSBJDCLHQ");
//sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJDCLHQ_BJCLID");
sSQL.Add(" where XLXSBJDCLHQ_BJDID=:pBJDID");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.ParamByName("pBJDID").Value = sBJDID;
}
else
{
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select BJCLID,");
sSQL.Add(string.Format("case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sLBJCLID.Trim(), sLJ));
sSQL.Add(string.Format(" when isnull(JGYBJCLID,' ')<>' ' and JGYBJCLID='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(JGYBJCLID,' ')<>' ' and JGYBJCLID='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sLBJCLID.Trim(), sLJ));
sSQL.Add(" else XLXSCLHQ_HSJG end as HSJG ");
sSQL.Add(" from XLXSCLHQ,");
sSQL.Add(" (");
sSQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_JGYBJCLID1 as JGYBJCLID,");
sSQL.Add(" max(XLXSCLHQ_YXQS) as maxYXQS");
sSQL.Add(" from XLXSCLHQ");
//sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)");
sSQL.Add(" group by XLXSCLHQ_BJCLID,XLXSCLHQ_JGYBJCLID1 ");
sSQL.Add(" ) a");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
sSQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.ParamByName("pBJRQ").Value = sBJRQ;
}
}
else
{
if (bExistBJDHQ)//存在报价单行情
{
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select XLXSBJDCLHQ_BJCLID as BJCLID,");
sSQL.Add(string.Format("case when isnull(XLXSBJDCLHQ_BJCLID,' ')<>' ' and XLXSBJDCLHQ_BJCLID='{0}' then {1}", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_BJCLID,' ')<>' ' and XLXSBJDCLHQ_BJCLID='{0}' then {1}", sLBJCLID.Trim(), sLJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDCLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_WSJGF", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDCLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_WSJGF", sLBJCLID.Trim(), sLJ));
sSQL.Add(" else XLXSBJDCLHQ_WSJG end as CLJG ");
sSQL.Add(" from XLXSBJDCLHQ");
//sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJDCLHQ_BJCLID");
sSQL.Add(" where XLXSBJDCLHQ_BJDID=:pBJDID");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.ParamByName("pBJDID").Value = sBJDID;
}
else
{
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select BJCLID,");
sSQL.Add(string.Format("case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sLBJCLID.Trim(), sLJ));
sSQL.Add(string.Format(" when isnull(JGYBJCLID,' ')<>' ' and JGYBJCLID='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(JGYBJCLID,' ')<>' ' and JGYBJCLID='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sLBJCLID.Trim(), sLJ));
sSQL.Add(" else XLXSCLHQ_WSJG end as CLJG ");
sSQL.Add(" from XLXSCLHQ,");
sSQL.Add(" (");
sSQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_JGYBJCLID1 as JGYBJCLID,");
sSQL.Add(" max(XLXSCLHQ_YXQS) as maxYXQS");
sSQL.Add(" from XLXSCLHQ");
// sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)");
sSQL.Add(" group by XLXSCLHQ_BJCLID,XLXSCLHQ_JGYBJCLID1 ");
sSQL.Add(" ) a");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
sSQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.ParamByName("pBJRQ").Value = sBJRQ;
}
}
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID");
sSQL.Add(" ) b");
sSQL.Add(" group by JGCZBID,JGCZBBBID");
sSQL.Add(" ) c on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID= XLXSCLQD_JGCZBBBID ");
sSQL.Add("where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet ds1 = dberp.OpenDataSet(sSQL);
if (ds1.Tables[0].Rows.Count > 0)
{
dCLCB1 = CMISproConvert.StrToFloat(ds1.Tables[0].Rows[0]["CLCB"].ToString());
if (ds1.Tables[0].Rows[0]["JgIsZero"].ToString().Trim().Equals("Y"))
JgIsZero = true;
}
if (dicWLHQ.Keys.Count > 0)
{
string sSQL_1 = " select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,";
string sSQL_2 = string.Empty;
string sSQL_3 = " 0 as CLCB, case ";
string sSQL_4 = string.Empty;
string sSQL_5 = " else 'N' end as JgIsZero from XLXSCLQD "
+ " left join ("
+ " select XLXSCLQDWL_JGCZBID as JGCZBID,XLXSCLQDWL_JGCZBBBID as JGCZBBBID,XLXSCLQDWL_DRHH as DRHH, XLXSCLQDWL_JGCZBXH as JGCZBXH,";
string sSQL_6 = string.Empty;
string sSQL_7 = " ' ' as MJBZ from XLXSCLQDWL ";
string sSQL_8 = string.Empty;
string sSQL_9 = " ) e on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID=XLXSCLQD_JGCZBBBID and JGCZBXH=XLXSCLQD_JGCZBXH and DRHH=XLXSCLQD_DRHH "
+ " where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID ";
int count = 0;//拼接的栏目数量
foreach (string sCLQDL in dicWLHQ.Keys)
{
if (dicBJRCB.ContainsKey(sCLQDL))
{
count++;
continue;
}
if (bHSBZ)
sSQL_2 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
else
sSQL_2 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
//是否存在有物料用量、无物料价格的情况
if (bHSBZ)
sSQL_4 += string.Format(" when (XLXSCLQD_SL{0}>0 and isnull(HSJG{0},0)=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", ""));
else
sSQL_4 += string.Format(" when (XLXSCLQD_SL{0}>0 and isnull(WSJG{0},0)=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", ""));
if (bExistBJDHQ)//存在报价单材料行情,即认为也存在报价单物料行情
{
if (bHSBZ)
{
sSQL_6 += 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
{
sSQL_6 += 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("列", ""));
}
}
else
{
if (bHSBZ)
{
sSQL_6 += string.Format("isnull(c{0}.HSJG,0) as HSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""));
}
else
{
sSQL_6 += string.Format("isnull(c{0}.WSJG,0) as WSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""));
}
}
if (bExistBJDHQ)//存在报价单材料行情,即认为也存在报价单物料行情
{
//关联XLXSBJDWLHQ,获取报价单物料行情
sSQL_8 += " left join ";
sSQL_8 += " (";
sSQL_8 += " select XLXSBJDWLHQ_WLID,";
if (bHSBZ)
{
sSQL_8 += string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSBJDWLHQ_HSJG end as HSJG ";
}
else
{
sSQL_8 += string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSBJDWLHQ_WSJG end as WSJG ";
}
sSQL_8 += " from XLXSBJDWLHQ";
sSQL_8 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSBJDWLHQ_WLID";
sSQL_8 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID";
sSQL_8 += string.Format(" where XLXSBJDWLHQ_BJDID='{0}'", sBJDID);
sSQL_8 += string.Format(") d{0} on d{0}.XLXSBJDWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
//关联XLXSWLHQ,获取物料行情
sSQL_8 += " left join";
sSQL_8 += " (";
sSQL_8 += " select XLXSWLHQ_WLID as WLID,";
if (bHSBZ)
{
sSQL_8 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSWLHQ_HSJG end as HSJG ";
}
else
{
sSQL_8 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSWLHQ_WSJG end as WSJG ";
}
sSQL_8 += " from XLXSWLHQ,";
sSQL_8 += " (";
sSQL_8 += " select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS";
sSQL_8 += " from XLXSWLHQ";
sSQL_8 += " where XLXSWLHQ_JGBID=' '";
sSQL_8 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)";
sSQL_8 += " group by XLXSWLHQ_WLID";
sSQL_8 += string.Format(") a{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_8 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=WLID";//20.09.22新增
sSQL_8 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID";//20.09.22新增
sSQL_8 += " where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS";
sSQL_8 += string.Format(") c{0} on c{0}.WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
}
else
{
//关联XLXSWLHQ,获取物料行情
sSQL_8 += " left join";
sSQL_8 += " (";
sSQL_8 += " select XLXSWLHQ_WLID as WLID,";
if (bHSBZ)
{
sSQL_8 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSWLHQ_HSJG end as HSJG ";
}
else
{
sSQL_8 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSWLHQ_WSJG end as WSJG ";
}
sSQL_8 += " from XLXSWLHQ,";
sSQL_8 += " (";
sSQL_8 += " select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS";
sSQL_8 += " from XLXSWLHQ";
sSQL_8 += " where XLXSWLHQ_JGBID=' '";
sSQL_8 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)";
sSQL_8 += " group by XLXSWLHQ_WLID";
sSQL_8 += string.Format(") a{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_8 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=WLID";//20.09.22新增
sSQL_8 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID";//20.09.22新增
sSQL_8 += " where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS";
sSQL_8 += string.Format(") c{0} on c{0}.WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
}
count++;
if (count % 25 == 0 || count == dicWLHQ.Count)
{
sSQL.Clear();
sSQL.Add(sSQL_1);
sSQL.Add(sSQL_2);
sSQL.Add(sSQL_3);
sSQL.Add(sSQL_4);
sSQL.Add(sSQL_5);
sSQL.Add(sSQL_6);
sSQL.Add(sSQL_7);
sSQL.Add(sSQL_8);
sSQL.Add(sSQL_9);
sSQL.ParamByName("pRQ").Value = sBJRQ;
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet ds2 = dberp.OpenDataSet(sSQL);
if (ds2.Tables[0].Rows.Count > 0)
{
dCLCB2 += CMISproConvert.StrToFloat(ds2.Tables[0].Rows[0]["CLCB"].ToString());
if (ds2.Tables[0].Rows[0]["JgIsZero"].ToString().Trim().Equals("Y"))
JgIsZero = true;
}
sSQL_2 = string.Empty;
sSQL_4 = string.Empty;
sSQL_6 = string.Empty;
sSQL_8 = string.Empty;
}
}
}
}
Dictionary<string, double> aryCLCB = new Dictionary<string, double>();
aryCLCB.Add("CLCB", dCLCB1 + dCLCB2);
if (JgIsZero)
aryCLCB.Add("JgIsZero", 1);//1代表真
else
aryCLCB.Add("JgIsZero", 0);//0代表假
return aryCLCB;
}
public static Dictionary<string, double> GetCLCB_JGE(string sBJRQ, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sTBJCLID, string sLBJCLID, string sTJ, string sLJ, bool bHSBZ, bool bExistBJDHQ, string sBJDID, string sBJFLID)
{
if (sBJDID.Equals(""))
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sSQL = new TSQL(dberp);
sSQL.Clear();
sSQL.Add(@"select XLXSBJXHML_CPMLID
from XLXSBJXHML
where (XLXSBJXHML_XLXHID=:pXLXHID and XLXSBJXHML_DYDJID=:pDYDJID) or (XLXSBJXHML_XLXHID=:pXLXHID and XLXSBJXHML_DYDJID=' ')
order by XLXSBJXHML_XLXHID,XLXSBJXHML_DYDJID desc");
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID;
DataSet dsCPML = dberp.OpenDataSet(sSQL);
if (dsCPML.Tables[0].Rows.Count > 0)
{
string sCPMLID = dsCPML.Tables[0].Rows[0]["XLXSBJXHML_CPMLID"].ToString().Trim();
if (!string.IsNullOrEmpty(sCPMLID))
{
//查询报价分类产品目录
sSQL.Clear();
sSQL.Add(@"select XLXSCPML_CPMLIDS
from XLXSBJFL
left join XLXSCPML on XLXSCPML_CPMLID=XLXSBJFL_CPMLID
where XLXSBJFL_BJFLID=:pBJFLID and isnull(XLXSCPML_CPMLIDS,' ')<>' ' and ','||rtrim(ltrim(XLXSCPML_CPMLIDS))||',' not like :pCPMLID ");
sSQL.ParamByName("pBJFLID").Value = sBJFLID;
sSQL.ParamByName("pCPMLID").Value = "%," + sCPMLID + ",%";
DataSet dsFLML = dberp.OpenDataSet(sSQL);
if (dsFLML.Tables[0].Rows.Count > 0)
{
Dictionary<string, double> aryCLCBZero = new Dictionary<string, double>();
aryCLCBZero.Add("CLCB", 0);
aryCLCBZero.Add("JgIsZero", 0);//0代表假
return aryCLCBZero;
}
}
}
}
return GetCLCB_JGE(sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sTBJCLID, sLBJCLID, sTJ, sLJ, bHSBZ, bExistBJDHQ, sBJDID);
}
//计算价格表调价因素3在报价单上的材料价价差
public static double GetCLCBC_JGBID3(string sJGBID3, string sJGBID1, string sJGBXH1, string sBJDID, string sTBJCLID, string sLBJCLID, string sTJ, string sLJ, bool bHSBZ, bool bExistBJDHQ, string sJSBLFS, int iXSWS)
{
double dCLCBC = 0.0;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSJGBCLQD_JGCZBID,XLXSJGBCLQD_JGCZBBBID,XLXSJGBCLQD_JJFPSJ from XLXSJGBCLQD ");
SQL.Add(" where XLXSJGBCLQD_JGBID=:pJGBID1");
SQL.Add(" and XLXSJGBCLQD_XH=:pJGBXH1");
SQL.Add(" order by XLXSJGBCLQD_XH");
SQL.ParamByName("pJGBID1").Value = sJGBID1;
SQL.ParamByName("pJGBXH1").Value = sJGBXH1;
DataSet dsJGCZB = dberp.OpenDataSet(SQL);
if (dsJGCZB.Tables[0].Rows.Count > 0)
{
string tmpJGCZBID = dsJGCZB.Tables[0].Rows[0]["XLXSJGBCLQD_JGCZBID"].ToString().Trim();
string tmpJGCZBBBID = dsJGCZB.Tables[0].Rows[0]["XLXSJGBCLQD_JGCZBBBID"].ToString().Trim();
string tmpJJFPSJ = dsJGCZB.Tables[0].Rows[0]["XLXSJGBCLQD_JJFPSJ"].ToString().Trim();
string sCLQDL = "";
SQL.Clear();
SQL.Add("select XLXSJGBYLLM_CLQDL,XLXSJGBYLLM_BJCLID,isnull(XLXSBJCL_BJHQ,'1') as XLXSBJCL_BJHQ 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);
SQL.Clear();
SQL.Add("select XLXSJGBCLQD_XH,");
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();
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();
SQL.Add(string.Format("XLXSJGBCLQD_ZL{0}*CLJG{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
}
}
SQL.Add("0.0) as CLCBC ");
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();
//这里之所以能涵盖1|材料行情、2|物料行情,是因为因素3价格表和因素1价格表的物料行情不能随意改、且即使它们能发生变化也是因为期货铜价引起的,所以物料之间的价格差与细分之前的报价材料之间的价格差等同
SQL.Add(string.Format(" sum(case when XLXSJGBYLLM_CLQDL='{0}' then isnull(CLJG,0.0) else 0.0 end) as CLJG{1},", sCLQDL, sCLQDL.Replace("第", "").Replace("列", "")));
}
SQL.Add(" ' ' as MJBZ ");
SQL.Add(" from XLXSJGBYLLM ");
if (bExistBJDHQ)//存在报价单行情
{
SQL.Add(" left join (");
SQL.Add(" select j3.XLXSCLHQ_BJCLID as XLXSCLHQ_BJCLID,");
if (bHSBZ)
SQL.Add(" case when isnull(XLXSBJDCLHQ_BJCLID,' ')=' ' then (j3.XLXSCLHQ_HSJG-j1.XLXSCLHQ_HSJG) else (XLXSBJDCLHQ_HSJG-j1.XLXSCLHQ_HSJG) end as CLJG ");
else
SQL.Add(" case when isnull(XLXSBJDCLHQ_BJCLID,' ')=' ' then (j3.XLXSCLHQ_WSJG-j1.XLXSCLHQ_WSJG) else (XLXSBJDCLHQ_WSJG-j1.XLXSCLHQ_WSJG) end as CLJG ");
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.ParamByName("pBJDID").Value = sBJDID;
}
else
{
SQL.Add(" left join ");
SQL.Add(" (");
SQL.Add(" select j3.XLXSCLHQ_BJCLID as XLXSCLHQ_BJCLID,");
if (bHSBZ)
{
SQL.Add(string.Format("case when isnull(j3.XLXSCLHQ_BJCLID,' ')<>' ' and j3.XLXSCLHQ_BJCLID='{0}' then {1}-j1.XLXSCLHQ_HSJG", sTBJCLID.Trim(), sTJ));
SQL.Add(string.Format(" when isnull(j3.XLXSCLHQ_BJCLID,' ')<>' ' and j3.XLXSCLHQ_BJCLID='{0}' then {1}-j1.XLXSCLHQ_HSJG", sLBJCLID.Trim(), sLJ));
SQL.Add(string.Format(" when isnull(j3.XLXSCLHQ_JGYBJCLID1,' ')<>' ' and j3.XLXSCLHQ_JGYBJCLID1='{0}' then {1}*j3.XLXSCLHQ_JGBL1+j3.XLXSCLHQ_HSJGF-j1.XLXSCLHQ_HSJG", sTBJCLID.Trim(), sTJ));
SQL.Add(string.Format(" when isnull(j3.XLXSCLHQ_JGYBJCLID1,' ')<>' ' and j3.XLXSCLHQ_JGYBJCLID1='{0}' then {1}*j3.XLXSCLHQ_JGBL1+j3.XLXSCLHQ_HSJGF-j1.XLXSCLHQ_HSJG", sLBJCLID.Trim(), sLJ));
SQL.Add(" else j3.XLXSCLHQ_HSJG-j1.XLXSCLHQ_HSJG end as CLJG ");
}
else
{
SQL.Add(string.Format("case when isnull(j3.XLXSCLHQ_BJCLID,' ')<>' ' and j3.XLXSCLHQ_BJCLID='{0}' then {1}-j1.XLXSCLHQ_WSJG", sTBJCLID.Trim(), sTJ));
SQL.Add(string.Format(" when isnull(j3.XLXSCLHQ_BJCLID,' ')<>' ' and j3.XLXSCLHQ_BJCLID='{0}' then {1}-j1.XLXSCLHQ_WSJG", sLBJCLID.Trim(), sLJ));
SQL.Add(string.Format(" when isnull(j3.XLXSCLHQ_JGYBJCLID1,' ')<>' ' and j3.XLXSCLHQ_JGYBJCLID1='{0}' then {1}*j3.XLXSCLHQ_JGBL1+j3.XLXSCLHQ_WSJGF-j1.XLXSCLHQ_WSJG", sTBJCLID.Trim(), sTJ));
SQL.Add(string.Format(" when isnull(j3.XLXSCLHQ_JGYBJCLID1,' ')<>' ' and j3.XLXSCLHQ_JGYBJCLID1='{0}' then {1}*j3.XLXSCLHQ_JGBL1+j3.XLXSCLHQ_WSJGF-j1.XLXSCLHQ_WSJG", sLBJCLID.Trim(), sLJ));
SQL.Add(" else j3.XLXSCLHQ_WSJG-j1.XLXSCLHQ_WSJG end as CLJG ");
}
SQL.Add(" from XLXSCLHQ j1,XLXSCLHQ j3");
SQL.Add(" left join XLXSBJCL on XLXSBJCL_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_XH=:pJGBXH1");
SQL.ParamByName("pJGBID1").Value = sJGBID1;
SQL.ParamByName("pJGBXH1").Value = sJGBXH1;
SQL.ParamByName("pJGBID3").Value = sJGBID3;
SQL.ParamByName("pJJFPSJ").Value = tmpJJFPSJ;
SQL.ParamByName("pJGCZBID").Value = tmpJGCZBID;
SQL.ParamByName("pJGCZBBBID").Value = tmpJGCZBBBID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
dCLCBC = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["CLCBC"].ToString());
}
}
return dCLCBC;
}
//记录报价单日行情时,补充后添加的材料行情
public static void InsertXLXSBJDCLHQ_WLHQ(TDatabase dberp, TSQL SQL, string sBJDHQLY, string sBJDID,string sBJRQ, bool bHSBZ, string sTBJCLID, string sLBJCLID, double fTJ, double fLJ, string sWHR, string sWHRID)
{
if (sBJDHQLY.Equals("2"))//报价单行情来源:2|报价日行情
{
string sDecimal = BJCLPriceDecimal.ToString().Trim();
SQL.Clear();
SQL.Add(" merge into XLXSBJDCLHQ tag ");
SQL.Add(" using ( ");
if (bHSBZ)
{
SQL.Add(" select :pBJDID as BJDID, BJCLID,");
SQL.Add(string.Format("RoundFix(case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}/(1+ZZSL/100.0)", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}/(1+ZZSL/100.0)", sLBJCLID, fLJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}/(1+ZZSL/100.0)*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}/(1+ZZSL/100.0)*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sLBJCLID, fLJ));
SQL.Add(" else XLXSCLHQ_WSJG end," + sDecimal + ") as CLJG,");
SQL.Add(string.Format("RoundFix(case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sLBJCLID, fLJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sLBJCLID, fLJ));
SQL.Add(" else XLXSCLHQ_HSJG end," + sDecimal + ") as HSJG, ");
SQL.Add(" XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF,");
SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_WSJG1,XLXSCLHQ_HSJG1,XLXSCLHQ_JGBL1 ");
SQL.Add(" from XLXSCLHQ,");
SQL.Add(" (");
SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_JGYBJCLID1 as JGYBJCLID1,XLXSBJCL_ZZSL as ZZSL,");
SQL.Add(" max(XLXSCLHQ_YXQS) as maxYXQS");
SQL.Add(" from XLXSCLHQ");
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' ");
SQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null) ");
SQL.Add(" group by XLXSCLHQ_BJCLID,XLXSCLHQ_JGYBJCLID1,XLXSBJCL_ZZSL");
SQL.Add(" ) a");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
}
else
{
SQL.Add(" select :pBJDID as BJDID, BJCLID,");
SQL.Add(string.Format("RoundFix(case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sLBJCLID, fLJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sLBJCLID, fLJ));
SQL.Add(" else XLXSCLHQ_WSJG end," + sDecimal + ") as CLJG, ");
SQL.Add(string.Format("RoundFix(case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}*(1+ZZSL/100.0)", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}*(1+ZZSL/100.0)", sLBJCLID, fLJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*(1+ZZSL/100.0)*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*(1+ZZSL/100.0)*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sLBJCLID, fLJ));
SQL.Add(" else XLXSCLHQ_HSJG end," + sDecimal + ") as HSJG, ");
SQL.Add(" XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF,");
SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_WSJG1,XLXSCLHQ_HSJG1,XLXSCLHQ_JGBL1 ");
SQL.Add(" from XLXSCLHQ,");
SQL.Add(" (");
SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_JGYBJCLID1 as JGYBJCLID1,XLXSBJCL_ZZSL as ZZSL,");
SQL.Add(" max(XLXSCLHQ_YXQS) as maxYXQS");
SQL.Add(" from XLXSCLHQ");
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' ");
SQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null) ");
SQL.Add(" group by XLXSCLHQ_BJCLID,XLXSCLHQ_JGYBJCLID1,XLXSBJCL_ZZSL");
SQL.Add(" ) a");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
}
SQL.Add(" ) sor ");
SQL.Add(" on ( tag.XLXSBJDCLHQ_BJDID = :pBJDID and tag.XLXSBJDCLHQ_BJCLID = sor.BJCLID ) ");
SQL.Add(" when not matched then ");
SQL.Add(" insert (XLXSBJDCLHQ_BJDID,XLXSBJDCLHQ_BJCLID,XLXSBJDCLHQ_WSJG,XLXSBJDCLHQ_HSJG,XLXSBJDCLHQ_WSJGF,XLXSBJDCLHQ_HSJGF,");
SQL.Add(" XLXSBJDCLHQ_JGYBJCLID1,XLXSBJDCLHQ_WSJG1,XLXSBJDCLHQ_HSJG1,XLXSBJDCLHQ_JGBL1,XLXSBJDCLHQ_WHR,XLXSBJDCLHQ_WHRID,XLXSBJDCLHQ_WHSJ)");
SQL.Add(" values (sor.BJDID,sor.BJCLID,sor.CLJG,sor.HSJG,sor.XLXSCLHQ_WSJGF,sor.XLXSCLHQ_HSJGF,");
SQL.Add(" sor.XLXSCLHQ_JGYBJCLID1,sor.XLXSCLHQ_WSJG1,sor.XLXSCLHQ_HSJG1,sor.XLXSCLHQ_JGBL1,");
SQL.Add(" :pWHR,:pWHRID,:pWHSJ) ");
SQL.ParamByName("pBJRQ").Value = sBJRQ;
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
InsertXLXSBJDWLHQbyBJDCLHQ(dberp, SQL, sBJDID,sBJRQ, sWHR, sWHRID);
}
}
//记录报价单日行情时,补充后添加的物料行情
public static void InsertXLXSBJDWLHQbyBJDCLHQ(TDatabase dberp, TSQL SQL, string sBJDID,string sBJRQ, string sWHR, string sWHRID)
{
SQL.Clear();
SQL.Add("merge into XLXSBJDWLHQ ");
SQL.Add("using ");
SQL.Add("( ");
SQL.Add("select :pBJDID as BJDID,XLXSBJCLWL_WLID as WLID, ");
SQL.Add("case when XLXSBJDCLHQ_BJCLID is null then isnull(XLXSWLHQ_WSJG,0) else isnull(XLXSBJDCLHQ_WSJG*XLXSWLHQ_JGBL1,0)+isnull(XLXSWLHQ_WSJGF,0) end as WSJG, ");
SQL.Add("case when XLXSBJDCLHQ_BJCLID is null then isnull(XLXSWLHQ_HSJG,0) else isnull(XLXSBJDCLHQ_HSJG*XLXSWLHQ_JGBL1,0)+isnull(XLXSWLHQ_HSJGF,0) end as HSJG, ");
SQL.Add("isnull(XLXSWLHQ_WSJGF,0) as WSJGF,isnull(XLXSWLHQ_HSJGF,0) as HSJGF, ");
SQL.Add("isnull(XLXSBJDCLHQ_WSJG,0) as WSJG1,isnull(XLXSBJDCLHQ_HSJG,0) as HSJG1,isnull(XLXSWLHQ_JGBL1,0) as JGBL1,isnull(XLXSWLHQ_JGYBJCLID1,' ') as JGYBJCLID1 ");
SQL.Add("from XLXSBJCLWL ");
SQL.Add("left join ");
SQL.Add(" (select XLXSWLHQ_WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG,XLXSWLHQ_WSJGF,XLXSWLHQ_HSJGF,");
SQL.Add(" XLXSWLHQ_JGYBJCLID1,XLXSWLHQ_WSJG1,XLXSWLHQ_HSJG1,XLXSWLHQ_JGBL1 ");
SQL.Add(" from XLXSWLHQ,");
SQL.Add(" (");
SQL.Add(" select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS) as maxYXQS");
SQL.Add(" from XLXSWLHQ");
SQL.Add(" where XLXSWLHQ_JGBID=' '");
SQL.Add(" and XLXSWLHQ_YXQS<=:pBJRQ and(XLXSWLHQ_YXQZ>=:pBJRQ or XLXSWLHQ_YXQZ is null)");
SQL.Add(" group by XLXSWLHQ_WLID");
SQL.Add(" ) a ");
SQL.Add(" where XLXSWLHQ_JGBID=' ' ");
SQL.Add(" and XLXSWLHQ_WLID=WLID ");
SQL.Add(" and XLXSWLHQ_YXQS=maxYXQS ");
SQL.Add(" ) c on XLXSWLHQ_WLID=XLXSBJCLWL_WLID ");
SQL.Add("left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID ");
SQL.Add("left join XLXSBJDCLHQ on XLXSBJDCLHQ_BJDID=:pBJDID and XLXSBJDCLHQ_BJCLID=XLXSBJCL_JGYBJCLID ");
SQL.Add("where XLXSBJCL_BJHQ = '2' and isnull(XLXSBJCL_JGYBJCLID,' ') <> ' ' ");//只有存在加工原料的物料才记!
SQL.Add(") B on (XLXSBJDWLHQ_BJDID=B.BJDID and XLXSBJDWLHQ_WLID=B.WLID) ");
SQL.Add("when not matched then ");
SQL.Add("insert (XLXSBJDWLHQ_BJDID,XLXSBJDWLHQ_WLID,XLXSBJDWLHQ_WSJG,XLXSBJDWLHQ_HSJG,XLXSBJDWLHQ_WSJGF,XLXSBJDWLHQ_HSJGF,");
SQL.Add("XLXSBJDWLHQ_JGYBJCLID1,XLXSBJDWLHQ_WSJG1,XLXSBJDWLHQ_HSJG1,XLXSBJDWLHQ_JGBL1,");
SQL.Add("XLXSBJDWLHQ_WHR,XLXSBJDWLHQ_WHRID,XLXSBJDWLHQ_WHSJ) ");
SQL.Add("values (B.BJDID,B.WLID,B.WSJG,B.HSJG,B.WSJGF,B.HSJGF,");
SQL.Add("B.JGYBJCLID1,B.WSJG1,B.HSJG1,B.JGBL1,");
SQL.Add(":pWHR,:pWHRID,:pWHSJ) ");
SQL.ParamByName("pBJRQ").Value = sBJRQ;
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
public static void InsertXLXSBJDCLHQ_WLHQ(TDatabase dberp, TSQL SQL, string sBJDHQLY, string sBJDID, string sBJRQ, bool bHSBZ, string sTBJCLID, string sLBJCLID, double fTJ, double fLJ, string sWHR, string sWHRID,
string sJGBID)
{
string sDecimal = BJCLPriceDecimal.ToString().Trim();
SQL.Clear();
SQL.Add("delete from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID=:pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
//SQL.Clear();
//SQL.Add("delete from XLXSBJDWLHQ where XLXSBJDWLHQ_BJDID=:pBJDID");
//SQL.ParamByName("pBJDID").Value = sBJDID;
//dberp.ExecSQL(SQL);
if (sBJDHQLY.Equals("2"))//报价单行情来源:2|报价日行情
{
SQL.Clear();
SQL.Add("insert into XLXSBJDCLHQ(XLXSBJDCLHQ_BJDID,XLXSBJDCLHQ_BJCLID,XLXSBJDCLHQ_WSJG,XLXSBJDCLHQ_HSJG,XLXSBJDCLHQ_WSJGF,XLXSBJDCLHQ_HSJGF,");
SQL.Add(" XLXSBJDCLHQ_JGYBJCLID1,XLXSBJDCLHQ_WSJG1,XLXSBJDCLHQ_HSJG1,XLXSBJDCLHQ_JGBL1, ");
SQL.Add(" XLXSBJDCLHQ_WHR,XLXSBJDCLHQ_WHRID,XLXSBJDCLHQ_WHSJ)");
if (bHSBZ)
{
SQL.Add(" select :pBJDID, BJCLID,");
SQL.Add(string.Format("RoundFix(case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}/(1+ZZSL/100.0)", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}/(1+ZZSL/100.0)", sLBJCLID, fLJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}/(1+ZZSL/100.0)*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}/(1+ZZSL/100.0)*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sLBJCLID, fLJ));
SQL.Add(" else XLXSCLHQ_WSJG end," + sDecimal + ") as CLJG,");
SQL.Add(string.Format("RoundFix(case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sLBJCLID, fLJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sLBJCLID, fLJ));
SQL.Add(" else XLXSCLHQ_HSJG end," + sDecimal + ") as HSJG, ");
SQL.Add(" XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF,");
SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_WSJG1,XLXSCLHQ_HSJG1,XLXSCLHQ_JGBL1, ");
SQL.Add(" :pWHR,:pWHRID,:pWHSJ");
SQL.Add(" from XLXSCLHQ,");
SQL.Add(" (");
SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_JGYBJCLID1 as JGYBJCLID1,XLXSBJCL_ZZSL as ZZSL,");
SQL.Add(" max(XLXSCLHQ_YXQS) as maxYXQS");
SQL.Add(" from XLXSCLHQ");
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null) and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' ");
SQL.Add(" group by XLXSCLHQ_BJCLID,XLXSCLHQ_JGYBJCLID1,XLXSBJCL_ZZSL");
SQL.Add(" ) a");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
}
else
{
SQL.Add(" select :pBJDID, BJCLID,");
SQL.Add(string.Format("RoundFix(case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sLBJCLID, fLJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sLBJCLID, fLJ));
SQL.Add(" else XLXSCLHQ_WSJG end," + sDecimal + ") as CLJG, ");
SQL.Add(string.Format("RoundFix(case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}*(1+ZZSL/100.0)", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}*(1+ZZSL/100.0)", sLBJCLID, fLJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*(1+ZZSL/100.0)*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sTBJCLID, fTJ));
SQL.Add(string.Format(" when isnull(JGYBJCLID1,' ')<>' ' and JGYBJCLID1='{0}' then {1}*(1+ZZSL/100.0)*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sLBJCLID, fLJ));
SQL.Add(" else XLXSCLHQ_HSJG end," + sDecimal + ") as HSJG, ");
SQL.Add(" XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF,");
SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_WSJG1,XLXSCLHQ_HSJG1,XLXSCLHQ_JGBL1,");
SQL.Add(" :pWHR,:pWHRID,:pWHSJ");
SQL.Add(" from XLXSCLHQ,");
SQL.Add(" (");
SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_JGYBJCLID1 as JGYBJCLID1,XLXSBJCL_ZZSL as ZZSL,");
SQL.Add(" max(XLXSCLHQ_YXQS) as maxYXQS");
SQL.Add(" from XLXSCLHQ");
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null) and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' ");
SQL.Add(" group by XLXSCLHQ_BJCLID,XLXSCLHQ_JGYBJCLID1,XLXSBJCL_ZZSL");
SQL.Add(" ) a");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
}
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pBJRQ").Value = sBJRQ;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
else//报价单行情来源:1|价格表行情
{
SQL.Clear();
SQL.Add("insert into XLXSBJDCLHQ(XLXSBJDCLHQ_BJDID,XLXSBJDCLHQ_BJCLID,XLXSBJDCLHQ_WSJG,XLXSBJDCLHQ_HSJG,XLXSBJDCLHQ_WSJGF,XLXSBJDCLHQ_HSJGF,");
SQL.Add(" XLXSBJDCLHQ_JGYBJCLID1,XLXSBJDCLHQ_WSJG1,XLXSBJDCLHQ_HSJG1,XLXSBJDCLHQ_JGBL1, ");
SQL.Add(" XLXSBJDCLHQ_WHR,XLXSBJDCLHQ_WHRID,XLXSBJDCLHQ_WHSJ)");
SQL.Add(" select :pBJDID,bjdclhq.BJCLID,RoundFix(bjdclhq.XLXSCLHQ_WSJG," + sDecimal + "),RoundFix(bjdclhq.XLXSCLHQ_HSJG," + sDecimal + "),bjdclhq.XLXSCLHQ_WSJGF,bjdclhq.XLXSCLHQ_HSJGF,");
SQL.Add(" isnull(bjdclhq.XLXSCLHQ_JGYBJCLID1,' '),RoundFix(bjdclhq.XLXSCLHQ_WSJG1," + sDecimal + "),RoundFix(bjdclhq.XLXSCLHQ_HSJG1," + sDecimal + "),bjdclhq.XLXSCLHQ_JGBL1, ");
SQL.Add(" :pWHR,:pWHRID,:pWHSJ");
SQL.Add(" from ");
SQL.Add(" (");
//报价单报价日之材料行情
SQL.Add("select BJCLID,XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF, ");
SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_WSJG1,XLXSCLHQ_HSJG1,XLXSCLHQ_JGBL1 ");
SQL.Add(" from XLXSCLHQ,");
SQL.Add(" (");
SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,");
SQL.Add(" max(XLXSCLHQ_YXQS)as maxYXQS");
SQL.Add(" from XLXSCLHQ");
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID ");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ");
SQL.Add(" and (XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)");
SQL.Add(" and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' ");
//价格表行情分段材料、以及以价格表行情分段材料为加工原料的材料行情记录不插入
SQL.Add(" and not exists (select 1 from XLXSJGBCLHQFD where XLXSJGBCLHQFD_BJCLID = XLXSCLHQ_BJCLID and XLXSJGBCLHQFD_MXBH =:pMXBH and XLXSJGBCLHQFD_JGBID = :pJGBID) ");
SQL.Add(" and not exists ");
SQL.Add("( ");
SQL.Add("select 1 from XLXSBJCL d where d.XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID and d.XLXSBJCL_JGYBJCLID ");
SQL.Add(" in ( select XLXSJGBCLHQFD_BJCLID from XLXSJGBCLHQFD where XLXSJGBCLHQFD_MXBH=:pMXBH and XLXSJGBCLHQFD_JGBID=:pJGBID ) ");
SQL.Add(") ");
SQL.Add(" group by XLXSCLHQ_BJCLID");
SQL.Add(" ) x");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
//插入价格表行情分段材料的行情
SQL.Add(" union all ");
SQL.Add("select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF, ");
SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_WSJG1,XLXSCLHQ_HSJG1,XLXSCLHQ_JGBL1 ");
SQL.Add(" from XLXSCLHQ");
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID ");
SQL.Add(" where XLXSCLHQ_JGBID<>'ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_JGBID=:pJGBID");
SQL.Add(" and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' ");
SQL.Add(" and exists (select 1 from XLXSJGBCLHQFD where XLXSJGBCLHQFD_BJCLID = XLXSCLHQ_BJCLID and XLXSJGBCLHQFD_MXBH =:pMXBH and XLXSJGBCLHQFD_JGBID = :pJGBID) ");
SQL.Add(" ) bjdclhq ");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pBJRQ").Value = sBJRQ;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
SQL.ParamByName("pJGBID").Value = sJGBID;
SQL.ParamByName("pMXBH").Value = "JGB";
dberp.ExecSQL(SQL);
//插入以价格表行情分段材料为加工原料的材料加工费,并重算材料行情
SQL.Clear();
SQL.Add("insert into XLXSBJDCLHQ(XLXSBJDCLHQ_BJDID,XLXSBJDCLHQ_BJCLID,XLXSBJDCLHQ_HSJG,XLXSBJDCLHQ_WSJG,XLXSBJDCLHQ_HSJGF,XLXSBJDCLHQ_WSJGF,");
SQL.Add(" XLXSBJDCLHQ_JGYBJCLID1,XLXSBJDCLHQ_WSJG1,XLXSBJDCLHQ_HSJG1,XLXSBJDCLHQ_JGBL1, ");
SQL.Add(" XLXSBJDCLHQ_WHR,XLXSBJDCLHQ_WHRID,XLXSBJDCLHQ_WHSJ)");
SQL.Add(" select :pBJDID,XLXSBJCL_BJCLID as BJCLID,");
SQL.Add(" RoundFix(isnull(XLXSCLHQ_HSJG,0.0)*isnull(JGBL1,0.0)+isnull(HSJGF,0.0)," + sDecimal + ") as HSJG,RoundFix(isnull(XLXSCLHQ_WSJG,0.0)*isnull(JGBL1,0.0)+isnull(WSJGF,0.0)," + sDecimal + ") as CLJG,");
SQL.Add(" isnull(HSJGF,0.0) as HSJGF,isnull(WSJGF,0.0) as WSJGF,");
SQL.Add(" isnull(XLXSBJCL_JGYBJCLID,' ') as JGYBJCLID1,RoundFix(isnull(XLXSCLHQ_WSJG,0.0)," + sDecimal + ") as WSJG1,RoundFix(isnull(XLXSCLHQ_HSJG,0.0)," + sDecimal + ") as HSJG1,isnull(JGBL1,0.0) as JGBL1,");
SQL.Add(" :pWHR,:pWHRID,:pWHSJ");
SQL.Add(" from XLXSBJCL");
//取最新加工费
SQL.Add(" left join ");
SQL.Add(" (");
SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_HSJGF as HSJGF, XLXSCLHQ_WSJGF as WSJGF,XLXSCLHQ_JGBL1 as JGBL1 ");
SQL.Add(" from XLXSCLHQ, ");
SQL.Add(" (");
SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS) as maxYXQS ");
SQL.Add(" from XLXSCLHQ ");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' ");
SQL.Add(" and XLXSCLHQ_YXQS<=:pRQ ");
SQL.Add(" and (XLXSCLHQ_YXQZ is null or XLXSCLHQ_YXQZ>=:pRQ) ");
SQL.Add(" group by XLXSCLHQ_BJCLID ");
SQL.Add(" ) a ");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' ");
SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID ");
SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS ");
SQL.Add(" ) b on BJCLID=XLXSBJCL_BJCLID ");
//取加工原料行情
SQL.Add(" left join XLXSCLHQ on XLXSCLHQ_JGBID=:pJGBID and XLXSCLHQ_BJCLID=XLXSBJCL_JGYBJCLID ");
SQL.Add(" where isnull(XLXSBJCL_BJCLMC,' ')<>' ' and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' ");
SQL.Add(" and XLXSBJCL_JGYBJCLID in ( select XLXSJGBCLHQFD_BJCLID from XLXSJGBCLHQFD where XLXSJGBCLHQFD_MXBH=:pMXBH and XLXSJGBCLHQFD_JGBID=:pJGBID) ");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pRQ").Value = sBJRQ;
SQL.ParamByName("pJGBID").Value = sJGBID;
SQL.ParamByName("pMXBH").Value = "JGB";
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
//此处,直接利用上方插入的XLXSBJDCLHQ记录作为加工原料的价格
InsertXLXSBJDWLHQbyBJDCLHQ(dberp, SQL, sBJDID, sJGBID, sBJRQ, sWHR, sWHRID);
}
public static void InsertXLXSBJDCLHQ_WLHQ_WithJGBHQ(TDatabase dberp, TSQL SQL, string sBJDHQLY, string sBJDID, string sBJRQ, string sWHR, string sWHRID, string sJGBID)
{
string sDecimal = BJCLPriceDecimal.ToString().Trim();
SQL.Clear();
SQL.Add("delete from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID=:pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
if (sBJDHQLY.Equals("2"))//报价单行情来源:2|报价日行情
{
SQL.Clear();
SQL.Add("insert into XLXSBJDCLHQ(XLXSBJDCLHQ_BJDID,XLXSBJDCLHQ_BJCLID,XLXSBJDCLHQ_WSJG,XLXSBJDCLHQ_HSJG,XLXSBJDCLHQ_WSJGF,XLXSBJDCLHQ_HSJGF,");
SQL.Add(" XLXSBJDCLHQ_JGYBJCLID1,XLXSBJDCLHQ_WSJG1,XLXSBJDCLHQ_HSJG1,XLXSBJDCLHQ_JGBL1,");
SQL.Add(" XLXSBJDCLHQ_WHR,XLXSBJDCLHQ_WHRID,XLXSBJDCLHQ_WHSJ)");
SQL.Add(" select :pBJDID, BJCLID,RoundFix(XLXSCLHQ_WSJG," + sDecimal + ") as CLJG,RoundFix(XLXSCLHQ_HSJG," + sDecimal + ") as HSJG, ");
SQL.Add(" XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF,");
SQL.Add(" XLXSCLHQ_JGYBJCLID1,RoundFix(XLXSCLHQ_WSJG1," + sDecimal + ") as WSJG1,RoundFix(XLXSCLHQ_HSJG1," + sDecimal + ") as HSJG1,XLXSCLHQ_JGBL1,");
SQL.Add(" :pWHR,:pWHRID,:pWHSJ");
SQL.Add(" from XLXSCLHQ,");
SQL.Add(" (");
SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSBJCL_JGYBJCLID as JGYBJCLID,XLXSBJCL_ZZSL as ZZSL,");
SQL.Add(" max(XLXSCLHQ_YXQS) as maxYXQS");
SQL.Add(" from XLXSCLHQ");
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID");
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,XLXSBJCL_JGYBJCLID,XLXSBJCL_ZZSL");
SQL.Add(" ) a");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pBJRQ").Value = sBJRQ;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
else//报价单行情来源:1|价格表行情
{
SQL.Clear();
SQL.Add("insert into XLXSBJDCLHQ(XLXSBJDCLHQ_BJDID,XLXSBJDCLHQ_BJCLID,XLXSBJDCLHQ_WSJG,XLXSBJDCLHQ_HSJG,XLXSBJDCLHQ_WSJGF,XLXSBJDCLHQ_HSJGF,");
SQL.Add(" XLXSBJDCLHQ_JGYBJCLID1,XLXSBJDCLHQ_WSJG1,XLXSBJDCLHQ_HSJG1,XLXSBJDCLHQ_JGBL1,");
SQL.Add(" XLXSBJDCLHQ_WHR,XLXSBJDCLHQ_WHRID,XLXSBJDCLHQ_WHSJ)");
SQL.Add(" select :pBJDID,bjdclhq.BJCLID,RoundFix(bjdclhq.XLXSCLHQ_WSJG," + sDecimal + "),RoundFix(bjdclhq.XLXSCLHQ_HSJG," + sDecimal + "),bjdclhq.XLXSCLHQ_WSJGF,bjdclhq.XLXSCLHQ_HSJGF,");
SQL.Add(" bjdclhq.XLXSCLHQ_JGYBJCLID1,RoundFix(bjdclhq.XLXSCLHQ_WSJG1," + sDecimal + "),RoundFix(bjdclhq.XLXSCLHQ_HSJG1," + sDecimal + "),bjdclhq.XLXSCLHQ_JGBL1,");
SQL.Add(" :pWHR,:pWHRID,:pWHSJ");
SQL.Add(" from ");
SQL.Add(" (");
SQL.Add("select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF, ");
SQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_WSJG1,XLXSCLHQ_HSJG1,XLXSCLHQ_JGBL1");
SQL.Add(" from XLXSCLHQ");
SQL.Add(" where XLXSCLHQ_JGBID<>'ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_JGBID=:pJGBID");
SQL.Add(" ) bjdclhq ");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
}
//此处,直接利用上方插入的XLXSBJDCLHQ记录作为加工原料的价格
InsertXLXSBJDWLHQbyBJDCLHQ(dberp, SQL, sBJDID, sJGBID, sBJRQ, sWHR, sWHRID);
}
//直接利用XLXSBJDCLHQ记录作为加工原料的价格,存储加工物料的价格
public static void InsertXLXSBJDWLHQbyBJDCLHQ(TDatabase dberp, TSQL SQL, string sBJDID, string sJGBID, string sBJRQ, string sWHR, string sWHRID)
{
SQL.Clear();
SQL.Add("merge into XLXSBJDWLHQ ");
SQL.Add("using ");
SQL.Add("( ");
SQL.Add("select :pBJDID as BJDID,XLXSBJCLWL_WLID as WLID, ");
//SQL.Add("case when XLXSBJDCLHQ_BJCLID is null then isnull(XLXSWLHQ_WSJG,0) else isnull(XLXSBJDCLHQ_WSJG1*XLXSBJDCLHQ_JGBL1,0)+isnull(XLXSWLHQ_WSJGF,0) end as WSJG, ");
SQL.Add("case when XLXSBJDCLHQ_BJCLID is null then isnull(XLXSWLHQ_WSJG,0) else isnull(XLXSBJDCLHQ_WSJG*XLXSWLHQ_JGBL1,0)+isnull(XLXSWLHQ_WSJGF,0) end as WSJG, ");
//SQL.Add("case when XLXSBJDCLHQ_BJCLID is null then isnull(XLXSWLHQ_HSJG,0) else isnull(XLXSBJDCLHQ_HSJG1*XLXSBJDCLHQ_JGBL1,0)+isnull(XLXSWLHQ_HSJGF,0) end as HSJG, ");
SQL.Add("case when XLXSBJDCLHQ_BJCLID is null then isnull(XLXSWLHQ_HSJG,0) else isnull(XLXSBJDCLHQ_HSJG*XLXSWLHQ_JGBL1,0)+isnull(XLXSWLHQ_HSJGF,0) end as HSJG, ");
SQL.Add("isnull(XLXSWLHQ_WSJGF,0) as WSJGF,isnull(XLXSWLHQ_HSJGF,0) as HSJGF, ");
// SQL.Add("isnull(XLXSWLHQ_WSJG1,0) as WSJG1,isnull(XLXSWLHQ_HSJG1,0) as HSJG1,isnull(XLXSWLHQ_JGBL1,0) as JGBL1,isnull(XLXSWLHQ_JGYBJCLID1,' ') as JGYBJCLID1 ");
SQL.Add("isnull(XLXSBJDCLHQ_WSJG,0) as WSJG1,isnull(XLXSBJDCLHQ_HSJG,0) as HSJG1,isnull(XLXSWLHQ_JGBL1,0) as JGBL1,isnull(XLXSWLHQ_JGYBJCLID1,' ') as JGYBJCLID1 ");
SQL.Add("from XLXSBJCLWL ");
SQL.Add("left join ");
SQL.Add(" (select XLXSWLHQ_WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG,XLXSWLHQ_WSJGF,XLXSWLHQ_HSJGF,");
SQL.Add(" XLXSWLHQ_JGYBJCLID1,XLXSWLHQ_WSJG1,XLXSWLHQ_HSJG1,XLXSWLHQ_JGBL1 ");
if (HasJGBWLHQ(sJGBID))
{
SQL.Add(" from XLXSWLHQ");
SQL.Add(" where XLXSWLHQ_JGBID= :pJGBID ");
SQL.ParamByName("pJGBID").Value = sJGBID;
}
else
{
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<=:pBJRQ and(XLXSWLHQ_YXQZ>=:pBJRQ or XLXSWLHQ_YXQZ is null)");
SQL.Add(" group by XLXSWLHQ_WLID");
SQL.Add(" ) a ");
SQL.Add(" where XLXSWLHQ_JGBID=' ' ");
SQL.Add(" and XLXSWLHQ_WLID=WLID ");
SQL.Add(" and XLXSWLHQ_YXQS=maxYXQS ");
}
SQL.Add(" ) c on XLXSWLHQ_WLID=XLXSBJCLWL_WLID ");
SQL.Add("left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID ");
SQL.Add("left join XLXSBJDCLHQ on XLXSBJDCLHQ_BJDID=:pBJDID and XLXSBJDCLHQ_BJCLID=XLXSBJCL_JGYBJCLID ");
SQL.Add("where XLXSBJCL_BJHQ = '2' and isnull(XLXSBJCL_JGYBJCLID,' ') <> ' ' ");//只有存在加工原料的物料才记!
SQL.Add(") B on (XLXSBJDWLHQ_BJDID=B.BJDID and XLXSBJDWLHQ_WLID=B.WLID) ");
SQL.Add("when matched then ");
SQL.Add("update set XLXSBJDWLHQ_WSJG=B.WSJG-B.WSJGF+XLXSBJDWLHQ_WSJGF,XLXSBJDWLHQ_HSJG=B.HSJG-B.HSJGF+XLXSBJDWLHQ_HSJGF, ");
SQL.Add(" XLXSBJDWLHQ_WSJG1=B.WSJG1,XLXSBJDWLHQ_HSJG1=B.HSJG1,XLXSBJDWLHQ_JGBL1=B.JGBL1,");
SQL.Add(" XLXSBJDWLHQ_WHR=:pWHR,XLXSBJDWLHQ_WHRID=:pWHRID,XLXSBJDWLHQ_WHSJ=:pWHSJ,XLXSBJDWLHQ_JGYBJCLID1=B.JGYBJCLID1 ");
SQL.Add("when not matched then ");
SQL.Add("insert (XLXSBJDWLHQ_BJDID,XLXSBJDWLHQ_WLID,XLXSBJDWLHQ_WSJG,XLXSBJDWLHQ_HSJG,XLXSBJDWLHQ_WSJGF,XLXSBJDWLHQ_HSJGF,");
SQL.Add("XLXSBJDWLHQ_JGYBJCLID1,XLXSBJDWLHQ_WSJG1,XLXSBJDWLHQ_HSJG1,XLXSBJDWLHQ_JGBL1,");
SQL.Add("XLXSBJDWLHQ_WHR,XLXSBJDWLHQ_WHRID,XLXSBJDWLHQ_WHSJ) ");
SQL.Add("values (B.BJDID,B.WLID,B.WSJG,B.HSJG,B.WSJGF,B.HSJGF,");
SQL.Add("B.JGYBJCLID1,B.WSJG1,B.HSJG1,B.JGBL1,");
SQL.Add(":pWHR,:pWHRID,:pWHSJ) ");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pBJRQ").Value = sBJRQ;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
//判断价格表是否记录物料行情
public static bool HasJGBWLHQ(string sJGBID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSJGB_JJLY from XLXSJGB where XLXSJGB_JGBID = :pJGBID ");
SQL.ParamByName("pJGBID").Value = sJGBID.Trim();
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
if (XLJGB_CLJGTZList.NeedJGBJJFP() && ds.Tables[0].Rows[0]["XLXSJGB_JJLY"].ToString().Trim().Equals("A"))
return true;
}
return false;
}
//------根据报价分类获取因子列
//构建报价单因子字符串,供后续直接使用而不再查询,返回格式:BJ01|开票(JD),BJ02|ZR(阻燃)(JD),BJ10|其它()
public static Dictionary<string, string> GetBJDYZ(string sBJFLID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSTZYZ_YZID,XLXSTZYZ_YZMC,isnull(XLXSTZYZ_YZZBT,'N') as BTYZ,isnull(XLXSTZYZ_XSYZJE,'N') as XSJE,isnull(XLXSTZYZ_BJSDTZFSYZZ,'N') as FSYZ, ");//SQL语句自测:刘青棚 2025/04/01 23:30:00
if (!sBJFLID.Trim().Equals(""))
SQL.Add(" case when XLXSBJFLYZ_YZID is null then 'N' else 'Y' end as SY,");
else
SQL.Add(" 'Y' as SY,");
SQL.Add(" XLXSTZYZ_JJFS,XLXSTZYZ_TJYS,XLXSTZYZ_BCYTJ,XLXSTZYZ_WPIDLIST,XLXSTZYZ_ZDWPIDLIST,XLXSTZYZ_HCBZ,XLXSTZYZ_YZZZD,XLXSTZYZ_TJMDID ");
SQL.Add(" from XLXSTZYZ ");
if (!sBJFLID.Trim().Equals(""))
SQL.Add(" left join XLXSBJFLYZ on XLXSBJFLYZ_BJFLID=:pBJFLID and XLXSBJFLYZ_YZID=XLXSTZYZ_YZID");
SQL.Add(" where XLXSTZYZ_MXBH = 'BJD' ");
SQL.Add(" order by XLXSTZYZ_XSXH,XLXSTZYZ_YZID");
if (!sBJFLID.Trim().Equals(""))
SQL.ParamByName("pBJFLID").Value = sBJFLID.Trim();
DataSet ds = dberp.OpenDataSet(SQL);
string sBJDYZ = "";
string sTJYSList = "";
string sYZWPIDList = "";
string sZDWPIDList = "";
string sHCYZIDList = "";
string sHCYZMCList = "";
string sReadOnlyYZ = "";
string sPFYZ = "";
string sBZPFYZ = "";
string sCPWJPF = "";
string sBTYZ = "";
string sXSJEYZ = "";
string sFSYZID = "";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sJJFS = "";
if (ds.Tables[0].Rows[i]["SY"].ToString().Trim().Equals("Y"))
{
if (!ds.Tables[0].Rows[i]["XLXSTZYZ_BCYTJ"].ToString().Trim().Equals("Y"))
{
sJJFS = ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
}
else
{
sJJFS = "XX";
}
}
sBJDYZ += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + "|" + ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim() + "(" + sJJFS + "),";
//构建 报价分类使用到的调价因素
if (ds.Tables[0].Rows[i]["SY"].ToString().Trim().Equals("Y"))
{
string sTJYS = ds.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim();
string sTJMDID = ds.Tables[0].Rows[i]["XLXSTZYZ_TJMDID"].ToString().Trim();
if (sTJMDID.Equals("100860124"))
{
if (sTJYSList.Equals(""))
sTJYSList = ",BZPF,";
else
{
if (!sTJYSList.Contains(",BZPF,"))
sTJYSList = sTJYSList + "BZPF,";
}
}
else if (sTJMDID.Equals("100860162"))
{
if (sTJYSList.Equals(""))
sTJYSList = ",CPWJPF,";
else
{
if (!sTJYSList.Contains(",CPWJPF,"))
sTJYSList = sTJYSList + "CPWJPF,";
}
}
else
{
if (sTJYS.Equals(""))
sTJYS = "空";
if (sTJYSList.Equals(""))
sTJYSList = "," + sTJYS + ",";
else
{
if (!sTJYSList.Contains("," + sTJYS + ","))
sTJYSList = sTJYSList + sTJYS + ",";
}
}
}
//sYZWPIDList格式:BJ01|0010,0020;BJ02|0020
if (!ds.Tables[0].Rows[i]["XLXSTZYZ_WPIDLIST"].ToString().Trim().Equals(""))
{
sYZWPIDList += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + "|" + ds.Tables[0].Rows[i]["XLXSTZYZ_WPIDLIST"].ToString().Trim() + ";";
}
if (!ds.Tables[0].Rows[i]["XLXSTZYZ_ZDWPIDLIST"].ToString().Trim().Equals(""))
{
sZDWPIDList += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + "|" + ds.Tables[0].Rows[i]["XLXSTZYZ_ZDWPIDLIST"].ToString().Trim() + ";";
}
//只存 互斥 且 使用 且 参与调价
if (ds.Tables[0].Rows[i]["SY"].ToString().Trim().Equals("Y")
&& ds.Tables[0].Rows[i]["XLXSTZYZ_HCBZ"].ToString().Trim().Equals("Y")
&& ds.Tables[0].Rows[i]["XLXSTZYZ_BCYTJ"].ToString().Trim().Equals("N"))
{
sHCYZIDList += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + ";";
sHCYZMCList += ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim() + "、";
}
sReadOnlyYZ += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + "|" + ds.Tables[0].Rows[i]["XLXSTZYZ_YZZZD"].ToString().Trim() + ",";
//盘费因子
if (ds.Tables[0].Rows[i]["XLXSTZYZ_TJMDID"].ToString().Trim().Equals("100860080"))
{
sPFYZ += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + ",";
}
//包装方式
if (ds.Tables[0].Rows[i]["XLXSTZYZ_TJMDID"].ToString().Trim().Equals("100860124"))
{
sBZPFYZ += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + ",";
}
//产品外径盘费
if (ds.Tables[0].Rows[i]["XLXSTZYZ_TJMDID"].ToString().Trim().Equals("100860162"))
{
sCPWJPF += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + ",";
}
//必填因子
if (ds.Tables[0].Rows[i]["BTYZ"].ToString().Trim().Equals("Y") && ds.Tables[0].Rows[i]["SY"].ToString().Trim().Equals("Y"))
{
sBTYZ += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + ",";
}
//显示金额因子
if (ds.Tables[0].Rows[i]["XSJE"].ToString().Trim().Equals("Y"))
{
sXSJEYZ += ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim() + ",";
}
//反算因子因子
if (ds.Tables[0].Rows[i]["FSYZ"].ToString().Trim().Equals("Y") && ds.Tables[0].Rows[i]["SY"].ToString().Trim().Equals("Y"))
{
sFSYZID = ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim();
}
}
Dictionary<string, string> dicBJDYZ = new Dictionary<string, string>();
dicBJDYZ.Add("BJDYZ", sBJDYZ.TrimEnd(','));
dicBJDYZ.Add("TJYSList", sTJYSList);
dicBJDYZ.Add("YZWPIDList", sYZWPIDList.TrimEnd(';'));
dicBJDYZ.Add("ZDWPIDList", sZDWPIDList.TrimEnd(';'));
dicBJDYZ.Add("HCYZIDList", sHCYZIDList.TrimEnd(';'));
dicBJDYZ.Add("HCYZMCList", sHCYZMCList.TrimEnd('、'));
dicBJDYZ.Add("ReadOnlyYZ", sReadOnlyYZ.TrimEnd(','));
dicBJDYZ.Add("PFYZ", sPFYZ.TrimEnd(','));
dicBJDYZ.Add("BZPFYZ", sBZPFYZ.TrimEnd(','));
dicBJDYZ.Add("CPWJPF", sCPWJPF.TrimEnd(','));
dicBJDYZ.Add("BTYZ", sBTYZ.TrimEnd(','));
dicBJDYZ.Add("XSJEYZ", sXSJEYZ.TrimEnd(','));
dicBJDYZ.Add("FSYZ", sFSYZID);
return dicBJDYZ;
}
/// <summary>
/// 根据角色获取隐藏栏目
/// </summary>
/// <param name="sBJFLID"></param>
/// <param name="sJSLX"></param>
/// <returns></returns>
public static string GetHidJSLMList(string sBJFLID, bool bXJY, bool bSJY, bool bHJY)
{
string sResult = "";
List<BJFLJSLMXX> bjfljslm_list = GetBJFLJSLMXX(sBJFLID);
foreach (BJFLJSLMXX jslmxx in bjfljslm_list)
{
if (("," + sResult).Contains("," + jslmxx.XLXSBJFLJSLM_LMID))
continue;
if (jslmxx.XLXSBJFLJSLM_YCBZ == "Y")
{
if (bXJY || bSJY || bHJY)
{
if (bXJY && jslmxx.XLXSBJFLJSLM_JSLX == "X")
{
sResult += jslmxx.XLXSBJFLJSLM_LMID + ",";
}
if (bSJY && jslmxx.XLXSBJFLJSLM_JSLX == "S")
{
sResult += jslmxx.XLXSBJFLJSLM_LMID + ",";
}
if (bHJY && jslmxx.XLXSBJFLJSLM_JSLX == "H")
{
sResult += jslmxx.XLXSBJFLJSLM_LMID + ",";
}
}
else if (jslmxx.XLXSBJFLJSLM_JSLX == "Q")
{
sResult += jslmxx.XLXSBJFLJSLM_LMID + ",";
}
}
}
sResult = sResult.TrimEnd(',');
return sResult;
}
//构建报价分类对应产品目录的行情分段材料、及其报价日行情
public static Dictionary<string, double> GetCPMLBJCL_BJRCLHQ(string sBJFLID, string sBJRQ)
{
Dictionary<string, double> dicCPML_BJRCLHQ = new Dictionary<string, double>();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSJGBPZ_BJCLIDS");
SQL.Add(" from XLXSJGBPZ");
SQL.Add(" left join XLXSBJFL on XLXSBJFL_CPMLID=XLXSJGBPZ_CPMLID");
SQL.Add(" where XLXSBJFL_BJFLID=:pBJFLID");
SQL.Add(" and isnull(XLXSBJFL_SDJGBCLHQFW,' ')='Y'");//锁定价格表材料行情范围
SQL.ParamByName("pBJFLID").Value = sBJFLID.Trim();
DataSet dsML = dberp.OpenDataSet(SQL);
if (dsML.Tables[0].Rows.Count > 0)
{
string sBJCLIDS = dsML.Tables[0].Rows[0]["XLXSJGBPZ_BJCLIDS"].ToString().Trim();
if (!sBJCLIDS.Equals(""))
{
SQL.Clear();
SQL.Add("select XLXSCLHQ_BJCLID,XLXSCLHQ_HSJG,XLXSCLHQ_WSJG");
SQL.Add(" from XLXSCLHQ,");
SQL.Add(" (select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS) as maxYXQS");
SQL.Add(" from XLXSCLHQ");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
SQL.Add(" and XLXSCLHQ_YXQS<=:pRQ and (XLXSCLHQ_YXQZ is null or XLXSCLHQ_YXQZ>=:pRQ)");
SQL.Add(" group by XLXSCLHQ_BJCLID");
SQL.Add(" ) a");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' and XLXSCLHQ_BJCLID=BJCLID and XLXSCLHQ_YXQS=maxYXQS");
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSCLHQ_BJCLID", sBJCLIDS));
SQL.Add(" order by XLXSCLHQ_BJCLID");
SQL.ParamByName("pRQ").Value = sBJRQ;
DataSet ds = dberp.OpenDataSet(SQL);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//这里仅去含税价格取与价格表行情范围比较
dicCPML_BJRCLHQ.Add(ds.Tables[0].Rows[i]["XLXSCLHQ_BJCLID"].ToString().Trim(), CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSCLHQ_HSJG"].ToString().Trim()));
}
}
}
return dicCPML_BJRCLHQ;
}
//获取报价分类对应产品目录的材料
public static string GetCPMLBJCL(string sBJFLID)
{
string ReStr = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSJGBPZ_BJCLIDS");
SQL.Add(" from XLXSJGBPZ");
SQL.Add(" left join XLXSBJFL on XLXSBJFL_CPMLID=XLXSJGBPZ_CPMLID");
SQL.Add(" where XLXSBJFL_BJFLID=:pBJFLID");
SQL.ParamByName("pBJFLID").Value = sBJFLID.Trim();
DataSet dsML = dberp.OpenDataSet(SQL);
if (dsML.Tables[0].Rows.Count > 0)
{
ReStr = dsML.Tables[0].Rows[0]["XLXSJGBPZ_BJCLIDS"].ToString().Trim();
}
return ReStr;
}
public static void UpdateZDXJGS(string sBJDID, string sBJFLID, string sBJU002)
{
UpdateZDXJGS(sBJDID, sBJFLID, sBJU002, "", 0);
}
//根据报价分类的最低限价公式批量再逐行计算XLXSBJDMX_ZDXJ(最低限价)字段
public static void UpdateZDXJGS(string sBJDID, string sBJFLID, string sBJU002, string sBJDXHList, int minBJDXH)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJDXHList, minBJDXH);
}
public static void UpdateZDXJGS(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sBJU002, string sBJDXHList, int minBJDXH)
{
UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJDXHList, minBJDXH, false, false, false, false, "");
}
public static void UpdateZDXJGS(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sBJU002, string sBJDXHList, int minBJDXH, bool bYBJ, bool bWBJ, bool bWG, bool bFWG, string sTLcpList)
{
UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJDXHList, minBJDXH, bYBJ, bWBJ, bWG, bFWG, sTLcpList, DateTime.MinValue);
}
public static void UpdateZDXJGS(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sBJU002, string sBJDXHList, int minBJDXH, bool bYBJ, bool bWBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition)
{
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
if (iXSWS < 0)
{
iXSWS = 0;
}
else if (iXSWS > 8)
{
iXSWS = 8;
}
string sZDXJGS = "";
string sZDXJJCLLX = "";
string sMXBH = "";
SQL.Clear();
SQL.Add(" SELECT XLXSBJFL_ZDXJGS,XLXSBJFL_BJDHQLY,XLXSBJFL_ZDXJJCLLX,XLXSBJFL_MXBH FROM XLXSBJFL where XLXSBJFL_BJFLID = :pXLXSBJFL_BJFLID");
SQL.ParamByName("pXLXSBJFL_BJFLID").Value = sBJFLID;
DataSet dsBJFLID = dberp.OpenDataSet(SQL);
if (dsBJFLID.Tables[0].Rows.Count > 0)
{
sZDXJGS = dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_ZDXJGS"].ToString().Trim();
sZDXJJCLLX = dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_ZDXJJCLLX"].ToString().Trim();
sMXBH = dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_MXBH"].ToString().Trim();
//将数据都处理为0-防止编辑存在部分计算公式出错
SQL.Clear();
SQL.Add(" update XLXSBJDMX set XLXSBJDMX_ZDXJ = 0.0 where XLXSBJDMX_BJDID=:pBJDID and isnull(XLXSBJDMX_ZDXJBJDID,' ') = ' ' ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (bYBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
if (bWBJ)
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.Trim();
dberp.ExecSQL(SQL);
if (!sZDXJGS.Equals(""))
{
sZDXJGS = sZDXJGS.Replace("CLCB", "XXX01").Replace("JGBJJ", "XXX02").Replace("JGBBJ", "XXX03").Replace("CPBJ", "XXX04").Replace("BJDHQCB", "XXX05");
sZDXJGS = sZDXJGS.Replace("BJ", "tar.XLXSBJDYZZ0_YZZ");
if (sMXBH.Equals("JGE"))
{
sZDXJGS = sZDXJGS.Replace("JZ", "tar.XLXSBJDJJYZ_YZZ");
}
if (dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim().Equals("1"))
{
sZDXJGS = sZDXJGS.Replace("XXX01", "sor.XLXSBJDMX_CLCB");
}
else
{
sZDXJGS = sZDXJGS.Replace("XXX01", "sor.XLXSBJDMX_BJDHQCLCB");
}
sZDXJGS = sZDXJGS.Replace("XXX02", "sor.XLXSBJDMX_JGBJJ");
sZDXJGS = sZDXJGS.Replace("XXX03", "sor.XLXSBJDMX_JGBBJ");
sZDXJGS = sZDXJGS.Replace("XXX04", "sor.XLXSBJDMX_CPBJ");
sZDXJGS = sZDXJGS.Replace("XXX05", "sor.XLXSBJDMX_BJDHQCLCB");
sZDXJGS = sZDXJGS.Replace(" ", "").Replace("×", "*").Replace("100", "100.00");
sZDXJGS = sZDXJGS.Replace("round", "roundFix");
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX sor ");
SQL.Add(" using (");
SQL.Add(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_CLCB, XLXSBJDMX_JGBJJ, XLXSBJDMX_JGBBJ, ");
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 ");
if (sMXBH.Equals("JGE"))
{
string sYZZFields_1 = "";
for (int i = 1; i <= 20; i++)
{
sYZZFields_1 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : "");
}
SQL.Add(" ," + sYZZFields_1);
}
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID = XLXSBJDMX_BJDID and XLXSBJDYZZ0_XH = XLXSBJDMX_XH ");
if (sMXBH.Equals("JGE"))
SQL.Add(" left join XLXSBJDJJYZ on XLXSBJDJJYZ_BJDID = XLXSBJDMX_BJDID and XLXSBJDJJYZ_XH = XLXSBJDMX_XH ");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (bYBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
if (bWBJ)
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 isnull(sor.XLXSBJDMX_ZDXJBJDID,' ') = ' ' ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("sor.XLXSBJDMX_XH", sBJDXHList));
}
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 (bWBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ=0.0");
if (bWG)
SQL.Add(" and isnull(sor.XLXSBJDMX_WGCPBZ,' ')='Y'");
if (bFWG)
SQL.Add(" and isnull(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 XLXSBJDMX_TZQZDXJ = RoundFix( ");
SQL.Add(sZDXJGS);
SQL.Add(" , 8)");
SQL.Add(" ,XLXSBJDMX_ZDXJ=RoundFix(RoundFix(");
SQL.Add(sZDXJGS);
SQL.Add(",8) *(1+XLXSBJDMX_TZZDXJ/100)," + iXSWS + ")");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
string SS = SQL.Text;
try
{
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
int iZDXJXSWS = CMISproConvert.StrToInt(tSession.GetOption(100860000, "BJU054"));
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX sor ");
SQL.Add(" using (");
SQL.Add(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH, ");
if (sZDXJJCLLX.Equals("1"))
SQL.Add(string.Format(" case XLXSBJDMX_BJJE when 0 then 0 else 100- RoundFix(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ/XLXSBJDMX_BJJE,{0}) *100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else if (sZDXJJCLLX.Equals("2"))
SQL.Add(string.Format(" case (XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) when 0 then 0 else RoundFix(XLXSBJDMX_BJJE/(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ),{0}) *100 -100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else if (sZDXJJCLLX.Equals("3"))//SQL语句自测:刘青棚 2025/03/31 11:00:00
SQL.Add(string.Format(" case XLXSBJDMX_BJJE when 0 then 0 else RoundFix(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ/XLXSBJDMX_BJJE,{0}) *100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else if (sZDXJJCLLX.Equals("4"))
SQL.Add(string.Format(" case (XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) when 0 then 0 else 100 - RoundFix(XLXSBJDMX_BJDHQCLCB/XLXSBJDMX_ZDXJ,{0}) *100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else if (sZDXJJCLLX.Equals("5"))
SQL.Add(string.Format(" case (XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ*" + sCJXS.ToString() + ") when 0 then 0 else RoundFix(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ/(XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ*" + sCJXS.ToString() + "),{0}) *100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else
SQL.Add(" 0 as ZDXJJCL ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (bYBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
if (bWBJ)
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 ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("sor.XLXSBJDMX_XH", sBJDXHList));
}
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 (bWBJ)
SQL.Add(" and sor.XLXSBJDMX_JGBBJ=0.0");
if (bWG)
SQL.Add(" and isnull(sor.XLXSBJDMX_WGCPBZ,' ')='Y'");
if (bFWG)
SQL.Add(" and isnull(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 XLXSBJDMX_ZDXJJCL = tar.ZDXJJCL ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
dberp.ExecSQL(SQL);
}
catch
{
string sXH = "";
SQL.Clear();
SQL.Add(" select XLXSBJDMX_BJDID, XLXSBJDMX_XH from XLXSBJDMX where XLXSBJDMX_BJDID=:pBJDID ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (bYBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
if (bWBJ)
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(" order by XLXSBJDMX_XH ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
DataSet dsCalByLine = dberp.OpenDataSet(SQL);
if (dsCalByLine.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsCalByLine.Tables[0].Rows.Count; i++)
{
sXH = dsCalByLine.Tables[0].Rows[i]["XLXSBJDMX_XH"].ToString().Trim();
try
{
UpdateZDXJGSByLine(dberp, SQL, sBJDID, sZDXJGS, sZDXJJCLLX, iXSWS, sXH, sMXBH);
}
catch
{
}
}
}
}
}
UpdateYXJJCL(dberp, SQL, sBJDID, sBJFLID, sBJDXHList, minBJDXH, bYBJ, bWBJ, bWG, bFWG, sTLcpList, tWHSJCondition);
}
UpdateXLXSBJDJCXJ4(dberp, SQL, sBJDID);
}
//根据报价分类的最低限价公式逐行计算XLXSBJDMX_ZDXJ(最低限价)字段
private static void UpdateZDXJGSByLine(TDatabase dberp, TSQL SQL, string sBJDID, string sZDXJGS, string sZDXJJCLLX, int iXSWS, string sXHList, string sMXBH)
{
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX sor ");
SQL.Add(" using (");
SQL.Add(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_CLCB, XLXSBJDMX_JGBJJ, XLXSBJDMX_JGBBJ, ");
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 ");
if (sMXBH.Equals("JGE"))
{
string sYZZFields_2 = "";
for (int i = 1; i <= 20; i++)
{
sYZZFields_2 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : "");
}
SQL.Add(" ," + sYZZFields_2);
}
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID = XLXSBJDMX_BJDID and XLXSBJDYZZ0_XH = XLXSBJDMX_XH ");
if (sMXBH.Equals("JGE"))
SQL.Add(" left join XLXSBJDJJYZ on XLXSBJDJJYZ_BJDID = XLXSBJDMX_BJDID and XLXSBJDJJYZ_XH = XLXSBJDMX_XH ");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sXHList));
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 isnull(sor.XLXSBJDMX_ZDXJBJDID,' ')=' ' ");
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("sor.XLXSBJDMX_XH", sXHList));
SQL.Add(" ) ");
SQL.Add(" when matched then update set XLXSBJDMX_TZQZDXJ = RoundFix( ");
SQL.Add(sZDXJGS);
SQL.Add(" , 8)");
SQL.Add(" ,XLXSBJDMX_ZDXJ=RoundFix(RoundFix(");
SQL.Add(sZDXJGS);
SQL.Add(",8) *(1+XLXSBJDMX_TZZDXJ/100)," + iXSWS + ")");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
dberp.ExecSQL(SQL);
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
int iZDXJXSWS = CMISproConvert.StrToInt(tSession.GetOption(100860000, "BJU054"));
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX sor ");
SQL.Add(" using (");
SQL.Add(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH, ");
if (sZDXJJCLLX.Equals("1"))
SQL.Add(string.Format(" case XLXSBJDMX_BJJE when 0 then 0 else 100- RoundFix(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ/XLXSBJDMX_BJJE,{0}) *100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else if (sZDXJJCLLX.Equals("2"))
SQL.Add(string.Format(" case (XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) when 0 then 0 else RoundFix(XLXSBJDMX_BJJE/(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ),{0}) *100 -100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else if (sZDXJJCLLX.Equals("3"))//SQL语句自测:刘青棚 2025/03/11 11:00:00
SQL.Add(string.Format(" case XLXSBJDMX_BJJE when 0 then 0 else RoundFix(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ/XLXSBJDMX_BJJE,{0}) *100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else if (sZDXJJCLLX.Equals("4"))
SQL.Add(string.Format(" case (XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) when 0 then 0 else 100 - RoundFix(XLXSBJDMX_BJDHQCLCB/XLXSBJDMX_ZDXJ,{0}) *100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else if (sZDXJJCLLX.Equals("5"))
SQL.Add(string.Format(" case (XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ*" + sCJXS.ToString() + ") when 0 then 0 else RoundFix(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ/(XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ*" + sCJXS.ToString() + "),{0}) *100 end as ZDXJJCL ", (iZDXJXSWS + 2).ToString()));
else
SQL.Add(" 0 as ZDXJJCL ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sXHList));
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 " + CMISproDataBase.GetWhereEqual("sor.XLXSBJDMX_XH", sXHList));
SQL.Add(" ) ");
SQL.Add(" when matched then update set XLXSBJDMX_ZDXJJCL = tar.ZDXJJCL ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
dberp.ExecSQL(SQL);
}
public static void UpdateXLXSBJDJCXJ4(TDatabase dberp, TSQL SQL, string sBJDID)
{
if (GetXLXSBJPZXX(100860008).XLXSBJPZ_JLXJXXHZFS != "4")
return;
//获取配置信息
SQL.Clear();
SQL.Add("select XLXSBJD_BJFLID from XLXSBJD where XLXSBJD_BJDID=:pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count <= 0)
return;
string sBJFLID = ds.Tables[0].Rows[0][0].ToString().Trim();
BJFLXX flxx = GetBJFLXX(sBJFLID);
string sZDXJJCLLX = flxx.XLXSBJFL_ZDXJJCLLX;
//先删除XLXSBJDJCXJ4记录
SQL.Clear();
SQL.Add("delete from XLXSBJDJCXJ4 where XLXSBJDJCXJ4_BJDID=:pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
//查询小计信息插入
StringBuilder strSQL = new StringBuilder();
strSQL.AppendLine(" select 0 as px2,");
strSQL.AppendLine(" rtrim(isnull(a.XLXSCPML_CPMLID,' '))||'|'||rtrim(isnull(a.XLXSCPML_CPMLMC,' '))||'非外购(小计)' as HZFS, ");
strSQL.AppendLine(" sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) as XLXSBJDMX_ZDXJZJE, ");
if (sZDXJJCLLX.Equals("1"))
{
strSQL.AppendLine(" (select case sum(XLXSBJDMX_BJJE) when 0 then 0 else 100-RoundFix(sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ)/sum(XLXSBJDMX_BJJE),4) *100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCA on XHMLCA.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCA.XLXSBJXHML_DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCB on XHMLCB.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCB.XLXSBJXHML_DYDJID = ' ' ");
strSQL.AppendLine(" left join XLXSCPML c on XLXSCPML_CPMLID = case when ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') = ' ' then ISNULL(XHMLCB.XLXSBJXHML_CPMLID,' ') else ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') end ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 and ISNULL(a.XLXSCPML_CPMLID,' ') = ISNULL(c.XLXSCPML_CPMLID,' ') ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ<>'Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else if (sZDXJJCLLX.Equals("2"))
{
strSQL.AppendLine(" (select case sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) when 0 then 0 else RoundFix(sum(XLXSBJDMX_BJJE)/sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ),4) *100 -100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCA on XHMLCA.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCA.XLXSBJXHML_DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCB on XHMLCB.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCB.XLXSBJXHML_DYDJID = ' ' ");
strSQL.AppendLine(" left join XLXSCPML c on XLXSCPML_CPMLID = case when ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') = ' ' then ISNULL(XHMLCB.XLXSBJXHML_CPMLID,' ') else ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') end ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 and ISNULL(a.XLXSCPML_CPMLID,' ') = ISNULL(c.XLXSCPML_CPMLID,' ') ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ<>'Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else if (sZDXJJCLLX.Equals("3"))//SQL语句自测:刘青棚 2025/03/11 11:00:00
{
strSQL.AppendLine(" (select case sum(XLXSBJDMX_BJJE) when 0 then 0 else RoundFix(sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ)/sum(XLXSBJDMX_BJJE),4) *100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCA on XHMLCA.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCA.XLXSBJXHML_DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCB on XHMLCB.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCB.XLXSBJXHML_DYDJID = ' ' ");
strSQL.AppendLine(" left join XLXSCPML c on XLXSCPML_CPMLID = case when ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') = ' ' then ISNULL(XHMLCB.XLXSBJXHML_CPMLID,' ') else ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') end ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 and ISNULL(a.XLXSCPML_CPMLID,' ') = ISNULL(c.XLXSCPML_CPMLID,' ') ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ<>'Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else if (sZDXJJCLLX.Equals("4"))
{
strSQL.AppendLine(" (select case sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) when 0 then 0 else 100 - RoundFix(sum(XLXSBJDMX_BJSL*XLXSBJDMX_BJDHQCLCB)/sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ),4) *100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCA on XHMLCA.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCA.XLXSBJXHML_DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCB on XHMLCB.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCB.XLXSBJXHML_DYDJID = ' ' ");
strSQL.AppendLine(" left join XLXSCPML c on XLXSCPML_CPMLID = case when ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') = ' ' then ISNULL(XHMLCB.XLXSBJXHML_CPMLID,' ') else ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') end ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 and ISNULL(a.XLXSCPML_CPMLID,' ') = ISNULL(c.XLXSCPML_CPMLID,' ') ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ<>'Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else if (sZDXJJCLLX.Equals("5"))
{
strSQL.AppendLine(" (select case sum(XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ*" + sCJXS.ToString() + ") when 0 then 0 else RoundFix(sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ)/(sum(XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ*" + sCJXS.ToString() + ")),4) *100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCA on XHMLCA.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCA.XLXSBJXHML_DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLCB on XHMLCB.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLCB.XLXSBJXHML_DYDJID = ' ' ");
strSQL.AppendLine(" left join XLXSCPML c on XLXSCPML_CPMLID = case when ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') = ' ' then ISNULL(XHMLCB.XLXSBJXHML_CPMLID,' ') else ISNULL(XHMLCA.XLXSBJXHML_CPMLID,' ') end ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 and ISNULL(a.XLXSCPML_CPMLID,' ') = ISNULL(c.XLXSCPML_CPMLID,' ') ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ<>'Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else
strSQL.AppendLine(" 0 as XLXSBJDMX_ZDXJJCL ");
strSQL.AppendLine(" from XLXSBJDMX ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLAA on XHMLAA.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLAA.XLXSBJXHML_DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
strSQL.AppendLine(" left join XLXSBJXHML XHMLAB on XHMLAB.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLAB.XLXSBJXHML_DYDJID = ' ' ");
strSQL.AppendLine(" left join XLXSCPML a on XLXSCPML_CPMLID = case when ISNULL(XHMLAA.XLXSBJXHML_CPMLID,' ') = ' ' then ISNULL(XHMLAB.XLXSBJXHML_CPMLID,' ') else ISNULL(XHMLAA.XLXSBJXHML_CPMLID,' ') end ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ<>'Y' ");
strSQL.AppendLine(" group by a.XLXSCPML_CPMLID,a.XLXSCPML_CPMLMC ");
strSQL.AppendLine(" union all ");
strSQL.AppendLine(" select 1 as px2,'外购(小计)' as HZFS, ");
strSQL.AppendLine(" sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) as XLXSBJDMX_ZDXJZJE, ");
if (sZDXJJCLLX.Equals("1"))
{
strSQL.AppendLine(" (select case sum(XLXSBJDMX_BJJE) when 0 then 0 else 100-RoundFix(sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ)/sum(XLXSBJDMX_BJJE),4) *100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ='Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else if (sZDXJJCLLX.Equals("2"))
{
strSQL.AppendLine(" (select case sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) when 0 then 0 else RoundFix(sum(XLXSBJDMX_BJJE)/sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ),4) *100 -100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ='Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else if (sZDXJJCLLX.Equals("3"))//SQL语句自测:刘青棚 2025/03/31 11:00:00
{
strSQL.AppendLine(" (select case sum(XLXSBJDMX_BJJE) when 0 then 0 else RoundFix(sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ)/sum(XLXSBJDMX_BJJE),4) *100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ='Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else if (sZDXJJCLLX.Equals("4"))
{
strSQL.AppendLine(" (selec case sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ) when 0 then 0 else 100 - RoundFix(sum(XLXSBJDMX_BJSL*XLXSBJDMX_BJDHQCLCB)/sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ),4) *100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ='Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else if (sZDXJJCLLX.Equals("5"))
{
strSQL.AppendLine(" (select case sum(XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ*" + sCJXS.ToString() + ") when 0 then 0 else RoundFix(sum(XLXSBJDMX_BJSL*XLXSBJDMX_ZDXJ)/(sum(XLXSBJDMX_BJSL*XLXSBJDMX_JGBBJ*" + sCJXS.ToString() + ")),4) *100 end as XLXSBJDMX_ZDXJJCL from XLXSBJDMX ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID and XLXSBJDMX_BJJE <> 0 ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ='Y' ");
strSQL.AppendLine(" ) as XLXSBJDMX_ZDXJJCL ");
}
else
strSQL.AppendLine(" 0 as XLXSBJDMX_ZDXJJCL ");
strSQL.AppendLine(" from XLXSBJDMX ");
strSQL.AppendLine(" where XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID ");
strSQL.AppendLine(" and XLXSBJDMX_WGCPBZ='Y' ");
strSQL.AppendLine(" group by XLXSBJDMX_BJDID");
strSQL.AppendLine(" order by px2,HZFS ");
SQL.Clear();
SQL.Add(strSQL.ToString());
SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID;
ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
string sZDXJJEHZ = "''";
string sZDXJJCLHZ = "''";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sHZFS = ds.Tables[0].Rows[i]["HZFS"].ToString().Trim();
string sZDXJJE = NumberUtils.RoundX(CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDMX_ZDXJZJE"].ToString().Trim()), 2).ToString();
string sZDXJJCL = NumberUtils.RoundX(CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDMX_ZDXJJCL"].ToString().Trim()), 2).ToString();
sZDXJJEHZ += "||'" + sHZFS + ":" + sZDXJJE + "元'||char(13)||char(10)";
sZDXJJCLHZ += "||'" + sHZFS + ":" + sZDXJJCL + "%'||char(13)||char(10)";
}
SQL.Clear();
SQL.Add("insert into XLXSBJDJCXJ4(XLXSBJDJCXJ4_BJDID,XLXSBJDJCXJ4_ZDXJJEXJ,XLXSBJDJCXJ4_ZDXJJCLXJ) ");
SQL.Add(" values(:pBJDID," + sZDXJJEHZ + "," + sZDXJJCLHZ + ")");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
}
public static void UpdateJSJGS(string sBJDID, string sBJFLID, string sBJU002)
{
UpdateJSJGS(sBJDID, sBJFLID, sBJU002, "", 0);
}
public static void UpdateJSJGS(string sBJDID, string sBJFLID, string sBJU002, string sBJDXHList, int minBJDXH)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJDXHList, minBJDXH);
}
public static void UpdateJSJGS(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sBJU002, string sBJDXHList, int minBJDXH)
{
UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJDXHList, minBJDXH, false, false, false, false, "");
}
public static void UpdateJSJGS(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sBJU002, string sBJDXHList, int minBJDXH, bool bYBJ, bool bWBJ, bool bWG, bool bFWG, string sTLcpList)
{
UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, sBJDXHList, minBJDXH, bYBJ, bWBJ, bWG, bFWG, sTLcpList, DateTime.MinValue);
}
public static void UpdateJSJGS(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sBJU002, string sBJDXHList, int minBJDXH, bool bYBJ, bool bWBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition)
{
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
if (iXSWS < 0)
{
iXSWS = 0;
}
else if (iXSWS > 8)
{
iXSWS = 8;
}
string sJSJGS = "";
string sMXBH = "";
SQL.Clear();
SQL.Add(" SELECT XLXSBJFL_JSJGS,XLXSBJFL_BJDHQLY,XLXSBJFL_MXBH,XLXSBJFL_JSJXSWS FROM XLXSBJFL where XLXSBJFL_BJFLID = :pXLXSBJFL_BJFLID");
SQL.ParamByName("pXLXSBJFL_BJFLID").Value = sBJFLID;
DataSet dsBJFLID = dberp.OpenDataSet(SQL);
if (dsBJFLID.Tables[0].Rows.Count > 0)
{
int iJSJXSWS = CMISproConvert.StrToInt(dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_JSJXSWS"].ToString().Trim());
if (iJSJXSWS != 0)
iXSWS = iJSJXSWS;
sJSJGS = dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_JSJGS"].ToString().Trim();
sMXBH = dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_MXBH"].ToString().Trim();
//将数据都处理为0-防止编辑存在部分计算公式出错
SQL.Clear();
SQL.Add(" update XLXSBJDMX set XLXSBJDMX_JSJG = 0.0 where XLXSBJDMX_BJDID=:pBJDID ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (bYBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
if (bWBJ)
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.Trim();
dberp.ExecSQL(SQL);
if (!sJSJGS.Equals(""))
{
sJSJGS = sJSJGS.Replace("CLCB", "XXX01").Replace("JGBJJ", "XXX02").Replace("JGBBJ", "XXX03").Replace("CPBJ", "XXX04").Replace("ZDXJ", "XXX05").Replace("BJDHQCB", "XXX06");
sJSJGS = sJSJGS.Replace("BJ", "tar.XLXSBJDYZZ0_YZZ");
if (sMXBH.Equals("JGE"))
{
sJSJGS = sJSJGS.Replace("JZ", "tar.XLXSBJDJJYZ_YZZ");
}
if (dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim().Equals("1"))
{
sJSJGS = sJSJGS.Replace("XXX01", "sor.XLXSBJDMX_CLCB");
}
else
{
sJSJGS = sJSJGS.Replace("XXX01", "sor.XLXSBJDMX_BJDHQCLCB");
}
sJSJGS = sJSJGS.Replace("XXX02", "sor.XLXSBJDMX_JGBJJ");
sJSJGS = sJSJGS.Replace("XXX03", "sor.XLXSBJDMX_JGBBJ");
sJSJGS = sJSJGS.Replace("XXX04", "sor.XLXSBJDMX_CPBJ");
sJSJGS = sJSJGS.Replace("XXX05", "sor.XLXSBJDMX_ZDXJ");
sJSJGS = sJSJGS.Replace("XXX06", "sor.XLXSBJDMX_BJDHQCLCB");
sJSJGS = sJSJGS.Replace(" ", "").Replace("×", "*").Replace("100", "100.00");
sJSJGS = sJSJGS.Replace("round", "roundFix");
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX sor ");
SQL.Add(" using (");
SQL.Add(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_CLCB, XLXSBJDMX_JGBJJ, XLXSBJDMX_JGBBJ, ");
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 ");
if (sMXBH.Equals("JGE"))
{
string sYZZFields_3 = "";
for (int i = 1; i <= 20; i++)
{
sYZZFields_3 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : "");
}
SQL.Add(" ," + sYZZFields_3);
}
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID = XLXSBJDMX_BJDID and XLXSBJDYZZ0_XH = XLXSBJDMX_XH ");
if (sMXBH.Equals("JGE"))
SQL.Add(" left join XLXSBJDJJYZ on XLXSBJDJJYZ_BJDID = XLXSBJDMX_BJDID and XLXSBJDJJYZ_XH = XLXSBJDMX_XH ");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (bYBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
if (bWBJ)
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 isnull(sor.XLXSBJDMX_ZDXJBJDID,' ') = ' ' ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("sor.XLXSBJDMX_XH", sBJDXHList));
}
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 (bWBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ=0.0");
if (bWG)
SQL.Add(" and isnull(sor.XLXSBJDMX_WGCPBZ,' ')='Y'");
if (bFWG)
SQL.Add(" and isnull(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 XLXSBJDMX_JSJG= RoundFix( ");
SQL.Add(sJSJGS);
SQL.Add(" ,"+iXSWS.ToString()+" )");
string sJSJJE = "RoundFix( RoundFix(" + sJSJGS + "," + iXSWS.ToString() + ")*XLXSBJDMX_BJSL , 2)";
SQL.Add(" , XLXSBJDMX_JSJJE="+sJSJJE );
string sJSJJCLLX=GetBJFLXX(sBJFLID).XLXSBJFL_JSJJCLLX;
if (sJSJJCLLX.Equals("1"))
{
SQL.Add(string.Format(" , XLXSBJDMX_JSJJCL=case when XLXSBJDMX_BJJE=0 then 0 else RoundFix(100*(XLXSBJDMX_BJJE-{0})/XLXSBJDMX_BJJE,2) end ", sJSJJE));
}
else if (sJSJJCLLX.Equals("2"))
{
SQL.Add(string.Format(" , XLXSBJDMX_JSJJCL=case when {0}=0 then 0 else RoundFix(100*(XLXSBJDMX_BJJE-{0})/{0},2) end ", sJSJJE));
}
else if (sJSJJCLLX.Equals("3"))
{
SQL.Add(string.Format(" , XLXSBJDMX_JSJJCL=case when XLXSBJDMX_BJJE=0 then 0 else RoundFix(100*({0})/XLXSBJDMX_BJJE,2) end ", sJSJJE));
}
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
string SS = SQL.Text;
try
{
dberp.ExecSQL(SQL);
}
catch
{
string sXH = "";
SQL.Clear();
SQL.Add(" select XLXSBJDMX_BJDID, XLXSBJDMX_XH from XLXSBJDMX where XLXSBJDMX_BJDID=:pBJDID ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (bYBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
if (bWBJ)
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(" order by XLXSBJDMX_XH ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
DataSet dsCalByLine = dberp.OpenDataSet(SQL);
if (dsCalByLine.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsCalByLine.Tables[0].Rows.Count; i++)
{
sXH = dsCalByLine.Tables[0].Rows[i]["XLXSBJDMX_XH"].ToString().Trim();
try
{
UpdateJSJGSByLine(dberp, SQL, sBJDID,sBJFLID, sJSJGS, iXSWS, sXH, sMXBH);
}
catch
{
}
}
}
}
}
}
}
//根据最低限价计算公式计算线缆销售报价单明细最低限价
public static string GetJSJ(string sCLCB, string sBJDHQCLCB, string sJGBJJ, string sJGBBJ, string sCPBJ, string sZDXJ,
string sYZZ01, string sYZZ02, string sYZZ03, string sYZZ04, string sYZZ05,
string sYZZ06, string sYZZ07, string sYZZ08, string sYZZ09, string sYZZ10,
string sYZZ11, string sYZZ12, string sYZZ13, string sYZZ14, string sYZZ15,
string sYZZ16, string sYZZ17, string sYZZ18, string sYZZ19, string sYZZ20,
Dictionary<string, string> dicChanedField, string sJSJ, string sBJFLID, int tmpXSWS, string sUpdJJYZList)
{
bool NeedChang = false;
//最低限价公式目前支持的选项字段
string sField = "XLXSBJDMX_CLCB,XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_JGBJJ,XLXSBJDMX_JGBBJ,XLXSBJDMX_CPBJ,XLXSBJDMX_ZDXJ,TZYZ_BJ01,TZYZ_BJ02,TZYZ_BJ03,TZYZ_BJ04,TZYZ_BJ05,TZYZ_BJ06,TZYZ_BJ07,TZYZ_BJ08,TZYZ_BJ09,TZYZ_BJ10,TZYZ_BJ11,TZYZ_BJ12,TZYZ_BJ13,TZYZ_BJ14,TZYZ_BJ15,TZYZ_BJ16,TZYZ_BJ17,TZYZ_BJ18,TZYZ_BJ19,TZYZ_BJ20";
foreach (string tmpField in sField.Split(','))
{
if (dicChanedField.ContainsKey(tmpField))
{
NeedChang = true;
break;
}
}
if (NeedChang)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" SELECT XLXSBJFL_JSJGS,XLXSBJFL_BJDHQLY,XLXSBJFL_MXBH,XLXSBJFL_JSJXSWS FROM XLXSBJFL where XLXSBJFL_BJFLID = :pXLXSBJFL_BJFLID");
SQL.ParamByName("pXLXSBJFL_BJFLID").Value = sBJFLID;
DataSet dsBJFLID = dberp.OpenDataSet(SQL);
if (dsBJFLID.Tables[0].Rows.Count > 0)
{
int iJSJXSWS = CMISproConvert.StrToInt(dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_JSJXSWS"].ToString().Trim());
if (iJSJXSWS != 0)
tmpXSWS = iJSJXSWS;
if (!dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_JSJGS"].ToString().Trim().Equals(""))
{
sYZZ01 = sYZZ01.Trim().Equals("") ? "0" : sYZZ01.Trim(); sYZZ02 = sYZZ02.Trim().Equals("") ? "0" : sYZZ02.Trim();
sYZZ03 = sYZZ03.Trim().Equals("") ? "0" : sYZZ03.Trim(); sYZZ04 = sYZZ04.Trim().Equals("") ? "0" : sYZZ04.Trim();
sYZZ05 = sYZZ05.Trim().Equals("") ? "0" : sYZZ05.Trim(); sYZZ06 = sYZZ06.Trim().Equals("") ? "0" : sYZZ06.Trim();
sYZZ07 = sYZZ07.Trim().Equals("") ? "0" : sYZZ07.Trim(); sYZZ08 = sYZZ08.Trim().Equals("") ? "0" : sYZZ08.Trim();
sYZZ09 = sYZZ09.Trim().Equals("") ? "0" : sYZZ09.Trim(); sYZZ10 = sYZZ10.Trim().Equals("") ? "0" : sYZZ10.Trim();
sYZZ11 = sYZZ11.Trim().Equals("") ? "0" : sYZZ11.Trim(); sYZZ12 = sYZZ12.Trim().Equals("") ? "0" : sYZZ12.Trim();
sYZZ13 = sYZZ13.Trim().Equals("") ? "0" : sYZZ13.Trim(); sYZZ14 = sYZZ14.Trim().Equals("") ? "0" : sYZZ14.Trim();
sYZZ15 = sYZZ15.Trim().Equals("") ? "0" : sYZZ15.Trim(); sYZZ16 = sYZZ16.Trim().Equals("") ? "0" : sYZZ16.Trim();
sYZZ17 = sYZZ17.Trim().Equals("") ? "0" : sYZZ17.Trim(); sYZZ18 = sYZZ18.Trim().Equals("") ? "0" : sYZZ18.Trim();
sYZZ19 = sYZZ19.Trim().Equals("") ? "0" : sYZZ19.Trim(); sYZZ20 = sYZZ20.Trim().Equals("") ? "0" : sYZZ20.Trim();
string sJSJGS = dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_JSJGS"].ToString().Trim();
if (dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim().Equals("1"))
{
sJSJGS = sJSJGS.Replace("CLCB", sCLCB);
}
else
{
sJSJGS = sJSJGS.Replace("CLCB", sBJDHQCLCB);
}
sJSJGS = sJSJGS.Replace("JGBJJ", sJGBJJ).Replace("JGBBJ", sJGBBJ).Replace("CPBJ", sCPBJ).Replace("ZDXJ", sZDXJ).Replace("BJDHQCB", sBJDHQCLCB);
sJSJGS = sJSJGS.Replace(" ", "").Replace("×", "*");//Replace("100", "100.00")是因为数据库计算时1/100的结果是0需转换为1/100.00结果才是0.01,此处直接计算无需处理
sJSJGS = sJSJGS.Replace("BJ01", sYZZ01).Replace("BJ02", sYZZ02).Replace("BJ03", sYZZ03).Replace("BJ04", sYZZ04).Replace("BJ05", sYZZ05);
sJSJGS = sJSJGS.Replace("BJ06", sYZZ06).Replace("BJ07", sYZZ07).Replace("BJ08", sYZZ08).Replace("BJ09", sYZZ09).Replace("BJ10", sYZZ10);
sJSJGS = sJSJGS.Replace("BJ11", sYZZ11).Replace("BJ12", sYZZ12).Replace("BJ13", sYZZ13).Replace("BJ14", sYZZ14).Replace("BJ15", sYZZ15);
sJSJGS = sJSJGS.Replace("BJ16", sYZZ16).Replace("BJ17", sYZZ17).Replace("BJ18", sYZZ18).Replace("BJ19", sYZZ19).Replace("BJ20", sYZZ20);
if (dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_MXBH"].ToString().Trim().Equals("JGE"))
{
string[] strJJYZZ = sUpdJJYZList.ToString().Trim().Split('|');
sJSJGS = sJSJGS.Replace("JZ01", strJJYZZ[0]).Replace("JZ02", strJJYZZ[1]).Replace("JZ03", strJJYZZ[2]).Replace("JZ04", strJJYZZ[3]).Replace("JZ05", strJJYZZ[4]);
sJSJGS = sJSJGS.Replace("JZ06", strJJYZZ[5]).Replace("JZ07", strJJYZZ[6]).Replace("JZ08", strJJYZZ[7]).Replace("JZ09", strJJYZZ[8]).Replace("JZ10", strJJYZZ[9]).Replace("JZ11", strJJYZZ[10]).Replace("JZ12", strJJYZZ[11]).Replace("JZ13", strJJYZZ[12]).Replace("JZ14", strJJYZZ[13]).Replace("JZ15", strJJYZZ[14]).Replace("JZ16", strJJYZZ[15]).Replace("JZ17", strJJYZZ[16]).Replace("JZ18", strJJYZZ[17]).Replace("JZ19", strJJYZZ[18]).Replace("JZ20", strJJYZZ[19]);
}
double dJSJ = 0;
gtExpression exp = new gtExpression();
try
{
dJSJ = NumberUtils.RoundX(exp.Evaluate(sJSJGS), tmpXSWS);
}
catch
{
dJSJ = 0;
}
sJSJ = dJSJ.ToString().Trim();
}
}
}
return sJSJ;
}
public static string GetCJ(string sBJRQ, Dictionary<string, string> dicXLJBXX, string sCLCB, string sBJDHQCLCB, string sBJDID, string sBJFLID, int tmpXSWS, string sUpdJJYZList)
{
string sJJList = string.Empty;
string sJSJ = "0";
string sTJ = "0";
string sLJ = "0";
if (dicXLJBXX.ContainsKey("TJ"))
sTJ = dicXLJBXX["TJ"];
if (dicXLJBXX.ContainsKey("LJ"))
sLJ = dicXLJBXX["LJ"];
Mac.MacLog.TraceFormat("sUpdJJYZList:" + sUpdJJYZList);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" SELECT XLXSBJFL_CJGS,XLXSBJFL_BJDHQLY,XLXSBJFL_MXBH FROM XLXSBJFL where XLXSBJFL_BJFLID = :pXLXSBJFL_BJFLID");
SQL.ParamByName("pXLXSBJFL_BJFLID").Value = sBJFLID;
DataSet dsBJFLID = dberp.OpenDataSet(SQL);
if (dsBJFLID.Tables[0].Rows.Count > 0)
{
if (!dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_CJGS"].ToString().Trim().Equals(""))
{
string sJSJGS = dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_CJGS"].ToString().Trim();
if (dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim().Equals("1"))
{
sJSJGS = sJSJGS.Replace("CLCB", sCLCB);
}
else
{
sJSJGS = sJSJGS.Replace("CLCB", sBJDHQCLCB);
}
sJSJGS = sJSJGS.Replace("BJDHQCB", sBJDHQCLCB);
sJSJGS = sJSJGS.Replace(" ", "").Replace("×", "*");//Replace("100", "100.00")是因为数据库计算时1/100的结果是0需转换为1/100.00结果才是0.01,此处直接计算无需处理
int indexXSML = 0;
int indexFJSX = 0;
int indexGJ = 0;
int indexDF = 0;
int indexQTSH = 0;
int indexFXYL = 0;
int indexZJF = 0;
int indexPTF = 0;
int indexZZSCB = 0;
string[] strJJYZZ = sUpdJJYZList.ToString().Trim().Split('|');
for (int i = 1; i <= strJJYZZ.Length; i++)
{
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "其他损耗")
{
double dSHL = CMISproConvert.StrToFloat(strJJYZZ[i - 1]);
BJFLXX flxx = GetBJFLXX(sBJFLID);
double dQTSH = GetCLCBSH(sBJFLID, sBJRQ, sBJDID, dicXLJBXX["XLXHID"], dicXLJBXX["XLGGID"], dicXLJBXX["XLBZID"], dicXLJBXX["DYDJID"], flxx.XLXSBJFL_TBJCLID, flxx.XLXSBJFL_LBJCLID, "QTCLSH", sTJ, sLJ) * dSHL / 100.0;
strJJYZZ[i - 1] = dQTSH.ToString();
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "包装费")
{
string sTcpList = "";
string sLcpList = "";
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860063);
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_TDTGSCLID))
sTcpList = pzxx.XLXSBJPZ_TDTGSCLID;
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_LDTGSCLID))
sLcpList = pzxx.XLXSBJPZ_LDTGSCLID;
string sDTLX = "";
SQL.Clear();
SQL.Add(" SELECT XLXHB_DTCLID FROM XLXHB where XLXHB_XLXHID = :XLXHB_XLXHID");
SQL.ParamByName("XLXHB_XLXHID").Value = dicXLJBXX["XLXHID"];
DataSet dsXLXH = dberp.OpenDataSet(SQL);
if (dsXLXH.Tables[0].Rows.Count > 0)
{
string sDTCL = dsXLXH.Tables[0].Rows[0]["XLXHB_DTCLID"].ToString().Trim();
if (sTcpList.Contains(sDTCL))
sDTLX = "T";
else if (sLcpList.Contains(sDTCL))
sDTLX = "L";
}
if (sDTLX == "T")
{
if (dicXLJBXX["JLDW"] == "扎")
{
strJJYZZ[i - 1] = "0";
continue;
}
string sCPMLID = GetCPMLID(dicXLJBXX["XLXHID"], dicXLJBXX["DYDJID"]);
bool isDXCP = CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSCPML where XLXSCPML_CPMLIDS like '{0}' and XLXSCPML_CPMLMC like '电线%' ", "%" + sCPMLID + "%"));
Dictionary<string, string> dicXLGGB = XLBJDUtils.GetXXJGIDByXLGGID(dicXLJBXX["XLGGID"], dicXLJBXX["XLXHID"]);
double fZXJM = CMISproConvert.StrToFloat(dicXLGGB["ZXJM"]);
if ((dicXLJBXX["JLDW"] == "米" || dicXLJBXX["JLDW"] == "M") && fZXJM <= 16 && isDXCP)
{
strJJYZZ[i - 1] = "0";
continue;
}
}
if (sDTLX == "L")
{
Dictionary<string, string> dicXLGGB = XLBJDUtils.GetXXJGIDByXLGGID(dicXLJBXX["XLGGID"], dicXLJBXX["XLXHID"]);
double fZXJM = CMISproConvert.StrToFloat(dicXLGGB["ZXJM"]);
double dBJSL = CMISproConvert.StrToFloat(dicXLJBXX["BJSL"]);
if ((dicXLJBXX["JLDW"] == "米" || dicXLJBXX["JLDW"] == "M"))
{
if (fZXJM <= 35 && fZXJM >= 10 && dBJSL > 1000)
{
//strJJYZZ[i - 1] = "0";
continue;
}
if (fZXJM <= 120 && fZXJM >= 50 && dBJSL > 200)
{
//strJJYZZ[i - 1] = "0";
continue;
}
if (fZXJM <= 630 && fZXJM >= 150 && dBJSL > 150)
{
continue;
}
strJJYZZ[i - 1] = "0";
}
else
{
strJJYZZ[i - 1] = "0";
}
}
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "风险余量")
{
double dSHL = CMISproConvert.StrToFloat(strJJYZZ[i - 1]);
BJFLXX flxx = GetBJFLXX(sBJFLID);
double dDTSH = GetCLCBSH(sBJFLID, sBJRQ, sBJDID, dicXLJBXX["XLXHID"], dicXLJBXX["XLGGID"], dicXLJBXX["XLBZID"], dicXLJBXX["DYDJID"], flxx.XLXSBJFL_TBJCLID, flxx.XLXSBJFL_LBJCLID, "DTCLSH", sTJ, sLJ) * dSHL / 100.0;
strJJYZZ[i - 1] = dDTSH.ToString();
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "销售毛利")
indexXSML = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "附加属性")
indexFJSX = i;
}
if (indexXSML > 0 && indexFJSX > 0)
{
double dXSML = CMISproConvert.StrToFloat(strJJYZZ[indexXSML - 1]) + CMISproConvert.StrToFloat(strJJYZZ[indexFJSX - 1]);
strJJYZZ[indexXSML - 1] = dXSML.ToString();
}
sJSJGS = sJSJGS.Replace("JZ01", strJJYZZ[0]).Replace("JZ02", strJJYZZ[1]).Replace("JZ03", strJJYZZ[2]).Replace("JZ04", strJJYZZ[3]).Replace("JZ05", strJJYZZ[4]);
sJSJGS = sJSJGS.Replace("JZ06", strJJYZZ[5]).Replace("JZ07", strJJYZZ[6]).Replace("JZ08", strJJYZZ[7]).Replace("JZ09", strJJYZZ[8]).Replace("JZ10", strJJYZZ[9]);
double dJSJ = 0;
gtExpression exp = new gtExpression();
try
{
dJSJ = NumberUtils.RoundX(exp.Evaluate(sJSJGS), 5);
}
catch
{
dJSJ = 0;
}
for (int i = 1; i <= strJJYZZ.Length; i++)
{
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "工价")
indexGJ = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "生产电费")
indexDF = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "其他损耗")
indexQTSH = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "风险余量")
indexFXYL = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "增值税成本")
indexZZSCB = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "折旧费")
{
double dSHL = CMISproConvert.StrToFloat(strJJYZZ[i - 1]);
double dQTSH = dJSJ * dSHL / 100.0;
strJJYZZ[i - 1] = dQTSH.ToString();
indexZJF = i;
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "配套费")
{
double dSHL = CMISproConvert.StrToFloat(strJJYZZ[i - 1]);
double dQTSH = dJSJ * dSHL / 100.0;
strJJYZZ[i - 1] = dQTSH.ToString();
indexPTF = i;
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "销售毛利")
{
double dSHL = CMISproConvert.StrToFloat(strJJYZZ[i - 1]);
double dQTSH = dJSJ * dSHL / 100.0;
strJJYZZ[i - 1] = dQTSH.ToString();
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "认证费")
{
double dRZF = CMISproConvert.StrToFloat(strJJYZZ[i - 1]);
double dQTSH = dJSJ * dRZF / 100.0;
strJJYZZ[i - 1] = dQTSH.ToString();
}
}
if (indexZZSCB > 0 && indexPTF > 0 && indexZJF > 0 && indexFXYL > 0 && indexQTSH > 0 && indexDF > 0 && indexGJ > 0)
{
double ZZSCB = (CMISproConvert.StrToFloat(strJJYZZ[indexPTF - 1]) + CMISproConvert.StrToFloat(strJJYZZ[indexZJF - 1]) + CMISproConvert.StrToFloat(strJJYZZ[indexFXYL - 1]) + CMISproConvert.StrToFloat(strJJYZZ[indexQTSH - 1])
+ (CMISproConvert.StrToFloat(strJJYZZ[indexDF - 1]) + CMISproConvert.StrToFloat(strJJYZZ[indexGJ - 1]) * 10000 / 81.2655989526499 / 71.3980341706337)) * CMISproConvert.StrToFloat(strJJYZZ[indexZZSCB - 1]);
strJJYZZ[indexZZSCB - 1] = ZZSCB.ToString();
}
for (int i = 0; i < strJJYZZ.Length; i++)
{
sJJList += strJJYZZ[i] + "|";
}
sJSJ = dJSJ.ToString().Trim();
}
}
sUpdJJYZList = sJJList + "0";
Mac.MacLog.TraceFormat("sUpdJJYZList:" + sUpdJJYZList);
return sJSJ + "," + sUpdJJYZList;
}
public static double GetCLCBSH(string sBJFLID, string sBJRQ, string sBJDID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sTBJCLID, string sLBJCLID, string CLLX, string sTJ, string sLJ)
{
double dCLCB1 = 0.0;
double dCLCB2 = 0.0;
bool bHSBZ = true;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sSQL = new TSQL(dberp);
bool bExistBJDHQ = false;
BJFLXX flxx = GetBJFLXX(sBJFLID);
if (flxx.XLXSBJFL_TZCLHQ == "Y")//是否允许调整材料行情
{
if (!sBJDID.Trim().Equals(""))
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJDCLHQ_BJCLID from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID='{0}'", sBJDID)))
{
bExistBJDHQ = true;
}
}
}
sSQL.Clear();
sSQL.Add("select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.Add(" and XLXSCLQD_WPID='ZZZZ'");
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet dsQD = dberp.OpenDataSet(sSQL);
if (dsQD.Tables[0].Rows.Count > 0)
{
string sJGCZBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim();
string sJGCZBBBID = dsQD.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim();
sSQL.Clear();
sSQL.Add("select XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,XLXSBJCL_BJHQ,XLJGCZBML_CZBLX,isnull(XLJGCZBLM_BJRCLCB,'N') as XLJGCZBLM_BJRCLCB from XLJGCZBLM");
sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID");
sSQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLJGCZBLM_JGCZBID");
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID");
sSQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '");
if (CLLX == "QTCLSH")
{
sSQL.Add(" and isnull(XLJGCZBLM_XLCLZLID,' ') <> 'DTCL' and XLJGCZBLM_CZBLMMC not like '%铜%' and XLJGCZBLM_CZBLMMC not like '%铝%' ");
}
if (CLLX == "DTCLSH")
{
sSQL.Add(" and isnull(XLJGCZBLM_XLCLZLID,' ') = 'DTCL' and (XLJGCZBLM_CZBLMMC like '%铜%' or XLJGCZBLM_CZBLMMC like '%铝%') ");
}
sSQL.Add(" order by XLJGCZBLM_CLQDL");
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet dsJGCZB = dberp.OpenDataSet(sSQL);
Dictionary<string, string> dicCLHQ = new Dictionary<string, string>();
Dictionary<string, string> dicWLHQ = new Dictionary<string, string>();
Dictionary<string, string> dicBJRCB = new Dictionary<string, string>();
for (int i = 0; i < dsJGCZB.Tables[0].Rows.Count; i++)
{
//B类尺重表只支持材料行情报价
if (dsJGCZB.Tables[0].Rows[i]["XLJGCZBML_CZBLX"].ToString().Trim().Equals("B"))
{
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else//Z类A类C类
{
if (dsJGCZB.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim().Equals("2"))
{
//2|物料行情
dicWLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
else
{
//1|材料行情
dicCLHQ.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim());
}
}
if (dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_BJRCLCB"].ToString().Trim().Equals("Y"))
{
dicBJRCB.Add(dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsJGCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim());
}
}
#region 计算 1|材料行情 的成本
sSQL.Clear();
sSQL.Add("select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,");
foreach (string sCLQDL in dicCLHQ.Keys)
{
if (bHSBZ)
sSQL.Add(string.Format("XLXSCLQD_SL{0}*HSJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
else
sSQL.Add(string.Format("XLXSCLQD_SL{0}*CLJG{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}+", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add("0 as CLCB, ");
if (dicCLHQ.Keys.Count > 0)
{
//是否存在有材料用量、无材料价格的情况
sSQL.Add("case ");
foreach (string sCLQDL in dicCLHQ.Keys)
{
if (dicBJRCB.ContainsKey(sCLQDL))
continue;
if (bHSBZ)
sSQL.Add(string.Format(" when (XLXSCLQD_SL{0}>0 and HSJG{0}=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", "")));
else
sSQL.Add(string.Format(" when (XLXSCLQD_SL{0}>0 and CLJG{0}=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", "")));
}
sSQL.Add(" else 'N' end as JgIsZero ");
}
else
{
sSQL.Add(" 'N' as JgIsZero ");
}
sSQL.Add("from XLXSCLQD ");
sSQL.Add(" left join");
sSQL.Add(" (");
sSQL.Add(" select JGCZBID,JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
if (bHSBZ)
sSQL.Add(string.Format(" sum(HSJG{0}) as HSJG{0},", i.ToString().PadLeft(2, '0')));
else
sSQL.Add(string.Format(" sum(CLJG{0}) as CLJG{0},", i.ToString().PadLeft(2, '0')));
}
if (bHSBZ)
sSQL.Add(" sum(HSJG80) as HSJG80");
else
sSQL.Add(" sum(CLJG80) as CLJG80");
sSQL.Add(" from");
sSQL.Add(" (");
sSQL.Add(" select XLJGCZBLM_JGCZBID as JGCZBID,XLJGCZBLM_JGCZBBBID as JGCZBBBID,");
for (int i = 1; i < 80; i++)
{
if (bHSBZ)
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as HSJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
else
sSQL.Add(string.Format(" case when XLJGCZBLM_CLQDL='{0}' then isnull(CLJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as CLJG{1},", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0')));
}
if (bHSBZ)
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(HSJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as HSJG80 ");
else
sSQL.Add(" case when XLJGCZBLM_CLQDL='第80列' then isnull(CLJG,0.0) else 0.0 end * case when isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' then 0 else 1 end as CLJG80 ");
sSQL.Add(" from XLJGCZBLM");
#region 构建JGE价格表行情
if (bHSBZ)
{
if (bExistBJDHQ)//存在报价单行情
{
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select XLXSBJDCLHQ_BJCLID as BJCLID,");
sSQL.Add(string.Format("case when isnull(XLXSBJDCLHQ_BJCLID,' ')<>' ' and XLXSBJDCLHQ_BJCLID='{0}' then {1}", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_BJCLID,' ')<>' ' and XLXSBJDCLHQ_BJCLID='{0}' then {1}", sLBJCLID.Trim(), sLJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDCLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_HSJGF", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDCLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_HSJGF", sLBJCLID.Trim(), sLJ));
sSQL.Add(" else XLXSBJDCLHQ_HSJG end as HSJG ");
sSQL.Add(" from XLXSBJDCLHQ");
//sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJDCLHQ_BJCLID");
sSQL.Add(" where XLXSBJDCLHQ_BJDID=:pBJDID");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.ParamByName("pBJDID").Value = sBJDID;
}
else
{
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select BJCLID,");
sSQL.Add(string.Format("case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sLBJCLID.Trim(), sLJ));
sSQL.Add(string.Format(" when isnull(JGYBJCLID,' ')<>' ' and JGYBJCLID='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(JGYBJCLID,' ')<>' ' and JGYBJCLID='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF", sLBJCLID.Trim(), sLJ));
sSQL.Add(" else XLXSCLHQ_HSJG end as HSJG ");
sSQL.Add(" from XLXSCLHQ,");
sSQL.Add(" (");
sSQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_JGYBJCLID1 as JGYBJCLID,");
sSQL.Add(" max(XLXSCLHQ_YXQS) as maxYXQS");
sSQL.Add(" from XLXSCLHQ");
//sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)");
sSQL.Add(" group by XLXSCLHQ_BJCLID,XLXSCLHQ_JGYBJCLID1 ");
sSQL.Add(" ) a");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
sSQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.ParamByName("pBJRQ").Value = sBJRQ;
}
}
else
{
if (bExistBJDHQ)//存在报价单行情
{
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select XLXSBJDCLHQ_BJCLID as BJCLID,");
sSQL.Add(string.Format("case when isnull(XLXSBJDCLHQ_BJCLID,' ')<>' ' and XLXSBJDCLHQ_BJCLID='{0}' then {1}", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_BJCLID,' ')<>' ' and XLXSBJDCLHQ_BJCLID='{0}' then {1}", sLBJCLID.Trim(), sLJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDCLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_WSJGF", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(XLXSBJDCLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDCLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_WSJGF", sLBJCLID.Trim(), sLJ));
sSQL.Add(" else XLXSBJDCLHQ_WSJG end as CLJG ");
sSQL.Add(" from XLXSBJDCLHQ");
//sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJDCLHQ_BJCLID");
sSQL.Add(" where XLXSBJDCLHQ_BJDID=:pBJDID");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.ParamByName("pBJDID").Value = sBJDID;
}
else
{
sSQL.Add(" left join ");
sSQL.Add(" (");
sSQL.Add(" select BJCLID,");
sSQL.Add(string.Format("case when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(BJCLID,' ')<>' ' and BJCLID='{0}' then {1}", sLBJCLID.Trim(), sLJ));
sSQL.Add(string.Format(" when isnull(JGYBJCLID,' ')<>' ' and JGYBJCLID='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sTBJCLID.Trim(), sTJ));
sSQL.Add(string.Format(" when isnull(JGYBJCLID,' ')<>' ' and JGYBJCLID='{0}' then {1}*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF", sLBJCLID.Trim(), sLJ));
sSQL.Add(" else XLXSCLHQ_WSJG end as CLJG ");
sSQL.Add(" from XLXSCLHQ,");
sSQL.Add(" (");
sSQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,XLXSCLHQ_JGYBJCLID1 as JGYBJCLID,");
sSQL.Add(" max(XLXSCLHQ_YXQS) as maxYXQS");
sSQL.Add(" from XLXSCLHQ");
// sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSCLHQ_BJCLID");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_YXQS<=:pBJRQ and(XLXSCLHQ_YXQZ>=:pBJRQ or XLXSCLHQ_YXQZ is null)");
sSQL.Add(" group by XLXSCLHQ_BJCLID,XLXSCLHQ_JGYBJCLID1 ");
sSQL.Add(" ) a");
sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'");
sSQL.Add(" and XLXSCLHQ_BJCLID=BJCLID");
sSQL.Add(" and XLXSCLHQ_YXQS=maxYXQS");
sSQL.Add(" ) JGB on JGB.BJCLID=XLJGCZBLM_BJCLID");
sSQL.ParamByName("pBJRQ").Value = sBJRQ;
}
}
#endregion
sSQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID");
sSQL.Add(" ) b");
sSQL.Add(" group by JGCZBID,JGCZBBBID");
sSQL.Add(" ) c on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID= XLXSCLQD_JGCZBBBID ");
sSQL.Add("where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID");
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
sSQL.ParamByName("pJGCZBID").Value = sJGCZBID;
sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID;
DataSet ds1 = dberp.OpenDataSet(sSQL);
if (ds1.Tables[0].Rows.Count > 0)
{
dCLCB1 = CMISproConvert.StrToFloat(ds1.Tables[0].Rows[0]["CLCB"].ToString());
}
#endregion
#region 计算 2|物料行情 的成本
if (dicWLHQ.Keys.Count > 0)
{
string sSQL_1 = " select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,";
string sSQL_2 = string.Empty;
string sSQL_3 = " 0 as CLCB, case ";
string sSQL_4 = string.Empty;
string sSQL_5 = " else 'N' end as JgIsZero from XLXSCLQD "
+ " left join ("
+ " select XLXSCLQDWL_JGCZBID as JGCZBID,XLXSCLQDWL_JGCZBBBID as JGCZBBBID,XLXSCLQDWL_DRHH as DRHH, XLXSCLQDWL_JGCZBXH as JGCZBXH,";
string sSQL_6 = string.Empty;
string sSQL_7 = " ' ' as MJBZ from XLXSCLQDWL ";
string sSQL_8 = string.Empty;
string sSQL_9 = " ) e on JGCZBID=XLXSCLQD_JGCZBID and JGCZBBBID=XLXSCLQD_JGCZBBBID and JGCZBXH=XLXSCLQD_JGCZBXH and DRHH=XLXSCLQD_DRHH "
+ " where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID ";
int count = 0;//拼接的栏目数量
foreach (string sCLQDL in dicWLHQ.Keys)
{
if (dicBJRCB.ContainsKey(sCLQDL))
{
count++;
continue;
}
if (bHSBZ)
sSQL_2 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(HSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
else
sSQL_2 += string.Format("XLXSCLQD_SL{0}*(1+XLXSCLQD_SHL{0}/100)*XLXSCLQD_CLJGBL{0}*isnull(WSJG{0},0)+", sCLQDL.Replace("第", "").Replace("列", ""));
//是否存在有物料用量、无物料价格的情况
if (bHSBZ)
sSQL_4 += string.Format(" when (XLXSCLQD_SL{0}>0 and isnull(HSJG{0},0)=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", ""));
else
sSQL_4 += string.Format(" when (XLXSCLQD_SL{0}>0 and isnull(WSJG{0},0)=0) then 'Y' ", sCLQDL.Replace("第", "").Replace("列", ""));
if (bExistBJDHQ)//存在报价单材料行情,即认为也存在报价单物料行情
{
if (bHSBZ)
{
sSQL_6 += 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
{
sSQL_6 += 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("列", ""));
}
}
else
{
if (bHSBZ)
{
sSQL_6 += string.Format("isnull(c{0}.HSJG,0) as HSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""));
}
else
{
sSQL_6 += string.Format("isnull(c{0}.WSJG,0) as WSJG{0}, ", sCLQDL.Replace("第", "").Replace("列", ""));
}
}
if (bExistBJDHQ)//存在报价单材料行情,即认为也存在报价单物料行情
{
//关联XLXSBJDWLHQ,获取报价单物料行情
sSQL_8 += " left join ";
sSQL_8 += " (";
sSQL_8 += " select XLXSBJDWLHQ_WLID,";
if (bHSBZ)
{
sSQL_8 += string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSBJDWLHQ_HSJG end as HSJG ";
}
else
{
sSQL_8 += string.Format("case when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSBJDWLHQ_JGYBJCLID1,' ')<>' ' and XLXSBJDWLHQ_JGYBJCLID1='{0}' then {1}*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSBJDWLHQ_WSJG end as WSJG ";
}
sSQL_8 += " from XLXSBJDWLHQ";
sSQL_8 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSBJDWLHQ_WLID";
sSQL_8 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID";
sSQL_8 += string.Format(" where XLXSBJDWLHQ_BJDID='{0}'", sBJDID);
sSQL_8 += string.Format(") d{0} on d{0}.XLXSBJDWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
//关联XLXSWLHQ,获取物料行情
sSQL_8 += " left join";
sSQL_8 += " (";
sSQL_8 += " select XLXSWLHQ_WLID as WLID,";
if (bHSBZ)
{
sSQL_8 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSWLHQ_HSJG end as HSJG ";
}
else
{
sSQL_8 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSWLHQ_WSJG end as WSJG ";
}
sSQL_8 += " from XLXSWLHQ,";
sSQL_8 += " (";
sSQL_8 += " select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS";
sSQL_8 += " from XLXSWLHQ";
sSQL_8 += " where XLXSWLHQ_JGBID=' '";
sSQL_8 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)";
sSQL_8 += " group by XLXSWLHQ_WLID";
sSQL_8 += string.Format(") a{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_8 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=WLID";//20.09.22新增
sSQL_8 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID";//20.09.22新增
sSQL_8 += " where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS";
sSQL_8 += string.Format(") c{0} on c{0}.WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
}
else
{
//关联XLXSWLHQ,获取物料行情
sSQL_8 += " left join";
sSQL_8 += " (";
sSQL_8 += " select XLXSWLHQ_WLID as WLID,";
if (bHSBZ)
{
sSQL_8 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSWLHQ_HSJG end as HSJG ";
}
else
{
sSQL_8 += string.Format("case when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sTBJCLID.Trim(), sTJ);
sSQL_8 += string.Format(" when isnull(XLXSWLHQ_JGYBJCLID1,' ')<>' ' and XLXSWLHQ_JGYBJCLID1='{0}' then {1}*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF", sLBJCLID.Trim(), sLJ);
sSQL_8 += " else XLXSWLHQ_WSJG end as WSJG ";
}
sSQL_8 += " from XLXSWLHQ,";
sSQL_8 += " (";
sSQL_8 += " select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS";
sSQL_8 += " from XLXSWLHQ";
sSQL_8 += " where XLXSWLHQ_JGBID=' '";
sSQL_8 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)";
sSQL_8 += " group by XLXSWLHQ_WLID";
sSQL_8 += string.Format(") a{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
sSQL_8 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=WLID";//20.09.22新增
sSQL_8 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID";//20.09.22新增
sSQL_8 += " where XLXSWLHQ_JGBID=' ' and XLXSWLHQ_WLID=WLID and XLXSWLHQ_YXQS=maxYXQS";
sSQL_8 += string.Format(") c{0} on c{0}.WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", ""));
}
count++;
if (count % 25 == 0 || count == dicWLHQ.Count)
{
sSQL.Clear();
sSQL.Add(sSQL_1);
sSQL.Add(sSQL_2);
sSQL.Add(sSQL_3);
sSQL.Add(sSQL_4);
sSQL.Add(sSQL_5);
sSQL.Add(sSQL_6);
sSQL.Add(sSQL_7);
sSQL.Add(sSQL_8);
sSQL.Add(sSQL_9);
sSQL.ParamByName("pRQ").Value = sBJRQ;
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet ds2 = dberp.OpenDataSet(sSQL);
if (ds2.Tables[0].Rows.Count > 0)
{
dCLCB2 += CMISproConvert.StrToFloat(ds2.Tables[0].Rows[0]["CLCB"].ToString());
}
sSQL_2 = string.Empty;
sSQL_4 = string.Empty;
sSQL_6 = string.Empty;
sSQL_8 = string.Empty;
}
}
}
#endregion
}
return dCLCB1 + dCLCB2;
}
public static void UpdateCJGS(TDatabase dberp, TSQL SQL, string sJGBID, string sBJDID, int VnewID)
{
int iXSWS = 5;
string sCJGS = "";
string sMXBH = "";
BJFLXX flxx = GetBJFLXXByBJDID(sBJDID);
if (!string.IsNullOrEmpty(flxx.XLXSBJFL_CJGS))
{
int indexXSML = 0;
int indexFJSX = 0;
int indexGJ = 0;
int indexDF = 0;
int indexQTSH = 0;
int indexFXYL = 0;
int indexZJF = 0;
int indexPTF = 0;
int indexZZSCB = 0;
for (int i = 1; i <= 20; i++)
{
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "其他损耗")
{
XLBJDCalcUtils.UpdateCLSH(dberp, SQL, sJGBID, sBJDID, "QTCLSH");
SQL.Clear();
SQL.Add("merge into XLXSBJDJJYZ tar ");
SQL.Add("using ( select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSCLQD_JGBWSCB,XLXSCLQD_JGBHSCB 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 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=XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDMX_XH ) ");
SQL.Add(" )sor on(XLXSBJDMX_BJDID=XLXSBJDJJYZ_BJDID and XLXSBJDMX_XH=XLXSBJDJJYZ_XH) ");
SQL.Add(" when matched then update set XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "*isnull(XLXSCLQD_JGBHSCB,0)/100.0 ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "包装费")
{
string sTcpList = "";
string sLcpList = "";
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860063);
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_TDTGSCLID))
sTcpList = pzxx.XLXSBJPZ_TDTGSCLID;
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_LDTGSCLID))
sLcpList = pzxx.XLXSBJPZ_LDTGSCLID;
SQL.Clear();
SQL.Add("merge into XLXSBJDJJYZ tar ");
SQL.Add("using ( select XLXSBJDMX_BJDID,XLXSBJDMX_XH ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add(" left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add(" where XLXSBJDMX_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=XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDMX_XH ) ");
SQL.Add(" and (XLXSBJDMX_JLDW='扎' or (XLXSBJDMX_JLDW in ('米','M') and XLDTJMZHB_DTJM1<=16 ) ) ");
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTcpList));
SQL.Add(" )sor on(XLXSBJDMX_BJDID=XLXSBJDJJYZ_BJDID and XLXSBJDMX_XH=XLXSBJDJJYZ_XH) ");
SQL.Add(" when matched then update set XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "= 0 ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("merge into XLXSBJDJJYZ tar ");
SQL.Add("using ( select XLXSBJDMX_BJDID,XLXSBJDMX_XH ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add(" left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add(" where XLXSBJDMX_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=XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDMX_XH ) ");
SQL.Add(" and ( ");
SQL.Add(" XLXSBJDMX_JLDW not in ('米','M') ");
SQL.Add(" or ( ");
SQL.Add(" XLXSBJDMX_JLDW in ('米','M') ");
SQL.Add(" and not ( ");
SQL.Add(" ( XLXSBJDMX_BJSL > 1000 and XLDTJMZHB_DTJM1 between 10 and 35 ) ");
SQL.Add(" or ( XLXSBJDMX_BJSL > 200 and XLDTJMZHB_DTJM1 between 50 and 120 ) ");
SQL.Add(" or ( XLXSBJDMX_BJSL > 150 and XLDTJMZHB_DTJM1 between 150 and 630 ) ");
SQL.Add(" ) ");
SQL.Add(" ) ");
SQL.Add(" ) ");
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sLcpList));
SQL.Add(" )sor on(XLXSBJDMX_BJDID=XLXSBJDJJYZ_BJDID and XLXSBJDMX_XH=XLXSBJDJJYZ_XH) ");
SQL.Add(" when matched then update set XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "= 0 ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "风险余量")
{
XLBJDCalcUtils.UpdateCLSH(dberp, SQL, sJGBID, sBJDID, "DTCLSH");
SQL.Clear();
SQL.Add("merge into XLXSBJDJJYZ tar ");
SQL.Add("using ( select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSCLQD_JGBWSCB,XLXSCLQD_JGBHSCB 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 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=XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDMX_XH ) ");
SQL.Add(" )sor on(XLXSBJDMX_BJDID=XLXSBJDJJYZ_BJDID and XLXSBJDMX_XH=XLXSBJDJJYZ_XH) ");
SQL.Add(" when matched then update set XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "*isnull(XLXSCLQD_JGBHSCB,0)/100.0 ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "销售毛利")
indexXSML = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "附加属性")
indexFJSX = i;
}
if (indexXSML > 0 && indexFJSX > 0)
{
SQL.Clear();
SQL.Add(string.Format("update XLXSBJDJJYZ set XLXSBJDJJYZ_YZZ{0}=XLXSBJDJJYZ_YZZ{0}+XLXSBJDJJYZ_YZZ{1} where XLXSBJDJJYZ_BJDID=:pBJDID ", indexXSML.ToString().PadLeft(2, '0'), indexFJSX.ToString().PadLeft(2, '0')));
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.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
}
sCJGS = flxx.XLXSBJFL_CJGS;
sMXBH = flxx.XLXSBJFL_MXBH;
//将数据都处理为0-防止编辑存在部分计算公式出错
SQL.Clear();
SQL.Add(" update XLXSBJDMX set XLXSBJDMX_CJ = 0.0 where XLXSBJDMX_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=XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDMX_XH ) ");
SQL.ParamByName("pID").Value = VnewID;
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
dberp.ExecSQL(SQL);
if (!sCJGS.Equals(""))
{
sCJGS = sCJGS.Replace("CLCB", "XXX01").Replace("JGBJJ", "XXX02").Replace("JGBBJ", "XXX03").Replace("CPBJ", "XXX04").Replace("ZDXJ", "XXX05").Replace("BJDHQCB", "XXX06");
sCJGS = sCJGS.Replace("BJ", "tar.XLXSBJDYZZ0_YZZ");
if (sMXBH.Equals("JGE"))
{
sCJGS = sCJGS.Replace("JZ", "tar.XLXSBJDJJYZ_YZZ");
}
if (flxx.XLXSBJFL_BJDHQLY.Equals("1"))
{
sCJGS = sCJGS.Replace("XXX01", "tar.XLXSBJDMX_CLCB");
}
else
{
sCJGS = sCJGS.Replace("XXX01", "tar.XLXSBJDMX_BJDHQCLCB");
}
sCJGS = sCJGS.Replace("XXX02", "sor.XLXSBJDMX_JGBJJ");
sCJGS = sCJGS.Replace("XXX03", "sor.XLXSBJDMX_JGBBJ");
sCJGS = sCJGS.Replace("XXX04", "sor.XLXSBJDMX_CPBJ");
sCJGS = sCJGS.Replace("XXX05", "sor.XLXSBJDMX_ZDXJ");
sCJGS = sCJGS.Replace("XXX06", "tar.XLXSBJDMX_BJDHQCLCB");
sCJGS = sCJGS.Replace(" ", "").Replace("×", "*").Replace("100", "100.00");
sCJGS = sCJGS.Replace("round", "roundFix");
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX sor ");
SQL.Add(" using (");
SQL.Add(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,V_XSBJJSJGB_BJDHQCLCB as XLXSBJDMX_BJDHQCLCB,V_XSBJJSJGB_CLCB as XLXSBJDMX_CLCB, XLXSBJDMX_JGBJJ, XLXSBJDMX_JGBBJ ");
SQL.Add(" ,XLXSBJDJJYZ_YZZ01,XLXSBJDJJYZ_YZZ02,XLXSBJDJJYZ_YZZ03,XLXSBJDJJYZ_YZZ04,XLXSBJDJJYZ_YZZ05, ");
SQL.Add(" XLXSBJDJJYZ_YZZ06,XLXSBJDJJYZ_YZZ07,XLXSBJDJJYZ_YZZ08,XLXSBJDJJYZ_YZZ09,XLXSBJDJJYZ_YZZ10");
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join V_XSBJJSJGB on V_XSBJJSJGB_BJDID = XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH = XLXSBJDMX_XH ");
SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID = XLXSBJDMX_BJDID and XLXSBJDYZZ0_XH = XLXSBJDMX_XH ");
SQL.Add(" left join XLXSBJDJJYZ on XLXSBJDJJYZ_BJDID = XLXSBJDMX_BJDID and XLXSBJDJJYZ_XH = XLXSBJDMX_XH ");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID and V_XSBJJSJGB_ID=:pID ");
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 isnull(sor.XLXSBJDMX_ZDXJBJDID,' ') = ' ' ");
SQL.Add(" ) ");
SQL.Add(" when matched then update set XLXSBJDMX_CJ= RoundFix( ");
SQL.Add(sCJGS);
SQL.Add(" ," + iXSWS.ToString() + " )");
SQL.ParamByName("pID").Value = VnewID;
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
string SS = SQL.Text;
try
{
dberp.ExecSQL(SQL);
}
catch
{
}
}
for (int i = 1; i <= 20; i++)
{
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "工价")
indexGJ = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "生产电费")
indexDF = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "其他损耗")
indexQTSH = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "风险余量")
indexFXYL = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "增值税成本")
indexZZSCB = i;
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "折旧费")
{
indexZJF = i;
SQL.Clear();
SQL.Add("merge into XLXSBJDJJYZ tar ");
SQL.Add("using ( select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_CJ from XLXSBJDMX ");
SQL.Add(" where XLXSBJDMX_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=XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDMX_XH ) ");
SQL.Add(" )sor on(XLXSBJDMX_BJDID=XLXSBJDJJYZ_BJDID and XLXSBJDMX_XH=XLXSBJDJJYZ_XH) ");
SQL.Add(" when matched then update set XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "*XLXSBJDMX_CJ/100.0 ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "配套费")
{
indexPTF = i;
SQL.Clear();
SQL.Add("merge into XLXSBJDJJYZ tar ");
SQL.Add("using ( select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_CJ from XLXSBJDMX ");
SQL.Add(" where XLXSBJDMX_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=XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDMX_XH ) ");
SQL.Add(" )sor on(XLXSBJDMX_BJDID=XLXSBJDJJYZ_BJDID and XLXSBJDMX_XH=XLXSBJDJJYZ_XH) ");
SQL.Add(" when matched then update set XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "*XLXSBJDMX_CJ/100.0 ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "销售毛利")
{
SQL.Clear();
SQL.Add("merge into XLXSBJDJJYZ tar ");
SQL.Add("using ( select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_CJ from XLXSBJDMX ");
SQL.Add(" where XLXSBJDMX_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=XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDMX_XH ) ");
SQL.Add(" )sor on(XLXSBJDMX_BJDID=XLXSBJDJJYZ_BJDID and XLXSBJDMX_XH=XLXSBJDJJYZ_XH) ");
SQL.Add(" when matched then update set XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "*XLXSBJDMX_CJ/100.0 ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
}
if (GetYZXXByYZID("JZ" + i.ToString().PadLeft(2, '0')).XLXSTZYZ_YZMC == "认证费")
{
SQL.Clear();
SQL.Add("merge into XLXSBJDJJYZ tar ");
SQL.Add("using ( select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_CJ from XLXSBJDMX ");
SQL.Add(" where XLXSBJDMX_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=XLXSBJDMX_BJDID and V_XSBJJSJGB_BJDXH=XLXSBJDMX_XH ) ");
SQL.Add(" )sor on(XLXSBJDMX_BJDID=XLXSBJDJJYZ_BJDID and XLXSBJDMX_XH=XLXSBJDJJYZ_XH) ");
SQL.Add(" when matched then update set XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "= XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + "*XLXSBJDMX_CJ/100.0 ");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
}
}
if (indexZZSCB > 0 && indexPTF > 0 && indexZJF > 0 && indexFXYL > 0 && indexQTSH > 0 && indexDF > 0 && indexGJ > 0)
{
SQL.Clear();
SQL.Add(string.Format("update XLXSBJDJJYZ set XLXSBJDJJYZ_YZZ{0}=XLXSBJDJJYZ_YZZ{0}*(XLXSBJDJJYZ_YZZ{1}+(XLXSBJDJJYZ_YZZ{2}* 10000 / 81.2655989526499 / 71.3980341706337)+XLXSBJDJJYZ_YZZ{3}+XLXSBJDJJYZ_YZZ{4}+XLXSBJDJJYZ_YZZ{5}+XLXSBJDJJYZ_YZZ{6}) where XLXSBJDJJYZ_BJDID=:pBJDID ", indexZZSCB.ToString().PadLeft(2, '0'), indexDF.ToString().PadLeft(2, '0'), indexGJ.ToString().PadLeft(2, '0'), indexZJF.ToString().PadLeft(2, '0'), indexPTF.ToString().PadLeft(2, '0'), indexQTSH.ToString().PadLeft(2, '0'), indexFXYL.ToString().PadLeft(2, '0')));
SQL.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.Trim();
SQL.ParamByName("pID").Value = VnewID;
dberp.ExecSQL(SQL);
}
}
}
//根据报价分类的最低限价公式逐行计算XLXSBJDMX_ZDXJ(最低限价)字段
private static void UpdateJSJGSByLine(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sJSJGS, int iXSWS, string sXHList, string sMXBH)
{
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX sor ");
SQL.Add(" using (");
SQL.Add(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_CLCB, XLXSBJDMX_JGBJJ, XLXSBJDMX_JGBBJ, ");
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 ");
if (sMXBH.Equals("JGE"))
{
string sYZZFields_4 = "";
for (int i = 1; i <= 20; i++)
{
sYZZFields_4 += "XLXSBJDJJYZ_YZZ" + i.ToString().PadLeft(2, '0') + (i < 20 ? "," : "");
}
SQL.Add(" ," + sYZZFields_4);
}
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID = XLXSBJDMX_BJDID and XLXSBJDYZZ0_XH = XLXSBJDMX_XH ");
if (sMXBH.Equals("JGE"))
SQL.Add(" left join XLXSBJDJJYZ on XLXSBJDJJYZ_BJDID = XLXSBJDMX_BJDID and XLXSBJDJJYZ_XH = XLXSBJDMX_XH ");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sXHList));
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 isnull(sor.XLXSBJDMX_ZDXJBJDID,' ')=' ' ");
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("sor.XLXSBJDMX_XH", sXHList));
SQL.Add(" ) ");
SQL.Add(" when matched then update set XLXSBJDMX_JSJG = RoundFix( ");
SQL.Add(sJSJGS);
SQL.Add(" ," + iXSWS.ToString() + " )");
string sJSJJE = "RoundFix( RoundFix(" + sJSJGS + "," + iXSWS.ToString() + ")*XLXSBJDMX_BJSL , 2)";
SQL.Add(" , XLXSBJDMX_JSJJE=" + sJSJJE);
string sJSJJCLLX = GetBJFLXX(sBJFLID).XLXSBJFL_JSJJCLLX;
if (sJSJJCLLX.Equals("1"))
{
SQL.Add(string.Format(" , XLXSBJDMX_JSJJCL=case when XLXSBJDMX_BJJE=0 then 0 else RoundFix(100*(XLXSBJDMX_BJJE-{0})/XLXSBJDMX_BJJE,2) end ", sJSJJE));
}
else if (sJSJJCLLX.Equals("2"))
{
SQL.Add(string.Format(" , XLXSBJDMX_JSJJCL=case when {0}=0 then 0 else RoundFix(100*(XLXSBJDMX_BJJE-{0})/{0},2) end ", sJSJJE));
}
else if (sJSJJCLLX.Equals("3"))
{
SQL.Add(string.Format(" , XLXSBJDMX_JSJJCL=case when XLXSBJDMX_BJJE=0 then 0 else RoundFix(100*({0})/XLXSBJDMX_BJJE,2) end ", sJSJJE));
}
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
dberp.ExecSQL(SQL);
}
public static void UpdateYXJJCL(TDatabase dberp, TSQL SQL, string sBJDID, string sBJFLID, string sBJDXHList, int minBJDXH, bool bYBJ, bool bWBJ, bool bWG, bool bFWG, string sTLcpList, DateTime tWHSJCondition)
{
string sYXJJCLLX = GetBJFLXX(sBJFLID).XLXSBJFL_YXJJCLLX;
if (sYXJJCLLX.Equals(""))
return;
SQL.Clear();
SQL.Add(" update XLXSBJDMX set XLXSBJDMX_YXJJCL = (case when XLXSBJDMX_YXJG=0 then 0 else round((1-XLXSBJDMX_ZDXJ/XLXSBJDMX_YXJG),4)*100 end) where XLXSBJDMX_BJDID=:pBJDID and isnull(XLXSBJDMX_ZDXJBJDID,' ') = ' ' ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH >= :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (bYBJ)
SQL.Add(" and XLXSBJDMX_JGBBJ<>0.0");
if (bWBJ)
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.Trim();
dberp.ExecSQL(SQL);
}
/// <summary>
/// 明细变化更新后台字段后同步更新主表总金额等,解决直接刷新网址或者关闭浏览器,就不会触发报价总金额、材料总重量汇总计算问题
/// </summary>
/// <param name="sBJDID"></param>
/// <param name="sJCLLX">表价价差率公式</param>
/// <param name="sJYF">计运费</param>
/// <param name="sYSJDID">运输节点ID</param>
/// <param name="sGYSID">运输单位ID</param>
/// <param name="sYFWLID">运费物料</param>
/// <param name="sBJHYF">报价含运费</param>
public static void UpdateXLXSBJD(TDatabase dberp, TSQL SQL, string sBJDID, string sJCLLX, string sLJJCLLX, string sZDXJJCLLX, string sJYF, string sYSJDID, string sGYSID, string sYFWLID, string sBJHYF)
{
double fZJE = 0;
double fLRE = 0;
double fZZL = 0;
double fCPJE = 0;//表价金额
double fLRL = 0;
double fCLCB = 0;//材料成本
double fBJDCLCB = 0;//报价单材料成本
double fCLCBJCL = 0;
double fZDXJ = 0;//最低限价
double fZDXJJCL = 0;
double fBJLJJJCL = 0;
double fLJF0ZJE = 0;
double fPFZJE = 0;
string sBJLJJCLLX = "";
string sBJJCLBJRQDWCP = "";
string sLJJCLBJRQDWCP = "";
string sZDXJJCLBJRQDWCP = "";
double fZJEQDN = 0;
double fLREQDN = 0;
double fCPJEQDN = 0;
double fCLCBQDN = 0;
double fBJDCLCBQDN = 0;
double fZDXJQDN = 0;
double fLJF0ZJEQDN = 0;
SQL.Clear();
SQL.Add(" select XLXSBJFL_BJLJJCLLX,XLXSBJFL_BJJCLBJRQDWCP,XLXSBJFL_LJJCLBJRQDWCP,XLXSBJFL_ZDXJJCLBJRQDWCP ");
SQL.Add(" FROM XLXSBJFL LEFT JOIN XLXSBJD ON XLXSBJD_BJFLID = XLXSBJFL_BJFLID WHERE XLXSBJD_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet Tmpds = dberp.OpenDataSet(SQL);
if (Tmpds.Tables[0].Rows.Count > 0)
{
sBJLJJCLLX = Tmpds.Tables[0].Rows[0]["XLXSBJFL_BJLJJCLLX"].ToString().Trim();
sBJJCLBJRQDWCP = Tmpds.Tables[0].Rows[0]["XLXSBJFL_BJJCLBJRQDWCP"].ToString().Trim();
sLJJCLBJRQDWCP = Tmpds.Tables[0].Rows[0]["XLXSBJFL_LJJCLBJRQDWCP"].ToString().Trim();
sZDXJJCLBJRQDWCP = Tmpds.Tables[0].Rows[0]["XLXSBJFL_ZDXJJCLBJRQDWCP"].ToString().Trim();
}
SQL.Clear();
SQL.Add("select sum(XLXSBJDMX_BJJE) as ZJE,sum(XLXSBJDMX_JGBBJJCE) as LRE,sum(XLXSBJDMX_PJJE) as PJZJE,");
SQL.Add(" sum(XLXSBJDMX_CLZL) as ZZL,sum(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL) as CPJE,");
SQL.Add(" sum(XLXSBJDMX_CLCB*XLXSBJDMX_BJSL) as CLCB,sum(XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL) as BJDCLCB,");
SQL.Add(" sum(XLXSBJDMX_ZDXJ*XLXSBJDMX_BJSL) as ZDXJ ");
if (sLJJCLLX.Equals("1"))
{
SQL.Add(" ,sum(case when XLXSBJDMX_CLCB = 0 then 0 else XLXSBJDMX_BJJE end) as LJF0ZJE ");
}
else
{
SQL.Add(" ,sum(case when XLXSBJDMX_BJDHQCLCB = 0 then 0 else XLXSBJDMX_BJJE end) as LJF0ZJE ");
}
if (sBJJCLBJRQDWCP.Equals("Y") || sLJJCLBJRQDWCP.Equals("Y") || sZDXJJCLBJRQDWCP.Equals("Y"))
{
SQL.Add(" ,sum(case when XLXSBJDMX_CLZL = 0 then 0 else 1 end * XLXSBJDMX_BJJE ) as ZJEQDN ");
SQL.Add(" ,sum(case when XLXSBJDMX_CLZL = 0 then 0 else 1 end * XLXSBJDMX_JGBBJJCE ) as LREQDN ");
SQL.Add(" ,sum(case when XLXSBJDMX_CLZL = 0 then 0 else 1 end * XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL ) as CPJEQDN ");
SQL.Add(" ,sum(case when XLXSBJDMX_CLZL = 0 then 0 else 1 end * XLXSBJDMX_CLCB*XLXSBJDMX_BJSL ) as CLCBQDN ");
SQL.Add(" ,sum(case when XLXSBJDMX_CLZL = 0 then 0 else 1 end * XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL ) as BJDCLCBQDN ");
SQL.Add(" ,sum(case when XLXSBJDMX_CLZL = 0 then 0 else 1 end * XLXSBJDMX_ZDXJ*XLXSBJDMX_BJSL ) as ZDXJQDN ");
if (sLJJCLLX.Equals("1"))
SQL.Add(" ,sum(case when XLXSBJDMX_CLZL = 0 then 0 else 1 end * case when XLXSBJDMX_CLCB = 0 then 0 else XLXSBJDMX_BJJE end ) as LJF0ZJEQDN ");
else
SQL.Add(" ,sum(case when XLXSBJDMX_CLZL = 0 then 0 else 1 end * case when XLXSBJDMX_BJDHQCLCB = 0 then 0 else XLXSBJDMX_BJJE end ) as LJF0ZJEQDN ");
}
SQL.Add(" from XLXSBJDMX");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
fZJE = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["ZJE"].ToString(), 0);
fLRE = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["LRE"].ToString(), 0);
fZZL = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["ZZL"].ToString(), 0);
fCPJE = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["CPJE"].ToString(), 0);
fCLCB = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["CLCB"].ToString(), 0);
fBJDCLCB = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["BJDCLCB"].ToString(), 0);
fZDXJ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["ZDXJ"].ToString(), 0);
fLJF0ZJE = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["LJF0ZJE"].ToString(), 0);
fPFZJE = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["PJZJE"].ToString(), 0);
if (sBJJCLBJRQDWCP.Equals("Y") || sLJJCLBJRQDWCP.Equals("Y") || sZDXJJCLBJRQDWCP.Equals("Y"))
{
fZJEQDN = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["ZJEQDN"].ToString(), 0);
fLREQDN = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["LREQDN"].ToString(), 0);
fCPJEQDN = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["CPJEQDN"].ToString(), 0);
fCLCBQDN = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["CLCBQDN"].ToString(), 0);
fBJDCLCBQDN = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["BJDCLCBQDN"].ToString(), 0);
fZDXJQDN = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["ZDXJQDN"].ToString(), 0);
fLJF0ZJEQDN = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["LJF0ZJEQDN"].ToString(), 0);
}
}
double ofZJE = fZJE;
if (sBJJCLBJRQDWCP.Equals("Y"))
{
fZJE = fZJEQDN;
fLRE = fLREQDN;
fCPJE = fCPJEQDN;
}
if (sJCLLX.Equals("1"))
{
if (fZJE == 0)
fLRL = 0;
else
fLRL = NumberUtils.RoundX(fLRE / fZJE * 100, 2);
}
else if (sJCLLX.Equals("2"))
{
if (fCPJE == 0)
fLRL = 0;
else
fLRL = NumberUtils.RoundX(fLRE / fCPJE * 100, 2);
}
else if (sJCLLX.Equals("3"))
{
if (fZJE == 0)
fLRL = 0;
else
fLRL = NumberUtils.RoundX(fCPJE / fZJE * 100, 2);
}
else if (sJCLLX.Equals("4"))
{
if (fCPJE == 0)
fLRL = 0;
else
fLRL = NumberUtils.RoundX(fLRE / fCPJE * 100, 2);
}
if (sLJJCLBJRQDWCP.Equals("Y"))
{
fLJF0ZJE = fLJF0ZJEQDN;
fCLCB = fCLCBQDN;
fBJDCLCB = fBJDCLCBQDN;
}
if (sLJJCLLX.Equals("1"))
{
if (fLJF0ZJE == 0)
fCLCBJCL = 0;
else
fCLCBJCL = 100 - NumberUtils.RoundX(fCLCB / fLJF0ZJE * 100, 2);
}
else if (sLJJCLLX.Equals("2"))
{
if (fLJF0ZJE == 0)
fCLCBJCL = 0;
else
fCLCBJCL = 100 - NumberUtils.RoundX(fBJDCLCB / fLJF0ZJE * 100, 2);
}
else if (sLJJCLLX.Equals("3"))
{
if (fBJDCLCB == 0)
fCLCBJCL = 0;
else
fCLCBJCL = NumberUtils.RoundX(fLJF0ZJE / fBJDCLCB * 100, 2) - 100;
}
else if (sLJJCLLX.Equals("4"))
{
if (fLJF0ZJE == 0)
fCLCBJCL = 0;
else
fCLCBJCL = NumberUtils.RoundX(fBJDCLCB / fLJF0ZJE * 100, 2);
}
if (sBJJCLBJRQDWCP.Equals("Y") || sLJJCLBJRQDWCP.Equals("Y"))
{
fCPJE = fCPJEQDN;
fBJDCLCB = fBJDCLCBQDN;
}
if (sBJLJJCLLX.Equals("1"))
{
if (fCPJE != 0)
fBJLJJJCL = NumberUtils.RoundX((fCPJE - fBJDCLCB) / fCPJE * 100, 2);
}
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
int iXSWS = CMISproConvert.StrToInt(tSession.GetOption(100860000, "BJU054"));
if (sZDXJJCLBJRQDWCP.Equals("Y"))
{
fZDXJ = fZDXJQDN;
fZJE = fZJEQDN;
fBJDCLCB = fBJDCLCBQDN;
}
if (sZDXJJCLLX.Equals("1"))
{
if (fZJE == 0)
fZDXJJCL = 0;
else
fZDXJJCL = 100 - NumberUtils.RoundX(fZDXJ / fZJE * 100, iXSWS);
}
else if (sZDXJJCLLX.Equals("2"))
{
if (fZDXJ == 0)
fZDXJJCL = 0;
else
fZDXJJCL = NumberUtils.RoundX(fZJE / fZDXJ * 100, iXSWS) - 100;
}
else if (sZDXJJCLLX.Equals("3"))
{
if (fZJE == 0)
fZDXJJCL = 0;
else
fZDXJJCL = NumberUtils.RoundX(fZDXJ / fZJE * 100, iXSWS);
}
else if (sZDXJJCLLX.Equals("4"))
{
if (fZDXJ == 0)
fZDXJJCL = 0;
else
fZDXJJCL = 100 - NumberUtils.RoundX(fBJDCLCB / fZDXJ * 100, iXSWS);
}
else if (sZDXJJCLLX.Equals("5"))
{
if (fCPJE == 0)
fZDXJJCL = 0;
else
fZDXJJCL = NumberUtils.RoundX(fZDXJ / (fCPJE * sCJXS) * 100, iXSWS);
}
fZJE = ofZJE;
fZJE = NumberUtils.RoundX(fZJE, 2);
fZZL = NumberUtils.RoundX(fZZL, 3);
double fYSFY = 0;//运输费用
//计运费
if (sJYF.Equals("Y"))
{
fYSFY = XLBJDInfo.GetYSFY(sYSJDID, sGYSID, sYFWLID, fZZL);
}
SQL.Clear();
SQL.Add("update XLXSBJD set XLXSBJD_ZJE=:pZJE,XLXSBJD_YSFY=:pYSFY,XLXSBJD_LRL=:pLRL,XLXSBJD_ZZL=:pZZL,XLXSBJD_CLCBJCL= :pCLCBJCL, ");
SQL.Add(" XLXSBJD_JGBBJLJJCL= :pJGBBJLJJCL,XLXSBJD_ZDXJJCL = :pZDXJJCL,XLXSBJD_PJZJE=:pPJZJE ");
SQL.Add(" where XLXSBJD_BJDID=:pBJDID ");
if (XLBJDUtils.GetXLXSBJPZXX(100860000).XLXSBJPZ_PFBJRBJ == "Y")
fZJE += fPFZJE;
if (sBJHYF.Equals("Y"))
SQL.ParamByName("pZJE").Value = fZJE + fYSFY * fZZL;
else
SQL.ParamByName("pZJE").Value = fZJE;
SQL.ParamByName("pYSFY").Value = fYSFY * fZZL;
SQL.ParamByName("pLRL").Value = fLRL;
SQL.ParamByName("pZZL").Value = fZZL;
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pCLCBJCL").Value = fCLCBJCL;
SQL.ParamByName("pJGBBJLJJCL").Value = fBJLJJJCL;
SQL.ParamByName("pZDXJJCL").Value = fZDXJJCL;
SQL.ParamByName("pPJZJE").Value = fPFZJE;
dberp.ExecSQL(SQL);
UpdateXLXSBJDJCXJ4(dberp, SQL, sBJDID);
}
//获取报价产品属于组合产品目录价格表的哪一张JGC价格表,返回价格表号
private static string GetJGCID(string sJGCIDS, string sXLXHID, string sXLGGID, string sST, string sDYDJ)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
if (!sJGCIDS.Trim().Equals(""))
{
sql.Clear();
sql.Add("select XLXSJGBMX_JGBID from XLXSJGBMX");
sql.Add(" left join XLXSJGB on XLXSJGB_MXBH='JGC' and XLXSJGB_JGBID=XLXSJGBMX_JGBID");
sql.Add(" where " + CMISproDataBase.GetWhereEqual("XLXSJGB_JGBID", sJGCIDS.Trim()));
sql.Add(" and XLXSJGBMX_XLXHID=:pXLXHID and XLXSJGBMX_XLGGID=:pXLGGID");
sql.Add(" and XLXSJGBMX_XLBZID=:pXLBZID and isnull(XLXSJGBMX_DYDJID,' ')=:pDYDJID");
sql.Add(" order by XLXSJGBMX_JGBID,XLXSJGBMX_XH");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sST;
sql.ParamByName("pDYDJID").Value = sDYDJ.Trim().Equals("") ? " " : sDYDJ.Trim();
DataSet dsJGC = dberp.OpenDataSet(sql);
if (dsJGC.Tables[0].Rows.Count > 0)
{
return dsJGC.Tables[0].Rows[0]["XLXSJGBMX_JGBID"].ToString().Trim();
}
else
return "";
}
else
return "";
}
//获取YZID对应的TJYZID
public static Dictionary<string, string> GetTJYZIDXX(string sMXBH)
{
Dictionary<string, string> dicTJYZID = new Dictionary<string, string>();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXSTZYZ_YZID,XLXSTZYZ_TJYZID");
sql.Add(" from XLXSTZYZ");
sql.Add(" where XLXSTZYZ_MXBH=:pMXBH");
sql.Add(" order by XLXSTZYZ_YZID");
sql.ParamByName("pMXBH").Value = sMXBH;
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sYZID = ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim();
string sTJYZID = ds.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
dicTJYZID.Add(sYZID, sTJYZID);
}
return dicTJYZID;
}
//获取YZID对应的TYZZYZID
public static Dictionary<string, string> GetTYZZYZIDXX(string sMXBH)
{
Dictionary<string, string> dicTYZZYZID = new Dictionary<string, string>();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXSTZYZ_YZID,XLXSTZYZ_TYZZYZID");
sql.Add(" from XLXSTZYZ");
sql.Add(" where XLXSTZYZ_MXBH=:pMXBH");
sql.Add(" order by XLXSTZYZ_YZID");
sql.ParamByName("pMXBH").Value = sMXBH;
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sYZID = ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim();
string sTYZZYZID = ds.Tables[0].Rows[i]["XLXSTZYZ_TYZZYZID"].ToString().Trim();
dicTYZZYZID.Add(sYZID, sTYZZYZID);
}
return dicTYZZYZID;
}
/// <summary>
/// 截断含中文的字符串
/// </summary>
/// <param name="Input"></param>
/// <param name="Len"></param>
/// <returns></returns>
public static string SubStringFunc(string Input, int Len)
{
byte[] b = System.Text.ASCIIEncoding.Default.GetBytes(Input);
if (b.Length <= Len)
return Input;
else
{
if (int.Parse(b[Len - 1].ToString()).Equals(63))
return System.Text.ASCIIEncoding.Default.GetString(b, 0, Len);
else
return System.Text.ASCIIEncoding.Default.GetString(b, 0, Len).TrimEnd('?');
}
}
/// <summary>
/// 获取报价分类的调价因素----调用之前先判断必须是JGE
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
public static string GetJGBTJYSSByBJFLID(string sBJFLID)
{
string sJGBTJYSS = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("SELECT XLXSBJFL_JGBTJYSS FROM XLXSBJFL where XLXSBJFL_BJFLID =:pBJFLID ");
SQL.ParamByName("pBJFLID").Value = sBJFLID;
DataSet dsBJFLDID = dberp.OpenDataSet(SQL);
if (dsBJFLDID.Tables[0].Rows.Count > 0)
{
sJGBTJYSS = dsBJFLDID.Tables[0].Rows[0][0].ToString().Trim();
}
return sJGBTJYSS;
}
public static string GetJGBJSGS(string sJGBID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSJGB_JSGS ");
SQL.Add(" from XLXSJGB");
SQL.Add(" where XLXSJGB_JGBID=:pJGBID");
SQL.ParamByName("pJGBID").Value = sJGBID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0]["XLXSJGB_JSGS"].ToString().Trim();
}
return "";
}
/// <summary>
/// 是否JGE价格表
/// </summary>
/// <param name="sJGBID"></param>
/// <returns></returns>
public static bool IsJGEJGB(string sJGBID)
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSJGB where XLXSJGB_JGBID='{0}' and XLXSJGB_MXBH='JGE'", sJGBID.Trim())))
return true;
else
return false;
}
/// <summary>
/// 获取JGE价格表因子相关信息
/// </summary>
/// <param name="dsJGBYZ"></param>
public static void GetdsJGBYZ_JGE(string sJGEJGBID, ref DataSet dsJGBYZ)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
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=:pJGEJGBID ");
SQL.Add(" order by XLXSTZYZ_TJYZID,XLXSTZYZ_XSXH,XLXSJGBYZ_YZID");
SQL.ParamByName("pJGEJGBID").Value = sJGEJGBID;
dsJGBYZ = dberp.OpenDataSet(SQL);
}
/// <summary>
/// 获取JGE类型的因子ID以及因子相关信息
/// </summary>
/// <returns></returns>
/// 通用计算,dicXLJBXX要求(必须):XLXHID-KVV, XLGGID-1*2.5, XLBZID-G,DYDJID-0.6/1kV,XSWS-5,XH-3,BJDID-BJ20210001、
/// flag标志为0,表示从明细手动编辑调整需要调整计算公式
public static Dictionary<string, string> GetJGBTZYZ_JGE(string sJGEJGBID, string flag, DataSet dsJGBYZ, Dictionary<string, string> dicXLJBXX)
{
//汇总因子,用于更新----总计10个最终赋值dicJGBTZYZGS进行输出
Dictionary<string, double> dicJGBYZZ = new Dictionary<string, double>();
//用于记录调整因子的值
Dictionary<string, double> dicTJYZIDValue = new Dictionary<string, double>();
//返回值-包括JD,KD,JJ公式,以及因子值,信息,计算公式
Dictionary<string, string> dicJGBTZYZGS = new Dictionary<string, string>();
string sJDSQL = "1";
string sKDSQL = "1";
string sJJSQL = "0";
string sSXSQL = "1";
string sTJYSList_ = "";//记录调价因素为空的因子id
string sTJYSList1 = "";//记录调价因素为'1'的因子id
string sTJYSList3 = "";//记录调价因素为'1'的因子id
string sTJYSList4 = "";//记录调价因素为'4'的因子id
string sTJYSList5 = "";//记录调价因素为'5'的因子id
string sTJYSList8 = "";//记录调价因素为'8'的因子id
string sTJYSList9 = "";//记录调价因素为'9'的因子id
string sTJYSListA = "";//记录调价因素为'A'的因子id
string sTJYSListB = "";//记录调价因素为'B'的因子id
string sTJYSListC = "";//记录调价因素为'C'的因子id
if (dsJGBYZ.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsJGBYZ.Tables[0].Rows.Count; i++)
{
if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals(""))
{
sTJYSList_ += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("1"))
{
sTJYSList1 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("3"))
{
sTJYSList3 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("4"))
{
sTJYSList4 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("5"))
{
sTJYSList5 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("8"))
{
sTJYSList8 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("9"))
{
sTJYSList9 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("A"))
{
sTJYSListA += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("B"))
{
sTJYSListB += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("C"))
{
sTJYSListC += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
}
sTJYSList_ = sTJYSList_.TrimEnd(',');
sTJYSList1 = sTJYSList1.TrimEnd(',');
sTJYSList3 = sTJYSList3.TrimEnd(',');
sTJYSList4 = sTJYSList4.TrimEnd(',');
sTJYSList5 = sTJYSList5.TrimEnd(',');
sTJYSList8 = sTJYSList8.TrimEnd(',');
sTJYSList9 = sTJYSList9.TrimEnd(',');
sTJYSListA = sTJYSListA.TrimEnd(',');
sTJYSListB = sTJYSListB.TrimEnd(',');
sTJYSListC = sTJYSListC.TrimEnd(',');
string sTJYZID = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim();
string sJJFS = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim();
if (!dicTJYZIDValue.ContainsKey(sTJYZID))
{
dicTJYZIDValue.Add(sTJYZID, 0);
}
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 (!dicTJYZIDValue.ContainsKey(sTJYZID))
{
dicTJYZIDValue.Add(sTJYZID, 0);
}
}
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 + "*SXYZZ_" + sTJYZID;
}
#region 设置因子值
//逐行获取因子值-根据型号规格标准电压等级等
Dictionary<string, string> dicXLGGB = XLBJDUtils.GetXXJGIDByXLGGID(dicXLJBXX["XLGGID"], dicXLJBXX["XLXHID"]);
string fZXJM = dicXLGGB["ZXJM"];
string fXXJGID = dicXLGGB["XXJGID"];
string fGGZXS = dicXLGGB["GGZXS"];
//获取0,1,4,5值
Dictionary<string, double> dicYZZ0 = new Dictionary<string, double>();
if (!sTJYSList_.Equals(""))
{
dicYZZ0 = XLBJDUtils.GetJGBYZZ0(sJGEJGBID);
}
Dictionary<string, double> dicYZZ1 = new Dictionary<string, double>();
if (!sTJYSList1.Equals(""))
{
dicYZZ1 = XLBJDUtils.GetJGBYZZ1(sJGEJGBID, dicXLJBXX["XLXHID"], dicXLJBXX["XLGGID"], dicXLJBXX["XLBZID"], dicXLJBXX["DYDJID"]);
}
Dictionary<string, double> dicYZZ3 = new Dictionary<string, double>();
if (!sTJYSList3.Equals(""))
{
dicYZZ3 = XLBJDUtils.GetJGBYZZ3(sJGEJGBID, "", dicXLJBXX["XLXHID"], fZXJM);
}
Dictionary<string, double> dicYZZ4 = new Dictionary<string, double>();
if (!sTJYSList4.Equals(""))
{
dicYZZ4 = XLBJDUtils.GetJGBYZZ4(sJGEJGBID, dicXLJBXX["XLXHID"], dicXLJBXX["DYDJID"], fXXJGID, fZXJM);
}
Dictionary<string, double> dicYZZ5 = new Dictionary<string, double>();
if (!sTJYSList5.Equals(""))
{
dicYZZ5 = XLBJDUtils.GetJGBYZZ5(sJGEJGBID, dicXLJBXX["XLXHID"], dicXLJBXX["DYDJID"], fZXJM, fGGZXS);
}
Dictionary<string, double> dicYZZ8 = new Dictionary<string, double>();
if (!sTJYSList8.Equals(""))
{
dicYZZ8 = XLBJDUtils.GetJGBYZZ8(sJGEJGBID, dicXLJBXX["XLXHID"], dicXLJBXX["XLGGID"], dicXLJBXX["XLBZID"], dicXLJBXX["DYDJID"]);
}
Dictionary<string, double> dicYZZ9 = new Dictionary<string, double>();
if (!sTJYSList9.Equals(""))
{
dicYZZ9 = XLBJDUtils.GetJGBYZZ9(sJGEJGBID, dicXLJBXX["XLXHID"], dicXLJBXX["XLGGID"], dicXLJBXX["DYDJID"]);
}
Dictionary<string, double> dicYZZA = new Dictionary<string, double>();
if (!sTJYSListA.Equals(""))
{
dicYZZA = XLBJDUtils.GetJGBYZZA(sJGEJGBID, dicXLJBXX["XLXHID"], dicXLJBXX["XLGGID"], dicXLJBXX["DYDJID"]);
}
Dictionary<string, double> dicYZZB = new Dictionary<string, double>();
if (!sTJYSListB.Equals(""))
{
dicYZZB = XLBJDUtils.GetJGBYZZB(sJGEJGBID, fZXJM);
}
Dictionary<string, double> dicYZZC = new Dictionary<string, double>();
if (!sTJYSListC.Equals(""))
{
dicYZZC = XLBJDUtils.GetJGBYZZC(sJGEJGBID, dicXLJBXX["XLXHID"], dicXLJBXX["DYDJID"], fZXJM);
}
foreach (string sYZID in dicYZZ0.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZ0[sYZID]);
}
}
foreach (string sYZID in dicYZZ1.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZ1[sYZID]);
}
}
foreach (string sYZID in dicYZZ3.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZ3[sYZID]);
}
}
foreach (string sYZID in dicYZZ4.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZ4[sYZID]);
}
}
foreach (string sYZID in dicYZZ5.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZ5[sYZID]);
}
}
foreach (string sYZID in dicYZZ8.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZ8[sYZID]);
}
}
foreach (string sYZID in dicYZZ9.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZ9[sYZID]);
}
}
foreach (string sYZID in dicYZZA.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZA[sYZID]);
}
}
foreach (string sYZID in dicYZZB.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZB[sYZID]);
}
}
foreach (string sYZID in dicYZZC.Keys)
{
if (!dicJGBYZZ.ContainsKey(sYZID))
{
dicJGBYZZ.Add(sYZID, dicYZZC[sYZID]);
}
}
#endregion
}
Dictionary<string, string> dicJGBFGQCPYZ = XLBJDInfo.GetJGBFGQCPYZ(sJGEJGBID);
for (int j = 1; j <= 20; j++)
{
if (!dicJGBYZZ.ContainsKey("JZ" + j.ToString().PadLeft(2, '0')))
{
if (dicJGBFGQCPYZ.Count > 0 && dicJGBFGQCPYZ.ContainsKey("JZ" + j.ToString().PadLeft(2, '0')))
dicJGBYZZ.Add("JZ" + j.ToString().PadLeft(2, '0'), -9999);
else
dicJGBYZZ.Add("JZ" + j.ToString().PadLeft(2, '0'), 0);
}
}
string iYZID = "";
string iTZYZID = "";
string sJSGS = XLBJDUtils.GetJGBJSGS(sJGEJGBID);
if (flag.Trim().Equals("0"))//LF2022-08-06:flag为0代表sJDSQL、sKDSQL、sJJSQL、sSXSQL都由字段简称替换为因子值,由服务端计算引擎直接计算;不为0代表它们可以拼接到sql语句中执行
{
//将dicJGBYZZ中待计算分调价因子的因子值补齐
for (int i = 0; i < dsJGBYZ.Tables[0].Rows.Count; i++)
{
iYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim();
iTZYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
if (dicJGBYZZ.ContainsKey(iYZID))
{
dicTJYZIDValue[iTZYZID] += dicJGBYZZ[iYZID];
}
}
foreach (KeyValuePair<string, double> kvp in dicTJYZIDValue)
{
sJDSQL = sJDSQL.Replace("JDYZZ_" + kvp.Key, kvp.Value.ToString().Trim());
sKDSQL = sKDSQL.Replace("KDYZZ_" + kvp.Key, kvp.Value.ToString().Trim());
sJJSQL = sJJSQL.Replace("JJYZZ_" + kvp.Key, kvp.Value.ToString().Trim());
if (kvp.Value >= 0)
sSXSQL = sSXSQL.Replace("SXYZZ_" + kvp.Key, "(1/(1-" + kvp.Value.ToString().Trim() + "/100.0))");
else
sSXSQL = sSXSQL.Replace("SXYZZ_" + kvp.Key, "(1+" + kvp.Value.ToString().Trim() + "/100.0)");
}
}
else if (flag.Trim().Equals("1"))
{
}
dicJGBTZYZGS.Add("JD", sJDSQL);
dicJGBTZYZGS.Add("KD", sKDSQL);
dicJGBTZYZGS.Add("JJ", sJJSQL);
dicJGBTZYZGS.Add("SX", sSXSQL);
foreach (KeyValuePair<string, double> kvp in dicJGBYZZ)
{
dicJGBTZYZGS.Add(kvp.Key, kvp.Value.ToString().Trim());
sJSGS = sJSGS.Replace(kvp.Key, kvp.Value.ToString().Trim());
}
if (JJFirst_JGBYZ(sJGEJGBID))
{
dicJGBTZYZGS.Add("JJFirst", "1");
}
else
{
dicJGBTZYZGS.Add("JJFirst", "0");
}
//增加计算公式
dicJGBTZYZGS.Add("JSGS", sJSGS);
//返回值-包括JD,KD,JJ公式,以及10个因子值,以及先加价还是后加价
return dicJGBTZYZGS;
}
//计量单位的转化支持1个参数,如果小数位数传入大于等于0,则需要进行小数位数处理
public static void ChangeJLDW_1(string sSource, string sTarget, int iXSWS, ref string sValueA)
{
double dHSBL = GetJLDWHSBL_JG(sSource, sTarget);
if (iXSWS >= 0)
{
sValueA = (NumberUtils.RoundX(CMISproConvert.StrToFloat(sValueA) * dHSBL, iXSWS)).ToString().Trim();
}
else
{
sValueA = (CMISproConvert.StrToFloat(sValueA) * dHSBL).ToString().Trim();
}
}
/// <summary>
/// 将计量单位转化为用于计算的计算单位,只会返回Km、M、非长度
/// </summary>
/// <param name="sJLDW"></param>
/// <param name="sBJU003"></param>
/// <returns></returns>
public static string GetsJSDW(string sJLDW, string sBJU003)
{
string sJSDW = sJLDW;
if (sJLDW.Trim().ToUpper().Equals("M") || sJLDW.Trim().Equals("米"))
{
sJSDW = "M";
}
else if (sJLDW.Trim().ToUpper().Equals("KM") || sJLDW.Trim().Equals("千米"))
{
sJSDW = "Km";
}
else if (sJLDW.Trim().ToUpper().Equals("T") || sJLDW.Trim().Equals("吨"))
{
sJSDW = "T";
}
else if (sJLDW.Trim().ToUpper().Equals("KG") || sJLDW.Trim().Equals("千克") || sJLDW.Trim().Equals("公斤"))
{
sJSDW = "Kg";
}
else if (sJLDW.Trim().Equals(""))
{
if (sBJU003.Equals("米"))
sJSDW = "M";
else if (sBJU003.Equals("千米"))
sJSDW = "Km";
else
sJSDW = sBJU003;
}
return sJSDW;
}
//获取XLXSJGBMX_JLDW
public static string GetJGBJLDW(string sJGBID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJU003, string sBJU018)
{
string sJLDW = sBJU003;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add("select XLXSJGBMX_JLDW from XLXSJGBMX where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XLXHID=:pXLXHID and XLXSJGBMX_XLGGID=:pXLGGID and XLXSJGBMX_XLBZID=:pXLBZID and isnull(XLXSJGBMX_DYDJID,' ')=:pDYDJID ");
sql.ParamByName("pJGBID").Value = sJGBID;
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim();
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
sJLDW = ds.Tables[0].Rows[0]["XLXSJGBMX_JLDW"].ToString().Trim();
if (sBJU018.Equals("Y") && XLBJDUtils.sJQCDJLDWList.Contains(sJLDW.ToUpper()))
{
sJLDW = "M";
}
}
return sJLDW;
}
/// <summary>
/// 获取原计量单位数量换算为目标计量单位数量、所需乘的倍率
/// </summary>
public static double GetJLDWHSBL_SL(string sSource, string sBJU003)
{
double dHSBL = 1;
string sSourceJSDW = GetsJSDW(sSource, sBJU003);
string sBJU003JSDW = GetsJSDW(sBJU003, sBJU003);
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
if (sSourceJSDW.ToUpper().Equals("KM") && sBJU003JSDW.ToUpper().Equals("M"))
{
dHSBL = 1000;
}
else if (sSourceJSDW.ToUpper().Equals("M") && sBJU003JSDW.ToUpper().Equals("KM"))
{
dHSBL = 0.001;
}
if (dicLenJLDWTD.ContainsKey(sSourceJSDW) && sBJU003JSDW.ToUpper().Equals("M"))
{
dHSBL = dicLenJLDWTD[sSourceJSDW];
}
else if (dicLenJLDWTD.ContainsKey(sSourceJSDW) && sBJU003JSDW.ToUpper().Equals("KM"))
{
dHSBL = 0.001 * dicLenJLDWTD[sSourceJSDW];
}
return dHSBL;
}
/// <summary>
/// 根据四要素进行计量单位的互相转换----相对于两个参数的方法,支持计量单位和非计量单位的互相以及各自的转换
/// </summary>
/// <param name="sSource">原始计量单位</param>
/// <param name="sTarget">目标计量单位</param>
/// <param name="sXLXHID">型号</param>
/// <param name="sXLGGID">规格</param>
/// <param name="sXLBZID">标准</param>
/// <param name="sDYDJID">电压等级</param>
/// <returns></returns>
public static double GetJLDWHSBL_JG(string sSource, string sTarget, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
double dHSBL = 0;
string sSourceJSDW = GetsJSDW(sSource, sTarget);
string sTargetJSDW = GetsJSDW(sTarget, sTarget);
double fCLZL = 0;
if (sJCJLDWList_Weg.IndexOf(sSourceJSDW.ToUpper()) >= 0 || sJCJLDWList_Weg.IndexOf(sTargetJSDW.ToUpper()) >= 0)
{
fCLZL = GetCLZL(sXLXHID, sXLGGID, sXLBZID, sDYDJID, false);
}
//sBJU003值域:千米:Km;米:M;千米:千米;米:米
if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米"))
{
if (fCLZL != 0)
{
if (sSourceJSDW.ToUpper().Equals("KM"))
{
if (sTargetJSDW.ToUpper().Equals("KG"))
{
dHSBL = 1.0 / fCLZL;
}
}
if (sSourceJSDW.ToUpper().Equals("M"))
{
if (sTargetJSDW.ToUpper().Equals("KG"))
{
dHSBL = (1.0 / fCLZL) * 1000;
}
}
if (sSourceJSDW.ToUpper().Equals("KG"))
{
if (sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = fCLZL;
}
}
if (sSourceJSDW.ToUpper().Equals("KM"))
{
if (sTargetJSDW.ToUpper().Equals("T"))
{
dHSBL = (1.0 / fCLZL) * 1000;
}
}
if (sSourceJSDW.ToUpper().Equals("M"))
{
if (sTargetJSDW.ToUpper().Equals("T"))
{
dHSBL = (1.0 / fCLZL) * 1000 * 1000;
}
}
if (sSourceJSDW.ToUpper().Equals("KG"))
{
if (sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = fCLZL;
}
}
if (sSourceJSDW.ToUpper().Equals("T"))
{
if (sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = fCLZL / 1000.0;
}
}
if (sSourceJSDW.ToUpper().Equals("KG"))
{
if (sTargetJSDW.ToUpper().Equals("M"))
{
dHSBL = fCLZL / 1000;
}
}
if (sSourceJSDW.ToUpper().Equals("T"))
{
if (sTargetJSDW.ToUpper().Equals("M"))
{
dHSBL = fCLZL / 1000 / 1000;
}
}
}
}
else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M"))
{
if (fCLZL != 0)
{
if (sSourceJSDW.ToUpper().Equals("KM"))
{
if (sTargetJSDW.ToUpper().Equals("KG"))
{
dHSBL = (1.0 / fCLZL) * (1 / 1000.0);
}
}
if (sSourceJSDW.ToUpper().Equals("M"))
{
if (sTargetJSDW.ToUpper().Equals("KG"))
{
dHSBL = 1.0 / fCLZL;
}
}
if (sSourceJSDW.ToUpper().Equals("KG"))
{
if (sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = fCLZL * 1000.0;
}
}
if (sSourceJSDW.ToUpper().Equals("KM"))
{
if (sTargetJSDW.ToUpper().Equals("T"))
{
dHSBL = 1.0 / fCLZL;
}
}
if (sSourceJSDW.ToUpper().Equals("M"))
{
if (sTargetJSDW.ToUpper().Equals("T"))
{
dHSBL = (1.0 / fCLZL) * 1000;
}
}
if (sSourceJSDW.ToUpper().Equals("KG"))
{
if (sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = fCLZL * 1000.0;
}
}
if (sSourceJSDW.ToUpper().Equals("T"))
{
if (sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = fCLZL;
}
}
if (sSourceJSDW.ToUpper().Equals("KG"))
{
if (sTargetJSDW.ToUpper().Equals("M"))
{
dHSBL = fCLZL;
}
}
if (sSourceJSDW.ToUpper().Equals("T"))
{
if (sTargetJSDW.ToUpper().Equals("M"))
{
dHSBL = fCLZL / 1000.0;
}
}
}
}
if (sSourceJSDW.ToUpper().Equals("KM"))
{
if (sTargetJSDW.ToUpper().Equals("M"))
{
dHSBL = 0.001;
}
}
if (sSourceJSDW.ToUpper().Equals("M"))
{
if (sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = 1000;
}
}
if (sSourceJSDW.ToUpper().Equals("M"))
{
if (sTargetJSDW.ToUpper().Equals("M"))
{
dHSBL = 1.0;
}
}
if (sSourceJSDW.ToUpper().Equals("KM"))
{
if (sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = 1.0;
}
}
if (sSourceJSDW.ToUpper().Equals("T"))
{
if (sTargetJSDW.ToUpper().Equals("KG"))
{
dHSBL = 0.001;
}
}
if (sSourceJSDW.ToUpper().Equals("KG"))
{
if (sTargetJSDW.ToUpper().Equals("T"))
{
dHSBL = 1000;
}
}
if (sSourceJSDW.ToUpper().Equals("KG"))
{
if (sTargetJSDW.ToUpper().Equals("KG"))
{
dHSBL = 1;
}
}
if (sSourceJSDW.ToUpper().Equals("T"))
{
if (sTargetJSDW.ToUpper().Equals("T"))
{
dHSBL = 1.0;
}
}
//保留到最大精度
dHSBL = NumberUtils.RoundX(dHSBL, 15);
return dHSBL;
}
/// <summary>
/// 获取原计量单位价格换算为目标计量单位价格、所需乘的倍率
/// </summary>
public static double GetJLDWHSBL_JG(string sSource, string sTarget)
{
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
double dHSBL = 1;
string sSourceJSDW = GetsJSDW(sSource, sTarget);
string sTargetJSDW = GetsJSDW(sTarget, sTarget);
if (!sTargetJSDW.Equals("Km") && !sTargetJSDW.Equals("M") && !dicLenJLDWTD.ContainsKey(sTargetJSDW))
{
if (sSourceJSDW.Equals("Km") || sSourceJSDW.Equals("M") || dicLenJLDWTD.ContainsKey(sSourceJSDW))
{
dHSBL = 0;
}
else
{
if (!sTargetJSDW.Equals(sSourceJSDW))//两个非长度单位不等,也置为0
{
dHSBL = 0;
}
}
}
else
{
if (!sSourceJSDW.Equals("Km") && !sSourceJSDW.Equals("M") && !dicLenJLDWTD.ContainsKey(sSourceJSDW))
{
dHSBL = 0;
}
else//两个长度单位,才允许正常换算
{
if (sSourceJSDW.ToUpper().Equals("KM") && sTargetJSDW.ToUpper().Equals("M"))
{
dHSBL = 0.001;
}
else if (sSourceJSDW.ToUpper().Equals("M") && sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = 1000;
}
else if (sSourceJSDW.ToUpper().Equals("KM") && dicLenJLDWTD.ContainsKey(sTargetJSDW))
{
dHSBL = 0.001 * dicLenJLDWTD[sTargetJSDW];
}
else if (sSourceJSDW.ToUpper().Equals("M") && dicLenJLDWTD.ContainsKey(sTargetJSDW))
{
dHSBL = dicLenJLDWTD[sTargetJSDW];
}
else if (dicLenJLDWTD.ContainsKey(sSourceJSDW) && sTargetJSDW.ToUpper().Equals("M"))
{
dHSBL = 1 / dicLenJLDWTD[sSourceJSDW];
}
else if (dicLenJLDWTD.ContainsKey(sSourceJSDW) && sTargetJSDW.ToUpper().Equals("KM"))
{
dHSBL = 1 / dicLenJLDWTD[sSourceJSDW] * 1000;
}
}
}
return dHSBL;
}
public static double GetCLZL_BJDJLDW(string sBJDJLDW)
{
string sJCJLDWList_Weg1 = "KG、千克、公斤";
string sJCJLDWList_Weg2 = "T、吨";
double dHSBL = 1.0;
if (sJCJLDWList_Weg1.IndexOf(sBJDJLDW.ToUpper()) >= 0)
{
dHSBL = 1.0;
}
else if (sJCJLDWList_Weg2.IndexOf(sBJDJLDW.ToUpper()) >= 0)
{
dHSBL = 1000.0;
}
return dHSBL;
}
/// <summary>
/// 根据报价分类,报价日期,销售区域获取价格表,如果是JGE,仅返回JGE价格表。如果是一般的价格表,则正常返回对应记录数
/// </summary>
/// <param name="flag">手机端价格表报价:表示手机端100860033|销售报价价格表查询安卓手机服务调用</param>
/// <param name="sBJFLID"></param>
/// <param name="sBJRQ"></param>
/// <param name="sXSQYID"></param>
/// <returns></returns>
public static Dictionary<string, string> GetJGBIDByXSQYID(string flag, string sBJFLID, string sBJRQ, string sXSQYID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Clear();
DataSet ds = new DataSet();
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
//报价分类对应产品目录的行情分段材料、及其报价日行情,用于限制价格表加载项
Dictionary<string, double> dicCPML_BJRCLHQ = XLBJDUtils.GetCPMLBJCL_BJRCLHQ(sBJFLID, sBJRQ);
string sBJCLIDS = XLBJDUtils.GetCPMLBJCL(sBJFLID); ;//报价分类对应产品目录的材料
//表价实时计算价格表
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSBJFL where XLXSBJFL_BJFLID='{0}' and XLXSBJFL_MXBH='JGE'", sBJFLID)))
{
sql.Clear();
sql.Add("select XLXSJGB_JGBID,XLXSJGB_JGBMC from XLXSJGB ");
sql.Add(" where XLXSJGB_MXBH='JGE' ");
sql.Add(" and exists(select 1 from XLXSBJFL where XLXSBJFL_BJFLID=:pBJFLID");
sql.Add(" and (isnull(XLXSBJFL_JGBIDS,' ')=' ' or ','||rtrim(XLXSBJFL_JGBIDS)||',' like '%,'||rtrim(XLXSJGB_JGBID)||',%'))");
sql.Add(" order by XLXSJGB_JGBID ");
sql.ParamByName("pBJFLID").Value = sBJFLID;
ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sJGBID = ds.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim();
string sJGBMC = ds.Tables[0].Rows[i]["XLXSJGB_JGBMC"].ToString().Trim();
dic.Add(sJGBID, sJGBID + "|" + sJGBMC);
}
}
else
{
sql.Clear();
sql.Add("select XLXSJGB_JGBID,XLXSJGB_YXQS,XLXSJGB_YXQZ,XLXSJGB_JGBMC,XLXSJGB_TJYS, XLXSJGB_JGBIDS from XLXSJGB ");
if (!sBJCLIDS.Equals(""))
{
int cIndex = 0;
foreach (string stmpBJCLID in sBJCLIDS.Split(','))
{
string sCLHQBMC = "A" + cIndex.ToString().Trim();
sql.Add("left join XLXSJGBCLHQFD " + sCLHQBMC);
sql.Add(" on " + sCLHQBMC + ".XLXSJGBCLHQFD_MXBH=XLXSJGB_MXBH ");
sql.Add(" and " + sCLHQBMC + ".XLXSJGBCLHQFD_JGBID=XLXSJGB_JGBID ");
sql.Add(" and " + sCLHQBMC + ".XLXSJGBCLHQFD_BJCLID='" + stmpBJCLID + "' ");
cIndex++;
}
}
sql.Add(" where XLXSJGB_MXBH='JGB' and isnull(XLXSJGB_YXQS, convert(datetime, '1900-01-01')) <= '" + sBJRQ + "' ");
if (!tSession.GetOption(100860018,"BJU016").Equals(""))
{
sql.Add(" and (isnull(XLXSJGB_CPMLID,' ')=' ' or " + CMISproDataBase.GetWhereEqual("XLXSJGB_CPMLID", tSession.GetOption(100860018, "BJU016")) + ") ");
}
sql.Add(" and exists(select 1 from XLXSBJFL where XLXSBJFL_BJFLID=:pBJFLID and XLXSBJFL_JGBTJYSS like '%'||rtrim(XLXSJGB_TJYS)||'%'");
sql.Add(" and (isnull(XLXSBJFL_JGBIDS,' ')=' ' or ','||rtrim(XLXSBJFL_JGBIDS)||',' like '%,'||rtrim(XLXSJGB_JGBID)||',%' ");
sql.Add(" or (','||rtrim(XLXSBJFL_JGBIDS)||',' like '%,CUR,%' and isnull(XLXSJGB_YXQZ, convert(datetime, '9999-12-31')) >= '" + DateTime.Now.ToShortDateString() + "') ");
sql.Add(" )");
sql.Add(" and (isnull(XLXSBJFL_CPMLID,' ')=' ' or XLXSBJFL_CPMLID=XLXSJGB_CPMLID)");
sql.Add(" )");
foreach (string tmpBJCLID in dicCPML_BJRCLHQ.Keys)
{
sql.Add(" and exists(select 1 from XLXSJGBCLHQFD where XLXSJGBCLHQFD_MXBH=XLXSJGB_MXBH and XLXSJGBCLHQFD_JGBID=XLXSJGB_JGBID");
sql.Add(string.Format(" and XLXSJGBCLHQFD_BJCLID='{0}' and XLXSJGBCLHQFD_HSJGS<={1} and (XLXSJGBCLHQFD_HSJGZ=0 or XLXSJGBCLHQFD_HSJGZ>={1})",
tmpBJCLID, dicCPML_BJRCLHQ[tmpBJCLID]));
sql.Add(" ) ");
}
//添加参数
sql.ParamByName("pBJFLID").Value = sBJFLID;
if (flag.ToUpper().Equals("手机端价格表报价"))
{
//由于手机端暂未设置销售区域查询条件,暂时去除此条件
//sql.Add(" and (XLXSJGB_TJYS='0' or XLXSJGB_TJYS='1') ");
sql.Add(" order by XLXSJGB_TJYS, ");
if (!sBJCLIDS.Equals(""))
{
int cIndex = 0;
foreach (string stmpBJCLID in sBJCLIDS.Split(','))
{
string sCLHQBMC = "A" + cIndex.ToString().Trim();
sql.Add(sCLHQBMC + ".XLXSJGBCLHQFD_HSJGS desc,");
cIndex++;
}
}
sql.Add(" XLXSJGB_YXQS desc, XLXSJGB_JGBID");
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
Boolean HasTJYS_1 = false;//是否查询出了XLXSJGB_TJYS为1的价格表
//先排XLXSJGB_TJYS为0的价格表
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["XLXSJGB_TJYS"].ToString().Trim().Equals("0"))
{
string sJGBID = ds.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim();
string sJGBMC = ds.Tables[0].Rows[i]["XLXSJGB_JGBMC"].ToString().Trim();
dic.Add(sJGBID, sJGBMC);
}
}
//再排XLXSJGB_TJYS为1的价格表
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["XLXSJGB_TJYS"].ToString().Trim().Equals("1"))
{
string sJGBID = ds.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim();
string sJGBMC = ds.Tables[0].Rows[i]["XLXSJGB_JGBMC"].ToString().Trim();
dic.Add(sJGBID, sJGBMC);
HasTJYS_1 = true;
//排以XLXSJGB_TJYS为1的价格表作为基价的区域价价格表(XLXSJGB_TJYS为2)
for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
{
if (ds.Tables[0].Rows[j]["XLXSJGB_TJYS"].ToString().Trim().Equals("2"))
{
if (("," + ds.Tables[0].Rows[j]["XLXSJGB_JGBIDS"].ToString().Trim() + ",").IndexOf("," + ds.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim() + ",") >= 0)
{
dic.Add(ds.Tables[0].Rows[j]["XLXSJGB_JGBID"].ToString().Trim(), ds.Tables[0].Rows[j]["XLXSJGB_JGBMC"].ToString().Trim());
}
}
}
}
}
//若没有XLXSJGB_TJYS为1的价格表,直接单独排XLXSJGB_TJYS为2的价格表
if (!HasTJYS_1)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["XLXSJGB_TJYS"].ToString().Trim().Equals("2"))
{
dic.Add(ds.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim(), ds.Tables[0].Rows[i]["XLXSJGB_JGBMC"].ToString().Trim());
}
}
}
}
}
else
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSBJFL where XLXSBJFL_BJFLID='{0}' and XLXSBJFL_MXBH='JGB' "
+ "and ',' || rtrim(XLXSBJFL_JGBTJYSS) || ',' like '%,2,%'", sBJFLID)))
{
if (!sXSQYID.Equals(""))
{
sql.Add(" and ','|| rtrim(XLXSJGB_XSQYIDS) ||',' like :pXSQYID and XLXSJGB_TJYS='2' ");
sql.ParamByName("pXSQYID").Value = "%," + sXSQYID + ",%";
}
}
sql.Add(" order by ");
if (!sBJCLIDS.Equals(""))
{
int cIndex = 0;
foreach (string stmpBJCLID in sBJCLIDS.Split(','))
{
string sCLHQBMC = "A" + cIndex.ToString().Trim();
sql.Add(sCLHQBMC + ".XLXSJGBCLHQFD_HSJGS desc,");
cIndex++;
}
}
sql.Add(" XLXSJGB_YXQS desc,ISNULL(XLXSJGB_YXQZ,'9999-12-31') desc, XLXSJGB_JGBID desc");
ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sJGBID = ds.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim();
string sYXQS = ds.Tables[0].Rows[i]["XLXSJGB_YXQS"].ToString().Trim();
string sYXQZ = ds.Tables[0].Rows[i]["XLXSJGB_YXQZ"].ToString().Trim();
string sJGBMC = ds.Tables[0].Rows[i]["XLXSJGB_JGBMC"].ToString().Trim();
if (sYXQS.Equals(""))
sYXQS = "--";
else
sYXQS = CMISproConvert.ConvertDate(sYXQS);
if (sYXQZ.Equals(""))
sYXQZ = "--";
else
sYXQZ = CMISproConvert.ConvertDate(sYXQZ);
if (sJGBMC.Equals(""))
{
dic.Add(sJGBID, sJGBID + "|" + sYXQS + "至" + sYXQZ);
}
else
{
dic.Add(sJGBID, sJGBID + "|" + sYXQS + "至" + sYXQZ + "|" + sJGBMC);
}
}
}
}
return dic;
}
/// <summary>
/// 字符型数值固定小数位数
/// </summary>
/// <param name="s">待调整的数值</param>
/// <param name="x">小数位数</param>
/// <returns></returns>
public static string strPadRight(string s, int x)
{
string str = s;
if (str.Split('.').Length == 2)
{
str = str.Split('.')[0] + "." + str.Split('.')[1].PadRight(x, '0');
}
else
{
string tmp = "0";
if (x > 0)
{
tmp = tmp.PadRight(x, '0');
str = str + "." + tmp;
}
}
return str;
}
/// <summary>
/// 传入四要素,如果是因素3型号加点拓展产品,则返回因素3型号加点拓展产品四要素以及加点因子,否则dicTmpBJCP为空
/// </summary>
/// <param name="dberp"></param>
/// <param name="SQL"></param>
/// <param name="sJGBID"></param>
/// <param name="sXLXHID"></param>
/// <param name="sXLGGID"></param>
/// <param name="sXLBZID"></param>
/// <param name="sDYDJID"></param>
/// <param name="dicTmpBJCP"></param>
public static void GetXLXSJGBMX_YS3(TDatabase dberp, TSQL SQL, string sJGBID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID,
ref Dictionary<string, string> dicTmpBJCP)
{
dicTmpBJCP.Clear();
SQL.Clear();
SQL.Add("select XLXSJGBMX_XH,XLXSJGBMX_HSJJ,XLXSJGBMX_WSJJ,XLXSJGBMX_HSBJ,XLXSJGBMX_WSBJ,XLXSJGBMX_HSJJM,XLXSJGBMX_WSJJM,XLXSJGBMX_HSBJM,XLXSJGBMX_WSBJM, ");
SQL.Add(" case when XLXSJGBMX_SYXH=0 then XLXSJGBMX_XH else XLXSJGBMX_SYXH end as SYJGBXH,XLXSJGBMX_YSJDZ,XLXSJGBMX_CLCBYSJDZ ");
SQL.Add("from XLXSJGBMX ");
SQL.Add("where XLXSJGBMX_JGBID = :pJGBID");
SQL.Add(" and XLXSJGBMX_XLXHID=:pXLXHID and XLXSJGBMX_XLGGID=:pXLGGID and XLXSJGBMX_XLBZID=:pXLBZID and XLXSJGBMX_DYDJID=:pDYDJID");
SQL.Add(" order by XLXSJGBMX_XH");
SQL.ParamByName("pJGBID").Value = sJGBID;
SQL.ParamByName("pXLXHID").Value = sXLXHID;
SQL.ParamByName("pXLGGID").Value = sXLGGID;
SQL.ParamByName("pXLBZID").Value = sXLBZID;
SQL.ParamByName("pDYDJID").Value = sDYDJID;
DataSet dsJGBMX_YS3 = dberp.OpenDataSet(SQL);
if (dsJGBMX_YS3.Tables[0].Rows.Count > 0)
{
dicTmpBJCP.Add("JGBXH3", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_XH"].ToString().Trim());
dicTmpBJCP.Add("JGBXH1", dsJGBMX_YS3.Tables[0].Rows[0]["SYJGBXH"].ToString().Trim());
dicTmpBJCP.Add("YSJDZ", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_YSJDZ"].ToString().Trim());
dicTmpBJCP.Add("CLCBYSJDZ", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_CLCBYSJDZ"].ToString().Trim());
dicTmpBJCP.Add("HSJJ", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_HSJJ"].ToString().Trim());
dicTmpBJCP.Add("WSJJ", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_WSJJ"].ToString().Trim());
dicTmpBJCP.Add("HSBJ", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_HSBJ"].ToString().Trim());
dicTmpBJCP.Add("WSBJ", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_WSBJ"].ToString().Trim());
dicTmpBJCP.Add("HSJJM", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_HSJJM"].ToString().Trim());
dicTmpBJCP.Add("WSJJM", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_WSJJM"].ToString().Trim());
dicTmpBJCP.Add("HSBJM", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_HSBJM"].ToString().Trim());
dicTmpBJCP.Add("WSBJM", dsJGBMX_YS3.Tables[0].Rows[0]["XLXSJGBMX_WSBJM"].ToString().Trim());
}
}
//返回以报价单计量单位为主的价格
//四要素-》表价-》数量-》因子-》报价-》价差率
//调四要素 -> 获取表价之前的数据
public static void UpdateXLXSBJDMX_JGBBJ(TDatabase dberp, TSQL SQL, string sBJDID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, Dictionary<string, string> dic,
ref double dCPJJ, ref double dJJ, ref double dCLCB, ref double dBJDHQCLCB, ref double fCLZL, ref Dictionary<string, double> dicJJYZList_JGE, ref string sWGCPBZ, ref string sJGFBZ)
{
dCPJJ = 0;
dJJ = 0;
dCLCB = 0;
dBJDHQCLCB = 0;
fCLZL = 0;
bool JgIsZero = false;//是否存在有材料用量、无材料价格的情况
string sXH = "";
dic.TryGetValue("sXH", out sXH);
string fBJSL = "0";
dic.TryGetValue("fBJSL", out fBJSL);
string sJLDW = "";
dic.TryGetValue("sJLDW", out sJLDW);
string sXSWS = "5";
dic.TryGetValue("iXSWS", out sXSWS);
int iXSWS = CMISproConvert.StrToInt(sXSWS);
if (iXSWS < 0)
{
iXSWS = 0;
}
else if (iXSWS > 8)
{
iXSWS = 8;
}
string sXSQYID = "";
dic.TryGetValue("sXSQYID", out sXSQYID);
string sBJFLID = "";
dic.TryGetValue("sBJFLID", out sBJFLID);
string sJGBID = "";
dic.TryGetValue("sJGBID", out sJGBID);
string sBJDHQLY = "1";
dic.TryGetValue("sBJDHQLY", out sBJDHQLY);
string sBJRQ = "";
dic.TryGetValue("sBJRQ", out sBJRQ);
string sJGBIDS = "";
dic.TryGetValue("sJGBIDS", out sJGBIDS);
string fJZBJHS = "Y";
dic.TryGetValue("fJZBJHS", out fJZBJHS);
bool bHSBZ = fJZBJHS.Equals("Y");
string sLJJCLLX = "";
dic.TryGetValue("sLJJCLLX", out sLJJCLLX);
string sJCLLX = "";
dic.TryGetValue("sJCLLX", out sJCLLX);
string sBJLY = "";
dic.TryGetValue("sBJLY", out sBJLY);
string sTZCLHQ = "";
dic.TryGetValue("sTZCLHQ", out sTZCLHQ);
string sJGCIDS = "";
dic.TryGetValue("sJGCIDS", out sJGCIDS);
string sJGBTJYS = "";
dic.TryGetValue("sJGBTJYS", out sJGBTJYS);
string sTBJCLID = "";
dic.TryGetValue("sTBJCLID", out sTBJCLID);
string sLBJCLID = "";
dic.TryGetValue("sLBJCLID", out sLBJCLID);
string sTJ = "0";
dic.TryGetValue("sTJ", out sTJ);
if (sTJ.Equals(""))
{
sTJ = "0";
}
string sLJ = "0";
dic.TryGetValue("sLJ", out sLJ);
if (sLJ.Equals(""))
{
sLJ = "0";
}
string sBJU003 = "";
dic.TryGetValue("sBJU003", out sBJU003);
string sBJU018 = "";
dic.TryGetValue("sBJU018", out sBJU018);
bool IsJGEJGB = XLBJDUtils.IsJGEJGB(sJGBID.Trim());
if (IsJGEJGB)
{
dicJJYZList_JGE.Add("JZ01", 0);
dicJJYZList_JGE.Add("JZ02", 0);
dicJJYZList_JGE.Add("JZ03", 0);
dicJJYZList_JGE.Add("JZ04", 0);
dicJJYZList_JGE.Add("JZ05", 0);
dicJJYZList_JGE.Add("JZ06", 0);
dicJJYZList_JGE.Add("JZ07", 0);
dicJJYZList_JGE.Add("JZ08", 0);
dicJJYZList_JGE.Add("JZ09", 0);
dicJJYZList_JGE.Add("JZ10", 0);
dicJJYZList_JGE.Add("JZ11", 0);
dicJJYZList_JGE.Add("JZ12", 0);
dicJJYZList_JGE.Add("JZ13", 0);
dicJJYZList_JGE.Add("JZ14", 0);
dicJJYZList_JGE.Add("JZ15", 0);
dicJJYZList_JGE.Add("JZ16", 0);
dicJJYZList_JGE.Add("JZ17", 0);
dicJJYZList_JGE.Add("JZ18", 0);
dicJJYZList_JGE.Add("JZ19", 0);
dicJJYZList_JGE.Add("JZ20", 0);
}
string sCPJJ = "";
string sJJ = "";
string sCLCB = "";
string sBJDHQCLCB = "";
double dBJDJLDWHSBL = 1;
string sJGBJLDW = GetJGBJLDW(sJGBID, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sBJU003, sBJU018);
string sJGBJSDW = XLBJDUtils.GetsJSDW(sJGBJLDW, sBJU003);
BJFLXX bjflxx = GetBJFLXX(sBJFLID);
string sJGBJJLY = GetXLXSJGBXXByJGBID(sJGBID).XLXSJGB_JJLY;
if (XLBJDUtils.IsJGFJGBMX(sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID))
{
sJGFBZ = "Y";
double dJGFJJ = 0;
double dJGFBJ = 0;
string sJGFJLDW = "";
XLBJDUtils.GetJGBJJ_JGF(sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, bHSBZ, sBJU018, ref dJGFJJ, ref dJGFBJ, ref sJGFJLDW);
//M、KM、米、千米、KG、T、千克、公斤、吨
if (sJCJLDWList.IndexOf(sJGFJLDW.ToUpper()) >= 0
&& sJCJLDWList.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGFJLDW, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGFJLDW, sJLDW);
}
sCPJJ = dJGFBJ.ToString().Trim();
sJJ = dJGFJJ.ToString().Trim();
sCLCB = dJGFJJ.ToString().Trim();
sBJDHQCLCB = dJGFJJ.ToString().Trim();
}
else if (XLBJDUtils.IsWGCP(sXLXHID, sXLGGID, sXLBZID, sDYDJID))
{
sWGCPBZ = "Y";
dBJDJLDWHSBL = 1;
sCPJJ = "0";
sJJ = "0";
sCLCB = "0";
sBJDHQCLCB = "0";
}
else
{
if (!IsJGEJGB)//是否表价实时计算价格表
{
//M、KM、米、千米、KG、T、千克、公斤、吨
if (sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0
&& sJCJLDWList.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGBJSDW, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGBJLDW, sJLDW);
}
//记录衍生产品原四要素
string tmpXLXHID = sXLXHID;
string tmpXLGGID = sXLGGID;
string tmpXLBZID = sXLBZID;
string tmpDYDJID = sDYDJID;
int iSYXH = 0;
double dYSJDZ = 1;
double dCLCBYSJDZ = 1;
bool bExistedSYJGBMX = false;
if (sJGBTJYS.Trim().Equals("1"))
{
//因素1先将衍生产品四要素替换成所依四要素
bExistedSYJGBMX = XLBJDUtils.ExistedSYJGBMX(sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBID, ref iSYXH, ref dYSJDZ, ref dCLCBYSJDZ);
}
if (sBJLY.Equals("D") || sBJLY.Equals("C"))
{
XLBJDInfo.GetFromJGB(sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBID, sJGCIDS, bHSBZ, sBJU018, ref sCPJJ, ref sJJ, ref sCLCB);
if (sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0)
{
if (bExistedSYJGBMX)
XLBJDUtils.GetJGBMXBySYXH(sJGBID, iSYXH, ref sXLXHID, ref sXLGGID, ref sXLBZID, ref sDYDJID);
Dictionary<string, double> aryBJHQ = XLBJDUtils.GetCLCB_BJHQ(sBJFLID, sJGBID, sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBJLDW, sBJU003);
if (bExistedSYJGBMX)
{
sXLXHID = tmpXLXHID;
sXLGGID = tmpXLGGID;
sXLBZID = tmpXLBZID;
sDYDJID = tmpDYDJID;
}
JgIsZero = aryBJHQ["JgIsZero"] == 1 ? true : false;
if (bHSBZ)
{
sCLCB = aryBJHQ["CLCB"].ToString();
}
else
{
sCLCB = aryBJHQ["WSCLCB"].ToString();
}
}
}
else
{
if (sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0)
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJFLBJRHQCL_BJCLID from XLXSBJFLBJRHQCL where XLXSBJFLBJRHQCL_BJFLID='{0}'",
sBJFLID)))
{
if (sBJU018.Equals("Y") && XLBJDUtils.sJQCDJLDWList.Contains(sJGBJLDW.ToUpper()))//若BJU018参数值为Y,且为价格表单位为长度单位,则重新计算成本时,成本的小数位数为XLBJDUtils.JQJSXSWS
{
XLBJDUtils.GetFromJGB_BJRHQ(sXLXHID, sXLGGID, sXLBZID, sDYDJID,
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, sDYDJID,
sJGBID, sJGCIDS, sBJRQ, bHSBZ, iXSWS.ToString(),
sBJFLID, sJGBJLDW, sBJU003, ref sCPJJ, ref sJJ, ref sCLCB, ref JgIsZero);
}
}
else
{
XLBJDInfo.GetFromJGB(sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBID, sJGCIDS, bHSBZ, sBJU018, ref sCPJJ, ref sJJ, ref sCLCB);
}
}
else
{
XLBJDInfo.GetFromJGB(sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBID, sJGCIDS, bHSBZ, sBJU018, ref sCPJJ, ref sJJ, ref sCLCB);
}
}
string sHasCLQD = "N";
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSCLQD where XLXSCLQD_XLXHID='{0}' and XLXSCLQD_XLGGID='{1}' and XLXSCLQD_XLBZID='{2}' and XLXSCLQD_DYDJID='{3}' and XLXSCLQD_WPID='ZZZZ' ", sXLXHID, sXLGGID, sXLBZID, sDYDJID)))
sHasCLQD = "Y";
if (bExistedSYJGBMX && sHasCLQD.Equals("N"))
{
//记录衍生产品原四要素
tmpXLXHID = sXLXHID;
tmpXLGGID = sXLGGID;
tmpXLBZID = sXLBZID;
tmpDYDJID = sDYDJID;
XLBJDUtils.GetJGBMXBySYXH(sJGBID, iSYXH, ref sXLXHID, ref sXLGGID, ref sXLBZID, ref sDYDJID);
}
if (sBJDHQLY.Trim().Equals("1"))
{
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的报价单行情料价改为负数显示
{
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sCLCB) * -1);
}
else
{
sBJDHQCLCB = sCLCB;
}
}
else
{
Dictionary<string, double> aryBJRHQ = XLBJDUtils.GetCLCB_BJRHQ(sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
JgIsZero = aryBJRHQ["JgIsZero"] == 1 ? true : false;
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的报价单行情料价改为负数显示
{
if (bHSBZ)
{
sBJDHQCLCB = Convert.ToString(aryBJRHQ["CLCB"] * -1);
}
else
{
sBJDHQCLCB = Convert.ToString(aryBJRHQ["WSCLCB"] * -1);
}
}
else
{
if (bHSBZ)
{
sBJDHQCLCB = aryBJRHQ["CLCB"].ToString();
}
else
{
sBJDHQCLCB = aryBJRHQ["WSCLCB"].ToString();
}
}
//统一为价格表计量单位的价格
double dBJU003_JGB_JLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJGBJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sBJDHQCLCB) * dBJU003_JGB_JLDWHSBL);
}
if (sTZCLHQ.Equals("Y"))//是否允许调整材料行情
{
if (!sBJDID.Equals(""))
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJDCLHQ_BJCLID from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID='{0}'", sBJDID)))
{
Dictionary<string, double> aryBJDHQCLCB = XLBJDUtils.GetCLCB_BJDHQ(sBJDID, sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
if (bHSBZ)
{
sBJDHQCLCB = aryBJDHQCLCB["CLCB"].ToString();
}
else
{
sBJDHQCLCB = aryBJDHQCLCB["WSCLCB"].ToString();
}
//统一为价格表计量单位的价格
double dBJU003_JGB_JLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJGBJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
if (bjflxx.XLXSBJFL_ABJDHQJSBJ == "Y" && sJGBJJLY == "A")
{
if (ISExistJGBMX(sJGBID, sJGCIDS, sXLXHID, sXLGGID, sXLBZID, sDYDJID) || bjflxx.XLXSBJFL_FJGBCPBJSBJ == "N")
{
sJJ = sBJDHQCLCB;
sCPJJ = Convert.ToString(NumberUtils.RoundX(XLBJDUtils.GetCPJJbyCLCB(NumberUtils.RoundX(CMISproConvert.StrToFloat(sJJ), iXSWS), sJGBID, sJGCIDS, sXLXHID, sXLGGID, sXLBZID, sDYDJID), iXSWS) * dYSJDZ);
sJJ = Convert.ToString(CMISproConvert.StrToFloat(sJJ) * dBJU003_JGB_JLDWHSBL);
sCPJJ = Convert.ToString(CMISproConvert.StrToFloat(sCPJJ) * dBJU003_JGB_JLDWHSBL);
}
}
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sBJDHQCLCB) * dBJU003_JGB_JLDWHSBL);
}
}
}
string sCPLJGS = XLBJDUtils.GetCPLJGS();
//还原四要素
if (bExistedSYJGBMX && sHasCLQD.Equals("N"))
{
sXLXHID = tmpXLXHID;
sXLGGID = tmpXLGGID;
sXLBZID = tmpXLBZID;
sDYDJID = tmpDYDJID;
if (sCPLJGS == "2")
{
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sBJDHQCLCB) * dYSJDZ);
sCLCB = Convert.ToString(CMISproConvert.StrToFloat(sCLCB) * dYSJDZ);
}
if (sCPLJGS == "4")
{
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sBJDHQCLCB) * dCLCBYSJDZ);
sCLCB = Convert.ToString(CMISproConvert.StrToFloat(sCLCB) * dCLCBYSJDZ);
}
}
//无材料清单且料价计算方式为3|按报价单料价加点对照表计算
if (sHasCLQD.Equals("N") && (sCPLJGS == "3"))
{
double dCLQDJDCLCHQ = XLBJDUtils.GetCLQDJDCLCHQ(sBJDID, sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, bHSBZ, sJGBJLDW, sBJU003);
sBJDHQCLCB = Convert.ToString(dCLQDJDCLCHQ);
}
}
else//表价实时计算价格表
{
//M、KM、米、千米、KG、T、千克、公斤、吨
if (sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0
&& sJCJLDWList.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJLDW);
}
bool bExistBJDHQ = false;
if (sTZCLHQ.Equals("Y"))//是否允许调整材料行情
{
if (!sBJDID.Equals(""))
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJDCLHQ_BJCLID from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID='{0}'", sBJDID)))
{
bExistBJDHQ = true;
}
}
}
Dictionary<string, double> dicJGE = XLBJDUtils.GetCLCB_JGE(sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sTBJCLID, sLBJCLID, sTJ, sLJ, bHSBZ, bExistBJDHQ, sBJDID);
JgIsZero = dicJGE["JgIsZero"] == 1 ? true : false;
sCLCB = dicJGE["CLCB"].ToString();
sCPJJ = sCLCB;
sJJ = sCLCB;
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的表价、报价单行情料价改为负数显示
{
sBJDHQCLCB = Convert.ToString(dicJGE["CLCB"] * (-1));
}
else
{
sBJDHQCLCB = sCLCB;
}
DataSet dsJGBYZ = new DataSet();
string sJGBTJYSS = "";
//计算公式以及因子的输出
Dictionary<string, string> dicJGBTZYZGS_JGE = new Dictionary<string, string>();
//记录价格表调价因素相关信息-线缆基本信息
Dictionary<string, string> dicXLJBXX_JGE = new Dictionary<string, string>();
XLBJDUtils.GetdsJGBYZ_JGE(sJGBID.Trim(), ref dsJGBYZ);
sJGBTJYSS = XLBJDUtils.GetJGBTJYSSByBJFLID(sBJFLID);
dicXLJBXX_JGE.Clear();
dicXLJBXX_JGE.Add("XLXHID", sXLXHID);
dicXLJBXX_JGE.Add("XLGGID", sXLGGID);
dicXLJBXX_JGE.Add("XLBZID", sXLBZID);
dicXLJBXX_JGE.Add("DYDJID", sDYDJID);
dicXLJBXX_JGE.Add("BJDJLDWHSBL", dBJDJLDWHSBL.ToString().Trim());
dicJGBTZYZGS_JGE = XLBJDUtils.GetJGBTZYZ_JGE(sJGBID.Trim(), "0", dsJGBYZ, dicXLJBXX_JGE);
//sCLCB = NumberUtils.RoundX(CMISproConvert.StrToFloat(sCLCB), iXSWS).ToString().Trim();
string sTempCLCB = NumberUtils.RoundX(CMISproConvert.StrToFloat(sCLCB), iXSWS).ToString().Trim();
double dZBZ = NumberUtils.RoundX(CMISproConvert.StrToFloat(sTempCLCB), iXSWS);
if (sJGBTJYSS.Equals("1"))
{
string sTmpGS = "";
string sJSGS = dicJGBTZYZGS_JGE["JSGS"].Trim();
if (sJSGS.Equals(""))
{
if (dicJGBTZYZGS_JGE["JJFirst"].Equals("1"))
{
sTmpGS = "(" + sTempCLCB + "+" + dicJGBTZYZGS_JGE["JJ"] + ")*(" + dicJGBTZYZGS_JGE["JD"] + ")*(" + dicJGBTZYZGS_JGE["KD"] + ")*(" + dicJGBTZYZGS_JGE["SX"] + ")";
}
else
{
sTmpGS = sTempCLCB + "*(" + dicJGBTZYZGS_JGE["JD"] + ")*(" + dicJGBTZYZGS_JGE["KD"] + ")*(" + dicJGBTZYZGS_JGE["SX"] + ")+(" + dicJGBTZYZGS_JGE["JJ"] + ")";
}
}
else
{
sTmpGS = sJSGS.Replace("JGBJJ", sTempCLCB);
}
gtExpression exp = new gtExpression();
try
{
dZBZ = NumberUtils.RoundX(exp.Evaluate(sTmpGS), 15);
}
catch
{
dZBZ = 0;
}
Dictionary<string, double> dicJDYZXS = new Dictionary<string, double>();
for (int i = 0; i < dsJGBYZ.Tables[0].Rows.Count; i++)
{
string sYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim();
string sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
if (sJJFS.Equals("JJ") && (!dicJDYZXS.ContainsKey(sYZID)))
dicJDYZXS.Add(sYZID, dBJDJLDWHSBL);
else
dicJDYZXS.Add(sYZID, 1);
}
for (int i = 1; i <= 10; i++)
{
string sYZID = "JZ" + i.ToString().PadLeft(2, '0');
if (dicJGBTZYZGS_JGE.ContainsKey(sYZID) && dicJDYZXS.ContainsKey(sYZID))
{
double sYZZ = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE[sYZID].Trim(), 0) * dicJDYZXS[sYZID];
dicJGBTZYZGS_JGE[sYZID] = sYZZ.ToString();
}
}
dicJJYZList_JGE["JZ01"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ01"], 0);
dicJJYZList_JGE["JZ02"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ02"], 0);
dicJJYZList_JGE["JZ03"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ03"], 0);
dicJJYZList_JGE["JZ04"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ04"], 0);
dicJJYZList_JGE["JZ05"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ05"], 0);
dicJJYZList_JGE["JZ06"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ06"], 0);
dicJJYZList_JGE["JZ07"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ07"], 0);
dicJJYZList_JGE["JZ08"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ08"], 0);
dicJJYZList_JGE["JZ09"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ09"], 0);
dicJJYZList_JGE["JZ10"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ10"], 0);
dicJJYZList_JGE["JZ11"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ11"], 0);
dicJJYZList_JGE["JZ12"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ12"], 0);
dicJJYZList_JGE["JZ13"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ13"], 0);
dicJJYZList_JGE["JZ14"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ14"], 0);
dicJJYZList_JGE["JZ15"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ15"], 0);
dicJJYZList_JGE["JZ16"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ16"], 0);
dicJJYZList_JGE["JZ17"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ17"], 0);
dicJJYZList_JGE["JZ18"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ18"], 0);
dicJJYZList_JGE["JZ19"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ19"], 0);
dicJJYZList_JGE["JZ20"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ20"], 0);
}
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的表价、报价单行情料价改为负数显示
{
sCPJJ = Convert.ToString(dZBZ * (-1));
sCLCB = Convert.ToString(CMISproConvert.StrToFloat(sCLCB) * (-1));
sJJ = Convert.ToString(CMISproConvert.StrToFloat(sJJ) * (-1));
}
else
{
sCPJJ = dZBZ.ToString().Trim();
}
}
}
dCPJJ = CMISproConvert.StrToFloat(sCPJJ, 0);
dJJ = CMISproConvert.StrToFloat(sJJ, 0);
dCLCB = CMISproConvert.StrToFloat(sCLCB, 0);
dBJDHQCLCB = CMISproConvert.StrToFloat(sBJDHQCLCB, 0);
if (sBJU018.Equals("Y") && XLBJDUtils.sJQCDJLDWList.Contains(sJGBJLDW.ToUpper()))//若BJU018参数值为Y,且为价格表单位为长度单位,则先换算倍率后再保留小数位数。
{
dCPJJ = dCPJJ * dBJDJLDWHSBL;
dJJ = dJJ * dBJDJLDWHSBL;
dCLCB = dCLCB * dBJDJLDWHSBL;
dBJDHQCLCB = dBJDHQCLCB * dBJDJLDWHSBL;
dCPJJ = NumberUtils.RoundX(dCPJJ, iXSWS);
dJJ = NumberUtils.RoundX(dJJ, iXSWS);
dCLCB = NumberUtils.RoundX(dCLCB, iXSWS);
dBJDHQCLCB = NumberUtils.RoundX(dBJDHQCLCB, iXSWS);
}
else
{
dCPJJ = NumberUtils.RoundX(dCPJJ, iXSWS);
dJJ = NumberUtils.RoundX(dJJ, iXSWS);
dCLCB = NumberUtils.RoundX(dCLCB, iXSWS);
dBJDHQCLCB = NumberUtils.RoundX(dBJDHQCLCB, iXSWS);
dCPJJ = dCPJJ * dBJDJLDWHSBL;
dJJ = dJJ * dBJDJLDWHSBL;
dCLCB = dCLCB * dBJDJLDWHSBL;
dBJDHQCLCB = dBJDHQCLCB * dBJDJLDWHSBL;
}
if (CMISproConvert.StrToFloat(fBJSL) != 0)
{ //研发自测:王威2025/5/21 15:46:16
fCLZL = XLBJDUtils.GetCLZL(sXLXHID, sXLGGID, sXLBZID, sDYDJID,sJGBID);
double dBJU003_BJD_JLDWHSBL = 1;
if (sJCJLDWList_Weg.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJU003_BJD_JLDWHSBL = XLBJDUtils.GetCLZL_BJDJLDW(sJLDW);
fCLZL = CMISproConvert.StrToFloat(fBJSL) * dBJU003_BJD_JLDWHSBL;
}
else
{
dBJU003_BJD_JLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJLDW);
fCLZL = fCLZL * CMISproConvert.StrToFloat(fBJSL);
fCLZL = fCLZL * dBJU003_BJD_JLDWHSBL;
}
}
else
{
fCLZL = 0;
}
fCLZL = NumberUtils.RoundX(fCLZL, 6);
}
//先加价则返回true-报价单处使用,传入报价分类
public static bool JJFirst_BJDYZ(string sBJFLID)
{
bool bFirst_BJDYZ = false;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSTZYZ_JJFS from XLXSBJFLYZ ");
SQL.Add("left join XLXSTZYZ on XLXSTZYZ_YZID = XLXSBJFLYZ_YZID ");
SQL.Add("where XLXSBJFLYZ_BJFLID =:pBJFLID ");
SQL.Add("and isnull(XLXSTZYZ_BCYTJ,'N') <> 'Y' ");
SQL.Add("order by XLXSTZYZ_XSXH ");
SQL.ParamByName("pBJFLID").Value = sBJFLID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
if (ds.Tables[0].Rows[0][0].ToString().Trim().Equals("JJ"))
{
bFirst_BJDYZ = true;
}
else
{
bFirst_BJDYZ = false;
}
}
return bFirst_BJDYZ;
}
//先加价则返回true-价格表处使用,传入价格表ID
public static bool JJFirst_JGBYZ(string sJGBID)
{
bool bFirst_JGBYZ = false;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSTZYZ_JJFS from XLXSJGBYZ ");
SQL.Add("left join XLXSTZYZ on XLXSTZYZ_YZID = XLXSJGBYZ_YZID ");
SQL.Add("where XLXSJGBYZ_JGBID =:pJGBID ");
SQL.Add("and isnull(XLXSTZYZ_BCYTJ,'N') <> 'Y' ");
SQL.Add("order by XLXSTZYZ_XSXH ");
SQL.ParamByName("pJGBID").Value = sJGBID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
if (ds.Tables[0].Rows[0][0].ToString().Trim().Equals("JJ"))
{
bFirst_JGBYZ = true;
}
else
{
bFirst_JGBYZ = false;
}
}
return bFirst_JGBYZ;
}
public static string GetWhereEqual(string p_FieldName, string p_Values)
{
p_Values = p_Values.Replace(",", "' or " + p_FieldName + "='");
p_Values = p_FieldName + "='" + p_Values + "'";
p_Values = "(" + p_Values + ")";
return p_Values;
}
public static string GetTZQCPBJGS(string sBJFLID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSBJFL_TZQCPBJGS from XLXSBJFL where XLXSBJFL_BJFLID=:pBJFLID");
SQL.ParamByName("pBJFLID").Value = sBJFLID;
DataSet dsFL = dberp.OpenDataSet(SQL);
string sTZQCPBJGS = "";
if (dsFL.Tables[0].Rows.Count > 0)
{
sTZQCPBJGS = dsFL.Tables[0].Rows[0]["XLXSBJFL_TZQCPBJGS"].ToString().Trim();
}
return sTZQCPBJGS;
}
//根据报价计算公式计算线缆销售报价单明细调整前产品报价
public static double GetTZQCPBJ(string sJGBBJ, string sorYZZ01, string sorYZZ02, string sorYZZ03, string sorYZZ04, string sorYZZ05,
string sorYZZ06, string sorYZZ07, string sorYZZ08, string sorYZZ09, string sorYZZ10, string sorYZZ11, string sorYZZ12, string sorYZZ13, string sorYZZ14, string sorYZZ15,
string sorYZZ16, string sorYZZ17, string sorYZZ18, string sorYZZ19, string sorYZZ20, Dictionary<string, string> dicChangedField, string sTZQCPBJGS, string sorTZZDXJ)
{
if (sJGBBJ.Trim().Equals("0") || sJGBBJ.Trim().Equals(""))
return 0;
string sYZZ01 = sorYZZ01;
string sYZZ02 = sorYZZ02;
string sYZZ03 = sorYZZ03;
string sYZZ04 = sorYZZ04;
string sYZZ05 = sorYZZ05;
string sYZZ06 = sorYZZ06;
string sYZZ07 = sorYZZ07;
string sYZZ08 = sorYZZ08;
string sYZZ09 = sorYZZ09;
string sYZZ10 = sorYZZ10;
string sYZZ11 = sorYZZ11;
string sYZZ12 = sorYZZ12;
string sYZZ13 = sorYZZ13;
string sYZZ14 = sorYZZ14;
string sYZZ15 = sorYZZ15;
string sYZZ16 = sorYZZ16;
string sYZZ17 = sorYZZ17;
string sYZZ18 = sorYZZ18;
string sYZZ19 = sorYZZ19;
string sYZZ20 = sorYZZ20;
string sTZZDXJ = sorTZZDXJ;
if (dicChangedField.ContainsKey("TZYZ_BJ01"))
sYZZ01 = dicChangedField["TZYZ_BJ01"];
if (dicChangedField.ContainsKey("TZYZ_BJ02"))
sYZZ02 = dicChangedField["TZYZ_BJ02"];
if (dicChangedField.ContainsKey("TZYZ_BJ03"))
sYZZ03 = dicChangedField["TZYZ_BJ03"];
if (dicChangedField.ContainsKey("TZYZ_BJ04"))
sYZZ04 = dicChangedField["TZYZ_BJ04"];
if (dicChangedField.ContainsKey("TZYZ_BJ05"))
sYZZ05 = dicChangedField["TZYZ_BJ05"];
if (dicChangedField.ContainsKey("TZYZ_BJ06"))
sYZZ06 = dicChangedField["TZYZ_BJ06"];
if (dicChangedField.ContainsKey("TZYZ_BJ07"))
sYZZ07 = dicChangedField["TZYZ_BJ07"];
if (dicChangedField.ContainsKey("TZYZ_BJ08"))
sYZZ08 = dicChangedField["TZYZ_BJ08"];
if (dicChangedField.ContainsKey("TZYZ_BJ09"))
sYZZ09 = dicChangedField["TZYZ_BJ09"];
if (dicChangedField.ContainsKey("TZYZ_BJ10"))
sYZZ10 = dicChangedField["TZYZ_BJ10"];
if (dicChangedField.ContainsKey("TZYZ_BJ11"))
sYZZ11 = dicChangedField["TZYZ_BJ11"];
if (dicChangedField.ContainsKey("TZYZ_BJ12"))
sYZZ12 = dicChangedField["TZYZ_BJ12"];
if (dicChangedField.ContainsKey("TZYZ_BJ13"))
sYZZ13 = dicChangedField["TZYZ_BJ13"];
if (dicChangedField.ContainsKey("TZYZ_BJ14"))
sYZZ14 = dicChangedField["TZYZ_BJ14"];
if (dicChangedField.ContainsKey("TZYZ_BJ15"))
sYZZ15 = dicChangedField["TZYZ_BJ15"];
if (dicChangedField.ContainsKey("TZYZ_BJ16"))
sYZZ16 = dicChangedField["TZYZ_BJ16"];
if (dicChangedField.ContainsKey("TZYZ_BJ17"))
sYZZ17 = dicChangedField["TZYZ_BJ17"];
if (dicChangedField.ContainsKey("TZYZ_BJ18"))
sYZZ18 = dicChangedField["TZYZ_BJ18"];
if (dicChangedField.ContainsKey("TZYZ_BJ19"))
sYZZ19 = dicChangedField["TZYZ_BJ19"];
if (dicChangedField.ContainsKey("TZYZ_BJ20"))
sYZZ20 = dicChangedField["TZYZ_BJ20"];
if (dicChangedField.ContainsKey("XLXSBJDMX_TZZDXJ"))
sTZZDXJ = dicChangedField["XLXSBJDMX_TZZDXJ"];
sYZZ01 = sYZZ01.Trim().Equals("") ? "0" : sYZZ01.Trim(); sYZZ02 = sYZZ02.Trim().Equals("") ? "0" : sYZZ02.Trim();
sYZZ03 = sYZZ03.Trim().Equals("") ? "0" : sYZZ03.Trim(); sYZZ04 = sYZZ04.Trim().Equals("") ? "0" : sYZZ04.Trim();
sYZZ05 = sYZZ05.Trim().Equals("") ? "0" : sYZZ05.Trim(); sYZZ06 = sYZZ06.Trim().Equals("") ? "0" : sYZZ06.Trim();
sYZZ07 = sYZZ07.Trim().Equals("") ? "0" : sYZZ07.Trim(); sYZZ08 = sYZZ08.Trim().Equals("") ? "0" : sYZZ08.Trim();
sYZZ09 = sYZZ09.Trim().Equals("") ? "0" : sYZZ09.Trim(); sYZZ10 = sYZZ10.Trim().Equals("") ? "0" : sYZZ10.Trim();
sYZZ11 = sYZZ11.Trim().Equals("") ? "0" : sYZZ11.Trim(); sYZZ12 = sYZZ12.Trim().Equals("") ? "0" : sYZZ12.Trim();
sYZZ13 = sYZZ13.Trim().Equals("") ? "0" : sYZZ13.Trim(); sYZZ14 = sYZZ14.Trim().Equals("") ? "0" : sYZZ14.Trim();
sYZZ15 = sYZZ15.Trim().Equals("") ? "0" : sYZZ15.Trim(); sYZZ16 = sYZZ16.Trim().Equals("") ? "0" : sYZZ16.Trim();
sYZZ17 = sYZZ17.Trim().Equals("") ? "0" : sYZZ17.Trim(); sYZZ18 = sYZZ18.Trim().Equals("") ? "0" : sYZZ18.Trim();
sYZZ19 = sYZZ19.Trim().Equals("") ? "0" : sYZZ19.Trim(); sYZZ20 = sYZZ20.Trim().Equals("") ? "0" : sYZZ20.Trim();
sTZZDXJ = sTZZDXJ.Trim().Equals("") ? "0" : sTZZDXJ.Trim();
sTZQCPBJGS = sTZQCPBJGS.Replace("JGBBJ", sJGBBJ);
sTZQCPBJGS = sTZQCPBJGS.Replace(" ", "").Replace("×", "*");//Replace("100", "100.00")是因为数据库计算时1/100的结果是0需转换为1/100.00结果才是0.01,此处直接计算无需处理
sTZQCPBJGS = sTZQCPBJGS.Replace("BJ01", sYZZ01).Replace("BJ02", sYZZ02).Replace("BJ03", sYZZ03).Replace("BJ04", sYZZ04).Replace("BJ05", sYZZ05);
sTZQCPBJGS = sTZQCPBJGS.Replace("BJ06", sYZZ06).Replace("BJ07", sYZZ07).Replace("BJ08", sYZZ08).Replace("BJ09", sYZZ09).Replace("BJ10", sYZZ10);
sTZQCPBJGS = sTZQCPBJGS.Replace("BJ11", sYZZ11).Replace("BJ12", sYZZ12).Replace("BJ13", sYZZ13).Replace("BJ14", sYZZ14).Replace("BJ15", sYZZ15);
sTZQCPBJGS = sTZQCPBJGS.Replace("BJ16", sYZZ16).Replace("BJ17", sYZZ17).Replace("BJ18", sYZZ18).Replace("BJ19", sYZZ19).Replace("BJ20", sYZZ20);
sTZQCPBJGS = sTZQCPBJGS.Replace("TZZDXJ", sTZZDXJ);
double dTZQCPBJ = 0;
gtExpression exp = new gtExpression();
try
{
dTZQCPBJ = NumberUtils.RoundX(exp.Evaluate(sTZQCPBJGS), 15);
}
catch
{
dTZQCPBJ = 0;
}
return dTZQCPBJ;
}
//根据最低限价计算公式计算线缆销售报价单明细最低限价
public static string GetZDXJ(string sCLCB, string sBJDHQCLCB, string sJGBJJ, string sJGBBJ, string sCPBJ,
string sYZZ01, string sYZZ02, string sYZZ03, string sYZZ04, string sYZZ05,
string sYZZ06, string sYZZ07, string sYZZ08, string sYZZ09, string sYZZ10,
string sYZZ11, string sYZZ12, string sYZZ13, string sYZZ14, string sYZZ15,
string sYZZ16, string sYZZ17, string sYZZ18, string sYZZ19, string sYZZ20,
Dictionary<string, string> dicChanedField, string sZDXJ, string sBJFLID, int tmpXSWS, string sZDXJBJDID, string sUpdJJYZList)
{
if (!sZDXJBJDID.Trim().Equals(""))
return sZDXJ;
bool NeedChang = false;
//最低限价公式目前支持的选项字段
string sField = "XLXSBJDMX_CLCB,XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_JGBJJ,XLXSBJDMX_JGBBJ,XLXSBJDMX_CPBJ,TZYZ_BJ01,TZYZ_BJ02,TZYZ_BJ03,TZYZ_BJ04,TZYZ_BJ05,TZYZ_BJ06,TZYZ_BJ07,TZYZ_BJ08,TZYZ_BJ09,TZYZ_BJ10,TZYZ_BJ11,TZYZ_BJ12,TZYZ_BJ13,TZYZ_BJ14,TZYZ_BJ15,TZYZ_BJ16,TZYZ_BJ17,TZYZ_BJ18,TZYZ_BJ19,TZYZ_BJ20";
foreach (string tmpField in sField.Split(','))
{
if (dicChanedField.ContainsKey(tmpField))
{
NeedChang = true;
break;
}
}
if (NeedChang)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" SELECT XLXSBJFL_ZDXJGS,XLXSBJFL_BJDHQLY,XLXSBJFL_MXBH FROM XLXSBJFL where XLXSBJFL_BJFLID = :pXLXSBJFL_BJFLID");
SQL.ParamByName("pXLXSBJFL_BJFLID").Value = sBJFLID;
DataSet dsBJFLID = dberp.OpenDataSet(SQL);
if (dsBJFLID.Tables[0].Rows.Count > 0)
{
if (!dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_ZDXJGS"].ToString().Trim().Equals(""))
{
sYZZ01 = sYZZ01.Trim().Equals("") ? "0" : sYZZ01.Trim(); sYZZ02 = sYZZ02.Trim().Equals("") ? "0" : sYZZ02.Trim();
sYZZ03 = sYZZ03.Trim().Equals("") ? "0" : sYZZ03.Trim(); sYZZ04 = sYZZ04.Trim().Equals("") ? "0" : sYZZ04.Trim();
sYZZ05 = sYZZ05.Trim().Equals("") ? "0" : sYZZ05.Trim(); sYZZ06 = sYZZ06.Trim().Equals("") ? "0" : sYZZ06.Trim();
sYZZ07 = sYZZ07.Trim().Equals("") ? "0" : sYZZ07.Trim(); sYZZ08 = sYZZ08.Trim().Equals("") ? "0" : sYZZ08.Trim();
sYZZ09 = sYZZ09.Trim().Equals("") ? "0" : sYZZ09.Trim(); sYZZ10 = sYZZ10.Trim().Equals("") ? "0" : sYZZ10.Trim();
sYZZ11 = sYZZ11.Trim().Equals("") ? "0" : sYZZ11.Trim(); sYZZ12 = sYZZ12.Trim().Equals("") ? "0" : sYZZ12.Trim();
sYZZ13 = sYZZ13.Trim().Equals("") ? "0" : sYZZ13.Trim(); sYZZ14 = sYZZ14.Trim().Equals("") ? "0" : sYZZ14.Trim();
sYZZ15 = sYZZ15.Trim().Equals("") ? "0" : sYZZ15.Trim(); sYZZ16 = sYZZ16.Trim().Equals("") ? "0" : sYZZ16.Trim();
sYZZ17 = sYZZ17.Trim().Equals("") ? "0" : sYZZ17.Trim(); sYZZ18 = sYZZ18.Trim().Equals("") ? "0" : sYZZ18.Trim();
sYZZ19 = sYZZ19.Trim().Equals("") ? "0" : sYZZ19.Trim(); sYZZ20 = sYZZ20.Trim().Equals("") ? "0" : sYZZ20.Trim();
string sZDXJGS = dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_ZDXJGS"].ToString().Trim();
if (dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_BJDHQLY"].ToString().Trim().Equals("1"))
{
sZDXJGS = sZDXJGS.Replace("CLCB", sCLCB);
}
else
{
sZDXJGS = sZDXJGS.Replace("CLCB", sBJDHQCLCB);
}
sZDXJGS = sZDXJGS.Replace("JGBJJ", sJGBJJ).Replace("JGBBJ", sJGBBJ).Replace("CPBJ", sCPBJ).Replace("BJDHQCB", sBJDHQCLCB);
sZDXJGS = sZDXJGS.Replace(" ", "").Replace("×", "*");//Replace("100", "100.00")是因为数据库计算时1/100的结果是0需转换为1/100.00结果才是0.01,此处直接计算无需处理
sZDXJGS = sZDXJGS.Replace("BJ01", sYZZ01).Replace("BJ02", sYZZ02).Replace("BJ03", sYZZ03).Replace("BJ04", sYZZ04).Replace("BJ05", sYZZ05);
sZDXJGS = sZDXJGS.Replace("BJ06", sYZZ06).Replace("BJ07", sYZZ07).Replace("BJ08", sYZZ08).Replace("BJ09", sYZZ09).Replace("BJ10", sYZZ10);
sZDXJGS = sZDXJGS.Replace("BJ11", sYZZ11).Replace("BJ12", sYZZ12).Replace("BJ13", sYZZ13).Replace("BJ14", sYZZ14).Replace("BJ15", sYZZ15);
sZDXJGS = sZDXJGS.Replace("BJ16", sYZZ16).Replace("BJ17", sYZZ17).Replace("BJ18", sYZZ18).Replace("BJ19", sYZZ19).Replace("BJ20", sYZZ20);
if (dsBJFLID.Tables[0].Rows[0]["XLXSBJFL_MXBH"].ToString().Trim().Equals("JGE"))
{
string[] strJJYZZ = sUpdJJYZList.ToString().Trim().Split('|');
sZDXJGS = sZDXJGS.Replace("JZ01", strJJYZZ[0]).Replace("JZ02", strJJYZZ[1]).Replace("JZ03", strJJYZZ[2]).Replace("JZ04", strJJYZZ[3]).Replace("JZ05", strJJYZZ[4]);
sZDXJGS = sZDXJGS.Replace("JZ06", strJJYZZ[5]).Replace("JZ07", strJJYZZ[6]).Replace("JZ08", strJJYZZ[7]).Replace("JZ09", strJJYZZ[8]).Replace("JZ10", strJJYZZ[9]).Replace("JZ11", strJJYZZ[10]).Replace("JZ12", strJJYZZ[11]).Replace("JZ13", strJJYZZ[12]).Replace("JZ14", strJJYZZ[13]).Replace("JZ15", strJJYZZ[14]).Replace("JZ16", strJJYZZ[15]).Replace("JZ17", strJJYZZ[16]).Replace("JZ18", strJJYZZ[17]).Replace("JZ19", strJJYZZ[18]).Replace("JZ20", strJJYZZ[19]);
}
double dZDXJ = 0;
gtExpression exp = new gtExpression();
try
{
dZDXJ = NumberUtils.RoundX(exp.Evaluate(sZDXJGS), tmpXSWS);
}
catch
{
dZDXJ = 0;
}
sZDXJ = dZDXJ.ToString().Trim();
}
}
}
return sZDXJ;
}
//计算线缆销售报价单明细最低限价价差率
public static string GetZDXJJCL(string sZDXJJCLLX, string sZDXJ, string sBJSL, string sBJJE, string stBJDHQCLCB, string sJGBBJ)
{
N_MISPRO.CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
int iXSWS = CMISproConvert.StrToInt(tSession.GetOption(100860000,"BJU054")) + 2;
string sZDXJJCL = "0";
if (sZDXJJCLLX.Equals("1"))
{
if (!sBJJE.Equals("0") && !sBJJE.Equals("0.00"))
{
string sJSGS = sZDXJ + "*" + sBJSL + "/" + sBJJE;
double dZDXJJCL = 0;
gtExpression exp = new gtExpression();
try
{
dZDXJJCL = NumberUtils.RoundX(exp.Evaluate(sJSGS), iXSWS);
}
catch
{
dZDXJJCL = 0;
}
dZDXJJCL = 100 - dZDXJJCL * 100;
sZDXJJCL = dZDXJJCL.ToString().Trim();
}
}
else if (sZDXJJCLLX.Equals("2"))
{
if (!sZDXJ.Equals("0") && !sBJSL.Equals("0.00") && !sZDXJ.Equals("0") && !sBJSL.Equals("0.00"))
{
string sJSGS = sBJJE + "/(" + sZDXJ + "*" + sBJSL + ")";
double dZDXJJCL = 0;
gtExpression exp = new gtExpression();
try
{
dZDXJJCL = NumberUtils.RoundX(exp.Evaluate(sJSGS), iXSWS);
}
catch
{
dZDXJJCL = 0;
}
dZDXJJCL = dZDXJJCL * 100 - 100;
sZDXJJCL = dZDXJJCL.ToString().Trim();
}
}
else if (sZDXJJCLLX.Equals("3"))
{
if (!sZDXJ.Equals("0") && !sBJSL.Equals("0.00") && !sZDXJ.Equals("0") && !sBJSL.Equals("0.00") && !sBJJE.Equals("0") && !sBJJE.Equals("0.00"))
{
string sJSGS = "(" + sZDXJ + "*" + sBJSL + ")/(" + sBJJE + ")";
double dZDXJJCL = 0;
gtExpression exp = new gtExpression();
try
{
dZDXJJCL = NumberUtils.RoundX(exp.Evaluate(sJSGS), iXSWS);
}
catch
{
dZDXJJCL = 0;
}
dZDXJJCL = dZDXJJCL * 100;
sZDXJJCL = dZDXJJCL.ToString().Trim();
}
}
else if (sZDXJJCLLX.Equals("4"))
{
if (!sZDXJ.Equals("0") && !sBJSL.Equals("0.00") && !sZDXJ.Equals("0") && !sBJSL.Equals("0.00"))
{
string sJSGS = "(" + sBJSL + "*" + stBJDHQCLCB + ")/(" + sZDXJ + "*" + sBJSL + ")";
double dZDXJJCL = 0;
gtExpression exp = new gtExpression();
try
{
dZDXJJCL = NumberUtils.RoundX(exp.Evaluate(sJSGS), iXSWS);
}
catch
{
dZDXJJCL = 0;
}
dZDXJJCL = 100 - dZDXJJCL * 100;
sZDXJJCL = dZDXJJCL.ToString().Trim();
}
}
else if (sZDXJJCLLX.Equals("5"))
{
if (!sZDXJ.Equals("0") && !sBJSL.Equals("0.00") && !sZDXJ.Equals("0") && !sBJSL.Equals("0.00") && !sJGBBJ.Equals("0") && !sJGBBJ.Equals("0.00"))
{
string sJSGS = "(" + sZDXJ + ")/(" + sJGBBJ + "*" + sCJXS.ToString() + ")";
double dZDXJJCL = 0;
gtExpression exp = new gtExpression();
try
{
dZDXJJCL = NumberUtils.RoundX(exp.Evaluate(sJSGS), iXSWS);
}
catch
{
dZDXJJCL = 0;
}
dZDXJJCL = dZDXJJCL * 100;
sZDXJJCL = dZDXJJCL.ToString().Trim();
}
}
return sZDXJJCL;
}
public static string GetYXJJCL(string sYXJJCLLX, string sZDXJ, string sYXJ)
{
string sYXJJCL = "0";
if (sYXJJCLLX.Equals("1"))
{
if (CMISproConvert.StrToFloat(sYXJ, 0) != 0)
{
string sJSGS = string.Format("(1-{0}/{1})*100", sZDXJ, sYXJ);
double dYXJJCL = 0;
gtExpression exp = new gtExpression();
try
{
dYXJJCL = NumberUtils.RoundX(exp.Evaluate(sJSGS), 4);
}
catch
{
dYXJJCL = 0;
}
sYXJJCL = dYXJJCL.ToString().Trim();
}
}
return sYXJJCL;
}
public static string GetJSJJCL(string sJSJJCLLX, string sJSJJE, string sBJJE)
{
string sJSJJCL = "0";
if (sJSJJCLLX.Equals("1") || sJSJJCLLX.Equals("3"))
{
if (CMISproConvert.StrToFloat(sBJJE, 0) != 0)
{
string sJSGS = string.Format("(1-{0}/{1})*100", sJSJJE, sBJJE);
if (sJSJJCLLX.Equals("3"))
{
sJSGS = string.Format("({0}/{1})*100", sJSJJE, sBJJE);
}
double dJSJJCL = 0;
gtExpression exp = new gtExpression();
try
{
dJSJJCL = NumberUtils.RoundX(exp.Evaluate(sJSGS), 4);
}
catch
{
dJSJJCL = 0;
}
sJSJJCL = dJSJJCL.ToString().Trim();
}
}
else
{
if (CMISproConvert.StrToFloat(sJSJJE, 0) != 0)
{
string sJSGS = string.Format("({0}/{1}-1)*100", sBJJE, sJSJJE);
double dJSJJCL = 0;
gtExpression exp = new gtExpression();
try
{
dJSJJCL = NumberUtils.RoundX(exp.Evaluate(sJSGS), 4);
}
catch
{
dJSJJCL = 0;
}
sJSJJCL = dJSJJCL.ToString().Trim();
}
}
return sJSJJCL;
}
/// <summary>
/// 形成dicTJYZList(sTJYSList_, BJ01),dicTJYZList(sTJYSList1, BJ02),dicTJYZList(sTJYSListA, BJ03)
/// </summary>
/// <param name="dberp"></param>
/// <param name="SQL"></param>
/// <param name="sBJFLID"></param>
/// <param name="bBCYTJ"></param>
/// <param name="dicTJYZList"></param>
/// <returns></returns>
public static void GetDicTJYZList(TDatabase dberp, TSQL SQL, string sBJFLID, string sJMBGSYZID, ref Dictionary<string, string> dicTJYZList)
{
dicTJYZList.Clear();
SQL.Clear();
SQL.Add(" SELECT XLXSBJFLYZ_YZID,XLXSTZYZ_TJYS FROM XLXSBJFLYZ ");
SQL.Add(" LEFT JOIN XLXSTZYZ on XLXSTZYZ_YZID = XLXSBJFLYZ_YZID and XLXSTZYZ_MXBH = 'BJD' ");
SQL.Add(" where 1=1 and XLXSBJFLYZ_BJFLID = :pBJFLID ");
if (!sJMBGSYZID.Equals(""))
{
SQL.Add(" and XLXSBJFLYZ_YZID <> :pJMBGSYZID ");
SQL.ParamByName("pJMBGSYZID").Value = sJMBGSYZID.Trim(); ;
}
SQL.ParamByName("pBJFLID").Value = sBJFLID;
DataSet dsBJDYZ = dberp.OpenDataSet(SQL);
if (dsBJDYZ.Tables[0].Rows.Count > 0)
{
string sBZPFYZID = XLBJDUtils.GetBJFLSYBZPFYZID(sBJFLID);
string sCPWJPFYZID = XLBJDUtils.GetBJFLSYCPWJPFYZID(sBJFLID);
string sYFYZID = XLBJDUtils.GetBJFLSYYFYZID(sBJFLID);
string chr = "";
for (int i = 0; i < dsBJDYZ.Tables[0].Rows.Count; i++)
{
for (int j = 0; j <= 35; j++)
{
chr = int10Convert36(j);
if (dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals(""))
{
if (dicTJYZList.ContainsKey("sTJYSList_"))
{
if (!sBZPFYZID.Equals(""))
{
if (sBZPFYZID.Split('|')[0].Trim().Equals(dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim()))
continue;
}
else if (!sCPWJPFYZID.Equals(""))
{
if (sCPWJPFYZID.Split('|')[0].Trim().Equals(dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim()))
continue;
}
else if (!sYFYZID.Equals(""))
{
if (sYFYZID.Split('|')[0].Trim().Equals(dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim()))
continue;
}
dicTJYZList["sTJYSList_"] = dicTJYZList["sTJYSList_"] + "," + dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim();
}
else
{
if (!sBZPFYZID.Equals(""))
{
if (sBZPFYZID.Split('|')[0].Trim().Equals(dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim()))
continue;
}
else if (!sCPWJPFYZID.Equals(""))
{
if (sCPWJPFYZID.Split('|')[0].Trim().Equals(dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim()))
continue;
}
else if (!sYFYZID.Equals(""))
{
if (sYFYZID.Split('|')[0].Trim().Equals(dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim()))
continue;
}
dicTJYZList.Add("sTJYSList_", dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim());
}
break;
}
else if (dsBJDYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals(chr))
{
if (dicTJYZList.ContainsKey("sTJYSList" + chr))
{
dicTJYZList["sTJYSList" + chr] = dicTJYZList["sTJYSList" + chr] + "," + dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim();
}
else
{
dicTJYZList.Add("sTJYSList" + chr, dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim());
}
break;
}
}
}
if (!sBZPFYZID.Equals(""))
{
dicTJYZList.Add("sTJYSListPFBZ", sBZPFYZID.Split('|')[0]);
}
if (!sCPWJPFYZID.Equals(""))
{
dicTJYZList.Add("sTJYSListPFCPWJ", sCPWJPFYZID.Split('|')[0]);
}
if (!sYFYZID.Equals(""))
{
dicTJYZList.Add("sTJYSListYF", sYFYZID.Split('|')[0]);
}
}
}
/// <summary>
/// 形成dicTJYZList(sTJYSList_, BJ01),dicTJYZList(sTJYSList1, BJ02),dicTJYZList(sTJYSListA, BJ03)
/// </summary>
/// <param name="dberp"></param>
/// <param name="SQL"></param>
/// <param name="sBJFLID"></param>
/// <param name="bBCYTJ"></param>
/// <param name="dicTJYZList"></param>
/// <returns></returns>
public static void GetDicTJYZList(TDatabase dberp, TSQL SQL, string sBJFLID, ref Dictionary<string, string> dicTJYZList)
{
GetDicTJYZList(dberp, SQL, sBJFLID,"", ref dicTJYZList);
}
/// <summary>
/// dic.TryGetValue("sTJYSList2", out sTJYSList2);
/// </summary>
/// <param name="dberp"></param>
/// <param name="sBJDID"></param>
/// <param name="sBJFLID"></param>
/// <param name="dic"></param>
/// <param name="bInsertXLXSBJDYZZ0"></param>
/// <param name="sBJDXHList"></param>
public static void AddXLXSBJDYZZ0(TDatabase dberp, string sBJDID, string sBJFLID, string sBJU003, Dictionary<string, string> dicTJYZList, bool bInsertXLXSBJDYZZ0, string sBJDXHList, double minBJDXH, ref string sErrorNum)
{
AddXLXSBJDYZZ0(dberp, sBJDID, sBJFLID, sBJU003, dicTJYZList, bInsertXLXSBJDYZZ0, sBJDXHList, minBJDXH, false, false, false, ref sErrorNum);
}
public static void AddXLXSBJDYZZ0(TDatabase dberp, string sBJDID, string sBJFLID, string sBJU003, Dictionary<string, string> dicTJYZList, bool bInsertXLXSBJDYZZ0, string sBJDXHList, double minBJDXH, bool bYBJ, bool bWG, bool bFWG, ref string sErrorNum)
{
AddXLXSBJDYZZ0(dberp, sBJDID, sBJFLID, sBJU003, dicTJYZList, bInsertXLXSBJDYZZ0, sBJDXHList, minBJDXH, 0, bYBJ, bWG, bFWG, DateTime.MinValue, ref sErrorNum);
}
public static void AddXLXSBJDYZZ0(TDatabase dberp, string sBJDID, string sBJFLID, string sBJU003, Dictionary<string, string> dicTJYZList, bool bInsertXLXSBJDYZZ0, string sBJDXHList, double minBJDXH, int VnewID, bool bYBJ, bool bWG, bool bFWG, ref string sErrorNum)
{
AddXLXSBJDYZZ0(dberp, sBJDID, sBJFLID, sBJU003, dicTJYZList, bInsertXLXSBJDYZZ0, sBJDXHList, minBJDXH, VnewID, bYBJ, bWG, bFWG, DateTime.MinValue, ref sErrorNum);
}
public static void AddXLXSBJDYZZ0(TDatabase dberp, string sBJDID, string sBJFLID, string sBJU003, Dictionary<string, string> dicTJYZList, bool bInsertXLXSBJDYZZ0, string sBJDXHList, double minBJDXH, bool bYBJ, bool bWG, bool bFWG, DateTime tWHSJCondition, ref string sErrorNum)
{
AddXLXSBJDYZZ0(dberp, sBJDID, sBJFLID, sBJU003, dicTJYZList, bInsertXLXSBJDYZZ0, sBJDXHList, minBJDXH, 0, bYBJ, bWG, bFWG, tWHSJCondition, ref sErrorNum);
}
public static void AddXLXSBJDYZZ0(TDatabase dberp, string sBJDID, string sBJFLID, string sBJU003, Dictionary<string, string> dicTJYZList, bool bInsertXLXSBJDYZZ0, string sBJDXHList, double minBJDXH, int VnewID, bool bYBJ, bool bWG, bool bFWG, DateTime tWHSJCondition, ref string sErrorNum)
{
string sBJU003JSDW = GetsJSDW(sBJU003, sBJU003);
string sJJYZIDList = string.Empty;
Dictionary<string, double> dicLenJLDWTD = XLBJDUtils.GetLenJLDWTD();
sErrorNum = "ErrorStr";
TSQL SQL = new TSQL(dberp);
//string sTJYSList2 = "";
//string sTJYSList3 = "";
//string sTJYSList6 = "";
//dicTJYZList.TryGetValue("sTJYSList_", out sTJYSList2);
//dicTJYZList.TryGetValue("sTJYSList2", out sTJYSList2);
//dicTJYZList.TryGetValue("sTJYSList3", out sTJYSList3);
//dicTJYZList.TryGetValue("sTJYSList6", out sTJYSList6);
try
{
#region 插入因子值
if (bInsertXLXSBJDYZZ0)
{
SQL.Clear();
SQL.Add("insert into XLXSBJDYZZ0(XLXSBJDYZZ0_BJDID,XLXSBJDYZZ0_XH) ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID ");
SQL.Add("and not exists ");
SQL.Add("( ");
SQL.Add("select 1 ");
SQL.Add("from XLXSBJDYZZ0 ");
SQL.Add("where XLXSBJDYZZ0_BJDID=:pBJDID ");
SQL.Add("and XLXSBJDYZZ0_XH=XLXSBJDMX_XH ");
SQL.Add(") ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
#endregion
sErrorNum = "ErrorVie";
#region 先清空调价因子值
string[] sTJYZ;
if (dicTJYZList.Count > 0)
{
SQL.Clear();
SQL.Add("update XLXSBJDYZZ0 set XLXSBJDYZZ0_XH = XLXSBJDYZZ0_XH ");
foreach (KeyValuePair<string, string> kvp in dicTJYZList)
{
sTJYZ = kvp.Value.Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int m = 0; m < sTJYZ.Length; m++)
{
SQL.Add(string.Format(",XLXSBJDYZZ0_YZZ{0}=0 ", sTJYZ[m].Trim().Replace("BJ", "")));
}
}
SQL.Add(" where XLXSBJDYZZ0_BJDID=:pBJDID ");
if (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDYZZ0_BJDID and V_BJDXH_BJDXH = XLXSBJDYZZ0_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
if (bYBJ)
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_JGBBJ<>0.0)");
if (bWG)
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_WGCPBZ='Y')");
if (bFWG)
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_WGCPBZ<>'Y')");
if (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_WHSJ=:pWHSJ)");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
#endregion
Dictionary<string, string> dicYZXX = new Dictionary<string, string>();
List<XLXSBJFLYZXX> bjflyzlist = GetBJFLYZXXByBJFLID(sBJFLID);
foreach (XLXSBJFLYZXX yzxx in bjflyzlist)
{
if (!dicYZXX.ContainsKey(yzxx.XLXSBJFLYZ_YZID))
{
dicYZXX.Add(yzxx.XLXSBJFLYZ_YZID, GetYZXXByYZID(yzxx.XLXSBJFLYZ_YZID).XLXSTZYZ_JGBID);
}
}
sErrorNum = "Error0";
//自动插入TJYS=' '的调价因子值
#region 因素空
if (dicTJYZList.ContainsKey("sTJYSList_"))
{
sTJYZ = dicTJYZList["sTJYSList_"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region 非外购
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select YZID ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from ");
SQL.Add(" ( ");
SQL.Add(" select XLXSBJDYZZ_YZID as YZID, ");
SQL.Add(" case when isnull(:pMRTJFW,' ') like '%2%' then 0 else XLXSBJDYZZ_YZZ end as YZZ");//外购因子的因子值取0
SQL.Add(" from XLXSBJDYZZ ");
SQL.Add(" where XLXSBJDYZZ_JGBID=:pJGBID and XLXSBJDYZZ_YZID=:pYZID ");
SQL.Add(" ) a ");
SQL.Add(" where 1=1 and isnull(YZID,' ')<>' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID ");
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH ");
SQL.Add(" and XLXSBJDMX_WGCPBZ<>'Y'");//非外购
SQL.Add(" ) ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDYZZ0_BJDID and V_BJDXH_BJDXH = XLXSBJDYZZ0_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
if (bYBJ)
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_JGBBJ<>0.0)");
if (bWG)
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_WGCPBZ='Y')");
if (bFWG)
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_WGCPBZ<>'Y')");
if (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_WHSJ=:pWHSJ)");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
SQL.ParamByName("pMRTJFW").Value = GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_MRTJFW;
dberp.ExecSQL(SQL);
#endregion
#region 外购
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select YZID ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from ");
SQL.Add(" ( ");
SQL.Add(" select XLXSBJDYZZ_YZID as YZID, ");
SQL.Add(" case when isnull(:pMRTJFW,' ') like '%3%' then 0 else XLXSBJDYZZ_YZZ end as YZZ");//非外购因子的因子值取0
SQL.Add(" from XLXSBJDYZZ ");
SQL.Add(" where XLXSBJDYZZ_JGBID=:pJGBID and XLXSBJDYZZ_YZID=:pYZID ");
SQL.Add(" ) a ");
SQL.Add(" where 1=1 and isnull(YZID,' ')<>' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID ");
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH ");
SQL.Add(" and XLXSBJDMX_WGCPBZ='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 (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDYZZ0_BJDID and V_BJDXH_BJDXH = XLXSBJDYZZ0_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
if (bYBJ)
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_JGBBJ<>0.0)");
if (bWG)
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_WGCPBZ='Y')");
if (bFWG)
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_WGCPBZ<>'Y')");
if (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and exists(select 1 from XLXSBJDMX where XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH and XLXSBJDMX_WHSJ=:pWHSJ)");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
SQL.ParamByName("pMRTJFW").Value = GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_MRTJFW;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "Error1";
//自动插入TJYS=1的调价因子值
#region 因素1|付款方式
if (dicTJYZList.ContainsKey("sTJYSList1"))
{
sTJYZ = dicTJYZList["sTJYSList1"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID=XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ1_YZID as YZID,XLXSBJDYZZ1_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ1_PJLX as PJLX ");
SQL.Add(" from XLXSBJDYZZ1 ");
SQL.Add("where XLXSBJDYZZ1_JGBID=:pJGBID and XLXSBJDYZZ1_YZID=:pYZID ");
SQL.Add(" ) a on ");
SQL.Add(" a.PJLX = isnull(XLXSBJD_PJLX,' ') ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "Error2";
//自动插入TJYS=2的调价因子值
#region 因素2|导体材料&电压区间&报价数量区间
if (dicTJYZList.ContainsKey("sTJYSList2"))
{
sTJYZ = dicTJYZList["sTJYSList2"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
/*
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……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJDYZZ2BSY1 on XLXSBJDYZZ2BSY1_CPYT=XLXHB_CPYT ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ2_DTCLID as DTCLID,XLXSBJDYZZ2_YZID as YZID,XLXSBJDYZZ2_YZZ as YZZ,DYDJB.XLDYDJB_DYDJID, ");
SQL.Add(" XLXSBJDYZZ2_BJSLXX,XLXSBJDYZZ2_BJSLSX ");
SQL.Add(" from XLXSBJDYZZ2, ");
SQL.Add("(");
SQL.Add("select (case when XLDYDJB_XXLXDY>XLDYDJB_XXXXDY then XLDYDJB_XXLXDY else XLDYDJB_XXXXDY end)");
SQL.Add(" *(case XLDYDJB_DYJLDW when 'V' then 1 else 1000 end) as DY,XLDYDJB_DYDJID ");
SQL.Add(" from XLDYDJB");
SQL.Add(") DYDJB ");
SQL.Add("where XLXSBJDYZZ2_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ2_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ2_DYXX<=DY and ((XLXSBJDYZZ2_DYSX<>0 and XLXSBJDYZZ2_DYSX>DY) or XLXSBJDYZZ2_DYSX=0)");
SQL.Add(" and XLXSBJDYZZ2_DTCLID=' ' ");
SQL.Add(" ) a on a.XLDYDJB_DYDJID = isnull(XLXSBJDMX_DYDJID,' ')");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZ2_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ2_BJSLSX<>0 and a.XLXSBJDYZZ2_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ2_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZ2_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ2_BJSLSX<>0 and a.XLXSBJDYZZ2_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ2_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" and isnull(XLXSBJDYZZ2BSY1_CPYT, ' ')=' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error2-1";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJDYZZ2BSY1 on XLXSBJDYZZ2BSY1_CPYT=XLXHB_CPYT ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ2_DTCLID as DTCLID,XLXSBJDYZZ2_YZID as YZID,XLXSBJDYZZ2_YZZ as YZZ,DYDJB.XLDYDJB_DYDJID, ");
SQL.Add(" XLXSBJDYZZ2_BJSLXX,XLXSBJDYZZ2_BJSLSX ");
SQL.Add(" from XLXSBJDYZZ2,");
SQL.Add("(");
SQL.Add("select (case when XLDYDJB_XXLXDY>XLDYDJB_XXXXDY then XLDYDJB_XXLXDY else XLDYDJB_XXXXDY end)");
SQL.Add(" *(case XLDYDJB_DYJLDW when 'V' then 1 else 1000 end) as DY,XLDYDJB_DYDJID ");
SQL.Add(" from XLDYDJB");
SQL.Add(") DYDJB ");
SQL.Add("where XLXSBJDYZZ2_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ2_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ2_DYXX<=DY and ((XLXSBJDYZZ2_DYSX<>0 and XLXSBJDYZZ2_DYSX>DY) or XLXSBJDYZZ2_DYSX=0)");
SQL.Add(" and XLXSBJDYZZ2_DTCLID<>' ' ");
SQL.Add(" ) a on a.DTCLID=isnull(XLXHB_DTCLID,' ') and a.XLDYDJB_DYDJID = isnull(XLXSBJDMX_DYDJID,' ') ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZ2_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ2_BJSLSX<>0 and a.XLXSBJDYZZ2_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ2_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZ2_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ2_BJSLSX<>0 and a.XLXSBJDYZZ2_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ2_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" and isnull(XLXSBJDYZZ2BSY1_CPYT, ' ')=' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error2-2";
#endregion
}
}
}
#endregion
sErrorNum = "Error3";
//自动插入TJYS=3的调价因子值
#region 因素3|产品用途&电压等级分类&报价数量区间
if (dicTJYZList.ContainsKey("sTJYSList3"))
{
sTJYZ = dicTJYZList["sTJYSList3"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
/*
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……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLDYDJB on XLDYDJB_DYDJID = isnull(XLXSBJDMX_DYDJID,' ') ");
SQL.Add("left join XLXSBJDYZZ3BSY1 on XLXSBJDYZZ3BSY1_CPYT= isnull(XLXHB_CPYT,' ') ");
SQL.Add("left join XLXSBJDYZZ3BSY2 on XLXSBJDYZZ3BSY2_XLXHID= XLXSBJDMX_XLXHID and XLXSBJDYZZ3BSY2_XLGGID= XLXSBJDMX_XLGGID and XLXSBJDYZZ3BSY2_XLBZID= XLXSBJDMX_XLBZID and XLXSBJDYZZ3BSY2_DYDJID= XLXSBJDMX_DYDJID");
SQL.Add("left join XLXSBJDYZZ3BSY3 on XLXSBJDYZZ3BSY3_XLJBXHID= isnull(XLXHB_XLJBXHID,' ') ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ3_CPYT as CPYT, XLXSBJDYZZ3_DYDJFL as DYDJFL, XLXSBJDYZZ3_YZID as YZID,XLXSBJDYZZ3_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ3_BJSLXX,XLXSBJDYZZ3_BJSLSX ");
SQL.Add(" from XLXSBJDYZZ3 ");
SQL.Add("where XLXSBJDYZZ3_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ3_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ3_CPYT = ' ' and XLXSBJDYZZ3_DYDJFL = ' ' ");
SQL.Add(" ) a on ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" a.XLXSBJDYZZ3_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ3_BJSLSX<>0 and a.XLXSBJDYZZ3_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ3_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" a.XLXSBJDYZZ3_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ3_BJSLSX<>0 and a.XLXSBJDYZZ3_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ3_BJSLSX=0)");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" and isnull(XLXSBJDYZZ3BSY1_CPYT, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZ3BSY2_XLXHID, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZ3BSY3_XLJBXHID, ' ')=' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error3-1";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLDYDJB on XLDYDJB_DYDJID = isnull(XLXSBJDMX_DYDJID,' ') ");
SQL.Add("left join XLXSBJDYZZ3BSY1 on XLXSBJDYZZ3BSY1_CPYT= isnull(XLXHB_CPYT,' ') ");
SQL.Add("left join XLXSBJDYZZ3BSY2 on XLXSBJDYZZ3BSY2_XLXHID= XLXSBJDMX_XLXHID and XLXSBJDYZZ3BSY2_XLGGID= XLXSBJDMX_XLGGID and XLXSBJDYZZ3BSY2_XLBZID= XLXSBJDMX_XLBZID and XLXSBJDYZZ3BSY2_DYDJID= XLXSBJDMX_DYDJID");
SQL.Add("left join XLXSBJDYZZ3BSY3 on XLXSBJDYZZ3BSY3_XLJBXHID= isnull(XLXHB_XLJBXHID,' ') ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ3_CPYT as CPYT, XLXSBJDYZZ3_DYDJFL as DYDJFL, XLXSBJDYZZ3_YZID as YZID,XLXSBJDYZZ3_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ3_BJSLXX,XLXSBJDYZZ3_BJSLSX ");
SQL.Add(" from XLXSBJDYZZ3 ");
SQL.Add("where XLXSBJDYZZ3_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ3_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ3_CPYT = ' ' and XLXSBJDYZZ3_DYDJFL<> ' ' ");
SQL.Add(" ) a on a.DYDJFL = XLDYDJB_DYDJFL ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZ3_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ3_BJSLSX<>0 and a.XLXSBJDYZZ3_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ3_BJSLSX=0)");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZ3_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ3_BJSLSX<>0 and a.XLXSBJDYZZ3_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ3_BJSLSX=0)");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" and isnull(XLXSBJDYZZ3BSY1_CPYT, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZ3BSY2_XLXHID, ' ')=' '");
SQL.Add(" and isnull(XLXSBJDYZZ3BSY3_XLJBXHID, ' ')=' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error3-2";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLDYDJB on XLDYDJB_DYDJID = isnull(XLXSBJDMX_DYDJID,' ') ");
SQL.Add("left join XLXSBJDYZZ3BSY1 on XLXSBJDYZZ3BSY1_CPYT= isnull(XLXHB_CPYT,' ') ");
SQL.Add("left join XLXSBJDYZZ3BSY2 on XLXSBJDYZZ3BSY2_XLXHID= XLXSBJDMX_XLXHID and XLXSBJDYZZ3BSY2_XLGGID= XLXSBJDMX_XLGGID and XLXSBJDYZZ3BSY2_XLBZID= XLXSBJDMX_XLBZID and XLXSBJDYZZ3BSY2_DYDJID= XLXSBJDMX_DYDJID");
SQL.Add("left join XLXSBJDYZZ3BSY3 on XLXSBJDYZZ3BSY3_XLJBXHID= isnull(XLXHB_XLJBXHID,' ') ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ3_CPYT as CPYT, XLXSBJDYZZ3_DYDJFL as DYDJFL, XLXSBJDYZZ3_YZID as YZID,XLXSBJDYZZ3_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ3_BJSLXX,XLXSBJDYZZ3_BJSLSX ");
SQL.Add(" from XLXSBJDYZZ3 ");
SQL.Add("where XLXSBJDYZZ3_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ3_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ3_CPYT<>' ' and XLXSBJDYZZ3_DYDJFL= ' ' ");
SQL.Add(" ) a on a.CPYT=XLXHB_CPYT ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZ3_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ3_BJSLSX<>0 and a.XLXSBJDYZZ3_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ3_BJSLSX=0)");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZ3_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ3_BJSLSX<>0 and a.XLXSBJDYZZ3_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ3_BJSLSX=0)");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" and isnull(XLXSBJDYZZ3BSY1_CPYT, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZ3BSY2_XLXHID, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZ3BSY3_XLJBXHID, ' ')=' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error3-3";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLDYDJB on XLDYDJB_DYDJID = isnull(XLXSBJDMX_DYDJID,' ') ");
SQL.Add("left join XLXSBJDYZZ3BSY1 on XLXSBJDYZZ3BSY1_CPYT= isnull(XLXHB_CPYT,' ') ");
SQL.Add("left join XLXSBJDYZZ3BSY2 on XLXSBJDYZZ3BSY2_XLXHID= XLXSBJDMX_XLXHID and XLXSBJDYZZ3BSY2_XLGGID= XLXSBJDMX_XLGGID and XLXSBJDYZZ3BSY2_XLBZID= XLXSBJDMX_XLBZID and XLXSBJDYZZ3BSY2_DYDJID= XLXSBJDMX_DYDJID");
SQL.Add("left join XLXSBJDYZZ3BSY3 on XLXSBJDYZZ3BSY3_XLJBXHID= isnull(XLXHB_XLJBXHID,' ') ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ3_CPYT as CPYT, XLXSBJDYZZ3_DYDJFL as DYDJFL, XLXSBJDYZZ3_YZID as YZID,XLXSBJDYZZ3_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ3_BJSLXX,XLXSBJDYZZ3_BJSLSX ");
SQL.Add(" from XLXSBJDYZZ3 ");
SQL.Add("where XLXSBJDYZZ3_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ3_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ3_CPYT<>' ' and XLXSBJDYZZ3_DYDJFL<>' ' ");
SQL.Add(" ) a on a.CPYT=XLXHB_CPYT and a.DYDJFL = XLDYDJB_DYDJFL");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZ3_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ3_BJSLSX<>0 and a.XLXSBJDYZZ3_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ3_BJSLSX=0)");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZ3_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ3_BJSLSX<>0 and a.XLXSBJDYZZ3_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ3_BJSLSX=0)");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" and isnull(XLXSBJDYZZ3BSY1_CPYT, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZ3BSY2_XLXHID, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZ3BSY3_XLJBXHID, ' ')=' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error3-4";
#endregion
}
}
}
#endregion
sErrorNum = "ErrorE";
//自动插入TJYS=E的调价因子值
#region 因素E|型号&电压等级&主芯截面范围&报价数量区间
if (dicTJYZList.ContainsKey("sTJYSListE"))
{
sTJYZ = dicTJYZList["sTJYSListE"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLXSBJDYZZEBSY1 on XLXSBJDYZZEBSY1_CPYT= isnull(XLXHB_CPYT,' ') ");
SQL.Add("left join XLXSBJDYZZEBSY2 on XLXSBJDYZZEBSY2_XLJBXHID= isnull(XLXHB_XLJBXHID,' ') ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZE_XLXHID as XLXHID, XLXSBJDYZZE_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZE_YZID as YZID,XLXSBJDYZZE_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZE_ZXJMSX as ZXJMSX, XLXSBJDYZZE_ZXJMXX as ZXJMXX, ");
SQL.Add(" XLXSBJDYZZE_BJSLXX,XLXSBJDYZZE_BJSLSX ");
SQL.Add(" from XLXSBJDYZZE ");
SQL.Add("where XLXSBJDYZZE_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZE_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZE_XLXHID=' ' and XLXSBJDYZZE_DYDJID=' ' ");
SQL.Add(" ) a on ");
SQL.Add(" a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZE_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZE_BJSLSX<>0 and a.XLXSBJDYZZE_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZE_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZE_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZE_BJSLSX<>0 and a.XLXSBJDYZZE_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZE_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" and isnull(XLXSBJDYZZEBSY1_CPYT, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZEBSY2_XLJBXHID, ' ')=' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorE-1";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLXSBJDYZZEBSY1 on XLXSBJDYZZEBSY1_CPYT= isnull(XLXHB_CPYT,' ') ");
SQL.Add("left join XLXSBJDYZZEBSY2 on XLXSBJDYZZEBSY2_XLJBXHID= isnull(XLXHB_XLJBXHID,' ') ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZE_XLXHID as XLXHID, XLXSBJDYZZE_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZE_YZID as YZID,XLXSBJDYZZE_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZE_ZXJMSX as ZXJMSX, XLXSBJDYZZE_ZXJMXX as ZXJMXX, ");
SQL.Add(" XLXSBJDYZZE_BJSLXX,XLXSBJDYZZE_BJSLSX ");
SQL.Add(" from XLXSBJDYZZE ");
SQL.Add("where XLXSBJDYZZE_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZE_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZE_XLXHID<>' ' and XLXSBJDYZZE_DYDJID=' ' ");
SQL.Add(" ) a on a.XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZE_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZE_BJSLSX<>0 and a.XLXSBJDYZZE_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZE_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZE_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZE_BJSLSX<>0 and a.XLXSBJDYZZE_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZE_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" and isnull(XLXSBJDYZZEBSY1_CPYT, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZEBSY2_XLJBXHID, ' ')=' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorE-2";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJDYZZEBSY1 on XLXSBJDYZZEBSY1_CPYT= isnull(XLXHB_CPYT,' ') ");
SQL.Add("left join XLXSBJDYZZEBSY2 on XLXSBJDYZZEBSY2_XLJBXHID= isnull(XLXHB_XLJBXHID,' ') ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZE_XLXHID as XLXHID, XLXSBJDYZZE_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZE_YZID as YZID,XLXSBJDYZZE_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZE_ZXJMSX as ZXJMSX, XLXSBJDYZZE_ZXJMXX as ZXJMXX, ");
SQL.Add(" XLXSBJDYZZE_BJSLXX,XLXSBJDYZZE_BJSLSX ");
SQL.Add(" from XLXSBJDYZZE ");
SQL.Add("where XLXSBJDYZZE_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZE_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZE_XLXHID<>' ' and XLXSBJDYZZE_DYDJID<>' ' ");
SQL.Add(" ) a on a.XLXHID=XLXSBJDMX_XLXHID");
SQL.Add(" and a.DYDJID = XLXSBJDMX_DYDJID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZE_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZE_BJSLSX<>0 and a.XLXSBJDYZZE_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZE_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZE_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZE_BJSLSX<>0 and a.XLXSBJDYZZE_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZE_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" and isnull(XLXSBJDYZZEBSY1_CPYT, ' ')=' ' ");
SQL.Add(" and isnull(XLXSBJDYZZEBSY2_XLJBXHID, ' ')=' ' ");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorE-3";
#endregion
}
}
}
#endregion
sErrorNum = "ErrorG";
//自动插入TJYS=G的调价因子值
#region 因素G|电压等级&芯线结构&导体材料&主芯截面范围&报价数量区间
if (dicTJYZList.ContainsKey("sTJYSListG"))
{
sTJYZ = dicTJYZList["sTJYSListG"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZG_DTCLID as DTCLID, XLXSBJDYZZG_DYDJID as DYDJID,XLXSBJDYZZG_XXJGID as XXJGID, ");
SQL.Add(" XLXSBJDYZZG_YZID as YZID,XLXSBJDYZZG_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZG_ZXJMSX as ZXJMSX, XLXSBJDYZZG_ZXJMXX as ZXJMXX, ");
SQL.Add(" XLXSBJDYZZG_BJSLXX,XLXSBJDYZZG_BJSLSX ");
SQL.Add(" from XLXSBJDYZZG ");
SQL.Add("where XLXSBJDYZZG_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZG_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZG_DTCLID=' ' ");
SQL.Add(" ) a on a.DYDJID=XLXSBJDMX_DYDJID and a.XXJGID=XLGGB_XXJGID and ");
SQL.Add(" a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZG_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZG_BJSLSX<>0 and a.XLXSBJDYZZG_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZG_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZG_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZG_BJSLSX<>0 and a.XLXSBJDYZZG_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZG_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorG-1";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZG_DTCLID as DTCLID, XLXSBJDYZZG_DYDJID as DYDJID,XLXSBJDYZZG_XXJGID as XXJGID, ");
SQL.Add(" XLXSBJDYZZG_YZID as YZID,XLXSBJDYZZG_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZG_ZXJMSX as ZXJMSX, XLXSBJDYZZG_ZXJMXX as ZXJMXX, ");
SQL.Add(" XLXSBJDYZZG_BJSLXX,XLXSBJDYZZG_BJSLSX ");
SQL.Add(" from XLXSBJDYZZG ");
SQL.Add("where XLXSBJDYZZG_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZG_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZG_DTCLID<>' ' ");
SQL.Add(" ) a on a.DYDJID=XLXSBJDMX_DYDJID and a.XXJGID=XLGGB_XXJGID and a.DTCLID=XLXHB_DTCLID and ");
SQL.Add(" a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZG_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZG_BJSLSX<>0 and a.XLXSBJDYZZG_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZG_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZG_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZG_BJSLSX<>0 and a.XLXSBJDYZZG_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZG_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorG-2";
#endregion
}
}
}
#endregion
sErrorNum = "ErrorF";
//自动插入TJYS=F的调价因子值
#region 因素F|电压等级&芯线结构&报价数量区间加价/报价数量
if (dicTJYZList.ContainsKey("sTJYSListF"))
{
sTJYZ = dicTJYZList["sTJYSListF"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH,XLXSBJDMX_BJSL ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZF_XXJGID as XXJGID, XLXSBJDYZZF_DYDJID as DYDJID,XLXSBJDYZZF_DTCLID as DTCLID, ");
SQL.Add(" XLXSBJDYZZF_YZID as YZID,XLXSBJDYZZF_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZF_BJSLXX,XLXSBJDYZZF_BJSLSX ");
SQL.Add(" from XLXSBJDYZZF ");
SQL.Add("where XLXSBJDYZZF_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZF_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZF_XXJGID=' ' and XLXSBJDYZZF_DYDJID<>' ' ");
SQL.Add(" ) a on a.DYDJID = XLXSBJDMX_DYDJID and a.DTCLID = XLXHB_DTCLID ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZF_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZF_BJSLSX<>0 and a.XLXSBJDYZZF_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZF_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZF_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZF_BJSLSX<>0 and a.XLXSBJDYZZF_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZF_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=(case when sor.XLXSBJDMX_BJSL = 0 then 0 else RoundFix(YZZ{0}/sor.XLXSBJDMX_BJSL,6) end)", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorF-1";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH,XLXSBJDMX_BJSL ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZF_XXJGID as XXJGID, XLXSBJDYZZF_DYDJID as DYDJID,XLXSBJDYZZF_DTCLID as DTCLID, ");
SQL.Add(" XLXSBJDYZZF_YZID as YZID,XLXSBJDYZZF_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZF_BJSLXX,XLXSBJDYZZF_BJSLSX ");
SQL.Add(" from XLXSBJDYZZF ");
SQL.Add("where XLXSBJDYZZF_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZF_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZF_XXJGID<>' ' and XLXSBJDYZZF_DYDJID<>' ' ");
SQL.Add(" ) a on a.DYDJID = XLXSBJDMX_DYDJID AND a.XXJGID = XLGGB_XXJGID AND a.DTCLID = XLXHB_DTCLID ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZF_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZF_BJSLSX<>0 and a.XLXSBJDYZZF_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZF_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZF_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZF_BJSLSX<>0 and a.XLXSBJDYZZF_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZF_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=(case when sor.XLXSBJDMX_BJSL = 0 then 0 else RoundFix(YZZ{0}/sor.XLXSBJDMX_BJSL,6) end)", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorF-2";
#endregion
}
}
}
#endregion
sErrorNum = "ErrorH";
//自动插入TJYS=H的调价因子值
#region 因素H|型号&主芯截面范围&报价数量区间加价/报价数量
if (dicTJYZList.ContainsKey("sTJYSListH"))
{
sTJYZ = dicTJYZList["sTJYSListH"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH,XLXSBJDMX_BJSL ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZH_XLXHID as XLXHID, ");
SQL.Add(" XLXSBJDYZZH_YZID as YZID,XLXSBJDYZZH_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZH_ZXJMXX as ZXJMXX,XLXSBJDYZZH_ZXJMSX as ZXJMSX, ");
SQL.Add(" XLXSBJDYZZH_BJSLXX,XLXSBJDYZZH_BJSLSX ");
SQL.Add(" from XLXSBJDYZZH ");
SQL.Add("where XLXSBJDYZZH_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZH_YZID=:pYZID");
SQL.Add(" and isnull(XLXSBJDYZZH_DYDJID,' ') = ' ' and isnull(XLXSBJDYZZH_XLYSID,' ') = ' ' ");
SQL.Add(" ) a on a.XLXHID = XLXSBJDMX_XLXHID");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZH_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZH_BJSLSX<>0 and a.XLXSBJDYZZH_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZH_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZH_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZH_BJSLSX<>0 and a.XLXSBJDYZZH_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZH_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=(case when sor.XLXSBJDMX_BJSL = 0 then 0 else RoundFix(YZZ{0}/sor.XLXSBJDMX_BJSL,6) end)", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorH";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH,XLXSBJDMX_BJSL ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZH_XLXHID as XLXHID,XLXSBJDYZZH_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZH_YZID as YZID,XLXSBJDYZZH_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZH_ZXJMXX as ZXJMXX,XLXSBJDYZZH_ZXJMSX as ZXJMSX, ");
SQL.Add(" XLXSBJDYZZH_BJSLXX,XLXSBJDYZZH_BJSLSX ");
SQL.Add(" from XLXSBJDYZZH ");
SQL.Add("where XLXSBJDYZZH_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZH_YZID=:pYZID");
SQL.Add(" and isnull(XLXSBJDYZZH_DYDJID,' ') <> ' ' and isnull(XLXSBJDYZZH_XLYSID,' ') = ' ' ");
SQL.Add(" ) a on a.XLXHID = XLXSBJDMX_XLXHID and a.DYDJID = XLXSBJDMX_DYDJID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZH_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZH_BJSLSX<>0 and a.XLXSBJDYZZH_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZH_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZH_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZH_BJSLSX<>0 and a.XLXSBJDYZZH_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZH_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=(case when sor.XLXSBJDMX_BJSL = 0 then 0 else RoundFix(YZZ{0}/sor.XLXSBJDMX_BJSL,6) end)", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorH";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH,XLXSBJDMX_BJSL ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZH_XLXHID as XLXHID,XLXSBJDYZZH_XLYSID as XLYSID, ");
SQL.Add(" XLXSBJDYZZH_YZID as YZID,XLXSBJDYZZH_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZH_ZXJMXX as ZXJMXX,XLXSBJDYZZH_ZXJMSX as ZXJMSX, ");
SQL.Add(" XLXSBJDYZZH_BJSLXX,XLXSBJDYZZH_BJSLSX ");
SQL.Add(" from XLXSBJDYZZH ");
SQL.Add("where XLXSBJDYZZH_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZH_YZID=:pYZID");
SQL.Add(" and isnull(XLXSBJDYZZH_DYDJID,' ') = ' ' and isnull(XLXSBJDYZZH_XLYSID,' ') <> ' ' ");
SQL.Add(" ) a on a.XLXHID = XLXSBJDMX_XLXHID and a.XLYSID = XLXSBJDMX_XLYSID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZH_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZH_BJSLSX<>0 and a.XLXSBJDYZZH_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZH_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZH_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZH_BJSLSX<>0 and a.XLXSBJDYZZH_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZH_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=(case when sor.XLXSBJDMX_BJSL = 0 then 0 else RoundFix(YZZ{0}/sor.XLXSBJDMX_BJSL,6) end)", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorH";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH,XLXSBJDMX_BJSL ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZH_XLXHID as XLXHID,XLXSBJDYZZH_DYDJID as DYDJID,XLXSBJDYZZH_XLYSID as XLYSID, ");
SQL.Add(" XLXSBJDYZZH_YZID as YZID,XLXSBJDYZZH_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZH_ZXJMXX as ZXJMXX,XLXSBJDYZZH_ZXJMSX as ZXJMSX, ");
SQL.Add(" XLXSBJDYZZH_BJSLXX,XLXSBJDYZZH_BJSLSX ");
SQL.Add(" from XLXSBJDYZZH ");
SQL.Add("where XLXSBJDYZZH_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZH_YZID=:pYZID");
SQL.Add(" and isnull(XLXSBJDYZZH_DYDJID,' ') <> ' ' and isnull(XLXSBJDYZZH_XLYSID,' ') <> ' ' ");
SQL.Add(" ) a on a.XLXHID = XLXSBJDMX_XLXHID and a.DYDJID = XLXSBJDMX_DYDJID and a.XLYSID = XLXSBJDMX_XLYSID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" and a.XLXSBJDYZZH_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZH_BJSLSX<>0 and a.XLXSBJDYZZH_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZH_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" and a.XLXSBJDYZZH_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZH_BJSLSX<>0 and a.XLXSBJDYZZH_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZH_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=(case when sor.XLXSBJDMX_BJSL = 0 then 0 else RoundFix(YZZ{0}/sor.XLXSBJDMX_BJSL,6) end)", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorH";
#endregion
}
}
}
#endregion
sErrorNum = "Error4";
//自动插入TJYS=4的调价因子值
#region 因素4|型号
if (dicTJYZList.ContainsKey("sTJYSList4"))
{
sTJYZ = dicTJYZList["sTJYSList4"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ4_YZID as YZID,XLXSBJDYZZ4_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ4_XLXHID as XLXHID ");
SQL.Add(" from XLXSBJDYZZ4 ");
SQL.Add("where XLXSBJDYZZ4_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ4_YZID=:pYZID");
SQL.Add(" ) a on ");
SQL.Add(" a.XLXHID = isnull(XLXSBJDMX_XLXHID,' ') ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "Error5";
//自动插入TJYS=5的调价因子值
#region 因素5|销售区域&型号&标准&电压等级&主芯截面范围
if (dicTJYZList.ContainsKey("sTJYSList5"))
{
sTJYZ = dicTJYZList["sTJYSList5"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ5_XSQYID as XSQYID, XLXSBJDYZZ5_XLXHID as XLXHID, ");
SQL.Add(" XLXSBJDYZZ5_XLBZID as XLBZID, XLXSBJDYZZ5_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZ5_YZID as YZID,XLXSBJDYZZ5_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ5_ZXJMSX as ZXJMSX, XLXSBJDYZZ5_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZ5 ");
SQL.Add("where XLXSBJDYZZ5_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ5_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ5_XSQYID = ' ' and XLXSBJDYZZ5_XLBZID = ' ' ");
SQL.Add(" ) a on ");
SQL.Add(" a.XLXHID=XLXSBJDMX_XLXHID and a.DYDJID=isnull(XLXSBJDMX_DYDJID, ' ') ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error5-1";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ5_XSQYID as XSQYID, XLXSBJDYZZ5_XLXHID as XLXHID, ");
SQL.Add(" XLXSBJDYZZ5_XLBZID as XLBZID, XLXSBJDYZZ5_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZ5_YZID as YZID,XLXSBJDYZZ5_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ5_ZXJMSX as ZXJMSX, XLXSBJDYZZ5_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZ5 ");
SQL.Add("where XLXSBJDYZZ5_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ5_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ5_XSQYID = ' ' and XLXSBJDYZZ5_XLBZID <> ' ' ");
SQL.Add(" ) a on a.XLBZID = isnull(XLXSBJDMX_XLBZID, ' ') ");
SQL.Add(" and a.XLXHID=XLXSBJDMX_XLXHID and a.DYDJID=isnull(XLXSBJDMX_DYDJID, ' ') ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error5-2";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ5_XSQYID as XSQYID, XLXSBJDYZZ5_XLXHID as XLXHID, ");
SQL.Add(" XLXSBJDYZZ5_XLBZID as XLBZID, XLXSBJDYZZ5_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZ5_YZID as YZID,XLXSBJDYZZ5_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ5_ZXJMSX as ZXJMSX, XLXSBJDYZZ5_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZ5 ");
SQL.Add("where XLXSBJDYZZ5_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ5_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ5_XSQYID <> ' ' and XLXSBJDYZZ5_XLBZID = ' ' ");
SQL.Add(" ) a on a.XSQYID = isnull(XLXSBJD_XSQYID, ' ') ");
SQL.Add(" and a.XLXHID=XLXSBJDMX_XLXHID and a.DYDJID=isnull(XLXSBJDMX_DYDJID, ' ') ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error5-3";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ5_XSQYID as XSQYID, XLXSBJDYZZ5_XLXHID as XLXHID, ");
SQL.Add(" XLXSBJDYZZ5_XLBZID as XLBZID, XLXSBJDYZZ5_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZ5_YZID as YZID,XLXSBJDYZZ5_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ5_ZXJMSX as ZXJMSX, XLXSBJDYZZ5_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZ5 ");
SQL.Add("where XLXSBJDYZZ5_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ5_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ5_XSQYID <> ' ' and XLXSBJDYZZ5_XLBZID <> ' ' ");
SQL.Add(" ) a on a.XSQYID = isnull(XLXSBJD_XSQYID, ' ') and a.XLBZID = isnull(XLXSBJDMX_XLBZID, ' ') ");
SQL.Add(" and a.XLXHID=XLXSBJDMX_XLXHID and a.DYDJID=isnull(XLXSBJDMX_DYDJID, ' ') ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error5-4";
#endregion
}
}
}
#endregion
sErrorNum = "Error6";
//自动插入TJYS=6的调价因子值
#region 因素6|报价数量区间调价米数/报价数量
if (dicTJYZList.ContainsKey("sTJYSList6"))
{
sTJYZ = dicTJYZList["sTJYSList6"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
/*
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……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH, ");
SQL.Add(" XLXSBJDMX_BJSL as BJSL ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ6_YZID as YZID,XLXSBJDYZZ6_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ6_BJSLXX,XLXSBJDYZZ6_BJSLSX ");
SQL.Add(" from XLXSBJDYZZ6 ");
SQL.Add("where XLXSBJDYZZ6_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ6_YZID=:pYZID");
SQL.Add(" ) a on ");
if (sBJU003JSDW.Equals("M"))
{
SQL.Add(" a.XLXSBJDYZZ6_BJSLXX<=(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ6_BJSLSX<>0 and a.XLXSBJDYZZ6_BJSLSX>(case XLXSBJDMX_JLDW when 'Km' then 1000*XLXSBJDMX_BJSL when '千米' then 1000*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ6_BJSLSX=0) ");
}
else if (sBJU003JSDW.Equals("Km"))
{
SQL.Add(" a.XLXSBJDYZZ6_BJSLXX<=(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end) ");
SQL.Add(" and ((a.XLXSBJDYZZ6_BJSLSX<>0 and a.XLXSBJDYZZ6_BJSLSX>(case XLXSBJDMX_JLDW when 'M' then 0.001*XLXSBJDMX_BJSL when '米' then 0.001*XLXSBJDMX_BJSL ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when '{0}' then {1}*0.001*XLXSBJDMX_BJSL ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else XLXSBJDMX_BJSL end)) or a.XLXSBJDYZZ6_BJSLSX=0) ");
}
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=case when sor.BJSL = 0 then 0 else YZZ{0}*100.0/sor.BJSL end", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "Error7";
//自动插入TJYS=7的调价因子值
#region 因素7|型号&电压等级&芯线结构&主芯截面范围
if (dicTJYZList.ContainsKey("sTJYSList7"))
{
sTJYZ = dicTJYZList["sTJYSList7"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ7_XLXHID as XLXHID, XLXSBJDYZZ7_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZ7_XXJGID as XXJGID, ");
SQL.Add(" XLXSBJDYZZ7_YZID as YZID,XLXSBJDYZZ7_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ7_ZXJMSX as ZXJMSX, XLXSBJDYZZ7_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZ7 ");
SQL.Add("where XLXSBJDYZZ7_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ7_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ7_DYDJID = ' ' and XLXSBJDYZZ7_XXJGID = ' ' ");
SQL.Add(" ) a on ");
SQL.Add(" a.XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error7-1";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ7_XLXHID as XLXHID, XLXSBJDYZZ7_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZ7_XXJGID as XXJGID, ");
SQL.Add(" XLXSBJDYZZ7_YZID as YZID,XLXSBJDYZZ7_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ7_ZXJMSX as ZXJMSX, XLXSBJDYZZ7_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZ7 ");
SQL.Add("where XLXSBJDYZZ7_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ7_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ7_DYDJID = ' ' and XLXSBJDYZZ7_XXJGID <> ' ' ");
SQL.Add(" ) a on a.XXJGID = XLGGB_XXJGID");
SQL.Add(" and a.XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error7-2";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ7_XLXHID as XLXHID, XLXSBJDYZZ7_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZ7_XXJGID as XXJGID, ");
SQL.Add(" XLXSBJDYZZ7_YZID as YZID,XLXSBJDYZZ7_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ7_ZXJMSX as ZXJMSX, XLXSBJDYZZ7_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZ7 ");
SQL.Add("where XLXSBJDYZZ7_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ7_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ7_DYDJID <> ' ' and XLXSBJDYZZ7_XXJGID = ' ' ");
SQL.Add(" ) a on a.DYDJID = isnull(XLXSBJDMX_DYDJID, ' ')");
SQL.Add(" and a.XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error7-3";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ7_XLXHID as XLXHID, XLXSBJDYZZ7_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJDYZZ7_XXJGID as XXJGID, ");
SQL.Add(" XLXSBJDYZZ7_YZID as YZID,XLXSBJDYZZ7_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ7_ZXJMSX as ZXJMSX, XLXSBJDYZZ7_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZ7 ");
SQL.Add("where XLXSBJDYZZ7_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ7_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ7_DYDJID <> ' ' and XLXSBJDYZZ7_XXJGID <> ' ' ");
SQL.Add(" ) a on a.DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') and a.XXJGID = XLGGB_XXJGID ");
SQL.Add(" and a.XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error7-4";
#endregion
}
}
}
#endregion
sErrorNum = "Error8";
//自动插入TJYS=8的调价因子值
#region 因素8|付款期限
if (dicTJYZList.ContainsKey("sTJYSList8"))
{
sTJYZ = dicTJYZList["sTJYSList8"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID=XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ8_YZID as YZID,XLXSBJDYZZ8_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZ8_FKQXNR as FKQXNR ");
SQL.Add(" from XLXSBJDYZZ8 ");
SQL.Add("where XLXSBJDYZZ8_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ8_YZID=:pYZID");
SQL.Add(" ) a on ");
SQL.Add(" a.FKQXNR = isnull(XLXSBJD_FKQXNR,' ') ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "Error9";
//自动插入TJYS=9的调价因子值
#region 因素9|导体材料&产品用途&电压等级分类&产品特性
if (dicTJYZList.ContainsKey("sTJYSList9"))
{
sTJYZ = dicTJYZList["sTJYSList9"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLDYDJB on XLDYDJB_DYDJID = XLXSBJDMX_DYDJID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZ9_DTCLID as DTCLID, XLXSBJDYZZ9_CPYT as CPYT, ");
SQL.Add(" XLXSBJDYZZ9_DYDJFL as DYDJFL, XLXSBJDYZZ9_XLTXID as XLTXID, ");
SQL.Add(" XLXSBJDYZZ9_YZID as YZID,XLXSBJDYZZ9_YZZ as YZZ ");
SQL.Add(" from XLXSBJDYZZ9 ");
SQL.Add(" where XLXSBJDYZZ9_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ9_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ9_CPYT=' ' and XLXSBJDYZZ9_DYDJFL=' ' and XLXSBJDYZZ9_XLTXID = ' ' ");
SQL.Add(" ) a on ");
SQL.Add(" a.DTCLID = XLXHB_DTCLID ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error9-1";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLDYDJB on XLDYDJB_DYDJID = XLXSBJDMX_DYDJID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add("select XLXSBJDYZZ9_DTCLID as DTCLID, XLXSBJDYZZ9_CPYT as CPYT, ");
SQL.Add(" XLXSBJDYZZ9_DYDJFL as DYDJFL, XLXSBJDYZZ9_XLTXID as XLTXID, ");
SQL.Add(" XLXSBJDYZZ9_YZID as YZID,XLXSBJDYZZ9_YZZ as YZZ ");
SQL.Add(" from XLXSBJDYZZ9 ");
SQL.Add(" where XLXSBJDYZZ9_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ9_YZID=:pYZID");
SQL.Add(" and ( ");
SQL.Add(" (XLXSBJDYZZ9_CPYT <>' ' and XLXSBJDYZZ9_DYDJFL=' ' and XLXSBJDYZZ9_XLTXID = ' ') ");
SQL.Add(" or (XLXSBJDYZZ9_CPYT = ' ' and XLXSBJDYZZ9_DYDJFL<>' ' and XLXSBJDYZZ9_XLTXID = ' ') ");
SQL.Add(" or (XLXSBJDYZZ9_CPYT = ' ' and XLXSBJDYZZ9_DYDJFL=' ' and XLXSBJDYZZ9_XLTXID <> ' ') ");
SQL.Add(" ) ");
SQL.Add(" ) a on ( ");
SQL.Add(" (a.CPYT = XLXHB_CPYT and isnull(a.CPYT,' ') <>' ') ");
SQL.Add(" or (a.DYDJFL = XLDYDJB_DYDJFL and isnull(a.DYDJFL,' ') <> ' ') ");
SQL.Add(" or (a.XLTXID = XLXHB_XLTXID and isnull(a.XLTXID , ' ') <> ' ' ) ");
SQL.Add(" ) ");
SQL.Add(" and a.DTCLID = XLXHB_DTCLID ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error9-2";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLDYDJB on XLDYDJB_DYDJID = XLXSBJDMX_DYDJID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add("select XLXSBJDYZZ9_DTCLID as DTCLID, XLXSBJDYZZ9_CPYT as CPYT, ");
SQL.Add(" XLXSBJDYZZ9_DYDJFL as DYDJFL, XLXSBJDYZZ9_XLTXID as XLTXID, ");
SQL.Add(" XLXSBJDYZZ9_YZID as YZID,XLXSBJDYZZ9_YZZ as YZZ ");
SQL.Add(" from XLXSBJDYZZ9 ");
SQL.Add(" where XLXSBJDYZZ9_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ9_YZID=:pYZID");
SQL.Add(" and ( ");
SQL.Add(" (XLXSBJDYZZ9_CPYT <>' ' and XLXSBJDYZZ9_DYDJFL<>' ' and XLXSBJDYZZ9_XLTXID = ' ') ");
SQL.Add(" or (XLXSBJDYZZ9_CPYT = ' ' and XLXSBJDYZZ9_DYDJFL<>' ' and XLXSBJDYZZ9_XLTXID <> ' ') ");
SQL.Add(" or (XLXSBJDYZZ9_CPYT <> ' ' and XLXSBJDYZZ9_DYDJFL=' ' and XLXSBJDYZZ9_XLTXID <> ' ') ");
SQL.Add(" ) ");
SQL.Add(" ) a on ( ");
SQL.Add(" a.CPYT = XLXHB_CPYT or a.DYDJFL = XLDYDJB_DYDJFL or a.XLTXID = XLXHB_XLTXID ");
SQL.Add(" ) ");
SQL.Add(" and a.DTCLID = XLXHB_DTCLID ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error9-3";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLDYDJB on XLDYDJB_DYDJID = XLXSBJDMX_DYDJID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add("select XLXSBJDYZZ9_DTCLID as DTCLID, XLXSBJDYZZ9_CPYT as CPYT, ");
SQL.Add(" XLXSBJDYZZ9_DYDJFL as DYDJFL, XLXSBJDYZZ9_XLTXID as XLTXID, ");
SQL.Add(" XLXSBJDYZZ9_YZID as YZID,XLXSBJDYZZ9_YZZ as YZZ ");
SQL.Add(" from XLXSBJDYZZ9 ");
SQL.Add(" where XLXSBJDYZZ9_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZ9_YZID=:pYZID");
SQL.Add(" and XLXSBJDYZZ9_CPYT<>' ' and XLXSBJDYZZ9_DYDJFL<>' ' and XLXSBJDYZZ9_XLTXID <> ' ' ");
SQL.Add(" ) a on ");
SQL.Add(" (a.CPYT = XLXHB_CPYT and a.DYDJFL = XLDYDJB_DYDJFL and a.XLTXID = XLXHB_XLTXID) ");
SQL.Add(" and a.DTCLID = XLXHB_DTCLID ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "Error9-4";
#endregion
}
}
}
#endregion
sErrorNum = "ErrorA";
//自动插入TJYS=A的调价因子值
#region 因素A|型号&规格&电压&标准
if (dicTJYZList.ContainsKey("sTJYSListA"))
{
sTJYZ = dicTJYZList["sTJYSListA"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
bool bUseXLXSBJXLGGTHB = UseXLXSBJXLGGTHB();
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZA_YZID as YZID,XLXSBJDYZZA_YZZ as YZZ, ");
if (bUseXLXSBJXLGGTHB)
{
SQL.Add(" XLXSBJDYZZA_XLXHID as XLXHID, XLXSBJXLGGTHB.XLXSBJXLGGTHB_XLGGIDCH as XLGGID, ");
SQL.Add(" XLXSBJDYZZA_XLBZID as XLBZID, XLXSBJDYZZA_DYDJID as DYDJID ");
SQL.Add(" from XLXSBJDYZZA ");
SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB.XLXSBJXLGGTHB_XLGGID = XLXSBJDYZZA_XLGGID");
}
else
{
SQL.Add(" XLXSBJDYZZA_XLXHID as XLXHID, replace(XLXSBJDYZZA_XLGGID,'*','×') as XLGGID, ");
SQL.Add(" XLXSBJDYZZA_XLBZID as XLBZID, XLXSBJDYZZA_DYDJID as DYDJID ");
SQL.Add(" from XLXSBJDYZZA ");
}
SQL.Add(" where XLXSBJDYZZA_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZA_YZID=:pYZID");
SQL.Add(" ) a on ");
SQL.Add(" a.XLXHID = isnull(XLXSBJDMX_XLXHID,' ') ");
SQL.Add(" and a.XLGGID = isnull(XLXSBJXLGGTHB_XLGGIDCH ,' ') ");
SQL.Add(" and a.XLBZID = isnull(XLXSBJDMX_XLBZID,' ') ");
SQL.Add(" and a.DYDJID = isnull(XLXSBJDMX_DYDJID,' ') ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "ErrorB";
//自动插入TJYS=B的调价因子值
#region 因素B|销售单位
if (dicTJYZList.ContainsKey("sTJYSListB"))
{
sTJYZ = dicTJYZList["sTJYSListB"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID=XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZB_YZID as YZID,XLXSBJDYZZB_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZB_SYDWID as SYDWID ");
SQL.Add(" from XLXSBJDYZZB ");
SQL.Add(" where XLXSBJDYZZB_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZB_YZID=:pYZID");
SQL.Add(" ) a on ");
SQL.Add(" a.SYDWID = isnull(XLXSBJD_SYDWID,' ') ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "ErrorC";
//自动插入TJYS=C的调价因子值
#region 因素C|产品目录&主芯截面范围&产品特性
if (dicTJYZList.ContainsKey("sTJYSListC"))
{
sTJYZ = dicTJYZList["sTJYSListC"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZC_CPMLYZZ+(case when XLXHB_RDT='Y' then XLXSBJDYZZC_RDTYZZ else 0 end) ");
SQL.Add(" +(case when isnull(XLXHB_FPCLID,' ')<>' ' or isnull(XLXHB_PBCLID,' ')<>' ' then XLXSBJDYZZC_PBYZZ else 0 end) ");
SQL.Add(" +(case when XLXHB_NHTX='Y' then XLXSBJDYZZC_NHYZZ else 0 end) as YZZ,XLXSBJXHML_DYDJID,XLXSBJDYZZC_BJDID, ");
SQL.Add(" XLXHB_XLXHID as XLXHID, ");
SQL.Add(" XLXSBJDYZZC_YZID as YZID, ");
SQL.Add(" XLXSBJDYZZC_ZXJMSX as ZXJMSX, XLXSBJDYZZC_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZC,XLXSBJXHML,XLXHB ");
SQL.Add(" where XLXSBJDYZZC_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJXHML_CPMLID=XLXSBJDYZZC_CPMLID and XLXSBJXHML_XLXHID=XLXHB_XLXHID ");
SQL.Add(" and XLXSBJDYZZC_YZID=:pYZID");
SQL.Add(" and XLXSBJXHML_DYDJID = ' ' and XLXSBJDYZZC_BJDID = ' ' ");
SQL.Add(" ) a on ");
SQL.Add(" a.XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorC-1";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZC_CPMLYZZ+(case when XLXHB_RDT='Y' then XLXSBJDYZZC_RDTYZZ else 0 end) ");
SQL.Add(" +(case when isnull(XLXHB_FPCLID,' ')<>' ' or isnull(XLXHB_PBCLID,' ')<>' ' then XLXSBJDYZZC_PBYZZ else 0 end) ");
SQL.Add(" +(case when XLXHB_NHTX='Y' then XLXSBJDYZZC_NHYZZ else 0 end) as YZZ,XLXSBJXHML_DYDJID as DYDJID,XLXSBJDYZZC_BJDID as BJDID,");
SQL.Add(" XLXHB_XLXHID as XLXHID, ");
SQL.Add(" XLXSBJDYZZC_YZID as YZID, ");
SQL.Add(" XLXSBJDYZZC_ZXJMSX as ZXJMSX, XLXSBJDYZZC_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZC,XLXSBJXHML,XLXHB ");
SQL.Add(" where XLXSBJDYZZC_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJXHML_CPMLID=XLXSBJDYZZC_CPMLID and XLXSBJXHML_XLXHID=XLXHB_XLXHID ");
SQL.Add(" and XLXSBJDYZZC_YZID=:pYZID");
SQL.Add(" and XLXSBJXHML_DYDJID = ' ' and XLXSBJDYZZC_BJDID <> ' ' ");
SQL.Add(" ) a on a.BJDID = XLXSBJDMX_BJDID ");
SQL.Add(" and a.XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorC-2";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZC_CPMLYZZ+(case when XLXHB_RDT='Y' then XLXSBJDYZZC_RDTYZZ else 0 end) ");
SQL.Add(" +(case when isnull(XLXHB_FPCLID,' ')<>' ' or isnull(XLXHB_PBCLID,' ')<>' ' then XLXSBJDYZZC_PBYZZ else 0 end) ");
SQL.Add(" +(case when XLXHB_NHTX='Y' then XLXSBJDYZZC_NHYZZ else 0 end) as YZZ,XLXSBJXHML_DYDJID as DYDJID,XLXSBJDYZZC_BJDID as BJDID,");
SQL.Add(" XLXHB_XLXHID as XLXHID, ");
SQL.Add(" XLXSBJDYZZC_YZID as YZID, ");
SQL.Add(" XLXSBJDYZZC_ZXJMSX as ZXJMSX, XLXSBJDYZZC_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZC,XLXSBJXHML,XLXHB ");
SQL.Add(" where XLXSBJDYZZC_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJXHML_CPMLID=XLXSBJDYZZC_CPMLID and XLXSBJXHML_XLXHID=XLXHB_XLXHID ");
SQL.Add(" and XLXSBJDYZZC_YZID=:pYZID");
SQL.Add(" and XLXSBJXHML_DYDJID <> ' ' and XLXSBJDYZZC_BJDID = ' ' ");
SQL.Add(" ) a on a.DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
SQL.Add(" and a.XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorC-3";
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZC_CPMLYZZ+(case when XLXHB_RDT='Y' then XLXSBJDYZZC_RDTYZZ else 0 end) ");
SQL.Add(" +(case when isnull(XLXHB_FPCLID,' ')<>' ' or isnull(XLXHB_PBCLID,' ')<>' ' then XLXSBJDYZZC_PBYZZ else 0 end) ");
SQL.Add(" +(case when XLXHB_NHTX='Y' then XLXSBJDYZZC_NHYZZ else 0 end) as YZZ,XLXSBJXHML_DYDJID as DYDJID,XLXSBJDYZZC_BJDID as BJDID,");
SQL.Add(" XLXHB_XLXHID as XLXHID, ");
SQL.Add(" XLXSBJDYZZC_YZID as YZID, ");
SQL.Add(" XLXSBJDYZZC_ZXJMSX as ZXJMSX, XLXSBJDYZZC_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZC,XLXSBJXHML,XLXHB ");
SQL.Add(" where XLXSBJDYZZC_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJXHML_CPMLID=XLXSBJDYZZC_CPMLID and XLXSBJXHML_XLXHID=XLXHB_XLXHID ");
SQL.Add(" and XLXSBJDYZZC_YZID=:pYZID");
SQL.Add(" and XLXSBJXHML_DYDJID <> ' ' and XLXSBJDYZZC_BJDID <> ' ' ");
SQL.Add(" ) a on a.BJDID = XLXSBJDMX_BJDID and a.DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
SQL.Add(" and a.XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
sErrorNum = "ErrorC-4";
#endregion
}
}
}
#endregion
sErrorNum = "ErrorD";
//自动插入TJYS=D的调价因子值
#region 因素D|颜色&主芯截面范围
if (dicTJYZList.ContainsKey("sTJYSListD"))
{
sTJYZ = dicTJYZList["sTJYSListD"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add(" left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add(" left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZD_YZID as YZID,XLXSBJDYZZD_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZD_XLYSID as XLYSID,XLXSBJDYZZD_ZXJMSX as ZXJMSX, XLXSBJDYZZD_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJDYZZD ");
SQL.Add(" where XLXSBJDYZZD_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZD_YZID=:pYZID");
SQL.Add(" ) a on ");
SQL.Add(" a.XLYSID = isnull(XLXSBJDMX_XLYSID,' ') ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "ErrorK";
//自动插入TJYS=K的调价因子值
#region 因素K|导体类型电压等级/材料重量
if (dicTJYZList.ContainsKey("sTJYSListK"))
{
sTJYZ = dicTJYZList["sTJYSListK"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH,case when XLXSBJDMX_BJSL=0 then 0 else round(XLXSBJDMX_CLZL/XLXSBJDMX_BJSL,5) end as CLZL ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZK_YZID as YZID,XLXSBJDYZZK_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZK_DTLX as DTLX,XLXSBJDYZZK_DYDJID as DYDJID ");
SQL.Add(" from XLXSBJDYZZK ");
SQL.Add(" where XLXSBJDYZZK_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZK_YZID=:pYZID and XLXSBJDYZZK_DYDJID=' ' ");
SQL.Add(" ) a on ");
SQL.Add(" a.DTLX = isnull(XLXHB_DTCLID,' ') ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
if (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}*CLZL ", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
#endregion
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH,case when XLXSBJDMX_BJSL=0 then 0 else round(XLXSBJDMX_CLZL/XLXSBJDMX_BJSL,5) end as CLZL ");
SQL.Add(string.Format(",isnull(YZZ,0) as YZZ{0}", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJDYZZK_YZID as YZID,XLXSBJDYZZK_YZZ as YZZ, ");
SQL.Add(" XLXSBJDYZZK_DTLX as DTLX,XLXSBJDYZZK_DYDJID as DYDJID ");
SQL.Add(" from XLXSBJDYZZK ");
SQL.Add(" where XLXSBJDYZZK_JGBID=:pJGBID ");
SQL.Add(" and XLXSBJDYZZK_YZID=:pYZID and XLXSBJDYZZK_DYDJID<>' ' ");
SQL.Add(" ) a on ");
SQL.Add(" a.DTLX = isnull(XLXHB_DTCLID,' ') and a.DYDJID=XLXSBJDMX_DYDJID ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(YZID,' ')<>' ' ");
if (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ{0}*CLZL ", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJGBID").Value = sJGBID;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "ErrorBZPF";
//自动插入TJMK=包装盘费的调价因子值
#region 调价模块包装盘费|型号&规格&电压&标准
if (dicTJYZList.ContainsKey("sTJYSListPFBZ"))
{
sTJYZ = dicTJYZList["sTJYSListPFBZ"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
string sTmpBJU003 = "M";
//if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
// sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
#region
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH,isnull(YZZ,0) as YZZ ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(@" SELECT XLXSCLQD_XLXHID AS XLXHID,XLXSBJXLGGTHB_XLGGIDCH AS XLGGID,XLXSCLQD_XLBZID AS XLBZID,XLXSCLQD_DYDJID AS DYDJID,
isnull(MIN(ROUND(CASE WHEN ISNULL(CONVERT(FLOAT,ISNULL(XLBMYSMX_DHMC,'0')),0)=0 THEN 0
ELSE PJJG/CONVERT(FLOAT,ISNULL(XLBMYSMX_DHMC,'0')) END,6)),0) AS YZZ
FROM XLXSCLQD
left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSCLQD_XLGGID
LEFT JOIN XLXHJGCZBNR ON XLXHJGCZBNR_JGCZBID=XLXSCLQD_JGCZBID AND XLXHJGCZBNR_JGCZBBBID=XLXSCLQD_JGCZBBBID
AND XLXHJGCZBNR_JGCZBXH=XLXSCLQD_JGCZBXH AND XLXHJGCZBNR_DRHH=XLXSCLQD_DRHH
LEFT JOIN XLBMYSMX ON XLBMYSMX_YSBM='DC' AND XLBMYSMX_YSID=XLXHJGCZBNR_DC
LEFT JOIN (SELECT XLZPPJFL_PJFLMC,MAX(XLZPPJJG_PJJG) AS PJJG FROM XLZPPJFL
LEFT JOIN XLZPPJJG ON XLZPPJJG_PJCZ=XLZPPJFL_PJFLID
WHERE 1=1 and XLZPPJJG_YXQS <= :pDtNow and (XLZPPJJG_YXQZ>=:pDtNow or XLZPPJJG_YXQZ is null)
GROUP BY XLZPPJFL_PJFLMC) PJ ON RTRIM(XLZPPJFL_PJFLMC)=RTRIM(XLXHJGCZBNR_BZFS)
where exists(select 1 from XLXSBJDMX WHERE XLXSBJDMX_BJDID=:pBJDID AND XLXSBJDMX_XLXHID=XLXSCLQD_XLXHID
AND XLXSBJDMX_XLGGID=XLXSCLQD_XLGGID AND XLXSBJDMX_XLBZID=XLXSCLQD_XLBZID AND XLXSBJDMX_DYDJID=XLXSCLQD_DYDJID)
GROUP BY XLXSCLQD_XLXHID,XLXSBJXLGGTHB_XLGGIDCH,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID) a on ");
SQL.Add(" a.XLXHID = isnull(XLXSBJDMX_XLXHID,' ') ");
SQL.Add(" and a.XLGGID = isnull(XLXSBJXLGGTHB_XLGGIDCH,' ') ");
SQL.Add(" and a.XLBZID = isnull(XLXSBJDMX_XLBZID,' ') ");
SQL.Add(" and a.DYDJID = isnull(XLXSBJDMX_DYDJID,' ') ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID ");
//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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=YZZ", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pYZID").Value = sTJYZ[i].Trim();
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pDtNow").Value = DateTime.Now;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("merge into XLXSBJDYZZ0 using( ");
SQL.Add(" select XLXSBJDMX_XH as XH,(");
SQL.Add(" case when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('M', '米') then 0.001");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('Km', '千米') then 1000.0");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('M', '米') then 1.0");
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('Km', '千米') then 1.0");
string sTDDWList = "(";
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW='{0}' then 0.001*{1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW='{0}' then {1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('Km', '千米') then 1000.0/{1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('M', '米') then 1.0/{1} ", sKey, dicLenJLDWTD[sKey]));
sTDDWList += "'" + sKey + "',";
}
sTDDWList = sTDDWList.TrimEnd(',');
sTDDWList += ")";
SQL.Add(" when :pBJU003 in " + sTDDWList + " and XLXSBJDMX_JLDW in " + sTDDWList + " then 1.0");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then 0.001");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('T', '吨') then 1000.0");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then 1.0");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('T', '吨') then 1.0");
if (sTmpBJU003.ToUpper().Equals("KM") || sTmpBJU003.ToUpper().Equals("千米"))
{
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else 1.0/XLXSCLQD_CLZL end)");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*1000.0 end)");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL");
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*1000.0 end)");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)* 1000.0*1000.0 end)");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL/1000.0");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('M', '米') then XLXSCLQD_CLZL/1000.0");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('M', '米') then XLXSCLQD_CLZL/1000.0/1000.0");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL/1000.0/1000.0 ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('KG', '千克', '公斤') then 1000.0/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('T', '吨') then 1000.0*1000.0/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
}
}
else if (sTmpBJU003.ToUpper().Equals("米") || sTmpBJU003.ToUpper().Equals("M"))
{
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*(1/1000.0) end)");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else 1.0/XLXSCLQD_CLZL end)");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL*1000.0");
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL) end)");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*1000.0 end)");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL*1000.0");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('M', '米') then XLXSCLQD_CLZL");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('M', '米') then XLXSCLQD_CLZL/1000.0");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('KG', '千克', '公斤') then 1/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('T', '吨') then 1000.0/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
}
}
SQL.Add(" when :pBJU003=upper(XLXSBJDMX_JLDW) and :pBJU003 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 1.0");
SQL.Add(" end ");
SQL.Add(" ) as HSBL ");
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 and isnull(XLXSCLQD_CLZL,0)<>0 ");
if (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(string.Format(" XLXSBJDYZZ0_YZZ{0}=XLXSBJDYZZ0_YZZ{0}*HSBL", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pBJU003").Value = sTmpBJU003;
dberp.ExecSQL(SQL);
#endregion
}
}
}
#endregion
sErrorNum = "ErrorYF";
//自动插入TJMK=产品外径盘费的调价因子值
#region 调价模块产品外径盘费|型号&规格&电压&标准
if (dicTJYZList.ContainsKey("sTJYSListYF"))
{
string sTcpList = "";
string sLcpList = "";
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860063);
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_TDTGSCLID))
sTcpList = pzxx.XLXSBJPZ_TDTGSCLID;
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_LDTGSCLID))
sLcpList = pzxx.XLXSBJPZ_LDTGSCLID;
string sTQH = string.Empty;
string sLQH = string.Empty;
sTJYZ = dicTJYZList["sTJYSListYF"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
SQL.Clear();
SQL.Add(@" select XLXSBJYFJZQJ_YFJZQH
from XLXSBJYFJZQJ
where XLXSBJYFJZQJ_YFJZQJMC like '%铜%' and exists(select 1 from XLXSBJD where XLXSBJD_BJDID=:pBJDID and XLXSBJYFJZQJ_YFJZXX<=XLXSBJD_TJ*1000 and XLXSBJYFJZQJ_YFJZSX>XLXSBJD_TJ*1000) ");
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet dsQH = dberp.OpenDataSet(SQL);
if (dsQH.Tables[0].Rows.Count > 0)
sTQH = dsQH.Tables[0].Rows[0][0].ToString().Trim();
SQL.Clear();
SQL.Add(@" select XLXSBJYFJZQJ_YFJZQH
from XLXSBJYFJZQJ
where XLXSBJYFJZQJ_YFJZQJMC like '%铝%' and exists(select 1 from XLXSBJD where XLXSBJD_BJDID=:pBJDID and XLXSBJYFJZQJ_YFJZXX<=XLXSBJD_LJ*1000 and XLXSBJYFJZQJ_YFJZSX>XLXSBJD_LJ*1000) ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dsQH = dberp.OpenDataSet(SQL);
if (dsQH.Tables[0].Rows.Count > 0)
sLQH = dsQH.Tables[0].Rows[0][0].ToString().Trim();
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (!string.IsNullOrEmpty(sTcpList) && !string.IsNullOrEmpty(sTQH))
{
SQL.Clear();
SQL.Add("merge into XLXSBJDYZZ0 tar ");
SQL.Add("using ( ");
SQL.Add(@" select isnull(XLXSBJDQYFB_YSFL,0) as YZZ,XLXSBJDMX_BJDID as BJDID ,XLXSBJDMX_XH as XH
from XLXSBJDMX
left join XLXSBJD on XLXSBJD_BJDID=XLXSBJDMX_BJDID
left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID
left join XLXSBJDQYFB on XLXSBJD_XZQHID=XLXSBJDQYFB_XZQHID and XLXSBJDQYFB_YFJZQH=:XLXSBJDQYFB_YFJZQH
where XLXSBJDMX_BJDID=:pBJDID ");
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sTcpList));
if (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(") sor ");
SQL.Add("on (tar.XLXSBJDYZZ0_BJDID=sor.BJDID and tar.XLXSBJDYZZ0_XH=sor.XH) ");
SQL.Add("when matched then update set ");
SQL.Add(string.Format("tar.XLXSBJDYZZ0_YZZ{0}=sor.YZZ", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("XLXSBJDQYFB_YFJZQH").Value = sTQH;
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
if (!string.IsNullOrEmpty(sLcpList) && !string.IsNullOrEmpty(sLQH))
{
SQL.Clear();
SQL.Add("merge into XLXSBJDYZZ0 tar ");
SQL.Add("using ( ");
SQL.Add(@" select isnull(XLXSBJDQYFB_YSFL,0) as YZZ,XLXSBJDMX_BJDID as BJDID ,XLXSBJDMX_XH as XH
from XLXSBJDMX
left join XLXSBJD on XLXSBJD_BJDID=XLXSBJDMX_BJDID
left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID
left join XLXSBJDQYFB on XLXSBJD_XZQHID=XLXSBJDQYFB_XZQHID and XLXSBJDQYFB_YFJZQH=:XLXSBJDQYFB_YFJZQH
where XLXSBJDMX_BJDID=:pBJDID ");
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXHB_DTCLID", sLcpList));
if (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(") sor ");
SQL.Add("on (tar.XLXSBJDYZZ0_BJDID=sor.BJDID and tar.XLXSBJDYZZ0_XH=sor.XH) ");
SQL.Add("when matched then update set ");
SQL.Add(string.Format("tar.XLXSBJDYZZ0_YZZ{0}=sor.YZZ", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("XLXSBJDQYFB_YFJZQH").Value = sLQH;
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
}
}
}
#endregion
sErrorNum = "ErrorCPWJPF";
//自动插入TJMK=产品外径盘费的调价因子值
#region 调价模块产品外径盘费|型号&规格&电压&标准
if (dicTJYZList.ContainsKey("sTJYSListPFCPWJ"))
{
sTJYZ = dicTJYZList["sTJYSListPFCPWJ"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
SQL.Clear();
SQL.Add("merge into XLXSBJDYZZ0 tar ");
SQL.Add("using ( ");
SQL.Add(" select A.BJDID,A.XH, ");
SQL.Add(" isnull(case when isnull(A.BJSLM,0)=0 then 0 ");
SQL.Add(" when isnull(A.PJJG,0)=0 then 0 ");
SQL.Add(" when A.BJSLM > isnull(A.MAX_BJSLSX,0) and isnull(A.MAX_BJSLSX,0)>0 then (ceiling(A.BJSLM/A.MAX_BJSLSX)*A.PJJG)/A.BJSL ");
SQL.Add(" else A.PJJG/A.BJSL end,0) as YZZ ");
SQL.Add(" from ( ");
SQL.Add(" select M.XLXSBJDMX_BJDID as BJDID,M.XLXSBJDMX_XH as XH,M.XLXSBJDMX_BJSL as BJSL, ");
SQL.Add(" isnull(L.XLXLB_WJ,0) as CPWJ, ");
SQL.Add(" case when M.XLXSBJDMX_JLDW in ('M','米') then isnull(M.XLXSBJDMX_BJSL,0) ");
SQL.Add(" when M.XLXSBJDMX_JLDW in ('KM','Km','千米') then isnull(M.XLXSBJDMX_BJSL,0)*1000.0 ");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when M.XLXSBJDMX_JLDW='{0}' then isnull(M.XLXSBJDMX_BJSL,0)*{1} ", sKey, dicLenJLDWTD[sKey]));
}
SQL.Add(" else isnull(M.XLXSBJDMX_BJSL,0) end as BJSLM, ");
SQL.Add(" (select min(Q2.XLXSBJPJWJSLQJ_BJSLXX) from XLXSBJPJWJSLQJ Q2 where isnull(L.XLXLB_WJ,0)>=Q2.XLXSBJPJWJSLQJ_CPWJXX and isnull(L.XLXLB_WJ,0)<=Q2.XLXSBJPJWJSLQJ_CPWJSX) as MIN_BJSLXX, ");
SQL.Add(" (select max(Q3.XLXSBJPJWJSLQJ_BJSLSX) from XLXSBJPJWJSLQJ Q3 where isnull(L.XLXLB_WJ,0)>=Q3.XLXSBJPJWJSLQJ_CPWJXX and isnull(L.XLXLB_WJ,0)<=Q3.XLXSBJPJWJSLQJ_CPWJSX) as MAX_BJSLSX, ");
SQL.Add(" (select top 1 Q4.XLXSBJPJWJSLQJ_PJWLID from XLXSBJPJWJSLQJ Q4 ");
SQL.Add(" where isnull(L.XLXLB_WJ,0)>=Q4.XLXSBJPJWJSLQJ_CPWJXX and isnull(L.XLXLB_WJ,0)<=Q4.XLXSBJPJWJSLQJ_CPWJSX ");
SQL.Add(" and ( ");
SQL.Add(" (case when M.XLXSBJDMX_JLDW in ('M','米') then isnull(M.XLXSBJDMX_BJSL,0) when M.XLXSBJDMX_JLDW in ('KM','Km','千米') then isnull(M.XLXSBJDMX_BJSL,0)*1000.0 else isnull(M.XLXSBJDMX_BJSL,0) end between Q4.XLXSBJPJWJSLQJ_BJSLXX and Q4.XLXSBJPJWJSLQJ_BJSLSX) ");
SQL.Add(" or ((case when M.XLXSBJDMX_JLDW in ('M','米') then isnull(M.XLXSBJDMX_BJSL,0) when M.XLXSBJDMX_JLDW in ('KM','Km','千米') then isnull(M.XLXSBJDMX_BJSL,0)*1000.0 else isnull(M.XLXSBJDMX_BJSL,0) end) < (select min(Q5.XLXSBJPJWJSLQJ_BJSLXX) from XLXSBJPJWJSLQJ Q5 where isnull(L.XLXLB_WJ,0)>=Q5.XLXSBJPJWJSLQJ_CPWJXX and isnull(L.XLXLB_WJ,0)<=Q5.XLXSBJPJWJSLQJ_CPWJSX) and Q4.XLXSBJPJWJSLQJ_BJSLXX=(select min(Q6.XLXSBJPJWJSLQJ_BJSLXX) from XLXSBJPJWJSLQJ Q6 where isnull(L.XLXLB_WJ,0)>=Q6.XLXSBJPJWJSLQJ_CPWJXX and isnull(L.XLXLB_WJ,0)<=Q6.XLXSBJPJWJSLQJ_CPWJSX)) ");
SQL.Add(" or ((case when M.XLXSBJDMX_JLDW in ('M','米') then isnull(M.XLXSBJDMX_BJSL,0) when M.XLXSBJDMX_JLDW in ('KM','Km','千米') then isnull(M.XLXSBJDMX_BJSL,0)*1000.0 else isnull(M.XLXSBJDMX_BJSL,0) end) > (select max(Q7.XLXSBJPJWJSLQJ_BJSLSX) from XLXSBJPJWJSLQJ Q7 where isnull(L.XLXLB_WJ,0)>=Q7.XLXSBJPJWJSLQJ_CPWJXX and isnull(L.XLXLB_WJ,0)<=Q7.XLXSBJPJWJSLQJ_CPWJSX) and Q4.XLXSBJPJWJSLQJ_BJSLSX=(select max(Q8.XLXSBJPJWJSLQJ_BJSLSX) from XLXSBJPJWJSLQJ Q8 where isnull(L.XLXLB_WJ,0)>=Q8.XLXSBJPJWJSLQJ_CPWJXX and isnull(L.XLXLB_WJ,0)<=Q8.XLXSBJPJWJSLQJ_CPWJSX)) ");
SQL.Add(" ) ");
SQL.Add(" order by Q4.XLXSBJPJWJSLQJ_BJSLXX,Q4.XLXSBJPJWJSLQJ_BJSLSX) as PJWLID, ");
SQL.Add(" (select top 1 isnull(JG.XLZPPJJG_PJJG,0) from XLZPPJ PJ left join XLZPPJJG JG on JG.XLZPPJJG_PJCZ=PJ.XLZPPJ_PJCZ and isnull(JG.XLZPPJJG_PJWJ,0)=isnull(PJ.XLZPPJ_PJWJ,0) and isnull(JG.XLZPPJJG_PJNJ,0)=isnull(PJ.XLZPPJ_PJNJ,0) and isnull(JG.XLZPPJJG_PJKD,0)=isnull(PJ.XLZPPJ_PJKD,0) ");
SQL.Add(" where PJ.XLZPPJ_PJWLID=(select top 1 Q9.XLXSBJPJWJSLQJ_PJWLID from XLXSBJPJWJSLQJ Q9 where isnull(L.XLXLB_WJ,0)>=Q9.XLXSBJPJWJSLQJ_CPWJXX and isnull(L.XLXLB_WJ,0)<=Q9.XLXSBJPJWJSLQJ_CPWJSX order by Q9.XLXSBJPJWJSLQJ_BJSLXX,Q9.XLXSBJPJWJSLQJ_BJSLSX) ");
SQL.Add(" and isnull(PJ.XLZPPJ_TYBZ,'N')<>'Y' and (PJ.XLZPPJ_QYRQ is null or PJ.XLZPPJ_QYRQ<=:pDtNow) and JG.XLZPPJJG_YXQS<=:pDtNow and (JG.XLZPPJJG_YXQZ>=:pDtNow or JG.XLZPPJJG_YXQZ is null) order by JG.XLZPPJJG_YXQS desc) as PJJG ");
SQL.Add(" from XLXSBJDMX M ");
SQL.Add(" LEFT JOIN XLXSBJXLGGTHB ON XLXSBJXLGGTHB_XLGGID=M.XLXSBJDMX_XLGGID ");
SQL.Add(" left join (select XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,max(XLXLB_WJ) AS XLXLB_WJ FROM XLXLB WHERE 1=1 GROUP BY XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID) L on L.XLXLB_XLXHID=M.XLXSBJDMX_XLXHID and L.XLXLB_XLGGID=XLXSBJXLGGTHB_XLGGIDCH and L.XLXLB_XLBZID=M.XLXSBJDMX_XLBZID and L.XLXLB_DYDJID=M.XLXSBJDMX_DYDJID ");
SQL.Add(" where M.XLXSBJDMX_BJDID=:pBJDID ");
if (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("M.XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and M.XLXSBJDMX_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = M.XLXSBJDMX_BJDID and V_BJDXH_BJDXH = M.XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
if (bYBJ)
SQL.Add(" and M.XLXSBJDMX_JGBBJ<>0.0");
if (bWG)
SQL.Add(" and M.XLXSBJDMX_WGCPBZ='Y'");
if (bFWG)
SQL.Add(" and M.XLXSBJDMX_WGCPBZ<>'Y'");
if (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and M.XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) A ");
SQL.Add(") sor ");
SQL.Add("on (tar.XLXSBJDYZZ0_BJDID=sor.BJDID and tar.XLXSBJDYZZ0_XH=sor.XH) ");
SQL.Add("when matched then update set ");
SQL.Add(string.Format("tar.XLXSBJDYZZ0_YZZ{0}=sor.YZZ", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pDtNow").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
}
}
#endregion
sErrorNum = "ErrorI";
//自动插入TJYS=I的调价因子值
#region 因素I|按工艺分类导体类型电压等级主芯截面范围调
if (dicTJYZList.ContainsKey("sTJYSListI"))
{
sTJYZ = dicTJYZList["sTJYSListI"].Trim().Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < sTJYZ.Length; i++)
{
if (!sTJYZ[i].Trim().Equals(""))
{
if (GetYZXXByYZID(sTJYZ[i].Trim()).XLXSTZYZ_JJFS == "JJ")
sJJYZIDList += sTJYZ[i].Trim() + ",";
/*
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
*/
string sJGBID = string.Empty;
if (dicYZXX.ContainsKey(sTJYZ[i].Trim()))
sJGBID = dicYZXX[sTJYZ[i].Trim()];
#region
List<XLTZ> XLTZlist = new List<XLTZ>();
SQL.Clear();
SQL.Add(" select XLXSBJDYZZJ_YZZ,XLXSBJDYZZJ_TZLX,XLXSBJDYZZJ_TZ,XLXSBJDYZZJ_GYFLBM,XLXSBJDYZZJ_XHBBH from XLXSBJDYZZJ order by XLXSBJDYZZJ_GYFLBM ");
DataSet ds = dberp.OpenDataSet(SQL);
for (int z = 0; z < ds.Tables[0].Rows.Count; z++)
{
XLTZ tz = new XLTZ();
tz.TZLX = ds.Tables[0].Rows[z]["XLXSBJDYZZJ_TZLX"].ToString().Trim();
tz.TZ = ds.Tables[0].Rows[z]["XLXSBJDYZZJ_TZ"].ToString().Trim();
tz.GYFLBM = ds.Tables[0].Rows[z]["XLXSBJDYZZJ_GYFLBM"].ToString().Trim();
tz.XHBBH = ds.Tables[0].Rows[z]["XLXSBJDYZZJ_XHBBH"].ToString().Trim();
tz.YZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[z]["XLXSBJDYZZJ_YZZ"].ToString().Trim());
XLTZlist.Add(tz);
}
SQL.Clear();
SQL.Add("select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_XLXHID,XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID,XLXSBJDMX_DYDJID from XLXSBJDMX ");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
if (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
ds = dberp.OpenDataSet(SQL);
for (int z = 0; z < ds.Tables[0].Rows.Count; z++)
{
double dXH = CMISproConvert.StrToFloat(ds.Tables[0].Rows[z]["XLXSBJDMX_XH"].ToString().Trim());
string sXLXHID = ds.Tables[0].Rows[z]["XLXSBJDMX_XLXHID"].ToString().Trim();
string sXLGGID = ds.Tables[0].Rows[z]["XLXSBJDMX_XLGGID"].ToString().Trim();
string sXLBZID = ds.Tables[0].Rows[z]["XLXSBJDMX_XLBZID"].ToString().Trim();
string sDYDJID = ds.Tables[0].Rows[z]["XLXSBJDMX_DYDJID"].ToString().Trim();
double dYZZ = GetCPFYL(sXLXHID, sXLGGID, sXLBZID, sDYDJID, XLTZlist);
SQL.Clear();
SQL.Add("update XLXSBJDYZZ0 set ");
SQL.Add(string.Format(" XLXSBJDYZZ0_YZZ{0}=:pYZZ ", sTJYZ[i].Trim().Replace("BJ", "")));
SQL.Add("where XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=:pXH ");
SQL.ParamByName("pYZZ").Value = dYZZ;
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pXH").Value = dXH;
dberp.ExecSQL(SQL);
}
#endregion
}
}
}
#endregion
sJJYZIDList = sJJYZIDList.TrimEnd(',');
if (!string.IsNullOrEmpty(sJJYZIDList))
{
SQL.Clear();
SQL.Add("merge into XLXSBJDYZZ0 using( ");
SQL.Add(" select XLXSBJDMX_XH as XH,(");
SQL.Add(" case when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('M', '米') then 0.001");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('Km', '千米') then 1000.0");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('M', '米') then 1.0");
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('Km', '千米') then 1.0");
string sTDDWList = "(";
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW='{0}' then 0.001*{1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW='{0}' then {1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('Km', '千米') then 1000.0/{1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('M', '米') then 1.0/{1} ", sKey, dicLenJLDWTD[sKey]));
sTDDWList += "'" + sKey + "',";
}
sTDDWList = sTDDWList.TrimEnd(',');
sTDDWList += ")";
SQL.Add(" when :pBJU003 in " + sTDDWList + " and XLXSBJDMX_JLDW in " + sTDDWList + " then 1.0");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then 0.001");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('T', '吨') then 1000.0");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then 1.0");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('T', '吨') then 1.0");
if (sBJU003.ToUpper().Equals("KM") || sBJU003.ToUpper().Equals("千米"))
{
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else 1.0/XLXSCLQD_CLZL end)");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*1000.0 end)");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL");
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*1000.0 end)");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)* 1000.0*1000.0 end)");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL/1000.0");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('M', '米') then XLXSCLQD_CLZL/1000.0");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('M', '米') then XLXSCLQD_CLZL/1000.0/1000.0");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL/1000.0/1000.0 ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('KG', '千克', '公斤') then 1000.0/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('T', '吨') then 1000.0*1000.0/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
}
}
else if (sBJU003.ToUpper().Equals("米") || sBJU003.ToUpper().Equals("M"))
{
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*(1/1000.0) end)");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('Kg', '千克', '公斤') then (case when XLXSCLQD_CLZL = 0 then 0 else 1.0/XLXSCLQD_CLZL end)");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL*1000.0");
SQL.Add(" when :pBJU003 in ('KM', '千米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL) end)");
SQL.Add(" when :pBJU003 in ('M', '米') and XLXSBJDMX_JLDW in ('T', '吨') then (case when XLXSCLQD_CLZL = 0 then 0 else (1.0/XLXSCLQD_CLZL)*1000.0 end)");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL*1000.0");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('Km', '千米') then XLXSCLQD_CLZL");
SQL.Add(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW in ('M', '米') then XLXSCLQD_CLZL");
SQL.Add(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW in ('M', '米') then XLXSCLQD_CLZL/1000.0");
foreach (string sKey in dicLenJLDWTD.Keys)
{
SQL.Add(string.Format(" when :pBJU003 in ('KG', '千克', '公斤') and XLXSBJDMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 in ('T', '吨') and XLXSBJDMX_JLDW='{0}' then {1}*XLXSCLQD_CLZL/1000.0 ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('KG', '千克', '公斤') then 1/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
SQL.Add(string.Format(" when :pBJU003 = '{0}' and XLXSBJDMX_JLDW in ('T', '吨') then 1000.0/XLXSCLQD_CLZL/{1} ", sKey, dicLenJLDWTD[sKey]));
}
}
SQL.Add(" when :pBJU003=upper(XLXSBJDMX_JLDW) and :pBJU003 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 1.0");
SQL.Add(" end ");
SQL.Add(" ) as HSBL ");
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 and isnull(XLXSCLQD_CLZL,0)<>0 ");
if (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :minBJDXH");
}
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID = :pVID and V_BJDXH_BJDID = XLXSBJDMX_BJDID and V_BJDXH_BJDXH = XLXSBJDMX_XH) ");
SQL.ParamByName("pVID").Value = VnewID;
}
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 (tWHSJCondition != DateTime.MinValue)
{
SQL.Add(" and XLXSBJDMX_WHSJ=:pWHSJ");
SQL.ParamByName("pWHSJ").Value = tWHSJCondition;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=XH ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDYZZ0_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDYZZ0_XH > :minBJDXH");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
double dSL = string.IsNullOrEmpty((tSession.GetOption(100860000, "BJU055"))) ? 0 : (double.Parse((tSession.GetOption(100860000, "BJU055")))) / 100.0; ;
bool IsHSWL = (dSL == 0);
bool IsHS = GetBJDHSBZ(sBJDID);
string[] JJYZIDnum = sJJYZIDList.Split(',');
for (int j = 0; j < JJYZIDnum.Length; j++)
{
if (j == 0)
{
if ((!IsHS) && (!IsHSWL))
{
SQL.Add(string.Format(" XLXSBJDYZZ0_YZZ{0}=XLXSBJDYZZ0_YZZ{0}*HSBL / (1+:pSL)", JJYZIDnum[j].Trim().Replace("BJ", "")));
SQL.ParamByName("pSL").Value = dSL.ToString();
}
else
{
SQL.Add(string.Format(" XLXSBJDYZZ0_YZZ{0}=XLXSBJDYZZ0_YZZ{0}*HSBL", JJYZIDnum[j].Trim().Replace("BJ", "")));
}
}
else
{
if ((!IsHS) && (!IsHSWL))
{
SQL.Add(string.Format(" ,XLXSBJDYZZ0_YZZ{0}=XLXSBJDYZZ0_YZZ{0}*HSBL / (1+:pSL)", JJYZIDnum[j].Trim().Replace("BJ", "")));
SQL.ParamByName("pSL").Value = dSL.ToString();
}
else
{
SQL.Add(string.Format(" ,XLXSBJDYZZ0_YZZ{0}=XLXSBJDYZZ0_YZZ{0}*HSBL", JJYZIDnum[j].Trim().Replace("BJ", "")));
}
}
}
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pBJU003").Value = sBJU003;
dberp.ExecSQL(SQL);
}
sErrorNum = "";
}
catch (Exception ex)
{
sErrorNum = sErrorNum + " " + ex.Message;
}
}
public static Dictionary<string, double> GetBJDMXBaseJG(
string sBJDID, string sBJRQ, bool bJZBJHS, int iXSWS, string sTJ, string sLJ, string sBJU003, string sBJU018,//报价单相关要素
string sJGBID, string sBJLY, string sJGCIDS,//价格表相关要素
string sBJFLID, string sBJDHQLY, string sTZCLHQ, string sTBJCLID, string sLBJCLID,//报价分类相关要素
string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sJLDW, string sBJDBJLY, string sWGCPBZ, string sOldJGBBJ, string sOldJGBJJ, string sOldCLCB, string sOldBJDHQCLCB
)
{
string sJGBJLDW = XLBJDUtils.GetJGBJLDW(sJGBID, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sBJU003, sBJU018);
string sJGBJSDW = XLBJDUtils.GetsJSDW(sJGBJLDW, sBJU003);
string sCPJJ = "";
string sJJ = "";
string sCLCB = "";
string sBJDHQCLCB = "";
double dBJDJLDWHSBL = 1;
string sJGBIDS = GetXLXSJGBXXByJGBID(sJGBID).XLXSJGB_JGBIDS;
string sJSBLFS = GetXLXSJGBXXByJGBID(sJGBID).XLXSJGB_JSBLFS;
string sJGBTJYS = GetXLXSJGBXXByJGBID(sJGBID).XLXSJGB_TJYS;
BJFLXX bjflxx = GetBJFLXX(sBJFLID);
string sJGBJJLY = GetXLXSJGBXXByJGBID(sJGBID).XLXSJGB_JJLY;
bool ExistsXLXSBJFLBJRHQCL = CMISproDataBase.ExistsRecord("DBERP",
string.Format("select top 1 XLXSBJFLBJRHQCL_BJCLID from XLXSBJFLBJRHQCL where XLXSBJFLBJRHQCL_BJFLID='{0}'", sBJFLID));
bool JgIsZero = false;//是否存在有材料用量、无材料价格的情况
bool IsJGEJGB = XLBJDUtils.IsJGEJGB(sJGBID.Trim());
Dictionary<string, double> Result = new Dictionary<string, double>();
if (IsJGEJGB)
{
Result.Add("JZ01", 0);
Result.Add("JZ02", 0);
Result.Add("JZ03", 0);
Result.Add("JZ04", 0);
Result.Add("JZ05", 0);
Result.Add("JZ06", 0);
Result.Add("JZ07", 0);
Result.Add("JZ08", 0);
Result.Add("JZ09", 0);
Result.Add("JZ10", 0); Result.Add("JZ11", 0); Result.Add("JZ12", 0); Result.Add("JZ13", 0); Result.Add("JZ14", 0); Result.Add("JZ15", 0); Result.Add("JZ16", 0); Result.Add("JZ17", 0); Result.Add("JZ18", 0); Result.Add("JZ19", 0); Result.Add("JZ20", 0);
}
if (XLBJDUtils.IsJGFJGBMX(sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID))
{
double dJGFJJ = 0;
double dJGFBJ = 0;
string sJGFJLDW = "";
XLBJDUtils.GetJGBJJ_JGF(sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, bJZBJHS, sBJU018, ref dJGFJJ, ref dJGFBJ, ref sJGFJLDW);
//M、KM、米、千米、KG、T、千克、公斤、吨
if (sJCJLDWList.IndexOf(sJGFJLDW.ToUpper()) >= 0
&& sJCJLDWList.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGFJLDW, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGFJLDW, sJLDW);
}
sCPJJ = dJGFBJ.ToString().Trim();
sJJ = dJGFJJ.ToString().Trim();
sCLCB = dJGFJJ.ToString().Trim();
sBJDHQCLCB = dJGFJJ.ToString().Trim();
}
else
{
if (!IsJGEJGB)//是否表价实时计算价格表
{
//M、KM、米、千米、KG、T、千克、公斤、吨
if (sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0
&& sJCJLDWList.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGBJLDW, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGBJLDW, sJLDW);
}
//记录衍生产品原四要素
string tmpXLXHID = sXLXHID;
string tmpXLGGID = sXLGGID;
string tmpXLBZID = sXLBZID;
string tmpDYDJID = sDYDJID;
int iSYXH = 0;
double dYSJDZ = 1;
double dCLCBYSJDZ = 1;
bool bExistedSYJGBMX = false;
if (sJGBTJYS.Equals("1"))
{
//因素1先将衍生产品四要素替换成所依四要素
bExistedSYJGBMX = ExistedSYJGBMX(sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBID, ref iSYXH, ref dYSJDZ, ref dCLCBYSJDZ);
}
if (sBJLY.Trim().Equals("D") || sBJLY.Trim().Equals("C"))
{
XLBJDInfo.GetFromJGB(sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBID, sJGCIDS, bJZBJHS, sBJU018, ref sCPJJ, ref sJJ, ref sCLCB);
if (sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0)
{
if (bExistedSYJGBMX)
GetJGBMXBySYXH(sJGBID, iSYXH, ref sXLXHID, ref sXLGGID, ref sXLBZID, ref sDYDJID);
Dictionary<string, double> aryBJHQ = XLBJDUtils.GetCLCB_BJHQ(sBJFLID, sJGBID, sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBJLDW, sBJU003);
JgIsZero = aryBJHQ["JgIsZero"] == 1 ? true : false;
if (bExistedSYJGBMX)
{
sXLXHID = tmpXLXHID;
sXLGGID = tmpXLGGID;
sXLBZID = tmpXLBZID;
sDYDJID = tmpDYDJID;
}
if (bJZBJHS)
sCLCB = aryBJHQ["CLCB"].ToString();
else
sCLCB = aryBJHQ["WSCLCB"].ToString();
}
}
else
{
if (sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0)
{
if (ExistsXLXSBJFLBJRHQCL)
{
if (sBJU018.Equals("Y") && XLBJDUtils.sJQCDJLDWList.Contains(sJGBJLDW.ToUpper()))//若BJU018参数值为Y,且为价格表单位为长度单位,则重新计算成本时,成本的小数位数为XLBJDUtils.JQJSXSWS
{
XLBJDUtils.GetFromJGB_BJRHQ(sXLXHID, sXLGGID, sXLBZID, sDYDJID,
sJGBID, sJGCIDS, sBJRQ, bJZBJHS, XLBJDUtils.JQJSXSWS.ToString(),
sBJFLID, sJGBJLDW, sBJU003, ref sCPJJ, ref sJJ, ref sCLCB, ref JgIsZero);
}
else
{
XLBJDUtils.GetFromJGB_BJRHQ(sXLXHID, sXLGGID, sXLBZID, sDYDJID,
sJGBID, sJGCIDS, sBJRQ, bJZBJHS, iXSWS.ToString(),
sBJFLID, sJGBJLDW, sBJU003, ref sCPJJ, ref sJJ, ref sCLCB, ref JgIsZero);
}
}
else
{
XLBJDInfo.GetFromJGB(sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBID, sJGCIDS, bJZBJHS, sBJU018, ref sCPJJ, ref sJJ, ref sCLCB);
}
}
else
{
XLBJDInfo.GetFromJGB(sXLXHID, sXLGGID, sXLBZID, sDYDJID, sJGBID, sJGCIDS, bJZBJHS, sBJU018, ref sCPJJ, ref sJJ, ref sCLCB);
}
}
string sHasCLQD = "N";
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSCLQD where XLXSCLQD_WPID='ZZZZ' and XLXSCLQD_XLXHID='{0}' and XLXSCLQD_XLGGID='{1}' and XLXSCLQD_XLBZID='{2}' and XLXSCLQD_DYDJID='{3}'",
sXLXHID, sXLGGID, sXLBZID, sDYDJID.Equals("") ? " " : sDYDJID)))
{
sHasCLQD = "Y";
}
if (bExistedSYJGBMX && sHasCLQD.Equals("N"))
{
//记录衍生产品原四要素
tmpXLXHID = sXLXHID;
tmpXLGGID = sXLGGID;
tmpXLBZID = sXLBZID;
tmpDYDJID = sDYDJID;
XLBJDUtils.GetJGBMXBySYXH(sJGBID, iSYXH, ref sXLXHID, ref sXLGGID, ref sXLBZID, ref sDYDJID);
}
if (sBJDHQLY.Trim().Equals("1"))
{
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的报价单行情料价改为负数显示
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sCLCB) * -1);
else
sBJDHQCLCB = sCLCB;
}
else
{
Dictionary<string, double> aryBJRHQ = XLBJDUtils.GetCLCB_BJRHQ(sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
JgIsZero = aryBJRHQ["JgIsZero"] == 1 ? true : false;
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的报价单行情料价改为负数显示
{
if (bJZBJHS)
sBJDHQCLCB = Convert.ToString(aryBJRHQ["CLCB"] * -1);
else
sBJDHQCLCB = Convert.ToString(aryBJRHQ["WSCLCB"] * -1);
}
else
{
if (bJZBJHS)
sBJDHQCLCB = aryBJRHQ["CLCB"].ToString();
else
sBJDHQCLCB = aryBJRHQ["WSCLCB"].ToString();
}
//统一为价格表计量单位的价格
double dBJU003_JGB_JLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJGBJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sBJDHQCLCB) * dBJU003_JGB_JLDWHSBL);
}
if (sTZCLHQ.Trim().Equals("Y"))//是否允许调整材料行情
{
if (!sBJDID.Equals(""))
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJDCLHQ_BJCLID from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID='{0}'", sBJDID)))
{
Dictionary<string, double> aryBJDHQCLCB = XLBJDUtils.GetCLCB_BJDHQ(sBJDID, sBJRQ,
sXLXHID, sXLGGID,
sXLBZID, sDYDJID);
if (bJZBJHS)
{
sBJDHQCLCB = aryBJDHQCLCB["CLCB"].ToString();
}
else
{
sBJDHQCLCB = aryBJDHQCLCB["WSCLCB"].ToString();
}
//统一为价格表计量单位的价格
double dBJU003_JGB_JLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJGBJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
if (bjflxx.XLXSBJFL_ABJDHQJSBJ == "Y" && sJGBJJLY == "A")
{
if (ISExistJGBMX(sJGBID, sJGCIDS, sXLXHID, sXLGGID, sXLBZID, sDYDJID) || bjflxx.XLXSBJFL_FJGBCPBJSBJ == "N")
{
sJJ = sBJDHQCLCB;
sCPJJ = Convert.ToString(NumberUtils.RoundX(XLBJDUtils.GetCPJJbyCLCB(NumberUtils.RoundX(CMISproConvert.StrToFloat(sJJ), iXSWS), sJGBID, sJGCIDS, sXLXHID, sXLGGID, sXLBZID, sDYDJID), iXSWS) * dYSJDZ);
sJJ = Convert.ToString(CMISproConvert.StrToFloat(sJJ) * dBJU003_JGB_JLDWHSBL);
sCPJJ = Convert.ToString(CMISproConvert.StrToFloat(sCPJJ) * dBJU003_JGB_JLDWHSBL);
}
}
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sBJDHQCLCB) * dBJU003_JGB_JLDWHSBL);
}
}
}
string sCPLJGS = GetCPLJGS();
//还原四要素
if (bExistedSYJGBMX && sHasCLQD.Equals("N"))
{
sXLXHID = tmpXLXHID;
sXLGGID = tmpXLGGID;
sXLBZID = tmpXLBZID;
sDYDJID = tmpDYDJID;
if (sCPLJGS == "2")
{
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sBJDHQCLCB) * dYSJDZ);
sCLCB = Convert.ToString(CMISproConvert.StrToFloat(sCLCB) * dYSJDZ);
}
if (sCPLJGS == "4")
{
sBJDHQCLCB = Convert.ToString(CMISproConvert.StrToFloat(sBJDHQCLCB) * dCLCBYSJDZ);
sCLCB = Convert.ToString(CMISproConvert.StrToFloat(sCLCB) * dCLCBYSJDZ);
}
}
//无材料清单且料价计算方式为3|按报价单料价加点对照表计算
if (sHasCLQD.Equals("N") && (sCPLJGS == "3"))
{
double dCLQDJDCLCHQ = XLBJDUtils.GetCLQDJDCLCHQ(sBJDID, sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, bJZBJHS, sJGBJLDW, sBJU003);
sBJDHQCLCB = Convert.ToString(dCLQDJDCLCHQ);
}
}
else//表价实时计算价格表
{
//M、KM、米、千米、KG、T、千克、公斤、吨
if (sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0
&& sJCJLDWList.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJLDW);
}
//报价来源手输表价的产品不重算表价,以免冲掉手动维护的表价
if (sBJDBJLY.Equals("SSJGBBJ") || sWGCPBZ.Equals("Y"))
{
sCPJJ = sOldJGBBJ;
sJJ = sOldJGBJJ;
sCLCB = sOldCLCB;
sBJDHQCLCB = sOldBJDHQCLCB;
}
else
{
sTJ = CMISproConvert.StrToFloat(sTJ).ToString();
sLJ = CMISproConvert.StrToFloat(sLJ).ToString();
bool bExistBJDHQ = false;
if (sTZCLHQ.Equals("Y"))//是否允许调整材料行情
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJDCLHQ_BJCLID from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID='{0}'", sBJDID)))
bExistBJDHQ = true;
}
//不存在报价单行情,报价单ID以空传入
Dictionary<string, double> dicJGE = XLBJDUtils.GetCLCB_JGE(sBJRQ, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sTBJCLID, sLBJCLID, sTJ, sLJ, bJZBJHS, bExistBJDHQ, sBJDID);
JgIsZero = dicJGE["JgIsZero"] == 1 ? true : false;
sCLCB = dicJGE["CLCB"].ToString();
sJJ = sCLCB;
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的表价、报价单行情料价改为负数显示
{
sBJDHQCLCB = Convert.ToString(dicJGE["CLCB"] * (-1));
}
else
{
sBJDHQCLCB = sCLCB;
}
DataSet dsJGBYZ = new DataSet();
string sJGBTJYSS = "";
//计算公式以及因子的输出
Dictionary<string, string> dicJGBTZYZGS_JGE = new Dictionary<string, string>();
//记录价格表调价因素相关信息-线缆基本信息
Dictionary<string, string> dicXLJBXX_JGE = new Dictionary<string, string>();
XLBJDUtils.GetdsJGBYZ_JGE(sJGBID.Trim(), ref dsJGBYZ);
sJGBTJYSS = XLBJDUtils.GetJGBTJYSSByBJFLID(sBJFLID);
dicXLJBXX_JGE.Clear();
dicXLJBXX_JGE.Add("XLXHID", sXLXHID);
dicXLJBXX_JGE.Add("XLGGID", sXLGGID);
dicXLJBXX_JGE.Add("XLBZID", sXLBZID);
dicXLJBXX_JGE.Add("DYDJID", sDYDJID);
dicXLJBXX_JGE.Add("BJDJLDWHSBL", dBJDJLDWHSBL.ToString().Trim());
dicJGBTZYZGS_JGE = XLBJDUtils.GetJGBTZYZ_JGE(sJGBID.Trim(), "0", dsJGBYZ, dicXLJBXX_JGE);
//sCLCB = NumberUtils.RoundX(CMISproConvert.StrToFloat(sCLCB), iXSWS).ToString().Trim();
string sTempCLCB = NumberUtils.RoundX(CMISproConvert.StrToFloat(sCLCB), iXSWS).ToString().Trim();
double dZBZ = NumberUtils.RoundX(CMISproConvert.StrToFloat(sTempCLCB), iXSWS);
if (sJGBTJYSS.Equals("1"))
{
string sTmpGS = "";
string sJSGS = dicJGBTZYZGS_JGE["JSGS"].Trim();
if (sJSGS.Equals(""))
{
if (dicJGBTZYZGS_JGE["JJFirst"].Equals("1"))
{
sTmpGS = "(" + sTempCLCB + "+" + dicJGBTZYZGS_JGE["JJ"] + ")*(" + dicJGBTZYZGS_JGE["JD"] + ")*(" + dicJGBTZYZGS_JGE["KD"] + ")*(" + dicJGBTZYZGS_JGE["SX"] + ")";
}
else
{
sTmpGS = sTempCLCB + "*(" + dicJGBTZYZGS_JGE["JD"] + ")*(" + dicJGBTZYZGS_JGE["KD"] + ")*(" + dicJGBTZYZGS_JGE["SX"] + ")+(" + dicJGBTZYZGS_JGE["JJ"] + ")";
}
}
else
{
sTmpGS = sJSGS.Replace("JGBJJ", sTempCLCB);
}
gtExpression exp = new gtExpression();
try
{
dZBZ = NumberUtils.RoundX(exp.Evaluate(sTmpGS), 15);
}
catch
{
dZBZ = 0;
}
Dictionary<string, double> dicJDYZXS = new Dictionary<string, double>();
for (int i = 0; i < dsJGBYZ.Tables[0].Rows.Count; i++)
{
string sYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim();
string sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
if (sJJFS.Equals("JJ") && (!dicJDYZXS.ContainsKey(sYZID)))
dicJDYZXS.Add(sYZID, dBJDJLDWHSBL);
else
dicJDYZXS.Add(sYZID, 1);
}
for (int i = 1; i <= 10; i++)
{
string sYZID = "JZ" + i.ToString().PadLeft(2, '0');
if (dicJGBTZYZGS_JGE.ContainsKey(sYZID) && dicJDYZXS.ContainsKey(sYZID))
{
double sYZZ = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE[sYZID].Trim(), 0) * dicJDYZXS[sYZID];
dicJGBTZYZGS_JGE[sYZID] = sYZZ.ToString();
}
}
Result["JZ01"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ01"], 0);
Result["JZ02"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ02"], 0);
Result["JZ03"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ03"], 0);
Result["JZ04"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ04"], 0);
Result["JZ05"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ05"], 0);
Result["JZ06"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ06"], 0);
Result["JZ07"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ07"], 0);
Result["JZ08"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ08"], 0);
Result["JZ09"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ09"], 0);
Result["JZ10"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ10"], 0); Result["JZ11"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ11"], 0); Result["JZ12"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ12"], 0); Result["JZ13"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ13"], 0); Result["JZ14"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ14"], 0); Result["JZ15"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ15"], 0); Result["JZ16"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ16"], 0); Result["JZ17"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ17"], 0); Result["JZ18"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ18"], 0); Result["JZ19"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ19"], 0); Result["JZ20"] = CMISproConvert.StrToFloat(dicJGBTZYZGS_JGE["JZ20"], 0);
}
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的表价、报价单行情料价改为负数显示
{
sCPJJ = Convert.ToString(dZBZ * (-1));
}
else
{
sCPJJ = dZBZ.ToString().Trim();
}
}
}
}
double dCPJJ = CMISproConvert.StrToFloat(sCPJJ, 0);
double dJJ = CMISproConvert.StrToFloat(sJJ, 0);
double dCLCB = CMISproConvert.StrToFloat(sCLCB, 0);
double dBJDHQCLCB = CMISproConvert.StrToFloat(sBJDHQCLCB, 0);
if (sBJU018.Equals("Y") && XLBJDUtils.sJQCDJLDWList.Contains(sJGBJLDW.ToUpper()))//若BJU018参数值为Y,且为价格表单位为长度单位,则先换算倍率后再保留小数位数。
{
dCPJJ = dCPJJ * dBJDJLDWHSBL;
dJJ = dJJ * dBJDJLDWHSBL;
dCLCB = dCLCB * dBJDJLDWHSBL;
dBJDHQCLCB = dBJDHQCLCB * dBJDJLDWHSBL;
dCPJJ = NumberUtils.RoundX(dCPJJ, iXSWS);
dJJ = NumberUtils.RoundX(dJJ, iXSWS);
dCLCB = NumberUtils.RoundX(dCLCB, iXSWS);
dBJDHQCLCB = NumberUtils.RoundX(dBJDHQCLCB, iXSWS);
}
else
{
dCPJJ = NumberUtils.RoundX(dCPJJ, iXSWS);
dJJ = NumberUtils.RoundX(dJJ, iXSWS);
dCLCB = NumberUtils.RoundX(dCLCB, iXSWS);
dBJDHQCLCB = NumberUtils.RoundX(dBJDHQCLCB, iXSWS);
dCPJJ = dCPJJ * dBJDJLDWHSBL;
dJJ = dJJ * dBJDJLDWHSBL;
dCLCB = dCLCB * dBJDJLDWHSBL;
dBJDHQCLCB = dBJDHQCLCB * dBJDJLDWHSBL;
}
Result.Add("XLXSBJDMX_JGBBJ", dCPJJ);
Result.Add("XLXSBJDMX_JGBJJ", dJJ);
Result.Add("XLXSBJDMX_CLCB", dCLCB);
Result.Add("XLXSBJDMX_BJDHQCLCB", dBJDHQCLCB);
return Result;
}
/// <summary>
/// 获取XLXSBJXHML已经设置的产品目录对应关系,如果型号电压为空,则返回所有
/// </summary>
/// <param name="sXLXHID"></param>
/// <param name="sDYDJID"></param>
/// <param name="dicCPML"></param>
public static void GetDefaultCPMLDic(string sXLXHID, string sDYDJID, ref Dictionary<string, string> dicCPML)
{
dicCPML.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" select XLXSBJXHML_XLXHID,XLXSBJXHML_DYDJID,XLXSBJXHML_CPMLID,XLXSCPML_CPMLMC from XLXSBJXHML ");
SQL.Add(" left join XLXSCPML on XLXSCPML_CPMLID = isnull(XLXSBJXHML_CPMLID,' ') ");
SQL.Add(" where 1=1 ");
if (!sXLXHID.Equals(""))
{
SQL.Add(" and UPPER(XLXSBJXHML_XLXHID) =:pXLXHID ");
SQL.ParamByName("pXLXHID").Value = sXLXHID.ToUpper();
if (!sDYDJID.Equals(""))
{
SQL.Add(" and (XLXSBJXHML_DYDJID =:pDYDJID or XLXSBJXHML_DYDJID = ' ') ");
SQL.ParamByName("pDYDJID").Value = sDYDJID;
}
}
SQL.Add(" order by XLXSBJXHML_XLXHID,XLXSBJXHML_DYDJID ");
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
string str1 = "";
string str2 = "";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
str1 = ds.Tables[0].Rows[i]["XLXSBJXHML_XLXHID"].ToString().Trim() + "|" + ds.Tables[0].Rows[i]["XLXSBJXHML_DYDJID"].ToString().Trim();
str2 = ds.Tables[0].Rows[i]["XLXSBJXHML_CPMLID"].ToString().Trim() + "|" + ds.Tables[0].Rows[i]["XLXSCPML_CPMLMC"].ToString().Trim();
if (!dicCPML.ContainsKey(str1))
{
dicCPML.Add(str1, str2);
}
}
}
}
public static string GetZHCPMLMC(string sCPMLID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSCPML_CPMLMC from XLXSCPML where ','||rtrim(XLXSCPML_CPMLIDS)||',' like :pCPMLID ");
SQL.ParamByName("pCPMLID").Value = "%," + sCPMLID.Trim() + ",%";
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0][0].ToString().Trim();
}
return "";
}
/// <summary>
/// 支持更新明细报价单明细的产品目录
/// </summary>
/// <param name="sBJDID"></param>
/// <param name="sBJDXHList"></param>
/// <param name="minBJDXH"></param>
/// <param name="CPMLMCisNULL">为true表示只更新无值的</param>
/// <param name="sErrorNum"></param>
public static void UpdateBJDMX_CPMLMC(string sBJDID, string sBJDXHList, double minBJDXH, bool CPMLMCisNULL, ref string sErrorNum)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX tar ");
SQL.Add(" using ( ");
SQL.Add(" SELECT XLXSBJDMX_BJDID, XLXSBJDMX_XH,");
SQL.Add(" isnull(CPMLMC,' ') as CPMLMC,isnull(ZHCPMLMC,' ') as ZHCPMLMC ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXSBJXHML A on A.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and A.XLXSBJXHML_DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
SQL.Add(" left join XLXSBJXHML B on B.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and B.XLXSBJXHML_DYDJID = ' ' ");
//SQL.Add(" left join XLXSCPML on XLXSCPML_CPMLID = case when ISNULL(A.XLXSBJXHML_CPMLID,' ') = ' ' then ISNULL(B.XLXSBJXHML_CPMLID,' ') else ISNULL(A.XLXSBJXHML_CPMLID,' ') end ");
SQL.Add(@" left join
(select DY.XLXSCPML_CPMLID as CPMLID ,DY.XLXSCPML_CPMLMC as CPMLMC ,min(ZH.XLXSCPML_CPMLMC) as ZHCPMLMC
from XLXSCPML DY
left join XLXSCPML ZH on ','||rtrim(ZH.XLXSCPML_CPMLIDS)||',' like '%,'||rtrim(DY.XLXSCPML_CPMLID)||',%'
group by DY.XLXSCPML_CPMLID,DY.XLXSCPML_CPMLMC
) CPML on CPML.CPMLID = case when ISNULL(A.XLXSBJXHML_CPMLID,' ') = ' ' then ISNULL(B.XLXSBJXHML_CPMLID,' ') else ISNULL(A.XLXSBJXHML_CPMLID,' ') end ");
SQL.Add(" where 1=1 ");
SQL.Add(" and XLXSBJDMX_BJDID = :pBJDID ");
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add(" and XLXSBJDMX_XH > :minBJDXH");
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" 1=1 ");
SQL.Add(" and sor.XLXSBJDMX_BJDID = tar.XLXSBJDMX_BJDID ");
SQL.Add(" and sor.XLXSBJDMX_XH = tar.XLXSBJDMX_XH ");
if (CPMLMCisNULL)
{
SQL.Add(" and (isnull(tar.XLXSBJDMX_CPMLMC, ' ')= ' ' and isnull(tar.XLXSBJDMX_ZHCPMLMC, ' ')= ' ' ) ");
}
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("tar.XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
SQL.Add("and tar.XLXSBJDMX_XH > :minBJDXH");
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(" XLXSBJDMX_CPMLMC = sor.CPMLMC, ");
SQL.Add(" XLXSBJDMX_ZHCPMLMC = sor.ZHCPMLMC ");
if (minBJDXH != 0)
{
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
SQL.ParamByName("pBJDID").Value = sBJDID;
try
{
string ss = SQL.Text;
dberp.ExecSQL(SQL);
}
catch
{
sErrorNum = "UpdateBJDMX_CPMLMC_Error_1-1";
}
}
public static void UpdateXDXLBZID(TDatabase dberp, TSQL SQL, string sBJDID, string sBJDXHList, int minBJDXH, ref string sErrorNum)
{
UpdateXDXLBZID( dberp, SQL, sBJDID, sBJDXHList, minBJDXH,0,ref sErrorNum);
}
public static void UpdateXDXLBZID(TDatabase dberp, TSQL SQL, string sBJDID, string sBJDXHList, int minBJDXH,int VBJDID,ref string sErrorNum)
{
if (ExistGYKH())
{
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX tar ");
SQL.Add(" using ( ");
SQL.Add(" select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH, XLBZGYKHDZB_GYKH as GYKH ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join ( select XLBZGYKHDZB_XLBZID,min(XLBZGYKHDZB_GYKH) as XLBZGYKHDZB_GYKH from XLBZGYKHDZB group by XLBZGYKHDZB_XLBZID ) a on XLBZGYKHDZB_XLBZID=XLXSBJDMX_XLBZID ");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID and isnull(XLXSBJDMX_XLBZID,' ')<>' ' ");
if (minBJDXH != 0)
{
SQL.Add(" and XLXSBJDMX_XH > :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 (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=XH ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(" XLXSBJDMX_GYKH= GYKH ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
if (!CMISproDataBase.ExistsRecord("DBERP", "select top 1 XLXSBJXDBZ1_XLXHID from XLXSBJXDBZ1 where 1=1 "))
return;
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH, XDXLBZID");
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJXDBZ1_XLXHID as XLXHID, XLXSBJXDBZ1_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJXDBZ1_XXJGID as XXJGID, ");
SQL.Add(" XLXSBJXDBZ1_XLBZID as XLBZID,XLXSBJXDBZ1_XDXLBZID as XDXLBZID, ");
SQL.Add(" XLXSBJXDBZ1_ZXJMSX as ZXJMSX, XLXSBJXDBZ1_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJXDBZ1 ");
SQL.Add("where 1=1 ");
SQL.Add(" and XLXSBJXDBZ1_DYDJID <> ' ' and XLXSBJXDBZ1_XXJGID = ' ' ");
SQL.Add(" ) a on ");
SQL.Add(" a.XLXHID=XLXSBJDMX_XLXHID and a.XLBZID=XLXSBJDMX_XLBZID and a.DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(XDXLBZID,' ')<>' ' ");
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=XH ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(" XLXSBJDMX_XDXLBZID=XDXLBZID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX tar ");
SQL.Add(" using ( ");
SQL.Add("select XLXSBJDMX_BJDID as BJDID,XLXSBJDMX_XH as XH, XDXLBZID");
SQL.Add(" from XLXSBJDMX ");
SQL.Add("left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add("left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add("left join XLGGB on XLGGB_XLGGID = XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
SQL.Add("left join XLDTJMZHB on XLDTJMZHB_DTJMZHID=XLGGB_DTJMZHID ");
SQL.Add("left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add("left join ");
SQL.Add("( ");
SQL.Add(" select XLXSBJXDBZ1_XLXHID as XLXHID, XLXSBJXDBZ1_DYDJID as DYDJID, ");
SQL.Add(" XLXSBJXDBZ1_XXJGID as XXJGID, ");
SQL.Add(" XLXSBJXDBZ1_XLBZID as XLBZID,XLXSBJXDBZ1_XDXLBZID as XDXLBZID, ");
SQL.Add(" XLXSBJXDBZ1_ZXJMSX as ZXJMSX, XLXSBJXDBZ1_ZXJMXX as ZXJMXX ");
SQL.Add(" from XLXSBJXDBZ1 ");
SQL.Add("where 1=1 ");
SQL.Add(" and XLXSBJXDBZ1_DYDJID <> ' ' and XLXSBJXDBZ1_XXJGID <> ' ' ");
SQL.Add(" ) a on ");
SQL.Add(" a.XLXHID=XLXSBJDMX_XLXHID and a.XLBZID=XLXSBJDMX_XLBZID and a.DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') and a.XXJGID = XLGGB_XXJGID ");
SQL.Add(" and a.ZXJMXX<=isnull(XLDTJMZHB_DTJM1,0) and ((a.ZXJMSX<>0 and a.ZXJMSX>=isnull(XLDTJMZHB_DTJM1,0)) or a.ZXJMSX=0) ");
SQL.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(XDXLBZID,' ')<>' ' ");
if (minBJDXH != 0)
{
SQL.Add("and XLXSBJDMX_XH > :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 (!sBJDXHList.Equals(""))
{
SQL.Add("and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=XH ");
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 (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(" XLXSBJDMX_XDXLBZID=XDXLBZID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add(" merge into XLXSBJDMX tar ");
SQL.Add(" using ( ");
SQL.Add(" select XLXSBJDMX_BJDID as BJDID, ");
SQL.Add(" XLXSBJDMX_XH as XH, ");
SQL.Add(" a.XDXLBZID ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXSBJD on XLXSBJD_BJDID = XLXSBJDMX_BJDID ");
SQL.Add(" left join ( ");
SQL.Add(" select XLXSBJXDBZ1_XLBZID as XLBZID, ");
SQL.Add(" XLXSBJXDBZ1_XDXLBZID as XDXLBZID ");
SQL.Add(" from XLXSBJXDBZ1 ");
SQL.Add(" where XLXSBJXDBZ1_PPLX = 'B' ");
SQL.Add(" ) a on a.XLBZID = XLXSBJDMX_XLBZID ");
SQL.Add(" where XLXSBJDMX_BJDID = :pBJDID ");
SQL.Add(" and isnull(a.XDXLBZID,' ') <> ' ' ");
if (minBJDXH != 0)
{
SQL.Add(" and XLXSBJDMX_XH > :minBJDXH ");
}
if (VBJDID > 0)
{
SQL.Add(" and exists ( ");
SQL.Add(" select 1 from V_BJDXH ");
SQL.Add(" where V_BJDXH_ID = :pID ");
SQL.Add(" and V_BJDXH_BJDID = XLXSBJDMX_BJDID ");
SQL.Add(" and V_BJDXH_BJDXH = XLXSBJDMX_XH ");
SQL.Add(" ) ");
SQL.ParamByName("pID").Value = VBJDID;
}
else
{
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
}
SQL.Add(" ) sor ");
SQL.Add(" on ( ");
SQL.Add(" XLXSBJDMX_BJDID = :pBJDID ");
SQL.Add(" and XLXSBJDMX_XH = XH ");
if (minBJDXH != 0)
{
SQL.Add(" and XLXSBJDMX_XH > :minBJDXH ");
SQL.ParamByName("minBJDXH").Value = minBJDXH;
}
if (VBJDID > 0)
{
SQL.Add(" and exists ( ");
SQL.Add(" select 1 from V_BJDXH ");
SQL.Add(" where V_BJDXH_ID = :pID ");
SQL.Add(" and V_BJDXH_BJDID = XLXSBJDMX_BJDID ");
SQL.Add(" and V_BJDXH_BJDXH = XLXSBJDMX_XH ");
SQL.Add(" ) ");
}
else
{
if (!sBJDXHList.Equals(""))
{
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(" XLXSBJDMX_XDXLBZID = XDXLBZID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
//铜铝价变动,更新报价单行情
public static void UpdateBJDHQByTLJ(TDatabase dberp, TSQL SQL, string sBJDID, string sTBJCLID, string sLBJCLID, double fTJ, double fLJ, bool bHSBZ, string sWHRID, string sWHR)
{
string sDecimal = XLBJDUtils.BJCLPriceDecimal.ToString();
if (bHSBZ)
{
//更新铜价
SQL.Clear();
SQL.Add(" MERGE INTO XLXSBJDCLHQ t1");
SQL.Add(" USING (SELECT XLXSBJCL_BJCLID AS BJCLID, XLXSBJCL_ZZSL FROM XLXSBJCL WHERE XLXSBJCL_BJCLID = :pBJCLID) t2");
SQL.Add(" ON (t1.XLXSBJDCLHQ_BJCLID = t2.BJCLID AND t1.XLXSBJDCLHQ_BJDID = :pBJDID)");
SQL.Add(" WHEN MATCHED THEN");
SQL.Add(" UPDATE SET t1.XLXSBJDCLHQ_HSJG = RoundFix(:pJG, " + sDecimal + "),");
SQL.Add(" t1.XLXSBJDCLHQ_WSJG = RoundFix(:pJG/(1+t2.XLXSBJCL_ZZSL/100.0), " + sDecimal + "),");
SQL.Add(" t1.XLXSBJDCLHQ_WHRID = :pWHRID,");
SQL.Add(" t1.XLXSBJDCLHQ_WHR = :pWHR, ");
SQL.Add(" t1.XLXSBJDCLHQ_WHSJ = :pWHSJ ");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJG").Value = fTJ;
SQL.ParamByName("pBJCLID").Value = sTBJCLID;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
//更新铝价
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJG").Value = fLJ;
SQL.ParamByName("pBJCLID").Value = sLBJCLID;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
else
{
//更新铜价
SQL.Clear();
SQL.Add(" MERGE INTO XLXSBJDCLHQ t1");
SQL.Add(" USING (SELECT XLXSBJCL_BJCLID AS BJCLID, XLXSBJCL_ZZSL FROM XLXSBJCL WHERE XLXSBJCL_BJCLID = :pBJCLID) t2");
SQL.Add(" ON (t1.XLXSBJDCLHQ_BJCLID = t2.BJCLID AND t1.XLXSBJDCLHQ_BJDID = :pBJDID)");
SQL.Add(" WHEN MATCHED THEN");
SQL.Add(" UPDATE SET t1.XLXSBJDCLHQ_HSJG = RoundFix(:pJG*(1+XLXSBJCL_ZZSL/100.0)," + sDecimal + "), ");
SQL.Add(" t1.XLXSBJDCLHQ_WSJG = RoundFix(:pJG," + sDecimal + "), ");
SQL.Add(" t1.XLXSBJDCLHQ_WHRID = :pWHRID,");
SQL.Add(" t1.XLXSBJDCLHQ_WHR = :pWHR, ");
SQL.Add(" t1.XLXSBJDCLHQ_WHSJ = :pWHSJ ");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJG").Value = fTJ;
SQL.ParamByName("pBJCLID").Value = sTBJCLID;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
//更新铝价
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pJG").Value = fLJ;
SQL.ParamByName("pBJCLID").Value = sLBJCLID;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
SQL.Clear();
SQL.Add(@"MERGE INTO XLXSBJDCLHQ target
USING (
SELECT XLXSBJDCLHQ_WSJG as WSJG, XLXSBJDCLHQ_HSJG as HSJG
FROM XLXSBJDCLHQ
WHERE XLXSBJDCLHQ_BJDID = :pBJDID AND XLXSBJDCLHQ_BJCLID = :pBJCLID
) source
ON (target.XLXSBJDCLHQ_BJDID = :pBJDID AND target.XLXSBJDCLHQ_JGYBJCLID1 = :pBJCLID)
WHEN MATCHED THEN
UPDATE SET ");
SQL.Add(" XLXSBJDCLHQ_WSJG1 = RoundFix(source.WSJG," + sDecimal + "),");
SQL.Add(" XLXSBJDCLHQ_HSJG1 = RoundFix(source.HSJG," + sDecimal + "),");
SQL.Add(" XLXSBJDCLHQ_JGBL1=1.0, ");
SQL.Add(" XLXSBJDCLHQ_WHRID = :pWHRID, ");
SQL.Add(" XLXSBJDCLHQ_WHR = :pWHR, ");
SQL.Add(" XLXSBJDCLHQ_WHSJ = :pWHSJ ");
//更新以铜、铝为原材料的加工材料行情
if (!sTBJCLID.Trim().Equals(""))
{
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pBJCLID").Value = sTBJCLID;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
if (!sLBJCLID.Trim().Equals(""))
{
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pBJCLID").Value = sLBJCLID;
SQL.ParamByName("pWHR").Value = sWHR;
SQL.ParamByName("pWHRID").Value = sWHRID;
SQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
}
if (!sTBJCLID.Trim().Equals(""))
{
SQL.Clear();
SQL.Add("update XLXSBJDCLHQ set XLXSBJDCLHQ_WSJG=RoundFix(XLXSBJDCLHQ_WSJG1*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_WSJGF," + sDecimal + "),");
SQL.Add(" XLXSBJDCLHQ_HSJG=RoundFix(XLXSBJDCLHQ_HSJG1*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_HSJGF," + sDecimal + ") ");
SQL.Add(" where XLXSBJDCLHQ_BJDID=:pBJDID");
SQL.Add(" and XLXSBJDCLHQ_JGYBJCLID1=:pTBJCLID");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pTBJCLID").Value = sTBJCLID;
dberp.ExecSQL(SQL);
}
if (!sLBJCLID.Trim().Equals(""))
{
SQL.Clear();
SQL.Add("update XLXSBJDCLHQ set XLXSBJDCLHQ_WSJG=RoundFix(XLXSBJDCLHQ_WSJG1*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_WSJGF," + sDecimal + "),");
SQL.Add(" XLXSBJDCLHQ_HSJG=RoundFix(XLXSBJDCLHQ_HSJG1*XLXSBJDCLHQ_JGBL1+XLXSBJDCLHQ_HSJGF," + sDecimal + ") ");
SQL.Add(" where XLXSBJDCLHQ_BJDID=:pBJDID");
SQL.Add(" and XLXSBJDCLHQ_JGYBJCLID1=:pLBJCLID");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pLBJCLID").Value = sLBJCLID;
dberp.ExecSQL(SQL);
}
//更新以铜、铝为原材料的加工物料行情
SQL.Clear();
SQL.Add(@" merge into XLXSBJDWLHQ tar
using
(
select XLXSBJDWLHQ_WLID as WLID,XLXSBJDCLHQ_WSJG as WSJG,XLXSBJDCLHQ_HSJG as HSJG
from XLXSBJDWLHQ
left join XLXSBJDCLHQ on XLXSBJDCLHQ_BJDID=:pBJDID and XLXSBJDCLHQ_BJCLID=XLXSBJDWLHQ_JGYBJCLID1
where XLXSBJDWLHQ_BJDID=:pBJDID ");
if (!sTBJCLID.Equals("") && sLBJCLID.Equals(""))
{
SQL.Add(" and XLXSBJDCLHQ_BJCLID=:pTBJCLID");
SQL.ParamByName("pTBJCLID").Value = sTBJCLID;
}
else if (sTBJCLID.Equals("") && !sLBJCLID.Equals(""))
{
SQL.Add(" and XLXSBJDCLHQ_BJCLID=:pLBJCLID");
SQL.ParamByName("pLBJCLID").Value = sLBJCLID;
}
else if (!sTBJCLID.Equals("") && !sLBJCLID.Equals(""))
{
SQL.Add(" and (XLXSBJDCLHQ_BJCLID=:pTBJCLID or XLXSBJDCLHQ_BJCLID=:pLBJCLID)");
SQL.ParamByName("pTBJCLID").Value = sTBJCLID;
SQL.ParamByName("pLBJCLID").Value = sLBJCLID;
}
else
{
SQL.Add(" and 1<>1 ");
}
SQL.Add(@") sor ON (XLXSBJDWLHQ_BJDID=:pBJDID and XLXSBJDWLHQ_WLID=WLID )
when matched then update set XLXSBJDWLHQ_WSJG1=RoundFix(WSJG," + sDecimal + "),XLXSBJDWLHQ_HSJG1=RoundFix(HSJG," + sDecimal + ") , XLXSBJDWLHQ_JGBL1=1.0 ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add(@" merge into XLXSBJDWLHQ tar
using
(
select XLXSBJDWLHQ_WLID as WLID,XLXSBJDCLHQ_WSJG as WSJG,XLXSBJDCLHQ_HSJG as HSJG
from XLXSBJDWLHQ
left join XLXSBJDCLHQ on XLXSBJDCLHQ_BJDID=:pBJDID and XLXSBJDCLHQ_BJCLID=XLXSBJDWLHQ_JGYBJCLID1
where XLXSBJDWLHQ_BJDID=:pBJDID ");
if (!sTBJCLID.Equals("") && sLBJCLID.Equals(""))
{
SQL.Add(" and XLXSBJDCLHQ_BJCLID=:pTBJCLID");
SQL.ParamByName("pTBJCLID").Value = sTBJCLID;
}
else if (sTBJCLID.Equals("") && !sLBJCLID.Equals(""))
{
SQL.Add(" and XLXSBJDCLHQ_BJCLID=:pLBJCLID");
SQL.ParamByName("pLBJCLID").Value = sLBJCLID;
}
else if (!sTBJCLID.Equals("") && !sLBJCLID.Equals(""))
{
SQL.Add(" and (XLXSBJDCLHQ_BJCLID=:pTBJCLID or XLXSBJDCLHQ_BJCLID=:pLBJCLID)");
SQL.ParamByName("pTBJCLID").Value = sTBJCLID;
SQL.ParamByName("pLBJCLID").Value = sLBJCLID;
}
else
{
SQL.Add(" and 1<>1 ");
}
SQL.Add(@") sor ON (XLXSBJDWLHQ_BJDID=:pBJDID and XLXSBJDWLHQ_WLID=WLID )
when matched then update set XLXSBJDWLHQ_WSJG=RoundFix(XLXSBJDWLHQ_WSJG1*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_WSJGF," + sDecimal + "), ");
SQL.Add(" XLXSBJDWLHQ_HSJG=RoundFix(XLXSBJDWLHQ_HSJG1*XLXSBJDWLHQ_JGBL1+XLXSBJDWLHQ_HSJGF," + sDecimal + ") ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
public static void UpdateTJBZ(string sBJDID, string sViewState)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
UpdateTJBZ(dberp, sBJDID, sViewState);
}
public static void UpdateTJBZ(TDatabase dberp, string sBJDID, string sViewState)
{
TSQL SQL = new TSQL(dberp);
UpdateTJBZ(dberp, SQL, sBJDID, sViewState);
}
public static void UpdateTJBZ(TDatabase dberp, TSQL SQL, string sBJDID, string sViewState)
{
string sYBJDID = GetYBJDID(sBJDID);
SQL.Clear();
SQL.Add(" select XLXSBJD_BJDID,XLXSBJD_ZT,ISNULL(XLXSBJD_TJBZ,'N') as TJBZ,");
SQL.Add(" case when isnull(BJD_BJDID, ' ')<>' ' then 'Y' else 'N' end as FKBZ ");//是否已经反馈至CS平台
SQL.Add(" from XLXSBJD ");
SQL.Add(" left join BJD on BJD_BJDID=XLXSBJD_BJDID ");
SQL.Add(" where XLXSBJD_BJDID = :pYBJDID or XLXSBJD_YBJDIDS = :pYBJDID or XLXSBJD_BJDID =:pBJDID order by XLXSBJD_BJDID ");
SQL.ParamByName("pYBJDID").Value = sYBJDID;
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
if (sViewState.Equals("Insert") || sViewState.Equals("Delete"))
{
bool HasFKJL = false;//是否存在反馈记录
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["FKBZ"].ToString().Trim().Equals("Y"))
HasFKJL = true;
}
int Lastindex = ds.Tables[0].Rows.Count - 1;
string sLastBJDID = ds.Tables[0].Rows[Lastindex]["XLXSBJD_BJDID"].ToString().Trim();
if (sLastBJDID.Equals(sBJDID))
{
if (Lastindex != 0)
{
int Preindex = Lastindex - 1;
string sPreBJDID = ds.Tables[0].Rows[Preindex]["XLXSBJD_BJDID"].ToString().Trim();
string sPreFKBZ = ds.Tables[0].Rows[Preindex]["FKBZ"].ToString().Trim();
if (sViewState.Equals("Insert"))
{
if (sPreFKBZ.Equals("N"))//未反馈的才允许重置TJBZ
{
SQL.Clear();
SQL.Add(" update XLXSBJD set ");
SQL.Add(" XLXSBJD_TJBZ = 'N' ");
SQL.Add(" where XLXSBJD_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sPreBJDID;
dberp.ExecSQL(SQL);
}
if (HasFKJL)//若存在反馈记录,则新增的报价单默认不参与统计
{
SQL.Clear();
SQL.Add(" update XLXSBJD set ");
SQL.Add(" XLXSBJD_TJBZ = 'N' ");
SQL.Add(" where XLXSBJD_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
}
else if (sViewState.Equals("Delete"))
{
if (!HasFKJL)//不存在反馈记录,则将前一份报价单纳入统计
{
SQL.Clear();
SQL.Add(" update XLXSBJD set ");
SQL.Add(" XLXSBJD_TJBZ = 'Y' ");
SQL.Add(" where XLXSBJD_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sPreBJDID;
dberp.ExecSQL(SQL);
}
}
}
}
}
else if (sViewState.Equals("DoBJFK"))//报价反馈操作
{
//反馈过的报价单应参与统计
SQL.Clear();
SQL.Add(" update XLXSBJD set ");
SQL.Add(" XLXSBJD_TJBZ = 'Y' ");
SQL.Add(" where XLXSBJD_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
//其他未反馈的报价单不参与统计
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (!ds.Tables[0].Rows[i]["XLXSBJD_BJDID"].ToString().Trim().Equals(sBJDID)
&& ds.Tables[0].Rows[i]["FKBZ"].ToString().Trim().Equals("N"))
{
SQL.Clear();
SQL.Add(" update XLXSBJD set ");
SQL.Add(" XLXSBJD_TJBZ = 'N' ");
SQL.Add(" where XLXSBJD_BJDID = :pBJDID ");
SQL.Add(" and XLXSBJD_TJBZ = 'Y'");
SQL.ParamByName("pBJDID").Value = ds.Tables[0].Rows[i]["XLXSBJD_BJDID"].ToString().Trim();
dberp.ExecSQL(SQL);
}
}
}
}
}
public static string GetYBJDID(string sBJDID)
{
string sYBJDID = sBJDID;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" select XLXSBJD_ZT,XLXSBJD_YBJDIDS from XLXSBJD where XLXSBJD_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
if (ds.Tables[0].Rows[0]["XLXSBJD_ZT"].ToString().Trim().Equals("Z"))
{
sYBJDID = ds.Tables[0].Rows[0]["XLXSBJD_YBJDIDS"].ToString().Trim();
}
}
return sYBJDID;
}
public static void GetBJDID(string sXZQHID, string sBJFLID, string sSYDWID, ref string sBJDID, ref string sError)
{
GetBJDID(sXZQHID, sBJFLID, sBJFLID, 100860000, ref sBJDID, ref sError);
}
public static void GetBJDID(string sXZQHID, string sBJFLID, string sSYDWID, int iPZMDID, double dTJ, ref string sBJDID, ref string sError)
{
GetBJDID(sXZQHID, sBJFLID, sBJFLID, iPZMDID, ref sBJDID, ref sError);
string sBMYSLIST = GetBMYSLIST(iPZMDID);
if (sBMYSLIST.Contains("TJ"))
{
dTJ = NumberUtils.RoundX(dTJ, 1) * 10;
sBJDID += getTJTZM(dTJ);
if (sBJDID.Length > 20)
sBJDID = sBJDID.Substring(0, 20);
}
}
public static string getTJTZM(double dTJ)
{
if (dTJ == 0)
return "000";
int iTJ = (int)dTJ;
int iWS1 = 0;
string sWS1 = "0";
iWS1 = iTJ / 100;
sWS1 = iWS1.ToString().Trim();
iTJ = iTJ - 100 * iWS1;
int iWS2 = 0;
string sWS2 = "0";
iWS2 = iTJ / 10;
sWS2 = iWS2.ToString().Trim();
iTJ = iTJ - 10 * iWS2;
int iWS3 = 0;
string sWS3 = "0";
iWS3 = iTJ / 1;
sWS3 = iWS3.ToString().Trim();
return sWS1 + sWS2 + sWS3;
}
public static void GetBJDID(string sXZQHID, string sBJFLID, string sSYDWID, int iPZMDID,ref string sBJDID, ref string sError)
{
string sXMDJC = "";
Dictionary<string, string> sParamList = new Dictionary<string, string>();
sParamList.Clear();
string sBMYSLIST = GetBMYSLIST(iPZMDID);
if (sBMYSLIST.Contains("XZQHID"))
{
string sKHSZDPRO = string.Empty;
string sKHSZDCITY = string.Empty;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select a.XZQH_XZQHID,a.XZQH_FID,a.XZQH_PROVINCE,a.XZQH_CITY,a.XZQH_SSJC as CITYJC,b.XZQH_SSJC as PROJC from XZQH a ");
SQL.Add(" left join XZQH b on b.XZQH_XZQHID = a.XZQH_FID ");
SQL.Add(" where a.XZQH_XZQHID = :pXZQHID ");
SQL.Add(" and a.XZQH_XZQHID <> '86' ");
SQL.ParamByName("pXZQHID").Value = sXZQHID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
sXMDJC = ds.Tables[0].Rows[0]["PROJC"].ToString().Trim() + ds.Tables[0].Rows[0]["CITYJC"].ToString().Trim();
sKHSZDPRO = ds.Tables[0].Rows[0]["XZQH_PROVINCE"].ToString().Trim();
sKHSZDCITY = ds.Tables[0].Rows[0]["XZQH_CITY"].ToString().Trim();
}
if (sKHSZDPRO.Trim().Equals("") || sKHSZDCITY.Trim().Equals(""))
{
sError = "销售报价业务配置已经配置报价单号生成规则,项目所在地不允许为空!";
return;
}
sParamList.Add("XMD", sXMDJC);
}
if (sBMYSLIST.Contains("BJFLTZM"))
{
string sBJFLTZM = getBJFLTZM(sBJFLID);
if (sBJFLTZM.Equals(""))
{
sError = "销售报价业务配置已经配置报价单号生成规则,报价分类特征码不允许为空!";
return;
}
sParamList.Add("BJFL", sBJFLTZM);
}
if (sBMYSLIST.Contains("SYDWID"))
{
if (sSYDWID.Equals(""))
{
sError = "销售报价业务配置已经配置报价单号生成规则,销售单位不允许为空!";
return;
}
sParamList.Add("SYDW", sSYDWID);
}
sBJDID = CMISproDataBase.NewDH("XLXSBJD_BJDID", DateTime.Now.Date, sParamList);
}
//获取报价分类编号特征码
public static string getBJFLTZM(string sBJFLID)
{
string sResult = string.Empty;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
DataSet ds = dberp.OpenDataSet(string.Format("select XLXSBJFL_BJFLTZM from XLXSBJFL where XLXSBJFL_BJFLID = '{0}'", sBJFLID));
if (ds.Tables[0].Rows.Count > 0)
{
sResult = ds.Tables[0].Rows[0][0].ToString().Trim();
}
return sResult;
}
//报价产品的组织形式
public static string GroupBJCPXX(string sXLXHID, string sXLGGID, string sDYDJID)
{
string sBJCPXX = "";
sXLXHID = sXLXHID.Trim();
sXLGGID = sXLGGID.Trim();
sDYDJID = sDYDJID.Trim();
if (sDYDJID.Equals(""))
{
if (!sXLXHID.Equals("") && !sXLGGID.Equals(""))
{
sBJCPXX = sXLXHID + " " + sXLGGID;
}
}
else
{
if (!sXLXHID.Equals("") && !sXLGGID.Equals(""))
{
if (!sDYDJID.Equals("--"))
{
sBJCPXX = sXLXHID + "-" + sDYDJID + " " + sXLGGID;
}
else
{
sBJCPXX = sXLXHID + " " + sXLGGID;
}
}
}
return sBJCPXX;
}
//是否存在有效的JGF价格表明细
public static bool IsJGFJGBMX(string sBJRQ, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(string.Format("select XLXSJGB_JGBID from XLXSJGB where XLXSJGB_MXBH='JGF' and XLXSJGB_YXQS<='{0}' and (XLXSJGB_YXQZ is null or XLXSJGB_YXQZ>='{0}')", sBJRQ));
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
string sJGBID = ds.Tables[0].Rows[0]["XLXSJGB_JGBID"].ToString().Trim();
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSJGBMX "
+ "left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSJGBMX_XLGGID "
+ "where XLXSJGBMX_JGBID='{0}' and XLXSJGBMX_XLXHID = '{1}' and XLXSBJXLGGTHB_XLGGIDCH = '{2}' and XLXSJGBMX_XLBZID = '{3}'and XLXSJGBMX_DYDJID = '{4}'",
sJGBID, sXLXHID, sXLGGID.Replace('*', '×'), sXLBZID, sDYDJID.Equals("") ? " " : sDYDJID)))
{
return true;
}
else
return false;
}
else
return false;
}
//是否为外购产品
public static bool IsWGCP(string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLWGCP where XLWGCP_XLXHID='{0}' and XLWGCP_XLGGID='{1}' and XLWGCP_XLBZID ='{2}' and XLWGCP_DYDJID='{3}' ", sXLXHID, sXLGGID, sXLBZID, sDYDJID)))
return true;
return false;
}
//获取JGF价格表基价何计量单位
public static void GetJGBJJ_JGF(string sBJRQ, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, bool bHSBZ, string sBJU018, ref double dJGFJJ, ref double dJGFBJ, ref string sJGFJLDW)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(string.Format("select XLXSJGB_JGBID from XLXSJGB where XLXSJGB_MXBH='JGF' and XLXSJGB_YXQS<='{0}' and (XLXSJGB_YXQZ is null or XLXSJGB_YXQZ>='{0}')", sBJRQ));
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
string sJGBID = ds.Tables[0].Rows[0]["XLXSJGB_JGBID"].ToString().Trim();
SQL.Clear();
SQL.Add("select XLXSJGBMX_HSJJ,XLXSJGBMX_WSJJ,XLXSJGBMX_HSJJM,XLXSJGBMX_WSJJM,XLXSJGBMX_HSBJ,XLXSJGBMX_WSBJ,XLXSJGBMX_HSBJM,XLXSJGBMX_WSBJM,XLXSJGBMX_JLDW from XLXSJGBMX ");
SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSJGBMX_XLGGID ");
SQL.Add(" where XLXSJGBMX_JGBID = :pJGBID ");
SQL.Add(" and XLXSJGBMX_XLXHID = :pXLXHID ");
SQL.Add(" and XLXSBJXLGGTHB_XLGGIDCH = :pXLGGID ");
SQL.Add(" and XLXSJGBMX_XLBZID = :pXLBZID ");
SQL.Add(" and XLXSJGBMX_DYDJID = :pDYDJID ");
SQL.ParamByName("pJGBID").Value = sJGBID;
SQL.ParamByName("pXLXHID").Value = sXLXHID;
SQL.ParamByName("pXLGGID").Value = sXLGGID.Replace('*', '×');
SQL.ParamByName("pXLBZID").Value = sXLBZID;
SQL.ParamByName("pDYDJID").Value = sDYDJID.Equals("") ? " " : sDYDJID;
ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
double dHSJJ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_HSJJ"].ToString().Trim());
double dWSJJ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_WSJJ"].ToString().Trim());
double dHSJJM = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_HSJJM"].ToString().Trim());
double dWSJJM = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_WSJJM"].ToString().Trim());
double dHSBJ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_HSBJ"].ToString().Trim());
double dWSBJ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_WSBJ"].ToString().Trim());
double dHSBJM = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_HSBJM"].ToString().Trim());
double dWSBJM = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_WSBJM"].ToString().Trim());
sJGFJLDW = ds.Tables[0].Rows[0]["XLXSJGBMX_JLDW"].ToString().Trim();
if (sBJU018.Equals("Y") && XLBJDUtils.sJQCDJLDWList.Contains(sJGFJLDW.ToUpper()))
{
if (bHSBZ)
{
dJGFJJ = dHSJJM;
dJGFBJ = dHSBJM;
}
else
{
dJGFJJ = dWSJJM;
dJGFBJ = dWSBJM;
}
sJGFJLDW = "M";
}
else
{
if (bHSBZ)
{
dJGFJJ = dHSJJ;
dJGFBJ = dHSBJ;
}
else
{
dJGFJJ = dWSJJ;
dJGFBJ = dWSBJ;
}
}
}
}
}
//获取有效的JGF价格表ID
public static string GetJGFID(string sBJRQ)
{
string sJGBID = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(string.Format("select XLXSJGB_JGBID from XLXSJGB where XLXSJGB_MXBH='JGF' and XLXSJGB_YXQS<='{0}' and (XLXSJGB_YXQZ is null or XLXSJGB_YXQZ>='{0}')", sBJRQ));
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
sJGBID = ds.Tables[0].Rows[0]["XLXSJGB_JGBID"].ToString().Trim();
}
return sJGBID;
}
/// <summary>
/// 根据按钮名称,返回按钮宽度
/// </summary>
/// <param name="sText">按钮名称</param>
/// <param name="bDropDown">是否是下拉框,true为下拉框</param>
/// <returns></returns>
public static int GetBtnLength(ref string sText, bool bDropDown)
{
int length = 0;
if (bDropDown)
{
length = 70;
}
else
{
length = 58;
}
List<string> lst = new List<string>();
byte[] byteArray = System.Text.ASCIIEncoding.Default.GetBytes(sText);
int byteCount = 0;
for (int i = 0; i < sText.Length; i++)
{
string ss = sText.ToCharArray()[i].ToString().Trim();
lst.Add(ss);
bool bb1 = IsChinese(ss);
if (!bb1)
{
byteCount++;
}
}
if (bDropDown)
{
if (byteCount == 0)
{
if (byteArray.Length <= 4)
{
length = 58;
if (lst.Count >= 2)
{
sText = lst[0] + lst[1];
}
}
else if (byteArray.Length >= 6)
{
length = (byteArray.Length - 6) * 6 + 70;
}
else
{
length = 70;
}
}
else
{
if (byteArray.Length >= 6)
{
length = (byteArray.Length - 6) * 6 + 70;
}
else
{
length = 70;
}
}
}
else
{
if (byteCount == 0)
{
if (byteArray.Length <= 4)
{
length = 58;
if (lst.Count >= 2)
{
sText = lst[0] + " " + lst[1];
}
}
else if (byteArray.Length >= 6)
{
length = (byteArray.Length - 6) * 6 + 58;
}
else
{
length = 58;
}
}
else
{
if (byteArray.Length >= 6)
{
length = (byteArray.Length - 6) * 6 + 58;
}
else
{
length = 58;
}
}
}
return length;
}
/// <summary>
/// 给定一个字符串,判断其是否只包含有汉字,汉字的 UNICODE 编码范围
/// </summary>
/// <param ></param>
/// <returns></returns>
public static bool IsChinese(string str)
{
Regex rx = new Regex("^[\u4e00-\u9fa5]$");
if (rx.IsMatch(str))
{
return true;
}
return false;
}
//用户是否是销售员
public static bool IsXSY(string sGH)
{
return CMISproDataBase.ExistsRecord("DBERP", string.Format("select XSY_TXY from XSY where XSY_GH ='{0}' and isnull(XSY_TYBZ,'N') <> 'Y' ", sGH));
}
//用户是否是经销商
public static bool IsJXS(string sGH)
{
return CMISproDataBase.ExistsRecord("DBERP", string.Format(" select JXSXX_KHID from JXSXX where JXSXX_GH='{0}' and isnull(JXSXX_TYBZ,'N') <> 'Y' ", sGH));
}
public static double GetCPBJ(string sBJDID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
double fResult = 0.0;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL Sql = new TSQL(dberp);
Sql.Add("select distinct XLXSBJDMX_CPBJ from XLXSBJDMX ");
Sql.Add("where XLXSBJDMX_BJDID= :pBJDID and XLXSBJDMX_XLXHID = :pXLXHID and XLXSBJDMX_XLGGID = :pXLGGID and XLXSBJDMX_XLBZID= :pXLBZID and XLXSBJDMX_DYDJID = :pDYDJID");
Sql.ParamByName("pBJDID").Value = sBJDID;
Sql.ParamByName("pXLXHID").Value = sXLXHID;
Sql.ParamByName("pXLGGID").Value = sXLGGID;
Sql.ParamByName("pXLBZID").Value = sXLBZID;
Sql.ParamByName("pDYDJID").Value = sDYDJID;
DataSet ds = dberp.OpenDataSet(Sql);
if (ds.Tables[0].Rows.Count == 1)
fResult = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString().Trim(), 0);
return fResult;
}
public static string GetGYKH(string sXLBZID)
{
string sGYKH = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" select XLBZGYKHDZB_GYKH from XLBZGYKHDZB where XLBZGYKHDZB_XLBZID = :pXLBZID ");
SQL.ParamByName("pXLBZID").Value = sXLBZID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
sGYKH = ds.Tables[0].Rows[0]["XLBZGYKHDZB_GYKH"].ToString().Trim();
}
return sGYKH;
}
public static bool ISDZBZ(string sXLBZID)
{
if (CMISproDataBase.ExistsRecord("DBERP", string.Format(" select 1 from XLBZ where XLBZ_DZSC='Y' and XLBZ_XLBZID = '{0}'", sXLBZID.Trim())))
return true;
return false;
}
//下单型号匹配
//按XLXSBJXDBZ1设置的规则获取标准
public static string GetXDXLBZID(string sXLXHID, string sDYDJID, string sXLGGID, string sXLBZID)
{
string sResult = sXLBZID;
Dictionary<string, string> dicXLGGB = XLBJDUtils.GetXXJGIDByXLGGID(sXLGGID, sXLXHID);
double fZXJM = CMISproConvert.StrToFloat(dicXLGGB["ZXJM"]);
string sXXJGID = dicXLGGB["XXJGID"];
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add(" select XLXSBJXDBZ1_XDXLBZID from XLXSBJXDBZ1 ");
sql.Add(" where XLXSBJXDBZ1_PPLX='B' and XLXSBJXDBZ1_XLBZID=:pXLBZID ");
sql.ParamByName("pXLBZID").Value = sXLBZID;
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
sResult = ds.Tables[0].Rows[i]["XLXSBJXDBZ1_XDXLBZID"].ToString().Trim();
}
sql.Clear();
sql.Add("select XLXSBJXDBZ1_XDXLBZID,XLXSBJXDBZ1_DYDJID,XLXSBJXDBZ1_XXJGID, ");
sql.Add(" case WHEN isnull(XLXSBJXDBZ1_DYDJID,' ')<>' ' and isnull(XLXSBJXDBZ1_XXJGID,' ')<>' ' then 1 ");
sql.Add(" WHEN isnull(XLXSBJXDBZ1_DYDJID,' ')<>' ' and isnull(XLXSBJXDBZ1_XXJGID,' ')=' ' then 2 ");
sql.Add(" END AS PX ");
sql.Add(" from XLXSBJXDBZ1 ");
sql.Add(" where XLXSBJXDBZ1_XLXHID=:pXLXHID ");
sql.Add(" and XLXSBJXDBZ1_XLBZID=:pXLBZID ");
sql.Add(" and XLXSBJXDBZ1_ZXJMXX<=:pZXJM and ((XLXSBJXDBZ1_ZXJMSX<>0 and XLXSBJXDBZ1_ZXJMSX>=:pZXJM) or XLXSBJXDBZ1_ZXJMSX=0)");
sql.Add(" order by PX,XLXSBJXDBZ1_XLBZID ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pZXJM").Value = fZXJM;
ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sPX = ds.Tables[0].Rows[i]["PX"].ToString().Trim();
string tmpDYDJID = ds.Tables[0].Rows[i]["XLXSBJXDBZ1_DYDJID"].ToString().Trim();
string tmpXXJGID = ds.Tables[0].Rows[i]["XLXSBJXDBZ1_XXJGID"].ToString().Trim();
//先匹配电压、芯线结构不为空的记录
if (sPX.Equals("1") && sDYDJID.Equals(tmpDYDJID) && sXXJGID.Equals(tmpXXJGID))
{
sResult = ds.Tables[0].Rows[i]["XLXSBJXDBZ1_XDXLBZID"].ToString().Trim();
break;
}
//匹配电压不为空、芯线结构为空的记录
else if (sPX.Equals("2") && sDYDJID.Equals(tmpDYDJID))
{
sResult = ds.Tables[0].Rows[i]["XLXSBJXDBZ1_XDXLBZID"].ToString().Trim();
break;
}
}
return sResult;
}
private static BJFLJSLMXX GetBJFLJSLMObject(DataRow row)
{
BJFLJSLMXX jslmxx = new BJFLJSLMXX();
jslmxx.XLXSBJFLJSLM_BJFLID = row["XLXSBJFLJSLM_BJFLID"].ToString().Trim();
jslmxx.XLXSBJFLJSLM_JSLX = row["XLXSBJFLJSLM_JSLX"].ToString().Trim();
jslmxx.XLXSBJFLJSLM_LMID = row["XLXSBJFLJSLM_LMID"].ToString().Trim();
jslmxx.XLXSBJFLJSLM_LMLX = row["XLXSBJFLJSLM_LMLX"].ToString().Trim();
jslmxx.XLXSBJFLJSLM_YCBZ = row["XLXSBJFLJSLM_YCBZ"].ToString().Trim();
return jslmxx;
}
public static List<BJFLJSLMXX> GetBJFLJSLMXX(string sBJFLID)
{
List<BJFLJSLMXX> jslmxxList = new List<BJFLJSLMXX>();
BJFLJSLMCache jslmxxCache = new BJFLJSLMCache();
if (jslmxxCache.CacheEnabled)
{
jslmxxCache = (BJFLJSLMCache)jslmxxCache.GetData(null);
foreach (DataRowView row in jslmxxCache.dvXLXSBJFLJSLMLBy_BJFLID.FindRows(sBJFLID))
{
BJFLJSLMXX jslmxx = GetBJFLJSLMObject(row.Row);
jslmxxList.Add(jslmxx);
}
}
return jslmxxList;
}
private static BJFLXX GetBJFLObject(DataRow row)
{
BJFLXX flxx = new BJFLXX();
flxx.XLXSBJFL_BABZFGDY = row["XLXSBJFL_BABZFGDY"].ToString().Trim();
flxx.XLXSBJFL_BJBM = row["XLXSBJFL_BJBM"].ToString().Trim();
flxx.XLXSBJFL_BJCPFZJS = row["XLXSBJFL_BJCPFZJS"].ToString().Trim();
flxx.XLXSBJFL_BJDHQLJBM = row["XLXSBJFL_BJDHQLJBM"].ToString().Trim();
flxx.XLXSBJFL_BJDHQLY = row["XLXSBJFL_BJDHQLY"].ToString().Trim();
flxx.XLXSBJFL_BJDYBJTXS = row["XLXSBJFL_BJDYBJTXS"].ToString().Trim();
flxx.XLXSBJFL_BJFLID = row["XLXSBJFL_BJFLID"].ToString().Trim();
flxx.XLXSBJFL_BJFLMC = row["XLXSBJFL_BJFLMC"].ToString().Trim();
flxx.XLXSBJFL_BJFLTZM = row["XLXSBJFL_BJFLTZM"].ToString().Trim();
flxx.XLXSBJFL_BJHYF = row["XLXSBJFL_BJHYF"].ToString().Trim();
flxx.XLXSBJFL_BJJCLLX = row["XLXSBJFL_BJJCLLX"].ToString().Trim();
flxx.XLXSBJFL_BJLJJCLLX = row["XLXSBJFL_BJLJJCLLX"].ToString().Trim();
flxx.XLXSBJFL_BJQSTXS = row["XLXSBJFL_BJQSTXS"].ToString().Trim();
flxx.XLXSBJFL_XJDYBJTXS = row["XLXSBJFL_XJDYBJTXS"].ToString().Trim();
flxx.XLXSBJFL_BZ = row["XLXSBJFL_BZ"].ToString().Trim();
flxx.XLXSBJFL_CPBJMRXSWS = row["XLXSBJFL_CPBJMRXSWS"].ToString().Trim();
flxx.XLXSBJFL_CPMLID = row["XLXSBJFL_CPMLID"].ToString().Trim();
flxx.XLXSBJFL_JGBBJBM = row["XLXSBJFL_JGBBJBM"].ToString().Trim();
flxx.XLXSBJFL_JGBIDS = row["XLXSBJFL_JGBIDS"].ToString().Trim();
flxx.XLXSBJFL_JGBTJYSS = row["XLXSBJFL_JGBTJYSS"].ToString().Trim();
flxx.XLXSBJFL_JGMBGRPID = row["XLXSBJFL_JGMBGRPID"].ToString().Trim();
flxx.XLXSBJFL_JJZJGBXH = row["XLXSBJFL_JJZJGBXH"].ToString().Trim();
flxx.XLXSBJFL_JLBJDHQ = row["XLXSBJFL_JLBJDHQ"].ToString().Trim();
flxx.XLXSBJFL_JLRBJCP = row["XLXSBJFL_JLRBJCP"].ToString().Trim();
flxx.XLXSBJFL_JMBGSYZID = row["XLXSBJFL_JMBGSYZID"].ToString().Trim();
flxx.XLXSBJFL_JSJGS = row["XLXSBJFL_JSJGS"].ToString().Trim();
flxx.XLXSBJFL_JYF = row["XLXSBJFL_JYF"].ToString().Trim();
flxx.XLXSBJFL_LBJCLID = row["XLXSBJFL_LBJCLID"].ToString().Trim();
flxx.XLXSBJFL_LJJCLLX = row["XLXSBJFL_LJJCLLX"].ToString().Trim();
flxx.XLXSBJFL_LJJCLPLTJFW = row["XLXSBJFL_LJJCLPLTJFW"].ToString().Trim();
flxx.XLXSBJFL_MRCKC = row["XLXSBJFL_MRCKC"].ToString().Trim();
flxx.XLXSBJFL_MXBH = row["XLXSBJFL_MXBH"].ToString().Trim();
flxx.XLXSBJFL_QYRQ = row["XLXSBJFL_QYRQ"].ToString().Trim();
flxx.XLXSBJFL_SDJGBCLHQFW = row["XLXSBJFL_SDJGBCLHQFW"].ToString().Trim();
flxx.XLXSBJFL_TBJCLID = row["XLXSBJFL_TBJCLID"].ToString().Trim();
flxx.XLXSBJFL_TLJTZGXQTCL = row["XLXSBJFL_TLJTZGXQTCL"].ToString().Trim();
flxx.XLXSBJFL_TYBZ = row["XLXSBJFL_TYBZ"].ToString().Trim();
flxx.XLXSBJFL_TYRQ = row["XLXSBJFL_TYRQ"].ToString().Trim();
flxx.XLXSBJFL_TZBJ = row["XLXSBJFL_TZBJ"].ToString().Trim();
flxx.XLXSBJFL_CPBJZDWPID = row["XLXSBJFL_CPBJZDWPID"].ToString().Trim();
flxx.XLXSBJFL_LRBJCPWPID = row["XLXSBJFL_LRBJCPWPID"].ToString().Trim();
flxx.XLXSBJFL_TZBJDHQLJ = row["XLXSBJFL_TZBJDHQLJ"].ToString().Trim();
flxx.XLXSBJFL_TZCLHQ = row["XLXSBJFL_TZCLHQ"].ToString().Trim();
flxx.XLXSBJFL_TZJGBBJ = row["XLXSBJFL_TZJGBBJ"].ToString().Trim();
flxx.XLXSBJFL_TZBJBJBB = row["XLXSBJFL_TZBJBJBB"].ToString().Trim();
flxx.XLXSBJFL_JGBBJZDWPID = row["XLXSBJFL_JGBBJZDWPID"].ToString().Trim();
flxx.XLXSBJFL_TZQCPBJGS = row["XLXSBJFL_TZQCPBJGS"].ToString().Trim();
flxx.XLXSBJFL_TZWLHQ = row["XLXSBJFL_TZWLHQ"].ToString().Trim();
flxx.XLXSBJFL_WHR = row["XLXSBJFL_WHR"].ToString().Trim();
flxx.XLXSBJFL_WHRID = row["XLXSBJFL_WHRID"].ToString().Trim();
flxx.XLXSBJFL_WHSJ = row["XLXSBJFL_WHSJ"].ToString().Trim();
flxx.XLXSBJFL_XHABJCSDP = row["XLXSBJFL_XHABJCSDP"].ToString().Trim();
flxx.XLXSBJFL_XHGGYMHJS = row["XLXSBJFL_XHGGYMHJS"].ToString().Trim();
flxx.XLXSBJFL_XSJGBBJJCE = row["XLXSBJFL_XSJGBBJJCE"].ToString().Trim();
flxx.XLXSBJFL_XSJGBJJ = row["XLXSBJFL_XSJGBJJ"].ToString().Trim();
flxx.XLXSBJFL_XSQYIDS = row["XLXSBJFL_XSQYIDS"].ToString().Trim();
flxx.XLXSBJFL_XSTZBJJE = row["XLXSBJFL_XSTZBJJE"].ToString().Trim();
flxx.XLXSBJFL_XSTZCPBJ = row["XLXSBJFL_XSTZCPBJ"].ToString().Trim();
flxx.XLXSBJFL_XSTZZDXJ = row["XLXSBJFL_XSTZZDXJ"].ToString().Trim();
flxx.XLXSBJFL_XSXH = row["XLXSBJFL_XSXH"].ToString().Trim();
flxx.XLXSBJFL_XSYSCP = row["XLXSBJFL_XSYSCP"].ToString().Trim();
flxx.XLXSBJFL_XSYXJ = row["XLXSBJFL_XSYXJ"].ToString().Trim();
flxx.XLXSBJFL_XSXLBZMS = row["XLXSBJFL_XSXLBZMS"].ToString().Trim();
flxx.XLXSBJFL_XSYZ = row["XLXSBJFL_XSYZ"].ToString().Trim();
flxx.XLXSBJFL_XSZDXJ = row["XLXSBJFL_XSZDXJ"].ToString().Trim();
flxx.XLXSBJFL_XTCPBJYZ = row["XLXSBJFL_XTCPBJYZ"].ToString().Trim();
flxx.XLXSBJFL_YFWLID = row["XLXSBJFL_YFWLID"].ToString().Trim();
flxx.XLXSBJFL_ZDXJGS = row["XLXSBJFL_ZDXJGS"].ToString().Trim();
flxx.XLXSBJFL_ZDXJJCLLX = row["XLXSBJFL_ZDXJJCLLX"].ToString().Trim();
flxx.XLXSBJFL_ZDXJJCLTXS = row["XLXSBJFL_ZDXJJCLTXS"].ToString().Trim();
flxx.XLXSBJFL_ZDXJJCLXX = row["XLXSBJFL_ZDXJJCLXX"].ToString().Trim();
flxx.XLXSBJFL_ZDXJQZBJDFL = row["XLXSBJFL_ZDXJQZBJDFL"].ToString().Trim();
flxx.XLXSBJFL_ZLGZCLS = row["XLXSBJFL_ZLGZCLS"].ToString().Trim();
flxx.XLXSBJFL_YXJJCLLX = row["XLXSBJFL_YXJJCLLX"].ToString().Trim();
flxx.XLXSBJFL_XSFBH = row["XLXSBJFL_XSFBH"].ToString().Trim();
flxx.XLXSBJFL_XSYLRYZID = row["XLXSBJFL_XSYLRYZID"].ToString().Trim();
flxx.XLXSBJFL_XSYKJJGHJ = row["XLXSBJFL_XSYKJJGHJ"].ToString().Trim();
flxx.XLXSBJFL_XSYKJJGLM = row["XLXSBJFL_XSYKJJGLM"].ToString().Trim();
flxx.XLXSBJFL_ABJDHQJSBJ = row["XLXSBJFL_ABJDHQJSBJ"].ToString().Trim();
flxx.XLXSBJFL_FJGBCPBJSBJ = row["XLXSBJFL_FJGBCPBJSBJ"].ToString().Trim();
flxx.XLXSBJFL_XSCPBJXJ = row["XLXSBJFL_XSCPBJXJ"].ToString().Trim();
flxx.XLXSBJFL_TZYLBL = row["XLXSBJFL_TZYLBL"].ToString().Trim();
flxx.XLXSBJFL_JSJBM = row["XLXSBJFL_JSJBM"].ToString().Trim();
flxx.XLXSBJFL_JSJXSWS = row["XLXSBJFL_JSJXSWS"].ToString().Trim();
flxx.XLXSBJFL_JSJJCLLX = row["XLXSBJFL_JSJJCLLX"].ToString().Trim();
flxx.XLXSBJFL_MYHSSX = row["XLXSBJFL_MYHSSX"].ToString().Trim();
flxx.XLXSBJFL_BJJCLBJRQDWCP = row["XLXSBJFL_BJJCLBJRQDWCP"].ToString().Trim();
flxx.XLXSBJFL_LJJCLBJRQDWCP = row["XLXSBJFL_LJJCLBJRQDWCP"].ToString().Trim();
flxx.XLXSBJFL_ZDXJJCLBJRQDWCP = row["XLXSBJFL_ZDXJJCLBJRQDWCP"].ToString().Trim();
flxx.XLXSBJFL_JMBGSBM = row["XLXSBJFL_JMBGSBM"].ToString().Trim();
flxx.XLXSBJFL_XSLSBJ = row["XLXSBJFL_XSLSBJ"].ToString().Trim();
flxx.XLXSBJFL_ST = row["XLXSBJFL_ST"].ToString().Trim();
flxx.XLXSBJFL_CJGS = row["XLXSBJFL_CJGS"].ToString().Trim();
return flxx;
}
public static BJFLXX GetBJFLXX(string sBJFLID)
{
BJFLXX flxx = new BJFLXX();
BJFLCache flxxCache = new BJFLCache();
if (flxxCache.CacheEnabled)
{
flxxCache = (BJFLCache)flxxCache.GetData(null);
foreach (DataRowView row in flxxCache.dvXLXSBJFLBy_BJFLID.FindRows(sBJFLID))
{
flxx = GetBJFLObject(row.Row);
}
}
return flxx;
}
public static BJFLXX GetBJFLXXByBJDID(string sBJDID)
{
string sBJFLID = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" select XLXSBJD_BJFLID from XLXSBJD WHERE XLXSBJD_BJDID=:pBJDID ");
sql.ParamByName("pBJDID").Value = sBJDID.Trim();
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
sBJFLID = ds.Tables[0].Rows[0][0].ToString().Trim();
}
BJFLXX flxx = new BJFLXX();
BJFLCache flxxCache = new BJFLCache();
if (flxxCache.CacheEnabled)
{
flxxCache = (BJFLCache)flxxCache.GetData(null);
foreach (DataRowView row in flxxCache.dvXLXSBJFLBy_BJFLID.FindRows(sBJFLID))
{
flxx = GetBJFLObject(row.Row);
}
}
return flxx;
}
private static XLXSBJPZXX GetObject(DataRow row)
{
XLXSBJPZXX pzxx = new XLXSBJPZXX();
pzxx.XLXSBJPZ_ALMXZBJCL = row["XLXSBJPZ_ALMXZBJCL"].ToString().Trim();
pzxx.XLXSBJPZ_APPCJSXFS = row["XLXSBJPZ_APPCJSXFS"].ToString().Trim();
pzxx.XLXSBJPZ_BAXMKHMCCF = row["XLXSBJPZ_BAXMKHMCCF"].ToString().Trim();
pzxx.XLXSBJPZ_BAXMMCCF = row["XLXSBJPZ_BAXMMCCF"].ToString().Trim();
pzxx.XLXSBJPZ_BAXMMCTXYCF = row["XLXSBJPZ_BAXMMCTXYCF"].ToString().Trim();
pzxx.XLXSBJPZ_BBYSXH = row["XLXSBJPZ_BBYSXH"].ToString().Trim();
pzxx.XLXSBJPZ_BJFLIDS = row["XLXSBJPZ_BJFLIDS"].ToString().Trim();
pzxx.XLXSBJPZ_BJSFTJFS = row["XLXSBJPZ_BJSFTJFS"].ToString().Trim();
pzxx.XLXSBJPZ_BJXFTJFS = row["XLXSBJPZ_BJXFTJFS"].ToString().Trim();
pzxx.XLXSBJPZ_BMYSLIST = row["XLXSBJPZ_BMYSLIST"].ToString().Trim();
pzxx.XLXSBJPZ_CLYLZJFS = row["XLXSBJPZ_CLYLZJFS"].ToString().Trim();
pzxx.XLXSBJPZ_CPCF = row["XLXSBJPZ_CPCF"].ToString().Trim();
pzxx.XLXSBJPZ_CPCFBL = row["XLXSBJPZ_CPCFBL"].ToString().Trim();
pzxx.XLXSBJPZ_CPCFGS = row["XLXSBJPZ_CPCFGS"].ToString().Trim();
pzxx.XLXSBJPZ_CPMLIDS = row["XLXSBJPZ_CPMLIDS"].ToString().Trim();
pzxx.XLXSBJPZ_CPSLCF = row["XLXSBJPZ_CPSLCF"].ToString().Trim();
pzxx.XLXSBJPZ_CPSLCFGS = row["XLXSBJPZ_CPSLCFGS"].ToString().Trim();
pzxx.XLXSBJPZ_CPCFXLBZ = row["XLXSBJPZ_CPCFXLBZ"].ToString().Trim();
pzxx.XLXSBJPZ_FJSCGS = row["XLXSBJPZ_FJSCGS"].ToString().Trim();
pzxx.XLXSBJPZ_FKSZDSCGCXM = row["XLXSBJPZ_FKSZDSCGCXM"].ToString().Trim();
pzxx.XLXSBJPZ_FZCHYZZ = row["XLXSBJPZ_FZCHYZZ"].ToString().Trim();
pzxx.XLXSBJPZ_BJDWQFZ = row["XLXSBJPZ_BJDWQFZ"].ToString().Trim();
pzxx.XLXSBJPZ_GGJQSX = row["XLXSBJPZ_GGJQSX"].ToString().Trim();
pzxx.XLXSBJPZ_HJYROLEID = row["XLXSBJPZ_HJYROLEID"].ToString().Trim();
pzxx.XLXSBJPZ_JGBID = row["XLXSBJPZ_JGBID"].ToString().Trim();
pzxx.XLXSBJPZ_JGBJJFP = row["XLXSBJPZ_JGBJJFP"].ToString().Trim();
pzxx.XLXSBJPZ_JLTZHCP = row["XLXSBJPZ_JLTZHCP"].ToString().Trim();
pzxx.XLXSBJPZ_JGBMRBSX = row["XLXSBJPZ_JGBMRBSX"].ToString().Trim();
pzxx.XLXSBJPZ_JLDWS = row["XLXSBJPZ_JLDWS"].ToString().Trim();
pzxx.XLXSBJPZ_KHBT = row["XLXSBJPZ_KHBT"].ToString().Trim();
pzxx.XLXSBJPZ_KHJSLY = row["XLXSBJPZ_KHJSLY"].ToString().Trim();
pzxx.XLXSBJPZ_KHMCCF = row["XLXSBJPZ_KHMCCF"].ToString().Trim();
pzxx.XLXSBJPZ_KHTXYXZ = row["XLXSBJPZ_KHTXYXZ"].ToString().Trim();
pzxx.XLXSBJPZ_KSDREJCD = row["XLXSBJPZ_KSDREJCD"].ToString().Trim();
pzxx.XLXSBJPZ_KSDYZID = row["XLXSBJPZ_KSDYZID"].ToString().Trim();
pzxx.XLXSBJPZ_KSDYZZLX = row["XLXSBJPZ_KSDYZZLX"].ToString().Trim();
pzxx.XLXSBJPZ_LBJCLID = row["XLXSBJPZ_LBJCLID"].ToString().Trim();
pzxx.XLXSBJPZ_LHJBJCLID = row["XLXSBJPZ_LHJBJCLID"].ToString().Trim();
pzxx.XLXSBJPZ_LDTGSCLID = row["XLXSBJPZ_LDTGSCLID"].ToString().Trim();
pzxx.XLXSBJPZ_MDID = row["XLXSBJPZ_MDID"].ToString().Trim();
pzxx.XLXSBJPZ_MRDYDJ = row["XLXSBJPZ_MRDYDJ"].ToString().Trim();
pzxx.XLXSBJPZ_MRGXLR = row["XLXSBJPZ_MRGXLR"].ToString().Trim();
pzxx.XLXSBJPZ_MRJSFS = row["XLXSBJPZ_MRJSFS"].ToString().Trim();
pzxx.XLXSBJPZ_MRXLBZID = row["XLXSBJPZ_MRXLBZID"].ToString().Trim();
pzxx.XLXSBJPZ_PLTJKXX = row["XLXSBJPZ_PLTJKXX"].ToString().Trim();
pzxx.XLXSBJPZ_QYBJCPFZJS = row["XLXSBJPZ_QYBJCPFZJS"].ToString().Trim();
pzxx.XLXSBJPZ_SJJLYBJCP = row["XLXSBJPZ_SJJLYBJCP"].ToString().Trim();
pzxx.XLXSBJPZ_SJYROLEID = row["XLXSBJPZ_SJYROLEID"].ToString().Trim();
pzxx.XLXSBJPZ_SQXMBAGL = row["XLXSBJPZ_SQXMBAGL"].ToString().Trim();
pzxx.XLXSBJPZ_TBFKZ3BB = row["XLXSBJPZ_TBFKZ3BB"].ToString().Trim();
pzxx.XLXSBJPZ_TBJCLID = row["XLXSBJPZ_TBJCLID"].ToString().Trim();
pzxx.XLXSBJPZ_TDTGSCLID = row["XLXSBJPZ_TDTGSCLID"].ToString().Trim();
pzxx.XLXSBJPZ_ZBLRGS = row["XLXSBJPZ_ZBLRGS"].ToString().Trim();
pzxx.XLXSBJPZ_THSFTGKBXH = row["XLXSBJPZ_THSFTGKBXH"].ToString().Trim();
pzxx.XLXSBJPZ_TJBXYGHJGML = row["XLXSBJPZ_TJBXYGHJGML"].ToString().Trim();
pzxx.XLXSBJPZ_TZBLYZID = row["XLXSBJPZ_TZBLYZID"].ToString().Trim();
pzxx.XLXSBJPZ_TZBLYZZLX = row["XLXSBJPZ_TZBLYZZLX"].ToString().Trim();
pzxx.XLXSBJPZ_WBPPZXSX = row["XLXSBJPZ_WBPPZXSX"].ToString().Trim();
pzxx.XLXSBJPZ_WHR = row["XLXSBJPZ_WHR"].ToString().Trim();
pzxx.XLXSBJPZ_WHRID = row["XLXSBJPZ_WHRID"].ToString().Trim();
pzxx.XLXSBJPZ_WHSJ = row["XLXSBJPZ_WHSJ"].ToString().Trim();
pzxx.XLXSBJPZ_WXHYJGBID = row["XLXSBJPZ_WXHYJGBID"].ToString().Trim();
pzxx.XLXSBJPZ_XHGGCF = row["XLXSBJPZ_XHGGCF"].ToString().Trim();
pzxx.XLXSBJPZ_XHGGCFBL = row["XLXSBJPZ_XHGGCFBL"].ToString().Trim();
pzxx.XLXSBJPZ_XHJQSX = row["XLXSBJPZ_XHJQSX"].ToString().Trim();
pzxx.XLXSBJPZ_XJYROLEID = row["XLXSBJPZ_XJYROLEID"].ToString().Trim();
pzxx.XLXSBJPZ_XMBT = row["XLXSBJPZ_XMBT"].ToString().Trim();
pzxx.XLXSBJPZ_XMJSLY = row["XLXSBJPZ_XMJSLY"].ToString().Trim();
pzxx.XLXSBJPZ_XMKHMCXZ = row["XLXSBJPZ_XMKHMCXZ"].ToString().Trim();
pzxx.XLXSBJPZ_XMMCCF = row["XLXSBJPZ_XMMCCF"].ToString().Trim();
pzxx.XLXSBJPZ_XMMCCZCF = row["XLXSBJPZ_XMMCCZCF"].ToString().Trim();
pzxx.XLXSBJPZ_XMMCCZCFGS = row["XLXSBJPZ_XMMCCZCFGS"].ToString().Trim();
pzxx.XLXSBJPZ_XMMCTSCZ = row["XLXSBJPZ_XMMCTSCZ"].ToString().Trim();
pzxx.XLXSBJPZ_XSCPML = row["XLXSBJPZ_XSCPML"].ToString().Trim();
pzxx.XLXSBJPZ_XZKHYQ = row["XLXSBJPZ_XZKHYQ"].ToString().Trim();
pzxx.XLXSBJPZ_XZMXKXX = row["XLXSBJPZ_XZMXKXX"].ToString().Trim();
pzxx.XLXSBJPZ_XZXMYQ = row["XLXSBJPZ_XZXMYQ"].ToString().Trim();
pzxx.XLXSBJPZ_YJTZRYLIST = row["XLXSBJPZ_YJTZRYLIST"].ToString().Trim();
pzxx.XLXSBJPZ_YSCPCLCBGS1 = row["XLXSBJPZ_YSCPCLCBGS1"].ToString().Trim();
pzxx.XLXSBJPZ_YXFCDJLDW = row["XLXSBJPZ_YXFCDJLDW"].ToString().Trim();
pzxx.XLXSBJPZ_ZDBMIDS = row["XLXSBJPZ_ZDBMIDS"].ToString().Trim();
pzxx.XLXSBJPZ_ZDRGHS = row["XLXSBJPZ_ZDRGHS"].ToString().Trim();
pzxx.XLXSBJPZ_ZDYJLDWS = row["XLXSBJPZ_ZDYJLDWS"].ToString().Trim();
pzxx.XLXSBJPZ_ZDZD = row["XLXSBJPZ_ZDZD"].ToString().Trim();
pzxx.XLXSBJPZ_WLQSTZBMIDS = row["XLXSBJPZ_WLQSTZBMIDS"].ToString().Trim();
pzxx.XLXSBJPZ_WLQSTZRGHS = row["XLXSBJPZ_WLQSTZRGHS"].ToString().Trim();
pzxx.XLXSBJPZ_JGPSTZBMIDS = row["XLXSBJPZ_JGPSTZBMIDS"].ToString().Trim();
pzxx.XLXSBJPZ_JGPSTZRGHS = row["XLXSBJPZ_JGPSTZRGHS"].ToString().Trim();
pzxx.XLXSBJPZ_BQKTZZDXJ = row["XLXSBJPZ_BQKTZZDXJ"].ToString().Trim();
pzxx.XLXSBJPZ_BQKTZBJ = row["XLXSBJPZ_BQKTZBJ"].ToString().Trim();
pzxx.XLXSBJPZ_KHLXRCF = row["XLXSBJPZ_KHLXRCF"].ToString().Trim();
pzxx.XLXSBJPZ_LXDHCF = row["XLXSBJPZ_LXDHCF"].ToString().Trim();
pzxx.XLXSBJPZ_YCJGXGLM = row["XLXSBJPZ_YCJGXGLM"].ToString().Trim();
pzxx.XLXSBJPZ_CPFDCF = row["XLXSBJPZ_CPFDCF"].ToString().Trim();
pzxx.XLXSBJPZ_MXTMCBL = row["XLXSBJPZ_MXTMCBL"].ToString().Trim();
pzxx.XLXSBJPZ_MXFDS = row["XLXSBJPZ_MXFDS"].ToString().Trim();
pzxx.XLXSBJPZ_XYFDSCFBL = row["XLXSBJPZ_XYFDSCFBL"].ToString().Trim();
pzxx.XLXSBJPZ_DYFDSCFBL = row["XLXSBJPZ_DYFDSCFBL"].ToString().Trim();
pzxx.XLXSBJPZ_YXTZCZBFZR = row["XLXSBJPZ_YXTZCZBFZR"].ToString().Trim();
pzxx.XLXSBJPZ_MRZDR = row["XLXSBJPZ_MRZDR"].ToString().Trim();
pzxx.XLXSBJPZ_ZDZDYF = row["XLXSBJPZ_ZDZDYF"].ToString().Trim();
pzxx.XLXSBJPZ_ZDZDLX = row["XLXSBJPZ_ZDZDLX"].ToString().Trim();
pzxx.XLXSBJPZ_ZDQRWPID = row["XLXSBJPZ_ZDQRWPID"].ToString().Trim();
pzxx.XLXSBJPZ_BJY = row["XLXSBJPZ_BJY"].ToString().Trim();
pzxx.XLXSBJPZ_KHMCXMMCCF = row["XLXSBJPZ_KHMCXMMCCF"].ToString().Trim();
pzxx.XLXSBJPZ_CPSLCFBL = row["XLXSBJPZ_CPSLCFBL"].ToString().Trim();
pzxx.XLXSBJPZ_JLXJXXHZFS = row["XLXSBJPZ_JLXJXXHZFS"].ToString().Trim();
pzxx.XLXSBJPZ_YLZDMXTZ = row["XLXSBJPZ_YLZDMXTZ"].ToString().Trim();
pzxx.XLXSBJPZ_BJSLMRYZ = row["XLXSBJPZ_BJSLMRYZ"].ToString().Trim();
pzxx.XLXSBJPZ_PFBJRBJ = row["XLXSBJPZ_PFBJRBJ"].ToString().Trim();
pzxx.XLXSBJPZ_FKWLPPTX = row["XLXSBJPZ_FKWLPPTX"].ToString().Trim();
pzxx.XLXSBJPZ_BZDPPDY = row["XLXSBJPZ_BZDPPDY"].ToString().Trim();
pzxx.XLXSBJPZ_XSGYKH = row["XLXSBJPZ_XSGYKH"].ToString().Trim();
pzxx.XLXSBJPZ_JLBJWCSJ = row["XLXSBJPZ_JLBJWCSJ"].ToString().Trim();
pzxx.XLXSBJPZ_XSZBXX = row["XLXSBJPZ_XSZBXX"].ToString().Trim();
pzxx.XLXSBJPZ_JGFKZD = row["XLXSBJPZ_JGFKZD"].ToString().Trim();
pzxx.XLXSBJPZ_KHJFKZD = row["XLXSBJPZ_KHJFKZD"].ToString().Trim();
pzxx.XLXSBJPZ_JGBJGFKZD = row["XLXSBJPZ_JGBJGFKZD"].ToString().Trim();
pzxx.XLXSBJPZ_MRCPYT = row["XLXSBJPZ_MRCPYT"].ToString().Trim();
pzxx.XLXSBJPZ_XSPWQD = row["XLXSBJPZ_XSPWQD"].ToString().Trim();
pzxx.XLXSBJPZ_WBBJDJXYS = row["XLXSBJPZ_WBBJDJXYS"].ToString().Trim();
pzxx.XLXSBJPZ_QYBJDXTH = row["XLXSBJPZ_QYBJDXTH"].ToString().Trim();
pzxx.XLXSBJPZ_WBBJDDRYZ = row["XLXSBJPZ_WBBJDDRYZ"].ToString().Trim();
pzxx.XLXSBJPZ_YXQCPWL = row["XLXSBJPZ_YXQCPWL"].ToString().Trim();
pzxx.XLXSBJPZ_TCPBSYS = row["XLXSBJPZ_TCPBSYS"].ToString().Trim();
pzxx.XLXSBJPZ_LCPBSYS = row["XLXSBJPZ_LCPBSYS"].ToString().Trim();
pzxx.XLXSBJPZ_KHMCXSBL = row["XLXSBJPZ_KHMCXSBL"].ToString().Trim();
pzxx.XLXSBJPZ_GXXSBJXDWL = row["XLXSBJPZ_GXXSBJXDWL"].ToString().Trim();
pzxx.XLXSBJPZ_XHZJSR = row["XLXSBJPZ_XHZJSR"].ToString().Trim();
pzxx.XLXSBJPZ_FZNRDRLM = row["XLXSBJPZ_FZNRDRLM"].ToString().Trim();
pzxx.XLXSBJPZ_TJGBFZBLBJ = row["XLXSBJPZ_TJGBFZBLBJ"].ToString().Trim();
pzxx.XLXSBJPZ_ZCCF = row["XLXSBJPZ_ZCCF"].ToString().Trim();
pzxx.XLXSBJPZ_YFJSGS = row["XLXSBJPZ_YFJSGS"].ToString().Trim();
pzxx.XLXSBJPZ_PJZLSFJRYZ = row["XLXSBJPZ_PJZLSFJRYZ"].ToString().Trim();
pzxx.XLXSBJPZ_CFCPBQFBZ = row["XLXSBJPZ_CFCPBQFBZ"].ToString().Trim();
pzxx.XLXSBJPZ_BCYZDKH = row["XLXSBJPZ_BCYZDKH"].ToString().Trim();
pzxx.XLXSBJPZ_BCYZDXM = row["XLXSBJPZ_BCYZDXM"].ToString().Trim();
pzxx.XLXSBJPZ_CLJGXSWS = row["XLXSBJPZ_CLJGXSWS"].ToString().Trim();
return pzxx;
}
public static XLXSBJPZXX GetXLXSBJPZXX(int iMDID)
{
XLXSBJPZXX pzxx = new XLXSBJPZXX();
XLXSBJPZCache pzxxCache = new XLXSBJPZCache();
if (pzxxCache.CacheEnabled)
{
pzxxCache = (XLXSBJPZCache)pzxxCache.GetData(null);
foreach (DataRowView row in pzxxCache.dvXLXSBJPZBy_MDID.FindRows(iMDID))
{
pzxx = GetObject(row.Row);
}
}
return pzxx;
}
/// <summary>
/// 获取基础计量单位和自定义计量单位
/// </summary>
/// <returns></returns>
public static string GetJLDWS()
{
return GetXLXSBJPZXX(100860000).GetJLDWS();
}
/// <summary>
/// 判断是否显示产品目录
/// </summary>
/// <returns></returns>
public static bool ExistXSCPML()
{
return GetXLXSBJPZXX(100860000).ExistXSCPML();
}
/// <summary>
/// 判断是否显示工艺卡号
/// </summary>
/// <returns></returns>
public static bool ExistGYKH()
{
return GetXLXSBJPZXX(100860000).ExistGYKH();
}
/// <summary>
/// 获取销售员报价申请模块附件上传格式
/// </summary>
/// <returns></returns>
public static string GetAttDocFilter()
{
return GetXLXSBJPZXX(100860061).GetAttDocFilter();
}
/// <summary>
/// 获取线缆销售报价单报价上浮调价方式
/// </summary>
/// <returns></returns>
public static string GetBJSFTJFS()
{
return GetXLXSBJPZXX(100860000).GetBJSFTJFS();
}
/// <summary>
/// 获取线缆销售报价单报价下浮调价方式
/// </summary>
/// <returns></returns>
public static string GetBJXFTJFS()
{
return GetXLXSBJPZXX(100860000).GetBJXFTJFS();
}
public static string GetBMYSLIST(int iPZMDID)
{
return GetXLXSBJPZXX(iPZMDID).GetBMYSLIST();
}
public static string GetDefaultXLBZID()
{
return GetXLXSBJPZXX(100860000).GetDefaultXLBZID();
}
public static string GetPLTJKXX()
{
return GetXLXSBJPZXX(100860000).GetPLTJKXX();
}
/// <summary>
/// 判断价格表是否调价不需要更换价格目录
/// </summary>
/// <returns></returns>
public static bool IFTJBXYBGJGML(string sJGBID)
{
bool bTJBXYBGJGML = false;
string sTJBXYGHJGMLTJYS = "";
string sTJYS = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" select XLXSJGB_TJYS from XLXSJGB where XLXSJGB_JGBID =:pJGBID and XLXSJGB_MXBH = 'JGB' ");
SQL.ParamByName("pJGBID").Value = sJGBID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
sTJYS = ds.Tables[0].Rows[0]["XLXSJGB_TJYS"].ToString().Trim();
}
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860018);
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_TJBXYGHJGML))
sTJBXYGHJGMLTJYS = pzxx.XLXSBJPZ_TJBXYGHJGML;
if (!sTJBXYGHJGMLTJYS.Equals("") && sTJBXYGHJGMLTJYS.Contains(sTJYS))
{
bTJBXYBGJGML = true;
}
return bTJBXYBGJGML;
}
public static string GetCPLJGS()
{
//出厂价价格表扩充产品料价公式
string sCPLJGS = "1";
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860018);
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_YSCPCLCBGS1))
sCPLJGS = pzxx.XLXSBJPZ_YSCPCLCBGS1;
return sCPLJGS;
}
public static bool ExistedSYJGBMX(string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sJGBID, ref int iSYXH, ref double dYSJDZ, ref double dCLCBYSJDZ)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBMX_SYXH,XLXSJGBMX_YSJDZ,XLXSJGBMX_CLCBYSJDZ ");
sql.Add("from XLXSJGBMX ");
sql.Add("where XLXSJGBMX_XLXHID=:pXLXHID and XLXSJGBMX_XLGGID=:pXLGGID and XLXSJGBMX_XLBZID=:pXLBZID and XLXSJGBMX_DYDJID=:pDYDJID and XLXSJGBMX_JGBID=:pJGBID ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
sql.ParamByName("pJGBID").Value = sJGBID;
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
iSYXH = CMISproConvert.StrToInt(ds.Tables[0].Rows[0]["XLXSJGBMX_SYXH"].ToString().Trim());
dYSJDZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_YSJDZ"].ToString().Trim());
dCLCBYSJDZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSJGBMX_CLCBYSJDZ"].ToString().Trim());
if (dYSJDZ == 0)
dYSJDZ = 1;
if (dCLCBYSJDZ == 0)
dCLCBYSJDZ = 1;
}
if (iSYXH == 0)
return false;
return true;
}
public static void GetJGBMXBySYXH(string sJGBID, int iSYXH, ref string sXLXHID, ref string sXLGGID, ref string sXLBZID, ref string sDYDJID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Add("select XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID,XLXSJGBMX_DYDJID ");
sql.Add("from XLXSJGBMX ");
sql.Add("where XLXSJGBMX_JGBID=:pJGBID and XLXSJGBMX_XH=:pXH ");
sql.ParamByName("pXH").Value = iSYXH;
sql.ParamByName("pJGBID").Value = sJGBID;
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
sXLXHID = ds.Tables[0].Rows[0]["XLXSJGBMX_XLXHID"].ToString().Trim();
sXLGGID = ds.Tables[0].Rows[0]["XLXSJGBMX_XLGGID"].ToString().Trim();
sXLBZID = ds.Tables[0].Rows[0]["XLXSJGBMX_XLBZID"].ToString().Trim();
sDYDJID = ds.Tables[0].Rows[0]["XLXSJGBMX_DYDJID"].ToString().Trim();
}
}
private static TZYZXX GetYZXXObject(DataRow row)
{
TZYZXX yzxx = new TZYZXX();
yzxx.XLXSTZYZ_ABJCPJYYZZ = row["XLXSTZYZ_ABJCPJYYZZ"].ToString().Trim();
yzxx.XLXSTZYZ_BCYTJ = row["XLXSTZYZ_BCYTJ"].ToString().Trim();
yzxx.XLXSTZYZ_BJCLID = row["XLXSTZYZ_BJCLID"].ToString().Trim();
yzxx.XLXSTZYZ_FGQCP = row["XLXSTZYZ_FGQCP"].ToString().Trim();
yzxx.XLXSTZYZ_HCBZ = row["XLXSTZYZ_HCBZ"].ToString().Trim();
yzxx.XLXSTZYZ_JGBID = row["XLXSTZYZ_JGBID"].ToString().Trim();
yzxx.XLXSTZYZ_JJFS = row["XLXSTZYZ_JJFS"].ToString().Trim();
yzxx.XLXSTZYZ_MINC = row["XLXSTZYZ_MINC"].ToString().Trim();
yzxx.XLXSTZYZ_MRTJFW = row["XLXSTZYZ_MRTJFW"].ToString().Trim();
yzxx.XLXSTZYZ_MRZ = row["XLXSTZYZ_MRZ"].ToString().Trim();
yzxx.XLXSTZYZ_MXBH = row["XLXSTZYZ_MXBH"].ToString().Trim();
yzxx.XLXSTZYZ_TJLX = row["XLXSTZYZ_TJLX"].ToString().Trim();
yzxx.XLXSTZYZ_TJMDID = row["XLXSTZYZ_TJMDID"].ToString().Trim();
yzxx.XLXSTZYZ_TJYS = row["XLXSTZYZ_TJYS"].ToString().Trim();
yzxx.XLXSTZYZ_TJYZID = row["XLXSTZYZ_TJYZID"].ToString().Trim();
yzxx.XLXSTZYZ_TYZZYZID = row["XLXSTZYZ_TYZZYZID"].ToString().Trim();
yzxx.XLXSTZYZ_WPIDLIST = row["XLXSTZYZ_WPIDLIST"].ToString().Trim();
yzxx.XLXSTZYZ_XSXH = row["XLXSTZYZ_XSXH"].ToString().Trim();
yzxx.XLXSTZYZ_YZID = row["XLXSTZYZ_YZID"].ToString().Trim();
yzxx.XLXSTZYZ_YZMC = row["XLXSTZYZ_YZMC"].ToString().Trim();
yzxx.XLXSTZYZ_YZZBT = row["XLXSTZYZ_YZZBT"].ToString().Trim();
yzxx.XLXSTZYZ_YZZZD = row["XLXSTZYZ_YZZZD"].ToString().Trim();
yzxx.XLXSTZYZ_ZDWPIDLIST = row["XLXSTZYZ_ZDWPIDLIST"].ToString().Trim();
return yzxx;
}
public static TZYZXX GetYZXXByYZID(string sYZID)
{
TZYZXX yzxx = new TZYZXX();
TZYZCache yzxxCache = new TZYZCache();
if (yzxxCache.CacheEnabled)
{
yzxxCache = (TZYZCache)yzxxCache.GetData(null);
foreach (DataRowView row in yzxxCache.dvXLXSTZYZBy_YZID.FindRows(sYZID))
{
yzxx = GetYZXXObject(row.Row);
}
}
return yzxx;
}
private static JGBYZXX GetJGBYZXXObject(DataRow row)
{
JGBYZXX jgbyzxx = new JGBYZXX();
jgbyzxx.XLXSJGBYZ_JGBID = row["XLXSJGBYZ_JGBID"].ToString().Trim();
jgbyzxx.XLXSJGBYZ_YZID = row["XLXSJGBYZ_YZID"].ToString().Trim();
return jgbyzxx;
}
public static List<JGBYZXX> GetJGBYZXXByJGBID(string sJGBID)
{
List<JGBYZXX> jgbyzxx_List = new List<JGBYZXX>();
JGBYZCache jgbyzxxCache = new JGBYZCache();
if (jgbyzxxCache.CacheEnabled)
{
jgbyzxxCache = (JGBYZCache)jgbyzxxCache.GetData(null);
foreach (DataRowView row in jgbyzxxCache.dvXLXSJGBYZBy_JGBID.FindRows(sJGBID))
{
JGBYZXX jgbyzxx = GetJGBYZXXObject(row.Row);
jgbyzxx_List.Add(jgbyzxx);
}
}
return jgbyzxx_List;
}
public static List<TZYZXX> GetJGBYZOrderByXSXH(string sJGBID)
{
List<TZYZXX> JGBYZXX_List = new List<TZYZXX>();
List<JGBYZXX> jgbYZ = GetJGBYZXXByJGBID(sJGBID);
if (jgbYZ.Count > 0)
{
foreach (JGBYZXX sYZ in jgbYZ)
{
TZYZXX yzxx = GetYZXXByYZID(sYZ.XLXSJGBYZ_YZID);
JGBYZXX_List.Add(yzxx);
}
}
JGBYZXX_List.Sort(new TZYZXXComparer());
return JGBYZXX_List;
}
private static XLXSBJFLYZXX GetBJFLYZXXObject(DataRow row)
{
XLXSBJFLYZXX bjflyzxx = new XLXSBJFLYZXX();
bjflyzxx.XLXSBJFLYZ_BJFLID = row["XLXSBJFLYZ_BJFLID"].ToString().Trim();
bjflyzxx.XLXSBJFLYZ_YZID = row["XLXSBJFLYZ_YZID"].ToString().Trim();
return bjflyzxx;
}
public static List<XLXSBJFLYZXX> GetBJFLYZXXByBJFLID(string sBJFLID)
{
List<XLXSBJFLYZXX> bjflyzxx_List = new List<XLXSBJFLYZXX>();
BJFLYZCache bjflyzxxCache = new BJFLYZCache();
if (bjflyzxxCache.CacheEnabled)
{
bjflyzxxCache = (BJFLYZCache)bjflyzxxCache.GetData(null);
foreach (DataRowView row in bjflyzxxCache.dvXLXSBJFLYZBy_BJFLID.FindRows(sBJFLID))
{
XLXSBJFLYZXX bjflyzxx = GetBJFLYZXXObject(row.Row);
bjflyzxx_List.Add(bjflyzxx);
}
}
return bjflyzxx_List;
}
public static List<TZYZXX> GetBJFLYZOrderByXSXH(string sBJFLID)
{
List<TZYZXX> BJFLYZXX_List = new List<TZYZXX>();
List<XLXSBJFLYZXX> bjflYZ = GetBJFLYZXXByBJFLID(sBJFLID);
if (bjflYZ.Count > 0)
{
foreach (XLXSBJFLYZXX sYZ in bjflYZ)
{
TZYZXX yzxx = GetYZXXByYZID(sYZ.XLXSBJFLYZ_YZID);
BJFLYZXX_List.Add(yzxx);
}
}
BJFLYZXX_List.Sort(new TZYZXXComparer());
return BJFLYZXX_List;
}
public static string GetBJFLSYBZPFYZID(string sBJFLID)
{
List<TZYZXX> BJFLYZXX_List = new List<TZYZXX>();
List<XLXSBJFLYZXX> bjflYZ = GetBJFLYZXXByBJFLID(sBJFLID);
if (bjflYZ.Count > 0)
{
foreach (XLXSBJFLYZXX sYZ in bjflYZ)
{
TZYZXX yzxx = GetYZXXByYZID(sYZ.XLXSBJFLYZ_YZID);
//100860124|按包装长度包装方式调盘费
if (yzxx.XLXSTZYZ_TJMDID.Equals("100860124"))
return yzxx.XLXSTZYZ_YZID.Trim() + "|" + yzxx.XLXSTZYZ_YZMC.Trim();
}
}
return "";
}
public static string GetBJFLSYCPWJPFYZID(string sBJFLID)
{
List<TZYZXX> BJFLYZXX_List = new List<TZYZXX>();
List<XLXSBJFLYZXX> bjflYZ = GetBJFLYZXXByBJFLID(sBJFLID);
if (bjflYZ.Count > 0)
{
foreach (XLXSBJFLYZXX sYZ in bjflYZ)
{
TZYZXX yzxx = GetYZXXByYZID(sYZ.XLXSBJFLYZ_YZID);
//100860162|按产品外径报价数量区间调盘费
if (yzxx.XLXSTZYZ_TJMDID.Equals("100860162"))
return yzxx.XLXSTZYZ_YZID.Trim() + "|" + yzxx.XLXSTZYZ_YZMC.Trim();
}
}
return "";
}
public static string GetBJFLSYYFYZID(string sBJFLID)
{
List<TZYZXX> BJFLYZXX_List = new List<TZYZXX>();
List<XLXSBJFLYZXX> bjflYZ = GetBJFLYZXXByBJFLID(sBJFLID);
if (bjflYZ.Count > 0)
{
foreach (XLXSBJFLYZXX sYZ in bjflYZ)
{
TZYZXX yzxx = GetYZXXByYZID(sYZ.XLXSBJFLYZ_YZID);
//100860071|按产品外径报价数量区间调盘费
if (yzxx.XLXSTZYZ_TJMDID.Equals("100860071"))
return yzxx.XLXSTZYZ_YZID.Trim() + "|" + yzxx.XLXSTZYZ_YZMC.Trim();
}
}
return "";
}
private static JGBMLXX GetJGBMLObject(DataRow row)
{
JGBMLXX jgbxx = new JGBMLXX();
jgbxx.XLXSJGB_BJLY = row["XLXSJGB_BJLY"].ToString().Trim();
jgbxx.XLXSJGB_BZ = row["XLXSJGB_BZ"].ToString().Trim();
jgbxx.XLXSJGB_CPMLID = row["XLXSJGB_CPMLID"].ToString().Trim();
jgbxx.XLXSJGB_JGBID = row["XLXSJGB_JGBID"].ToString().Trim();
jgbxx.XLXSJGB_JGBIDS = row["XLXSJGB_JGBIDS"].ToString().Trim();
jgbxx.XLXSJGB_JGBMC = row["XLXSJGB_JGBMC"].ToString().Trim();
jgbxx.XLXSJGB_JGCIDS = row["XLXSJGB_JGCIDS"].ToString().Trim();
jgbxx.XLXSJGB_JJLY = row["XLXSJGB_JJLY"].ToString().Trim();
jgbxx.XLXSJGB_JSBLFS = row["XLXSJGB_JSBLFS"].ToString().Trim();
jgbxx.XLXSJGB_JSGS = row["XLXSJGB_JSGS"].ToString().Trim();
jgbxx.XLXSJGB_MXBH = row["XLXSJGB_MXBH"].ToString().Trim();
jgbxx.XLXSJGB_TJKSSJ = row["XLXSJGB_TJKSSJ"].ToString().Trim();
jgbxx.XLXSJGB_TJRGH = row["XLXSJGB_TJRGH"].ToString().Trim();
jgbxx.XLXSJGB_TJWCSJ = row["XLXSJGB_TJWCSJ"].ToString().Trim();
jgbxx.XLXSJGB_TJYS = row["XLXSJGB_TJYS"].ToString().Trim();
jgbxx.XLXSJGB_TJZT = row["XLXSJGB_TJZT"].ToString().Trim();
jgbxx.XLXSJGB_WHR = row["XLXSJGB_WHR"].ToString().Trim();
jgbxx.XLXSJGB_WHRID = row["XLXSJGB_WHRID"].ToString().Trim();
jgbxx.XLXSJGB_WHSJ = row["XLXSJGB_WHSJ"].ToString().Trim();
jgbxx.XLXSJGB_XSQYIDS = row["XLXSJGB_XSQYIDS"].ToString().Trim();
jgbxx.XLXSJGB_YXQS = row["XLXSJGB_YXQS"].ToString().Trim();
jgbxx.XLXSJGB_YXQZ = row["XLXSJGB_YXQZ"].ToString().Trim();
jgbxx.XLXSJGB_WSJGJSLY = row["XLXSJGB_WSJGJSLY"].ToString().Trim();
jgbxx.XLXSJGB_ZZSL = row["XLXSJGB_ZZSL"].ToString().Trim();
jgbxx.XLXSJGB_MXPXFS = row["XLXSJGB_MXPXFS"].ToString().Trim();
return jgbxx;
}
public static JGBMLXX GetXLXSJGBXX(string sJGBID, string sMXBH)
{
JGBMLXX jgbxx = new JGBMLXX();
JGBMLCache jgbxxCache = new JGBMLCache();
if (jgbxxCache.CacheEnabled)
{
jgbxxCache = (JGBMLCache)jgbxxCache.GetData(null);
string sKey = sJGBID + "," + sMXBH;
foreach (DataRowView row in jgbxxCache.dvJGBMLBy_IDMX.FindRows(sKey.Split(',')))
{
jgbxx = GetJGBMLObject(row.Row);
}
}
return jgbxx;
}
public static JGBMLXX GetXLXSJGBXXByJGBID(string sJGBID)
{
JGBMLXX jgbxx = new JGBMLXX();
JGBMLCache jgbxxCache = new JGBMLCache();
if (jgbxxCache.CacheEnabled)
{
jgbxxCache = (JGBMLCache)jgbxxCache.GetData(null);
foreach (DataRowView row in jgbxxCache.dvJGBMLBy_JGBID.FindRows(sJGBID))
{
jgbxx = GetJGBMLObject(row.Row);
}
}
return jgbxx;
}
public static List<JGBMLXX> GetXLXSJGBXXList(string sMXBH)
{
List<JGBMLXX> jgbxx_List = new List<JGBMLXX>();
JGBMLCache jgbxxCache = new JGBMLCache();
if (jgbxxCache.CacheEnabled)
{
jgbxxCache = (JGBMLCache)jgbxxCache.GetData(null);
foreach (DataRowView row in jgbxxCache.dvJGBMLBy_MXBH.FindRows(sMXBH))
{
JGBMLXX jgbxx = GetJGBMLObject(row.Row);
jgbxx_List.Add(jgbxx);
}
}
jgbxx_List.Sort(new JGBIDComparer());
return jgbxx_List;
}
public static DataSet GetKZXX()
{
KZXXCache kzxxCache = new KZXXCache();
if (kzxxCache.CacheEnabled)
{
kzxxCache = (KZXXCache)kzxxCache.GetData(null);
return kzxxCache.dsXLXSBJKZXXSZ;
}
return null;
}
//按价单料价加点对照表计算
public static double GetCLQDJDCLCHQ(string sBJDID, string sBJRQ, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, bool BJHS, string sJGBJLDW, string sBJU003)
{
double dBJDHQCLCB = 0;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" select BJDLJXHDZB_CLQDXLXHID,BJDLJXHDZB_DYDJID,BJDLJXHDZB_LJJDZ from BJDLJXHDZB ");
SQL.Add(" where BJDLJXHDZB_BJDXLXHID = :pBJDXLXHID and (isnull(BJDLJXHDZB_DYDJID,' ') = ' ' or isnull(BJDLJXHDZB_DYDJID,' ') = :pDYDJID) order by isnull(BJDLJXHDZB_DYDJID,' ') desc ");
SQL.ParamByName("pBJDXLXHID").Value = sXLXHID;
SQL.ParamByName("pDYDJID").Value = sDYDJID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
string sCLQDXLXHID = ds.Tables[0].Rows[0]["BJDLJXHDZB_CLQDXLXHID"].ToString().Trim();
double dLJJDZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["BJDLJXHDZB_LJJDZ"].ToString().Trim());
Dictionary<string, double> aryBJDHQCLCB = new Dictionary<string, double>();
double dJgIsZero = 1;
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJDCLHQ_BJCLID from XLXSBJDCLHQ where XLXSBJDCLHQ_BJDID='{0}'", sBJDID)))
{
aryBJDHQCLCB = XLBJDUtils.GetCLCB_BJDHQ(sBJDID, sBJRQ, sCLQDXLXHID, sXLGGID, sXLBZID, sDYDJID);
}
else
{
aryBJDHQCLCB = XLBJDUtils.GetCLCB_BJRHQ(sBJRQ, sCLQDXLXHID, sXLGGID, sXLBZID, sDYDJID);
bool JgIsZero = aryBJDHQCLCB["JgIsZero"] == 1 ? true : false;
if (JgIsZero)
dJgIsZero = -1;
}
if (BJHS)
{
dBJDHQCLCB = aryBJDHQCLCB["CLCB"] * dJgIsZero;
}
else
{
dBJDHQCLCB = aryBJDHQCLCB["WSCLCB"] * dJgIsZero;
}
double dBJU003_JGB_JLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJGBJLDW, sBJU003, sCLQDXLXHID, sXLGGID, sXLBZID, sDYDJID);
dBJDHQCLCB = dBJDHQCLCB * dBJU003_JGB_JLDWHSBL * dLJJDZ;
}
return dBJDHQCLCB;
}
/// <summary>
/// 设置数据保留位数
/// </summary>
/// <param name="dSZ"></param>
/// <param name="dBLWS">保留位数,支持为负数</param>
/// <returns></returns>
public static double RoundSZ(double dSZ, int dBLWS)
{
if (dBLWS >= 0)
{
return NumberUtils.RoundX(dSZ, dBLWS);
}
else
{
double BS = Math.Pow(10, -1 * dBLWS);
return NumberUtils.RoundX(dSZ / BS, 0) * BS;
}
}
public static void InsertFKMX(CMISproSession tSession, string sBJDID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
dberp.BeginTrans();
try
{
sql.Clear();
sql.Add(" delete from XLXSBJDFKMX where XLXSBJDFKMX_BJDID=:pBJDID ");
sql.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(sql);
bool ExistsBJCPYS = false;//是否设置了报价产品颜色
if (CMISproDataBase.ExistsRecord("DBERP", "select top 1 XLXSBJCPYS_CPYT from XLXSBJCPYS where 1=1"))
{
ExistsBJCPYS = true;
}
StringBuilder sSQL = new StringBuilder();
sSQL.AppendLine("select XLXSBJDMX_BJDID,XLXSBJDMX_XH,");
sSQL.AppendLine(" case when isnull(XLXSBJDMX_WLID,' ') <> ' ' then XLXSBJDMX_WLID when isnull(c.minWLID,' ') <> ' ' then c.minWLID else a.minWLID end as WLID, :pWHRID ,:pWHR, :pWHSJ ");
sSQL.AppendLine(" from XLXSBJDMX ");
sSQL.AppendLine(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
if (ExistsBJCPYS)
{
sSQL.AppendLine("left join (select XLXSBJXDWL_XLXHID as XLXHID,XLXSBJXDWL_XLGGID as XLGGID,XLXSBJXDWL_XLBZID as XLBZID,XLXSBJXDWL_DYDJID as DYDJID,XLXSBJXDWL_XLYSID as XLYSID,min(XLXSBJXDWL_WLID) as minWLID ");
sSQL.AppendLine(" from XLXSBJXDWL");
sSQL.AppendLine(" where 1=1");
//sSQL.AppendLine(" and isnull(XLXSBJXDWL_TYBZ,' ')<> 'Y' ");
sSQL.AppendLine(" and exists(select 1 from WL where WL_WLID=XLXSBJXDWL_WLID and isnull(WL_TYBZ,' ')<>'Y')");
sSQL.AppendLine(" group by XLXSBJXDWL_XLXHID,XLXSBJXDWL_XLGGID,XLXSBJXDWL_XLBZID,XLXSBJXDWL_DYDJID,XLXSBJXDWL_XLYSID");
sSQL.AppendLine(" ) c on c.XLXHID=XLXSBJDMX_XDXLXHID and c.XLGGID= XLXSBJXLGGTHB_XLGGIDCH and c.XLBZID=XLXSBJDMX_XDXLBZID and c.DYDJID=XLXSBJDMX_DYDJID and c.XLYSID=XLXSBJDMX_XLYSID ");
sSQL.AppendLine("left join (select XSBJXHTH_BJXLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID,XLXLB_XLYSID as XLYSID,minWLID ");
sSQL.AppendLine(" from ( ");
sSQL.AppendLine(" select XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,XLXLB_XLYSID,min(XLXLB_WLID)as minWLID ");
sSQL.AppendLine(" from XLXLB ");
sSQL.AppendLine(" where 1=1 ");
sSQL.AppendLine(" and isnull(XLXLB_TYBZ,' ')<> 'Y' ");
sSQL.AppendLine(" and exists(select 1 from WL where WL_WLID=XLXLB_WLID and isnull(WL_TYBZ,' ')<>'Y')");
sSQL.AppendLine(" and exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID)");
sSQL.AppendLine(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,XLXLB_XLYSID");
sSQL.AppendLine(" ) tmpXL left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID ");
sSQL.AppendLine(" union all");
sSQL.AppendLine(" select XLXLB_XLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID,XLXLB_XLYSID as XLYSID,min(XLXLB_WLID)as minWLID ");
sSQL.AppendLine(" from XLXLB ");
sSQL.AppendLine(" where isnull(XLXLB_TYBZ,' ')<>'Y' ");
sSQL.AppendLine(" and exists(select 1 from WL where WL_WLID=XLXLB_WLID and isnull(WL_TYBZ,' ')<>'Y') ");
sSQL.AppendLine(" and not exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID ) ");
sSQL.AppendLine(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,XLXLB_XLYSID ");
sSQL.AppendLine(" ) a on a.XLXHID=XLXSBJDMX_XDXLXHID and a.XLGGID= XLXSBJXLGGTHB_XLGGIDCH and a.XLBZID=XLXSBJDMX_XDXLBZID and a.DYDJID=XLXSBJDMX_DYDJID and a.XLYSID=XLXSBJDMX_XLYSID ");
}
else
{
sSQL.AppendLine("left join (select XLXSBJXDWL_XLXHID as XLXHID,XLXSBJXDWL_XLGGID as XLGGID,XLXSBJXDWL_XLBZID as XLBZID,XLXSBJXDWL_DYDJID as DYDJID,min(XLXSBJXDWL_WLID) as minWLID ");
sSQL.AppendLine(" from XLXSBJXDWL");
sSQL.AppendLine(" where 1=1");
//sSQL.AppendLine(" and isnull(XLXSBJXDWL_TYBZ,' ')<> 'Y' ");
sSQL.AppendLine(" and exists(select 1 from WL where WL_WLID=XLXSBJXDWL_WLID and isnull(WL_TYBZ,' ')<>'Y')");
sSQL.AppendLine(" group by XLXSBJXDWL_XLXHID,XLXSBJXDWL_XLGGID,XLXSBJXDWL_XLBZID,XLXSBJXDWL_DYDJID");
sSQL.AppendLine(" ) c on c.XLXHID=XLXSBJDMX_XDXLXHID and c.XLGGID= XLXSBJXLGGTHB_XLGGIDCH and c.XLBZID=XLXSBJDMX_XDXLBZID and c.DYDJID=XLXSBJDMX_DYDJID ");
sSQL.AppendLine("left join (select XSBJXHTH_BJXLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID, minWLID ");
sSQL.AppendLine(" from ( ");
sSQL.AppendLine(" select XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,min(XLXLB_WLID)as minWLID ");
sSQL.AppendLine(" from XLXLB ");
sSQL.AppendLine(" where 1=1 ");
sSQL.AppendLine(" and isnull(XLXLB_TYBZ,' ')<> 'Y' ");
sSQL.AppendLine(" and exists(select 1 from WL where WL_WLID=XLXLB_WLID and isnull(WL_TYBZ,' ')<>'Y')");
sSQL.AppendLine(" and exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID )");
sSQL.AppendLine(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID ");
sSQL.AppendLine(" ) tmpXL left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID ");
sSQL.AppendLine(" union all ");
sSQL.AppendLine(" select XLXLB_XLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID,min(XLXLB_WLID)as minWLID ");
sSQL.AppendLine(" from XLXLB ");
sSQL.AppendLine(" where isnull(XLXLB_TYBZ,' ')<>'Y' ");
sSQL.AppendLine(" and exists(select 1 from WL where WL_WLID=XLXLB_WLID and isnull(WL_TYBZ,' ')<>'Y') ");
sSQL.AppendLine(" and not exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID ) ");
sSQL.AppendLine(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID ");
sSQL.AppendLine(" ) a on a.XLXHID=XLXSBJDMX_XDXLXHID and a.XLGGID= XLXSBJXLGGTHB_XLGGIDCH and a.XLBZID=XLXSBJDMX_XDXLBZID and a.DYDJID=XLXSBJDMX_DYDJID ");
}
sSQL.AppendLine(" where XLXSBJDMX_BJDID=:pBJDID and isnull(XLXSBJDMX_WLID,' ') =' ' and (isnull(XLXSBJDMX_ZB,' ') = 'Y' or isnull(XLXSBJDMX_ZB,' ') = 'P') ");
sql.Clear();
sql.Add("insert into XLXSBJDFKMX(XLXSBJDFKMX_BJDID,XLXSBJDFKMX_XH,XLXSBJDFKMX_WLID,XLXSBJDFKMX_WHRID,XLXSBJDFKMX_WHR,XLXSBJDFKMX_WHSJ)");
sql.Add(sSQL.ToString());
sql.ParamByName("pBJDID").Value = sBJDID;
sql.ParamByName("pWHRID").Value = tSession.UserId;
sql.ParamByName("pWHR").Value = tSession.UserName;
sql.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(sql);
dberp.CommitTrans();
}
catch
{
dberp.RollbackTrans();
}
}
public static string RemoveTrailingAsterisks(string input)
{
if (input.EndsWith("(**)"))
{
return input.Substring(0, input.Length - 4);
}
else if (input.EndsWith("(*)"))
{
return input.Substring(0, input.Length - 3);
}
return input;
}
public static string GetXLBZByXLBZMS(string sXLBZMS)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" select XLBZ_XLBZID,XLBZ_XLBZLXMC FROM XLBZ WHERE XLBZ_XLBZMS=:pBZMS ");
sql.ParamByName("pBZMS").Value = RemoveTrailingAsterisks(sXLBZMS);
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0]["XLBZ_XLBZID"].ToString().Trim() + "|" + ds.Tables[0].Rows[0]["XLBZ_XLBZID"].ToString().Trim()
+ "|" + ds.Tables[0].Rows[0]["XLBZ_XLBZLXMC"].ToString().Trim();
}
return "";
}
//批量修改截面比公式
public static void UpdateJMBGS(string sBJDID, string sBJDXHList,string sJMBGS)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" update XLXSBJDMX set XLXSBJDMX_JMBGS=:pJMBGS ");
sql.Add(" where XLXSBJDMX_BJDID=:pBJDID ");
if (!sBJDXHList.Equals(""))
{
sql.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
sql.ParamByName("pJMBGS").Value = sJMBGS.Trim();
sql.ParamByName("pBJDID").Value = sBJDID.Trim();
dberp.ExecSQL(sql);
}
public static bool ISExistJGBMX(string sJGBID, string sJGCIDS, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
bool bExist = false;
if (IsJGEJGB(sJGBID))
return true;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" select 1 from XLXSJGBMX ");
if (!sJGCIDS.Trim().Equals(""))//组合产品目录价格表报价
SQL.Add(" left join XLXSJGB on XLXSJGB_MXBH='JGC' and XLXSJGB_JGBID=XLXSJGBMX_JGBID");
else
{
SQL.Add(" left join XLXSJGB on XLXSJGB_MXBH='JGB' and XLXSJGB_JGBID=XLXSJGBMX_JGBID");
}
SQL.Add(" where XLXSJGBMX_XLXHID=:pXLXHID and XLXSJGBMX_XLGGID=:pXLGGID and XLXSJGBMX_XLBZID=:pXLBZID and isnull(XLXSJGBMX_DYDJID,' ')=:pDYDJID ");
if (!sJGCIDS.Trim().Equals(""))//组合产品目录价格表报价
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGCIDS.Trim()));
else
{
SQL.Add(" and XLXSJGBMX_JGBID = :pJGBID ");
SQL.ParamByName("pJGBID").Value = sJGBID.Trim();
}
SQL.ParamByName("pXLXHID").Value = sXLXHID.Trim();
SQL.ParamByName("pXLGGID").Value = sXLGGID.Trim();
SQL.ParamByName("pXLBZID").Value = sXLBZID.Trim();
SQL.ParamByName("pDYDJID").Value = sDYDJID.Trim();
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
bExist = true;
}
return bExist;
}
private static bool ContainsAny(string input, string[] patterns)
{
foreach (string pattern in patterns)
{
if (input.Contains(pattern))
{
return true;
}
}
return false;
}
public static double GetCPFYL(string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, List<XLTZ> XLTZList)
{
string sGYFLM = string.Empty;
string sDTLX = string.Empty;
string sXLTXID = string.Empty;
string sKZWH = string.Empty;
bool isTXFH = false;
bool isTXFL = false;
double fZXJM = 0;
bool ExistsNL = false;
Dictionary<string, string> dicXLGGB = GetXXJGIDByXLGGID(sXLGGID, sXLXHID);
fZXJM = CMISproConvert.StrToFloat(dicXLGGB["ZXJM"]);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
DataSet ds = null;
if (SystemInfoUtils.GetSystem().Id.Trim().Equals("0574000503") || SystemInfoUtils.GetSystem().Id.Trim().Equals("0574000504"))//0574000503|宁波东方正式系统,0574000504|宁波东方测试系统
{
sql.Clear();
sql.Add("select XLXSCPML_CPMLMC from XLXSBJXHML left join XLXSCPML on XLXSCPML_CPMLID=XLXSBJXHML_CPMLID where XLXSBJXHML_XLXHID=:XLXSBJXHML_XLXHID and XLXSBJXHML_DYDJID=:XLXSBJXHML_DYDJID ");
sql.ParamByName("XLXSBJXHML_XLXHID").Value = sXLXHID;
sql.ParamByName("XLXSBJXHML_DYDJID").Value = sDYDJID;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
if (CableCodeDict.ContainsKey(ds.Tables[0].Rows[0]["XLXSCPML_CPMLMC"].ToString().Trim()))
sGYFLM = CableCodeDict[ds.Tables[0].Rows[0]["XLXSCPML_CPMLMC"].ToString().Trim()];
}
else
{
sql.Clear();
sql.Add("select XLXSCPML_CPMLMC from XLXSBJXHML left join XLXSCPML on XLXSCPML_CPMLID=XLXSBJXHML_CPMLID where XLXSBJXHML_XLXHID=:XLXSBJXHML_XLXHID and XLXSBJXHML_DYDJID=:XLXSBJXHML_DYDJID ");
sql.ParamByName("XLXSBJXHML_XLXHID").Value = "--";
sql.ParamByName("XLXSBJXHML_DYDJID").Value = sDYDJID;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
if (CableCodeDict.ContainsKey(ds.Tables[0].Rows[0]["XLXSCPML_CPMLMC"].ToString().Trim()))
sGYFLM = CableCodeDict[ds.Tables[0].Rows[0]["XLXSCPML_CPMLMC"].ToString().Trim()];
}
}
}
else
{
sql.Clear();
sql.Add("select XLGYFL_XTGYFLBM from XLJGCZBML left join XLGYFL on XLJGCZBML_GYFLBM=XLGYFL_GYFLBM where exists(select 1 from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID and XLXSCLQD_JGCZBID=XLJGCZBML_JGCZBID and XLXSCLQD_JGCZBBBID=XLJGCZBML_JGCZBBBID )");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
sGYFLM = ds.Tables[0].Rows[0]["XLGYFL_XTGYFLBM"].ToString().Trim();
}
}
if (string.IsNullOrEmpty(sGYFLM))
{
return 0;
}
sql.Clear();
sql.Add("select XLXHB_DTCLID,XLXHB_XLTXID,rtrim(XLXHB_KZCLID)||XLXHB_WHCLID as KZWH from XLXHB where XLXHB_XLXHID=:pXLXHID ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
sDTLX = ds.Tables[0].Rows[0]["XLXHB_DTCLID"].ToString().Trim();
if (sDTLX == "LH")
sDTLX = "L";
sXLTXID = ds.Tables[0].Rows[0]["XLXHB_XLTXID"].ToString().Trim();
sKZWH = ds.Tables[0].Rows[0]["KZWH"].ToString().Trim();
}
if (sDTLX != "T" && sDTLX != "L")
{
return 0;
}
sql.Clear();
sql.Add("select 1 from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID ");
sql.Add(" and exists(select 1 from XLJGCZBLM where XLJGCZBLM_JGCZBID=XLXSCLQD_JGCZBID and XLJGCZBLM_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLJGCZBLM_BJCLID='N-2' ) ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
ExistsNL = true;
sql.Clear();
sql.Add("select 1 from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID ");
sql.Add(" and exists(select 1 from XLXHGGGXB where XLXHGGGXB_JGCZBID=XLXSCLQD_JGCZBID and XLXHGGGXB_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXHGGGXB_JGCZBXH=XLXSCLQD_JGCZBXH and XLXHGGGXB_DRHH=XLXSCLQD_DRHH and XLXHGGGXB_BZGXID='3-50-03' ) ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
isTXFH = true;
sql.Clear();
sql.Add("select 1 from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID ");
sql.Add(" and exists(select 1 from XLXHGGGXB where XLXHGGGXB_JGCZBID=XLXSCLQD_JGCZBID and XLXHGGGXB_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXHGGGXB_JGCZBXH=XLXSCLQD_JGCZBXH and XLXHGGGXB_DRHH=XLXSCLQD_DRHH and XLXHGGGXB_BZGXID='3-50-04' ) ");
sql.ParamByName("pXLXHID").Value = sXLXHID;
sql.ParamByName("pXLGGID").Value = sXLGGID;
sql.ParamByName("pXLBZID").Value = sXLBZID;
sql.ParamByName("pDYDJID").Value = sDYDJID;
ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
isTXFL = true;
sql.Clear();
sql.Add("select XLXSBJDYZZI_YZZ,XLXSBJDYZZI_YZID,XLXSTZYZ_JJFS,XLXSBJDYZZI_XHBHZF1,XLXSBJDYZZI_XHBHZF2,XLXSBJDYZZI_XHBBHZF from XLXSBJDYZZI,XLXSTZYZ");
sql.Add(" where XLXSTZYZ_JGBID=XLXSBJDYZZI_JGBID and XLXSTZYZ_YZID=XLXSBJDYZZI_YZID and XLXSTZYZ_MXBH='BJD'");
sql.Add(" and XLXSBJDYZZI_GYFLBM =:pGYFLBM ");
sql.Add(" and XLXSBJDYZZI_DTLX =:pDTLX ");
sql.Add(" and XLXSBJDYZZI_DYDJID =:pDYDJID ");
sql.Add(" and XLXSBJDYZZI_ZXJMXX<=:pZXJM and ((XLXSBJDYZZI_ZXJMSX<>0 and XLXSBJDYZZI_ZXJMSX>=:pZXJM) or XLXSBJDYZZI_ZXJMSX=0)");
sql.Add(" order by XLXSBJDYZZI_YZID");
sql.ParamByName("pGYFLBM").Value = sGYFLM;
sql.ParamByName("pDTLX").Value = sDTLX;
sql.ParamByName("pDYDJID").Value = sDYDJID;
sql.ParamByName("pZXJM").Value = fZXJM;
ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sXHBHZF1 = ds.Tables[0].Rows[i]["XLXSBJDYZZI_XHBHZF1"].ToString();
string sXHBHZF2 = ds.Tables[0].Rows[i]["XLXSBJDYZZI_XHBHZF2"].ToString();
string sXHBBHZF = ds.Tables[0].Rows[i]["XLXSBJDYZZI_XHBBHZF"].ToString();
if (!string.IsNullOrEmpty(sXHBHZF1))
{
if (!ContainsAny(sXLXHID, sXHBHZF1.Split(',')))
{
continue;
}
}
if (!string.IsNullOrEmpty(sXHBHZF2))
{
if (!ContainsAny(sXLXHID, sXHBHZF2.Split(',')))
{
continue;
}
}
if (!string.IsNullOrEmpty(sXHBBHZF))
{
if (ContainsAny(sXLXHID, sXHBBHZF.Split(',')))
{
continue;
}
}
double dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLXSBJDYZZI_YZZ"].ToString());
double dYZZ_or = dYZZ;
foreach (XLTZ tz in XLTZList)
{
if (!string.IsNullOrEmpty(tz.XHBBH))
{
if (ContainsAny(sXLXHID, tz.XHBBH.Split(',')))
{
continue;
}
}
if (tz.GYFLBM.Equals(sGYFLM))
{
if (tz.TZLX == "线缆特性")
{
if ((sXLTXID + "-").Contains(tz.TZ))
dYZZ += tz.YZZ;
}
else if (tz.TZLX == "铠装外护")
{
if (tz.TZ == sKZWH)
dYZZ += tz.YZZ;
}
else if (tz.TZLX == "标准工序")
{
if (tz.TZ == "3-50-03" && isTXFH)
dYZZ += tz.YZZ;
if (tz.TZ == "3-50-04" && isTXFL)
dYZZ += tz.YZZ;
}
else if (tz.TZLX == "报价材料")
{
if (tz.TZ == "N-2" && ExistsNL)
dYZZ += tz.YZZ;
}
}
}
if (dYZZ == dYZZ_or)
{
foreach (XLTZ tz in XLTZList)
{
if (!string.IsNullOrEmpty(tz.XHBBH))
{
if (ContainsAny(sXLXHID, tz.XHBBH.Split(',')))
{
continue;
}
}
if (tz.GYFLBM.Equals(""))
{
if (tz.TZLX == "线缆特性")
{
if ((sXLTXID + "-").Contains(tz.TZ ))
dYZZ += tz.YZZ;
}
else if (tz.TZLX == "铠装外护")
{
if (tz.TZ == sKZWH)
dYZZ += tz.YZZ;
}
else if (tz.TZLX == "标准工序")
{
if (tz.TZ == "3-50-03" && isTXFH)
dYZZ += tz.YZZ;
if (tz.TZ == "3-50-04" && isTXFL)
dYZZ += tz.YZZ;
}
else if (tz.TZLX == "报价材料")
{
if (tz.TZ == "N-2" && ExistsNL)
dYZZ += tz.YZZ;
}
}
}
}
return dYZZ;
}
return 0;
}
/// <summary>
/// 检查是否使用XLXSBJXLGGTHB表
/// </summary>
/// <returns>如果配置项UseXLXSBJXLGGTHB为Y则返回true,否则返回false</returns>
public static bool UseXLXSBJXLGGTHB()
{
bool bUseXLXSBJXLGGTHB = false;
if (ConfigurationManager.AppSettings["UseXLXSBJXLGGTHB"] != null)
{
bUseXLXSBJXLGGTHB = ConfigurationManager.AppSettings["UseXLXSBJXLGGTHB"].ToString().ToUpper() == "Y";
}
return bUseXLXSBJXLGGTHB;
}
/// <summary>
/// 按XLXSJGBMX表同步XLXSBJXLGGTHB表(批量)
/// 使用merge语句进行批量同步
/// </summary>
/// <param name="dberp">数据库对象</param>
/// <param name="tSession">会话对象</param>
public static void SyncXLXSBJXLGGTHB_ByXLXSJGBMX_Batch(TDatabase dberp, CMISproSession tSession, string sJGBID)
{
TSQL sql = new TSQL(dberp);
// 同步数据
sql.Clear();
sql.Add("merge into XLXSBJXLGGTHB tag");
sql.Add("using(");
sql.Add("select distinct XLXSJGBMX_XLGGID as XLGGID from XLXSJGBMX");
sql.Add("where XLXSJGBMX_JGBID=:pJGBID and isnull(XLXSJGBMX_XLGGID, ' ') <> ' '");
sql.Add(") sor");
sql.Add("on(sor.XLGGID = tag.XLXSBJXLGGTHB_XLGGID)");
sql.Add("when not matched then");
sql.Add("insert(XLXSBJXLGGTHB_XLGGID,XLXSBJXLGGTHB_WHR,XLXSBJXLGGTHB_WHRID,XLXSBJXLGGTHB_WHSJ)");
sql.Add("values(sor.XLGGID,:XLXSBJXLGGTHB_WHR,:XLXSBJXLGGTHB_WHRID,:XLXSBJXLGGTHB_WHSJ)");
sql.ParamByName("pJGBID").Value = sJGBID;
sql.ParamByName("XLXSBJXLGGTHB_WHR").Value = tSession != null ? tSession.UserName : "";
sql.ParamByName("XLXSBJXLGGTHB_WHRID").Value = tSession != null ? tSession.UserId : "";
sql.ParamByName("XLXSBJXLGGTHB_WHSJ").Value = DateTime.Now;
dberp.ExecSQL(sql);
// 更新XLXSBJXLGGTHB_XLGGIDCH和XLXSBJXLGGTHB_XLGGIDXH
sql.Clear();
sql.Add("update XLXSBJXLGGTHB");
sql.Add("set XLXSBJXLGGTHB_XLGGIDCH = replace(XLXSBJXLGGTHB_XLGGID, '*', '×'),");
sql.Add(" XLXSBJXLGGTHB_XLGGIDXH = replace(XLXSBJXLGGTHB_XLGGID, '×', '*')");
sql.Add("where isnull(XLXSBJXLGGTHB_XLGGIDCH, ' ') = ' '");
dberp.ExecSQL(sql);
}
public static void SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(TDatabase dberp, CMISproSession tSession, string sBJDID)
{
SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, sBJDID, "", 0);
}
public static void SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(TDatabase dberp, CMISproSession tSession, string sBJDID, string sBJDXHList,int minBJDXH)
{
TSQL sql = new TSQL(dberp);
// 同步数据
sql.Clear();
sql.Add("merge into XLXSBJXLGGTHB tag");
sql.Add("using(");
sql.Add("select distinct XLXSBJDMX_XLGGID as XLGGID from XLXSBJDMX");
sql.Add("where XLXSBJDMX_BJDID=:pBJDID and isnull(XLXSBJDMX_XLGGID, ' ') <> ' '");
if (!sBJDXHList.Equals(""))
{
sql.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
}
if (minBJDXH != 0)
{
sql.Add("and XLXSBJDMX_XH >= :minBJDXH");
sql.ParamByName("minBJDXH").Value = minBJDXH;
}
sql.Add(") sor");
sql.Add("on(sor.XLGGID = tag.XLXSBJXLGGTHB_XLGGID)");
sql.Add("when not matched then");
sql.Add("insert(XLXSBJXLGGTHB_XLGGID,XLXSBJXLGGTHB_WHR,XLXSBJXLGGTHB_WHRID,XLXSBJXLGGTHB_WHSJ)");
sql.Add("values(sor.XLGGID,:XLXSBJXLGGTHB_WHR,:XLXSBJXLGGTHB_WHRID,:XLXSBJXLGGTHB_WHSJ)");
sql.ParamByName("pBJDID").Value = sBJDID;
sql.ParamByName("XLXSBJXLGGTHB_WHR").Value = tSession != null ? tSession.UserName : "";
sql.ParamByName("XLXSBJXLGGTHB_WHRID").Value = tSession != null ? tSession.UserId : "";
sql.ParamByName("XLXSBJXLGGTHB_WHSJ").Value = DateTime.Now;
dberp.ExecSQL(sql);
// 更新XLXSBJXLGGTHB_XLGGIDCH和XLXSBJXLGGTHB_XLGGIDXH
sql.Clear();
sql.Add("update XLXSBJXLGGTHB");
sql.Add("set XLXSBJXLGGTHB_XLGGIDCH = replace(XLXSBJXLGGTHB_XLGGID, '*', '×'),");
sql.Add(" XLXSBJXLGGTHB_XLGGIDXH = replace(XLXSBJXLGGTHB_XLGGID, '×', '*')");
sql.Add("where isnull(XLXSBJXLGGTHB_XLGGIDCH, ' ') = ' '");
dberp.ExecSQL(sql);
}
public static bool GetBJDHSBZ(string sBJDID)
{
if (sBJDID.Equals(""))
{
return true;
}
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSBJD_JZBJHS from XLXSBJD where XLXSBJD_BJDID = :pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID.Trim();
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0]["XLXSBJD_JZBJHS"].ToString().Trim().Equals("Y");
}
return false;
}
//获取调价因素为" "的报价因子值
public static Dictionary<string, double> GetBJDYZZ0(string sBJFLID, bool bWGCP, bool bWGCPBZChanged, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
return GetBJDYZZ0(sBJFLID, bWGCP, bWGCPBZChanged, sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID, "");
}
//获取调价因素为“1|付款方式”的报价因子值
public static Dictionary<string, double> GetBJDYZZ1(string sBJFLID, string sPJLX, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
return GetBJDYZZ1( sBJFLID, sPJLX, sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID,"");
}
//获取调价因素为“2|导体材料&电压区间&报价数量区间”的报价因子值
public static Dictionary<string, double> GetBJDYZZ2(string sBJFLID, string sDYDJID, double fBJSL, string sXLXHID, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID)
{
return GetBJDYZZ2( sBJFLID, sDYDJID, fBJSL, sXLXHID, sBJDJLDW, sBJU003, sXLGGID, sXLBZID,"");
}
//获取调价因素为“3|产品用途&电压等级分类&报价数量区间”的报价因子值
public static Dictionary<string, double> GetBJDYZZ3(string sBJFLID, double fBJSL, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDJLDW, string sBJU003)
{
return GetBJDYZZ3( sBJFLID, fBJSL, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sBJDJLDW, sBJU003,"");
}
//获取调价因素为“E|型号&电压等级&主芯截面范围&报价数量区间”的报价因子值
public static Dictionary<string, double> GetBJDYZZE(string sBJFLID, string sXLXHID, string sDYDJID, double fZXJM, double fBJSL, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID)
{
return GetBJDYZZE(sBJFLID, sXLXHID, sDYDJID, fZXJM, fBJSL, sBJDJLDW, sBJU003, sXLGGID, sXLBZID, "");
}
//获取调价因素为“G|按电压芯线结构导体材料主芯截面报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZG(string sBJFLID, string sXLXHID, string sDYDJID, string sXXJGID, double fZXJM, double fBJSL, string sBJDJLDW, string sBJU003)
{
return GetBJDYZZG( sBJFLID, sXLXHID, sDYDJID, sXXJGID, fZXJM, fBJSL, sBJDJLDW, sBJU003,"");
}
//获取调价因素为“F|电压等级&芯线结构&报价数量区间加价/报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZF(string sBJFLID, string sDYDJID, string sXXJGID, double fBJSL, string sBJDJLDW, string sBJU003)
{
return GetBJDYZZF(sBJFLID, " ", sDYDJID, sXXJGID, fBJSL, sBJDJLDW, sBJU003);
}
//获取调价因素为“F|导体材料&电压等级&芯线结构&报价数量区间加价/报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZF(string sBJFLID, string sXLXHID, string sDYDJID, string sXXJGID, double fBJSL, string sBJDJLDW, string sBJU003)
{
return GetBJDYZZF( sBJFLID, sXLXHID, sDYDJID, sXXJGID, fBJSL, sBJDJLDW, sBJU003,"");
}
//获取调价因素为“H|型号&主芯截面范围&报价数量区间加价/报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZH(string sBJFLID, string sXLXHID, string sDYDJID, string sXLYSID, double fZXJM, double fBJSL, string sBJDJLDW, string sBJU003)
{
return GetBJDYZZH( sBJFLID, sXLXHID, sDYDJID, sXLYSID, fZXJM, fBJSL, sBJDJLDW, sBJU003,"");
}
//获取调价因素为“4|型号”的报价因子值
public static Dictionary<string, double> GetBJDYZZ4(string sBJFLID, string sXLXHID, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID, string sDYDJID)
{
return GetBJDYZZ4( sBJFLID, sXLXHID, sBJDJLDW, sBJU003, sXLGGID, sXLBZID, sDYDJID,"");
}
//获取调价因素为“5|销售区域&型号&标准&电压等级&主芯截面范围”的报价因子值
public static Dictionary<string, double> GetBJDYZZ5(string sBJFLID, string sXSQYID, string sXLXHID, string sXLBZID, string sDYDJID, double fZXJM, string sBJDJLDW, string sBJU003, string sXLGGID)
{
return GetBJDYZZ5( sBJFLID, sXSQYID, sXLXHID, sXLBZID, sDYDJID, fZXJM, sBJDJLDW, sBJU003, sXLGGID,"");
}
//获取调价因素为“6|报价数量区间调价米数/报价数量”的报价因子值
public static Dictionary<string, double> GetBJDYZZ6(string sBJFLID, double fBJSL, string sBJDJLDW, string sBJU003)
{
return GetBJDYZZ6( sBJFLID, fBJSL, sBJDJLDW, sBJU003,"");
}
//获取调价因素为“7|型号&电压等级&芯线结构&主芯截面范围”的报价因子值
public static Dictionary<string, double> GetBJDYZZ7(string sBJFLID, string sXLXHID, string sDYDJID, string sXXJGID, double fZXJM, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID)
{
return GetBJDYZZ7( sBJFLID, sXLXHID, sDYDJID, sXXJGID, fZXJM, sBJDJLDW, sBJU003, sXLGGID, sXLBZID,"");
}
//获取调价因素为“8|付款期限”的报价因子值
public static Dictionary<string, double> GetBJDYZZ8(string sBJFLID, string sFKQXNR, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
return GetBJDYZZ8( sBJFLID, sFKQXNR, sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID,"");
}
//获取调价因素为“9|导体材料&产品用途&电压等级分类&产品特性”的报价因子值
public static Dictionary<string, double> GetBJDYZZ9(string sBJFLID, string sXLXHID, string sDYDJID, string sBJDJLDW, string sBJU003, string sXLGGID, string sXLBZID)
{
return GetBJDYZZ9( sBJFLID, sXLXHID, sDYDJID, sBJDJLDW, sBJU003, sXLGGID, sXLBZID,"");
}
//获取调价因素为“A|型号&规格&电压&标准”的报价因子值
public static Dictionary<string, double> GetBJDYZZA(string sBJFLID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDJLDW, string sBJU003)
{
return GetBJDYZZA( sBJFLID, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sBJDJLDW, sBJU003,"");
}
//获取调价因素为“B|销售单位”的报价因子值
public static Dictionary<string, double> GetBJDYZZB(string sBJFLID, string sSYDWID, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
return GetBJDYZZB( sBJFLID, sSYDWID, sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID,"");
}
//获取调价因素为“D|颜色&主芯截面范围”的报价因子值
public static Dictionary<string, double> GetBJDYZZD(string sBJFLID, string sXLYSID, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
return GetBJDYZZD( sBJFLID, sXLYSID, sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID,"");
}
//获取调价因素为“K|导体类型电压等级/材料重量”的报价因子值
public static Dictionary<string, double> GetBJDYZZK(string sBJFLID, double fBJSL, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID)
{
return GetBJDYZZK( sBJFLID, fBJSL, sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sXLBZID, sDYDJID,"");
}
//获取调价因素为“L|按标准&报价数量区间调报价”的报价因子值
public static Dictionary<string, double> GetBJDYZZL(string sBJFLID, string sXLBZID, double fBJSL, string sBJDJLDW, string sBJU003, string sXLXHID, string sXLGGID, string sDYDJID)
{
return GetBJDYZZL(sBJFLID, sXLBZID, fBJSL, sBJDJLDW, sBJU003, sXLXHID, sXLGGID, sDYDJID, "");
}
//获取调价模块为“100860124|按包装长度包装方式调盘费”的报价因子值
public static Dictionary<string, double> GetBJDBZPFYZZ(string sBZPFYZID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDJLDW, string sBJU003)
{
return GetBJDBZPFYZZ( sBZPFYZID, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sBJDJLDW, sBJU003, "");
}
//获取调价模块为“100860162|按产品外径报价数量区间调盘费”的报价因子值
public static Dictionary<string, double> GetBJDCPWJPFYZZ(string sCPWJPFYZID, string sXLXHID, string sXLGGID, string sXLBZID, string sDYDJID, string sBJDJLDW, string sBJU003,double fBJSL)
{
return GetBJDCPWJPFYZZ(sCPWJPFYZID, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sBJDJLDW, sBJU003, "", fBJSL);
}
// 10进制转换成36进制
public static string int10Convert36(int i)
{
string str = "";
while (i > 35)
{
int j = i % 36;
str += ((j <= 9) ? Convert.ToChar(j + '0') : Convert.ToChar(j - 10 + 'A'));
i = i / 36;
}
str += ((i <= 9) ? Convert.ToChar(i + '0') : Convert.ToChar(i - 10 + 'A'));
Char[] c = str.ToCharArray();
Array.Reverse(c);
return new string(c);
}
}
public class TZYZXXComparer : IComparer<TZYZXX>
{
public int Compare(TZYZXX x, TZYZXX y)
{
double xXH = CMISproConvert.StrToFloat(x.XLXSTZYZ_XSXH,0);
double yXH = CMISproConvert.StrToFloat(y.XLXSTZYZ_XSXH, 0);
if (xXH == yXH)
return x.XLXSTZYZ_YZID.CompareTo(y.XLXSTZYZ_YZID);
return xXH.CompareTo(yXH);
}
}
public class JGBIDComparer : IComparer<JGBMLXX>
{
public int Compare(JGBMLXX x, JGBMLXX y)
{
return x.XLXSJGB_JGBID.CompareTo(y.XLXSJGB_JGBID);
}
}
public class XLTZ
{
private string _GYFLBM = string.Empty;
public string GYFLBM
{
get { return _GYFLBM; }
set { _GYFLBM = value; }
}
private string _TZLX = string.Empty;
public string TZLX
{
get { return _TZLX; }
set { _TZLX = value; }
}
private string _TZ = string.Empty;
public string TZ
{
get { return _TZ; }
set { _TZ = value; }
}
private string _XHBBH = string.Empty;
public string XHBBH
{
get { return _XHBBH; }
set { _XHBBH = value; }
}
private double _YZZ = 0;
public double YZZ
{
get { return _YZZ; }
set { _YZZ = value; }
}
}
}