Files
2026-08-21 17:03:02 +08:00

668 lines
37 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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<string, string> dicXMYQ = new Dictionary<string, string>();
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(',');
}
}
}