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_MODEL.Page; using GThinking.N_MISPRO.Data; using GThinking.N_MISPRO; using GThinking.N_MISPRO.Utility; using System.Text; using System.Collections.Generic; using GThinking.N_MISPRO.Caching; namespace GThinking.N_XLXSBJ { public partial class JGBPZ_CLHQTZList : SingleGridBase { JGBPZ_CLHQTZ entity = new JGBPZ_CLHQTZ(); JGBPZ_CLHQTZ_M queryentity = new JGBPZ_CLHQTZ_M(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860036; this.UMName = "线缆销售报价价格目录配置"; this.CurMaster = Master; this.ModuleGV = grdHQFD; this.CurEntity = entity; this.CurQueryEntity = queryentity; this.PageHeight = 600; this.PageWidth = 750; this.sQueryURLTarget = "JGBPZ_CLHQTZQuery.aspx"; base.DataKeyNames = new string[] { "XLXSCLHQFD_CLHQDH" }; Master.EnableNewBtn = false; Master.EnableCopyBtn = false; Master.EnableEditBtn = false; Master.EnableViewBtn = false; Master.EnableDeleteBtn = false; Master.EnablePrintBtn = false; grdHQFD.FindColumnExByFieldName("XLXSCLHQFD_HSJGS").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdHQFD.FindColumnExByFieldName("XLXSCLHQFD_HSJGZ").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdHQFD.FindColumnExByFieldName("XLXSCLHQFD_CLJGS").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdHQFD.FindColumnExByFieldName("XLXSCLHQFD_CLJGZ").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; base.InitPage(); this.ModuleGV.OnClientDblClick = "return false;"; if (!IsPostBack) { Master_OnStandardQuery(null, null); } TPageParams tpp = new TPageParams(); tpp.AddString("MXBH", PageParam.GetRTrimString("MXBH")); tpp.AddString("JGBPZDH", PageParam.GetRTrimString("JGBPZDH")); QueryPageParam = tpp; } #region 模板事件 protected override void Master_OnStandardQuery(object sender, EventArgs e) { base.InitEntityByCondition(); entity.EntityTable.QuerySelSql = "select 1 from XLXSCLHQFD where 1<>1"; base.Master_OnStandardQuery(sender, e); DataSet ds = GetSQL_ds(); entity.GridDataBind(grdHQFD, tSession); entity.GridDataBind(grdHQFD, ds.Tables[0], ds.Tables[0].Rows.Count); grdHQFD.DataSource = ds; } protected override void moduleGV_PageIndexChanging(object sender, GridViewPageEventArgs e) { base.InitEntityByCondition(); entity.EntityTable.QuerySelSql = "select 1 from XLXSCLHQFD where 1<>1"; base.moduleGV_PageIndexChanging(sender, e); grdHQFD.SelectedIndex = -1; DataSet ds = GetSQL_ds(); entity.GridDataBind(grdHQFD, tSession); entity.GridDataBind(grdHQFD, ds.Tables[0], ds.Tables[0].Rows.Count); grdHQFD.DataSource = ds; } #endregion #region 自定义函数 private DataSet GetSQL_ds() { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Clear(); sql.Add("select XLXSCLHQFD_CLHQDH,XLXSCLHQFD_HSJGS,XLXSCLHQFD_HSJGZ,XLXSCLHQFD_CLJGS,XLXSCLHQFD_CLJGZ"); sql.Add(" from XLXSCLHQFD"); sql.Add(" where XLXSCLHQFD_BJCLID=:pBJCLID"); sql.Add(" order by XLXSCLHQFD_HSJGS "); sql.ParamByName("pBJCLID").Value = PageParam.GetRTrimString("SelBJCLID"); DataSet ds = dberp.OpenDataSet(sql); ds.Tables[0].Columns.Add("JGBXX"); string sQryJGBID = queryentity.FieldByName("JGBID").Value.Trim(); sql.Clear(); sql.Add("select distinct XLXSJGBPZCLHQFD_CLHQDH,XLXSJGBPZJGB_JGBID,XLXSJGB_JGBMC"); sql.Add(" from XLXSJGBPZCLHQFD,XLXSJGBPZJGB"); sql.Add(" left join XLXSJGB on XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=XLXSJGBPZJGB_JGBID"); sql.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH"); sql.Add(" and XLXSJGBPZCLHQFD_JGBPZDH=:pJGBPZDH"); sql.Add(" and XLXSJGBPZCLHQFD_CLHQZH=XLXSJGBPZJGB_CLHQZH"); sql.Add(" and XLXSJGBPZCLHQFD_BJCLID=:pBJCLID"); sql.Add(" and isnull(XLXSJGBPZJGB_JGBID,' ')<>' '"); if (!sQryJGBID.Trim().Equals("")) { sql.Add(" and isnull(XLXSJGBPZJGB_JGBID,' ') = :pJGBID "); sql.ParamByName("pJGBID").Value = sQryJGBID; } sql.Add(" order by XLXSJGBPZCLHQFD_CLHQDH,XLXSJGBPZJGB_JGBID"); sql.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); sql.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); sql.ParamByName("pBJCLID").Value = PageParam.GetRTrimString("SelBJCLID"); DataSet dsJGB = dberp.OpenDataSet(sql); Dictionary dicJGBXX = new Dictionary(); for (int i = 0; i < dsJGB.Tables[0].Rows.Count; i++) { string sDH = dsJGB.Tables[0].Rows[i]["XLXSJGBPZCLHQFD_CLHQDH"].ToString().Trim(); string sJGBID = dsJGB.Tables[0].Rows[i]["XLXSJGBPZJGB_JGBID"].ToString().Trim(); string sJGBMC = dsJGB.Tables[0].Rows[i]["XLXSJGB_JGBMC"].ToString().Trim(); if (dicJGBXX.ContainsKey(sDH)) { dicJGBXX[sDH] = dicJGBXX[sDH].Trim() + "," + sJGBID + "|" + sJGBMC; } else { dicJGBXX.Add(sDH, sJGBID + "|" + sJGBMC); } } for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow newRow = ds.Tables[0].Rows[i]; if (dicJGBXX.ContainsKey(newRow["XLXSCLHQFD_CLHQDH"].ToString().Trim())) { newRow["JGBXX"] = dicJGBXX[newRow["XLXSCLHQFD_CLHQDH"].ToString().Trim()]; } } return ds; } private string GetJGBMC(string sMXBH, string sJGBID) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Add("select XLXSJGB_JGBMC from XLXSJGB where XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=:pJGBID"); SQL.ParamByName("pMXBH").Value = sMXBH; SQL.ParamByName("pJGBID").Value = sJGBID; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) return ds.Tables[0].Rows[0]["XLXSJGB_JGBMC"].ToString().Trim(); else return ""; } private void GetdsGrid(ref DataSet dsGrid, TDatabase dberp, TSQL SQL, string sMXBH, string sJGBID, string sJGBPZDH) { SQL.Clear(); if (sJGBID.Equals("")) { SQL.Add("SELECT XLXSJGBPZJGB_JGBID FROM XLXSJGBPZJGB "); SQL.Add(" left join XLXSJGB on XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=XLXSJGBPZJGB_JGBID "); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH and isnull(XLXSJGBPZJGB_JGBID,' ')<>' ' "); SQL.Add(" group by XLXSJGBPZJGB_JGBID "); SQL.Add(" order by XLXSJGBPZJGB_JGBID "); SQL.ParamByName("pJGBPZDH").Value = sJGBPZDH; SQL.ParamByName("pMXBH").Value = sMXBH; } else { SQL.Add("SELECT XLXSJGBPZJGB_JGBID FROM XLXSJGBPZJGB "); SQL.Add(" left join XLXSJGB on XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=XLXSJGBPZJGB_JGBID "); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH and isnull(XLXSJGBPZJGB_JGBID,' ')<>' ' "); SQL.Add(" and XLXSJGBPZJGB_JGBID = :pJGBID "); SQL.Add(" group by XLXSJGBPZJGB_JGBID "); SQL.Add(" order by XLXSJGBPZJGB_JGBID "); SQL.ParamByName("pMXBH").Value = sMXBH; SQL.ParamByName("pJGBPZDH").Value = sJGBPZDH; SQL.ParamByName("pJGBID").Value = sJGBID; } dsGrid = dberp.OpenDataSet(SQL); } #endregion protected void grdHQFD_RowDoubleClick(object sender, GThinking.N_CONTROL.RowDoubleClickEventArgs e) { base.InitEntityByCondition(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); DataSet dataTmp = new DataSet(); string sMSG = ""; string sQryJGBID = queryentity.FieldByName("JGBID").Value.Trim(); DataSet dsGrid = new DataSet(); GetdsGrid(ref dsGrid, dberp, SQL, PageParam.GetRTrimString("MXBH"), sQryJGBID, PageParam.GetRTrimString("JGBPZDH")); double pCount = dsGrid.Tables[0].Rows.Count; //若查询条件价格表为空、且列表上显示的“价格表”超过一张,控制双击行记录不起效果; if (sQryJGBID.Equals("")) { if (pCount > 1) { return; } } //若查询条件价格表为空、且列表上显示的“价格表”只有一张,控制双击行记录同当下效果; //若查询条件价格表不为空,控制列表上显示的“价格表”仅为查询条件指定的这一张,控制双击行记录只对这一张价格表进行行情范围调整 string curCLHQDH = grdHQFD.DataKeys[grdHQFD.SelectedIndex]["XLXSCLHQFD_CLHQDH"].ToString().Trim(); string lastCLHQDH = "";//上一段号 string nextCLHQDH = "";//下一段号 if (!curCLHQDH.Equals("00")) { lastCLHQDH = XLXSBJCL_HQFD.Transform(curCLHQDH, -1); } else { lastCLHQDH = "ZZ"; } if (!curCLHQDH.Equals("ZZ")) { nextCLHQDH = XLXSBJCL_HQFD.Transform(curCLHQDH, 1); } else { nextCLHQDH = "00"; } try { dberp.BeginTrans(); string curJGBIDS = ""; #region 获取当前段号下的所有价格表ID SQL.Clear(); SQL.Add("select distinct XLXSJGBPZCLHQFD_CLHQDH,XLXSJGBPZJGB_JGBID"); SQL.Add(" from XLXSJGBPZCLHQFD,XLXSJGBPZJGB"); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQZH=XLXSJGBPZJGB_CLHQZH"); SQL.Add(" and XLXSJGBPZCLHQFD_BJCLID=:pBJCLID"); SQL.Add(" and isnull(XLXSJGBPZJGB_JGBID,' ')<>' '"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQDH=:pCLHQDH"); if (!sQryJGBID.Trim().Equals("")) { SQL.Add(" and isnull(XLXSJGBPZJGB_JGBID,' ') = :pJGBID "); SQL.ParamByName("pJGBID").Value = sQryJGBID; } SQL.Add(" order by XLXSJGBPZCLHQFD_CLHQDH,XLXSJGBPZJGB_JGBID"); SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); SQL.ParamByName("pBJCLID").Value = PageParam.GetRTrimString("SelBJCLID"); SQL.ParamByName("pCLHQDH").Value = curCLHQDH; DataSet dsJGB1 = dberp.OpenDataSet(SQL); for (int i = 0; i < dsJGB1.Tables[0].Rows.Count; i++) { curJGBIDS += dsJGB1.Tables[0].Rows[i]["XLXSJGBPZJGB_JGBID"].ToString().Trim() + ","; } curJGBIDS = curJGBIDS.TrimEnd(','); #endregion string lastJGBIDS = ""; #region 获取上一段号下的所有价格表ID if (!lastCLHQDH.Trim().Equals("")) { SQL.Clear(); SQL.Add("select distinct XLXSJGBPZCLHQFD_CLHQDH,XLXSJGBPZJGB_JGBID"); SQL.Add(" from XLXSJGBPZCLHQFD,XLXSJGBPZJGB"); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQZH=XLXSJGBPZJGB_CLHQZH"); SQL.Add(" and XLXSJGBPZCLHQFD_BJCLID=:pBJCLID"); SQL.Add(" and isnull(XLXSJGBPZJGB_JGBID,' ')<>' '"); if (!sQryJGBID.Trim().Equals("")) { SQL.Add(" and isnull(XLXSJGBPZJGB_JGBID,' ') = :pJGBID "); SQL.ParamByName("pJGBID").Value = sQryJGBID; } SQL.Add(" and XLXSJGBPZCLHQFD_CLHQDH=:pCLHQDH"); SQL.Add(" order by XLXSJGBPZCLHQFD_CLHQDH,XLXSJGBPZJGB_JGBID"); SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); SQL.ParamByName("pBJCLID").Value = PageParam.GetRTrimString("SelBJCLID"); SQL.ParamByName("pCLHQDH").Value = lastCLHQDH; DataSet dsJGB2 = dberp.OpenDataSet(SQL); for (int i = 0; i < dsJGB2.Tables[0].Rows.Count; i++) { lastJGBIDS += dsJGB2.Tables[0].Rows[i]["XLXSJGBPZJGB_JGBID"].ToString().Trim() + ","; } lastJGBIDS = lastJGBIDS.TrimEnd(','); } #endregion string nextJGBIDS = ""; #region 获取下一段号下的所有价格表ID if (!nextCLHQDH.Trim().Equals("")) { SQL.Clear(); SQL.Add("select distinct XLXSJGBPZCLHQFD_CLHQDH,XLXSJGBPZJGB_JGBID"); SQL.Add(" from XLXSJGBPZCLHQFD,XLXSJGBPZJGB"); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQZH=XLXSJGBPZJGB_CLHQZH"); SQL.Add(" and XLXSJGBPZCLHQFD_BJCLID=:pBJCLID"); SQL.Add(" and isnull(XLXSJGBPZJGB_JGBID,' ')<>' '"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQDH=:pCLHQDH"); if (!sQryJGBID.Trim().Equals("")) { SQL.Add(" and isnull(XLXSJGBPZJGB_JGBID,' ') = :pJGBID "); SQL.ParamByName("pJGBID").Value = sQryJGBID; } SQL.Add(" order by XLXSJGBPZCLHQFD_CLHQDH,XLXSJGBPZJGB_JGBID"); SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); SQL.ParamByName("pBJCLID").Value = PageParam.GetRTrimString("SelBJCLID"); SQL.ParamByName("pCLHQDH").Value = nextCLHQDH; DataSet dsJGB3 = dberp.OpenDataSet(SQL); for (int i = 0; i < dsJGB3.Tables[0].Rows.Count; i++) { nextJGBIDS += dsJGB3.Tables[0].Rows[i]["XLXSJGBPZJGB_JGBID"].ToString().Trim() + ","; } nextJGBIDS = nextJGBIDS.TrimEnd(','); } #endregion if (curJGBIDS.Equals(""))//当前行价格表号为空,意为扩增材料行情范围 { //默认按上一行价格表进行扩围,其次按下一行价格表进行扩围 string tmpJGBIDS = lastJGBIDS; if (lastJGBIDS.Equals("") && nextJGBIDS.Equals(""))//上一行和下一行之价格表号都为空,不做什么事情 { dberp.CommitTrans(); return; } else if (lastJGBIDS.Equals("")) { tmpJGBIDS = nextJGBIDS; } #region SQL语句4:扩增材料行情分段 string[] tmpJGBID = tmpJGBIDS.Split(','); for (int i = 0; i < tmpJGBID.Length; i++) { //获取tmpJGBID[i]价格表所在行情组号下的所有材料的段号信息 SQL.Clear(); SQL.Add("select distinct XLXSJGBPZCLHQFD_BJCLID,XLXSJGBPZCLHQFD_CLHQDH"); SQL.Add(" from XLXSJGBPZCLHQFD"); SQL.Add(" where XLXSJGBPZCLHQFD_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQZH in (select XLXSJGBPZJGB_CLHQZH from XLXSJGBPZJGB where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH and XLXSJGBPZJGB_JGBID=:pJGBID)"); //SQL.Add(" and XLXSJGBPZCLHQFD_BJCLID<>:pBJCLID"); SQL.Add(" order by XLXSJGBPZCLHQFD_BJCLID"); SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); //SQL.ParamByName("pBJCLID").Value = PageParam.GetRTrimString("SelBJCLID"); DataSet dsTmp1 = dberp.OpenDataSet(SQL); if (dsTmp1.Tables[0].Rows.Count > 0) { //构建dicBJCL_DH,将查询结果按BJCLID进行归集,方便下面拼接sql语句 Dictionary dicBJCL_DH = new Dictionary(); for (int k = 0; k < dsTmp1.Tables[0].Rows.Count; k++) { string kBJCLID = dsTmp1.Tables[0].Rows[k]["XLXSJGBPZCLHQFD_BJCLID"].ToString().Trim(); string kCLHQDH = dsTmp1.Tables[0].Rows[k]["XLXSJGBPZCLHQFD_CLHQDH"].ToString().Trim(); if (dicBJCL_DH.ContainsKey(kBJCLID)) { dicBJCL_DH[kBJCLID] = dicBJCL_DH[kBJCLID] + "," + kCLHQDH; } else { dicBJCL_DH.Add(kBJCLID, kCLHQDH); } } //再将SelBJCLID材料的段号换成当前双击行段号 dicBJCL_DH[PageParam.GetRTrimString("SelBJCLID")] = curCLHQDH; //依dicBJCL_DH构建sql语句,得到需要更新的行情组号信息 SQL.Clear(); SQL.Add(string.Format("select {0}.XLXSJGBPZCLHQFD_CLHQZH as UpdZH", "a0")); SQL.Add(" from "); for (int k = 0; k < dicBJCL_DH.Keys.Count; k++) { if (k == 0) SQL.Add(string.Format("XLXSJGBPZCLHQFD {0}", "a" + k.ToString())); else SQL.Add(string.Format(",XLXSJGBPZCLHQFD {0}", "a" + k.ToString())); } SQL.Add(" where 1=1 "); int tmpIndex = 0; foreach (string sKey in dicBJCL_DH.Keys) { SQL.Add(string.Format(" and {0}.XLXSJGBPZCLHQFD_JGBPZDH='{1}'", "a" + tmpIndex.ToString(), PageParam.GetRTrimString("JGBPZDH"))); SQL.Add(string.Format(" and {0}.XLXSJGBPZCLHQFD_BJCLID='{1}' and " + CMISproDataBase.GetWhereEqual("{0}.XLXSJGBPZCLHQFD_CLHQDH", dicBJCL_DH[sKey]), "a" + tmpIndex.ToString(), sKey)); if (tmpIndex > 0) { SQL.Add(string.Format(" and {0}.XLXSJGBPZCLHQFD_CLHQZH={1}.XLXSJGBPZCLHQFD_CLHQZH ", "a0", "a" + tmpIndex.ToString())); } tmpIndex++; } DataSet dsTmp2 = dberp.OpenDataSet(SQL);//可能会查到多个组号 for (int j = 0; j < dsTmp2.Tables[0].Rows.Count; j++) { string sUpdZH = dsTmp2.Tables[0].Rows[j]["UpdZH"].ToString().Trim(); //组合产品目录 if (PageParam.GetRTrimString("CPMLLX").Equals("Y")) { string sErrorMsg = ""; string sJGCIDs = JGBPZ.GetJGCIDS(dberp, SQL, PageParam.GetRTrimString("JGBPZDH"), sUpdZH, PageParam.GetRTrimString("CPMLIDS"), PageParam.GetRTrimString("BJCLIDS"), ref sErrorMsg); if (sErrorMsg.Equals("")) { //tmpJGBID[i]价格表的JGCIDS数据 和 sJGCIDs求并集,更新到JGCIDS字段中 SQL.Clear(); SQL.Add("select XLXSJGB_JGCIDS from XLXSJGB where XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=:pJGBID"); SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); DataSet dsTmp3 = dberp.OpenDataSet(SQL); if (dsTmp3.Tables[0].Rows.Count > 0) { string OldJGCIDS = dsTmp3.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim(); string NewJGCIDS = OldJGCIDS; string[] sJGCIDList = sJGCIDs.Split(','); for (int k = 0; k < sJGCIDList.Length; k++) { string tmpJGCIDS = "," + NewJGCIDS + ","; if (!tmpJGCIDS.Contains("," + sJGCIDList[k].Trim() + ",")) { if (NewJGCIDS.Equals("")) NewJGCIDS = sJGCIDList[k].Trim(); else NewJGCIDS = NewJGCIDS + "," + sJGCIDList[k].Trim(); } } if (!NewJGCIDS.Equals(OldJGCIDS)) { SQL.Clear(); SQL.Add("update XLXSJGB set XLXSJGB_JGCIDS=:pJGCIDS where XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=:pJGBID"); SQL.ParamByName("pJGCIDS").Value = NewJGCIDS; SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); dberp.ExecSQL(SQL); } } //更新材料组号对应价格表 SQL.Clear(); SQL.Add("update XLXSJGBPZJGB set XLXSJGBPZJGB_JGBID=:pJGBID,XLXSJGBPZJGB_JGBMC=:pJGBMC where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH and XLXSJGBPZJGB_CLHQZH=:pCLHQZH "); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); SQL.ParamByName("pJGBMC").Value = GetJGBMC(PageParam.GetRTrimString("MXBH"), tmpJGBID[i].Trim()); SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); SQL.ParamByName("pCLHQZH").Value = sUpdZH; dberp.ExecSQL(SQL); } else { ShowMessage(sErrorMsg); dberp.CommitTrans(); return; } } else//单一产品目录 { SQL.Clear(); SQL.Add("update XLXSJGBPZJGB set XLXSJGBPZJGB_JGBID=:pJGBID,XLXSJGBPZJGB_JGBMC=:pJGBMC"); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZJGB_CLHQZH=:pCLHQZH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); SQL.ParamByName("pJGBMC").Value = GetJGBMC(PageParam.GetRTrimString("MXBH"), tmpJGBID[i].Trim()); SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); SQL.ParamByName("pCLHQZH").Value = sUpdZH; dberp.ExecSQL(SQL); } } } dberp.ExecSQL(string.Format("update XLXSJGB set XLXSJGB_CPMLID='{0}' where XLXSJGB_MXBH='{1}' and XLXSJGB_JGBID='{2}' and isnull(XLXSJGB_CPMLID,' ')=' '", PageParam.GetRTrimString("CPMLID"), PageParam.GetRTrimString("MXBH"), tmpJGBID[i].Trim())); #region SQL语句6:删除价格表现有材料行情范围 SQL.Clear(); SQL.Add("delete from XLXSJGBCLHQFD where XLXSJGBCLHQFD_MXBH=:pMXBH and XLXSJGBCLHQFD_JGBID=:pJGBID"); SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); dberp.ExecSQL(SQL); #endregion #region SQL语句7:插入价格表调整后材料行情范围 SQL.Clear(); SQL.Add("insert into XLXSJGBCLHQFD(XLXSJGBCLHQFD_MXBH,XLXSJGBCLHQFD_JGBID,XLXSJGBCLHQFD_BJCLID,XLXSJGBCLHQFD_HSJGS,XLXSJGBCLHQFD_HSJGZ,XLXSJGBCLHQFD_CLJGS,XLXSJGBCLHQFD_CLJGZ,"); SQL.Add(" XLXSJGBCLHQFD_WHR,XLXSJGBCLHQFD_WHRID,XLXSJGBCLHQFD_WHSJ) "); SQL.Add("select :pMXBH,:pJGBID,BJCLID,a1.XLXSCLHQFD_HSJGS as HSJGS,a2.XLXSCLHQFD_HSJGZ as HSJGZ,a1.XLXSCLHQFD_CLJGS as CLJGS,a2.XLXSCLHQFD_CLJGZ as CLJGZ,"); SQL.Add(" :pWHR,:pWHRID,:pWHSJ "); SQL.Add(" from"); SQL.Add(" ("); SQL.Add(" select XLXSJGBPZCLHQFD_BJCLID as BJCLID,"); SQL.Add(" min(XLXSJGBPZCLHQFD_CLHQDH) as CLHQDH1,max(XLXSJGBPZCLHQFD_CLHQDH) as CLHQDH2"); SQL.Add(" from XLXSJGBPZJGB,XLXSJGBPZCLHQFD"); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZJGB_JGBID=:pJGBID"); SQL.Add(" and XLXSJGBPZCLHQFD_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQZH=XLXSJGBPZJGB_CLHQZH"); SQL.Add(" group by XLXSJGBPZCLHQFD_BJCLID"); SQL.Add(" ) a "); SQL.Add(" left join XLXSCLHQFD a1 on a1.XLXSCLHQFD_BJCLID=a.BJCLID and a1.XLXSCLHQFD_CLHQDH=a.CLHQDH1"); SQL.Add(" left join XLXSCLHQFD a2 on a2.XLXSCLHQFD_BJCLID=a.BJCLID and a2.XLXSCLHQFD_CLHQDH=a.CLHQDH2"); SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserId; SQL.ParamByName("pWHSJ").Value = DateTime.Now; SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); dberp.ExecSQL(SQL); #endregion } #endregion } else //当前行价格表号不为空,意为缩减材料行情范围 { if (!lastJGBIDS.Equals("") && !nextJGBIDS.Equals(""))//上一行和下一行之价格表号都不为空,不做什么事情 { dberp.CommitTrans(); return; } else { #region SQL语句5:缩减材料行情分段 string[] tmpJGBID = curJGBIDS.Split(','); for (int i = 0; i < tmpJGBID.Length; i++) { SQL.Clear(); SQL.Add("select XLXSJGBPZJGB_CLHQZH as UpdZH"); SQL.Add(" from XLXSJGBPZJGB,XLXSJGBPZCLHQFD"); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQZH=XLXSJGBPZJGB_CLHQZH"); SQL.Add(" and XLXSJGBPZCLHQFD_BJCLID=:pBJCLID"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQDH=:pCLHQDH"); SQL.Add(" and XLXSJGBPZJGB_JGBID=:pJGBID"); SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); SQL.ParamByName("pBJCLID").Value = PageParam.GetRTrimString("SelBJCLID"); SQL.ParamByName("pCLHQDH").Value = curCLHQDH;//缩减的材料行情段号 SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); DataSet dsTmp1 = dberp.OpenDataSet(SQL); //仅查出一条记录 for (int j = 0; j < dsTmp1.Tables[0].Rows.Count; j++) { string sUpdZH = dsTmp1.Tables[0].Rows[j]["UpdZH"].ToString().Trim(); //组合产品目录 if (PageParam.GetRTrimString("CPMLLX").Equals("Y")) { //清空材料组号对应价格表 SQL.Clear(); SQL.Add("update XLXSJGBPZJGB set XLXSJGBPZJGB_JGBID=null,XLXSJGBPZJGB_JGBMC=null where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH and XLXSJGBPZJGB_CLHQZH=:pCLHQZH "); SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); SQL.ParamByName("pCLHQZH").Value = sUpdZH; dberp.ExecSQL(SQL); //tmpJGBID[i]价格表的JGCIDS数据 挖掉缩减的材料行情段号对应的单一产品目录价格表 SQL.Clear(); SQL.Add("select XLXSJGB_JGCIDS from XLXSJGB where XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=:pJGBID"); SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); DataSet dsTmp2 = dberp.OpenDataSet(SQL); if (dsTmp2.Tables[0].Rows.Count > 0) { string OldJGCIDS = dsTmp2.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim(); string NewJGCIDS = "," + OldJGCIDS + ","; SQL.Clear(); SQL.Add("select XLXSJGBPZJGB_JGBID "); SQL.Add(" from XLXSJGBPZJGB,XLXSJGBPZCLHQFD"); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=XLXSJGBPZCLHQFD_JGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQZH=XLXSJGBPZJGB_CLHQZH"); SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBPZJGB_JGBID", OldJGCIDS)); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQDH=:pCLHQDH"); SQL.Add(" and XLXSJGBPZCLHQFD_BJCLID=:pBJCLID"); SQL.ParamByName("pCLHQDH").Value = curCLHQDH;//缩减的材料行情段号 SQL.ParamByName("pBJCLID").Value = PageParam.GetRTrimString("SelBJCLID"); DataSet dsTmp3 = dberp.OpenDataSet(SQL); for (int k = 0; k < dsTmp3.Tables[0].Rows.Count; k++) { if (NewJGCIDS.Contains("," + dsTmp3.Tables[0].Rows[k]["XLXSJGBPZJGB_JGBID"].ToString().Trim() + ",")) { NewJGCIDS = NewJGCIDS.Replace("," + dsTmp3.Tables[0].Rows[k]["XLXSJGBPZJGB_JGBID"].ToString().Trim() + ",", ","); } } NewJGCIDS = NewJGCIDS.TrimStart(',').TrimEnd(','); if (!NewJGCIDS.Equals(OldJGCIDS)) { SQL.Clear(); SQL.Add("update XLXSJGB set XLXSJGB_JGCIDS=:pJGCIDS where XLXSJGB_MXBH=:pMXBH and XLXSJGB_JGBID=:pJGBID"); SQL.ParamByName("pJGCIDS").Value = NewJGCIDS; SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); dberp.ExecSQL(SQL); } } } else//单一产品目录 { //单一产品目录下的价格表(比如:X1|塑料类电线),在缩小其材料行情范围时(比如缩小铜价), //需要先执行如下语句判断缩小的这一段是否在以它为基价的组合价格表对应铜价行情范围之内,如果在,则不允许缩小范围,并给出提示。 SQL.Clear(); SQL.Add(" SELECT XLXSJGBPZJGB_JGBPZDH,XLXSJGBPZJGB_CLHQZH FROM XLXSJGBPZJGB"); SQL.Add(" LEFT JOIN XLXSJGBPZ ON XLXSJGBPZ_JGBPZDH = XLXSJGBPZJGB_JGBPZDH"); SQL.Add(" LEFT JOIN XLXSCPML ON XLXSCPML_CPMLID = XLXSJGBPZ_CPMLID"); SQL.Add(" where 1 = 1"); SQL.Add(" and exists ("); SQL.Add(" select 1 from XLXSJGB where 1=1 and XLXSJGB_MXBH='JGB' and XLXSJGB_JGCIDS like :pJGBID "); SQL.Add(" and isnull(XLXSJGBPZJGB_JGBID,' ') = XLXSJGB_JGBID ) "); SQL.ParamByName("pJGBID").Value = "%" + tmpJGBID[i].Trim() + "%"; dataTmp = dberp.OpenDataSet(SQL); if (dataTmp.Tables[0].Rows.Count > 0) { sMSG = "配置单号为【" + dataTmp.Tables[0].Rows[0][0].ToString().Trim() + "】的记录中材料行情组号【" + dataTmp.Tables[0].Rows[0][1].ToString().Trim() + "】已经使用了该价格表,不允许去除!"; throw new Exception(sMSG); } SQL.Clear(); SQL.Add("update XLXSJGBPZJGB set XLXSJGBPZJGB_JGBID=null,XLXSJGBPZJGB_JGBMC=null"); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZJGB_CLHQZH=:pCLHQZH"); SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); SQL.ParamByName("pCLHQZH").Value = sUpdZH; dberp.ExecSQL(SQL); } } if (!CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSJGBPZJGB_JGBPZDH from XLXSJGBPZJGB where XLXSJGBPZJGB_JGBID='{0}'", tmpJGBID[i].Trim()))) { dberp.ExecSQL(string.Format("update XLXSJGB set XLXSJGB_CPMLID=null where XLXSJGB_MXBH='{0}' and XLXSJGB_JGBID='{1}'", PageParam.GetRTrimString("MXBH"), tmpJGBID[i].Trim())); } #region SQL语句6:删除价格表现有材料行情范围 SQL.Clear(); SQL.Add("delete from XLXSJGBCLHQFD where XLXSJGBCLHQFD_MXBH=:pMXBH and XLXSJGBCLHQFD_JGBID=:pJGBID"); SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); dberp.ExecSQL(SQL); #endregion #region SQL语句7:插入价格表调整后材料行情范围 SQL.Clear(); SQL.Add("insert into XLXSJGBCLHQFD(XLXSJGBCLHQFD_MXBH,XLXSJGBCLHQFD_JGBID,XLXSJGBCLHQFD_BJCLID,XLXSJGBCLHQFD_HSJGS,XLXSJGBCLHQFD_HSJGZ,XLXSJGBCLHQFD_CLJGS,XLXSJGBCLHQFD_CLJGZ,"); SQL.Add(" XLXSJGBCLHQFD_WHR,XLXSJGBCLHQFD_WHRID,XLXSJGBCLHQFD_WHSJ) "); SQL.Add("select :pMXBH,:pJGBID,BJCLID,a1.XLXSCLHQFD_HSJGS as HSJGS,a2.XLXSCLHQFD_HSJGZ as HSJGZ,a1.XLXSCLHQFD_CLJGS as CLJGS,a2.XLXSCLHQFD_CLJGZ as CLJGZ,"); SQL.Add(" :pWHR,:pWHRID,:pWHSJ "); SQL.Add(" from"); SQL.Add(" ("); SQL.Add(" select XLXSJGBPZCLHQFD_BJCLID as BJCLID,"); SQL.Add(" min(XLXSJGBPZCLHQFD_CLHQDH) as CLHQDH1,max(XLXSJGBPZCLHQFD_CLHQDH) as CLHQDH2"); SQL.Add(" from XLXSJGBPZJGB,XLXSJGBPZCLHQFD"); SQL.Add(" where XLXSJGBPZJGB_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZJGB_JGBID=:pJGBID"); SQL.Add(" and XLXSJGBPZCLHQFD_JGBPZDH=:pJGBPZDH"); SQL.Add(" and XLXSJGBPZCLHQFD_CLHQZH=XLXSJGBPZJGB_CLHQZH"); SQL.Add(" group by XLXSJGBPZCLHQFD_BJCLID"); SQL.Add(" ) a "); SQL.Add(" left join XLXSCLHQFD a1 on a1.XLXSCLHQFD_BJCLID=a.BJCLID and a1.XLXSCLHQFD_CLHQDH=a.CLHQDH1"); SQL.Add(" left join XLXSCLHQFD a2 on a2.XLXSCLHQFD_BJCLID=a.BJCLID and a2.XLXSCLHQFD_CLHQDH=a.CLHQDH2"); SQL.ParamByName("pMXBH").Value = PageParam.GetRTrimString("MXBH"); SQL.ParamByName("pJGBID").Value = tmpJGBID[i].Trim(); SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHRID").Value = tSession.UserId; SQL.ParamByName("pWHSJ").Value = DateTime.Now; SQL.ParamByName("pJGBPZDH").Value = PageParam.GetRTrimString("JGBPZDH"); dberp.ExecSQL(SQL); #endregion } #endregion } } moduleGV_PageIndexChanging(null, null); dberp.CommitTrans(); CacheNotify.TableIsUpdated("DBERP", "XLXSJGB"); } catch (Exception ex) { ShowMessage(ex.Message); dberp.RollbackTrans(); } } } }