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_CONTROL; using GThinking.N_MISPRO; using GThinking.N_MISPRO.Data; using GThinking.N_MISPRO.Utility; using GThinking.N_MODEL.Dialog; using GThinking.N_WORKFLOW; using GThinking.N_MISPRO.TableCache; using GThinking.N_MISPRO.MISPROAS; using System.Collections; using GThinking.N_MODEL.ModelBase; using System.Collections.Generic; using GThinking.N_PUBLIC; using System.Text.RegularExpressions; using System.Text; using GThinking.N_MISPROAS.SysData; namespace GThinking.N_XLXSBJ { public class XLBJCXBO : BOBase { #region 自定义方法 public List GetCPYTInfoList() { string sCPMLIDS = ""; string sAPPCJSXFS = GetAPPCJSXFS(ref sCPMLIDS); List rEntity = new List(); string sSQL = ""; if (sAPPCJSXFS.Equals("1")) { sSQL = " select distinct XLCPYT_XSSX,XLXHB_CPYT as XLCPYT_CPYT,XLCPYT_CPYTMC from XLXHB "; sSQL += " left join XLCPYT on XLCPYT_CPYT = XLXHB_CPYT "; sSQL += " where ISNULL(XLCPYT_CPYT,' ') <> ' ' order by XLCPYT_XSSX,XLXHB_CPYT "; } else { sSQL = " select distinct XLXSBJXHML_CPMLID as XLCPYT_CPYT,XLXSCPML_CPMLMC as XLCPYT_CPYTMC from XLXSBJXHML "; sSQL += " left join XLXSCPML on XLXSCPML_CPMLID = XLXSBJXHML_CPMLID "; sSQL += " where ISNULL(XLXSCPML_CPMLID,' ') <> ' ' "; if (!sCPMLIDS.Trim().Equals("")) { sSQL += " and " + CMISproDataBase.GetWhereEqual("XLXSCPML_CPMLID", sCPMLIDS); } else { sSQL += " and XLXSCPML_BJY = 'Y' "; } sSQL += " order by XLXSBJXHML_CPMLID "; } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(sSQL); DataSet ds = dberp.OpenDataSet(SQL); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { CPYTInfo info = new CPYTInfo(); info.GetType().GetProperty("XLCPYT_CPYT").SetValue(info, ds.Tables[0].Rows[i]["XLCPYT_CPYT"].ToString().Trim(), null); info.GetType().GetProperty("XLCPYT_CPYTMC").SetValue(info, ds.Tables[0].Rows[i]["XLCPYT_CPYTMC"].ToString().Trim(), null); info.GetType().GetProperty("APPCJSXFS").SetValue(info, sAPPCJSXFS, null); info.GetType().GetProperty("DJBJ").SetValue(info, "N", null); rEntity.Add(info); } return rEntity; } public List GetXLXHInfoList(string sCPYT, string sXLXHID, string isMHCX) { string sCPMLIDS = ""; string sAPPCJSXFS = GetAPPCJSXFS(ref sCPMLIDS); List rEntity = new List(); string sSQL = ""; if (sAPPCJSXFS.Equals("1")) { sSQL = "select XLXHB_XLXHID, ' ' as XLXSBJXHML_DYDJID,XLXHB_XLXHID as XLXHB_XLXHMC from XLXHB where 1=1 "; sSQL += " and XLXHB_CPYT='" + sCPYT + "'"; } else { sSQL = " select XLXHB_XLXHID,XLXSBJXHML_DYDJID, case when ISNULL(XLXSBJXHML_DYDJID,' ') = ' ' then XLXHB_XLXHID else rtrim(XLXHB_XLXHID)||'-'|| XLXSBJXHML_DYDJID end as XLXHB_XLXHMC "; sSQL += " from XLXHB,XLXSBJXHML where XLXSBJXHML_XLXHID=XLXHB_XLXHID and XLXSBJXHML_CPMLID='" + sCPYT + "' "; } if (!sXLXHID.Equals("")) { if (isMHCX.Equals("Y")) { sSQL += " and XLXHB_XLXHID like '%" + sXLXHID + "%'"; } else { sSQL += " and XLXHB_XLXHID = '" + sXLXHID + "'"; } } sSQL += " and isnull(XLXHB_TYBZ,'N') <> 'Y' "; sSQL += " order by XLXHB_XLXHID "; if (sAPPCJSXFS.Equals("2")) sSQL += " ,XLXSBJXHML_DYDJID "; TWorkflow wf = new TWorkflow(tSession, new System.Web.Caching.Cache()); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(sSQL); DataSet ds = dberp.OpenDataSet(SQL); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { XLXHInfo info = new XLXHInfo(); info.GetType().GetProperty("XLXHB_XLXHID").SetValue(info, ds.Tables[0].Rows[i]["XLXHB_XLXHID"].ToString().Trim(), null); info.GetType().GetProperty("XLXSBJXHML_DYDJID").SetValue(info, ds.Tables[0].Rows[i]["XLXSBJXHML_DYDJID"].ToString().Trim(), null); info.GetType().GetProperty("XLXHB_XLXHMC").SetValue(info, ds.Tables[0].Rows[i]["XLXHB_XLXHMC"].ToString().Trim(), null); rEntity.Add(info); } return rEntity; } public List GetXLGGInfoList(int iStart, int iNum, string sXLXHID, string sDYDJID, string sXLGGID, string sJGBID, string isMHCX, string sCPML, out int iRowCount) { int tmpXSWS = string.IsNullOrEmpty(GetOption("BJU002")) ? 5 : CMISproConvert.StrToInt(GetOption("BJU002")); if (tmpXSWS < 0) tmpXSWS = 0; else if (tmpXSWS > 8) tmpXSWS = 8; if (sJGBID.Trim().Equals("DEFAULT")) { List ListJGB = GetJGBInfoList(); if (ListJGB.Count > 0) sJGBID = ListJGB[0].JGBID; else sJGBID = ""; } iRowCount = 0; List rEntity = new List(); if (sJGBID.Trim().Equals("")) return rEntity; string sCPMLIDS = ""; string sBJRQ = DateTime.Now.ToShortDateString().Trim(); string sJGFID = XLBJDUtils.GetJGFID(sBJRQ); string sAPPCJSXFS = GetAPPCJSXFS(ref sCPMLIDS); string sFields = @"JGBID,XLXHID,DYDJID,XLGGID,CPJJ,XLBZID,XLBZMC"; int top = iStart + iNum; string sCunt = "select count(1) "; string sOrder = ""; string sSQL = ""; string sculom = "select top " + top.ToString().Trim() + " JGBID, XLXHID, DYDJID, XLGGID, CPJJ,XLBZID,XLBZMC "; sSQL += " from (select XLXSJGBMX_JGBID as JGBID, XLXSJGBMX_XLXHID as XLXHID, XLXSJGBMX_DYDJID as DYDJID, XLXSJGBMX_XLGGID as XLGGID, RoundFix(XLXSJGBMX_HSBJ," + tmpXSWS + ") as CPJJ,XLXSJGBMX_XLBZID as XLBZID, XLBZ_XLBZLXMC as XLBZMC ,XLXSJGBMX_XSXH,PX,XLGGB_XH as minXH "; sSQL += " from ( "; sSQL += " select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID,XLXSJGBMX_DYDJID,XLXSJGBMX_HSBJ,XLXSJGBMX_WSBJ,XLXSJGBMX_JLDW,XLXSJGBMX_XSXH,1 as PX "; sSQL += " from XLXSJGBMX where 1=1 and XLXSJGBMX_JGBID='" + sJGFID + "' "; sSQL += " union all "; sSQL += " select XLXSJGBMX_JGBID,XLXSJGBMX_XH,XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID,XLXSJGBMX_DYDJID,XLXSJGBMX_HSBJ,XLXSJGBMX_WSBJ,XLXSJGBMX_JLDW,XLXSJGBMX_XSXH,2 as PX "; sSQL += " from XLXSJGBMX where 1=1 "; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select XLXSCPML_CPMLLX,XLXSJGB_JGCIDS,XLXSJGB_BJLY,XLXSJGB_YXQS,XLXSJGB_YXQZ,XLXSJGB_JGBMC "); SQL.Add("from XLXSJGB "); SQL.Add("left join XLXSCPML on XLXSCPML_CPMLID=XLXSJGB_CPMLID "); SQL.Add("where XLXSJGB_MXBH='JGB' and XLXSJGB_JGBID=:pJGBID "); SQL.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGB = dberp.OpenDataSet(SQL); if (dsJGB.Tables[0].Rows.Count > 0) { //Y|组合产品目录、N|单一产品目录 string sCPMLLX = dsJGB.Tables[0].Rows[0]["XLXSCPML_CPMLLX"].ToString().Trim(); string sJGCIDS = dsJGB.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim(); if (sCPMLLX.Equals("Y"))//组合产品目录价格表 { sSQL += (" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", sJGCIDS)); } else { sSQL += (" and XLXSJGBMX_JGBID='" + sJGBID + "'"); } } sSQL += " and not exists(select 1 from XLXSJGBMX B where B.XLXSJGBMX_JGBID='" + sJGFID + "' "; sSQL += " and B.XLXSJGBMX_XLXHID = XLXSJGBMX.XLXSJGBMX_XLXHID "; sSQL += " and B.XLXSJGBMX_XLGGID = XLXSJGBMX.XLXSJGBMX_XLGGID "; sSQL += " and B.XLXSJGBMX_XLBZID = XLXSJGBMX.XLXSJGBMX_XLBZID and B.XLXSJGBMX_DYDJID = XLXSJGBMX.XLXSJGBMX_DYDJID ) "; sSQL += " ) C "; sSQL += " left join XLBZ on XLBZ_XLBZID = XLXSJGBMX_XLBZID "; sSQL += " left join XLXHB on XLXHB_XLXHID = XLXSJGBMX_XLXHID "; sSQL += " left join XLXSBJXLGGTHB XLXSBJXLGGTHB_GG on XLXSBJXLGGTHB_GG.XLXSBJXLGGTHB_XLGGID = XLXSJGBMX_XLGGID "; sSQL += " left join XLGGB on XLGGB_XLGGID = isnull(XLXSBJXLGGTHB_GG.XLXSBJXLGGTHB_XLGGIDCH,' ') and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "; if (sAPPCJSXFS.Equals("2")) { sSQL += " left join XLXSBJXHML a on a.XLXSBJXHML_XLXHID=XLXSJGBMX_XLXHID and isnull(a.XLXSBJXHML_DYDJID,' ')=' ' "; sSQL += " left join XLXSBJXHML b on b.XLXSBJXHML_XLXHID=XLXSJGBMX_XLXHID and isnull(b.XLXSBJXHML_DYDJID,' ') = isnull(XLXSJGBMX_DYDJID, ' ') "; } if (isMHCX.Equals("Y")) { sSQL += " where XLXSJGBMX_XLXHID like '%" + sXLXHID + "%' "; if (!sXLGGID.Equals("")) { sSQL += " and (XLXSJGBMX_XLGGID like '%" + sXLGGID + "%' or XLXSJGBMX_XLGGID like '%" + sXLGGID.Replace("*", "×") + "%' or XLXSJGBMX_XLGGID like '%" + sXLGGID.Replace("×", "*") + "%')"; } } else { sSQL += " where XLXSJGBMX_XLXHID = '" + sXLXHID + "' "; if (!sXLGGID.Equals("")) { sSQL += " and (XLXSJGBMX_XLGGID = '" + sXLGGID + "' or XLXSJGBMX_XLGGID = '" + sXLGGID.Replace("*", "×") + "' or XLXSJGBMX_XLGGID = '" + sXLGGID.Replace("×", "*") + "')"; } } if (sAPPCJSXFS.Equals("2")) { if (!sDYDJID.Trim().Equals("")) { sSQL += " and ISNULL(XLXSJGBMX_DYDJID,' ') = '" + sDYDJID + "' "; } if (!sCPML.Trim().Equals("")) { sSQL += " and (case when isnull(b.XLXSBJXHML_CPMLID,' ')<>' ' then b.XLXSBJXHML_CPMLID else isnull(a.XLXSBJXHML_CPMLID,' ') end) = '" + sCPML + "' "; } if (!sCPMLIDS.Trim().Equals("")) { sCPMLIDS = SetStr(sCPMLIDS); sSQL += " and (case when isnull(b.XLXSBJXHML_CPMLID,' ')<>' ' then b.XLXSBJXHML_CPMLID else isnull(a.XLXSBJXHML_CPMLID,' ') end) in " + sCPMLIDS + " "; } } sSQL += ") D where 1=1 "; sOrder += " order by PX,XLXSJGBMX_XSXH "; SQL.Clear(); SQL.Add(sculom + sSQL + sOrder); DataSet ds = dberp.OpenDataSet(SQL); TSQL SQLCOUNT = new TSQL(dberp); SQLCOUNT.Clear(); SQLCOUNT.Add(sCunt + sSQL); DataSet dsCount = dberp.OpenDataSet(SQLCOUNT); if (dsCount.Tables[0].Rows.Count > 0) { iRowCount = CMISproConvert.StrToInt(dsCount.Tables[0].Rows[0][0].ToString().Trim()); } int iMax = Math.Min(iStart + iNum, iRowCount); for (int i = iStart; i < iMax; i++) { XLGGInfo info = new XLGGInfo(); string[] aField = sFields.Split(','); foreach (string Field in aField) { if (Field.Equals("CPJJ")) { double dCPJJ = NumberUtils.RoundX(CMISproConvert.StrToFloat(ds.Tables[0].Rows[i][Field.Trim()].ToString().Trim()), tmpXSWS); info.GetType().GetProperty(Field.Trim()).SetValue(info, XLBJDUtils.strPadRight(dCPJJ.ToString().Trim(), tmpXSWS), null); } else info.GetType().GetProperty(Field.Trim()).SetValue(info, ds.Tables[0].Rows[i][Field.Trim()].ToString().Trim(), null); } rEntity.Add(info); } return rEntity; } private string GetAPPCJSXFS(ref string sCPMLIDS) { string sRstr = "1"; XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860027); if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_APPCJSXFS)) sRstr = pzxx.XLXSBJPZ_APPCJSXFS; if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_CPMLIDS)) sCPMLIDS = pzxx.XLXSBJPZ_CPMLIDS; return sRstr; } private string SetStr(string sCPMLIDS) { string Rstr = ""; if (!sCPMLIDS.Trim().Equals("")) { foreach (string str in sCPMLIDS.Split(',')) { if (!Rstr.Equals("")) Rstr += ","; Rstr += "'" + str.Trim() + "'"; } Rstr = "(" + Rstr + ")"; } return Rstr; } public List GetLSXLGGInfoList(string sXLXHGGlist, string sXLXHID, string sXLGGID, string sJGBID) { int tmpXSWS = string.IsNullOrEmpty(GetOption("BJU002")) ? 5 : CMISproConvert.StrToInt(GetOption("BJU002")); if (tmpXSWS < 0) tmpXSWS = 0; else if (tmpXSWS > 8) tmpXSWS = 8; List rEntity = new List(); string sFields = @"XLXHID,DYDJID,XLGGID,CPJJ,XLBZID,XLBZMC"; string sSQL = "select XLXSJGBMX_XLXHID as XLXHID, XLXSJGBMX_DYDJID as DYDJID, XLXSJGBMX_XLGGID as XLGGID, RoundFix(XLXSJGBMX_HSBJ," + tmpXSWS + ") as CPJJ,XLXSJGBMX_XLBZID as XLBZID, XLBZ_XLBZLXMC as XLBZMC from XLXSJGBMX left join XLBZ on XLBZ_XLBZID = XLXSJGBMX_XLBZID where 1=1 "; if (!sXLXHGGlist.Equals("")) { sSQL += " and ("; string[] XLXHGGlist = sXLXHGGlist.Split(';'); for(int i= 0;i GetJGBInfoList() { List rEntity = new List(); string sFields = @" JGBID, JGBMC, YXQS, YXQZ "; string[] aField = sFields.Split(','); Boolean HasTJYS_1 = false;//是否查询出了XLXSJGB_TJYS为1的价格表 string sSQL = ""; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); sSQL += "select XLXSJGB_JGBID as JGBID, XLXSJGB_JGBMC as JGBMC, XLXSJGB_YXQS as YXQS, XLXSJGB_YXQZ as YXQZ, XLXSJGB_JGBID, XLXSJGB_TJYS, XLXSJGB_JGBIDS from XLXSJGB "; sSQL += " where XLXSJGB_MXBH = 'JGB' and isnull(XLXSJGB_YXQS, convert(datetime, '1900-01-01')) <= '" + DateTime.Now.ToString() + "' "; if (!GetOption("XSBJ02").Trim().Equals("")) sSQL += " and " + CMISproDataBase.GetWhereEqual("XLXSJGB_TJYS", GetOption("XSBJ02")); sSQL += " order by XLXSJGB_TJYS, XLXSJGB_YXQS desc, XLXSJGB_JGBID"; SQL.Clear(); SQL.Add(sSQL); DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { //先排XLXSJGB_TJYS为0的价格表 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { if (ds.Tables[0].Rows[i]["XLXSJGB_TJYS"].ToString().Trim().Equals("0")) { JGBInfo info = new JGBInfo(); foreach (string Field in aField) { info.GetType().GetProperty(Field.Trim()).SetValue(info, ds.Tables[0].Rows[i][Field.Trim()].ToString().Trim(), null); } rEntity.Add(info); } } //再排XLXSJGB_TJYS为1的价格表 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { if (ds.Tables[0].Rows[i]["XLXSJGB_TJYS"].ToString().Trim().Equals("1")) { JGBInfo info1 = new JGBInfo(); foreach (string Field in aField) { info1.GetType().GetProperty(Field.Trim()).SetValue(info1, ds.Tables[0].Rows[i][Field.Trim()].ToString().Trim(), null); } rEntity.Add(info1); HasTJYS_1 = true; //排以XLXSJGB_TJYS为1的价格表作为基价的区域价价格表(XLXSJGB_TJYS为2) for (int j = 0; j < ds.Tables[0].Rows.Count; j++) { if (ds.Tables[0].Rows[j]["XLXSJGB_TJYS"].ToString().Trim().Equals("2")) { if (("," + ds.Tables[0].Rows[j]["XLXSJGB_JGBIDS"].ToString().Trim() + ",").IndexOf("," + ds.Tables[0].Rows[i]["XLXSJGB_JGBID"].ToString().Trim() + ",") >= 0) { JGBInfo info2 = new JGBInfo(); foreach (string Field in aField) { info2.GetType().GetProperty(Field.Trim()).SetValue(info2, ds.Tables[0].Rows[j][Field.Trim()].ToString().Trim(), null); } rEntity.Add(info2); } } } } } //若没有XLXSJGB_TJYS为1的价格表,直接单独排XLXSJGB_TJYS为2的价格表 if (!HasTJYS_1) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { if (ds.Tables[0].Rows[i]["XLXSJGB_TJYS"].ToString().Trim().Equals("2")) { JGBInfo info2 = new JGBInfo(); foreach (string Field in aField) { info2.GetType().GetProperty(Field.Trim()).SetValue(info2, ds.Tables[0].Rows[i][Field.Trim()].ToString().Trim(), null); } rEntity.Add(info2); } } } } if (rEntity.Count == 0) { JGBInfo info = new JGBInfo(); rEntity.Add(info); } return rEntity; } #endregion } public class CPYTInfo { private string _XLCPYT_CPYT = string.Empty; public string XLCPYT_CPYT { get { return _XLCPYT_CPYT; } set { _XLCPYT_CPYT = value; } } private string _XLCPYT_CPYTMC = string.Empty; public string XLCPYT_CPYTMC { get { return _XLCPYT_CPYTMC; } set { _XLCPYT_CPYTMC = value; } } private string _APPCJSXFS = string.Empty; public string APPCJSXFS { get { return _APPCJSXFS; } set { _APPCJSXFS = value; } } //点击标记 private string _DJBJ = string.Empty; public string DJBJ { get { return _DJBJ; } set { _DJBJ = value; } } } public class XLXHInfo { private string _XLXHB_XLXHID = string.Empty; public string XLXHB_XLXHID { get { return _XLXHB_XLXHID; } set { _XLXHB_XLXHID = value; } } private string _XLXSBJXHML_DYDJID = string.Empty; public string XLXSBJXHML_DYDJID { get { return _XLXSBJXHML_DYDJID; } set { _XLXSBJXHML_DYDJID = value; } } private string _XLXHB_XLXHMC = string.Empty; public string XLXHB_XLXHMC { get { return _XLXHB_XLXHMC; } set { _XLXHB_XLXHMC = value; } } } public class XLGGInfo : ModelBase { private string _JGBID = string.Empty; public string JGBID { get { return _JGBID; } set { _JGBID = value; } } private string _XLXHID = string.Empty; public string XLXHID { get { return _XLXHID; } set { _XLXHID = value; } } private string _DYDJID = string.Empty; public string DYDJID { get { return _DYDJID; } set { _DYDJID = value; } } private string _XLGGID = string.Empty; public string XLGGID { get { return _XLGGID; } set { _XLGGID = value; } } private string _CPJJ = string.Empty; public string CPJJ { get { return _CPJJ; } set { _CPJJ = value; } } private string _XLBZID = string.Empty; public string XLBZID { get { return _XLBZID; } set { _XLBZID = value; } } private string _XLBZMC = string.Empty; public string XLBZMC { get { return _XLBZMC; } set { _XLBZMC = value; } } private string _XSTLJ = string.Empty; public string XSTLJ { get { return _XSTLJ; } set { _XSTLJ = value; } } private string _TBJCLID = string.Empty; public string TBJCLID { get { return _TBJCLID; } set { _TBJCLID = value; } } private string _LBJCLID = string.Empty; public string LBJCLID { get { return _LBJCLID; } set { _LBJCLID = value; } } private string _TJ = string.Empty; public string TJ { get { return _TJ; } set { _TJ = value; } } private string _LJ = string.Empty; public string LJ { get { return _LJ; } set { _LJ = value; } } private string _WGCP = string.Empty; public string WGCP { get { return _WGCP; } set { _WGCP = value; } } } public class JGBInfo { private string _JGBID = string.Empty; public string JGBID { get { return _JGBID; } set { _JGBID = value; } } private string _JGBMC = string.Empty; public string JGBMC { get { return _JGBMC; } set { _JGBMC = value; } } private string _YXQS = string.Empty; public string YXQS { get { return _YXQS; } set { _YXQS = value; } } private string _YXQZ = string.Empty; public string YXQZ { get { return _YXQZ; } set { _YXQZ = value; } } } }