using System; using System.Data; using System.Configuration; using System.Collections; 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; using GThinking.N_MISPRO.Data; using GThinking.N_MODEL.Page; using GThinking.N_WORKFLOW; using GThinking.N_MODEL.Dialog; using GThinking.N_PUBLIC; using GThinking.N_MISPRO.Utility; using GThinking.N_CONTROL; using System.IO; using System.Data.OleDb; using System.Data.Common; using GThinking.N_MISPROAS; using System.Collections.Generic; using GThinking.N_PUBLIC2; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace GThinking.N_XLXSBJ { public partial class XLBJD_FZDRXInfo : SingleCardBase { XLBJD_WBBJDNR entity = new XLBJD_WBBJDNR(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860000; this.UMName = "线缆销售报价单"; base.CurMaster = Master; base.CurEntity = entity; Master.EnableAttachBtn = false; Master.EnableCancelBtn = false; Master.EnableCopyBtn = false; Master.EnableDeleteBtn = false; Master.EnableEditBtn = false; Master.EnableInsertBtn = false; Master.EnablePrintBtn = false; Master.EnableRefreshBtn = false; Master.EnableSaveBtn = false; Server.ScriptTimeout = 3600; string sXSYXJ = PageParam.GetRTrimString("XSYXJ"); string sXSYZ = PageParam.GetRTrimString("XSYZ"); string sXSYSCP = PageParam.GetRTrimString("XSYSCP"); string sXSBH = PageParam.GetRTrimString("XSBH"); string sXSCPBJXJ = PageParam.GetRTrimString("XSCPBJXJ"); int col = 0; string stitle = ""; //序号 stitle += "序号,"; col++; //固定列:型号、规格、标准、电压等级、计量单位、报价数量、报价 stitle += "型号,"; col++; stitle += "规格,"; col++; stitle += "标准,"; col++; stitle += "电压等级,"; col++; stitle += "计量单位,"; col++; stitle += "报价数量,"; col++; stitle += "报价,"; col++; //动态列 if (sXSYXJ == "Y") { stitle += "意向价,"; col++; } if (sXSYZ == "Y") { stitle += "印字,"; col++; } stitle += "备注,"; col++; stitle += "报价产品,"; col++; if (sXSYSCP == "Y") { stitle += "原始产品,"; col++; } if (sXSBH == "Y") { stitle += "包号,"; col++; } if (sXSCPBJXJ == "Y") { stitle += "产品报价限价,"; col++; stitle += "报价金额限价,"; col++; } stitle.TrimEnd(','); txtCols.Value = col.ToString(); txtTitle.Value = stitle; base.InitPage(); } #region 控件事件 protected void btnQD_Click(object sender, EventArgs e) { DataTable dt = ConvertJsonToDataTable(txttabledata.Value); string sBJDID = PageParam.GetRTrimString("BJDID"); string sBJFLID = PageParam.GetRTrimString("BJFLID"); string sJGBID = PageParam.GetRTrimString("JGBID"); string sBJU003 = PageParam.GetRTrimString("BJU003"); string sDefaultXLBZID = PageParam.GetRTrimString("sDefaultXLBZID"); string sXLJGU007 = PageParam.GetRTrimString("XLJGU007"); string sXSYXJ = PageParam.GetRTrimString("XSYXJ"); string sXSYZ = PageParam.GetRTrimString("XSYZ"); string sXSYSCP = PageParam.GetRTrimString("XSYSCP"); string sXSBH = PageParam.GetRTrimString("XSBH"); string sXSCPBJXJ = PageParam.GetRTrimString("XSCPBJXJ"); string sBJU002 = PageParam.GetRTrimString("BJU002"); string sBJU018 = PageParam.GetRTrimString("BJU018"); string sBJU038 = PageParam.GetRTrimString("BJU038"); string sMRBZID = PageParam.GetRTrimString("txtMRBZID"); if (sBJDID.Equals("")) { sBJDID = " "; } //动态添加的栏目序号(DataTable中的列索引,从0开始:0=型号,1=规格,2=标准,3=电压等级,4=计量单位,5=报价数量,6=报价) int ColumnIndex = 6; int indexYXJ = -1; int indexYZ = -1; int indexBZ = -1; int indexBJCP = -1; int indexYSCP = -1; int indexBH = -1; int indexCPBJXJ = -1; int indexBJJEXJ = -1; if (sXSYXJ == "Y") indexYXJ = ++ColumnIndex; if (sXSYZ == "Y") indexYZ = ++ColumnIndex; indexBZ = ++ColumnIndex; indexBJCP = ++ColumnIndex; if (sXSYSCP == "Y") indexYSCP = ++ColumnIndex; if (sXSBH == "Y") indexBH = ++ColumnIndex; if (sXSCPBJXJ == "Y") { indexCPBJXJ = ++ColumnIndex; indexBJJEXJ = ++ColumnIndex; } //确定有效行数 int LastRows = 0; for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { if (!dt.Rows[i][j].ToString().Trim().Equals("")) { LastRows = i + 1; break; } } } if (LastRows == 0) { ShowMessage("没有可导入的数据!"); return; } //标准字典 Dictionary dicDRMXBZ = new Dictionary(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); sSQL.Clear(); sSQL.Add("select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ where 1 = 1 "); DataSet dsXLBZ = dberp.OpenDataSet(sSQL); 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()); } } int iXH = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJDMX", "XLXSBJDMX_XH", "XLXSBJDMX_BJDID='" + sBJDID + "'") + 1; int iXSSX = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJDMX", "XLXSBJDMX_XSSX", "XLXSBJDMX_BJDID = '" + sBJDID + "'") + 1; int iStartXH = iXH; string sErrorNum = ""; try { dberp.BeginTrans(); sSQL.Clear(); sSQL.Add(" insert into XLXSBJDMX( "); sSQL.Add(" XLXSBJDMX_BJDID, XLXSBJDMX_XH, XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID, "); sSQL.Add(" XLXSBJDMX_XLBZID,XLXSBJDMX_XDXLBZID,XLXSBJDMX_XDXLXHID, XLXSBJDMX_DYDJID, XLXSBJDMX_XLYSID, XLXSBJDMX_BJCP,XLXSBJDMX_BJCPSD,XLXSBJDMX_WGCPBZ, "); sSQL.Add(" XLXSBJDMX_JLDW, XLXSBJDMX_BJSL, XLXSBJDMX_JGBBJ, XLXSBJDMX_TZQCPBJ,XLXSBJDMX_TZCPBJ,XLXSBJDMX_CPBJ,XLXSBJDMX_BJSDBZ,XLXSBJDMX_TZQBJJE, XLXSBJDMX_BJJE, XLXSBJDMX_JGBJJ,XLXSBJDMX_CLCB,XLXSBJDMX_JGBBJJCL,XLXSBJDMX_JGBBJJCE,XLXSBJDMX_CLZL, "); sSQL.Add(" XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_CLCBJCL,XLXSBJDMX_JGBBJLJJCL,XLXSBJDMX_YXJG,XLXSBJDMX_YZ,XLXSBJDMX_YSCP,XLXSBJDMX_FBH,XLXSBJDMX_CPBJXJ,XLXSBJDMX_BJJEXJ,XLXSBJDMX_BZ, XLXSBJDMX_DZSC,XLXSBJDMX_WHRID, XLXSBJDMX_WHR, XLXSBJDMX_WHSJ)"); sSQL.Add(" values("); sSQL.Add(" :XLXSBJDMX_BJDID, :XLXSBJDMX_XH, :XLXSBJDMX_XSSX, :XLXSBJDMX_XLXHID, :XLXSBJDMX_XLGGID, "); sSQL.Add(" :XLXSBJDMX_XLBZID,:XLXSBJDMX_XDXLBZID,:XLXSBJDMX_XDXLXHID, isnull(:XLXSBJDMX_DYDJID,' '), :XLXSBJDMX_XLYSID, :XLXSBJDMX_BJCP,:XLXSBJDMX_BJCPSD,:XLXSBJDMX_WGCPBZ, "); sSQL.Add(" :XLXSBJDMX_JLDW, :XLXSBJDMX_BJSL, :XLXSBJDMX_JGBBJ, :XLXSBJDMX_TZQCPBJ,:XLXSBJDMX_TZCPBJ,:XLXSBJDMX_CPBJ,:XLXSBJDMX_BJSDBZ,:XLXSBJDMX_TZQBJJE, :XLXSBJDMX_BJJE, :XLXSBJDMX_JGBJJ,:XLXSBJDMX_CLCB,:XLXSBJDMX_JGBBJJCL,:XLXSBJDMX_JGBBJJCE,:XLXSBJDMX_CLZL, "); sSQL.Add(" :XLXSBJDMX_BJDHQCLCB,:XLXSBJDMX_CLCBJCL,:XLXSBJDMX_JGBBJLJJCL,:XLXSBJDMX_YXJG,:XLXSBJDMX_YZ,:XLXSBJDMX_YSCP,:XLXSBJDMX_FBH,isnull(:XLXSBJDMX_CPBJXJ,0),isnull(:XLXSBJDMX_BJJEXJ,0),:XLXSBJDMX_BZ, :XLXSBJDMX_DZSC,:XLXSBJDMX_WHRID, :XLXSBJDMX_WHR, :XLXSBJDMX_WHSJ)"); sSQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID; for (int i = 0; i < LastRows; i++) { string sXLXHID = dt.Rows[i][0].ToString().Trim(); string sXLGGID = dt.Rows[i][1].ToString().Trim(); string sST = dt.Rows[i][2].ToString().Trim(); string sDYDJ = dt.Rows[i][3].ToString().Trim(); string sJLDW = dt.Rows[i][4].ToString().Trim(); string sBJSL = dt.Rows[i][5].ToString().Trim(); string sCPBJ = dt.Rows[i][6].ToString().Trim(); string sYXJG = "0"; string sYZ = ""; string sBZ = ""; string sBJCP = ""; string sYSCP = ""; string sBH = ""; string sCPBJXJ = "0"; string sBJJEXJ = "0"; if (indexYXJ >= 0 && indexYXJ < dt.Columns.Count) sYXJG = dt.Rows[i][indexYXJ].ToString().Trim(); if (indexYZ >= 0 && indexYZ < dt.Columns.Count) sYZ = dt.Rows[i][indexYZ].ToString().Trim(); if (indexBZ >= 0 && indexBZ < dt.Columns.Count) sBZ = dt.Rows[i][indexBZ].ToString().Trim(); if (indexBJCP >= 0 && indexBJCP < dt.Columns.Count) sBJCP = dt.Rows[i][indexBJCP].ToString().Trim(); if (indexYSCP >= 0 && indexYSCP < dt.Columns.Count) sYSCP = dt.Rows[i][indexYSCP].ToString().Trim(); if (indexBH >= 0 && indexBH < dt.Columns.Count) sBH = dt.Rows[i][indexBH].ToString().Trim(); if (indexCPBJXJ >= 0 && indexCPBJXJ < dt.Columns.Count) sCPBJXJ = dt.Rows[i][indexCPBJXJ].ToString().Trim(); if (indexBJJEXJ >= 0 && indexBJJEXJ < dt.Columns.Count) sBJJEXJ = dt.Rows[i][indexBJJEXJ].ToString().Trim(); //跳过空行 if (sXLXHID.Equals("") && sXLGGID.Equals("")) continue; //规格处理 A|× B|* if (sXLJGU007.Equals("A")) { sXLGGID = sXLGGID.Replace("x", "X").Replace("X", "*").Replace("*", "×"); } else if (sXLJGU007.Equals("B")) { sXLGGID = sXLGGID.Replace("x", "X").Replace("X", "*").Replace("×", "*"); } //标准匹配 string sXLBZID = XLBJDUtils.GetBZXLZBZID(sST, sDefaultXLBZID, dicDRMXBZ); //电压等级处理 sDYDJ = sDYDJ.Replace('K', 'k').Replace('v', 'V'); //材料清单匹配 string tmpXLXHID = sXLXHID; string tmpXLGGID = sXLGGID; string tmpXLBZID = sXLBZID; string tmpDYDJID = sDYDJ; bool bExistCLQD = XLBJDUtils.ExistCLQD(ref tmpXLXHID, ref tmpXLGGID, ref tmpXLBZID, ref tmpDYDJID); if (bExistCLQD) { sXLXHID = tmpXLXHID; sXLGGID = tmpXLGGID; sXLBZID = tmpXLBZID; sDYDJ = tmpDYDJID; } sSQL.ParamByName("XLXSBJDMX_XLXHID").Value = sXLXHID; sSQL.ParamByName("XLXSBJDMX_XDXLXHID").Value = sXLXHID; sSQL.ParamByName("XLXSBJDMX_XLGGID").Value = sXLGGID; sSQL.ParamByName("XLXSBJDMX_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLXSBJDMX_XDXLBZID").Value = sXLBZID; sSQL.ParamByName("XLXSBJDMX_DYDJID").Value = sDYDJ; sSQL.ParamByName("XLXSBJDMX_XH").Value = iXH; sSQL.ParamByName("XLXSBJDMX_XSSX").Value = iXSSX; sSQL.ParamByName("XLXSBJDMX_XLYSID").Value = XLBJDInfo.GetDefaultYSID(sXLXHID, sXLGGID); //报价产品 if (!sBJCP.Equals("")) { sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sBJCP; sSQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "Y"; } else { if (!sDYDJ.Equals("")) sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sXLXHID + "-" + sDYDJ + " " + sXLGGID; else sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sXLXHID + " " + sXLGGID; sSQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "N"; } //计量单位 if (sJLDW.Trim().Equals("")) { string sMRJLDW = XLBJDInfo.GetMRJLDWByJBXH(sXLXHID); if (sMRJLDW.Equals("")) sSQL.ParamByName("XLXSBJDMX_JLDW").Value = sBJU003; else sSQL.ParamByName("XLXSBJDMX_JLDW").Value = sMRJLDW; } else { if (sJLDW.Trim().ToUpper().Equals("KM")) sSQL.ParamByName("XLXSBJDMX_JLDW").Value = "Km"; else if (sJLDW.Trim().ToUpper().Equals("M")) sSQL.ParamByName("XLXSBJDMX_JLDW").Value = "M"; else if (sJLDW.Trim().ToUpper().Equals("KG")) sSQL.ParamByName("XLXSBJDMX_JLDW").Value = "Kg"; else if (sJLDW.Trim().ToUpper().Equals("T")) sSQL.ParamByName("XLXSBJDMX_JLDW").Value = "T"; else sSQL.ParamByName("XLXSBJDMX_JLDW").Value = sJLDW.Trim(); } sSQL.ParamByName("XLXSBJDMX_BJSL").Value = CMISproConvert.StrToFloat(sBJSL, 0); sSQL.ParamByName("XLXSBJDMX_CPBJ").Value = CMISproConvert.StrToFloat(sCPBJ, 0); sSQL.ParamByName("XLXSBJDMX_JGBBJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_TZQCPBJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_TZCPBJ").Value = 0; sSQL.ParamByName("XLXSBJDMX_YXJG").Value = CMISproConvert.StrToFloat(sYXJG, 0); sSQL.ParamByName("XLXSBJDMX_YZ").Value = sYZ; sSQL.ParamByName("XLXSBJDMX_YSCP").Value = sYSCP; sSQL.ParamByName("XLXSBJDMX_FBH").Value = sBH; sSQL.ParamByName("XLXSBJDMX_CPBJXJ").Value = CMISproConvert.StrToFloat(sCPBJXJ, 0); sSQL.ParamByName("XLXSBJDMX_BJJEXJ").Value = CMISproConvert.StrToFloat(sBJJEXJ, 0); sSQL.ParamByName("XLXSBJDMX_BZ").Value = sBZ; if (CMISproConvert.StrToFloat(sCPBJ, 0) != 0) { sSQL.ParamByName("XLXSBJDMX_BJSDBZ").Value = "Y"; } else { sSQL.ParamByName("XLXSBJDMX_BJSDBZ").Value = "N"; } sSQL.ParamByName("XLXSBJDMX_JGBJJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_CLCB").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_BJDHQCLCB").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_CLZL").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_BJJE").Value = NumberUtils.RoundX(CMISproConvert.StrToFloat(sBJSL, 0) * CMISproConvert.StrToFloat(sCPBJ, 0), 2); sSQL.ParamByName("XLXSBJDMX_TZQBJJE").Value = sSQL.ParamByName("XLXSBJDMX_BJJE").Value; sSQL.ParamByName("XLXSBJDMX_JGBBJJCE").Value = 0; sSQL.ParamByName("XLXSBJDMX_JGBBJJCL").Value = 0; sSQL.ParamByName("XLXSBJDMX_CLCBJCL").Value = 0; sSQL.ParamByName("XLXSBJDMX_JGBBJLJJCL").Value = 0; sSQL.ParamByName("XLXSBJDMX_WGCPBZ").Value = "N"; if (XLBJDUtils.ISDZBZ(sXLBZID)) { sSQL.ParamByName("XLXSBJDMX_DZSC").Value = "Y"; } else { sSQL.ParamByName("XLXSBJDMX_DZSC").Value = "N"; } sSQL.ParamByName("XLXSBJDMX_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSBJDMX_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSBJDMX_WHSJ").Value = CMISproConvert.ConvertTime(DateTime.Now); dberp.ExecSQL(sSQL); iXH++; iXSSX++; } XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, sBJDID, "", iStartXH - 1); //匹配标准电压等级 if (!string.IsNullOrEmpty(sBJU038) && sBJU038.Contains(sBJFLID)) { PPBZDY(dberp, sSQL, sBJDID, iStartXH, sJGBID, sMRBZID); } XLBJDUtils.UpdateXDXLBZID(dberp, sSQL, sBJDID, "", iStartXH - 1, ref sErrorNum); XLBJDCalcUtils.CalcBJDMXAfterIns(dberp, sSQL, sBJDID, iStartXH, sBJU002, sBJU003, sBJU018, tSession.UserId, tSession.UserName, ref sErrorNum); dberp.CommitTrans(); DialogOperationScript dos = new DialogOperationScript(this); dos.CloseSelf(); dos.Execute(); } catch (Exception ex) { dberp.RollbackTrans(); ShowMessage(ex.Message); } } protected void btnQX_Click(object sender, EventArgs e) { CloseWindow(); } #endregion #region 自定义事件 public DataTable ConvertJsonToDataTable(string jsonData) { DataTable dataTable = new DataTable(); // 将JSON数据转换为JArray JArray jsonArray = JArray.Parse(jsonData); int index2 = 0; // 创建表的列 if (jsonArray.Count > 0) { foreach (JToken token in jsonArray[0]) { //第一列是标题,所以去掉 if (index2 > 0) { // 获取所有子元素 foreach (JToken child in token.Children()) { dataTable.Columns.Add(child.ToString(), typeof(string)); break; } } index2++; } } int index = 0; // 将JSON数据填充到DataTable中 foreach (JObject jsonObject in jsonArray) { //第一行是标题,所以去掉 if (index > 0) { index2 = 0; DataRow row = dataTable.NewRow(); foreach (JProperty property in jsonObject.Properties()) { //第一列是标题,所以去掉 if (index2 > 0) { row[property.Name] = property.Value.ToString(); } index2++; } dataTable.Rows.Add(row); } index++; } return dataTable; } private void PPBZDY(TDatabase dberp, TSQL SQL, string sBJDID, int startBJDXH, string sJGBID, string sMRBZID) { if (!string.IsNullOrEmpty(sMRBZID)) { #region 根据型号、规格,匹配唯一标准、电压等级 SQL.Clear(); SQL.Add("merge into XLXSBJDMX tar "); SQL.Add(" using ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID, XLXSJGBMX_XLBZID as XLBZID, XLXSJGBMX_DYDJID as DYDJID "); SQL.Add(" from XLXSJGBMX b "); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and XLXSJGBMX_XLBZID=:pXLBZID "); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=b.XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=b.XLXSJGBMX_XLGGID"); SQL.Add(" )"); SQL.Add(" and exists ( "); SQL.Add(" select a.XLXHID, a.XLGGID from "); SQL.Add(" ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID "); SQL.Add(" from XLXSJGBMX"); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and XLXSJGBMX_XLBZID=:pXLBZID "); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=XLXSJGBMX_XLGGID"); SQL.Add(" )"); SQL.Add(" group by XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID "); SQL.Add(" having (count(XLXSJGBMX_XLXHID) + count(XLXSJGBMX_XLGGID)) = 2 "); SQL.Add(" ) a where 1=1 and a.XLXHID = b.XLXSJGBMX_XLXHID and a.XLGGID =b.XLXSJGBMX_XLGGID "); SQL.Add(" ) "); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" tar.XLXSBJDMX_XLXHID = sor.XLXHID "); SQL.Add(" and tar.XLXSBJDMX_XLGGID = sor.XLGGID "); SQL.Add(" and tar.XLXSBJDMX_XLXHID <> ' ' and tar.XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and tar.XLXSBJDMX_XLBZID = ' ' and tar.XLXSBJDMX_DYDJID = ' ' "); SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and tar.XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(" tar.XLXSBJDMX_XLBZID =sor.XLBZID "); SQL.Add(", tar.XLXSBJDMX_DYDJID=sor.DYDJID "); SQL.ParamByName("pXLBZID").Value = sMRBZID; SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; dberp.ExecSQL(SQL); #endregion #region 根据型号、规格,匹配唯一标准、电压等级(材料清单) SQL.Clear(); SQL.Add(" merge into XLXSBJDMX tag"); SQL.Add(" using "); SQL.Add(" ( "); SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID FROM XLXSCLQD a "); SQL.Add(" where XLXSCLQD_WPID = 'ZZZZ' "); SQL.Add(" and XLXSCLQD_XLBZID = :pXLBZID "); SQL.Add(" and exists ( "); SQL.Add(" SELECT XLXSCLQD_XLXHID,XLXSCLQD_XLGGID FROM XLXSCLQD b "); SQL.Add(" WHERE a.XLXSCLQD_XLXHID = b.XLXSCLQD_XLXHID and a.XLXSCLQD_XLGGID = b.XLXSCLQD_XLGGID "); SQL.Add(" and b.XLXSCLQD_WPID = 'ZZZZ' and b.XLXSCLQD_XLBZID = :pXLBZID and exists( "); SQL.Add(" select XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID from XLXSBJDMX WHERE XLXSBJDMX_XLXHID = XLXSCLQD_XLXHID "); SQL.Add(" and XLXSBJDMX_XLGGID= XLXSCLQD_XLGGID "); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" ) "); SQL.Add(" group by XLXSCLQD_XLXHID,XLXSCLQD_XLGGID "); SQL.Add(" having (count(XLXSCLQD_XLXHID) + count(XLXSCLQD_XLGGID)) = 2 "); SQL.Add(" ) "); SQL.Add(" ) c "); SQL.Add(" on ( XLXSBJDMX_XLXHID <> ' ' and XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID = ' ' "); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" and c.XLXSCLQD_XLXHID =XLXSBJDMX_XLXHID and c.XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID ) "); SQL.Add(" when matched then update set XLXSBJDMX_XLBZID =c.XLXSCLQD_XLBZID "); SQL.Add(" , XLXSBJDMX_DYDJID=c.XLXSCLQD_DYDJID "); SQL.ParamByName("pXLBZID").Value = sMRBZID; SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; dberp.ExecSQL(SQL); #endregion #region 根据型号、规格、电压等级,匹配唯一标准 SQL.Clear(); SQL.Add("merge into XLXSBJDMX tar "); SQL.Add(" using ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID, XLXSJGBMX_XLBZID as XLBZID, XLXSJGBMX_DYDJID as DYDJID "); SQL.Add(" from XLXSJGBMX b "); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and XLXSJGBMX_XLBZID=:pXLBZID "); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=b.XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=b.XLXSJGBMX_XLGGID"); SQL.Add(" and XLXSBJDMX_DYDJID=b.XLXSJGBMX_DYDJID"); SQL.Add(" )"); SQL.Add(" and exists ( "); SQL.Add(" select a.XLXHID, a.XLGGID from "); SQL.Add(" ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID, XLXSJGBMX_DYDJID as DYDJID "); SQL.Add(" from XLXSJGBMX"); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and XLXSJGBMX_XLBZID=:pXLBZID "); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=XLXSJGBMX_XLGGID"); SQL.Add(" and XLXSBJDMX_DYDJID=XLXSJGBMX_DYDJID"); SQL.Add(" )"); SQL.Add(" group by XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID, XLXSJGBMX_DYDJID "); SQL.Add(" having (count(XLXSJGBMX_XLXHID) + count(XLXSJGBMX_XLGGID) + count(XLXSJGBMX_DYDJID)) = 3 "); SQL.Add(" ) a where 1=1 and a.XLXHID = b.XLXSJGBMX_XLXHID and a.XLGGID =b.XLXSJGBMX_XLGGID and a.DYDJID = b.XLXSJGBMX_DYDJID "); SQL.Add(" ) "); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" tar.XLXSBJDMX_XLXHID = sor.XLXHID "); SQL.Add(" and tar.XLXSBJDMX_XLGGID = sor.XLGGID "); SQL.Add(" and tar.XLXSBJDMX_DYDJID=sor.DYDJID "); SQL.Add(" and tar.XLXSBJDMX_XLXHID <> ' ' and tar.XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and tar.XLXSBJDMX_XLBZID = ' ' and tar.XLXSBJDMX_DYDJID <> ' ' "); SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and tar.XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(" tar.XLXSBJDMX_XLBZID =sor.XLBZID "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; SQL.ParamByName("pXLBZID").Value = sMRBZID; dberp.ExecSQL(SQL); #endregion #region 根据型号、规格、电压等级,匹配唯一标准(材料清单) SQL.Clear(); SQL.Add(" merge into XLXSBJDMX tag "); SQL.Add(" using "); SQL.Add(" ( "); SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID FROM XLXSCLQD a "); SQL.Add(" where 1 = 1 and XLXSCLQD_WPID = 'ZZZZ' "); SQL.Add(" and XLXSCLQD_XLBZID = :pXLBZID "); SQL.Add(" and exists ( "); SQL.Add(" SELECT XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_DYDJID FROM XLXSCLQD b "); SQL.Add(" WHERE 1 = 1 and a.XLXSCLQD_XLXHID = b.XLXSCLQD_XLXHID and a.XLXSCLQD_XLGGID = b.XLXSCLQD_XLGGID "); SQL.Add(" and a.XLXSCLQD_DYDJID = b.XLXSCLQD_DYDJID "); SQL.Add(" and b.XLXSCLQD_WPID = 'ZZZZ'and b.XLXSCLQD_XLBZID = :pXLBZID and exists( "); SQL.Add(" select XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID,XLXSCLQD_DYDJID from XLXSBJDMX WHERE XLXSBJDMX_XLXHID = XLXSCLQD_XLXHID "); SQL.Add(" and XLXSBJDMX_XLGGID= XLXSCLQD_XLGGID"); SQL.Add(" and XLXSBJDMX_DYDJID=XLXSCLQD_DYDJID"); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" ) "); SQL.Add(" group by XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_DYDJID "); SQL.Add(" having (count(XLXSCLQD_XLXHID) + count(XLXSCLQD_XLGGID) + count(XLXSCLQD_DYDJID)) = 3 "); SQL.Add(" ) "); SQL.Add(" ) c "); SQL.Add(" on ( XLXSBJDMX_XLXHID <> ' ' and XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID <> ' ' "); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" and c.XLXSCLQD_XLXHID =XLXSBJDMX_XLXHID and c.XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID and c.XLXSCLQD_DYDJID=XLXSBJDMX_DYDJID ) "); SQL.Add(" when matched then update set XLXSBJDMX_XLBZID =c.XLXSCLQD_XLBZID "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; SQL.ParamByName("pXLBZID").Value = sMRBZID; dberp.ExecSQL(SQL); #endregion } //先价格表,再材料清单 #region 根据型号、规格,匹配唯一标准、电压等级 SQL.Clear(); SQL.Add("merge into XLXSBJDMX tar "); SQL.Add(" using ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID, XLXSJGBMX_XLBZID as XLBZID, XLXSJGBMX_DYDJID as DYDJID "); SQL.Add(" from XLXSJGBMX b "); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=b.XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=b.XLXSJGBMX_XLGGID"); SQL.Add(" )"); SQL.Add(" and exists ( "); SQL.Add(" select a.XLXHID, a.XLGGID from "); SQL.Add(" ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID "); SQL.Add(" from XLXSJGBMX"); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=XLXSJGBMX_XLGGID"); SQL.Add(" )"); SQL.Add(" group by XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID "); SQL.Add(" having (count(XLXSJGBMX_XLXHID) + count(XLXSJGBMX_XLGGID)) = 2 "); SQL.Add(" ) a where 1=1 and a.XLXHID = b.XLXSJGBMX_XLXHID and a.XLGGID =b.XLXSJGBMX_XLGGID "); SQL.Add(" ) "); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" tar.XLXSBJDMX_XLXHID = sor.XLXHID "); SQL.Add(" and tar.XLXSBJDMX_XLGGID = sor.XLGGID "); SQL.Add(" and tar.XLXSBJDMX_XLXHID <> ' ' and tar.XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and tar.XLXSBJDMX_XLBZID = ' ' and tar.XLXSBJDMX_DYDJID = ' ' "); SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and tar.XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(" tar.XLXSBJDMX_XLBZID =sor.XLBZID "); SQL.Add(", tar.XLXSBJDMX_DYDJID=sor.DYDJID "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; dberp.ExecSQL(SQL); #endregion #region 根据型号、规格、标准,匹配唯一电压等级 SQL.Clear(); SQL.Add("merge into XLXSBJDMX tar "); SQL.Add(" using ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID, XLXSJGBMX_XLBZID as XLBZID, XLXSJGBMX_DYDJID as DYDJID "); SQL.Add(" from XLXSJGBMX b "); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=b.XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=b.XLXSJGBMX_XLGGID"); SQL.Add(" and XLXSBJDMX_XLBZID=b.XLXSJGBMX_XLBZID"); SQL.Add(" )"); SQL.Add(" and exists ( "); SQL.Add(" select a.XLXHID, a.XLGGID from "); SQL.Add(" ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID, XLXSJGBMX_XLBZID as XLBZID "); SQL.Add(" from XLXSJGBMX"); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=XLXSJGBMX_XLGGID"); SQL.Add(" and XLXSBJDMX_XLBZID=XLXSJGBMX_XLBZID"); SQL.Add(" )"); SQL.Add(" group by XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID, XLXSJGBMX_XLBZID "); SQL.Add(" having (count(XLXSJGBMX_XLXHID) + count(XLXSJGBMX_XLGGID) + count(XLXSJGBMX_XLBZID)) = 3 "); SQL.Add(" ) a where 1=1 and a.XLXHID = b.XLXSJGBMX_XLXHID and a.XLGGID =b.XLXSJGBMX_XLGGID and a.XLBZID = b.XLXSJGBMX_XLBZID "); SQL.Add(" ) "); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" tar.XLXSBJDMX_XLXHID = sor.XLXHID "); SQL.Add(" and tar.XLXSBJDMX_XLGGID = sor.XLGGID "); SQL.Add(" and tar.XLXSBJDMX_XLBZID = sor.XLBZID "); SQL.Add(" and tar.XLXSBJDMX_XLXHID <> ' ' and tar.XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and tar.XLXSBJDMX_XLBZID <> ' ' and tar.XLXSBJDMX_DYDJID = ' ' "); SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and tar.XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(" tar.XLXSBJDMX_DYDJID=sor.DYDJID "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; dberp.ExecSQL(SQL); #endregion #region 根据型号、规格、电压等级,匹配唯一标准 SQL.Clear(); SQL.Add("merge into XLXSBJDMX tar "); SQL.Add(" using ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID, XLXSJGBMX_XLBZID as XLBZID, XLXSJGBMX_DYDJID as DYDJID "); SQL.Add(" from XLXSJGBMX b "); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=b.XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=b.XLXSJGBMX_XLGGID"); SQL.Add(" and XLXSBJDMX_DYDJID=b.XLXSJGBMX_DYDJID"); SQL.Add(" )"); SQL.Add(" and exists ( "); SQL.Add(" select a.XLXHID, a.XLGGID from "); SQL.Add(" ( "); SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID, XLXSJGBMX_DYDJID as DYDJID "); SQL.Add(" from XLXSJGBMX"); SQL.Add(" where 1=1 and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGBID)); SQL.Add(" and exists(select 1 from XLXSBJDMX tmp where XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XLXHID=XLXSJGBMX_XLXHID"); SQL.Add(" and XLXSBJDMX_XLGGID=XLXSJGBMX_XLGGID"); SQL.Add(" and XLXSBJDMX_DYDJID=XLXSJGBMX_DYDJID"); SQL.Add(" )"); SQL.Add(" group by XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID, XLXSJGBMX_DYDJID "); SQL.Add(" having (count(XLXSJGBMX_XLXHID) + count(XLXSJGBMX_XLGGID) + count(XLXSJGBMX_DYDJID)) = 3 "); SQL.Add(" ) a where 1=1 and a.XLXHID = b.XLXSJGBMX_XLXHID and a.XLGGID =b.XLXSJGBMX_XLGGID and a.DYDJID = b.XLXSJGBMX_DYDJID "); SQL.Add(" ) "); SQL.Add(" ) sor "); SQL.Add(" on( "); SQL.Add(" tar.XLXSBJDMX_XLXHID = sor.XLXHID "); SQL.Add(" and tar.XLXSBJDMX_XLGGID = sor.XLGGID "); SQL.Add(" and tar.XLXSBJDMX_DYDJID=sor.DYDJID "); SQL.Add(" and tar.XLXSBJDMX_XLXHID <> ' ' and tar.XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and tar.XLXSBJDMX_XLBZID = ' ' and tar.XLXSBJDMX_DYDJID <> ' ' "); SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and tar.XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" ) "); SQL.Add(" when matched then update set "); SQL.Add(" tar.XLXSBJDMX_XLBZID =sor.XLBZID "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; dberp.ExecSQL(SQL); #endregion #region 根据型号、规格,匹配唯一标准、电压等级(材料清单-无条件) SQL.Clear(); SQL.Add(" merge into XLXSBJDMX tag"); SQL.Add(" using "); SQL.Add(" ( "); SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID FROM XLXSCLQD a "); SQL.Add(" where XLXSCLQD_WPID = 'ZZZZ' "); SQL.Add(" and exists ( "); SQL.Add(" SELECT XLXSCLQD_XLXHID,XLXSCLQD_XLGGID FROM XLXSCLQD b "); SQL.Add(" WHERE a.XLXSCLQD_XLXHID = b.XLXSCLQD_XLXHID and a.XLXSCLQD_XLGGID = b.XLXSCLQD_XLGGID "); SQL.Add(" and b.XLXSCLQD_WPID = 'ZZZZ' and exists( "); SQL.Add(" select XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID from XLXSBJDMX WHERE XLXSBJDMX_XLXHID = XLXSCLQD_XLXHID "); SQL.Add(" and XLXSBJDMX_XLGGID= XLXSCLQD_XLGGID "); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" ) "); SQL.Add(" group by XLXSCLQD_XLXHID,XLXSCLQD_XLGGID "); SQL.Add(" having (count(XLXSCLQD_XLXHID) + count(XLXSCLQD_XLGGID)) = 2 "); SQL.Add(" ) "); SQL.Add(" ) c "); SQL.Add(" on ( XLXSBJDMX_XLXHID <> ' ' and XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID = ' ' "); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" and c.XLXSCLQD_XLXHID =XLXSBJDMX_XLXHID and c.XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID ) "); SQL.Add(" when matched then update set XLXSBJDMX_XLBZID =c.XLXSCLQD_XLBZID "); SQL.Add(" , XLXSBJDMX_DYDJID=c.XLXSCLQD_DYDJID "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; dberp.ExecSQL(SQL); #endregion #region 根据型号、规格、标准,匹配唯一电压等级(材料清单-无条件) SQL.Clear(); SQL.Add(" merge into XLXSBJDMX tag "); SQL.Add(" using "); SQL.Add(" ( "); SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID FROM XLXSCLQD a "); SQL.Add(" where 1 = 1 and XLXSCLQD_WPID = 'ZZZZ' "); SQL.Add(" and exists ( "); SQL.Add(" SELECT XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID FROM XLXSCLQD b "); SQL.Add(" WHERE 1 = 1 and a.XLXSCLQD_XLXHID = b.XLXSCLQD_XLXHID and a.XLXSCLQD_XLGGID = b.XLXSCLQD_XLGGID "); SQL.Add(" and a.XLXSCLQD_XLBZID = b.XLXSCLQD_XLBZID"); SQL.Add(" and b.XLXSCLQD_WPID = 'ZZZZ' and exists( "); SQL.Add(" select XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID from XLXSBJDMX WHERE XLXSBJDMX_XLXHID = XLXSCLQD_XLXHID "); SQL.Add(" and XLXSBJDMX_XLGGID= XLXSCLQD_XLGGID "); SQL.Add(" and XLXSBJDMX_XLBZID=XLXSCLQD_XLBZID"); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" ) "); SQL.Add(" group by XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID "); SQL.Add(" having (count(XLXSCLQD_XLXHID) + count(XLXSCLQD_XLGGID) + count(XLXSCLQD_XLBZID)) = 3 "); SQL.Add(" ) "); SQL.Add(" ) c "); SQL.Add(" on ( XLXSBJDMX_XLXHID <> ' ' and XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and XLXSBJDMX_XLBZID <> ' ' and XLXSBJDMX_DYDJID = ' ' "); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" and c.XLXSCLQD_XLXHID =XLXSBJDMX_XLXHID and c.XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID and c.XLXSCLQD_XLBZID=XLXSBJDMX_XLBZID ) "); SQL.Add(" when matched then update set XLXSBJDMX_DYDJID =c.XLXSCLQD_DYDJID "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; dberp.ExecSQL(SQL); #endregion #region 根据型号、规格、电压等级,匹配唯一标准(材料清单-无条件) SQL.Clear(); SQL.Add(" merge into XLXSBJDMX tag "); SQL.Add(" using "); SQL.Add(" ( "); SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID FROM XLXSCLQD a "); SQL.Add(" where 1 = 1 and XLXSCLQD_WPID = 'ZZZZ' "); SQL.Add(" and exists ( "); SQL.Add(" SELECT XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_DYDJID FROM XLXSCLQD b "); SQL.Add(" WHERE 1 = 1 and a.XLXSCLQD_XLXHID = b.XLXSCLQD_XLXHID and a.XLXSCLQD_XLGGID = b.XLXSCLQD_XLGGID "); SQL.Add(" and a.XLXSCLQD_DYDJID = b.XLXSCLQD_DYDJID "); SQL.Add(" and b.XLXSCLQD_WPID = 'ZZZZ' and exists( "); SQL.Add(" select XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID,XLXSCLQD_DYDJID from XLXSBJDMX WHERE XLXSBJDMX_XLXHID = XLXSCLQD_XLXHID "); SQL.Add(" and XLXSBJDMX_XLGGID= XLXSCLQD_XLGGID"); SQL.Add(" and XLXSBJDMX_DYDJID=XLXSCLQD_DYDJID"); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" ) "); SQL.Add(" group by XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_DYDJID "); SQL.Add(" having (count(XLXSCLQD_XLXHID) + count(XLXSCLQD_XLGGID) + count(XLXSCLQD_DYDJID)) = 3 "); SQL.Add(" ) "); SQL.Add(" ) c "); SQL.Add(" on ( XLXSBJDMX_XLXHID <> ' ' and XLXSBJDMX_XLGGID <> ' ' "); SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID <> ' ' "); SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID "); SQL.Add(" and XLXSBJDMX_XH>=:pSTARTXH "); SQL.Add(" and c.XLXSCLQD_XLXHID =XLXSBJDMX_XLXHID and c.XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID and c.XLXSCLQD_DYDJID=XLXSBJDMX_DYDJID ) "); SQL.Add(" when matched then update set XLXSBJDMX_XLBZID =c.XLXSCLQD_XLBZID "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pSTARTXH").Value = startBJDXH; dberp.ExecSQL(SQL); #endregion } #endregion } }