Files
2026-10-09 10:25:33 +08:00

1259 lines
60 KiB
C#
Raw Permalink 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.U20261363_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);
}
}
}
}
//获取同一个目录分组号下的外部报价单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;
}
}
}
}
}