Files
N_XLXSBJ----MX/XLWBBJDUtils.cs
T
2026-08-21 17:03:02 +08:00

1850 lines
97 KiB
C#
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_MISPRO.Data;
using GThinking.N_MISPRO;
using System.Collections.Generic;
using GThinking.N_MISPRO.Utility;
namespace GThinking.N_XLXSBJ
{
public class XLWBBJDUtils
{
public static string sTSDYDJIDList = ",AC10KV,";//字母统一大写
//报价产品解析时,进行电压等级替换
public static Dictionary<string, string> GetDYDJTH()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLWBBJDDYDZB_WBDYDJID,XLWBBJDDYDZB_DYDJID from XLWBBJDDYDZB order by LEN(XLWBBJDDYDZB_WBDYDJID) DESC ");
DataSet dsXLDYDJ = dberp.OpenDataSet(SQL);
if (dsXLDYDJ.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsXLDYDJ.Tables[0].Rows.Count; i++)
{
dic.Add(dsXLDYDJ.Tables[0].Rows[i]["XLWBBJDDYDZB_WBDYDJID"].ToString().ToUpper().Trim(), dsXLDYDJ.Tables[0].Rows[i]["XLWBBJDDYDZB_DYDJID"].ToString().Trim());
}
}
return dic;
}
/// <summary>
/// 统一使用年度+6位流水号编码
/// </summary>
/// <param name="sExcel"></param>
/// <returns></returns>
public static string GetNewWBBJDID()
{
return CMISproDataBase.GetYWBHByN("DBERP", "XLWBBJDML", "XLWBBJDML_WBBJDID", 6);
}
private static string[] GetWBBJDDRYZPZList()
{
string sYZList = XLBJDUtils.GetXLXSBJPZXX(100860043).XLXSBJPZ_WBBJDDRYZ.Trim();
if (sYZList.Equals(""))
return new string[0];
return sYZList.Split(',');
}
public static string[] GetWBBJDDRYZList()
{
return GetWBBJDDRYZPZList();
}
/// <summary>
/// 报价单ID为空时不加载因子;不为空时返回配置因子与报价分类因子的交集(保持配置顺序)
/// </summary>
public static string[] GetWBBJDDRYZList(string sBJDID)
{
if (sBJDID.Trim().Equals(""))
return new string[0];
string[] arrPZ = GetWBBJDDRYZPZList();
if (arrPZ.Length == 0)
return new string[0];
string sBJFLID = XLBJDUtils.GetBJFLXXByBJDID(sBJDID).XLXSBJFL_BJFLID.Trim();
if (sBJFLID.Equals(""))
return new string[0];
Dictionary<string, bool> dicBJFLYZ = GetBJFLYZDict(sBJFLID);
if (dicBJFLYZ.Count == 0)
return new string[0];
List<string> arrResult = new List<string>();
foreach (string sYZ in arrPZ)
{
string sYZID = sYZ.Trim();
if (!sYZID.Equals("") && dicBJFLYZ.ContainsKey(sYZID))
arrResult.Add(sYZID);
}
return arrResult.ToArray();
}
private static Dictionary<string, bool> GetBJFLYZDict(string sBJFLID)
{
Dictionary<string, bool> dic = new Dictionary<string, bool>();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Add("select XLXSBJFLYZ_YZID from XLXSBJFLYZ where XLXSBJFLYZ_BJFLID=:pBJFLID");
SQL.ParamByName("pBJFLID").Value = sBJFLID.Trim();
DataSet ds = dberp.OpenDataSet(SQL);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sYZID = ds.Tables[0].Rows[i]["XLXSBJFLYZ_YZID"].ToString().Trim();
if (!sYZID.Equals("") && !dic.ContainsKey(sYZID))
dic.Add(sYZID, true);
}
return dic;
}
/// <summary>
/// 因子栏目在XLWBBJDLM_ZDLMLX中的标记,使用小写字母a-z(最多20个)
/// </summary>
public static string GetWBBJDYZZLMKey(int iIndex)
{
return ((char)('a' + iIndex)).ToString();
}
public static bool IsWBBJDYZZLM(string sKey)
{
return sKey.Length == 1 && sKey[0] >= 'a' && sKey[0] <= 'z';
}
public static int GetWBBJDYZZIndexByLMKey(string sKey)
{
if (!IsWBBJDYZZLM(sKey))
return -1;
return sKey[0] - 'a';
}
public static bool IsWBBJDMXYZZField(string sField)
{
if (!sField.StartsWith("XLWBBJDMXYZZ_YZZ") || sField.Length != 18)
return false;
int iIdx = 0;
return int.TryParse(sField.Substring(16), out iIdx) && iIdx >= 1 && iIdx <= 20;
}
public static Dictionary<string, string> GetWBBJDYZZGDLM()
{
return GetWBBJDYZZGDLM("");
}
/// <summary>
/// 报价单ID为空时不加载因子栏目;不为空时加载配置因子与报价分类因子的交集
/// </summary>
public static Dictionary<string, string> GetWBBJDYZZGDLM(string sBJDID)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
if (sBJDID.Trim().Equals(""))
return dic;
string[] arrPZ = GetWBBJDDRYZPZList();
if (arrPZ.Length == 0)
return dic;
string sBJFLID = XLBJDUtils.GetBJFLXXByBJDID(sBJDID).XLXSBJFL_BJFLID.Trim();
if (sBJFLID.Equals(""))
return dic;
Dictionary<string, bool> dicBJFLYZ = GetBJFLYZDict(sBJFLID);
if (dicBJFLYZ.Count == 0)
return dic;
List<string> arrIntersect = new List<string>();
for (int i = 0; i < arrPZ.Length && i < 20; i++)
{
string sYZID = arrPZ[i].Trim();
if (!sYZID.Equals("") && dicBJFLYZ.ContainsKey(sYZID))
arrIntersect.Add(sYZID);
}
if (arrIntersect.Count == 0)
return dic;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Add("select XLXSTZYZ_YZID, XLXSTZYZ_YZMC from XLXSTZYZ ");
SQL.Add(" where XLXSTZYZ_MXBH='BJD' and " + CMISproDataBase.GetWhereEqual("XLXSTZYZ_YZID", string.Join(",", arrIntersect.ToArray())));
SQL.Add(" order by XLXSTZYZ_YZID ");
DataSet ds = dberp.OpenDataSet(SQL);
Dictionary<string, string> dicYZMC = new Dictionary<string, string>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dicYZMC.Add(ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim(), ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim());
}
for (int i = 0; i < arrPZ.Length && i < 20; i++)
{
string sYZID = arrPZ[i].Trim();
if (!sYZID.Equals("") && dicBJFLYZ.ContainsKey(sYZID) && dicYZMC.ContainsKey(sYZID))
dic.Add(GetWBBJDYZZLMKey(i), dicYZMC[sYZID]);
}
return dic;
}
public static void InsXLWBBJDMXYZZ(TDatabase dberp, TSQL SQL, string sWBBJDID, string sXLBJDID)
{
string[] arrYZ = GetWBBJDDRYZList();
if (arrYZ.Length == 0)
return;
int iYZCount = arrYZ.Length > 20 ? 20 : arrYZ.Length;
Dictionary<int, string> dicLMIndex = new Dictionary<int, string>();
SQL.Clear();
SQL.Add("select XLWBBJDLM_ZDLMLX, XLWBBJDLM_LMBH from XLWBBJDLM ");
SQL.Add(" where XLWBBJDLM_WBBJDID=:pWBBJDID and XLWBBJDLM_BJDID=:pBJDID ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
DataSet dsLM = dberp.OpenDataSet(SQL);
bool bHasYZLM = false;
for (int i = 0; i < dsLM.Tables[0].Rows.Count; i++)
{
string sZDLMLX = dsLM.Tables[0].Rows[i]["XLWBBJDLM_ZDLMLX"].ToString().Trim();
if (IsWBBJDYZZLM(sZDLMLX))
{
int iIdx = GetWBBJDYZZIndexByLMKey(sZDLMLX);
if (iIdx >= 0 && iIdx < iYZCount)
{
dicLMIndex[iIdx] = dsLM.Tables[0].Rows[i]["XLWBBJDLM_LMBH"].ToString().Trim();
bHasYZLM = true;
}
}
}
if (!bHasYZLM)
return;
SQL.Clear();
SQL.Add("delete from XLWBBJDMXYZZ where XLWBBJDMXYZZ_WBBJDID=:pWBBJDID and XLWBBJDMXYZZ_BJDID=:pBJDID");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("select XLWBBJDNR_DRHH");
for (int i = 0; i < iYZCount; i++)
{
if (dicLMIndex.ContainsKey(i))
SQL.Add(string.Format(",isnull(rtrim(XLWBBJDNR_LMNR{0}),0.0) as YZZ{1}", dicLMIndex[i], (i + 1).ToString().PadLeft(2, '0')));
else
SQL.Add(string.Format(",0.0 as YZZ{0}", (i + 1).ToString().PadLeft(2, '0')));
}
SQL.Add(" from XLWBBJDNR where XLWBBJDNR_WBBJDID=:pWBBJDID and XLWBBJDNR_BJDID=:pBJDID order by XLWBBJDNR_DRHH");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
DataSet dsNR = dberp.OpenDataSet(SQL);
SQL.Clear();
SQL.Add("insert into XLWBBJDMXYZZ(XLWBBJDMXYZZ_WBBJDID,XLWBBJDMXYZZ_DRHH,XLWBBJDMXYZZ_BJDID");
for (int i = 1; i <= 20; i++)
SQL.Add(string.Format(",XLWBBJDMXYZZ_YZZ{0}", i.ToString().PadLeft(2, '0')));
SQL.Add(") values(:pWBBJDID,:pDRHH,:pBJDID");
for (int i = 1; i <= 20; i++)
SQL.Add(string.Format(",:pYZZ{0}", i.ToString().PadLeft(2, '0')));
SQL.Add(")");
for (int i = 0; i < dsNR.Tables[0].Rows.Count; i++)
{
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pDRHH").Value = dsNR.Tables[0].Rows[i]["XLWBBJDNR_DRHH"];
SQL.ParamByName("pBJDID").Value = sXLBJDID;
for (int j = 1; j <= 20; j++)
{
string sCol = "YZZ" + j.ToString().PadLeft(2, '0');
if (j <= iYZCount && dsNR.Tables[0].Columns.Contains(sCol))
SQL.ParamByName("pYZZ" + j.ToString().PadLeft(2, '0')).Value = CMISproConvert.StrToFloat(dsNR.Tables[0].Rows[i][sCol].ToString().Trim());
else
SQL.ParamByName("pYZZ" + j.ToString().PadLeft(2, '0')).Value = 0.0;
}
dberp.ExecSQL(SQL);
}
}
public static void CopyWBBJDYZZToBJDYZZ0(TDatabase dberp, TSQL SQL, string sBJDID, string sWBBJDID, string sSELBJDID)
{
if (sBJDID.Trim().Equals(""))
return;
string[] arrPZ = GetWBBJDDRYZPZList();
if (arrPZ.Length == 0)
return;
string[] arrYZ = GetWBBJDDRYZList(sBJDID);
if (arrYZ.Length == 0)
return;
int iYZCount = arrPZ.Length > 20 ? 20 : arrPZ.Length;
Dictionary<string, bool> dicIntersect = new Dictionary<string, bool>();
foreach (string sYZ in arrYZ)
{
string sYZID = sYZ.Trim();
if (!sYZID.Equals("") && !dicIntersect.ContainsKey(sYZID))
dicIntersect.Add(sYZID, true);
}
SQL.Clear();
SQL.Add("select XLWBBJDMXYZZ_WBBJDID,XLWBBJDMXYZZ_DRHH,XLWBBJDMXYZZ_BJDID ");
SQL.Add(" ,XLWBBJDMXYZZ_YZZ01,XLWBBJDMXYZZ_YZZ02,XLWBBJDMXYZZ_YZZ03,XLWBBJDMXYZZ_YZZ04,XLWBBJDMXYZZ_YZZ05 ");
SQL.Add(" ,XLWBBJDMXYZZ_YZZ06,XLWBBJDMXYZZ_YZZ07,XLWBBJDMXYZZ_YZZ08,XLWBBJDMXYZZ_YZZ09,XLWBBJDMXYZZ_YZZ10 ");
SQL.Add(" ,XLWBBJDMXYZZ_YZZ11,XLWBBJDMXYZZ_YZZ12,XLWBBJDMXYZZ_YZZ13,XLWBBJDMXYZZ_YZZ14,XLWBBJDMXYZZ_YZZ15 ");
SQL.Add(" ,XLWBBJDMXYZZ_YZZ16,XLWBBJDMXYZZ_YZZ17,XLWBBJDMXYZZ_YZZ18,XLWBBJDMXYZZ_YZZ19,XLWBBJDMXYZZ_YZZ20 ");
SQL.Add(" ,XLXSBJDMX_XH as BJMXH from XLWBBJDMXYZZ ");
SQL.Add(" left join XLXSBJDMX on XLXSBJDMX_WBBJDID=XLWBBJDMXYZZ_WBBJDID ");
SQL.Add(" and XLXSBJDMX_DRHH=XLWBBJDMXYZZ_DRHH and XLXSBJDMX_BJDID=:pBJDID ");
SQL.Add(" where XLWBBJDMXYZZ_WBBJDID=:pWBBJDID and XLWBBJDMXYZZ_BJDID=:pSELBJDID ");
SQL.Add(" order by XLWBBJDMXYZZ_DRHH ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pSELBJDID").Value = sSELBJDID;
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count == 0)
return;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
int iXH = CMISproConvert.StrToInt(ds.Tables[0].Rows[i]["BJMXH"].ToString().Trim());
if (iXH <= 0)
continue;
SQL.Clear();
SQL.Add("update XLXSBJDYZZ0 set ");
bool bFirst = true;
for (int j = 0; j < iYZCount; j++)
{
string sYZID = arrPZ[j].Trim();
if (!dicIntersect.ContainsKey(sYZID))
continue;
string sCol = string.Format("XLWBBJDMXYZZ_YZZ{0}", (j + 1).ToString().PadLeft(2, '0'));
string sYZZField = string.Format("XLXSBJDYZZ0_YZZ{0}", sYZID.Replace("BJ", ""));
double fVal = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i][sCol].ToString().Trim());
if (bFirst)
{
SQL.Add(string.Format("{0}={1}", sYZZField, fVal));
bFirst = false;
}
else
SQL.Add(string.Format(",{0}={1}", sYZZField, fVal));
}
if (bFirst)
continue;
SQL.Add(" where XLXSBJDYZZ0_BJDID=:pBJDID and XLXSBJDYZZ0_XH=:pXH ");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pXH").Value = iXH;
dberp.ExecSQL(SQL);
}
}
public static bool DeleteXLWBBJD(string sWBBJDID, string sXLBJDID, out string sErrorMsg)
{
sErrorMsg = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
try
{
dberp.BeginTrans();
SQL.Clear();
SQL.Add("delete from XLWBBJDML ");
SQL.Add(" where XLWBBJDML_WBBJDID=:pWBBJDID and XLWBBJDML_BJDID=:pBJDID ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLWBBJDLM ");
SQL.Add(" where XLWBBJDLM_WBBJDID=:pWBBJDID and XLWBBJDLM_BJDID=:pBJDID ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLWBBJDNR ");
SQL.Add(" where XLWBBJDNR_WBBJDID=:pWBBJDID and XLWBBJDNR_BJDID=:pBJDID ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLWBBJDMX ");
SQL.Add(" where XLWBBJDMX_WBBJDID=:pWBBJDID and XLWBBJDMX_BJDID=:pBJDID ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLWBBJDMXYZZ ");
SQL.Add(" where XLWBBJDMXYZZ_WBBJDID=:pWBBJDID and XLWBBJDMXYZZ_BJDID=:pBJDID ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
dberp.ExecSQL(SQL);
dberp.CommitTrans();
return true;
}
catch (Exception ex)
{
sErrorMsg = "删除失败!" + ex;
dberp.RollbackTrans();
return false;
}
}
public static void InsXLWBBJDMX(TDatabase dberp, TSQL SQL, string sWBBJDID, string sXLBJDID, CMISproSession tSession, ref string sErrMsg)
{
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860000);
XLXSBJPZXX pzxx43 = XLBJDUtils.GetXLXSBJPZXX(100860043);
string sKHMCPPFS = "";
if (pzxx.XLXSBJPZ_KHJSLY.Equals("KHXX") && pzxx.XLXSBJPZ_XZKHYQ.Equals("Q"))
{
sKHMCPPFS = "1";
}
else if (pzxx.XLXSBJPZ_KHJSLY.Equals("KH") && pzxx.XLXSBJPZ_XZKHYQ.Equals("Q"))
{
sKHMCPPFS = "2";
}
string sBJSJLY = "";
string sXLJGU007 = tSession.GetOption(102579000, "XLJGU007");
string sBJU028 = tSession.GetOption(100860043, "BJU028");
string sDefaultXLBZID = XLBJDUtils.GetDefaultXLBZID();
if (sDefaultXLBZID.Equals(""))
sDefaultXLBZID = " ";
Dictionary<string, string> dicXLBZID = new Dictionary<string, string>();
dicXLBZID.Clear();
SQL.Clear();
SQL.Add("select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ where 1 = 1 ");
DataSet dsXLBZID = dberp.OpenDataSet(SQL);
if (dsXLBZID.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsXLBZID.Tables[0].Rows.Count; i++)
{
dicXLBZID.Add(dsXLBZID.Tables[0].Rows[i]["XLBZ_XLBZID"].ToString().Trim(), dsXLBZID.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim());
}
}
Dictionary<string, string> dicXLYS = new Dictionary<string, string>();
dicXLYS.Clear();
SQL.Clear();
SQL.Add("select XLYSB_XLYSID,XLYSB_XLYSMC from XLYSB where 1=1");
DataSet dsXLYS = dberp.OpenDataSet(SQL);
if (dsXLYS.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsXLYS.Tables[0].Rows.Count; i++)
{
dicXLYS.Add(dsXLYS.Tables[0].Rows[i]["XLYSB_XLYSID"].ToString().Trim(), dsXLYS.Tables[0].Rows[i]["XLYSB_XLYSMC"].ToString().Trim());
}
}
int iNRHHS = 0;
int iNRHHZ = 0;
string sKHMC = "";
Dictionary<string, string> dicLM = new Dictionary<string, string>();
dicLM.Clear();
SQL.Clear();
SQL.Add(" select XLWBBJDLM_ZDLMLX,XLWBBJDLM_LMBH,XLWBBJDML_NRHHS,XLWBBJDML_NRHHZ,XLWBBJDML_SJLY,XLXSBJD_KH ");
SQL.Add(" from XLWBBJDLM ");
SQL.Add(" left join XLWBBJDML on XLWBBJDML_WBBJDID = XLWBBJDLM_WBBJDID and XLWBBJDML_BJDID = XLWBBJDLM_BJDID ");
SQL.Add(" left join XLXSBJD on XLWBBJDLM_BJDID = XLXSBJD_BJDID ");
SQL.Add(" where 1=1 ");
SQL.Add(" and XLWBBJDLM_WBBJDID=:pWBBJDID and XLWBBJDLM_BJDID=:pXLBJDID ");
SQL.Add(" order by XLWBBJDLM_ZDLMLX ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pXLBJDID").Value = sXLBJDID;
DataSet dsLM = dberp.OpenDataSet(SQL);
if (dsLM.Tables[0].Rows.Count > 0)
{
iNRHHS = CMISproConvert.StrToInt(dsLM.Tables[0].Rows[0]["XLWBBJDML_NRHHS"].ToString());
iNRHHZ = CMISproConvert.StrToInt(dsLM.Tables[0].Rows[0]["XLWBBJDML_NRHHZ"].ToString());
sBJSJLY = dsLM.Tables[0].Rows[0]["XLWBBJDML_SJLY"].ToString();
sKHMC = dsLM.Tables[0].Rows[0]["XLXSBJD_KH"].ToString();
for (int i = 0; i < dsLM.Tables[0].Rows.Count; i++)
{
if (!dsLM.Tables[0].Rows[i]["XLWBBJDLM_ZDLMLX"].ToString().Trim().Equals(""))
{
dicLM.Add(dsLM.Tables[0].Rows[i]["XLWBBJDLM_ZDLMLX"].ToString().Trim(), dsLM.Tables[0].Rows[i]["XLWBBJDLM_LMBH"].ToString().Trim());
}
}
}
//查询客户ID
string sKHID = "";
SQL.Clear();
if (sKHMCPPFS.Equals("1"))
{
SQL.Add(" select KHXX_YKHID AS KHID ");
SQL.Add(" from KHXX ");
SQL.Add(" where KHXX_MC=:pKHMC ");
SQL.ParamByName("pKHMC").Value = sKHMC;
}
else
{
SQL.Add(" select KH_KHID AS KHID ");
SQL.Add(" from KH ");
SQL.Add(" where KH_MC=:pKHMC ");
SQL.ParamByName("pKHMC").Value = sKHMC;
}
DataSet dsKH = dberp.OpenDataSet(SQL);
if (dsKH.Tables[0].Rows.Count > 0)
sKHID = dsKH.Tables[0].Rows[0][0].ToString().Trim();
if (dicLM.Count == 0)
{
sErrMsg = "请先指定报价单栏目!";
return;
}
try
{
SQL.Clear();
SQL.Add("delete from XLWBBJDMX where 1=1 ");
SQL.Add(" and XLWBBJDMX_WBBJDID=:pWBBJDID and XLWBBJDMX_BJDID=:pXLBJDID ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pXLBJDID").Value = sXLBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("delete from XLWBBJDMXYZZ where 1=1 ");
SQL.Add(" and XLWBBJDMXYZZ_WBBJDID=:pWBBJDID and XLWBBJDMXYZZ_BJDID=:pXLBJDID ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pXLBJDID").Value = sXLBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("insert into XLWBBJDMX(XLWBBJDMX_BJDID,XLWBBJDMX_WBBJDID,XLWBBJDMX_DRHH,");
if (dicLM.ContainsKey("4"))
{
SQL.Add("XLWBBJDMX_JLDW, ");
}
if (dicLM.ContainsKey("5"))
{
SQL.Add("XLWBBJDMX_BJSL, ");
}
if (dicLM.ContainsKey("6"))
{
SQL.Add("XLWBBJDMX_CPBJ, ");
}
if (dicLM.ContainsKey("7"))
{
SQL.Add("XLWBBJDMX_BZ, ");
}
if (dicLM.ContainsKey("A"))
{
SQL.Add("XLWBBJDMX_XLYSID, ");
}
if (dicLM.ContainsKey("B"))
{
SQL.Add("XLWBBJDMX_YXJG, ");
}
if (dicLM.ContainsKey("C"))
{
SQL.Add("XLWBBJDMX_YZ, ");
}
if (dicLM.ContainsKey("D"))
{
SQL.Add("XLWBBJDMX_YSCP, ");
}
if (dicLM.ContainsKey("E"))
{
SQL.Add("XLWBBJDMX_FBH, ");
}
if (dicLM.ContainsKey("F"))
{
SQL.Add("XLWBBJDMX_WGCPBZ, ");
}
if (dicLM.ContainsKey("G"))
{
SQL.Add("XLWBBJDMX_CPBJXJ, ");
}
if (dicLM.ContainsKey("H"))
{
SQL.Add("XLWBBJDMX_BJJEXJ, ");
}
if (dicLM.ContainsKey("I"))
{
SQL.Add("XLWBBJDMX_ZHCPMLMC, ");
}
if (dicLM.ContainsKey("J"))
{
SQL.Add("XLWBBJDMX_CPMLMC, ");
}
if (dicLM.ContainsKey("K"))
{
SQL.Add("XLWBBJDMX_PWQDID, ");
}
if (dicLM.ContainsKey("L"))
{
SQL.Add("XLWBBJDMX_PWQDWLMC, ");
}
if (dicLM.ContainsKey("M"))
{
SQL.Add("XLWBBJDMX_PWQDMS, ");
}
if (dicLM.ContainsKey("N"))
{
SQL.Add("XLWBBJDMX_GWWLBM, ");
}
if (dicLM.ContainsKey("O"))
{
SQL.Add("XLWBBJDMX_JMBGS, ");
}
if (dicLM.ContainsKey("P"))
{
SQL.Add("XLWBBJDMX_LSJGBBJ, ");
}
//报价产品、报价图片、销售合同一致
if (sBJSJLY.Equals("BJCP") || sBJSJLY.Equals("BJTP") || sBJSJLY.Equals("XSHT"))
{
SQL.Add(" XLWBBJDMX_DYDJID,XLWBBJDMX_XLBZID,");
SQL.Add(" XLWBBJDMX_XLXHID,XLWBBJDMX_XLGGID,XLWBBJDMX_BJCP,");
}
else if (sBJSJLY.Equals("BJWL"))//BJWL|报价物料
{
//必须项
SQL.Add("XLWBBJDMX_BJCP,XLWBBJDMX_WLID,XLWBBJDMX_XLXHID,XLWBBJDMX_XLGGID,XLWBBJDMX_XLBZID,XLWBBJDMX_DYDJID,XLWBBJDMX_XLYSID, ");
}
else if (sBJSJLY.Equals("KHWL"))//KHWL|客户物料
{
//必须项
SQL.Add("XLWBBJDMX_BJCP,XLWBBJDMX_KHWLID,XLWBBJDMX_WLID,XLWBBJDMX_XLXHID,XLWBBJDMX_XLGGID,XLWBBJDMX_XLBZID,XLWBBJDMX_DYDJID,XLWBBJDMX_XLYSID, ");
}
SQL.Add(" XLWBBJDMX_WHR,XLWBBJDMX_WHRID,XLWBBJDMX_WHSJ) ");
SQL.Add("select XLWBBJDNR_BJDID,XLWBBJDNR_WBBJDID,XLWBBJDNR_DRHH,");
if (dicLM.ContainsKey("4"))//4|计量单位
{
SQL.Add(string.Format("case when isnull(XLWBBJDNR_LMNR{0},' ')=' ' then ' ' when XLWBBJDNR_LMNR{0} in ('km','KM','Km','kM') then 'Km' when XLWBBJDNR_LMNR{0} in ('m','M') then 'M' when XLWBBJDNR_LMNR{0} in ('kg','KG','Kg','kG') then 'Kg' when XLWBBJDNR_LMNR{0} in ('t','T') then 'T' else XLWBBJDNR_LMNR{0} end as XLWBBJDMX_JLDW,", dicLM["4"]));
}
if (dicLM.ContainsKey("5"))//5|报价数量
{
SQL.Add(string.Format("isnull(rtrim(XLWBBJDNR_LMNR{0}),0.0) as XLWBBJDMX_BJSL,", dicLM["5"]));
}
if (dicLM.ContainsKey("6"))//6|报价
{
SQL.Add(string.Format("isnull(rtrim(XLWBBJDNR_LMNR{0}),0.0) as XLWBBJDMX_CPBJ,", dicLM["6"]));
}
if (dicLM.ContainsKey("7"))//7|备注
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_BZ,", dicLM["7"]));
}
if (dicLM.ContainsKey("A"))//A|颜色
{
//SQL.Add("case when isnull(XLYSB_XLYSID,' ')<>' ' then XLYSB_XLYSID else ' ' end as XLWBBJDMX_XLYSID,");
if (pzxx43.XLXSBJPZ_WBBJDJXYS.Equals("Y"))
{
SQL.Add(" case when isnull(d.XLYSB_XLYSID,' ')<>' ' then d.XLYSB_XLYSID when isnull(e.XLYSB_XLYSID,' ')<>' ' then e.XLYSB_XLYSID when isnull(f.XLYSB_XLYSID,' ')<>' ' then f.XLYSB_XLYSID ");
SQL.Add(" when isnull(g.XLYSB_XLYSID,' ')<>' ' then g.XLYSB_XLYSID when isnull(h.XLYSB_XLYSID,' ')<>' ' then h.XLYSB_XLYSID when isnull(i.XLYSB_XLYSID,' ')<>' ' then i.XLYSB_XLYSID else ' ' end as XLWBBJDMX_XLYSID,");
}
else
SQL.Add("case when isnull(d.XLYSB_XLYSID,' ')<>' ' then d.XLYSB_XLYSID when isnull(e.XLYSB_XLYSID,' ')<>' ' then e.XLYSB_XLYSID when isnull(f.XLYSB_XLYSID,' ')<>' ' then f.XLYSB_XLYSID else ' ' end as XLWBBJDMX_XLYSID,");
}
if (dicLM.ContainsKey("B"))//B|意向价
{
SQL.Add(string.Format("isnull(rtrim(XLWBBJDNR_LMNR{0}),0.0) as XLWBBJDMX_YXJG,", dicLM["B"]));
}
if (dicLM.ContainsKey("C"))//C|印字
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_YZ,", dicLM["C"]));
}
if (dicLM.ContainsKey("D"))//D|原始产品
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_YSCP,", dicLM["D"]));
}
if (dicLM.ContainsKey("E"))//E|包号
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_FBH,", dicLM["E"]));
}
if (dicLM.ContainsKey("F"))//F|外购
{
SQL.Add(string.Format("case XLWBBJDNR_LMNR{0} when '外购' then 'Y' when '是' then 'Y' when 'Y' then 'Y' else 'N' end as XLWBBJDMX_WGCPBZ,", dicLM["F"]));
}
if (dicLM.ContainsKey("G"))//G|产品报价限价
{
SQL.Add(string.Format("isnull(rtrim(XLWBBJDNR_LMNR{0}),0.0) as XLWBBJDMX_CPBJXJ,", dicLM["G"]));
}
if (dicLM.ContainsKey("H"))//H|报价金额限价
{
SQL.Add(string.Format("isnull(rtrim(XLWBBJDNR_LMNR{0}),0.0) as XLWBBJDMX_BJJEXJ,", dicLM["H"]));
}
if (dicLM.ContainsKey("I"))
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_ZHCPMLMC,", dicLM["I"]));
}
if (dicLM.ContainsKey("J"))
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_CPMLMC,", dicLM["J"]));
}
if (dicLM.ContainsKey("K"))
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_PWQDID,", dicLM["K"]));
}
if (dicLM.ContainsKey("L"))
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_PWQDWLMC,", dicLM["L"]));
}
if (dicLM.ContainsKey("M"))
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_PWQDMS,", dicLM["M"]));
}
if (dicLM.ContainsKey("N"))
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_GWWLBM,", dicLM["N"]));
}
if (dicLM.ContainsKey("O"))
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_JMBGS,", dicLM["O"]));
}
if (dicLM.ContainsKey("P"))
{
SQL.Add(string.Format("isnull(rtrim(XLWBBJDNR_LMNR{0}),0.0) as XLWBBJDMX_LSJGBBJ,", dicLM["P"]));
}
//报价产品、报价图片、销售合同一致
if (sBJSJLY.Equals("BJCP") || sBJSJLY.Equals("BJTP") || sBJSJLY.Equals("XSHT"))
{
if (dicLM.ContainsKey("2"))//2|电压等级
{
SQL.Add(string.Format("replace(replace(isnull(XLWBBJDNR_LMNR{0},' '),'K','k'),'v','V') as XLWBBJDMX_DYDJID,", dicLM["2"]));
}
else
{
SQL.Add("' ' as XLWBBJDMX_DYDJID, ");
}
if (dicLM.ContainsKey("3"))//3|标准
{
//SQL.Add(string.Format("case when isnull(XLBZ_XLBZID,' ')<>' ' then XLBZ_XLBZID else '{0}' end as XLWBBJDMX_XLBZID,", (sDefaultXLBZID.Equals("FirstBZ") ? "" : sDefaultXLBZID)));
SQL.Add(string.Format("case when isnull(a.XLBZ_XLBZID,' ')<>' ' then a.XLBZ_XLBZID when isnull(b.XLBZ_XLBZID,' ')<>' ' then b.XLBZ_XLBZID when isnull(c.XLBZ_XLBZID,' ')<>' ' then c.XLBZ_XLBZID else '{0}' end as XLWBBJDMX_XLBZID,", (sDefaultXLBZID.Equals("FirstBZ") ? " " : sDefaultXLBZID)));
}
else
{
SQL.Add(string.Format("'{0}' as XLWBBJDMX_XLBZID, ", (sDefaultXLBZID.Equals("FirstBZ") ? " " : sDefaultXLBZID)));
}
if (dicLM.ContainsKey("8"))//8|型号
{
SQL.Add(string.Format("upper(XLWBBJDNR_LMNR{0}) as XLWBBJDMX_XLXHID,", dicLM["8"]));//型号控制大写
}
else
{
SQL.Add("' ' as XLWBBJDMX_XLXHID, ");
}
if (dicLM.ContainsKey("9"))//9|规格
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_XLGGID,", dicLM["9"]));
}
else
{
SQL.Add("' ' as XLWBBJDMX_XLGGID, ");
}
if (dicLM.ContainsKey("1"))//1|报价产品
{
SQL.Add(string.Format("XLWBBJDNR_LMNR{0} as XLWBBJDMX_BJCP,", dicLM["1"]));
}
else
{
SQL.Add("' ' as XLWBBJDMX_BJCP, ");
}
}
else if (sBJSJLY.Equals("BJWL"))//BJWL|报价物料
{
SQL.Add(" case when (ISNULL(XLXLB_DYDJID,' ') = ' ' or ISNULL(XLXLB_DYDJID,' ') = '--') then rtrim(case when isnull(XSBJXHTH_BJXLXHID,' ') = ' ' then XLXLB_XLXHID else XSBJXHTH_BJXLXHID end)||' '||rtrim(XLXLB_XLGGID) else rtrim(XLXLB_XLXHID)||'-'||rtrim(XLXLB_DYDJID)||' '||rtrim(XLXLB_XLGGID) end as XLWBBJDMX_BJCP,");
SQL.Add("XLWBBJDNR_LMNR01 as XLWBBJDMX_WLID, ");
SQL.Add("isnull(case when isnull(XSBJXHTH_BJXLXHID,' ') = ' ' then XLXLB_XLXHID else XSBJXHTH_BJXLXHID end,' ') as XLWBBJDMX_XLXHID, ");
//A|× B|*
if (sXLJGU007.Equals("B"))
{
SQL.Add("replace(isnull(XLXLB_XLGGID,' '),'×','*') as XLWBBJDMX_XLGGID, ");
}
else
{
SQL.Add("replace(isnull(XLXLB_XLGGID,' '),'*','×') as XLWBBJDMX_XLGGID, ");
}
SQL.Add("isnull(XLXLB_XLBZID,' ') as XLWBBJDMX_XLBZID, ");
SQL.Add("isnull(XLXLB_DYDJID,' ') as XLWBBJDMX_DYDJID, ");
SQL.Add("XLXLB_XLYSID as XLWBBJDMX_XLYSID, ");
}
else if (sBJSJLY.Equals("KHWL"))//KHWL|客户物料
{
SQL.Add(" case when (ISNULL(XLXLB_DYDJID,' ') = ' ' or ISNULL(XLXLB_DYDJID,' ') = '--') then rtrim(case when isnull(XSBJXHTH_BJXLXHID,' ') = ' ' then XLXLB_XLXHID else XSBJXHTH_BJXLXHID end)||' '||rtrim(XLXLB_XLGGID) else rtrim(XLXLB_XLXHID)||'-'||rtrim(XLXLB_DYDJID)||' '||rtrim(XLXLB_XLGGID) end as XLWBBJDMX_BJCP,");
SQL.Add(string.Format(" XLWBBJDNR_LMNR{0},XLXLB_WLID AS XLWBBJDMX_WLID, ",dicLM["Z"]));
SQL.Add("isnull(case when isnull(XSBJXHTH_BJXLXHID,' ') = ' ' then XLXLB_XLXHID else XSBJXHTH_BJXLXHID end,' ') as XLWBBJDMX_XLXHID, ");
//A|× B|*
if (sXLJGU007.Equals("B"))
{
SQL.Add("replace(isnull(XLXLB_XLGGID,' '),'×','*') as XLWBBJDMX_XLGGID, ");
}
else
{
SQL.Add("replace(isnull(XLXLB_XLGGID,' '),'*','×') as XLWBBJDMX_XLGGID, ");
}
SQL.Add("isnull(XLXLB_XLBZID,' ') as XLWBBJDMX_XLBZID, ");
SQL.Add("isnull(XLXLB_DYDJID,' ') as XLWBBJDMX_DYDJID, ");
SQL.Add("XLXLB_XLYSID as XLWBBJDMX_XLYSID, ");
}
SQL.Add(" :XLWBBJDMX_WHR,:XLWBBJDMX_WHRID,:XLWBBJDMX_WHSJ ");
SQL.Add(" from XLWBBJDNR");
if (dicLM.ContainsKey("3"))
{
//SQL.Add(string.Format(" left join XLBZ on (XLBZ_XLBZID=XLWBBJDNR_LMNR{0} or XLBZ_XLBZLXMC=XLWBBJDNR_LMNR{0} or rtrim(XLBZ_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC)=XLWBBJDNR_LMNR{0})", dicLM["3"]));
SQL.Add(string.Format(" left join XLBZ a on a.XLBZ_XLBZID=XLWBBJDNR_LMNR{0}", dicLM["3"]));
SQL.Add(string.Format(" left join XLBZ b on b.XLBZ_XLBZLXMC=XLWBBJDNR_LMNR{0}", dicLM["3"]));
SQL.Add(string.Format(" left join XLBZ c on rtrim(c.XLBZ_XLBZID)||'|'||rtrim(c.XLBZ_XLBZLXMC)=XLWBBJDNR_LMNR{0}", dicLM["3"]));
}
if (dicLM.ContainsKey("A"))
{
//SQL.Add(string.Format(" left join XLYSB on (XLYSB_XLYSID=XLWBBJDNR_LMNR{0} or XLYSB_XLYSMC=XLWBBJDNR_LMNR{0} or rtrim(XLYSB_XLYSID)||'|'||rtrim(XLYSB_XLYSMC)=XLWBBJDNR_LMNR{0})", dicLM["A"]));
SQL.Add(string.Format(" left join XLYSB d on d.XLYSB_XLYSID=XLWBBJDNR_LMNR{0}", dicLM["A"]));
SQL.Add(string.Format(" left join XLYSB e on e.XLYSB_XLYSMC=XLWBBJDNR_LMNR{0}", dicLM["A"]));
SQL.Add(string.Format(" left join XLYSB f on rtrim(f.XLYSB_XLYSID)||'|'||rtrim(f.XLYSB_XLYSMC)=XLWBBJDNR_LMNR{0}", dicLM["A"]));
if (pzxx43.XLXSBJPZ_WBBJDJXYS.Equals("Y"))
{
SQL.Add(string.Format(" left join (select replace(XLYSB_XLYSMC,'色','') as YSMC,XLYSB_XLYSID from XLYSB where XLYSB_XLYSMC like '%色%') g on g.YSMC=XLWBBJDNR_LMNR{0}", dicLM["A"]));
SQL.Add(string.Format(" left join (select '双' as YSMC,XLYSB_XLYSID from XLYSB where XLYSB_XLYSMC = '绿黄' ) h on h.YSMC = replace(XLWBBJDNR_LMNR{0},'色','') ", dicLM["A"]));
SQL.Add(string.Format(" left join (select '双' as YSMC,XLYSB_XLYSID from XLYSB where XLYSB_XLYSMC = '黄绿' ) i on i.YSMC = replace(XLWBBJDNR_LMNR{0},'色','') ", dicLM["A"]));
}
}
if (sBJSJLY.Equals("BJWL"))//BJWL|报价物料
{
SQL.Add(" left join XLXLB on XLXLB_WLID=XLWBBJDNR_LMNR01 ");
SQL.Add(" left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID ");
}
else if (sBJSJLY.Equals("KHWL"))//KHWL|客户物料
{
SQL.Add(string.Format(" left join KHWL ON KHWL_KHID=:pKHID and KHWL_KHWLID=upper(XLWBBJDNR_LMNR{0}) ",dicLM["Z"]));
SQL.Add(" left join XLXLB ON XLXLB_WLID=KHWL_WLID ");
SQL.Add(" left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID ");
SQL.ParamByName("pKHID").Value = sKHID;
}
SQL.Add(" where XLWBBJDNR_WBBJDID=:pWBBJDID and XLWBBJDNR_BJDID=:pXLBJDID ");
SQL.Add(" and XLWBBJDNR_DRHH>=:pNRHHS and XLWBBJDNR_DRHH<=:pNRHHZ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pXLBJDID").Value = sXLBJDID;
SQL.ParamByName("pNRHHS").Value = iNRHHS;
SQL.ParamByName("pNRHHZ").Value = iNRHHZ;
SQL.ParamByName("XLWBBJDMX_WHR").Value = tSession.UserName;
SQL.ParamByName("XLWBBJDMX_WHRID").Value = tSession.UserId;
SQL.ParamByName("XLWBBJDMX_WHSJ").Value = DateTime.Now;
dberp.ExecSQL(SQL);
if (sBJU028 == "Y")
{
SQL.Clear();
SQL.Add(" update XLWBBJDMX set XLWBBJDMX_XLBZID='' where 1=1 ");
SQL.Add(" and XLWBBJDMX_WBBJDID=:pWBBJDID and XLWBBJDMX_BJDID=:pXLBJDID ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pXLBJDID").Value = sXLBJDID;
dberp.ExecSQL(SQL);
}
// XLWBBJDMX导入后,统一同步规格替换表
XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLWBBJDMX_Batch(dberp, tSession, sWBBJDID);
//BJCP|报价产品、BJTP|报价图片
//BJWL|报价物料、XSHT|销售合同
//SQL.Clear();
//SQL.Add("select XLWBBJDNR_WBBJDID,XLWBBJDNR_BJDID,XLWBBJDNR_DRHH, ");
//foreach (KeyValuePair<string, string> kvp in dicLM)
//{
// SQL.Add(String.Format(" XLWBBJDNR_LMNR{0}, ", kvp.Value));
//}
//if (sBJSJLY.Equals("BJWL"))
//{
// SQL.Add(" XLWBBJDNR_LMNR01,XLXLB_XLXHID,XLXLB_XLGGID, ");
// SQL.Add(" XLXLB_XLBZID,XLXLB_DYDJID,XLXLB_XLYSID, ");
//}
//SQL.Add(" 1 as px from XLWBBJDNR ");
//if (sBJSJLY.Equals("BJWL"))
//{
// SQL.Add(" left join XLXLB on XLXLB_WLID=XLWBBJDNR_LMNR01 ");
//}
//SQL.Add(" where XLWBBJDNR_WBBJDID=:pWBBJDID and XLWBBJDNR_BJDID=:pXLBJDID ");
//SQL.Add(" and XLWBBJDNR_DRHH>=:pNRHHS and XLWBBJDNR_DRHH<=:pNRHHZ");
//SQL.Add(" order by XLWBBJDNR_DRHH");
//SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
//SQL.ParamByName("pXLBJDID").Value = sXLBJDID;
//SQL.ParamByName("pNRHHS").Value = iNRHHS;
//SQL.ParamByName("pNRHHZ").Value = iNRHHZ;
//DataSet dsNR = dberp.OpenDataSet(SQL);
//for (int i = 0; i < dsNR.Tables[0].Rows.Count; i++)
//{
// SQL.Clear();
// SQL.Add("insert into XLWBBJDMX( ");
// SQL.Add(" XLWBBJDMX_BJDID,XLWBBJDMX_WBBJDID,XLWBBJDMX_DRHH, ");
// //单独处理字段
// GetSQLAdd(SQL, dicLM, sBJSJLY);
// SQL.Add(" XLWBBJDMX_WHR,XLWBBJDMX_WHRID,XLWBBJDMX_WHSJ ");
// SQL.Add(" ) ");
// SQL.Add(" values(");
// SQL.Add(" :XLWBBJDMX_BJDID,:XLWBBJDMX_WBBJDID,:XLWBBJDMX_DRHH, ");
// //与函数GetSQLAdd相互对应
// GetParamNameAdd(SQL, dicLM, dsNR, i, sBJSJLY, sDefaultXLBZID, dicXLBZID, dicXLYS, tSession, sXLJGU007);
// SQL.Add(" :XLWBBJDMX_WHR,:XLWBBJDMX_WHRID,:XLWBBJDMX_WHSJ ");
// SQL.Add(" ) ");
// SQL.ParamByName("XLWBBJDMX_BJDID").Value = dsNR.Tables[0].Rows[i]["XLWBBJDNR_BJDID"].ToString().Trim();
// SQL.ParamByName("XLWBBJDMX_WBBJDID").Value = dsNR.Tables[0].Rows[i]["XLWBBJDNR_WBBJDID"].ToString().Trim();
// SQL.ParamByName("XLWBBJDMX_DRHH").Value = dsNR.Tables[0].Rows[i]["XLWBBJDNR_DRHH"].ToString().Trim();
// SQL.ParamByName("XLWBBJDMX_WHR").Value = tSession.UserName;
// SQL.ParamByName("XLWBBJDMX_WHRID").Value = tSession.UserId;
// SQL.ParamByName("XLWBBJDMX_WHSJ").Value = DateTime.Now;
// string ss = SQL.Text;
// dberp.ExecSQL(SQL);
//}
InsXLWBBJDMXYZZ(dberp, SQL, sWBBJDID, sXLBJDID);
}
catch (Exception ex)
{
sErrMsg = ex.ToString().Trim();
}
}
public static void UpdateCPMLMC(TDatabase dberp, TSQL SQL, string sWBBJDID, string sXLBJDID, string sDRHHList, int VnewID)
{
SQL.Clear();
SQL.Add(" merge into XLWBBJDMX tar ");
SQL.Add(" using ( ");
SQL.Add(" SELECT XLWBBJDMX_WBBJDID,XLWBBJDMX_BJDID, XLWBBJDMX_DRHH,");
SQL.Add(" isnull(CPMLMC,' ') as CPMLMC,isnull(ZHCPMLMC,' ') as ZHCPMLMC ");
SQL.Add(" from XLWBBJDMX ");
SQL.Add(" left join XLXSBJXHML A on A.XLXSBJXHML_XLXHID = XLWBBJDMX_XLXHID and A.XLXSBJXHML_DYDJID = isnull(XLWBBJDMX_DYDJID, ' ') ");
SQL.Add(" left join XLXSBJXHML B on B.XLXSBJXHML_XLXHID = XLWBBJDMX_XLXHID and B.XLXSBJXHML_DYDJID = ' ' ");
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 XLWBBJDMX_BJDID = :pBJDID ");
SQL.Add(" and XLWBBJDMX_WBBJDID = :pWBBJDID ");
if (!sDRHHList.Equals(""))
{ //研发自测:王威 2025/11/02 21:35:46
SQL.Add(" and exists (select 1 from V_XLWBBJDMX where V_XLWBBJDMX_DRHH=XLWBBJDMX_DRHH and V_XLWBBJDMX_ID=:pNewID)");
SQL.ParamByName("pNewID").Value = VnewID;
}
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" 1=1 ");
SQL.Add(" and sor.XLWBBJDMX_BJDID = tar.XLWBBJDMX_BJDID ");
SQL.Add(" and sor.XLWBBJDMX_WBBJDID = tar.XLWBBJDMX_WBBJDID ");
SQL.Add(" and sor.XLWBBJDMX_DRHH = tar.XLWBBJDMX_DRHH ");
SQL.Add(" and (isnull(tar.XLWBBJDMX_CPMLMC, ' ')= ' ' and isnull(tar.XLWBBJDMX_ZHCPMLMC, ' ')= ' ' ) ");
if (!sDRHHList.Equals(""))
{ //研发自测:王威 2025/11/02 21:35:46
SQL.Add(" and exists (select 1 from V_XLWBBJDMX where V_XLWBBJDMX_DRHH=sor.XLWBBJDMX_DRHH and V_XLWBBJDMX_ID=:pNewID)");
SQL.ParamByName("pNewID").Value = VnewID;
}
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
SQL.Add(" XLWBBJDMX_CPMLMC = sor.CPMLMC, ");
SQL.Add(" XLWBBJDMX_ZHCPMLMC = sor.ZHCPMLMC ");
SQL.ParamByName("pBJDID").Value = sXLBJDID;
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
dberp.ExecSQL(SQL);
}
//private static void GetSQLAdd(TSQL SQL, Dictionary<string, string> dicLM, string sBJSJLY)
//{
// ////1|报价产品、2|电压等级、3|标准、4|计量单位、5|报价数量、6|报价、7|备注、8|型号、9|规格、A|颜色
// #region 通用格式 与GetParamNameAdd一致
// SQL.Add("XLWBBJDMX_DYDJID, ");
// SQL.Add("XLWBBJDMX_XLBZID, ");
// if (dicLM.ContainsKey("4"))
// {
// SQL.Add("XLWBBJDMX_JLDW, ");
// }
// if (dicLM.ContainsKey("5"))
// {
// SQL.Add("XLWBBJDMX_BJSL, ");
// }
// if (dicLM.ContainsKey("6"))
// {
// SQL.Add("XLWBBJDMX_CPBJ, ");
// }
// if (dicLM.ContainsKey("7"))
// {
// SQL.Add("XLWBBJDMX_BZ, ");
// }
// if (dicLM.ContainsKey("A"))
// {
// SQL.Add("XLWBBJDMX_XLYSID, ");
// }
// #endregion
// if (sBJSJLY.Equals("BJCP")
// || sBJSJLY.Equals("BJTP")
// || sBJSJLY.Equals("XSHT"))
// {
// SQL.Add("XLWBBJDMX_XLXHID, ");
// SQL.Add("XLWBBJDMX_XLGGID, ");
// SQL.Add("XLWBBJDMX_BJCP, ");
// }
// else if (sBJSJLY.Equals("BJWL"))
// {
// //必须项
// SQL.Add("XLWBBJDMX_BJCP, ");
// SQL.Add("XLWBBJDMX_WLID, ");
// SQL.Add("XLWBBJDMX_XLXHID, ");
// SQL.Add("XLWBBJDMX_XLGGID, ");
// SQL.Add("XLWBBJDMX_XLBZID, ");
// SQL.Add("XLWBBJDMX_DYDJID, ");
// SQL.Add("XLWBBJDMX_XLYSID, ");
// }
//}
//private static void GetParamNameAdd(TSQL SQL, Dictionary<string, string> dicLM, DataSet dsNR, int i, string sBJSJLY,
// string sDefaultXLBZID, Dictionary<string, string> dicXLBZID, Dictionary<string, string> dicXLYS, CMISproSession tSession, string sXLJGU007)
//{
// ////1|报价产品、2|电压等级、3|标准、4|计量单位、5|报价数量、6|报价、7|备注、8|型号、9|规格、A|颜色
// string sXLXHID = "";
// string sXLGGID = "";
// string sDYDJID = "";
// string sXLYSID = "";
// string sBJCP = "";
// #region 通用格式
// if (dicLM.ContainsKey("2"))
// {
// SQL.Add(":XLWBBJDMX_DYDJID, ");
// if (dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["2"])].ToString().Trim().Equals(""))
// {
// SQL.ParamByName("XLWBBJDMX_DYDJID").Value = " ";
// }
// else
// {
// sDYDJID = XLBJDUtils.GetStaDYDJID(dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["2"])].ToString().Trim());
// SQL.ParamByName("XLWBBJDMX_DYDJID").Value = sDYDJID;
// }
// }
// else
// {
// SQL.Add(":XLWBBJDMX_DYDJID, ");
// SQL.ParamByName("XLWBBJDMX_DYDJID").Value = " ";
// }
// if (dicLM.ContainsKey("3"))
// {
// SQL.Add(":XLWBBJDMX_XLBZID, ");
// SQL.ParamByName("XLWBBJDMX_XLBZID").Value = XLBJDUtils.GetBZXLZBZID(
// dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["3"])].ToString().Trim(),
// sDefaultXLBZID,
// dicXLBZID);
// }
// else
// {
// SQL.Add(":XLWBBJDMX_XLBZID, ");
// SQL.ParamByName("XLWBBJDMX_XLBZID").Value = "";
// }
// if (dicLM.ContainsKey("4"))
// {
// SQL.Add(":XLWBBJDMX_JLDW, ");
// if (dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["4"])].ToString().Trim().Equals(""))
// {
// SQL.ParamByName("XLWBBJDMX_JLDW").Value = tSession.GetOption(100860000, "BJU003");
// }
// else
// {
// SQL.ParamByName("XLWBBJDMX_JLDW").Value = dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["4"])].ToString().Trim();
// }
// }
// if (dicLM.ContainsKey("5"))
// {
// SQL.Add(":XLWBBJDMX_BJSL, ");
// SQL.ParamByName("XLWBBJDMX_BJSL").Value = CMISproConvert.StrToFloat(dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["5"])].ToString().Trim());
// }
// if (dicLM.ContainsKey("6"))
// {
// SQL.Add(":XLWBBJDMX_CPBJ, ");
// SQL.ParamByName("XLWBBJDMX_CPBJ").Value = CMISproConvert.StrToFloat(dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["6"])].ToString().Trim());
// }
// if (dicLM.ContainsKey("7"))
// {
// SQL.Add(":XLWBBJDMX_BZ, ");
// SQL.ParamByName("XLWBBJDMX_BZ").Value = dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["7"])].ToString().Trim();
// }
// if (dicLM.ContainsKey("A"))
// {
// SQL.Add(":XLWBBJDMX_XLYSID, ");
// if (dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["A"])].ToString().Trim().Equals(""))
// {
// SQL.ParamByName("XLWBBJDMX_XLYSID").Value = " ";
// }
// else
// {
// sXLYSID = XLBJDUtils.GetBZXLYSID(dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["A"])].ToString().Trim(), dicXLYS);
// SQL.ParamByName("XLWBBJDMX_XLYSID").Value = sXLYSID;
// }
// }
// #endregion
// //报价产品、报价图片、销售合同一致
// if (sBJSJLY.Equals("BJCP")
// || sBJSJLY.Equals("BJTP")
// || sBJSJLY.Equals("XSHT"))
// {
// if (dicLM.ContainsKey("8"))
// {
// sXLXHID = dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["8"])].ToString().Trim();
// SQL.Add(":XLWBBJDMX_XLXHID, ");
// SQL.ParamByName("XLWBBJDMX_XLXHID").Value = sXLXHID.ToUpper();//型号控制大写
// }
// else
// {
// SQL.Add(":XLWBBJDMX_XLXHID, ");
// SQL.ParamByName("XLWBBJDMX_XLXHID").Value = "";
// }
// if (dicLM.ContainsKey("9"))
// {
// sXLGGID = dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["9"])].ToString().Trim();
// SQL.Add(":XLWBBJDMX_XLGGID, ");
// SQL.ParamByName("XLWBBJDMX_XLGGID").Value = sXLGGID;
// }
// else
// {
// SQL.Add(":XLWBBJDMX_XLGGID, ");
// SQL.ParamByName("XLWBBJDMX_XLGGID").Value = "";
// }
// if (dicLM.ContainsKey("1"))
// {
// SQL.Add(" :XLWBBJDMX_BJCP, ");
// sBJCP = dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR{0}", dicLM["1"])].ToString().Trim();
// SQL.ParamByName("XLWBBJDMX_BJCP").Value = sBJCP;
// }
// else
// {
// SQL.Add(" :XLWBBJDMX_BJCP, ");
// SQL.ParamByName("XLWBBJDMX_BJCP").Value = "";
// }
// }
// else if (sBJSJLY.Equals("BJWL"))
// {
// sXLXHID = dsNR.Tables[0].Rows[i][String.Format("XLXLB_XLXHID")].ToString().Trim();
// sXLGGID = dsNR.Tables[0].Rows[i][String.Format("XLXLB_XLGGID")].ToString().Trim();
// sDYDJID = dsNR.Tables[0].Rows[i][String.Format("XLXLB_DYDJID")].ToString().Trim();
// SQL.Add(":XLWBBJDMX_BJCP, ");
// SQL.ParamByName("XLWBBJDMX_BJCP").Value = XLBJDUtils.GroupBJCPXX(sXLXHID, sXLGGID, sDYDJID);
// SQL.Add(":XLWBBJDMX_WLID, ");
// SQL.ParamByName("XLWBBJDMX_WLID").Value = dsNR.Tables[0].Rows[i][String.Format("XLWBBJDNR_LMNR01")].ToString().Trim();
// SQL.Add(":XLWBBJDMX_XLXHID, ");
// SQL.ParamByName("XLWBBJDMX_XLXHID").Value = sXLXHID.ToUpper();//型号控制大写
// SQL.Add(":XLWBBJDMX_XLGGID, ");
// SQL.ParamByName("XLWBBJDMX_XLGGID").Value = XLBJDUtils.GetStaXLGGID(sXLGGID, sXLJGU007);
// SQL.Add(":XLWBBJDMX_XLBZID, ");
// SQL.ParamByName("XLWBBJDMX_XLBZID").Value = dsNR.Tables[0].Rows[i][String.Format("XLXLB_XLBZID")].ToString().Trim();
// SQL.Add(":XLWBBJDMX_DYDJID, ");
// SQL.ParamByName("XLWBBJDMX_DYDJID").Value = sDYDJID;
// SQL.Add(":XLWBBJDMX_XLYSID, ");
// SQL.ParamByName("XLWBBJDMX_XLYSID").Value = dsNR.Tables[0].Rows[i][String.Format("XLXLB_XLYSID")].ToString().Trim();
// }
//}
//更新标准字段
public static void ConvertWBBJDMX_XLBZID(TDatabase dberp, TSQL SQL, string sWBBJDID, string sXLBJDID, string sDateTime, string sGH)
{
string sDefaultXLBZID = XLBJDUtils.GetDefaultXLBZID();
Dictionary<string, string> dicDRMXBZ = new Dictionary<string, string>();
dicDRMXBZ.Clear();
SQL.Clear();
SQL.Add("select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ where 1 = 1 ");
DataSet dsXLBZ = dberp.OpenDataSet(SQL);
if (dsXLBZ.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsXLBZ.Tables[0].Rows.Count; i++)
{
dicDRMXBZ.Add(dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZID"].ToString().Trim(), dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim());
}
}
string sTemp = "";
SQL.Clear();
SQL.Add(" select XLWBBJDMX_BJDID,XLWBBJDMX_WBBJDID,XLWBBJDMX_DRHH, ");
SQL.Add(" XLWBBJDMX_BJCP,XLWBBJDMX_DYDJID,XLWBBJDMX_XLBZID,XLWBBJDMX_JLDW,XLWBBJDMX_BJSL,XLWBBJDMX_CPBJ,XLWBBJDMX_BZ,XLWBBJDMX_XLXHID,XLWBBJDMX_XLGGID, ");
SQL.Add(" XLWBBJDMX_WHR,XLWBBJDMX_WHRID,XLWBBJDMX_WHSJ ");
SQL.Add(" from XLWBBJDMX ");
SQL.Add(" where XLWBBJDMX_WBBJDID=:pWBBJDID and XLWBBJDMX_BJDID=:pBJDID ");
SQL.Add(" and XLWBBJDMX_WHRID =:pXLWBBJDMX_WHRID and XLWBBJDMX_WHSJ=:pXLWBBJDMX_WHSJ ");
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
SQL.ParamByName("pXLWBBJDMX_WHRID").Value = sGH;
SQL.ParamByName("pXLWBBJDMX_WHSJ").Value = CMISproConvert.StrToDateTime(sDateTime);
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (!ds.Tables[0].Rows[i]["XLWBBJDMX_XLBZID"].ToString().Trim().Equals(""))
{
sTemp = XLBJDUtils.GetBZXLZBZID(ds.Tables[0].Rows[i]["XLWBBJDMX_XLBZID"].ToString().Trim(), sDefaultXLBZID, dicDRMXBZ);
SQL.Clear();
SQL.Add("update XLWBBJDMX set XLWBBJDMX_XLBZID = :pXLWBBJDMX_XLBZID ");
SQL.Add(" where 1= 1 ");
SQL.Add(" and XLWBBJDMX_WBBJDID=:pWBBJDID and XLWBBJDMX_BJDID=:pBJDID ");
SQL.Add(" and XLWBBJDMX_DRHH=:pDRHH ");
SQL.ParamByName("pXLWBBJDMX_XLBZID").Value = sTemp.Equals("") ? " " : sTemp;
SQL.ParamByName("pWBBJDID").Value = sWBBJDID;
SQL.ParamByName("pBJDID").Value = sXLBJDID;
SQL.ParamByName("pDRHH").Value = ds.Tables[0].Rows[i]["XLWBBJDMX_DRHH"].ToString().Trim();
dberp.ExecSQL(SQL);
}
}
}
}
public static void Reimport(string sBJU002, string sBJU003,string sBJU018, string sBJLY, string sBJFLID, string sBJDHQLY, string sBJRQ, string sJGBID, string sJGCIDS, string sXSQYID, string sHSBZ,
string sTBJCLID, string sLBJCLID, string sTJ, string sLJ, string sNeedUpdBJDHQCLCB, string sJCLLX, string sLJJCLLX, string sBJLJJCLLX, string sPJLX, string sFKQXNR, string sSYDWID, string sCPBJMRXSWS,
string sWBBJDID, string sSELBJDID, string sBJDID, string sBJSJLY, CMISproSession tSession, ref string sMsg)
{
int tmpXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
if (tmpXSWS < 0)
tmpXSWS = 0;
else if (tmpXSWS > 8)
tmpXSWS = 8;
bool bNeedUp = false;
double fBJSL = 0.0;
Dictionary<int, double> dicUpdCPBJ = new Dictionary<int, double>();
dicUpdCPBJ.Clear();
string sBJDXHList = string.Empty;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sSQL = new TSQL(dberp);
sSQL.Clear();
sSQL.Add(" SELECT XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_WBBJDID, ");
sSQL.Add(" XLWBBJDMX_WBBJDID,XLWBBJDMX_DRHH,XLWBBJDMX_XLXHID,XLWBBJDMX_XLGGID,XLWBBJDMX_XLBZID,XLWBBJDMX_DYDJID, ");
sSQL.Add(" XLWBBJDMX_BJCP,XLWBBJDMX_JLDW,XLWBBJDMX_BJSL,XLWBBJDMX_CPBJ,XLWBBJDMX_XLYSID ");
sSQL.Add(" FROM XLXSBJDMX ");
sSQL.Add(" LEFT JOIN XLWBBJDMX ON XLWBBJDMX_WBBJDID = XLXSBJDMX_WBBJDID AND XLWBBJDMX_DRHH = XLXSBJDMX_DRHH ");
sSQL.Add(" where 1 = 1 and exists( select 1 from XLWBBJDMX where 1 = 1 and XLWBBJDMX_WBBJDID=:pWBBJDID and XLWBBJDMX_BJDID=:pSELBJDID ");
sSQL.Add(" and XLXSBJDMX_WBBJDID = XLWBBJDMX_WBBJDID AND XLXSBJDMX_DRHH = XLWBBJDMX_DRHH)");
sSQL.Add(" and XLXSBJDMX_BJDID =:pBJDID");
sSQL.ParamByName("pWBBJDID").Value = sWBBJDID;
sSQL.ParamByName("pSELBJDID").Value = sSELBJDID;
sSQL.ParamByName("pBJDID").Value = sBJDID;
DataSet ds = dberp.OpenDataSet(sSQL);
if (ds.Tables[0].Rows.Count > 0)
{
try
{
string sXLXHID = "", sXLYSID = "", sXLGGID = "", sST = "", sDYDJ = "";
string sJLDW = "";//计量单位
string sBJCP = "";
double sCBPJ = 0.0;
int iXH = 0;
dberp.BeginTrans();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
sXLXHID = ds.Tables[0].Rows[i]["XLWBBJDMX_XLXHID"].ToString().Trim();
sXLGGID = ds.Tables[0].Rows[i]["XLWBBJDMX_XLGGID"].ToString().Trim();
sJLDW = ds.Tables[0].Rows[i]["XLWBBJDMX_JLDW"].ToString().Trim();
if (sJLDW.Equals(""))
sJLDW = sBJU003;
if (sXLXHID.Equals("") || sXLGGID.Equals(""))
continue;
sSQL.Clear();
sSQL.Add(" update XLXSBJDMX set ");
sSQL.Add(" XLXSBJDMX_XLXHID=:XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID=:XLXSBJDMX_XLGGID,XLXSBJDMX_XDXLXHID=:XLXSBJDMX_XLXHID,XLXSBJDMX_XDXLBZID=:XLXSBJDMX_XLBZID, ");
sSQL.Add(" XLXSBJDMX_XLBZID=:XLXSBJDMX_XLBZID,XLXSBJDMX_DYDJID=:XLXSBJDMX_DYDJID,XLXSBJDMX_XLYSID=:XLXSBJDMX_XLYSID,XLXSBJDMX_BJCP=:XLXSBJDMX_BJCP,XLXSBJDMX_WGCPBZ=:XLXSBJDMX_WGCPBZ, ");
sSQL.Add(" XLXSBJDMX_JLDW=:XLXSBJDMX_JLDW,XLXSBJDMX_BJSL=:XLXSBJDMX_BJSL,XLXSBJDMX_TZQCPBJ=:XLXSBJDMX_TZQCPBJ,XLXSBJDMX_TZCPBJ=:XLXSBJDMX_TZCPBJ,XLXSBJDMX_CPBJ=:XLXSBJDMX_CPBJ, ");
sSQL.Add(" XLXSBJDMX_JGBJJ=:XLXSBJDMX_JGBJJ,XLXSBJDMX_CLCB=:XLXSBJDMX_CLCB, XLXSBJDMX_JGBBJ=:XLXSBJDMX_JGBBJ,XLXSBJDMX_JGBBJGXSJ=:XLXSBJDMX_JGBBJGXSJ,");
sSQL.Add(" XLXSBJDMX_WHR=:XLXSBJDMX_WHR,XLXSBJDMX_WHRID=:XLXSBJDMX_WHRID,XLXSBJDMX_WHSJ=:XLXSBJDMX_WHSJ,XLXSBJDMX_JGFBZ=:XLXSBJDMX_JGFBZ,");
sSQL.Add(" XLXSBJDMX_BJJE=:XLXSBJDMX_BJJE,XLXSBJDMX_TZQBJJE=:XLXSBJDMX_TZQBJJE,XLXSBJDMX_JGBBJJCE=:XLXSBJDMX_JGBBJJCE,XLXSBJDMX_JGBBJJCL=:XLXSBJDMX_JGBBJJCL,XLXSBJDMX_CLZL=:XLXSBJDMX_CLZL,");
sSQL.Add(" XLXSBJDMX_BJDHQCLCB=:XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_BJDHQCLCBTZ='N',XLXSBJDMX_CLCBJCL=:XLXSBJDMX_CLCBJCL,XLXSBJDMX_JGBBJLJJCL=:XLXSBJDMX_JGBBJLJJCL,XLXSBJDMX_BZ=:XLXSBJDMX_BZ ");
sSQL.Add(" where XLXSBJDMX_BJDID=:XLXSBJDMX_BJDID and XLXSBJDMX_XH=:XLXSBJDMX_XH ");
iXH = CMISproConvert.StrToInt(ds.Tables[0].Rows[i]["XLXSBJDMX_XH"].ToString().Trim());
sBJDXHList += iXH.ToString() + ",";
sXLXHID = ds.Tables[0].Rows[i]["XLWBBJDMX_XLXHID"].ToString().Trim();
sXLYSID = ds.Tables[0].Rows[i]["XLWBBJDMX_XLYSID"].ToString().Trim();
sXLGGID = ds.Tables[0].Rows[i]["XLWBBJDMX_XLGGID"].ToString().Trim();
sST = ds.Tables[0].Rows[i]["XLWBBJDMX_XLBZID"].ToString().Trim();
sDYDJ = ds.Tables[0].Rows[i]["XLWBBJDMX_DYDJID"].ToString().Trim().Replace('K', 'k').Replace('v', 'V');
sCBPJ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLWBBJDMX_CPBJ"].ToString().Trim());
if (sCBPJ != 0)
{
dicUpdCPBJ.Add(iXH, sCBPJ);
}
double bCLZL = 0.0;// NumberUtils.RoundX(CMISproConvert.StrToFloat(ContentGrid.DataKeys[int.Parse(sRowIndexs[i])]["XLXSCLQD_CLZL"].ToString().Trim()), 3);
double bJJ = 0.0;//基价
double bCPJJ = 0.0;//表价
double bCLCB = 0.0;//价格表行情料价
double bBJDHQCLCB = 0.0;//报价单行情料价
bool JgIsZero = false;//是否存在有材料用量、无材料价格的情况
string sJGBJLDW = XLBJDUtils.GetJGBJLDW(sJGBID, sXLXHID, sXLGGID, sST, sDYDJ, sBJU003, sBJU018);
string sJGBJSDW = XLBJDUtils.GetsJSDW(sJGBJLDW, sBJU003);
if (sJGBJLDW.ToUpper().Equals("M") || sJGBJLDW.ToUpper().Equals("KM") || sJGBJLDW.ToUpper().Equals("米") || sJGBJLDW.ToUpper().Equals("千米"))
sSQL.ParamByName("XLXSBJDMX_JLDW").Value = sJLDW;
else
{
sSQL.ParamByName("XLXSBJDMX_JLDW").Value = sJGBJLDW;
sJLDW = sJGBJLDW;
}
double dBJDJLDWHSBL = 1;
string sWGCPBZ = "N";
string sJGFBZ = "N";
if (XLBJDUtils.IsWGCP(sXLXHID, sXLGGID, sST, sDYDJ))
sWGCPBZ = "Y";
if (XLBJDUtils.IsJGFJGBMX(sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ))
{
sJGFBZ = "Y";
double dJGFJJ = 0;
double dJGFBJ = 0;
string sJGFJLDW = "";
XLBJDUtils.GetJGBJJ_JGF(sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ, sHSBZ.Equals("Y"), sBJU018, ref dJGFJJ, ref dJGFBJ, ref sJGFJLDW);
//M、KM、米、千米、KG、T、千克、公斤、吨
if (XLBJDUtils.sJCJLDWList.IndexOf(sJGFJLDW.ToUpper()) >= 0
&& XLBJDUtils.sJCJLDWList.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGFJLDW, sJLDW, sBJU003, sXLXHID, sXLGGID, sST, sDYDJ);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGFJLDW, sJLDW);
}
bCPJJ = dJGFBJ;
bJJ = dJGFJJ;
bCLCB = dJGFJJ;
bBJDHQCLCB = dJGFJJ;
}
else if (sWGCPBZ.Equals("Y"))
{
dBJDJLDWHSBL = 1;
bCPJJ = 0;
bJJ = 0;
bCLCB = 0;
bBJDHQCLCB = 0;
}
else
{
if (!XLBJDUtils.IsJGEJGB(sJGBID))//是否表价实时计算价格表
{
//M、KM、米、千米、KG、T、千克、公斤、吨
if (XLBJDUtils.sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0
&& XLBJDUtils.sJCJLDWList.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGBJSDW, sJLDW, sBJU003, sXLXHID, sXLGGID, sST, sDYDJ);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sJGBJLDW, sJLDW);
}
string pJGBID = sJGBID;
string pHSBZ = sHSBZ;
string sCPJJ = "";
string sJJ = "";
string sCLCB = "";
if (sBJLY.Equals("D") || sBJLY.Equals("C"))
{
XLBJDInfo.GetFromJGB(sXLXHID, sXLGGID, sST, sDYDJ, pJGBID, sJGCIDS, pHSBZ.Equals("Y"), sBJU018, ref sCPJJ, ref sJJ, ref sCLCB);
if (sJGBJSDW.Equals("Km") || sJGBJSDW.Equals("M"))
{
Dictionary<string, double> aryBJHQ = XLBJDUtils.GetCLCB_BJHQ(sBJFLID, pJGBID, sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ, sJGBJLDW, sBJU003);
JgIsZero = aryBJHQ["JgIsZero"] == 1 ? true : false;
if (pHSBZ.Equals("Y"))
sCLCB = aryBJHQ["CLCB"].ToString();
else
sCLCB = aryBJHQ["WSCLCB"].ToString();
}
}
else
{
if (sJGBJSDW.Equals("Km") || sJGBJSDW.Equals("M"))
{
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, sST, sDYDJ, pJGBID, sJGCIDS, sBJRQ, pHSBZ.Equals("Y"), XLBJDUtils.JQJSXSWS.ToString(),
sBJFLID, sJGBJLDW, sBJU003, ref sCPJJ, ref sJJ, ref sCLCB, ref JgIsZero);
}
else
{
XLBJDUtils.GetFromJGB_BJRHQ(sXLXHID, sXLGGID, sST, sDYDJ, pJGBID, sJGCIDS, sBJRQ, pHSBZ.Equals("Y"), sBJU002,
sBJFLID, sJGBJLDW, sBJU003, ref sCPJJ, ref sJJ, ref sCLCB, ref JgIsZero);
}
}
else
{
XLBJDInfo.GetFromJGB(sXLXHID, sXLGGID, sST, sDYDJ, pJGBID, sJGCIDS, pHSBZ.Equals("Y"), sBJU018, ref sCPJJ, ref sJJ, ref sCLCB);
}
}
else
{
XLBJDInfo.GetFromJGB(sXLXHID, sXLGGID, sST, sDYDJ, pJGBID, sJGCIDS, pHSBZ.Equals("Y"), sBJU018, ref sCPJJ, ref sJJ, ref sCLCB);
}
}
bCPJJ = CMISproConvert.StrToFloat(sCPJJ);
bJJ = CMISproConvert.StrToFloat(sJJ);
bCLCB = CMISproConvert.StrToFloat(sCLCB);
if (sBJDHQLY.Trim().Equals("1"))
{
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的报价单行情料价改为负数显示
bBJDHQCLCB = bCLCB * -1;
else
bBJDHQCLCB = bCLCB;
}
else
{
Dictionary<string, double> aryBJRHQ = XLBJDUtils.GetCLCB_BJRHQ(sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ);
JgIsZero = aryBJRHQ["JgIsZero"] == 1 ? true : false;
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的报价单行情料价改为负数显示
{
if (pHSBZ.Equals("Y"))
bBJDHQCLCB = aryBJRHQ["CLCB"] * -1;
else
bBJDHQCLCB = aryBJRHQ["WSCLCB"] * -1;
}
else
{
if (pHSBZ.Equals("Y"))
bBJDHQCLCB = aryBJRHQ["CLCB"];
else
bBJDHQCLCB = aryBJRHQ["WSCLCB"];
}
//统一为价格表计量单位的价格
double dBJU003_JGB_JLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJGBJLDW);
bBJDHQCLCB = bBJDHQCLCB * dBJU003_JGB_JLDWHSBL;
}
if (sNeedUpdBJDHQCLCB.Equals("Y"))
{
Dictionary<string, double> aryBJDHQCLCB = XLBJDUtils.GetCLCB_BJDHQ(sBJDID, sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ);
if (pHSBZ.Equals("Y"))
bBJDHQCLCB = aryBJDHQCLCB["CLCB"];
else
bBJDHQCLCB = aryBJDHQCLCB["WSCLCB"];
//统一为价格表计量单位的价格
double dBJU003_JGB_JLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJGBJLDW);
bBJDHQCLCB = bBJDHQCLCB * dBJU003_JGB_JLDWHSBL;
}
}
else//表价实时计算价格表
{
//M、KM、米、千米、KG、T、千克、公斤、吨
if (XLBJDUtils.sJCJLDWList.IndexOf(sJGBJSDW.ToUpper()) >= 0
&& XLBJDUtils.sJCJLDWList.IndexOf(sJLDW.ToUpper()) >= 0)
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJLDW, sBJU003, sXLXHID, sXLGGID, sST, sDYDJ);
}
else
{
dBJDJLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJLDW);
}
string pHSBZ = sHSBZ;
Dictionary<string, double> dicJGE = XLBJDUtils.GetCLCB_JGE(sBJRQ, sXLXHID, sXLGGID, sST, sDYDJ, sTBJCLID, sLBJCLID, sTJ, sLJ, pHSBZ.Equals("Y"),
sNeedUpdBJDHQCLCB.Equals("Y"), sBJDID);
JgIsZero = dicJGE["JgIsZero"] == 1 ? true : false;
bCLCB = dicJGE["CLCB"];
bCPJJ = bCLCB;
bJJ = bCLCB;
bBJDHQCLCB = bCLCB;
}
}
int iXSWS = CMISproConvert.StrToInt(sBJU002);
if (sBJU018.Equals("Y") && XLBJDUtils.sJQCDJLDWList.Contains(sJGBJLDW.ToUpper()))//若BJU018参数值为Y,且为价格表单位为长度单位,则先换算倍率后再保留小数位数。
{
bCPJJ = bCPJJ * dBJDJLDWHSBL;
bJJ = bJJ * dBJDJLDWHSBL;
bCLCB = bCLCB * dBJDJLDWHSBL;
bBJDHQCLCB = bBJDHQCLCB * dBJDJLDWHSBL;
bCPJJ = NumberUtils.RoundX(bCPJJ, iXSWS);
bJJ = NumberUtils.RoundX(bJJ, iXSWS);
bCLCB = NumberUtils.RoundX(bCLCB, iXSWS);
bBJDHQCLCB = NumberUtils.RoundX(bBJDHQCLCB, iXSWS);
}
else
{
bCPJJ = NumberUtils.RoundX(bCPJJ, iXSWS);
bJJ = NumberUtils.RoundX(bJJ, iXSWS);
bCLCB = NumberUtils.RoundX(bCLCB, iXSWS);
bBJDHQCLCB = NumberUtils.RoundX(bBJDHQCLCB, iXSWS);
bCPJJ = bCPJJ * dBJDJLDWHSBL;
bJJ = bJJ * dBJDJLDWHSBL;
bCLCB = bCLCB * dBJDJLDWHSBL;
bBJDHQCLCB = bBJDHQCLCB * dBJDJLDWHSBL;
}
double bCPBJ = bCPJJ;
//处理基本信息之外的数据
sBJCP = ds.Tables[0].Rows[i]["XLWBBJDMX_BJCP"].ToString().Trim();
sDYDJ = sDYDJ.Equals("") ? " " : sDYDJ;
fBJSL = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["XLWBBJDMX_BJSL"].ToString().Trim());
double dBJU003_BJD_JLDWHSBL = XLBJDUtils.GetJLDWHSBL_JG(sBJU003, sJLDW);
bCLZL = fBJSL * XLBJDUtils.GetCLZL(sXLXHID, sXLGGID, sST, sDYDJ) * dBJU003_BJD_JLDWHSBL;
double jsBJJE = NumberUtils.RoundX(fBJSL * bCPBJ, 2);
//利润
double bLRE = 0.0;
if (sJCLLX.Equals("1"))//表价价差率公式
{
bLRE = NumberUtils.RoundX(bCPBJ * fBJSL, 2) - NumberUtils.RoundX(bCPJJ * fBJSL, 2);
}
else if (sJCLLX.Equals("2"))
{
bLRE = NumberUtils.RoundX(bCPJJ * fBJSL, 2) - NumberUtils.RoundX(bCPBJ * fBJSL, 2);
}
else if (sJCLLX.Equals("4"))
{
bLRE = NumberUtils.RoundX(bCPBJ * fBJSL, 2) - NumberUtils.RoundX(bCPJJ * fBJSL, 2);
}
//计算价差率
double btmpLRE = 0;
if (sJCLLX.Equals("1"))//表价价差率公式
btmpLRE = bCPBJ * fBJSL - bCPJJ * fBJSL;
else if (sJCLLX.Equals("2"))
btmpLRE = bCPJJ * fBJSL - bCPBJ * fBJSL;
else if (sJCLLX.Equals("4"))
btmpLRE = bCPBJ * fBJSL - bCPJJ * fBJSL;
double bLRL = 0.0;
if (sJCLLX.Equals("1"))
{
if (bCPBJ != 0 && fBJSL != 0)
bLRL = NumberUtils.RoundX(btmpLRE * 100 / (bCPBJ * fBJSL), 2);
}
else if (sJCLLX.Equals("2"))
{
if (bCPJJ != 0 && fBJSL != 0)
bLRL = NumberUtils.RoundX(btmpLRE * 100 / (bCPJJ * fBJSL), 2);
}
else if (sJCLLX.Equals("3"))
{
if (bCPBJ != 0)
bLRL = NumberUtils.RoundX(bCPJJ * 100 / bCPBJ, 2);
}
else if (sJCLLX.Equals("4"))
{
if (bCPJJ != 0 && fBJSL != 0)
bLRL = NumberUtils.RoundX(btmpLRE * 100 / (bCPJJ * fBJSL), 2);
}
double bCLCBLRL = 0.0;
if (sLJJCLLX.Equals("1"))
{
double fCLCBLRE = fBJSL * bCPBJ - fBJSL * bCLCB;
if (bCPBJ != 0 && fBJSL != 0)
bCLCBLRL = NumberUtils.RoundX(fCLCBLRE * 100 / (bCPBJ * fBJSL), 2);
}
else if (sLJJCLLX.Equals("2"))
{
double fCLCBLRE = fBJSL * bCPBJ - fBJSL * bBJDHQCLCB;
if (bCPBJ != 0 && fBJSL != 0)
bCLCBLRL = NumberUtils.RoundX(fCLCBLRE * 100 / (bCPBJ * fBJSL), 2);
}
else if (sLJJCLLX.Equals("3"))
{
double fCLCBLRE = fBJSL * bCPBJ -fBJSL * bBJDHQCLCB;
if (fBJSL * bBJDHQCLCB != 0)
bCLCBLRL = NumberUtils.RoundX(fCLCBLRE * 100 / (fBJSL * bBJDHQCLCB), 2);
}
else if (sLJJCLLX.Equals("4"))
{
double fCLCBLRE = fBJSL * bBJDHQCLCB;
if (bCPBJ != 0 && fBJSL != 0)
bCLCBLRL = NumberUtils.RoundX(fCLCBLRE * 100 / (bCPBJ * fBJSL), 2);
}
double dBJLJJCL = 0.0;
if (sBJLJJCLLX.Equals("1"))
{
if(bCPJJ * fBJSL != 0)
{
dBJLJJCL = NumberUtils.RoundX((bCPJJ * fBJSL - fBJSL * bBJDHQCLCB) / NumberUtils.RoundX((bCPJJ * fBJSL),2) * 100, 2);
}
}
sSQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID;
sSQL.ParamByName("XLXSBJDMX_XH").Value = iXH;
sSQL.ParamByName("XLXSBJDMX_XLXHID").Value = sXLXHID;
sSQL.ParamByName("XLXSBJDMX_XLGGID").Value = sXLGGID;
sSQL.ParamByName("XLXSBJDMX_XLBZID").Value = sST;
sSQL.ParamByName("XLXSBJDMX_DYDJID").Value = sDYDJ;
sSQL.ParamByName("XLXSBJDMX_XLYSID").Value = XLBJDInfo.GetDefaultYSID(sXLXHID, sXLGGID);
if (sBJSJLY.Equals("BJWL"))
{
if (sBJCP.Equals(""))
{
if (sDYDJ.Trim().Equals(""))
sBJCP = sXLXHID.Trim() + " " + sXLGGID;
else
sBJCP = sXLXHID.Trim() + "-" + sDYDJ.Trim() + " " + sXLGGID;
}
}
sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sBJCP;
sSQL.ParamByName("XLXSBJDMX_BJSL").Value = fBJSL;
sSQL.ParamByName("XLXSBJDMX_JGBBJ").Value = bCPJJ;
sSQL.ParamByName("XLXSBJDMX_JGBBJGXSJ").Value = MISproUtils.GetServerTime();
sSQL.ParamByName("XLXSBJDMX_TZQCPBJ").Value = bCPBJ;
sSQL.ParamByName("XLXSBJDMX_TZCPBJ").Value = 0;
sSQL.ParamByName("XLXSBJDMX_CPBJ").Value = bCPBJ;
sSQL.ParamByName("XLXSBJDMX_JGBJJ").Value = bJJ;
sSQL.ParamByName("XLXSBJDMX_CLCB").Value = bCLCB;
sSQL.ParamByName("XLXSBJDMX_CLZL").Value = bCLZL;
sSQL.ParamByName("XLXSBJDMX_BJDHQCLCB").Value = bBJDHQCLCB;
sSQL.ParamByName("XLXSBJDMX_BJJE").Value = NumberUtils.RoundX(fBJSL * bCPBJ, 2).ToString();
sSQL.ParamByName("XLXSBJDMX_TZQBJJE").Value = NumberUtils.RoundX(fBJSL * bCPBJ, 2).ToString();
sSQL.ParamByName("XLXSBJDMX_JGBBJJCE").Value = bLRE;
sSQL.ParamByName("XLXSBJDMX_JGBBJJCL").Value = bLRL;
sSQL.ParamByName("XLXSBJDMX_CLCBJCL").Value = bCLCBLRL;
sSQL.ParamByName("XLXSBJDMX_JGBBJLJJCL").Value = dBJLJJCL;
sSQL.ParamByName("XLXSBJDMX_WGCPBZ").Value = sWGCPBZ;
sSQL.ParamByName("XLXSBJDMX_JGFBZ").Value = sJGFBZ;
sSQL.ParamByName("XLXSBJDMX_BZ").Value = "";
sSQL.ParamByName("XLXSBJDMX_WHR").Value = tSession.UserName;
sSQL.ParamByName("XLXSBJDMX_WHRID").Value = tSession.UserId;
sSQL.ParamByName("XLXSBJDMX_WHSJ").Value = DateTime.Now;
dberp.ExecSQL(sSQL);
if (XLBJDUtils.IsJGEJGB(sJGBID.Trim()))//是否表价实时计算价格表
{
if (!sWGCPBZ.Equals("Y"))
{
DataSet dsJGBYZ = new DataSet();
string sJGBTJYSS = "";
//记录计算公式
Dictionary<string, string> dicJGBTZYZGS = new Dictionary<string, string>();
//记录价格表调价因素相关信息-线缆基本信息
Dictionary<string, string> dicXLJBXX_JGE = new Dictionary<string, string>();
XLBJDUtils.GetdsJGBYZ_JGE(sJGBID.Trim(), ref dsJGBYZ);
sJGBTJYSS = XLBJDUtils.GetJGBTJYSSByBJFLID(sBJFLID);
if (dsJGBYZ.Tables[0].Rows.Count > 0 && sJGBTJYSS.Equals("1"))
{
dicXLJBXX_JGE.Clear();
dicJGBTZYZGS.Clear();
dicXLJBXX_JGE.Add("XLXHID", sXLXHID);
dicXLJBXX_JGE.Add("XLGGID", sXLGGID);
dicXLJBXX_JGE.Add("XLBZID", sST);
dicXLJBXX_JGE.Add("DYDJID", sDYDJ);
dicXLJBXX_JGE.Add("XSWS", tmpXSWS.ToString().Trim());
dicXLJBXX_JGE.Add("XH", iXH.ToString().Trim());
dicXLJBXX_JGE.Add("BJDID", sBJDID);
dicXLJBXX_JGE.Add("BJDJLDWHSBL", dBJDJLDWHSBL.ToString().Trim());
dicJGBTZYZGS = XLBJDUtils.GetJGBTZYZ_JGE(sJGBID.Trim(), "1", dsJGBYZ, dicXLJBXX_JGE);
XLBJDUtils.InsertXLXSBJDJJYZ_JGE(dberp, sSQL, dsJGBYZ, dicXLJBXX_JGE, dicJGBTZYZGS);
XLBJDUtils.UpdateXLXSBJDMX_JGBBJ_JGE(dberp, sSQL, dsJGBYZ, dicXLJBXX_JGE, dicJGBTZYZGS);
}
else
{
XLBJDUtils.InsertXLXSBJDJJYZ_JGEDef(dberp, sSQL, sBJDID, iXH.ToString().Trim());
}
if (JgIsZero)//若存在有材料用量、无材料价格的情况,则算出的表价、报价单行情料价改为负数显示
{
dberp.ExecSQL(string.Format(@"update XLXSBJDMX set
XLXSBJDMX_JGBBJ=ABS(XLXSBJDMX_JGBBJ)*(-1),
XLXSBJDMX_TZQCPBJ=ABS(XLXSBJDMX_TZQCPBJ)*(-1),
XLXSBJDMX_TZCPBJ=ABS(XLXSBJDMX_TZCPBJ),
XLXSBJDMX_CPBJ=ABS(XLXSBJDMX_CPBJ)*(-1),
XLXSBJDMX_JGBJJ=ABS(XLXSBJDMX_JGBJJ)*(-1),
XLXSBJDMX_CLCB = ABS(XLXSBJDMX_CLCB)*(-1),
XLXSBJDMX_BJDHQCLCB = ABS(XLXSBJDMX_BJDHQCLCB)*(-1)
where XLXSBJDMX_BJDID='{0}' and XLXSBJDMX_XH={1}", sBJDID, iXH));
}
}
else
{
XLBJDUtils.InsertXLXSBJDJJYZ_JGEDef(dberp, sSQL, sBJDID, iXH.ToString().Trim());
}
}
bNeedUp = true;
//给报价单因子赋默认值
XLBJDUtils.InsertXLXSBJDYZZ0(dberp, sSQL, sBJFLID, sBJDID, iXH, fBJSL,
sXLXHID, sXLGGID, sST, sDYDJ, sXSQYID, sPJLX,
sFKQXNR, sSYDWID, sJLDW, sBJU003, sWGCPBZ, sXLYSID);
}
CopyWBBJDYZZToBJDYZZ0(dberp, sSQL, sBJDID, sWBBJDID, sSELBJDID);
XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, sBJDID);
if (!sBJDXHList.Equals(""))
{
XLBJDUtils.UpdateXDXLBZID(dberp, sSQL, sBJDID, sBJDXHList.TrimEnd(','), 0, ref sMsg);
XLBJDUtils.DeleteBJDCLYLBL(dberp, sBJDID, sBJFLID, sBJDXHList);
}
if (bNeedUp)
{
//同步报价单明细记录插入XLXSBJDCLCB、XLXSBJDJJYZ
XLBJDInfo.InsertCLCBandJJYZ(TControlState.ctsEdit, sBJDID, sJGBID, tSession.UserId, tSession.UserName, sBJU003, sHSBZ.Equals("Y"));
//使用报价单调价因子重算TZQCPBJ、CPBJ、TZQBJJE、BJJE等
XLBJDUtils.UpdateBJDMX(dberp, sSQL, sBJFLID, sBJDID, tmpXSWS,
sJCLLX, sLJJCLLX, sCPBJMRXSWS);
//用报价更新计算出来的报价
foreach (int iKey in dicUpdCPBJ.Keys)
{
string sqlBJJE = "RoundFix(:pUpdCPBJ*XLXSBJDMX_BJSL+XLXSBJDMX_TZBJJE,2)";
sSQL.Clear();
sSQL.Add("update XLXSBJDMX set ");
sSQL.Add("XLXSBJDMX_BJSDBZ='Y',");//更新报价的同时,需将BJSDBZ字段设置为Y
sSQL.Add("XLXSBJDMX_CPBJ=:pUpdCPBJ,");
sSQL.Add("XLXSBJDMX_TZCPBJ=case when XLXSBJDMX_TZQCPBJ=0 then 0 else 100*(:pUpdCPBJ-XLXSBJDMX_TZQCPBJ)/XLXSBJDMX_TZQCPBJ end,");
sSQL.Add("XLXSBJDMX_TZQBJJE=RoundFix(:pUpdCPBJ*XLXSBJDMX_BJSL,2),");
sSQL.Add("XLXSBJDMX_BJJE=" + sqlBJJE + ",");
sSQL.Add("XLXSBJDMX_TZBJJE=" + sqlBJJE + "-RoundFix(:pUpdCPBJ*XLXSBJDMX_BJSL,2), ");
if (sJCLLX.Equals("1"))//表价价差率公式
{
sSQL.Add("XLXSBJDMX_JGBBJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + "-XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
sSQL.Add("XLXSBJDMX_JGBBJJCE =RoundFix(" + sqlBJJE + "-RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)," + tmpXSWS + "), ");
}
else if (sJCLLX.Equals("2"))
{
sSQL.Add("XLXSBJDMX_JGBBJJCL =case when XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL-" + sqlBJJE + ")/(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL),2) end,");
sSQL.Add("XLXSBJDMX_JGBBJJCE =RoundFix(RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)-" + sqlBJJE + "," + tmpXSWS + "), ");
}
else if (sJCLLX.Equals("3"))
{
sSQL.Add("XLXSBJDMX_JGBBJJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end,");
sSQL.Add("XLXSBJDMX_JGBBJJCE =0, ");
}
else if (sJCLLX.Equals("4"))
{
sSQL.Add("XLXSBJDMX_JGBBJJCL =case when XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL=0.0 then 0.0 else RoundFix(100*(" + sqlBJJE + " - XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL)/(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL),2) end,");
sSQL.Add("XLXSBJDMX_JGBBJJCE =RoundFix(" + sqlBJJE + " - RoundFix(XLXSBJDMX_JGBBJ*XLXSBJDMX_BJSL,2)," + tmpXSWS + "), ");
}
else
{
sSQL.Add("XLXSBJDMX_JGBBJJCL=0,");
sSQL.Add("XLXSBJDMX_JGBBJJCE=0,");
}
if (sLJJCLLX.Equals("1"))//料价价差率公式
{
sSQL.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"))
{
sSQL.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"))
{
sSQL.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"))
{
sSQL.Add("XLXSBJDMX_CLCBJCL =case when " + sqlBJJE + "=0.0 then 0.0 else RoundFix(100*(XLXSBJDMX_BJDHQCLCB*XLXSBJDMX_BJSL)/(" + sqlBJJE + "),2) end");
}
else
{
sSQL.Add("XLXSBJDMX_CLCBJCL=0");
}
if (sBJLJJCLLX.Equals("1"))//表价料价价差率公式
{
sSQL.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
{
sSQL.Add(",XLXSBJDMX_JGBBJLJJCL=0");
}
sSQL.Add(" where XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=:pXH");
sSQL.ParamByName("pUpdCPBJ").Value = NumberUtils.RoundX(dicUpdCPBJ[iKey], tmpXSWS);
sSQL.ParamByName("pBJDID").Value = sBJDID;
sSQL.ParamByName("pXH").Value = iKey;
dberp.ExecSQL(sSQL);
}
//同步补充插入XLXSCLQD、XLXSJGBMX中没有的记录
XLBJDInfo.InsertCLQDorJGBMX(sBJDID, sJGBID, sJGCIDS, tSession);
}
sMsg = "导入成功!";
dberp.CommitTrans();
}
catch (Exception ex)
{
dberp.RollbackTrans();
sMsg = "导入出现异常情况:" + ex.Message;
return;
}
}
}
//获取同一个目录分组号下的外部报价单ID
public static string GetWBBJDListByMLFZH(string sBJDID, string sMLFZH)
{
string sWBBJDIDList = string.Empty;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" select XLWBBJDML_WBBJDID from XLWBBJDML where XLWBBJDML_BJDID=:pBJDID and XLWBBJDML_MLFZH=:pMLFZH order by XLWBBJDML_WBBJDID ");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pMLFZH").Value = sMLFZH;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
sWBBJDIDList += ds.Tables[0].Rows[i][0].ToString().Trim() + ",";
}
return sWBBJDIDList.TrimEnd(',');
}
//去除EXCEL导入最后的无效空行
public static void DeleteInValidEmptyRow(ref DataSet aDataExcel)
{
int dsCount = aDataExcel.Tables[0].Rows.Count;
for (int r = dsCount - 1; r >= 0; r--)
{
bool bEmptyRow = true;
for (int j = 0; j < aDataExcel.Tables[0].Columns.Count; j++)
{
if (!aDataExcel.Tables[0].Rows[r][j].ToString().Trim().Equals(""))
{
bEmptyRow = false;
break;
}
}
if (bEmptyRow)
{
aDataExcel.Tables[0].Rows.RemoveAt(r);
}
else
{
break;
}
}
}
}
}