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_MODEL.Page; using GThinking.N_MISPRO.Data; using GThinking.N_MISPRO.Utility; using System.Collections.Generic; namespace GThinking.N_XLXSBJ { [EntityType(Db = "DBERP", Table = "XLXSBJDMX", IsWf = false, IsWhr = false, WhrPrefix = "", IsAttach = false)] public class XLBJD_MX : EntityObject { private string _BJDID; public string BJDID { get { return _BJDID; } set { _BJDID = value; } } private string _JGBID; public string JGBID { get { return _JGBID; } set { _JGBID = value; } } private string _JGCIDS; public string JGCIDS { get { return _JGCIDS; } set { _JGCIDS = value; } } private string _JGFID; public string JGFID { get { return _JGFID; } set { _JGFID = value; } } private string _JGFCX; public string JGFCX { get { return _JGFCX; } set { _JGFCX = value; } } private string _sBJU002; public string sBJU002 { get { return _sBJU002; } set { _sBJU002 = value; } } private string _sBJU003; public string sBJU003 { get { return _sBJU003; } set { _sBJU003 = value; } } private string _TreeQuerySelSql; public string TreeQuerySelSql { get { return _TreeQuerySelSql; } set { _TreeQuerySelSql = value; } } public string sCurMX = ""; public string sCurMXPX = "";//已报记录排序 public string sXLXH = ""; public string sXHJQ = "Y"; public string sXLGG = ""; public string sGGJQ = "Y"; public string sDYDJ = ""; public string sXXJGID = ""; public string sZJM = ""; public string sTreeXLXH = ""; public string sXLBZID = ""; public string sDZBZYQ = ""; public bool bHSBZ = true; public string CODESQL = ""; public string sJXSU004 = ""; public bool bCKC = false;//查库存 public override TSQL SetQuerySql() { int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002); if (iXSWS < 0) iXSWS = 0; else if (iXSWS > 8) iXSWS = 8; TSQL SQL = base.SetQuerySql(); if (sCurMX.Trim().Equals("Y")) { SQL.Add(" select "); if (bCKC) { SQL.Add(" a.minWLID as WLID,rtrim(ISNULL(WL_MC,' ')) || ' ' || rtrim(ISNULL(WL_GG,' ')) as WL_MC,"); } else { SQL.Add(" ' ' as WLID,' ' as WL_MC,"); } SQL.Add(" XLXSBJDMX_XLXHID as XLXHID, XLXSBJDMX_XLGGID as XLGGID, rtrim(XLXSBJDMX_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC) as XLBZID,"); SQL.Add(" XLXSBJDMX_DYDJID as DYDJID,XLXSBJDMX_XLYSID as XLYSID,XLXSBJDMX_JLDW as OLDJLDW,XLXSBJDMX_JLDW as JLDW,XLXSBJDMX_BJCP,XLXSBJDMX_WGCPBZ,XLXSBJDMX_BJSL,XLXSBJDMX_JGBBJ,"); SQL.Add(" XLXSBJDMX_TZQCPBJ,XLXSBJDMX_TZCPBJ,XLXSBJDMX_CPBJ,XLXSBJDMX_TZQBJJE,XLXSBJDMX_TZBJJE,XLXSBJDMX_BJJE,"); SQL.Add(string.Format(" case when XLXSBJDMX_BJSL=0 then 0 else RoundFix(XLXSBJDMX_BJJE/XLXSBJDMX_BJSL,{0}) end as TZHDJ,XLXSBJDMX_JGBJJ,XLXSBJDMX_CLCB,XLXSBJDMX_JGBBJJCL,XLXSBJDMX_JGBBJJCE,XLXSBJDMX_CLZL,XLXSBJDMX_TZQZDXJ,XLXSBJDMX_TZZDXJ,XLXSBJDMX_ZDXJ,XLXSBJDMX_ZDXJJCL,",iXSWS.ToString())); SQL.Add(" XLXSBJDMX_BZ,XLXSBJDMX_WHRID,XLXSBJDMX_WHR,XLXSBJDMX_WHSJ,XLXSBJDMX_XH,XLXSBJDMX_XSSX,'N' as SELDR, "); SQL.Add(" XLXSBJDMX_JSJG,case when isnull(XLXSCLQD_WPID,' ')='ZZZZ' then 'Y' else 'N' end as HasCLQD,XLXSBJDMX_JGFBZ,XLXSBJDMX_ZDXJBJDID,XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_CLCBJCL,XLXSBJDMX_JGBBJLJJCL,"); if (bCKC) SQL.Add(" MAXKYSL,KYSL,"); else SQL.Add(" 0 as MAXKYSL,0 as KYSL,"); SQL.Add(" XLXSBJDYZZ0_YZZ01 as TZYZ_BJ01,XLXSBJDYZZ0_YZZ02 as TZYZ_BJ02,XLXSBJDYZZ0_YZZ03 as TZYZ_BJ03,XLXSBJDYZZ0_YZZ04 as TZYZ_BJ04,XLXSBJDYZZ0_YZZ05 as TZYZ_BJ05, "); SQL.Add(" XLXSBJDYZZ0_YZZ06 as TZYZ_BJ06,XLXSBJDYZZ0_YZZ07 as TZYZ_BJ07,XLXSBJDYZZ0_YZZ08 as TZYZ_BJ08,XLXSBJDYZZ0_YZZ09 as TZYZ_BJ09,XLXSBJDYZZ0_YZZ10 as TZYZ_BJ10, "); SQL.Add(" XLXSBJDYZZ0_YZZ11 as TZYZ_BJ11,XLXSBJDYZZ0_YZZ12 as TZYZ_BJ12,XLXSBJDYZZ0_YZZ13 as TZYZ_BJ13,XLXSBJDYZZ0_YZZ14 as TZYZ_BJ14,XLXSBJDYZZ0_YZZ15 as TZYZ_BJ15, "); SQL.Add(" XLXSBJDYZZ0_YZZ16 as TZYZ_BJ16,XLXSBJDYZZ0_YZZ17 as TZYZ_BJ17,XLXSBJDYZZ0_YZZ18 as TZYZ_BJ18,XLXSBJDYZZ0_YZZ19 as TZYZ_BJ19,XLXSBJDYZZ0_YZZ20 as TZYZ_BJ20 "); SQL.Add(" from XLXSBJDMX "); SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID "); if (bCKC) { SQL.Add(" left join(select XSBJXHTH_BJXLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID, minWLID "); SQL.Add(" from ( "); SQL.Add(" select XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,min(XLXLB_WLID) as minWLID "); SQL.Add(" from XLXLB "); SQL.Add(" where isnull(XLXLB_TYBZ,' ')<>'Y' "); SQL.Add(" and exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID ) "); SQL.Add(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID"); SQL.Add(" ) tmpXL left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID "); SQL.Add(" union all "); SQL.Add(" select XLXLB_XLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID,min(XLXLB_WLID) as minWLID "); SQL.Add(" from XLXLB "); SQL.Add(" where isnull(XLXLB_TYBZ,' ')<>'Y' "); SQL.Add(" and not exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID ) "); SQL.Add(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID "); SQL.Add(" ) a on a.XLXHID= XLXSBJDMX_XLXHID and a.XLGGID= XLXSBJXLGGTHB_XLGGIDCH and a.XLBZID=XLXSBJDMX_XLBZID and a.DYDJID=XLXSBJDMX_DYDJID "); SQL.Add("left join WL on WL_WLID = a.minWLID "); } SQL.Add(" left join XLBZ on XLBZ_XLBZID = XLXSBJDMX_XLBZID "); if (bCKC) { //取库存数量 if (CODESQL.Trim().Equals("")) { SQL.Add(" left join "); SQL.Add("( "); SQL.Add(" select KCHZ_WLID,RoundFix(max(KCHZ_KCSL-KCHZ_FPSL),3) as MAXKYSL,RoundFix(sum(KCHZ_KCSL-KCHZ_FPSL),3) as KYSL"); SQL.Add(" from KCHZ "); SQL.Add(" where GT(KCHZ_KCSL - KCHZ_FPSL, 0) "); SQL.Add(" group by KCHZ_WLID "); SQL.Add(") tmpKC on KCHZ_WLID=a.minWLID "); } else { SQL.Add(" left join "); SQL.Add("( "); SQL.Add(" select KCHZ_WLID,RoundFix(max(KCHZ_KCSL-KCHZ_FPSL),3) as MAXKYSL,RoundFix(sum(KCHZ_KCSL-KCHZ_FPSL),3) as KYSL"); SQL.Add(" from KCHZ "); SQL.Add(" where GT(KCHZ_KCSL - KCHZ_FPSL, 0) "); SQL.Add(CODESQL); if (!sJXSU004.Equals("")) { SQL.Add(" and " + CMISproDataBase.GetWhereEqual("KCHZ_CKID", sJXSU004) + " "); } SQL.Add(" group by KCHZ_WLID "); SQL.Add(") tmpKC on KCHZ_WLID=a.minWLID "); } } SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID=XLXSBJDMX_BJDID and XLXSBJDYZZ0_XH=XLXSBJDMX_XH "); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSBJDMX_XLXHID and XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID and XLXSCLQD_XLBZID=XLXSBJDMX_XLBZID and XLXSCLQD_DYDJID=isnull(XLXSBJDMX_DYDJID,' ')"); SQL.Add(" where XLXSBJDMX_BJDID = :pBJDID "); if (sCurMXPX.Trim().Equals("CP"))//按产品排序 SQL.Add(" order by XLXSBJDMX_XLXHID,XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID,XLXSBJDMX_DYDJID,XLXSBJDMX_XSSX, XLXSBJDMX_XH "); else SQL.Add(" order by XLXSBJDMX_XSSX, XLXSBJDMX_XH "); SQL.ParamByName("pBJDID").Value = _BJDID; } else { if (!XLBJDUtils.IsJGEJGB(_JGBID.Trim()) || _JGFCX.Equals("Y"))//非表价实时计算价格表或者是查询JGF { SQL.Clear(); SQL.Add("select XLXSJGBMX_XH, "); if (bCKC) { SQL.Add("a.minWLID as WLID,rtrim(ISNULL(WL_MC,' ')) || ' ' || rtrim(ISNULL(WL_GG,' ')) as WL_MC, "); } else { SQL.Add("' ' as WLID,' ' as WL_MC, "); } SQL.Add("XLXSJGBMX_XLXHID as XLXHID, XLXSJGBMX_XLGGID as XLGGID, rtrim(XLXSJGBMX_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC) as XLBZID,"); SQL.Add(" XLXSJGBMX_DYDJID as DYDJID,' ' as XLYSID,XLXSJGBMX_JLDW as OLDJLDW,XLXSJGBMX_JLDW as JLDW, "); SQL.Add(" case when (ISNULL(XLXSJGBMX_DYDJID,' ') = ' ' or ISNULL(XLXSJGBMX_DYDJID,' ') = '--') then rtrim(XLXSJGBMX_XLXHID)||' '||rtrim(XLXSJGBMX_XLGGID) else rtrim(XLXSJGBMX_XLXHID)||'-'||rtrim(XLXSJGBMX_DYDJID)||' '||rtrim(XLXSJGBMX_XLGGID) end as XLXSBJDMX_BJCP,"); SQL.Add(" CASE WHEN XLWGCP_XLXHID IS NULL THEN 'N' ELSE 'Y' END as XLXSBJDMX_WGCPBZ, 0 as XLXSBJDMX_BJSL, "); if (bHSBZ) SQL.Add(" RoundFix(XLXSJGBMX_HSBJ," + _sBJU002 + ") as XLXSBJDMX_JGBBJ, "); else SQL.Add(" RoundFix(XLXSJGBMX_WSBJ," + _sBJU002 + ") as XLXSBJDMX_JGBBJ, "); SQL.Add(" 0 as XLXSBJDMX_TZQCPBJ,0 as XLXSBJDMX_TZCPBJ,0 as XLXSBJDMX_CPBJ,0 as XLXSBJDMX_TZQBJJE,0 as XLXSBJDMX_TZBJJE,0 as XLXSBJDMX_BJJE, 0 as TZHDJ, 0 as XLXSBJDMX_JGBJJ,0 as XLXSBJDMX_CLCB,0 as XLXSBJDMX_JGBBJJCL, "); SQL.Add(" 0 as XLXSBJDMX_JGBBJJCE,0 as XLXSBJDMX_CLZL,0 as XLXSBJDMX_TZQZDXJ,0 as XLXSBJDMX_TZZDXJ,0 as XLXSBJDMX_ZDXJ,0 as XLXSBJDMX_ZDXJJCL,0 as XLXSBJDMX_JSJG,null as XLXSBJDMX_BZ,null as XLXSBJDMX_WHRID,null as XLXSBJDMX_WHR,null as XLXSBJDMX_WHSJ,0 as XLXSBJDMX_XH, 0 as XLXSBJDMX_XSSX,'N' as SELDR, "); string sJGFBZ = "N"; if (_JGFCX.Equals("Y")) sJGFBZ = "Y"; SQL.Add(" 'N' as HasCLQD,'" + sJGFBZ + "' AS XLXSBJDMX_JGFBZ,' ' as XLXSBJDMX_ZDXJBJDID,0 as XLXSBJDMX_BJDHQCLCB,0 as XLXSBJDMX_CLCBJCL,0 as XLXSBJDMX_JGBBJLJJCL,"); if (bCKC) SQL.Add(" MAXKYSL,KYSL,"); else SQL.Add(" 0 as MAXKYSL,0 as KYSL,"); SQL.Add(" 0 as TZYZ_BJ01,0 as TZYZ_BJ02,0 as TZYZ_BJ03,0 as TZYZ_BJ04,0 as TZYZ_BJ05, "); SQL.Add(" 0 as TZYZ_BJ06,0 as TZYZ_BJ07,0 as TZYZ_BJ08,0 as TZYZ_BJ09,0 as TZYZ_BJ10, "); SQL.Add(" 0 as TZYZ_BJ11,0 as TZYZ_BJ12,0 as TZYZ_BJ13,0 as TZYZ_BJ14,0 as TZYZ_BJ15, "); SQL.Add(" 0 as TZYZ_BJ16,0 as TZYZ_BJ17,0 as TZYZ_BJ18,0 as TZYZ_BJ19,0 as TZYZ_BJ20 "); SQL.Add(" from XLXSJGBMX "); SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSJGBMX_XLGGID "); if (bCKC) { SQL.Add(" left join(select XSBJXHTH_BJXLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID, minWLID "); SQL.Add(" from ( "); SQL.Add(" select XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,min(XLXLB_WLID) as minWLID "); SQL.Add(" from XLXLB "); SQL.Add(" where isnull(XLXLB_TYBZ,' ')<>'Y' "); SQL.Add(" and exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID ) "); SQL.Add(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID"); SQL.Add(" ) tmpXL left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID "); SQL.Add(" union all "); SQL.Add(" select XLXLB_XLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID,min(XLXLB_WLID) as minWLID "); SQL.Add(" from XLXLB "); SQL.Add(" where isnull(XLXLB_TYBZ,' ')<>'Y' "); SQL.Add(" and not exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID ) "); SQL.Add(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID "); SQL.Add(" ) a on a.XLXHID= XLXSJGBMX_XLXHID and a.XLGGID=XLXSBJXLGGTHB_XLGGID and a.XLBZID=XLXSJGBMX_XLBZID and a.DYDJID=XLXSJGBMX_DYDJID "); SQL.Add("left join WL on WL_WLID = a.minWLID "); } SQL.Add(" left join XLWGCP on XLWGCP_XLXHID = XLXSJGBMX_XLXHID AND XLWGCP_XLGGID = XLXSJGBMX_XLGGID AND XLWGCP_XLBZID = XLXSJGBMX_XLBZID AND XLWGCP_DYDJID = XLXSJGBMX_DYDJID "); SQL.Add(" left join XLBZ on XLBZ_XLBZID = XLXSJGBMX_XLBZID "); //关联排序使用 SQL.Add(" left join XLDYDJB ON XLDYDJB_DYDJID = XLXSJGBMX_DYDJID "); SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSJGBMX_XLXHID"); SQL.Add(" left join XLGGB on XLGGB_XLGGID = XLXSJGBMX_XLGGID and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); if (bCKC) { //取库存数量 if (CODESQL.Trim().Equals("")) { SQL.Add(" left join "); SQL.Add("( "); SQL.Add(" select KCHZ_WLID,RoundFix(max(KCHZ_KCSL-KCHZ_FPSL),3) as MAXKYSL,RoundFix(sum(KCHZ_KCSL-KCHZ_FPSL),3) as KYSL"); SQL.Add(" from KCHZ "); SQL.Add(" where GT(KCHZ_KCSL - KCHZ_FPSL, 0) "); SQL.Add(" group by KCHZ_WLID "); SQL.Add(") tmpKC on KCHZ_WLID=a.minWLID "); } else { SQL.Add(" left join "); SQL.Add("( "); SQL.Add(" select KCHZ_WLID,RoundFix(max(KCHZ_KCSL-KCHZ_FPSL),3) as MAXKYSL,RoundFix(sum(KCHZ_KCSL-KCHZ_FPSL),3) as KYSL"); SQL.Add(" from KCHZ "); SQL.Add(" where GT(KCHZ_KCSL - KCHZ_FPSL, 0) "); SQL.Add(CODESQL); if (!sJXSU004.Equals("")) { SQL.Add(" and " + CMISproDataBase.GetWhereEqual("KCHZ_CKID", sJXSU004) + " "); } SQL.Add(" group by KCHZ_WLID "); SQL.Add(") tmpKC on KCHZ_WLID=a.minWLID "); } } SQL.Add(" where 1=1 "); if (_JGFCX.Equals("Y")) { SQL.Add(" and XLXSJGBMX_JGBID=:pJGFID "); SQL.ParamByName("pJGFID").Value = _JGFID; } else { if (!_JGCIDS.Trim().Equals(""))//组合产品目录价格表 SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSJGBMX_JGBID", _JGCIDS.Trim())); else { SQL.Add(" and XLXSJGBMX_JGBID=:pJGBID "); SQL.ParamByName("pJGBID").Value = _JGBID; } } if (!string.IsNullOrEmpty(sTreeXLXH)) { SQL.Add(" and XLXSJGBMX_XLXHID = :pTreeXLXH "); SQL.ParamByName("pTreeXLXH").Value = sTreeXLXH; } else { if (!string.IsNullOrEmpty(sXLXH)) { if (sXHJQ.Equals("Y")) { SQL.Add(" and XLXSJGBMX_XLXHID = :pXLXH "); SQL.ParamByName("pXLXH").Value = sXLXH; } else { SQL.Add(" and XLXSJGBMX_XLXHID like :pXLXH "); SQL.ParamByName("pXLXH").Value = "%" + sXLXH + "%"; } } } if (!sXLBZID.Equals("")) { SQL.Add(" and XLXSJGBMX_XLBZID = :pXLBZID "); SQL.ParamByName("pXLBZID").Value = sXLBZID; } if (!sDZBZYQ.Equals("")) { string sDZBZList = "("+GetDZBZList(sDZBZYQ)+")"; SQL.Add(" and XLXSJGBMX_XLBZID in " + sDZBZList); } if (!string.IsNullOrEmpty(sDYDJ)) { SQL.Add(" and XLXSJGBMX_DYDJID = :pDYDJ "); SQL.ParamByName("pDYDJ").Value = sDYDJ; } if (!string.IsNullOrEmpty(sXLGG)) { if (sXLGG.Contains("*")) { if (sGGJQ.Equals("Y")) { SQL.Add(" and (XLXSJGBMX_XLGGID = :pXLGG or XLXSJGBMX_XLGGID = :pXLGG2)"); SQL.ParamByName("pXLGG").Value = sXLGG; SQL.ParamByName("pXLGG2").Value = sXLGG.Replace("*", "×"); } else { SQL.Add(" and (XLXSJGBMX_XLGGID like :pXLGG or XLXSJGBMX_XLGGID like :pXLGG2)"); SQL.ParamByName("pXLGG").Value = "%" + sXLGG + "%"; SQL.ParamByName("pXLGG2").Value = "%" + sXLGG.Replace("*", "×") + "%"; } } else { if (sGGJQ.Equals("Y")) { SQL.Add(" and XLXSJGBMX_XLGGID = :pXLGG "); SQL.ParamByName("pXLGG").Value = sXLGG; } else { SQL.Add(" and XLXSJGBMX_XLGGID like :pXLGG "); SQL.ParamByName("pXLGG").Value = "%" + sXLGG + "%"; } } } if (!string.IsNullOrEmpty(sXXJGID)) { if (sXXJGID.Contains("+")) { string[] sXSList = sXXJGID.Split('+'); for (int i = 0; i < sXSList.Length; i++) { string sXS = sXSList[i].Trim(); if (i == 0) { SQL.Add(string.Format(" and (XLXSJGBMX_XLGGID like '{0}' or XLXSJGBMX_XLGGID like '{1}')", sXS + "×%", sXS + "*%")); } else { SQL.Add(string.Format(" and (XLXSJGBMX_XLGGID like '{0}' or XLXSJGBMX_XLGGID like '{1}')", "%+" + sXS + "×%", "%+" + sXS + "*%")); } } } else { if (sXXJGID.Equals("1")) { SQL.Add(" and (charindex('1×',isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID))>0 or charindex('×',isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID))<=0) "); SQL.Add(" and charindex('+',XLXSJGBMX_XLGGID)<=0 "); } else { SQL.Add(string.Format(" and charindex('{0}',isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID))>0 ", sXXJGID + "×")); SQL.Add(" and charindex('+',XLXSJGBMX_XLGGID)<=0 "); } } } if (!string.IsNullOrEmpty(sZJM)) { SQL.Add(" and ((charindex('+',XLXSJGBMX_XLGGID)<=0 "); SQL.Add(string.Format("and substring(isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID),charindex('×',isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID))+1,len(isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID))-charindex('×',isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID)))='{0}' ", sZJM)); SQL.Add(" ) "); SQL.Add(" or (charindex('+',XLXSJGBMX_XLGGID)>0 "); SQL.Add(string.Format("and substring(isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID),charindex('×',isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID))+1,charindex('+',isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID))-charindex('×',isnull(XLXSBJXLGGTHB_XLGGIDCH,XLXSJGBMX_XLGGID))-1)='{0}' ", sZJM)); SQL.Add(" ) "); SQL.Add(" ) "); } //SQL.ParamByName("pBJDID").Value = _BJDID; SQL.Add(" order by XLXHID,XLXSJGBMX_XLBZID,XLDYDJB_XH,XLGGB_XH,XLXSJGBMX_XH "); } else//不需要按价格表报价 { SQL.Clear(); SQL.Add("select XLXSCLQD_XH as XLXSJGBMX_XH, "); if (bCKC) { SQL.Add("a.minWLID as WLID,rtrim(ISNULL(WL_MC,' ')) || ' ' || rtrim(ISNULL(WL_GG,' ')) as WL_MC, "); } else { SQL.Add("' ' as WLID,' ' as WL_MC, "); } SQL.Add("XLXSCLQD_XLXHID as XLXHID, XLXSCLQD_XLGGID as XLGGID, rtrim(XLXSCLQD_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC) as XLBZID, "); SQL.Add(" XLXSCLQD_DYDJID as DYDJID,' ' as XLYSID, '" + _sBJU003 + "' as OLDJLDW, '" + _sBJU003 + "' as JLDW,"); SQL.Add(" case when (ISNULL(XLXSCLQD_DYDJID,' ') = ' ' or ISNULL(XLXSCLQD_DYDJID,' ') = '--') then rtrim(XLXSCLQD_XLXHID)||' '||rtrim(XLXSCLQD_XLGGID) else rtrim(XLXSCLQD_XLXHID)||'-'||rtrim(XLXSCLQD_DYDJID)||' '||rtrim(XLXSCLQD_XLGGID) end as XLXSBJDMX_BJCP,"); SQL.Add(" CASE WHEN XLWGCP_XLXHID IS NULL THEN 'N' ELSE 'Y' END as XLXSBJDMX_WGCPBZ, 0 as XLXSBJDMX_BJSL, "); SQL.Add(" 0 as XLXSBJDMX_JGBBJ, "); SQL.Add(" 0 as XLXSBJDMX_TZQCPBJ,0 as XLXSBJDMX_TZCPBJ,0 as XLXSBJDMX_CPBJ,0 as XLXSBJDMX_TZQBJJE,0 as XLXSBJDMX_TZBJJE,0 as XLXSBJDMX_BJJE, 0 as TZHDJ, 0 as XLXSBJDMX_JGBJJ,0 as XLXSBJDMX_CLCB,0 as XLXSBJDMX_JGBBJJCL, "); SQL.Add(" 0 as XLXSBJDMX_JGBBJJCE,0 as XLXSBJDMX_CLZL,0 as XLXSBJDMX_TZQZDXJ,0 as XLXSBJDMX_TZZDXJ,0 as XLXSBJDMX_ZDXJ, 0 as XLXSBJDMX_ZDXJJCL,0 as XLXSBJDMX_JSJG,null as XLXSBJDMX_BZ,null as XLXSBJDMX_WHRID,null as XLXSBJDMX_WHR,null as XLXSBJDMX_WHSJ,0 as XLXSBJDMX_XH, 0 as XLXSBJDMX_XSSX,'N' as SELDR, "); SQL.Add(" 'N' as HasCLQD,'N' AS XLXSBJDMX_JGFBZ,' ' as XLXSBJDMX_ZDXJBJDID,0 as XLXSBJDMX_BJDHQCLCB,0 as XLXSBJDMX_CLCBJCL,0 as XLXSBJDMX_JGBBJLJJCL,"); if (bCKC) SQL.Add(" MAXKYSL,KYSL,"); else SQL.Add(" 0 as MAXKYSL,0 as KYSL,"); SQL.Add(" 0 as TZYZ_BJ01,0 as TZYZ_BJ02,0 as TZYZ_BJ03,0 as TZYZ_BJ04,0 as TZYZ_BJ05, "); SQL.Add(" 0 as TZYZ_BJ06,0 as TZYZ_BJ07,0 as TZYZ_BJ08,0 as TZYZ_BJ09,0 as TZYZ_BJ10, "); SQL.Add(" 0 as TZYZ_BJ11,0 as TZYZ_BJ12,0 as TZYZ_BJ13,0 as TZYZ_BJ14,0 as TZYZ_BJ15, "); SQL.Add(" 0 as TZYZ_BJ16,0 as TZYZ_BJ17,0 as TZYZ_BJ18,0 as TZYZ_BJ19,0 as TZYZ_BJ20 "); SQL.Add(" from XLXSCLQD "); SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSCLQD_XLGGID "); if (bCKC) { SQL.Add(" left join(select XSBJXHTH_BJXLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID, minWLID "); SQL.Add(" from ( "); SQL.Add(" select XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,min(XLXLB_WLID) as minWLID "); SQL.Add(" from XLXLB "); SQL.Add(" where isnull(XLXLB_TYBZ,' ')<>'Y' "); SQL.Add(" and exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID ) "); SQL.Add(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID"); SQL.Add(" ) tmpXL left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID "); SQL.Add(" union all "); SQL.Add(" select XLXLB_XLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID,min(XLXLB_WLID) as minWLID "); SQL.Add(" from XLXLB "); SQL.Add(" where isnull(XLXLB_TYBZ,' ')<>'Y' "); SQL.Add(" and not exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID ) "); SQL.Add(" group by XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID "); SQL.Add(" ) a on a.XLXHID= XLXSCLQD_XLXHID and a.XLGGID= XLXSBJXLGGTHB_XLGGIDCH and a.XLBZID=XLXSCLQD_XLBZID and a.DYDJID=XLXSCLQD_DYDJID "); SQL.Add("left join WL on WL_WLID = a.minWLID "); } SQL.Add(" left join XLBZ on XLBZ_XLBZID = XLXSCLQD_XLBZID "); SQL.Add(" left join XLWGCP on XLWGCP_XLXHID = XLXSCLQD_XLXHID AND XLWGCP_XLGGID = XLXSCLQD_XLGGID AND XLWGCP_XLBZID = XLXSCLQD_XLBZID AND XLWGCP_DYDJID = XLXSCLQD_DYDJID "); //关联排序使用 SQL.Add(" left join XLDYDJB ON XLDYDJB_DYDJID = XLXSCLQD_DYDJID "); SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSCLQD_XLXHID "); SQL.Add(" left join XLGGB on XLGGB_XLGGID = XLXSCLQD_XLGGID and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') "); if (bCKC) { //取库存数量 if (CODESQL.Trim().Equals("")) { SQL.Add(" left join "); SQL.Add("( "); SQL.Add(" select KCHZ_WLID,RoundFix(max(KCHZ_KCSL-KCHZ_FPSL),3) as MAXKYSL,RoundFix(sum(KCHZ_KCSL-KCHZ_FPSL),3) as KYSL"); SQL.Add(" from KCHZ "); SQL.Add(" where GT(KCHZ_KCSL - KCHZ_FPSL, 0) "); SQL.Add(" group by KCHZ_WLID "); SQL.Add(") tmpKC on KCHZ_WLID=a.minWLID "); } else { SQL.Add(" left join "); SQL.Add("( "); SQL.Add(" select KCHZ_WLID,RoundFix(max(KCHZ_KCSL-KCHZ_FPSL),3) as MAXKYSL,RoundFix(sum(KCHZ_KCSL-KCHZ_FPSL),3) as KYSL"); SQL.Add(" from KCHZ "); SQL.Add(" where GT(KCHZ_KCSL - KCHZ_FPSL, 0) "); SQL.Add(CODESQL); if (!sJXSU004.Equals("")) { SQL.Add(" and " + CMISproDataBase.GetWhereEqual("KCHZ_CKID", sJXSU004) + " "); } SQL.Add(" group by KCHZ_WLID "); SQL.Add(") tmpKC on KCHZ_WLID=a.minWLID "); } } SQL.Add(" where 1=1 "); SQL.Add(" and isnull(XLXSCLQD_WPID,'ZZZZ') = 'ZZZZ' "); if (!string.IsNullOrEmpty(sTreeXLXH)) { SQL.Add(" and XLXSCLQD_XLXHID = :pTreeXLXH "); SQL.ParamByName("pTreeXLXH").Value = sTreeXLXH; } else { if (!string.IsNullOrEmpty(sXLXH)) { if (sXHJQ.Equals("Y")) { SQL.Add(" and XLXSCLQD_XLXHID = :pXLXH "); SQL.ParamByName("pXLXH").Value = sXLXH; } else { SQL.Add(" and XLXSCLQD_XLXHID like :pXLXH "); SQL.ParamByName("pXLXH").Value = "%" + sXLXH + "%"; } } } if (!sXLBZID.Equals("")) { SQL.Add(" and XLXSCLQD_XLBZID = :pXLBZID "); SQL.ParamByName("pXLBZID").Value = sXLBZID; } if (!sDZBZYQ.Equals("")) { string sDZBZList = "(" + GetDZBZList(sDZBZYQ) + ")"; if (!GetDZBZList(sDZBZYQ).Equals("")) SQL.Add(" and XLXSCLQD_XLBZID in " + sDZBZList); } if (!string.IsNullOrEmpty(sDYDJ)) { SQL.Add(" and XLXSCLQD_DYDJID = :pDYDJ "); SQL.ParamByName("pDYDJ").Value = sDYDJ; } if (!string.IsNullOrEmpty(sXLGG)) { if (sXLGG.Contains("*")) { if (sGGJQ.Equals("Y")) { SQL.Add(" and (XLXSCLQD_XLGGID = :pXLGG or XLXSCLQD_XLGGID = :pXLGG2)"); SQL.ParamByName("pXLGG").Value = sXLGG; SQL.ParamByName("pXLGG2").Value = sXLGG.Replace("*", "×"); } else { SQL.Add(" and (XLXSCLQD_XLGGID like :pXLGG or XLXSCLQD_XLGGID like :pXLGG2)"); SQL.ParamByName("pXLGG").Value = "%" + sXLGG + "%"; SQL.ParamByName("pXLGG2").Value = "%" + sXLGG.Replace("*", "×") + "%"; } } else { if (sGGJQ.Equals("Y")) { SQL.Add(" and XLXSCLQD_XLGGID = :pXLGG "); SQL.ParamByName("pXLGG").Value = sXLGG; } else { SQL.Add(" and XLXSCLQD_XLGGID like :pXLGG "); SQL.ParamByName("pXLGG").Value = "%" + sXLGG + "%"; } } } if (!string.IsNullOrEmpty(sXXJGID)) { if (sXXJGID.Contains("+")) { string[] sXSList = sXXJGID.Split('+'); for (int i = 0; i < sXSList.Length; i++) { string sXS = sXSList[i].Trim(); if (i == 0) { SQL.Add(string.Format(" and (XLXSCLQD_XLGGID like '{0}' or XLXSCLQD_XLGGID like '{1}')", sXS + "×%", sXS + "*%")); } else { SQL.Add(string.Format(" and (XLXSCLQD_XLGGID like '{0}' or XLXSCLQD_XLGGID like '{1}')", "%+" + sXS + "×%", "%+" + sXS + "*%")); } } } else { if (sXXJGID.Equals("1")) { SQL.Add(" and (charindex('1×',XLXSBJXLGGTHB_XLGGIDCH)>0 or charindex('×',XLXSBJXLGGTHB_XLGGIDCH)<=0) "); SQL.Add(" and charindex('+',XLXSCLQD_XLGGID)<=0 "); } else { SQL.Add(string.Format(" and charindex('{0}',XLXSBJXLGGTHB_XLGGIDCH)>0 ", sXXJGID + "×")); SQL.Add(" and charindex('+',XLXSCLQD_XLGGID)<=0 "); } } } if (!string.IsNullOrEmpty(sZJM)) { SQL.Add(" and ((charindex('+',XLXSCLQD_XLGGID)<=0 "); SQL.Add(string.Format("and substring(XLXSCLQD_XLGGID,charindex('×',XLXSBJXLGGTHB_XLGGIDCH)+1,len(XLXSCLQD_XLGGID)-charindex('×',XLXSBJXLGGTHB_XLGGIDCH))='{0}' ", sZJM)); SQL.Add(" ) "); SQL.Add(" or (charindex('+',XLXSCLQD_XLGGID)>0 "); SQL.Add(string.Format("and substring(XLXSCLQD_XLGGID,charindex('×',XLXSBJXLGGTHB_XLGGIDCH)+1,charindex('+',XLXSCLQD_XLGGID)-charindex('×',XLXSBJXLGGTHB_XLGGIDCH)-1)='{0}' ", sZJM)); SQL.Add(" ) "); SQL.Add(" ) "); } SQL.Add(" order by XLXHID,XLXSCLQD_XLBZID,XLDYDJB_XH,XLGGB_XH,XLXSCLQD_XH "); } } return SQL; } private string GetDZBZList(string stmpDZBZYQ) { string sDZBZList = string.Empty; string[] sDZBZYQNum = stmpDZBZYQ.Split(','); if (sDZBZYQNum.Length <= 0) return sDZBZList; Dictionary dicXMYQ = new Dictionary(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select distinct XLBZ_XLBZID from XLBZ where 1<>1 "); for (int i = 0; i < sDZBZYQNum.Length; i++) { if(sDZBZYQNum[i].Split('|').Length<3) continue; string sXLCPZLID=sDZBZYQNum[i].Split('|')[0]; string sDZSCXM=sDZBZYQNum[i].Split('|')[1]; string sDZSCYQ=sDZBZYQNum[i].Split('|')[2]; if (dicXMYQ.ContainsKey(sDZSCXM)) dicXMYQ[sDZSCXM] += ",'" + sDZSCYQ + "'"; else dicXMYQ.Add(sDZSCXM, "'" + sDZSCYQ + "'"); } if(dicXMYQ.Count>0) SQL.Add(" or ( "); foreach (string skey in dicXMYQ.Keys) { SQL.Add(string.Format(" exists( select distinct XLDZBZ_XLBZID from XLDZBZ where XLDZBZ_XLBZID=XLBZ_XLBZID and XLDZBZ_DZSCXM='{0}' and XLDZBZ_DZSCYQ in ({1}) ) and ", skey, dicXMYQ[skey])); } if (dicXMYQ.Count > 0) SQL.Add(" 1=1 ) "); DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string sDZXLBZID = ds.Tables[0].Rows[i][0].ToString().Trim(); sDZBZList += "'"+sDZXLBZID + "',"; } } return sDZBZList.TrimEnd(','); } } }