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 GetDYDJTH() { Dictionary dic = new Dictionary(); 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; } /// /// 统一使用年度+6位流水号编码 /// /// /// 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(); } /// /// 报价单ID为空时不加载因子;不为空时返回配置因子与报价分类因子的交集(保持配置顺序) /// 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 dicBJFLYZ = GetBJFLYZDict(sBJFLID); if (dicBJFLYZ.Count == 0) return new string[0]; List arrResult = new List(); foreach (string sYZ in arrPZ) { string sYZID = sYZ.Trim(); if (!sYZID.Equals("") && dicBJFLYZ.ContainsKey(sYZID)) arrResult.Add(sYZID); } return arrResult.ToArray(); } private static Dictionary GetBJFLYZDict(string sBJFLID) { Dictionary dic = new Dictionary(); 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; } /// /// 因子栏目在XLWBBJDLM_ZDLMLX中的标记,使用小写字母a-z(最多20个) /// 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 GetWBBJDYZZGDLM() { return GetWBBJDYZZGDLM(""); } /// /// 报价单ID为空时不加载因子栏目;不为空时加载配置因子与报价分类因子的交集 /// public static Dictionary GetWBBJDYZZGDLM(string sBJDID) { Dictionary dic = new Dictionary(); 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 dicBJFLYZ = GetBJFLYZDict(sBJFLID); if (dicBJFLYZ.Count == 0) return dic; List arrIntersect = new List(); 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 dicYZMC = new Dictionary(); 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 dicLMIndex = new Dictionary(); 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 dicIntersect = new Dictionary(); 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 dicXLBZID = new Dictionary(); 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 dicXLYS = new Dictionary(); 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 dicLM = new Dictionary(); 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 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 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 dicLM, DataSet dsNR, int i, string sBJSJLY, // string sDefaultXLBZID, Dictionary dicXLBZID, Dictionary 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 dicDRMXBZ = new Dictionary(); 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; } } } } }