3741 lines
165 KiB
C#
3741 lines
165 KiB
C#
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_MISPROAS.Web.AjaxServices;
|
||
using GThinking.N_MISPROAS.Data;
|
||
using System.Collections.Generic;
|
||
using GThinking.N_MISPRO.Data;
|
||
using GThinking.N_MISPRO.Utility;
|
||
using N_PUBLIC2;
|
||
using System.Text.RegularExpressions;
|
||
using System.Text;
|
||
using System.IO;
|
||
using GThinking.N_MISPRO;
|
||
using GThinking.N_XLXSBJ;
|
||
using GThinking.N_PUBLIC2;
|
||
using System.Web.Script.Serialization;
|
||
using System.Net;
|
||
using GThinking.N_MISPROAS.SysData;
|
||
|
||
namespace GThinking.S_XLXSBJ
|
||
{
|
||
#region 实体类
|
||
|
||
public class XLJXMX
|
||
{
|
||
public string XLJXDJ = "";
|
||
public string XLJXDH = "";
|
||
public string XLJXMXH = "0";
|
||
public string XLBSC = "";
|
||
public string XLJXGZXH = "0";
|
||
public string JXXLXHID = "";
|
||
public string XLXHID = "";
|
||
public string JXXLGGID = "";
|
||
public string XLGGID = "";
|
||
public string JXDYDJID = "";
|
||
public string DYDJID = "";
|
||
public string XLBZID = "";
|
||
public string JXXLBZID = "";
|
||
public string XLYSID = "";
|
||
public string JXXLYSID = "";
|
||
public string WHR = "";
|
||
public string WHRID = "";
|
||
public string WHSJ = "";
|
||
public string DCZT = "N";
|
||
public string DX = "";
|
||
public string JLDW = "";
|
||
public string SL = "0";
|
||
public string FBH = "";
|
||
public string JSGFID = "";
|
||
}
|
||
|
||
/// <summary>
|
||
/// 线路相似报价单明细批量插入实体。
|
||
/// </summary>
|
||
public class XLXSBJDMXEntity
|
||
{
|
||
private string _BJDID;
|
||
[DbColumn("XLXSBJDMX_BJDID")]
|
||
public string BJDID
|
||
{
|
||
get { return _BJDID; }
|
||
set { _BJDID = value; }
|
||
}
|
||
|
||
private int _XH;
|
||
[DbColumn("XLXSBJDMX_XH")]
|
||
public int XH
|
||
{
|
||
get { return _XH; }
|
||
set { _XH = value; }
|
||
}
|
||
|
||
private int _XSSX;
|
||
[DbColumn("XLXSBJDMX_XSSX")]
|
||
public int XSSX
|
||
{
|
||
get { return _XSSX; }
|
||
set { _XSSX = value; }
|
||
}
|
||
|
||
private string _BJCP;
|
||
[DbColumn("XLXSBJDMX_BJCP")]
|
||
public string BJCP
|
||
{
|
||
get { return _BJCP; }
|
||
set { _BJCP = value; }
|
||
}
|
||
|
||
private string _JLDW;
|
||
[DbColumn("XLXSBJDMX_JLDW")]
|
||
public string JLDW
|
||
{
|
||
get { return _JLDW; }
|
||
set { _JLDW = value; }
|
||
}
|
||
|
||
private string _XLXHID;
|
||
[DbColumn("XLXSBJDMX_XLXHID")]
|
||
public string XLXHID
|
||
{
|
||
get { return _XLXHID; }
|
||
set { _XLXHID = value; }
|
||
}
|
||
|
||
private string _XDXLXHID;
|
||
[DbColumn("XLXSBJDMX_XDXLXHID")]
|
||
public string XDXLXHID
|
||
{
|
||
get { return _XDXLXHID; }
|
||
set { _XDXLXHID = value; }
|
||
}
|
||
|
||
private string _XLGGID;
|
||
[DbColumn("XLXSBJDMX_XLGGID")]
|
||
public string XLGGID
|
||
{
|
||
get { return _XLGGID; }
|
||
set { _XLGGID = value; }
|
||
}
|
||
|
||
private string _XLBZID;
|
||
[DbColumn("XLXSBJDMX_XLBZID")]
|
||
public string XLBZID
|
||
{
|
||
get { return _XLBZID; }
|
||
set { _XLBZID = value; }
|
||
}
|
||
|
||
private string _XDXLBZID;
|
||
[DbColumn("XLXSBJDMX_XDXLBZID")]
|
||
public string XDXLBZID
|
||
{
|
||
get { return _XDXLBZID; }
|
||
set { _XDXLBZID = value; }
|
||
}
|
||
|
||
private string _DYDJID;
|
||
[DbColumn("XLXSBJDMX_DYDJID")]
|
||
public string DYDJID
|
||
{
|
||
get { return _DYDJID; }
|
||
set { _DYDJID = value; }
|
||
}
|
||
|
||
private string _XLYSID;
|
||
[DbColumn("XLXSBJDMX_XLYSID")]
|
||
public string XLYSID
|
||
{
|
||
get { return _XLYSID; }
|
||
set { _XLYSID = value; }
|
||
}
|
||
|
||
private string _WHR;
|
||
[DbColumn("XLXSBJDMX_WHR")]
|
||
public string WHR
|
||
{
|
||
get { return _WHR; }
|
||
set { _WHR = value; }
|
||
}
|
||
|
||
private string _WHRID;
|
||
[DbColumn("XLXSBJDMX_WHRID")]
|
||
public string WHRID
|
||
{
|
||
get { return _WHRID; }
|
||
set { _WHRID = value; }
|
||
}
|
||
|
||
private DateTime _WHSJ;
|
||
[DbColumn("XLXSBJDMX_WHSJ")]
|
||
public DateTime WHSJ
|
||
{
|
||
get { return _WHSJ; }
|
||
set { _WHSJ = value; }
|
||
}
|
||
|
||
private double _BJSL;
|
||
[DbColumn("XLXSBJDMX_BJSL")]
|
||
public double BJSL
|
||
{
|
||
get { return _BJSL; }
|
||
set { _BJSL = value; }
|
||
}
|
||
|
||
private string _FBH;
|
||
[DbColumn("XLXSBJDMX_FBH")]
|
||
public string FBH
|
||
{
|
||
get { return _FBH; }
|
||
set { _FBH = value; }
|
||
}
|
||
|
||
private string _JSGFSID;
|
||
[DbColumn("XLXSBJDMX_JSGFSID")]
|
||
public string JSGFSID
|
||
{
|
||
get { return _JSGFSID; }
|
||
set { _JSGFSID = value; }
|
||
}
|
||
|
||
private int _DRHH;
|
||
[DbColumn("XLXSBJDMX_DRHH")]
|
||
public int DRHH
|
||
{
|
||
get { return _DRHH; }
|
||
set { _DRHH = value; }
|
||
}
|
||
}
|
||
|
||
public class XLJXGZ
|
||
{
|
||
public string XLJXDJ = "";
|
||
public string XLJXDH = "";
|
||
public string XLJXGZXH = "0";
|
||
public string XLJXGZC = "";
|
||
public string WHR = "";
|
||
public string WHRID = "";
|
||
public string WHSJ = "";
|
||
public string XLXHYFC = "";
|
||
public string XLGGYFC = "";
|
||
public string DYDJYFC = "";
|
||
public string XLBZYFC = "";
|
||
public string XLYSYFC = "";
|
||
|
||
}
|
||
|
||
|
||
public class JXPZInfo
|
||
{
|
||
public string XLJXGZC = "";
|
||
public string XLXHYFC = "";
|
||
public string XLGGYFC = "";
|
||
public string DYDJYFC = "";
|
||
public string XLBZYFC = "";
|
||
public string XLYSYFC = "";
|
||
public string XLXH = "";
|
||
public string XLGG = "";
|
||
public string DYDJ = "";
|
||
public string XLBZ = "";
|
||
|
||
}
|
||
|
||
|
||
public class XLJXJG
|
||
{
|
||
public string XLXH = "";
|
||
public string XLGG = "";
|
||
public string DYDJ = "";
|
||
public string XLBZ = "";
|
||
}
|
||
|
||
public class Result
|
||
{
|
||
public bool success = true;
|
||
public string msg = "";
|
||
}
|
||
|
||
public class CodeClass
|
||
{
|
||
public string code = "";
|
||
public string message = "";
|
||
}
|
||
|
||
public class XJDInfo
|
||
{
|
||
public string userName = "";
|
||
|
||
public List<XJDMX> quoteList = new List<XJDMX>();
|
||
|
||
}
|
||
public class XJDMX
|
||
{
|
||
public string XLWBBJDMX_DRHH = "";
|
||
public string XLWBBJDMX_XLXHID = "";
|
||
public string XLWBBJDMX_XLGGID = "";
|
||
public string XLWBBJDMX_DYDJID = "";
|
||
public string XLWBBJDMX_XLBZID = "";
|
||
public string XLWBBJDMX_JLDW = "";
|
||
public string XLWBBJDMX_YS = "";
|
||
public string XLWBBJDMX_BJDH = "";
|
||
public string YSCP = "";
|
||
public double XLWBBJDMX_BJSL = 0;
|
||
}
|
||
|
||
public class ResultData
|
||
{
|
||
|
||
private string _code = string.Empty;
|
||
public string code
|
||
{
|
||
get { return _code; }
|
||
set { _code = value; }
|
||
}
|
||
private string _msg = string.Empty;
|
||
public string msg
|
||
{
|
||
get { return _msg; }
|
||
set { _msg = value; }
|
||
}
|
||
|
||
|
||
private string _data = string.Empty;
|
||
public string data
|
||
{
|
||
get { return _data; }
|
||
set { _data = value; }
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
public class XLBJJXDRService
|
||
{
|
||
|
||
#region 服务方法
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static List<XLJXMX> GetXLJXMXList(string XLJXDJ, string XLJXDH, string sXLJXGZXH, string sDCZT, string sBJCP, string sXLXH, string sXLGG, string sXLBZ, string sDYDJID, string sQSYS)
|
||
{
|
||
TDatabase dberp = null;
|
||
try
|
||
{
|
||
dberp = TContextDatabases.GetDatabase("DBERP");
|
||
List<XLJXMX> resultList = new List<XLJXMX>();
|
||
|
||
// 构建查询语句
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add(@"SELECT XLJXMX_XLJXDJ,XLJXMX_XLJXDH,XLJXMX_XLJXMXH,XLJXMX_XLBSC,XLJXMX_XLJXGZXH,XLJXMX_JXXLXHID,XLJXMX_XLXHID,
|
||
XLJXMX_JXXLGGID,XLJXMX_XLGGID,XLJXMX_JXDYDJID,XLJXMX_DYDJID,XLJXMX_XLBZID,XLJXMX_JXXLBZID,XLJXMX_XLYSID,
|
||
XLJXMX_JXXLYSID,XLJXMX_WHR,XLJXMX_WHRID,XLJXMX_WHSJ,XLJXMX_DCZT,XLJXMX_JLDW,XLJXMX_SL,XLJXMX_FBH,XLJXMX_JSGFSID
|
||
FROM XLJXMX
|
||
WHERE XLJXMX_XLJXDJ = :XLJXDJ AND XLJXMX_XLJXDH = :XLJXDH ");
|
||
if (!string.IsNullOrEmpty(sDCZT.Trim()))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_DCZT = :DCZT ");
|
||
sSQL.ParamByName("DCZT").Value = sDCZT;
|
||
}
|
||
if (sXLJXGZXH=="-1")
|
||
sSQL.Add(" AND XLJXMX_XLJXGZXH>0 ");
|
||
else if (sXLJXGZXH != "-2")
|
||
{
|
||
sSQL.Add(" AND XLJXMX_XLJXGZXH = :XLJXGZXH");
|
||
sSQL.ParamByName("XLJXGZXH").Value = sXLJXGZXH;
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(sBJCP))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_XLBSC like :BJCP ");
|
||
sSQL.ParamByName("BJCP").Value ="%"+sBJCP+"%";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(sXLXH))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_JXXLXHID like :XLXH ");
|
||
sSQL.ParamByName("XLXH").Value = "%" + sXLXH + "%";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(sXLGG))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_JXXLGGID like :XLGG ");
|
||
sSQL.ParamByName("XLGG").Value = "%" + sXLGG + "%";
|
||
}
|
||
|
||
|
||
|
||
if (!string.IsNullOrEmpty(sXLBZ))
|
||
{
|
||
if (sXLBZ == "空")
|
||
{
|
||
sSQL.Add(" AND isnull(XLJXMX_JXXLBZID,' ') =' ' ");
|
||
}
|
||
else
|
||
{
|
||
sSQL.Add(" AND XLJXMX_JXXLBZID = :XLBZ ");
|
||
sSQL.ParamByName("XLBZ").Value = sXLBZ;
|
||
}
|
||
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(sDYDJID))
|
||
{
|
||
if (sDYDJID == "空")
|
||
{
|
||
sSQL.Add(" AND isnull(XLJXMX_JXDYDJID,' ') =' ' ");
|
||
}
|
||
else
|
||
{
|
||
sSQL.Add(" AND XLJXMX_JXDYDJID = :DYDJ ");
|
||
sSQL.ParamByName("DYDJ").Value = sDYDJID;
|
||
}
|
||
|
||
}
|
||
|
||
AppendMissingElementFilter(sSQL, sQSYS);
|
||
|
||
// 添加查询参数
|
||
sSQL.ParamByName("XLJXDJ").Value = XLJXDJ;
|
||
sSQL.ParamByName("XLJXDH").Value = XLJXDH;
|
||
|
||
sSQL.Add(" order by len(XLJXMX_XLJXMXH),XLJXMX_XLJXMXH");
|
||
|
||
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
foreach (DataRow row in ds.Tables[0].Rows)
|
||
{
|
||
XLJXMX item = ParseXLJXMXFromDataRow(row);
|
||
|
||
if (!string.IsNullOrEmpty(item.XLXHID) && !string.IsNullOrEmpty(item.JXXLXHID))
|
||
{
|
||
if (item.XLXHID != item.JXXLXHID)
|
||
item.DX += "型号,";
|
||
}
|
||
if (!string.IsNullOrEmpty(item.XLGGID) && !string.IsNullOrEmpty(item.JXXLGGID))
|
||
{
|
||
if (item.XLGGID != item.JXXLGGID)
|
||
item.DX += "规格,";
|
||
}
|
||
if (!string.IsNullOrEmpty(item.DYDJID) && !string.IsNullOrEmpty(item.JXDYDJID))
|
||
{
|
||
if (item.DYDJID != item.JXDYDJID)
|
||
item.DX += "电压等级,";
|
||
}
|
||
item.DX = item.DX.TrimEnd(',');
|
||
|
||
|
||
resultList.Add(item);
|
||
}
|
||
}
|
||
return resultList;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return new List<XLJXMX>(); // 返回空集合
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static Result DeleteXLJXMX(string XLJXDJ, string XLJXDH, string sXLJXGZXH, string sDCZT, string sBJCP, string sXLXH, string sXLGG, string sXLBZ, string sDYDJID, string sQSYS)
|
||
{
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
|
||
List<XLJXMX> resultList = new List<XLJXMX>();
|
||
|
||
// 构建查询语句
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Add(@"DELETE FROM XLJXMX WHERE XLJXMX_XLJXDJ = :XLJXDJ AND XLJXMX_XLJXDH = :XLJXDH");
|
||
if (!string.IsNullOrEmpty(sDCZT.Trim()))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_DCZT = :DCZT ");
|
||
sSQL.ParamByName("DCZT").Value = sDCZT;
|
||
}
|
||
if (sXLJXGZXH == "-1")
|
||
sSQL.Add(" AND XLJXMX_XLJXGZXH>0 ");
|
||
else if (sXLJXGZXH != "-2")
|
||
{
|
||
sSQL.Add(" AND XLJXMX_XLJXGZXH = :XLJXGZXH");
|
||
sSQL.ParamByName("XLJXGZXH").Value = sXLJXGZXH;
|
||
}
|
||
if (!string.IsNullOrEmpty(sBJCP))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_XLBSC like :BJCP ");
|
||
sSQL.ParamByName("BJCP").Value = "%" + sBJCP + "%";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(sXLXH))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_JXXLXHID like :XLXH ");
|
||
sSQL.ParamByName("XLXH").Value = "%" + sXLXH + "%";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(sXLGG))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_JXXLGGID like :XLGG ");
|
||
sSQL.ParamByName("XLGG").Value = "%" + sXLGG + "%";
|
||
}
|
||
|
||
|
||
|
||
if (!string.IsNullOrEmpty(sXLBZ))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_JXXLBZID = :XLBZ ");
|
||
sSQL.ParamByName("XLBZ").Value = sXLBZ;
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(sDYDJID))
|
||
{
|
||
sSQL.Add(" AND XLJXMX_JXDYDJID = :DYDJ ");
|
||
sSQL.ParamByName("DYDJ").Value = sDYDJID;
|
||
}
|
||
|
||
AppendMissingElementFilter(sSQL, sQSYS);
|
||
|
||
// 添加查询参数
|
||
sSQL.ParamByName("XLJXDJ").Value = XLJXDJ;
|
||
sSQL.ParamByName("XLJXDH").Value = XLJXDH;
|
||
|
||
dberp.ExecSQL(sSQL);
|
||
|
||
Result res = new Result();
|
||
res.success = true;
|
||
return res;
|
||
}
|
||
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static List<XLJXGZ> GetXLJXGZList(string XLJXDJ, string XLJXDH)
|
||
{
|
||
TDatabase dberp = null;
|
||
try
|
||
{
|
||
dberp = TContextDatabases.GetDatabase("DBERP");
|
||
List<XLJXGZ> resultList = new List<XLJXGZ>();
|
||
|
||
// 构建查询语句
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add(@"SELECT
|
||
XLJXGZ_XLJXDJ,
|
||
XLJXGZ_XLJXDH,
|
||
XLJXGZ_XLJXGZXH,
|
||
XLJXGZ_XLJXGZC,
|
||
XLJXGZ_WHRID,
|
||
XLJXGZ_WHR,
|
||
XLJXGZ_WHSJ,
|
||
XLJXGZ_XLXHYFC,
|
||
XLJXGZ_XLGGYFC,
|
||
XLJXGZ_DYDJYFC,
|
||
XLJXGZ_XLBZYFC,
|
||
XLJXGZ_XLYSYFC
|
||
FROM XLJXGZ
|
||
WHERE XLJXGZ_XLJXDJ = :XLJXDJ
|
||
AND (XLJXGZ_XLJXDH = :XLJXDH )");
|
||
|
||
// 添加查询参数
|
||
sSQL.ParamByName("XLJXDJ").Value = XLJXDJ;
|
||
sSQL.ParamByName("XLJXDH").Value = XLJXDH;
|
||
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
foreach (DataRow row in ds.Tables[0].Rows)
|
||
{
|
||
// 使用传统赋值方式(避免对象初始化器)
|
||
XLJXGZ item = ParseXLJXGZFromDataRow(row);
|
||
|
||
resultList.Add(item);
|
||
}
|
||
}
|
||
return resultList;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return new List<XLJXGZ>(); // 返回空集合
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static List<XLJXGZ> GetTYXLJXGZList(string XLJXDJ, string XLJXDH)
|
||
{
|
||
TDatabase dberp = null;
|
||
try
|
||
{
|
||
dberp = TContextDatabases.GetDatabase("DBERP");
|
||
List<XLJXGZ> resultList = new List<XLJXGZ>();
|
||
|
||
// 构建查询语句
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add(@"SELECT
|
||
XLJXGZ_XLJXDJ,
|
||
XLJXGZ_XLJXDH,
|
||
XLJXGZ_XLJXGZXH,
|
||
XLJXGZ_XLJXGZC,
|
||
XLJXGZ_WHRID,
|
||
XLJXGZ_WHR,
|
||
XLJXGZ_WHSJ,
|
||
XLJXGZ_XLXHYFC,
|
||
XLJXGZ_XLGGYFC,
|
||
XLJXGZ_DYDJYFC,
|
||
XLJXGZ_XLBZYFC,
|
||
XLJXGZ_XLYSYFC
|
||
FROM XLJXGZ
|
||
WHERE XLJXGZ_XLJXDJ = :XLJXDJ
|
||
AND (XLJXGZ_XLJXDH = :XLJXDH )");
|
||
|
||
// 添加查询参数
|
||
sSQL.ParamByName("XLJXDJ").Value = XLJXDJ;
|
||
sSQL.ParamByName("XLJXDH").Value = ' ';
|
||
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
foreach (DataRow row in ds.Tables[0].Rows)
|
||
{
|
||
// 使用传统赋值方式(避免对象初始化器)
|
||
XLJXGZ item = ParseXLJXGZFromDataRow(row);
|
||
|
||
resultList.Add(item);
|
||
}
|
||
}
|
||
return resultList;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return new List<XLJXGZ>(); // 返回空集合
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public Result DeleteXLJXGZ(string XLJXDH, string sXLJXGZXH)
|
||
{
|
||
Result result = new Result();
|
||
TDatabase dberp = dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add("delete from XLJXGZ where XLJXGZ_XLJXDJ = :XLJXDJ and XLJXGZ_XLJXDH = :XLJXDH and XLJXGZ_XLJXGZXH = :XLJXGZXH ");
|
||
sSQL.ParamByName("XLJXDJ").Value = "XSBJ";
|
||
sSQL.ParamByName("XLJXDH").Value = XLJXDH;
|
||
sSQL.ParamByName("XLJXGZXH").Value = sXLJXGZXH;
|
||
dberp.ExecSQL(sSQL);
|
||
result.success = true;
|
||
return result;
|
||
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static XLJXGZ GetXLJXGZ(string XLJXDJ, string XLJXDH, string XLJXGZXH)
|
||
{
|
||
TDatabase dberp = null;
|
||
try
|
||
{
|
||
dberp = TContextDatabases.GetDatabase("DBERP");
|
||
List<XLJXGZ> resultList = new List<XLJXGZ>();
|
||
|
||
// 构建查询语句
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Add(@"SELECT
|
||
XLJXGZ_XLJXDJ,
|
||
XLJXGZ_XLJXDH,
|
||
XLJXGZ_XLJXGZXH,
|
||
XLJXGZ_XLJXGZC,
|
||
XLJXGZ_WHRID,
|
||
XLJXGZ_WHR,
|
||
XLJXGZ_WHSJ,
|
||
XLJXGZ_XLXHYFC,
|
||
XLJXGZ_XLGGYFC,
|
||
XLJXGZ_DYDJYFC,
|
||
XLJXGZ_XLBZYFC,
|
||
XLJXGZ_XLYSYFC
|
||
FROM XLJXGZ
|
||
WHERE XLJXGZ_XLJXDJ = :XLJXDJ
|
||
AND XLJXGZ_XLJXDH = :XLJXDH
|
||
AND XLJXGZ_XLJXGZXH = :XLJXGZXH ");
|
||
|
||
// 添加查询参数
|
||
sSQL.ParamByName("XLJXDJ").Value = XLJXDJ;
|
||
sSQL.ParamByName("XLJXDH").Value = XLJXDH;
|
||
sSQL.ParamByName("XLJXGZXH").Value = XLJXGZXH;
|
||
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
XLJXGZ item = new XLJXGZ();
|
||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
foreach (DataRow row in ds.Tables[0].Rows)
|
||
{
|
||
item = ParseXLJXGZFromDataRow(row);
|
||
|
||
|
||
}
|
||
}
|
||
else
|
||
{
|
||
sSQL.ParamByName("XLJXDJ").Value = XLJXDJ;
|
||
sSQL.ParamByName("XLJXDH").Value = ' ';
|
||
sSQL.ParamByName("XLJXGZXH").Value = XLJXGZXH;
|
||
ds = dberp.OpenDataSet(sSQL);
|
||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
foreach (DataRow row in ds.Tables[0].Rows)
|
||
{
|
||
item = ParseXLJXGZFromDataRow(row);
|
||
|
||
|
||
}
|
||
}
|
||
}
|
||
return item;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return new XLJXGZ(); // 返回空集合
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static Result InsertXLJXMX(XLJXMX item)
|
||
{
|
||
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
|
||
TDatabase dberp = null;
|
||
Result result = new Result();
|
||
try
|
||
{
|
||
dberp = TContextDatabases.GetDatabase("DBERP");
|
||
dberp.BeginTrans(); // 开启事务
|
||
|
||
// 构建插入语句
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Add(@"INSERT INTO XLJXMX (XLJXMX_XLJXDJ,XLJXMX_XLJXDH,XLJXMX_XLJXMXH,XLJXMX_XLBSC,XLJXMX_XLJXGZXH,
|
||
XLJXMX_JXXLXHID,XLJXMX_XLXHID,XLJXMX_JXXLGGID,XLJXMX_XLGGID,XLJXMX_JXDYDJID,
|
||
XLJXMX_DYDJID,XLJXMX_XLBZID,XLJXMX_JXXLBZID,XLJXMX_XLYSID,XLJXMX_JXXLYSID,XLJXMX_WHR,XLJXMX_WHRID,
|
||
XLJXMX_WHSJ,XLJXMX_DCZT,XLJXMX_JLDW,XLJXMX_SL,XLJXMX_FBH,XLJXMX_JSGFSID
|
||
) VALUES (:XLJXDJ,:XLJXDH,:XLJXMXH,:XLBSC,:XLJXGZXH,:JXXLXHID,:XLXHID,:JXXLGGID,:XLGGID,
|
||
:JXDYDJID,:DYDJID,:XLBZID,:JXXLBZID,:XLYSID,:JXXLYSID,:WHR,:WHRID,:WHSJ,:DCZT,:JLDW,:SL,:FBH,:JSGFSID)");
|
||
|
||
// 添加参数(确保空值转换为DBNull)
|
||
sSQL.ParamByName("XLJXDJ").Value = item.XLJXDJ;
|
||
sSQL.ParamByName("XLJXDH").Value = item.XLJXDH;
|
||
sSQL.ParamByName("XLJXMXH").Value = GetNextXLJXMXH(dberp, item.XLJXDH);
|
||
sSQL.ParamByName("XLBSC").Value = GetSafeValue(item.XLBSC);
|
||
sSQL.ParamByName("XLJXGZXH").Value = 0;
|
||
sSQL.ParamByName("JXXLXHID").Value = GetSafeValue(item.JXXLXHID);
|
||
sSQL.ParamByName("XLXHID").Value = GetSafeValue(item.XLXHID);
|
||
sSQL.ParamByName("JXXLGGID").Value = GetSafeValue(item.JXXLGGID);
|
||
sSQL.ParamByName("XLGGID").Value = GetSafeValue(item.XLGGID);
|
||
sSQL.ParamByName("JXDYDJID").Value = GetSafeValue(item.JXDYDJID);
|
||
sSQL.ParamByName("DYDJID").Value = GetSafeValue(item.DYDJID);
|
||
sSQL.ParamByName("XLBZID").Value = GetSafeValue(item.XLBZID);
|
||
sSQL.ParamByName("JXXLBZID").Value = GetSafeValue(item.JXXLBZID);
|
||
sSQL.ParamByName("XLYSID").Value = GetSafeValue(item.XLYSID);
|
||
sSQL.ParamByName("JXXLYSID").Value = GetSafeValue(item.JXXLYSID);
|
||
sSQL.ParamByName("WHR").Value = tSession.UserName;
|
||
sSQL.ParamByName("WHRID").Value =tSession.UserId;
|
||
sSQL.ParamByName("WHSJ").Value = DateTime.Now;
|
||
sSQL.ParamByName("DCZT").Value = "N";
|
||
sSQL.ParamByName("JLDW").Value = item.JLDW;
|
||
sSQL.ParamByName("SL").Value = CMISproConvert.StrToFloat(item.SL);
|
||
sSQL.ParamByName("FBH").Value = item.FBH;
|
||
sSQL.ParamByName("JSGFSID").Value = item.JSGFID;
|
||
// 执行插入
|
||
int affectedRows = dberp.ExecSQL(sSQL);
|
||
|
||
dberp.CommitTrans();
|
||
|
||
result.success = true;
|
||
result.msg = sSQL.ParamByName("XLJXDH").Value.ToString();
|
||
return result;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// 发生异常时回滚事务
|
||
if (dberp != null && dberp.InTransaction)
|
||
{
|
||
dberp.RollbackTrans();
|
||
}
|
||
|
||
// 记录错误日志
|
||
|
||
result.success = false;
|
||
result.msg = "数据插入失败: " + ex.Message;
|
||
return result;
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static Result InsertXLJXMXList(List<XLJXMX> items)
|
||
{
|
||
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL sSQL = new TSQL(dberp);
|
||
Result result = new Result();
|
||
try
|
||
{
|
||
|
||
dberp.BeginTrans(); // 开启事务
|
||
|
||
// 创建字典用于按XLJXDH分组
|
||
Dictionary<string, List<XLJXMX>> groupedItems = new Dictionary<string, List<XLJXMX>>();
|
||
|
||
// 按XLJXDH分组
|
||
foreach (XLJXMX item in items)
|
||
{
|
||
string key = item.XLJXDH;
|
||
if (!groupedItems.ContainsKey(key))
|
||
{
|
||
groupedItems[key] = new List<XLJXMX>();
|
||
}
|
||
groupedItems[key].Add(item);
|
||
}
|
||
|
||
// 处理每个分组
|
||
foreach (string key in groupedItems.Keys)
|
||
{
|
||
List<XLJXMX> group = groupedItems[key];
|
||
|
||
int sequence = GetNextXLJXMXH(dberp, key);
|
||
|
||
// 处理组内每个项目
|
||
foreach (XLJXMX item in group)
|
||
{
|
||
// 构建插入语句
|
||
sSQL.Clear();
|
||
sSQL.Add(@"INSERT INTO XLJXMX (XLJXMX_XLJXDJ,XLJXMX_XLJXDH,XLJXMX_XLJXMXH,XLJXMX_XLBSC,XLJXMX_XLJXGZXH,
|
||
XLJXMX_JXXLXHID,XLJXMX_XLXHID,XLJXMX_JXXLGGID,XLJXMX_XLGGID,XLJXMX_JXDYDJID,
|
||
XLJXMX_DYDJID,XLJXMX_XLBZID,XLJXMX_JXXLBZID,XLJXMX_XLYSID,XLJXMX_JXXLYSID,
|
||
XLJXMX_WHR,XLJXMX_WHRID,XLJXMX_WHSJ,XLJXMX_DCZT,XLJXMX_JLDW,XLJXMX_SL,XLJXMX_FBH,XLJXMX_JSGFSID
|
||
) VALUES (:XLJXDJ,:XLJXDH,:XLJXMXH,:XLBSC,:XLJXGZXH,:JXXLXHID,:XLXHID,
|
||
:JXXLGGID,:XLGGID,:JXDYDJID,:DYDJID,:XLBZID,:JXXLBZID,:XLYSID,
|
||
:JXXLYSID,:WHR,:WHRID,:WHSJ,:DCZT,:JLDW,:SL,:FBH,:JSGFSID)");
|
||
|
||
// 添加参数
|
||
sSQL.ParamByName("XLJXDJ").Value = item.XLJXDJ;
|
||
sSQL.ParamByName("XLJXDH").Value = item.XLJXDH;
|
||
sSQL.ParamByName("XLJXMXH").Value = sequence++;
|
||
sSQL.ParamByName("XLBSC").Value = GetSafeValue(item.XLBSC);
|
||
sSQL.ParamByName("XLJXGZXH").Value = 0;
|
||
sSQL.ParamByName("JXXLXHID").Value = GetSafeValue(item.JXXLXHID);
|
||
sSQL.ParamByName("XLXHID").Value = GetSafeValue(item.XLXHID);
|
||
sSQL.ParamByName("JXXLGGID").Value = GetSafeValue(item.JXXLGGID);
|
||
sSQL.ParamByName("XLGGID").Value = GetSafeValue(item.XLGGID);
|
||
sSQL.ParamByName("JXDYDJID").Value = GetSafeValue(item.JXDYDJID);
|
||
sSQL.ParamByName("DYDJID").Value = GetSafeValue(item.DYDJID);
|
||
sSQL.ParamByName("XLBZID").Value = GetSafeValue(item.XLBZID);
|
||
sSQL.ParamByName("JXXLBZID").Value = GetSafeValue(item.JXXLBZID);
|
||
sSQL.ParamByName("XLYSID").Value = GetSafeValue(item.XLYSID);
|
||
sSQL.ParamByName("JXXLYSID").Value = GetSafeValue(item.JXXLYSID);
|
||
sSQL.ParamByName("WHR").Value = tSession.UserName;
|
||
sSQL.ParamByName("WHRID").Value = tSession.UserId;
|
||
sSQL.ParamByName("WHSJ").Value = DateTime.Now;
|
||
sSQL.ParamByName("DCZT").Value = "N";
|
||
sSQL.ParamByName("JLDW").Value = item.JLDW;
|
||
sSQL.ParamByName("SL").Value =CMISproConvert.StrToFloat( item.SL);
|
||
sSQL.ParamByName("FBH").Value = item.FBH;
|
||
sSQL.ParamByName("JSGFSID").Value = item.JSGFID;
|
||
// 执行插入
|
||
dberp.ExecSQL(sSQL);
|
||
}
|
||
}
|
||
|
||
dberp.CommitTrans();
|
||
|
||
result.success = true;
|
||
result.msg = "成功插入" + items.Count + "条数据";
|
||
return result;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// 发生异常时回滚事务
|
||
if (dberp != null && dberp.InTransaction)
|
||
{
|
||
dberp.RollbackTrans();
|
||
}
|
||
|
||
result.success = false;
|
||
result.msg = "数据批量插入失败: " + ex.Message;
|
||
return result;
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static Result UpdateXLJXMXList(List<XLJXMX> items)
|
||
{
|
||
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL sSQL = new TSQL(dberp);
|
||
Result result = new Result();
|
||
try
|
||
{
|
||
|
||
dberp.BeginTrans(); // 开启事务
|
||
|
||
// 创建字典用于按XLJXDH分组
|
||
Dictionary<string, List<XLJXMX>> groupedItems = new Dictionary<string, List<XLJXMX>>();
|
||
|
||
// 按XLJXDH分组
|
||
foreach (XLJXMX item in items)
|
||
{
|
||
string key = item.XLJXDH;
|
||
if (!groupedItems.ContainsKey(key))
|
||
{
|
||
groupedItems[key] = new List<XLJXMX>();
|
||
}
|
||
groupedItems[key].Add(item);
|
||
}
|
||
|
||
// 处理每个分组
|
||
foreach (string key in groupedItems.Keys)
|
||
{
|
||
List<XLJXMX> group = groupedItems[key];
|
||
|
||
// 处理组内每个项目
|
||
foreach (XLJXMX item in group)
|
||
{
|
||
// 构建插入语句
|
||
sSQL.Clear();
|
||
sSQL.Add(@"update XLJXMX set XLJXMX_JXXLXHID=:JXXLXHID,XLJXMX_JXXLGGID=:JXXLGGID,XLJXMX_JXXLBZID=:JXXLBZID,XLJXMX_JXDYDJID=:JXDYDJID
|
||
where XLJXMX_XLJXDJ=:XLJXDJ and XLJXMX_XLJXDH=:XLJXDH and XLJXMX_XLJXMXH=:XLJXMXH");
|
||
|
||
// 添加参数
|
||
sSQL.ParamByName("XLJXDJ").Value = item.XLJXDJ;
|
||
sSQL.ParamByName("XLJXDH").Value = item.XLJXDH;
|
||
sSQL.ParamByName("XLJXMXH").Value = item.XLJXMXH;
|
||
sSQL.ParamByName("JXXLXHID").Value = GetSafeValue(item.JXXLXHID);
|
||
sSQL.ParamByName("JXXLGGID").Value = GetSafeValue(item.JXXLGGID);
|
||
sSQL.ParamByName("JXDYDJID").Value = GetSafeValue(item.JXDYDJID);
|
||
sSQL.ParamByName("JXXLBZID").Value = GetSafeValue(item.JXXLBZID);
|
||
// 执行插入
|
||
dberp.ExecSQL(sSQL);
|
||
}
|
||
}
|
||
|
||
dberp.CommitTrans();
|
||
|
||
result.success = true;
|
||
result.msg = "成功更新" + items.Count + "条数据";
|
||
return result;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// 发生异常时回滚事务
|
||
if (dberp != null && dberp.InTransaction)
|
||
{
|
||
dberp.RollbackTrans();
|
||
}
|
||
|
||
result.success = false;
|
||
result.msg = "数据批量更新失败: " + ex.Message;
|
||
return result;
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
|
||
#region 解析公共核心
|
||
|
||
/// <summary>
|
||
/// 首次成功解析时的回调委托,返回要应用的规则序号
|
||
/// </summary>
|
||
private delegate string OnFirstSuccessfulParseDelegate();
|
||
|
||
/// <summary>
|
||
/// 加载等效替换规则
|
||
/// </summary>
|
||
private static DataSet LoadReplaceRules(TDatabase dberp)
|
||
{
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add("select XLXSBJDXTHDZQD_THLX,XLXSBJDXTHDZQD_THQXHZF,XLXSBJDXTHDZQD_THHXHZF,XLXSBJDXTHDZQD_THQGGZF,XLXSBJDXTHDZQD_THHGGZF,");
|
||
sSQL.Add(" XLXSBJDXTHDZQD_THQDYDJZF,XLXSBJDXTHDZQD_THHDYDJZF from XLXSBJDXTHDZQD order by XLXSBJDXTHDZQD_THYXJ desc,XLXSBJDXTHDZQD_XH ");
|
||
return dberp.OpenDataSet(sSQL);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据 XLXSBJDXTHDZQD 配置对解析结果进行等效替换
|
||
/// </summary>
|
||
private static void ApplyReplaceRules(
|
||
DataSet dsTHGZ,
|
||
ref string sDXHXLXH,
|
||
ref string sDXHXLGG,
|
||
ref string sDXHXLBZ,
|
||
ref string sDXHDYDJ)
|
||
{
|
||
if (dsTHGZ == null || dsTHGZ.Tables.Count == 0 || dsTHGZ.Tables[0].Rows.Count == 0)
|
||
return;
|
||
|
||
bool bXHGGJQTH = false;
|
||
bool bXHZZDYDJJQTHDYDJ = false;
|
||
bool bXHDYDJJQTH = false;
|
||
|
||
for (int j = 0; j < dsTHGZ.Tables[0].Rows.Count; j++)
|
||
{
|
||
string sTHLX = dsTHGZ.Tables[0].Rows[j]["XLXSBJDXTHDZQD_THLX"].ToString().Trim();
|
||
string sTHQXHZF = dsTHGZ.Tables[0].Rows[j]["XLXSBJDXTHDZQD_THQXHZF"].ToString().Trim();
|
||
string sTHHXHZF = dsTHGZ.Tables[0].Rows[j]["XLXSBJDXTHDZQD_THHXHZF"].ToString().Trim();
|
||
string sTHQGGZF = dsTHGZ.Tables[0].Rows[j]["XLXSBJDXTHDZQD_THQGGZF"].ToString().Trim();
|
||
string sTHHGGZF = dsTHGZ.Tables[0].Rows[j]["XLXSBJDXTHDZQD_THHGGZF"].ToString().Trim();
|
||
string sTHQDYDJZF = dsTHGZ.Tables[0].Rows[j]["XLXSBJDXTHDZQD_THQDYDJZF"].ToString().Trim();
|
||
string sTHHDYDJZF = dsTHGZ.Tables[0].Rows[j]["XLXSBJDXTHDZQD_THHDYDJZF"].ToString().Trim();
|
||
|
||
if (sTHLX.Equals("XHJQTH") && !bXHGGJQTH)
|
||
{
|
||
if (sDXHXLXH.Equals(sTHQXHZF))
|
||
{
|
||
sDXHXLXH = sTHHXHZF;
|
||
break;
|
||
}
|
||
}
|
||
else if (sTHLX.Equals("XHZZTH") && !bXHGGJQTH)
|
||
{
|
||
if (Regex.IsMatch(sDXHXLXH, sTHQXHZF))
|
||
{
|
||
sDXHXLXH = Regex.Replace(sDXHXLXH, sTHQXHZF, sTHHXHZF);
|
||
break;
|
||
}
|
||
}
|
||
else if (sTHLX.Equals("DYDJJQTH") && !bXHZZDYDJJQTHDYDJ && !bXHDYDJJQTH)
|
||
{
|
||
if (sDXHDYDJ.Equals(sTHQDYDJZF))
|
||
{
|
||
sDXHDYDJ = sTHHDYDJZF;
|
||
}
|
||
}
|
||
else if (sTHLX.Equals("XHZZDYDJJQTHDYDJ") && !bXHDYDJJQTH)
|
||
{
|
||
if (Regex.IsMatch(sDXHXLXH, sTHQXHZF) && sDXHDYDJ == sTHQDYDJZF)
|
||
{
|
||
sDXHDYDJ = sTHHDYDJZF;
|
||
bXHZZDYDJJQTHDYDJ = true;
|
||
}
|
||
}
|
||
else if (sTHLX.Equals("XHGGJQTH"))
|
||
{
|
||
if (sDXHXLXH == sTHQXHZF && sDXHXLGG == sTHQGGZF)
|
||
{
|
||
sDXHXLXH = sTHHXHZF;
|
||
sDXHXLGG = sTHHGGZF;
|
||
bXHGGJQTH = true;
|
||
}
|
||
}
|
||
else if (sTHLX.Equals("XHGGDYDJJQTH"))
|
||
{
|
||
if (sDXHXLXH == sTHQXHZF &&
|
||
sDXHXLGG == sTHQGGZF &&
|
||
sDXHDYDJ == sTHQDYDJZF)
|
||
{
|
||
sDXHXLXH = sTHHXHZF;
|
||
sDXHXLGG = sTHHGGZF;
|
||
sDXHDYDJ = sTHHDYDJZF;
|
||
break;
|
||
}
|
||
}
|
||
else if (sTHLX.Equals("XHDYDJJQTH"))
|
||
{
|
||
if (sDXHXLXH == sTHQXHZF && sDXHDYDJ == sTHQDYDJZF)
|
||
{
|
||
sDXHXLXH = sTHHXHZF;
|
||
sDXHDYDJ = sTHHDYDJZF;
|
||
bXHDYDJJQTH = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 解析单条产品字符串,返回解析结果及等效替换后的结果
|
||
/// </summary>
|
||
private static bool TryParseProduct(
|
||
string sXLBSC,
|
||
XLJXGZ rule,
|
||
DataSet dsTHGZ,
|
||
out string aXLXH,
|
||
out string aXLGG,
|
||
out string aDYDJ,
|
||
out string aXLBZ,
|
||
out string aXLYS,
|
||
out string sDXHXLXH,
|
||
out string sDXHXLGG,
|
||
out string sDXHDYDJ,
|
||
out string sDXHXLBZ)
|
||
{
|
||
aXLXH = aXLGG = aDYDJ = aXLBZ = aXLYS = string.Empty;
|
||
sDXHXLXH = sDXHXLGG = sDXHDYDJ = sDXHXLBZ = string.Empty;
|
||
|
||
string sXLJXGZ = rule.XLJXGZC;
|
||
string sYFXH = rule.XLXHYFC.Replace("型号码", "A").Replace("前缀码", "B").Replace("后缀码", "C");
|
||
string sYFGG = rule.XLGGYFC.Replace("截面", "A").Replace("芯数", "B").Replace("线对数", "C").Replace("线组数", "D");
|
||
string sYFDYDJ = rule.DYDJYFC.Replace("相电压", "A").Replace("线电压", "B").Replace("电压单位", "C").Replace("线组数", "D");
|
||
string sYFBZ = rule.XLBZYFC.Replace("标准名", "A");
|
||
|
||
TXLJXGZ xljxgz = new TXLJXGZ();
|
||
if (!xljxgz.LoadGZ(sXLJXGZ, sYFXH, sYFGG, sYFDYDJ, sYFBZ, ""))
|
||
return false;
|
||
|
||
if (!xljxgz.XLYSJX(sXLBSC, out aXLXH, out aXLGG, out aDYDJ, out aXLBZ, out aXLYS))
|
||
return false;
|
||
|
||
if (string.IsNullOrEmpty(aXLXH.Trim().Replace("-", "").Replace("/", "").Replace("(", "").Replace(")", "")))
|
||
return false;
|
||
|
||
sDXHXLXH = aXLXH;
|
||
sDXHXLGG = aXLGG;
|
||
sDXHXLBZ = aXLBZ;
|
||
sDXHDYDJ = aDYDJ;
|
||
|
||
ApplyReplaceRules(dsTHGZ, ref sDXHXLXH, ref sDXHXLGG, ref sDXHXLBZ, ref sDXHDYDJ);
|
||
|
||
return true;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 将解析结果更新到 XLJXMX 单条记录
|
||
/// </summary>
|
||
private static void UpdateXLJXMXWithParseResult(
|
||
TDatabase dberp,
|
||
TSQL sSQL,
|
||
string sXLJXDJ,
|
||
string sXLJXDH,
|
||
string sXLJXMXH,
|
||
string sXLJXGZXH,
|
||
string aXLXH,
|
||
string aXLGG,
|
||
string aDYDJ,
|
||
string aXLBZ,
|
||
string aXLYS,
|
||
string sDXHXLXH,
|
||
string sDXHXLGG,
|
||
string sDXHDYDJ,
|
||
string sDXHXLBZ)
|
||
{
|
||
sSQL.Clear();
|
||
sSQL.Add("UPDATE XLJXMX SET ");
|
||
sSQL.Add(" XLJXMX_XLJXGZXH=:pXLJXGZXH, ");
|
||
sSQL.Add(" XLJXMX_XLXHID=:pXLXHID, ");
|
||
sSQL.Add(" XLJXMX_DYDJID=:pDYDJID, ");
|
||
sSQL.Add(" XLJXMX_XLGGID=:pXLGGID, ");
|
||
sSQL.Add(" XLJXMX_XLBZID=:pXLBZID, ");
|
||
sSQL.Add(" XLJXMX_XLYSID=:pXLYSID, ");
|
||
sSQL.Add(" XLJXMX_JXXLXHID=:pDXXLXHID, ");
|
||
sSQL.Add(" XLJXMX_JXDYDJID=:pDXDYDJID, ");
|
||
sSQL.Add(" XLJXMX_JXXLGGID=:pDXXLGGID, ");
|
||
sSQL.Add(" XLJXMX_JXXLBZID=:pDXXLBZID, ");
|
||
sSQL.Add(" XLJXMX_JXXLYSID=:pXLYSID ");
|
||
sSQL.Add(" WHERE XLJXMX_XLJXDJ=:pXLJXDJ ");
|
||
sSQL.Add(" AND XLJXMX_XLJXDH=:pXLJXDH ");
|
||
sSQL.Add(" AND XLJXMX_XLJXMXH=:pXLJXMXH ");
|
||
sSQL.ParamByName("pXLJXDJ").Value = sXLJXDJ;
|
||
sSQL.ParamByName("pXLJXDH").Value = sXLJXDH;
|
||
sSQL.ParamByName("pXLJXMXH").Value = sXLJXMXH;
|
||
sSQL.ParamByName("pXLJXGZXH").Value = sXLJXGZXH;
|
||
sSQL.ParamByName("pXLXHID").Value = aXLXH.Substring(0, Math.Min(aXLXH.Length, 40));
|
||
sSQL.ParamByName("pXLGGID").Value = aXLGG.Substring(0, Math.Min(aXLGG.Length, 60));
|
||
sSQL.ParamByName("pDYDJID").Value = aDYDJ.Substring(0, Math.Min(aDYDJ.Length, 20));
|
||
sSQL.ParamByName("pXLBZID").Value = aXLBZ.Substring(0, Math.Min(aXLBZ.Length, 10));
|
||
sSQL.ParamByName("pXLYSID").Value = aXLYS.Substring(0, Math.Min(aXLYS.Length, 10));
|
||
sSQL.ParamByName("pDXXLXHID").Value = sDXHXLXH.Substring(0, Math.Min(sDXHXLXH.Length, 40));
|
||
sSQL.ParamByName("pDXXLGGID").Value = sDXHXLGG.Substring(0, Math.Min(sDXHXLGG.Length, 60));
|
||
sSQL.ParamByName("pDXDYDJID").Value = sDXHDYDJ.Substring(0, Math.Min(sDXHDYDJ.Length, 20));
|
||
sSQL.ParamByName("pDXXLBZID").Value = sDXHXLBZ.Substring(0, Math.Min(sDXHXLBZ.Length, 10));
|
||
dberp.ExecSQL(sSQL);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存或更新解析规则到 XLJXGZ,返回规则序号
|
||
/// </summary>
|
||
private static double SaveOrUpdateRule(
|
||
TDatabase dberp,
|
||
TSQL sSQL,
|
||
XLJXGZ rule,
|
||
string IsCommon,
|
||
string sYGZC,
|
||
CMISproSession tSession)
|
||
{
|
||
string space = " ";
|
||
string sXLJXGZ = rule.XLJXGZC;
|
||
string sYFXH = rule.XLXHYFC.Replace("型号码", "A").Replace("前缀码", "B").Replace("后缀码", "C");
|
||
string sYFGG = rule.XLGGYFC.Replace("截面", "A").Replace("芯数", "B").Replace("线对数", "C").Replace("线组数", "D");
|
||
string sYFDYDJ = rule.DYDJYFC.Replace("相电压", "A").Replace("线电压", "B").Replace("电压单位", "C").Replace("线组数", "D");
|
||
string sYFBZ = rule.XLBZYFC.Replace("标准名", "A");
|
||
double fNewXLJXGZXH = 0;
|
||
|
||
sSQL.Clear();
|
||
sSQL.Add("select XLJXGZ_XLJXGZXH from XLJXGZ where XLJXGZ_XLJXDJ=:pXLJXDJ and XLJXGZ_XLJXDH=:pXLJXDH and XLJXGZ_XLJXGZC =:pXLJXGZC ");
|
||
sSQL.ParamByName("pXLJXDJ").Value = rule.XLJXDJ;
|
||
if (IsCommon.Equals("Y"))
|
||
sSQL.ParamByName("pXLJXDH").Value = space;
|
||
else
|
||
sSQL.ParamByName("pXLJXDH").Value = rule.XLJXDH;
|
||
sSQL.ParamByName("pXLJXGZC").Value = sYGZC;
|
||
DataSet dsXLJXGZ = dberp.OpenDataSet(sSQL);
|
||
|
||
if (dsXLJXGZ.Tables[0].Rows.Count > 0)
|
||
{
|
||
fNewXLJXGZXH = CMISproConvert.StrToFloat(dsXLJXGZ.Tables[0].Rows[0][0].ToString().Trim());
|
||
sSQL.Clear();
|
||
sSQL.Add(" update XLJXGZ ");
|
||
sSQL.Add(" set XLJXGZ_XLJXGZC =:pXLJXGZC,XLJXGZ_XLXHYFC=:pXLXHYFC, ");
|
||
sSQL.Add(" XLJXGZ_XLGGYFC=:pXLGGYFC, ");
|
||
sSQL.Add(" XLJXGZ_DYDJYFC=:pDYDJYFC, ");
|
||
sSQL.Add(" XLJXGZ_XLBZYFC=:pXLBZYFC, ");
|
||
sSQL.Add(" XLJXGZ_XLYSYFC=:pXLYSYFC, ");
|
||
sSQL.Add(" XLJXGZ_WHRID=:pWHRID, ");
|
||
sSQL.Add(" XLJXGZ_WHR=:pWHR, ");
|
||
sSQL.Add(" XLJXGZ_WHSJ=:pWHSJ ");
|
||
sSQL.Add(" where XLJXGZ_XLJXDJ=:pXLJXDJ and XLJXGZ_XLJXDH=:pXLJXDH and XLJXGZ_XLJXGZXH=:pXLJXGZXH ");
|
||
sSQL.ParamByName("pXLXHYFC").Value = sYFXH;
|
||
sSQL.ParamByName("pXLGGYFC").Value = sYFGG;
|
||
sSQL.ParamByName("pDYDJYFC").Value = sYFDYDJ;
|
||
sSQL.ParamByName("pXLBZYFC").Value = sYFBZ;
|
||
sSQL.ParamByName("pXLYSYFC").Value = "";
|
||
sSQL.ParamByName("pWHRID").Value = tSession.UserId;
|
||
sSQL.ParamByName("pWHR").Value = tSession.UserName;
|
||
sSQL.ParamByName("pWHSJ").Value = DateTime.Now;
|
||
sSQL.ParamByName("pXLJXDJ").Value = rule.XLJXDJ;
|
||
if (IsCommon.Equals("Y"))
|
||
sSQL.ParamByName("pXLJXDH").Value = space;
|
||
else
|
||
sSQL.ParamByName("pXLJXDH").Value = rule.XLJXDH;
|
||
sSQL.ParamByName("pXLJXGZXH").Value = fNewXLJXGZXH;
|
||
sSQL.ParamByName("pXLJXGZC").Value = sXLJXGZ;
|
||
dberp.ExecSQL(sSQL);
|
||
}
|
||
else
|
||
{
|
||
if (IsCommon.Equals("Y"))
|
||
fNewXLJXGZXH = CMISproDataBase.GetMaxXH("DBERP", "XLJXGZ", "XLJXGZ_XLJXGZXH",
|
||
string.Format("XLJXGZ_XLJXDJ='{0}' and XLJXGZ_XLJXDH ='{1}'", rule.XLJXDJ, space)) + 1;
|
||
else
|
||
fNewXLJXGZXH = CMISproDataBase.GetMaxXH("DBERP", "XLJXGZ", "XLJXGZ_XLJXGZXH",
|
||
string.Format("XLJXGZ_XLJXDJ='{0}' and XLJXGZ_XLJXDH ='{1}'", rule.XLJXDJ, rule.XLJXDH)) + 1;
|
||
|
||
sSQL.Clear();
|
||
sSQL.Add(" insert into XLJXGZ ");
|
||
sSQL.Add(" (XLJXGZ_XLJXDJ,XLJXGZ_XLJXDH,XLJXGZ_XLJXGZXH,XLJXGZ_XLJXGZC,XLJXGZ_WHRID,XLJXGZ_WHR,XLJXGZ_WHSJ, ");
|
||
sSQL.Add(" XLJXGZ_XLXHYFC,XLJXGZ_XLGGYFC,XLJXGZ_DYDJYFC,XLJXGZ_XLBZYFC,XLJXGZ_XLYSYFC) ");
|
||
sSQL.Add(" values ");
|
||
sSQL.Add(" (:pXLJXDJ,:pXLJXDH,:pXLJXGZXH,:pXLJXGZC,:pWHRID,:pWHR,:pWHSJ, ");
|
||
sSQL.Add(" :pXLXHYFC,:pXLGGYFC,:pDYDJYFC,:pXLBZYFC,:pXLYSYFC) ");
|
||
sSQL.ParamByName("pXLXHYFC").Value = sYFXH;
|
||
sSQL.ParamByName("pXLGGYFC").Value = sYFGG;
|
||
sSQL.ParamByName("pDYDJYFC").Value = sYFDYDJ;
|
||
sSQL.ParamByName("pXLBZYFC").Value = sYFBZ;
|
||
sSQL.ParamByName("pXLYSYFC").Value = "";
|
||
sSQL.ParamByName("pWHRID").Value = tSession.UserId;
|
||
sSQL.ParamByName("pWHR").Value = tSession.UserName;
|
||
sSQL.ParamByName("pWHSJ").Value = DateTime.Now;
|
||
sSQL.ParamByName("pXLJXDJ").Value = rule.XLJXDJ;
|
||
if (IsCommon.Equals("Y"))
|
||
sSQL.ParamByName("pXLJXDH").Value = space;
|
||
else
|
||
sSQL.ParamByName("pXLJXDH").Value = rule.XLJXDH;
|
||
sSQL.ParamByName("pXLJXGZXH").Value = fNewXLJXGZXH;
|
||
sSQL.ParamByName("pXLJXGZC").Value = sXLJXGZ;
|
||
dberp.ExecSQL(sSQL);
|
||
}
|
||
|
||
return fNewXLJXGZXH;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 维护 XLYFGZ 语法库
|
||
/// </summary>
|
||
private static void SaveSyntaxToXLYFGZ(
|
||
TDatabase dberp,
|
||
TSQL sSQL,
|
||
XLJXGZ rule,
|
||
CMISproSession tSession)
|
||
{
|
||
string sBSC = GetBSC(rule.XLJXGZC);
|
||
string sYFXH = rule.XLXHYFC.Replace("型号码", "A").Replace("前缀码", "B").Replace("后缀码", "C");
|
||
string sYFGG = rule.XLGGYFC.Replace("截面", "A").Replace("芯数", "B").Replace("线对数", "C").Replace("线组数", "D");
|
||
string sYFDYDJ = rule.DYDJYFC.Replace("相电压", "A").Replace("线电压", "B").Replace("电压单位", "C").Replace("线组数", "D");
|
||
string sYFBZ = rule.XLBZYFC.Replace("标准名", "A");
|
||
|
||
if (!string.IsNullOrEmpty(sYFXH) && sYFXH.Trim() != "")
|
||
IntoXLYFGZ(dberp, sSQL, "1", XLYSJXUtils.ProdCPH_XLXH(sBSC), XLYSJXUtils.ProdCXH_XLXH(sBSC), sYFXH);
|
||
if (!string.IsNullOrEmpty(sYFGG) && sYFGG.Trim() != "")
|
||
IntoXLYFGZ(dberp, sSQL, "2", XLYSJXUtils.ProdCPH_XLGG(sBSC), XLYSJXUtils.ProdCXH_XLGG(sBSC), sYFGG);
|
||
if (!string.IsNullOrEmpty(sYFDYDJ) && sYFDYDJ.Trim() != "")
|
||
IntoXLYFGZ(dberp, sSQL, "3", XLYSJXUtils.ProdCPH_DYDJ(sBSC), XLYSJXUtils.ProdCXH_DYDJ(sBSC), sYFDYDJ);
|
||
if (!string.IsNullOrEmpty(sYFBZ) && sYFBZ.Trim() != "")
|
||
IntoXLYFGZ(dberp, sSQL, "4", XLYSJXUtils.ProdCPH_XLBZ(sBSC), XLYSJXUtils.ProdCXH_XLBZ(sBSC), sYFBZ);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 将引用指定规则的 XLJXMX 明细重置为未解析状态
|
||
/// </summary>
|
||
private static void ResetMXByRuleNo(
|
||
TDatabase dberp,
|
||
TSQL sSQL,
|
||
string sXLJXDJ,
|
||
string sXLJXDH,
|
||
string sXLJXGZXH)
|
||
{
|
||
sSQL.Clear();
|
||
sSQL.Add(" update XLJXMX set XLJXMX_XLJXGZXH=0 ");
|
||
sSQL.Add(" where XLJXMX_XLJXDJ=:pXLJXDJ ");
|
||
sSQL.Add(" and XLJXMX_XLJXDH=:pXLJXDH ");
|
||
sSQL.Add(" and XLJXMX_XLJXGZXH=:pXLJXGZXH ");
|
||
sSQL.ParamByName("pXLJXDJ").Value = sXLJXDJ;
|
||
sSQL.ParamByName("pXLJXDH").Value = sXLJXDH;
|
||
sSQL.ParamByName("pXLJXGZXH").Value = sXLJXGZXH;
|
||
dberp.ExecSQL(sSQL);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 将指定解析规则应用到目标报价单下所有 XLJXGZXH=0 的明细行
|
||
/// </summary>
|
||
/// <param name="onFirstSuccessfulParse">首次成功解析时的回调,返回要应用的规则序号;返回空则跳过该行</param>
|
||
/// <returns>成功解析并更新的行数</returns>
|
||
private static int ApplyRuleToMXRows(
|
||
TDatabase dberp,
|
||
TSQL sSQL,
|
||
XLJXGZ rule,
|
||
DataSet dsTHGZ,
|
||
string targetBJDID,
|
||
string targetXLJXDJ,
|
||
string ruleNoToApply,
|
||
OnFirstSuccessfulParseDelegate onFirstSuccessfulParse)
|
||
{
|
||
int parsedCount = 0;
|
||
string currentRuleNo = ruleNoToApply;
|
||
bool firstParseHandled = false;
|
||
|
||
sSQL.Clear();
|
||
sSQL.Add(" SELECT XLJXMX_XLJXMXH as XLJXMXH, XLJXMX_XLBSC as XLBSC ");
|
||
sSQL.Add(" FROM XLJXMX ");
|
||
sSQL.Add(" WHERE XLJXMX_XLJXDJ = :pXLJXDJ ");
|
||
sSQL.Add(" AND XLJXMX_XLJXDH = :pXLJXDH ");
|
||
sSQL.Add(" AND XLJXMX_XLJXGZXH = 0 ");
|
||
sSQL.Add(" ORDER BY XLJXMX_XLJXMXH ");
|
||
sSQL.ParamByName("pXLJXDJ").Value = targetXLJXDJ;
|
||
sSQL.ParamByName("pXLJXDH").Value = targetBJDID;
|
||
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
|
||
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
string sXLJXMXH = ds.Tables[0].Rows[i]["XLJXMXH"].ToString().Trim();
|
||
string sXLBSC = ds.Tables[0].Rows[i]["XLBSC"].ToString().Trim();
|
||
|
||
string aXLXH, aXLGG, aDYDJ, aXLBZ, aXLYS;
|
||
string sDXHXLXH, sDXHXLGG, sDXHDYDJ, sDXHXLBZ;
|
||
|
||
if (!TryParseProduct(sXLBSC, rule, dsTHGZ,
|
||
out aXLXH, out aXLGG, out aDYDJ, out aXLBZ, out aXLYS,
|
||
out sDXHXLXH, out sDXHXLGG, out sDXHDYDJ, out sDXHXLBZ))
|
||
continue;
|
||
|
||
if (!firstParseHandled && onFirstSuccessfulParse != null)
|
||
{
|
||
string savedRuleNo = onFirstSuccessfulParse();
|
||
if (!string.IsNullOrEmpty(savedRuleNo))
|
||
currentRuleNo = savedRuleNo;
|
||
firstParseHandled = true;
|
||
}
|
||
|
||
UpdateXLJXMXWithParseResult(dberp, sSQL,
|
||
targetXLJXDJ, targetBJDID, sXLJXMXH, currentRuleNo,
|
||
aXLXH, aXLGG, aDYDJ, aXLBZ, aXLYS,
|
||
sDXHXLXH, sDXHXLGG, sDXHDYDJ, sDXHXLBZ);
|
||
|
||
parsedCount++;
|
||
}
|
||
|
||
return parsedCount;
|
||
}
|
||
|
||
#endregion
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static Result InsertXLJXGZ(XLJXGZ item, string IsCommon)
|
||
{
|
||
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
|
||
TDatabase dberp = null;
|
||
Result result = new Result();
|
||
string space = " ";
|
||
try
|
||
{
|
||
dberp = TContextDatabases.GetDatabase("DBERP");
|
||
dberp.BeginTrans(); // 开启事务
|
||
|
||
TSQL sSQL = new TSQL(dberp);
|
||
|
||
// 加载等效替换规则
|
||
DataSet dsTHGZ = LoadReplaceRules(dberp);
|
||
|
||
// 获取原有规则串(用于查询是否已存在)
|
||
string sYGZC = string.Empty;
|
||
if (CMISproConvert.StrToFloat(item.XLJXGZXH) > 0)
|
||
{
|
||
sSQL.Clear();
|
||
sSQL.Add(" select XLJXGZ_XLJXGZC from XLJXGZ ");
|
||
sSQL.Add(" where XLJXGZ_XLJXDJ=:pXLJXDJ and XLJXGZ_XLJXDH=:pXLJXDH and XLJXGZ_XLJXGZXH=:pXLJXGZXH ");
|
||
sSQL.ParamByName("pXLJXDJ").Value = item.XLJXDJ;
|
||
if (IsCommon.Equals("Y"))
|
||
sSQL.ParamByName("pXLJXDH").Value = space;
|
||
else
|
||
sSQL.ParamByName("pXLJXDH").Value = item.XLJXDH;
|
||
sSQL.ParamByName("pXLJXGZXH").Value = item.XLJXGZXH;
|
||
DataSet dsGZC = dberp.OpenDataSet(sSQL);
|
||
if (dsGZC.Tables[0].Rows.Count > 0)
|
||
sYGZC = dsGZC.Tables[0].Rows[0][0].ToString().Trim();
|
||
|
||
// 若是更新已有规则,先将引用该规则的明细重置为未解析
|
||
ResetMXByRuleNo(dberp, sSQL, item.XLJXDJ, item.XLJXDH, item.XLJXGZXH);
|
||
}
|
||
|
||
// 应用规则到所有未解析行;首次成功解析时才保存规则
|
||
string ruleNoToApply = item.XLJXGZXH;
|
||
double fNewXLJXGZXH = 0;
|
||
ApplyRuleToMXRows(dberp, sSQL, item, dsTHGZ, item.XLJXDH, item.XLJXDJ, ruleNoToApply, delegate {
|
||
fNewXLJXGZXH = SaveOrUpdateRule(dberp, sSQL, item, IsCommon, sYGZC, tSession);
|
||
SaveSyntaxToXLYFGZ(dberp, sSQL, item, tSession);
|
||
return fNewXLJXGZXH > 0 ? fNewXLJXGZXH.ToString() : item.XLJXGZXH;
|
||
});
|
||
|
||
dberp.CommitTrans();
|
||
|
||
result.success = true;
|
||
result.msg = fNewXLJXGZXH.ToString();
|
||
return result;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// 发生异常时回滚事务
|
||
if (dberp != null && dberp.InTransaction)
|
||
{
|
||
dberp.RollbackTrans();
|
||
}
|
||
|
||
// 记录错误日志
|
||
|
||
result.success = false;
|
||
result.msg = "解析失败: " + ex.Message;
|
||
return result;
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static List<string> GetDYDJList()
|
||
{
|
||
List<string> dydjList = new List<string>();
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add("select XLDYDJB_DYDJID from XLDYDJB where isnull(XLDYDJB_TYBZ,'N')='N' ");
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
dydjList.Add(ds.Tables[0].Rows[i][0].ToString().Trim());
|
||
}
|
||
return dydjList;
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static List<XLBZ> XLBZList()
|
||
{
|
||
List<XLBZ> xlbzList = new List<XLBZ>();
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add("select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ where ISNULL(XLBZ_DZSC,'N')='N' ");
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
XLBZ tp = new XLBZ();
|
||
tp.XLBZID = ds.Tables[0].Rows[i][0].ToString().Trim();
|
||
tp.XLBZMC = ds.Tables[0].Rows[i][1].ToString().Trim();
|
||
xlbzList.Add(tp);
|
||
}
|
||
return xlbzList;
|
||
}
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static Result commonParse(string BJDID)
|
||
{
|
||
TDatabase dberp = null;
|
||
Result result = new Result();
|
||
try
|
||
{
|
||
dberp = TContextDatabases.GetDatabase("DBERP");
|
||
dberp.BeginTrans(); // 开启事务
|
||
|
||
TSQL sSQL = new TSQL(dberp);
|
||
|
||
// 加载等效替换规则
|
||
DataSet dsTHGZ = LoadReplaceRules(dberp);
|
||
|
||
// 加载通用规则 + 当前报价单规则
|
||
List<XLJXGZ> xljxgzList = new List<XLJXGZ>();
|
||
xljxgzList.AddRange(GetXLJXGZList("XSBJ", " "));
|
||
xljxgzList.AddRange(GetXLJXGZList("XSBJ", BJDID));
|
||
|
||
// 依次应用每条规则
|
||
foreach (XLJXGZ item in xljxgzList)
|
||
{
|
||
ApplyRuleToMXRows(dberp, sSQL, item, dsTHGZ, BJDID, "XSBJ", item.XLJXGZXH, null);
|
||
}
|
||
|
||
dberp.CommitTrans();
|
||
result.msg = "-1";
|
||
result.success = true;
|
||
|
||
return result;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// 发生异常时回滚事务
|
||
if (dberp != null && dberp.InTransaction)
|
||
{
|
||
dberp.RollbackTrans();
|
||
}
|
||
|
||
// 记录错误日志
|
||
|
||
result.success = false;
|
||
result.msg = "解析失败: " + ex.Message;
|
||
return result;
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static XLJXJG XLYSTZJX(XLJXGZ item, string sXLBSC)
|
||
{
|
||
XLJXJG jxjg = new XLJXJG();
|
||
|
||
string aXLXH = "";
|
||
string aXLGG = "";
|
||
string aDYDJ = "";
|
||
string aXLBZ = "";
|
||
string aXLYS = "";
|
||
|
||
string sXLJXGZ = item.XLJXGZC;
|
||
string sYFXH = item.XLXHYFC.Replace("型号码", "A").Replace("前缀码", "B").Replace("后缀码", "C");
|
||
string sYFGG = item.XLGGYFC.Replace("截面", "A").Replace("芯数", "B").Replace("线对数", "C").Replace("线组数", "D");
|
||
string sYFDYDJ = item.DYDJYFC.Replace("相电压", "A").Replace("线电压", "B").Replace("电压单位", "C").Replace("线组数", "D");
|
||
string sYFBZ = item.XLBZYFC.Replace("标准名", "A");
|
||
TXLJXGZ xljxgz = new TXLJXGZ();
|
||
if (xljxgz.LoadGZ(sXLJXGZ, sYFXH, sYFGG, sYFDYDJ, sYFBZ, ""))
|
||
{
|
||
if (xljxgz.XLYSJX(sXLBSC, out aXLXH, out aXLGG, out aDYDJ, out aXLBZ, out aXLYS))
|
||
{
|
||
jxjg.XLXH = aXLXH;
|
||
jxjg.XLGG = aXLGG;
|
||
jxjg.XLBZ = aXLBZ;
|
||
jxjg.DYDJ = aDYDJ;
|
||
}
|
||
}
|
||
|
||
return jxjg;
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static JXPZInfo GetJXPZ(XLJXMX item)
|
||
{
|
||
JXPZInfo jxjg = new JXPZInfo();
|
||
|
||
XLJXGZ jxgz = GetXLJXGZ(item.XLJXDJ, item.XLJXDH, item.XLJXGZXH);
|
||
string aXLXH = item.XLXHID;
|
||
string aXLGG = item.XLGGID;
|
||
string aDYDJ = item.DYDJID;
|
||
string aXLBZ = item.XLBZID;
|
||
|
||
string sXLJXGZ = jxgz.XLJXGZC;
|
||
string sYFXH = jxgz.XLXHYFC;
|
||
string sYFGG = jxgz.XLGGYFC;
|
||
string sYFDYDJ = jxgz.DYDJYFC;
|
||
string sYFBZ = jxgz.XLBZYFC;
|
||
string sNewJXGZ = string.Empty;
|
||
if (CMISproConvert.StrToFloat(item.XLJXGZXH) == 0 || string.IsNullOrEmpty(sXLJXGZ))
|
||
{
|
||
jxjg.XLJXGZC = item.XLBSC;
|
||
}
|
||
else
|
||
{
|
||
TXLJXGZ xljxgz = new TXLJXGZ();
|
||
|
||
if (xljxgz.LoadGZ(sXLJXGZ, sYFXH, sYFGG, sYFDYDJ, sYFBZ, ""))
|
||
{
|
||
sNewJXGZ = xljxgz.ProdGZC(item.XLBSC);
|
||
if (string.IsNullOrEmpty(sNewJXGZ))
|
||
{
|
||
jxjg.XLJXGZC = sXLJXGZ;
|
||
}
|
||
else
|
||
jxjg.XLJXGZC = sNewJXGZ;
|
||
}
|
||
}
|
||
jxjg.XLXHYFC = sYFXH.Replace("A", "型号码").Replace("B", "前缀码").Replace("C", "后缀码");
|
||
jxjg.XLGGYFC = sYFGG.Replace("A", "截面").Replace("B", "芯数").Replace("C", "线对数").Replace("D", "线组数");
|
||
jxjg.XLBZYFC = sYFBZ.Replace("A", "标准名");
|
||
jxjg.DYDJYFC = sYFDYDJ.Replace("A", "相电压").Replace("B", "线电压").Replace("C", "电压单位");
|
||
|
||
jxjg.XLXH = aXLXH;
|
||
|
||
jxjg.XLGG = aXLGG;
|
||
jxjg.XLBZ = aXLBZ;
|
||
jxjg.DYDJ = aDYDJ;
|
||
return jxjg;
|
||
}
|
||
|
||
|
||
private static int GetMaxDRHHForBJD(TDatabase dberp, string sBJDID)
|
||
{
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add("select isnull(max(XLXSBJDMX_DRHH),0) as MAXDRHH from XLXSBJDMX where XLXSBJDMX_BJDID=:pBJDID");
|
||
sSQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||
return CMISproConvert.StrToInt(ds.Tables[0].Rows[0]["MAXDRHH"].ToString().Trim(), 0);
|
||
return 0;
|
||
}
|
||
|
||
private static int GetNextXLJXMXH(TDatabase dberp, string sBJDID)
|
||
{
|
||
int maxJXMXH = 0;
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add("select top 1 XLJXMX_XLJXMXH as MAXJXMXH from XLJXMX");
|
||
sSQL.Add(" where XLJXMX_XLJXDJ='XSBJ' and XLJXMX_XLJXDH=:pBJDID");
|
||
sSQL.Add(" order by len(XLJXMX_XLJXMXH) desc, XLJXMX_XLJXMXH desc");
|
||
sSQL.ParamByName("pBJDID").Value = sBJDID;
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||
maxJXMXH = CMISproConvert.StrToInt(SafeTrim(ds.Tables[0].Rows[0]["MAXJXMXH"]), 0);
|
||
int maxDRHH = GetMaxDRHHForBJD(dberp, sBJDID);
|
||
return Math.Max(maxJXMXH, maxDRHH) + 1;
|
||
}
|
||
|
||
private static int GetBJDMXXHByDRHH(TDatabase dberp, string sBJDID, int iDRHH)
|
||
{
|
||
if (iDRHH <= 0)
|
||
return -1;
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Clear();
|
||
sSQL.Add("select XLXSBJDMX_XH from XLXSBJDMX where XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_DRHH=:pDRHH");
|
||
sSQL.ParamByName("pBJDID").Value = sBJDID;
|
||
sSQL.ParamByName("pDRHH").Value = iDRHH;
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||
return CMISproConvert.StrToInt(ds.Tables[0].Rows[0]["XLXSBJDMX_XH"].ToString().Trim(), -1);
|
||
return -1;
|
||
}
|
||
|
||
private static string ResolveJXXLBZID(XLJXMX item, Dictionary<string, string> dicBZ)
|
||
{
|
||
if (dicBZ.ContainsKey(item.JXXLBZID))
|
||
return dicBZ[item.JXXLBZID];
|
||
if (!string.IsNullOrEmpty(item.JXXLBZID))
|
||
{
|
||
string sBZID = GetBZID(item.JXXLBZID);
|
||
dicBZ.Add(item.JXXLBZID, sBZID);
|
||
return sBZID;
|
||
}
|
||
return " ";
|
||
}
|
||
|
||
private static void MarkXLJXMXImported(TDatabase dberp, TSQL sSQL, XLJXMX item)
|
||
{
|
||
sSQL.Clear();
|
||
sSQL.Add(@" update XLJXMX set XLJXMX_DCZT='Y'
|
||
WHERE XLJXMX_XLJXDJ=:pXLJXDJ and XLJXMX_XLJXDH=:pXLJXDH and XLJXMX_XLJXMXH=:pXLJXMXH ");
|
||
sSQL.ParamByName("pXLJXDJ").Value = item.XLJXDJ;
|
||
sSQL.ParamByName("pXLJXDH").Value = item.XLJXDH;
|
||
sSQL.ParamByName("pXLJXMXH").Value = item.XLJXMXH;
|
||
dberp.ExecSQL(sSQL);
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static Result InsertBJDMX(List<XLJXMX> items, string sBJDID)
|
||
{
|
||
//远程电缆
|
||
if (SystemUtils.GetSysId().Equals("0510011201"))
|
||
{
|
||
return YCDLService.InsertBJDMX(items, sBJDID);
|
||
}
|
||
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
|
||
string sURL = tSession.GetOption(102855002, "BJAI001");
|
||
|
||
if (SystemUtils.GetSysId().Equals("0769000102") && !string.IsNullOrEmpty(sURL) && sURL != "无")
|
||
{
|
||
return GenJNXJD(sURL, items, tSession.UserId, sBJDID);
|
||
}
|
||
|
||
TDatabase dberp = null;
|
||
BJXX bjd = GetBJDXX(sBJDID);
|
||
dberp = TContextDatabases.GetDatabase("DBERP");
|
||
Result result = new Result();
|
||
TSQL sSQL = new TSQL(dberp);
|
||
Dictionary<string, string> dicBZ = new Dictionary<string, string>();
|
||
try
|
||
{
|
||
if (items == null || items.Count == 0)
|
||
{
|
||
result.success = false;
|
||
result.msg = "没有可导入的数据";
|
||
return result;
|
||
}
|
||
|
||
Dictionary<string, bool> seenJXMXH = new Dictionary<string, bool>();
|
||
foreach (XLJXMX item in items)
|
||
{
|
||
string sJXMXH = SafeTrim(item.XLJXMXH);
|
||
if (string.IsNullOrEmpty(sJXMXH))
|
||
{
|
||
result.success = false;
|
||
result.msg = "存在空的解析序号,无法导入";
|
||
return result;
|
||
}
|
||
if (seenJXMXH.ContainsKey(sJXMXH))
|
||
{
|
||
result.success = false;
|
||
result.msg = "解析序号重复:" + sJXMXH + ",请检查后重试";
|
||
return result;
|
||
}
|
||
seenJXMXH[sJXMXH] = true;
|
||
}
|
||
|
||
int maxXH = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJDMX", "XLXSBJDMX_XH",
|
||
" XLXSBJDMX_BJDID='" + sBJDID + "'");
|
||
int sequence = maxXH + 1;
|
||
int insertCount = 0;
|
||
int updateCount = 0;
|
||
int minCalcXH = int.MaxValue;
|
||
|
||
List<XLXSBJDMXEntity> insertMXEntityList = new List<XLXSBJDMXEntity>();
|
||
List<XLJXMX> insertMXList = new List<XLJXMX>();
|
||
Dictionary<string, string> dicYSID = new Dictionary<string, string>();
|
||
|
||
foreach (XLJXMX item in items)
|
||
{
|
||
int iDRHH = CMISproConvert.StrToInt(SafeTrim(item.XLJXMXH), 0);
|
||
if (iDRHH <= 0)
|
||
throw new Exception("无效的解析序号:" + item.XLJXMXH);
|
||
|
||
string sXLBZID = ResolveJXXLBZID(item, dicBZ);
|
||
string sBJCP = XLBJDUtils.GroupBJCPXX(item.JXXLXHID, item.JXXLGGID.Replace("×", "*"), item.JXDYDJID);
|
||
string sXLXHID = SafeTrim(item.JXXLXHID);
|
||
if (string.IsNullOrEmpty(sXLXHID)) sXLXHID = " ";
|
||
string sXLGGID = SafeTrim(item.JXXLGGID.Replace("×", "*"));
|
||
if (string.IsNullOrEmpty(sXLGGID)) sXLGGID = " ";
|
||
string sDYDJID = SafeTrim(item.JXDYDJID);
|
||
if (string.IsNullOrEmpty(sDYDJID)) sDYDJID = " ";
|
||
string sJLDW = string.IsNullOrEmpty(item.JLDW) ? tSession.GetOption(100860000, "BJU003") : item.JLDW;
|
||
double fBJSL = CMISproConvert.StrToFloat(item.SL);
|
||
|
||
string sYSID;
|
||
if (!dicYSID.TryGetValue(sXLXHID, out sYSID))
|
||
{
|
||
sYSID = GetDefaultYSID(item.JXXLXHID, "", "");
|
||
dicYSID[sXLXHID] = sYSID;
|
||
}
|
||
|
||
bool isReimport = SafeTrim(item.DCZT).Equals("Y");
|
||
int existingXH = -1;
|
||
if (isReimport)
|
||
existingXH = GetBJDMXXHByDRHH(dberp, sBJDID, iDRHH);
|
||
if (isReimport && existingXH > 0)
|
||
{
|
||
sSQL.Clear();
|
||
sSQL.Add(@" update XLXSBJDMX set ");
|
||
sSQL.Add(" XLXSBJDMX_BJCP=:pBJCP, ");
|
||
sSQL.Add(" XLXSBJDMX_JLDW=:pJLDW, ");
|
||
sSQL.Add(" XLXSBJDMX_XLXHID=:pXLXHID, ");
|
||
sSQL.Add(" XLXSBJDMX_XDXLXHID=:pXLXHID, ");
|
||
sSQL.Add(" XLXSBJDMX_XLGGID=:pXLGGID, ");
|
||
sSQL.Add(" XLXSBJDMX_XLBZID=:pXLBZID, ");
|
||
sSQL.Add(" XLXSBJDMX_XDXLBZID=:pXLBZID, ");
|
||
sSQL.Add(" XLXSBJDMX_DYDJID=:pDYDJID, ");
|
||
sSQL.Add(" XLXSBJDMX_XLYSID=:pYSID, ");
|
||
sSQL.Add(" XLXSBJDMX_BJSL=:pBJSL, ");
|
||
sSQL.Add(" XLXSBJDMX_FBH=:FBH, ");
|
||
sSQL.Add(" XLXSBJDMX_JSGFSID=:JSGFSID, ");
|
||
sSQL.Add(" XLXSBJDMX_DRHH=:pDRHH, ");
|
||
sSQL.Add(" XLXSBJDMX_WHR=:WHR, ");
|
||
sSQL.Add(" XLXSBJDMX_WHRID=:WHRID, ");
|
||
sSQL.Add(" XLXSBJDMX_WHSJ=:WHSJ ");
|
||
sSQL.Add(" where XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=:pXH ");
|
||
sSQL.ParamByName("pBJDID").Value = sBJDID;
|
||
sSQL.ParamByName("pXH").Value = existingXH;
|
||
sSQL.ParamByName("pDRHH").Value = iDRHH;
|
||
sSQL.ParamByName("pBJCP").Value = sBJCP;
|
||
sSQL.ParamByName("pJLDW").Value = sJLDW;
|
||
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
|
||
sSQL.ParamByName("pXLGGID").Value = sXLGGID;
|
||
sSQL.ParamByName("pXLBZID").Value = sXLBZID;
|
||
sSQL.ParamByName("pDYDJID").Value = sDYDJID;
|
||
sSQL.ParamByName("pYSID").Value = sYSID;
|
||
sSQL.ParamByName("pBJSL").Value = fBJSL;
|
||
sSQL.ParamByName("FBH").Value = item.FBH;
|
||
sSQL.ParamByName("JSGFSID").Value = item.JSGFID;
|
||
sSQL.ParamByName("WHR").Value = tSession.UserName;
|
||
sSQL.ParamByName("WHRID").Value = tSession.UserId;
|
||
sSQL.ParamByName("WHSJ").Value = DateTime.Now;
|
||
dberp.ExecSQL(sSQL);
|
||
updateCount++;
|
||
if (existingXH < minCalcXH)
|
||
minCalcXH = existingXH;
|
||
|
||
MarkXLJXMXImported(dberp, sSQL, item);
|
||
}
|
||
else
|
||
{
|
||
int newXH = sequence;
|
||
XLXSBJDMXEntity mxEntity = new XLXSBJDMXEntity();
|
||
mxEntity.BJDID = sBJDID;
|
||
mxEntity.XH = newXH;
|
||
mxEntity.XSSX = sequence;
|
||
mxEntity.BJCP = sBJCP;
|
||
mxEntity.JLDW = sJLDW;
|
||
mxEntity.XLXHID = sXLXHID;
|
||
mxEntity.XDXLXHID = sXLXHID;
|
||
mxEntity.XLGGID = sXLGGID;
|
||
mxEntity.XLBZID = sXLBZID;
|
||
mxEntity.XDXLBZID = sXLBZID;
|
||
mxEntity.DYDJID = sDYDJID;
|
||
mxEntity.XLYSID = sYSID;
|
||
mxEntity.WHR = tSession.UserName;
|
||
mxEntity.WHRID = tSession.UserId;
|
||
mxEntity.WHSJ = DateTime.Now;
|
||
mxEntity.BJSL = fBJSL;
|
||
mxEntity.FBH = item.FBH;
|
||
mxEntity.JSGFSID = item.JSGFID;
|
||
mxEntity.DRHH = iDRHH;
|
||
insertMXEntityList.Add(mxEntity);
|
||
insertMXList.Add(item);
|
||
sequence++;
|
||
insertCount++;
|
||
if (newXH < minCalcXH)
|
||
minCalcXH = newXH;
|
||
}
|
||
}
|
||
|
||
if (insertMXEntityList.Count > 0)
|
||
{
|
||
dberp.BulkInsertByReader(insertMXEntityList, "XLXSBJDMX");
|
||
|
||
foreach (XLJXMX item in insertMXList)
|
||
{
|
||
MarkXLJXMXImported(dberp, sSQL, item);
|
||
}
|
||
}
|
||
|
||
if (insertCount == 0 && updateCount == 0)
|
||
{
|
||
result.success = false;
|
||
result.msg = "没有可导入的有效数据";
|
||
return result;
|
||
}
|
||
|
||
dberp.BeginTrans();
|
||
XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, sBJDID);
|
||
MatchForXLBZIDAndDYDJID(dberp, sSQL, bjd.JGBID, sBJDID, tSession);
|
||
string sErrorNum = string.Empty;
|
||
if (minCalcXH != int.MaxValue)
|
||
{
|
||
XLBJDCalcUtils.CalcBJDMXAfterIns(dberp, sSQL, sBJDID, minCalcXH, tSession.GetOption(100860000, "BJU002"), tSession.GetOption(100860000, "BJU003"), tSession.GetOption(100860000, "BJU018"), tSession.UserId, tSession.UserName, ref sErrorNum);
|
||
}
|
||
if (!string.IsNullOrEmpty(sErrorNum))
|
||
throw new Exception(sErrorNum);
|
||
|
||
dberp.CommitTrans();
|
||
|
||
result.success = true;
|
||
result.msg = string.Format("成功导入:新增{0}条,覆盖{1}条", insertCount, updateCount);
|
||
return result;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
if (dberp != null && dberp.InTransaction)
|
||
{
|
||
dberp.RollbackTrans();
|
||
}
|
||
|
||
result.success = false;
|
||
result.msg = "导入报价单明细失败: " + ex.Message;
|
||
return result;
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
|
||
public static Result GenJNXJD(string sURL, List<XLJXMX> items, string sUSERGH, string sBJDID)
|
||
{
|
||
Result rs = new Result();
|
||
XJDInfo xjd = new XJDInfo();
|
||
xjd.userName = sUSERGH;
|
||
string sEEOR = string.Empty;
|
||
foreach (XLJXMX info in items)
|
||
{
|
||
XJDMX mx = new XJDMX();
|
||
mx.XLWBBJDMX_XLXHID = info.JXXLXHID;
|
||
mx.XLWBBJDMX_XLGGID = info.JXXLGGID;
|
||
mx.XLWBBJDMX_DYDJID = info.JXDYDJID;
|
||
mx.XLWBBJDMX_XLBZID = info.JXXLBZID;
|
||
mx.XLWBBJDMX_YS = info.JXXLYSID;
|
||
mx.XLWBBJDMX_JLDW = info.JLDW;
|
||
mx.XLWBBJDMX_BJDH = sBJDID;
|
||
mx.YSCP = info.XLBSC;
|
||
mx.XLWBBJDMX_DRHH = info.XLJXMXH;
|
||
mx.XLWBBJDMX_BJSL = CMISproConvert.StrToFloat(info.SL);
|
||
|
||
|
||
|
||
xjd.quoteList.Add(mx);
|
||
|
||
}
|
||
JavaScriptSerializer jsConvert = new JavaScriptSerializer();
|
||
string sParams = jsConvert.Serialize(xjd);
|
||
//发起请求
|
||
Uri uri = new Uri(sURL);
|
||
WebRequest webRequest = WebRequest.Create(uri);
|
||
webRequest.ContentType = "application/json;charset=utf-8";
|
||
webRequest.Method = "POST";
|
||
using (Stream requestStream = webRequest.GetRequestStream())
|
||
{
|
||
byte[] paramBytes = Encoding.UTF8.GetBytes(sParams.ToString());
|
||
requestStream.Write(paramBytes, 0, paramBytes.Length);
|
||
}
|
||
string result = string.Empty;
|
||
WebResponse webResponse = webRequest.GetResponse();
|
||
using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
|
||
{
|
||
result = myStreamReader.ReadToEnd();
|
||
}
|
||
ResultData resultObj = jsConvert.Deserialize<ResultData>(result);
|
||
if (resultObj.code == "200")
|
||
{
|
||
rs.success = true;
|
||
rs.msg = resultObj.msg;
|
||
return rs;
|
||
}
|
||
else
|
||
{
|
||
rs.success = false;
|
||
rs.msg = "导入询价单失败,原因:" + resultObj.msg;
|
||
return rs;
|
||
}
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static List<CodeClass> GetXLXHYFList(string sXLJXGZC)
|
||
{
|
||
List<CodeClass> list = new List<CodeClass>();
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL sSQL = new TSQL(dberp);
|
||
string sBSC = GetBSC(sXLJXGZC);
|
||
// 获取型号规则数据
|
||
sSQL.Clear();
|
||
sSQL.Add("select replace(replace(replace(XLYFGZ_XLYFYFC,'[A','[型号码'),'[B','[前缀码'),'[C','[后缀码') as XLYFYFC ");
|
||
sSQL.Add("from XLYFGZ where XLYFGZ_XLYFFL='1' ");
|
||
sSQL.Add("and XLYFGZ_XLYFCPH='" + XLYSJXUtils.ProdCPH_XLXH(sBSC) + "' ");
|
||
sSQL.Add("and XLYFGZ_XLYFCXH='" + XLYSJXUtils.ProdCXH_XLXH(sBSC) + "' ");
|
||
sSQL.Add("order by XLYFGZ_XH,XLYFGZ_XLYFYFC");
|
||
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
CodeClass code = new CodeClass();
|
||
code.code = ds.Tables[0].Rows[i]["XLYFYFC"].ToString().Trim();
|
||
code.message = ds.Tables[0].Rows[i]["XLYFYFC"].ToString().Trim();
|
||
list.Add(code);
|
||
}
|
||
}
|
||
|
||
// 添加默认型号规则
|
||
string sMRYFC = GetMRYFC("XLXH", XLYSJXUtils.ProdCPH_XLXH(sBSC), XLYSJXUtils.ProdCXH_XLXH(sBSC));
|
||
if (!string.IsNullOrEmpty(sMRYFC.Trim()))
|
||
{
|
||
CodeClass code = new CodeClass();
|
||
code.code = sMRYFC.Trim();
|
||
code.message = sMRYFC.Trim();
|
||
list.Insert(0, code);
|
||
}
|
||
|
||
return list;
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static List<CodeClass> GetXLGGYFList(string sXLJXGZC)
|
||
{
|
||
List<CodeClass> list = new List<CodeClass>();
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL sSQL = new TSQL(dberp);
|
||
string sBSC = GetBSC(sXLJXGZC);
|
||
|
||
sSQL.Clear();
|
||
sSQL.Add("select replace(replace(replace(replace(XLYFGZ_XLYFYFC,'[A','[截面'),'[B','[芯数'),'[C','[线对数'),'[D','[线组数') as XLYFYFC ");
|
||
sSQL.Add("from XLYFGZ where XLYFGZ_XLYFFL='2' ");
|
||
sSQL.Add("and XLYFGZ_XLYFCPH='" + XLYSJXUtils.ProdCPH_XLGG(sBSC) + "' ");
|
||
sSQL.Add("and XLYFGZ_XLYFCXH='" + XLYSJXUtils.ProdCXH_XLGG(sBSC) + "' ");
|
||
sSQL.Add("order by XLYFGZ_XH,XLYFGZ_XLYFYFC");
|
||
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
CodeClass code = new CodeClass();
|
||
code.code = ds.Tables[0].Rows[i]["XLYFYFC"].ToString().Trim();
|
||
code.message = ds.Tables[0].Rows[i]["XLYFYFC"].ToString().Trim();
|
||
list.Add(code);
|
||
}
|
||
}
|
||
|
||
string sMRYFC = GetMRYFC("XLGG", XLYSJXUtils.ProdCPH_XLGG(sBSC), XLYSJXUtils.ProdCXH_XLGG(sBSC));
|
||
if (!string.IsNullOrEmpty(sMRYFC.Trim()))
|
||
{
|
||
CodeClass code = new CodeClass();
|
||
code.code = sMRYFC.Trim();
|
||
code.message = sMRYFC.Trim();
|
||
list.Insert(0, code);
|
||
}
|
||
|
||
return list;
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static List<CodeClass> GetDYDJYFList(string sXLJXGZC)
|
||
{
|
||
List<CodeClass> list = new List<CodeClass>();
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL sSQL = new TSQL(dberp);
|
||
string sBSC = GetBSC(sXLJXGZC);
|
||
|
||
sSQL.Clear();
|
||
sSQL.Add("select replace(replace(replace(XLYFGZ_XLYFYFC,'[A','[相电压'),'[B','[线电压'),'[C','[电压单位') as XLYFYFC ");
|
||
sSQL.Add("from XLYFGZ where XLYFGZ_XLYFFL='3' ");
|
||
sSQL.Add("and XLYFGZ_XLYFCPH='" + XLYSJXUtils.ProdCPH_DYDJ(sBSC) + "' ");
|
||
sSQL.Add("and XLYFGZ_XLYFCXH='" + XLYSJXUtils.ProdCXH_DYDJ(sBSC) + "' ");
|
||
sSQL.Add("order by XLYFGZ_XH,XLYFGZ_XLYFYFC");
|
||
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
CodeClass code = new CodeClass();
|
||
code.code = ds.Tables[0].Rows[i]["XLYFYFC"].ToString().Trim();
|
||
code.message = ds.Tables[0].Rows[i]["XLYFYFC"].ToString().Trim();
|
||
list.Add(code);
|
||
}
|
||
}
|
||
|
||
string sMRYFC = GetMRYFC("DYDJ", XLYSJXUtils.ProdCPH_DYDJ(sBSC), XLYSJXUtils.ProdCXH_DYDJ(sBSC));
|
||
if (!string.IsNullOrEmpty(sMRYFC.Trim()))
|
||
{
|
||
CodeClass code = new CodeClass();
|
||
code.code = sMRYFC.Trim();
|
||
code.message = sMRYFC.Trim();
|
||
list.Insert(0, code);
|
||
}
|
||
|
||
return list;
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static List<CodeClass> GetXLBZYFList(string sXLJXGZC)
|
||
{
|
||
List<CodeClass> list = new List<CodeClass>();
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL sSQL = new TSQL(dberp);
|
||
string sBSC = GetBSC(sXLJXGZC);
|
||
|
||
sSQL.Clear();
|
||
sSQL.Add("select replace(XLYFGZ_XLYFYFC,'[A','[标准名') as XLYFYFC ");
|
||
sSQL.Add("from XLYFGZ where XLYFGZ_XLYFFL='4' ");
|
||
sSQL.Add("and XLYFGZ_XLYFCPH='" + XLYSJXUtils.ProdCPH_XLBZ(sBSC) + "' ");
|
||
sSQL.Add("and XLYFGZ_XLYFCXH='" + XLYSJXUtils.ProdCXH_XLBZ(sBSC) + "' ");
|
||
sSQL.Add("order by XLYFGZ_XH,XLYFGZ_XLYFYFC");
|
||
|
||
DataSet ds = dberp.OpenDataSet(sSQL);
|
||
if (ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
CodeClass code = new CodeClass();
|
||
code.code = ds.Tables[0].Rows[i]["XLYFYFC"].ToString().Trim();
|
||
code.message = ds.Tables[0].Rows[i]["XLYFYFC"].ToString().Trim();
|
||
list.Add(code);
|
||
}
|
||
}
|
||
|
||
string sMRYFC = GetMRYFC("XLBZ", XLYSJXUtils.ProdCPH_XLBZ(sBSC), XLYSJXUtils.ProdCXH_XLBZ(sBSC));
|
||
if (!string.IsNullOrEmpty(sMRYFC.Trim()))
|
||
{
|
||
CodeClass code = new CodeClass();
|
||
code.code = sMRYFC.Trim();
|
||
code.message = sMRYFC.Trim();
|
||
list.Insert(0, code);
|
||
}
|
||
|
||
return list;
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static string GetXHFGF()
|
||
{
|
||
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
|
||
return tSession.GetOption(100860140, "BJU041");
|
||
}
|
||
|
||
[AjaxMethod(AuthRequried = false)]
|
||
public static Result BatchUpdateXLJXMX(List<XLJXMX> items, string updateType, string updateValue)
|
||
{
|
||
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
|
||
TDatabase dberp = null;
|
||
Result result = new Result();
|
||
|
||
try
|
||
{
|
||
if (items == null || items.Count == 0)
|
||
{
|
||
result.success = false;
|
||
result.msg = "没有可更新的记录";
|
||
return result;
|
||
}
|
||
|
||
string safeUpdateType = SafeTrim(updateType);
|
||
if (string.IsNullOrEmpty(safeUpdateType))
|
||
{
|
||
result.success = false;
|
||
result.msg = "更新类型无效";
|
||
return result;
|
||
}
|
||
|
||
string safeUpdateValue = SafeTrim(updateValue);
|
||
if (string.IsNullOrEmpty(safeUpdateValue))
|
||
{
|
||
result.success = false;
|
||
result.msg = "调整值不能为空";
|
||
return result;
|
||
}
|
||
|
||
if (safeUpdateType == "spec")
|
||
{
|
||
safeUpdateValue = safeUpdateValue.Replace("×", "*");
|
||
}
|
||
|
||
string setColumns;
|
||
if (safeUpdateType == "standard")
|
||
{
|
||
setColumns = "XLJXMX_XLBZID = :XLBZID, XLJXMX_JXXLBZID = :JXXLBZID, ";
|
||
}
|
||
else if (safeUpdateType == "voltage")
|
||
{
|
||
setColumns = "XLJXMX_DYDJID = :DYDJID, XLJXMX_JXDYDJID = :JXDYDJID, ";
|
||
}
|
||
else if (safeUpdateType == "model")
|
||
{
|
||
setColumns = "XLJXMX_JXXLXHID = :JXXLXHID, XLJXMX_XLXHID = :XLXHID, ";
|
||
}
|
||
else if (safeUpdateType == "spec")
|
||
{
|
||
setColumns = "XLJXMX_JXXLGGID = :JXXLGGID, XLJXMX_XLGGID = :XLGGID, ";
|
||
}
|
||
else
|
||
{
|
||
result.success = false;
|
||
result.msg = "不支持的更新类型: " + safeUpdateType;
|
||
return result;
|
||
}
|
||
|
||
// 按 XLJXDJ/XLJXDH 分组,同一分组内用 XLJXMXH IN (...) 批量更新
|
||
Dictionary<string, List<XLJXMX>> groups = new Dictionary<string, List<XLJXMX>>();
|
||
foreach (XLJXMX item in items)
|
||
{
|
||
string key = string.Format("{0}|{1}", GetSafeValue(item.XLJXDJ), GetSafeValue(item.XLJXDH));
|
||
if (!groups.ContainsKey(key))
|
||
{
|
||
groups[key] = new List<XLJXMX>();
|
||
}
|
||
groups[key].Add(item);
|
||
}
|
||
|
||
dberp = TContextDatabases.GetDatabase("DBERP");
|
||
dberp.BeginTrans();
|
||
|
||
int totalAffectedRows = 0;
|
||
const int MaxInListSize = 1000;
|
||
|
||
foreach (KeyValuePair<string, List<XLJXMX>> group in groups)
|
||
{
|
||
string[] keyParts = group.Key.Split('|');
|
||
string dj = keyParts[0] as string;
|
||
string dh = keyParts[1] as string;
|
||
List<XLJXMX> groupItems = group.Value;
|
||
|
||
for (int chunkStart = 0; chunkStart < groupItems.Count; chunkStart += MaxInListSize)
|
||
{
|
||
int chunkSize = Math.Min(MaxInListSize, groupItems.Count - chunkStart);
|
||
|
||
TSQL sSQL = new TSQL(dberp);
|
||
sSQL.Add(@"UPDATE XLJXMX SET ");
|
||
sSQL.Add(setColumns);
|
||
sSQL.Add("XLJXMX_WHR = :WHR, ");
|
||
sSQL.Add("XLJXMX_WHRID = :WHRID, ");
|
||
sSQL.Add("XLJXMX_WHSJ = :WHSJ ");
|
||
sSQL.Add("WHERE XLJXMX_XLJXDJ = :XLJXDJ ");
|
||
sSQL.Add("AND XLJXMX_XLJXDH = :XLJXDH ");
|
||
sSQL.Add("AND XLJXMX_XLJXMXH IN (");
|
||
|
||
StringBuilder inParams = new StringBuilder();
|
||
for (int i = 0; i < chunkSize; i++)
|
||
{
|
||
string paramName = "pMXH" + i.ToString();
|
||
if (i > 0)
|
||
{
|
||
inParams.Append(", ");
|
||
}
|
||
inParams.Append(":").Append(paramName);
|
||
sSQL.ParamByName(paramName).Value = GetSafeValue(groupItems[chunkStart + i].XLJXMXH);
|
||
}
|
||
sSQL.Add(inParams.ToString());
|
||
sSQL.Add(")");
|
||
|
||
if (safeUpdateType == "standard")
|
||
{
|
||
sSQL.ParamByName("XLBZID").Value = GetSafeValue(safeUpdateValue);
|
||
sSQL.ParamByName("JXXLBZID").Value = GetSafeValue(safeUpdateValue);
|
||
}
|
||
else if (safeUpdateType == "voltage")
|
||
{
|
||
sSQL.ParamByName("DYDJID").Value = GetSafeValue(safeUpdateValue);
|
||
sSQL.ParamByName("JXDYDJID").Value = GetSafeValue(safeUpdateValue);
|
||
}
|
||
else if (safeUpdateType == "model")
|
||
{
|
||
sSQL.ParamByName("JXXLXHID").Value = GetSafeValue(safeUpdateValue);
|
||
sSQL.ParamByName("XLXHID").Value = GetSafeValue(safeUpdateValue);
|
||
}
|
||
else if (safeUpdateType == "spec")
|
||
{
|
||
sSQL.ParamByName("JXXLGGID").Value = GetSafeValue(safeUpdateValue);
|
||
sSQL.ParamByName("XLGGID").Value = GetSafeValue(safeUpdateValue);
|
||
}
|
||
|
||
sSQL.ParamByName("WHR").Value = tSession.UserName;
|
||
sSQL.ParamByName("WHRID").Value = tSession.UserId;
|
||
sSQL.ParamByName("WHSJ").Value = DateTime.Now;
|
||
sSQL.ParamByName("XLJXDJ").Value = dj;
|
||
sSQL.ParamByName("XLJXDH").Value = dh;
|
||
|
||
totalAffectedRows += dberp.ExecSQL(sSQL);
|
||
}
|
||
}
|
||
|
||
if (totalAffectedRows == 0)
|
||
{
|
||
dberp.RollbackTrans();
|
||
result.success = false;
|
||
result.msg = "未更新任何记录,请确认已选中有效数据";
|
||
return result;
|
||
}
|
||
|
||
dberp.CommitTrans();
|
||
|
||
result.success = true;
|
||
result.msg = string.Format("成功更新 {0} 条记录", totalAffectedRows.ToString());
|
||
return result;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
if (dberp != null && dberp.InTransaction)
|
||
{
|
||
dberp.RollbackTrans();
|
||
}
|
||
|
||
result.success = false;
|
||
result.msg = "批量更新失败: " + ex.Message;
|
||
return result;
|
||
}
|
||
finally
|
||
{
|
||
if (dberp != null)
|
||
{
|
||
dberp.Dispose();
|
||
}
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
#region 辅助方法
|
||
/// <summary>
|
||
/// 从 DataRow 解析 XLJXMX 实体。
|
||
/// </summary>
|
||
private static XLJXMX ParseXLJXMXFromDataRow(DataRow row)
|
||
{
|
||
XLJXMX item = new XLJXMX();
|
||
item.XLJXDJ = SafeTrim(row["XLJXMX_XLJXDJ"]);
|
||
item.XLJXDH = SafeTrim(row["XLJXMX_XLJXDH"]);
|
||
item.XLJXMXH = SafeTrim(row["XLJXMX_XLJXMXH"]);
|
||
item.XLBSC = SafeTrim(row["XLJXMX_XLBSC"]);
|
||
item.XLJXGZXH = SafeTrim(row["XLJXMX_XLJXGZXH"]);
|
||
item.JXXLXHID = SafeTrim(row["XLJXMX_JXXLXHID"]);
|
||
item.XLXHID = SafeTrim(row["XLJXMX_XLXHID"]);
|
||
item.JXXLGGID = SafeTrim(row["XLJXMX_JXXLGGID"]);
|
||
item.XLGGID = SafeTrim(row["XLJXMX_XLGGID"]);
|
||
item.JXDYDJID = SafeTrim(row["XLJXMX_JXDYDJID"]);
|
||
item.DYDJID = SafeTrim(row["XLJXMX_DYDJID"]);
|
||
item.XLBZID = SafeTrim(row["XLJXMX_XLBZID"]);
|
||
item.JXXLBZID = SafeTrim(row["XLJXMX_JXXLBZID"]);
|
||
item.XLYSID = SafeTrim(row["XLJXMX_XLYSID"]);
|
||
item.JXXLYSID = SafeTrim(row["XLJXMX_JXXLYSID"]);
|
||
item.WHR = SafeTrim(row["XLJXMX_WHR"]);
|
||
item.WHRID = SafeTrim(row["XLJXMX_WHRID"]);
|
||
item.WHSJ = SafeTrim(row["XLJXMX_WHSJ"]);
|
||
item.DCZT = SafeTrim(row["XLJXMX_DCZT"]);
|
||
item.JLDW = SafeTrim(row["XLJXMX_JLDW"]);
|
||
item.SL = SafeTrim(row["XLJXMX_SL"]);
|
||
item.FBH = SafeTrim(row["XLJXMX_FBH"]);
|
||
item.JSGFID = SafeTrim(row["XLJXMX_JSGFSID"]);
|
||
return item;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 从 DataRow 解析 XLJXGZ 实体。
|
||
/// </summary>
|
||
private static XLJXGZ ParseXLJXGZFromDataRow(DataRow row)
|
||
{
|
||
XLJXGZ item = new XLJXGZ();
|
||
item.XLJXDJ = SafeTrim(row["XLJXGZ_XLJXDJ"]);
|
||
item.XLJXDH = SafeTrim(row["XLJXGZ_XLJXDH"]);
|
||
item.XLJXGZXH = SafeTrim(row["XLJXGZ_XLJXGZXH"]);
|
||
item.XLJXGZC = SafeTrim(row["XLJXGZ_XLJXGZC"]);
|
||
item.WHRID = SafeTrim(row["XLJXGZ_WHRID"]);
|
||
item.WHR = SafeTrim(row["XLJXGZ_WHR"]);
|
||
item.WHSJ = SafeTrim(row["XLJXGZ_WHSJ"]);
|
||
item.XLXHYFC = SafeTrim(row["XLJXGZ_XLXHYFC"]);
|
||
item.XLGGYFC = SafeTrim(row["XLJXGZ_XLGGYFC"]);
|
||
item.DYDJYFC = SafeTrim(row["XLJXGZ_DYDJYFC"]);
|
||
item.XLBZYFC = SafeTrim(row["XLJXGZ_XLBZYFC"]);
|
||
item.XLYSYFC = SafeTrim(row["XLJXGZ_XLYSYFC"]);
|
||
return item;
|
||
}
|
||
|
||
|
||
public static string GetDefaultYSID(string sXLXHID, string sXLGGID, string sXLYSID)
|
||
{
|
||
if (string.IsNullOrEmpty(sXLYSID))
|
||
sXLYSID = "BK";
|
||
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL SQL = new TSQL(dberp);
|
||
if (tSession.GetOption(102577000, "BJU052") == "2")
|
||
{
|
||
if (!sXLXHID.Equals(""))
|
||
{
|
||
SQL.Add("select XLXSBJCPYS_XLYSID,XLXSBJCPYS_XHBBH ");
|
||
SQL.Add(" from XLXSBJCPYS");
|
||
SQL.Add(" where :pXLXH like '%'||rtrim(XLXSBJCPYS_XLJBXHID)||'%' ");
|
||
SQL.ParamByName("pXLXH").Value = "%" + sXLXHID + "%";
|
||
DataSet ds = dberp.OpenDataSet(SQL);
|
||
if (ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
string sXHBBH = ds.Tables[0].Rows[i]["XLXSBJCPYS_XHBBH"].ToString().Trim();
|
||
if (sXHBBH.Equals("") || !sXLXHID.Contains(sXHBBH))
|
||
sXLYSID = ds.Tables[0].Rows[i]["XLXSBJCPYS_XLYSID"].ToString().Trim();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (!sXLXHID.Equals(""))
|
||
{
|
||
Dictionary<string, string> dicXLGGB = XLBJDUtils.GetXXJGIDByXLGGID(sXLGGID, sXLXHID);
|
||
SQL.Add("select XLXSBJCPYS_XLYSID,");
|
||
SQL.Add(" case WHEN XLXSBJCPYS_XLJBXHID<>' ' and XLXSBJCPYS_XXJGID<>' ' and XLXSBJCPYS_XXJGID=:pXXJGID then 1");
|
||
SQL.Add(" WHEN XLXSBJCPYS_XLJBXHID<>' ' and XLXSBJCPYS_XXJGID=' ' then 2");
|
||
SQL.Add(" WHEN XLXSBJCPYS_XLJBXHID=' ' and XLXSBJCPYS_XXJGID=' ' then 3");
|
||
SQL.Add(" else 9999 END AS PX,");
|
||
SQL.Add(" XLXSBJCPYS_XLJBXHID,XLXSBJCPYS_XXJGID");
|
||
SQL.Add(" from XLXSBJCPYS");
|
||
SQL.Add(" where 1=1");
|
||
SQL.Add(" and exists(select 1 from XLXHB where XLXHB_XLXHID=:pXLXHID and XLXHB_CPYT=XLXSBJCPYS_CPYT)");
|
||
SQL.Add(" and (XLXSBJCPYS_XLJBXHID =' '");
|
||
SQL.Add(" or exists(select 1 from XLXHB where XLXHB_XLXHID=:pXLXHID and XLXHB_XLJBXHID=XLXSBJCPYS_XLJBXHID)) ");
|
||
SQL.Add(" order by PX,XLXSBJCPYS_XLJBXHID,XLXSBJCPYS_XXJGID ");
|
||
SQL.ParamByName("pXLXHID").Value = sXLXHID;
|
||
SQL.ParamByName("pXXJGID").Value = dicXLGGB["XXJGID"];
|
||
DataSet ds = dberp.OpenDataSet(SQL);
|
||
if (ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
if (!ds.Tables[0].Rows[0]["PX"].ToString().Trim().Equals("9999"))
|
||
{
|
||
sXLYSID = ds.Tables[0].Rows[0]["XLXSBJCPYS_XLYSID"].ToString().Trim();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
return sXLYSID;
|
||
}
|
||
|
||
|
||
// 辅助方法:处理空值
|
||
public static object GetSafeValue(string value)
|
||
{
|
||
return string.IsNullOrEmpty(value) ? " " : (object)value;
|
||
}
|
||
|
||
private static string GetBSC(string input)
|
||
{
|
||
if (string.IsNullOrEmpty(input))
|
||
return "";
|
||
|
||
|
||
StringBuilder result = new StringBuilder();
|
||
string pattern = @"\[([^\]=]+)=[^\]]+\]";
|
||
|
||
foreach (Match match in Regex.Matches(input, pattern))
|
||
{
|
||
// 获取等号前的部分并添加方括号
|
||
string content = match.Groups[1].Value;
|
||
result.AppendFormat("[{0}]", content);
|
||
}
|
||
|
||
return result.ToString();
|
||
}
|
||
|
||
private static void IntoXLYFGZ(TDatabase dberp, TSQL sSQL, string sXLYFFL, string sCPH, string sCXH, string sYFC)
|
||
{
|
||
CMISproSession tSession = CMISproSessionManager.GetCurrentSession();
|
||
sSQL.Clear();
|
||
sSQL.Add(" MERGE INTO XLYFGZ USING ");
|
||
sSQL.Add(" ( ");
|
||
sSQL.Add(" SELECT :XLYFFL AS XLYFFL, ");
|
||
sSQL.Add(" :XLYFCPH AS XLYFCPH, ");
|
||
sSQL.Add(" :XLYFCXH AS XLYFCXH, ");
|
||
sSQL.Add(" CONVERT(FLOAT,0) AS XH, ");
|
||
sSQL.Add(" :XLYFYFC AS XLYFYFC, ");
|
||
sSQL.Add(" :WHRID AS WHRID, ");
|
||
sSQL.Add(" :WHR AS WHR, ");
|
||
sSQL.Add(" :WHSJ AS WHSJ ");
|
||
sSQL.Add(" FROM IDX ");
|
||
sSQL.Add(" WHERE IDX_ID=1 ");
|
||
sSQL.Add(" ) A ");
|
||
sSQL.Add(" ON (XLYFGZ_XLYFFL=A.XLYFFL ");
|
||
sSQL.Add(" AND XLYFGZ_XLYFCPH=A.XLYFCPH ");
|
||
sSQL.Add(" AND XLYFGZ_XLYFCXH=A.XLYFCXH ");
|
||
sSQL.Add(" AND XLYFGZ_XLYFYFC=A.XLYFYFC) ");
|
||
sSQL.Add(" WHEN MATCHED THEN UPDATE SET ");
|
||
sSQL.Add(" XLYFGZ_WHRID=A.WHRID, ");
|
||
sSQL.Add(" XLYFGZ_WHR=A.WHR, ");
|
||
sSQL.Add(" XLYFGZ_WHSJ=A.WHSJ ");
|
||
sSQL.Add(" WHEN NOT MATCHED THEN INSERT ");
|
||
sSQL.Add(" ( ");
|
||
sSQL.Add(" XLYFGZ_XLYFFL, ");
|
||
sSQL.Add(" XLYFGZ_XLYFCPH, ");
|
||
sSQL.Add(" XLYFGZ_XLYFCXH, ");
|
||
sSQL.Add(" XLYFGZ_XH, ");
|
||
sSQL.Add(" XLYFGZ_XLYFYFC, ");
|
||
sSQL.Add(" XLYFGZ_WHRID, ");
|
||
sSQL.Add(" XLYFGZ_WHR, ");
|
||
sSQL.Add(" XLYFGZ_WHSJ ");
|
||
sSQL.Add(" ) ");
|
||
sSQL.Add(" VALUES ");
|
||
sSQL.Add(" ( ");
|
||
sSQL.Add(" A.XLYFFL, ");
|
||
sSQL.Add(" A.XLYFCPH, ");
|
||
sSQL.Add(" A.XLYFCXH, ");
|
||
sSQL.Add(" A.XH, ");
|
||
sSQL.Add(" A.XLYFYFC, ");
|
||
sSQL.Add(" A.WHRID, ");
|
||
sSQL.Add(" A.WHR, ");
|
||
sSQL.Add(" A.WHSJ ");
|
||
sSQL.Add(" ) ");
|
||
sSQL.ParamByName("XLYFFL").Value = sXLYFFL;
|
||
sSQL.ParamByName("XLYFCPH").Value = sCPH;
|
||
sSQL.ParamByName("XLYFCXH").Value = sCXH;
|
||
sSQL.ParamByName("XLYFYFC").Value = sYFC;
|
||
sSQL.ParamByName("WHR").Value = tSession.UserName;
|
||
sSQL.ParamByName("WHRID").Value = tSession.UserId;
|
||
sSQL.ParamByName("WHSJ").Value = DateTime.Now;
|
||
dberp.ExecSQL(sSQL);
|
||
|
||
}
|
||
|
||
private static bool IsAlphanumeric(string sBJLX, string sBJZ)
|
||
{
|
||
bool result = true;
|
||
if (sBJLX == "型号码" || sBJLX == "前缀码" || sBJLX == "后缀码")
|
||
{
|
||
for (int i = 0; i < sBJZ.Length; i++)
|
||
{
|
||
if (!(((sBJZ[i] >= '0') && (sBJZ[i] <= '9')) ||
|
||
((sBJZ[i] >= 'a') && (sBJZ[i] <= 'z')) ||
|
||
((sBJZ[i] >= 'A') && (sBJZ[i] <= 'Z'))))
|
||
{
|
||
result = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if (sBJLX == "芯数" || sBJLX == "线对数" || sBJLX == "线组数")
|
||
{
|
||
for (int i = 0; i < sBJZ.Length; i++)
|
||
{
|
||
if (!((sBJZ[i] >= '0') && (sBJZ[i] <= '9')))
|
||
{
|
||
result = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if (sBJLX == "截面" || sBJLX == "相电压" || sBJLX == "线电压")
|
||
{
|
||
for (int i = 0; i < sBJZ.Length; i++)
|
||
{
|
||
if (!(((sBJZ[i] >= '0') && (sBJZ[i] <= '9')) || (sBJZ[i] == '.')))
|
||
{
|
||
result = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if (sBJLX == "电压单位")
|
||
{
|
||
for (int i = 0; i < sBJZ.Length; i++)
|
||
{
|
||
if (!(((sBJZ[i] >= 'a') && (sBJZ[i] <= 'z')) ||
|
||
((sBJZ[i] >= 'A') && (sBJZ[i] <= 'Z'))))
|
||
{
|
||
result = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
public static bool BJZJY(string sBJLX, string sBJZ)
|
||
{
|
||
bool result = true;
|
||
if (sBJLX == "标准名")
|
||
{
|
||
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^[\u4e00-\u9fa5a-zA-Z0-9]+$");
|
||
for (int i = 0; i < sBJZ.Length; i++)
|
||
{
|
||
if (!regex.IsMatch(sBJZ[i].ToString()))
|
||
{
|
||
result = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if (sBJLX == "颜色名")
|
||
{
|
||
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^[\u4e00-\u9fa5]+$");
|
||
for (int i = 0; i < sBJZ.Length; i++)
|
||
{
|
||
if (!regex.IsMatch(sBJZ[i].ToString()))
|
||
{
|
||
result = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
public static string GetMRYFC(string sYFLX, string sCPH, string sCXH)
|
||
{
|
||
string sYFC = "";
|
||
string sCXH_TMP = sCXH;
|
||
string sCXH_TMP2 = "";
|
||
string sCXH_TMP3 = "";
|
||
|
||
if (sYFLX.Trim() == "XLXH")
|
||
{
|
||
sYFC = "";
|
||
sCXH_TMP = sCXH;
|
||
while (sCXH_TMP.IndexOf("B") >= 0)
|
||
{
|
||
sYFC += "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "前缀码") + "]";
|
||
sCXH_TMP = sCXH_TMP.Substring(sCXH_TMP.IndexOf("B") + 2);
|
||
}
|
||
sCXH_TMP = sCXH;
|
||
while (sCXH_TMP.IndexOf("A") >= 0)
|
||
{
|
||
sYFC += "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("A"), 2).Replace("A", "型号码") + "]";
|
||
sCXH_TMP = sCXH_TMP.Substring(sCXH_TMP.IndexOf("A") + 2);
|
||
}
|
||
sCXH_TMP = sCXH;
|
||
while (sCXH_TMP.IndexOf("C") >= 0)
|
||
{
|
||
sYFC += "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("C"), 2).Replace("C", "后缀码") + "]";
|
||
sCXH_TMP = sCXH_TMP.Substring(sCXH_TMP.IndexOf("C") + 2);
|
||
}
|
||
|
||
return sYFC;
|
||
}
|
||
else if (sYFLX.Trim() == "XLGG")
|
||
{
|
||
sYFC = "";
|
||
sCXH_TMP = sCXH;
|
||
if (sCPH == "A1")
|
||
{
|
||
if (sCXH_TMP.IndexOf("A") >= 0)
|
||
sYFC = "[截面a]";
|
||
}
|
||
else if (sCPH == "A2")
|
||
{
|
||
if (sCXH_TMP.IndexOf("A") >= 0)
|
||
sYFC = "[截面a]/[截面b]";
|
||
}
|
||
else if (sCPH == "A1B1")
|
||
{
|
||
if ((sCXH_TMP.IndexOf("B") >= 0) && (sCXH_TMP.IndexOf("A") >= 0))
|
||
sYFC = "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "芯数") + "]*[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("A"), 2).Replace("A", "截面") + "]";
|
||
}
|
||
else if (sCPH == "A1B2")
|
||
{
|
||
sCXH_TMP2 = sCXH_TMP.Substring(sCXH_TMP.IndexOf("A") + 2);
|
||
if ((sCXH_TMP.IndexOf("B") >= 0) && (sCXH_TMP.IndexOf("A") >= 0) && (sCXH_TMP2.IndexOf("A") >= 0))
|
||
sYFC = "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "芯数") + "]*[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("A"), 2).Replace("A", "截面") + "]"
|
||
+ "+[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "芯数") + "]*[" + sCXH_TMP2.Substring(sCXH_TMP2.IndexOf("A"), 2).Replace("A", "截面") + "]";
|
||
}
|
||
else if (sCPH == "A2B2")
|
||
{
|
||
sCXH_TMP2 = sCXH_TMP.Substring(sCXH_TMP.IndexOf("A") + 2);
|
||
sCXH_TMP3 = sCXH_TMP.Substring(sCXH_TMP.IndexOf("B") + 2);
|
||
if ((sCXH_TMP.IndexOf("B") >= 0) && (sCXH_TMP.IndexOf("A") >= 0) && (sCXH_TMP3.IndexOf("B") >= 0) && (sCXH_TMP2.IndexOf("A") >= 0))
|
||
sYFC = "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "芯数") + "]*[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("A"), 2).Replace("A", "截面") + "]"
|
||
+ "+[" + sCXH_TMP3.Substring(sCXH_TMP3.IndexOf("B"), 2).Replace("B", "芯数") + "]*[" + sCXH_TMP2.Substring(sCXH_TMP2.IndexOf("A"), 2).Replace("A", "截面") + "]";
|
||
}
|
||
else if (sCPH == "A1B1C1")
|
||
{
|
||
if ((sCXH_TMP.IndexOf("A") >= 0) && (sCXH_TMP.IndexOf("B") >= 0) && (sCXH_TMP.IndexOf("C") >= 0))
|
||
sYFC = "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("C"), 2).Replace("C", "线对数") + "]*[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "芯数") + "]"
|
||
+ "*[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("A"), 2).Replace("A", "截面") + "]";
|
||
}
|
||
else if (sCPH == "A1B1D1")
|
||
{
|
||
if ((sCXH_TMP.IndexOf("A") >= 0) && (sCXH_TMP.IndexOf("B") >= 0) && (sCXH_TMP.IndexOf("D") >= 0))
|
||
sYFC = "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("D"), 2).Replace("D", "线组数") + "]*[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "芯数") + "]"
|
||
+ "*[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("A"), 2).Replace("A", "截面") + "]";
|
||
}
|
||
if ((sYFC.Trim() == "") && (sCXH.Trim() != ""))
|
||
{
|
||
sCXH_TMP = sCXH;
|
||
sYFC = sCXH_TMP.Replace("A", "][截面").Replace("B", "][芯数").Replace("C", "][线对数").Replace("D", "][线组数");
|
||
sYFC = sYFC.Substring(1) + "]";
|
||
}
|
||
|
||
return sYFC;
|
||
}
|
||
else if (sYFLX.Trim() == "DYDJ")
|
||
{
|
||
sYFC = "";
|
||
sCXH_TMP = sCXH;
|
||
if (sCPH == "A1")
|
||
{
|
||
if (sCXH_TMP.IndexOf("A") >= 0)
|
||
sYFC = "[相电压a]";
|
||
}
|
||
else if (sCPH == "B1")
|
||
{
|
||
if (sCXH_TMP.IndexOf("B") >= 0)
|
||
sYFC = "[线电压a]";
|
||
}
|
||
else if (sCPH == "A1B1")
|
||
{
|
||
if ((sCXH_TMP.IndexOf("A") >= 0) && (sCXH_TMP.IndexOf("B") >= 0))
|
||
sYFC = "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("A"), 2).Replace("A", "相电压") + "]/[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "线电压") + "]";
|
||
}
|
||
else if (sCPH == "B1C1")
|
||
{
|
||
if ((sCXH_TMP.IndexOf("B") >= 0) && (sCXH_TMP.IndexOf("C") >= 0))
|
||
sYFC = "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "线电压") + "][" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("C"), 2).Replace("C", "电压单位") + "]";
|
||
}
|
||
else if (sCPH == "A1B1C1")
|
||
{
|
||
if ((sCXH_TMP.IndexOf("A") >= 0) && (sCXH_TMP.IndexOf("B") >= 0) && (sCXH_TMP.IndexOf("C") >= 0))
|
||
sYFC = "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("A"), 2).Replace("A", "相电压") + "]/[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("B"), 2).Replace("B", "线电压") + "]"
|
||
+ "[" + sCXH_TMP.Substring(sCXH_TMP.IndexOf("C"), 2).Replace("C", "电压单位") + "]";
|
||
}
|
||
|
||
if ((sYFC.Trim() == "") && (sCXH.Trim() != ""))
|
||
{
|
||
sCXH_TMP = sCXH;
|
||
sYFC = sCXH_TMP.Replace("A", "][相电压").Replace("B", "][线电压").Replace("C", "][电压单位");
|
||
sYFC = sYFC.Substring(1) + "]";
|
||
}
|
||
|
||
return sYFC;
|
||
}
|
||
else if (sYFLX.Trim() == "XLBZ")
|
||
{
|
||
sYFC = "";
|
||
sCXH_TMP = sCXH;
|
||
if (sCPH == "A1")
|
||
{
|
||
if (sCXH_TMP.IndexOf("A") >= 0)
|
||
sYFC = "[标准名a]";
|
||
}
|
||
|
||
if ((sYFC.Trim() == "") && (sCXH.Trim() != ""))
|
||
{
|
||
sCXH_TMP = sCXH;
|
||
sYFC = sCXH_TMP.Replace("A", "][标准名");
|
||
sYFC = sYFC.Substring(1) + "]";
|
||
}
|
||
|
||
return sYFC;
|
||
}
|
||
else if (sYFLX.Trim() == "XLYS")
|
||
{
|
||
sYFC = "";
|
||
sCXH_TMP = sCXH;
|
||
if (sCPH == "A1")
|
||
{
|
||
if (sCXH_TMP.IndexOf("A") >= 0)
|
||
sYFC = "[颜色名a]";
|
||
}
|
||
else if (sCPH == "A2")
|
||
{
|
||
if (sCXH_TMP.IndexOf("A") >= 0)
|
||
sYFC = "[颜色名a][颜色名b]";
|
||
}
|
||
|
||
if ((sYFC.Trim() == "") && (sCXH.Trim() != ""))
|
||
{
|
||
sCXH_TMP = sCXH;
|
||
sYFC = sCXH_TMP.Replace("A", "][颜色名");
|
||
sYFC = sYFC.Substring(1) + "]";
|
||
}
|
||
|
||
return sYFC;
|
||
}
|
||
|
||
return "";
|
||
}
|
||
|
||
// 安全的Trim处理函数
|
||
/// <summary>
|
||
/// 缺失要素多选筛选:XLXH=线缆型号 XLGG=线缆规格 XLBZ=线缆标准 DYDJ=电压等级,多选为 OR 关系
|
||
/// </summary>
|
||
private static void AppendMissingElementFilter(TSQL sSQL, string sQSYS)
|
||
{
|
||
if (string.IsNullOrEmpty(sQSYS))
|
||
return;
|
||
|
||
List<string> conditions = new List<string>();
|
||
string[] items = sQSYS.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||
foreach (string raw in items)
|
||
{
|
||
switch (raw.Trim())
|
||
{
|
||
case "XLXH":
|
||
conditions.Add("isnull(XLJXMX_JXXLXHID,' ') = ' '");
|
||
break;
|
||
case "XLGG":
|
||
conditions.Add("isnull(XLJXMX_JXXLGGID,' ') = ' '");
|
||
break;
|
||
case "XLBZ":
|
||
conditions.Add("isnull(XLJXMX_JXXLBZID,' ') = ' '");
|
||
break;
|
||
case "DYDJ":
|
||
conditions.Add("isnull(XLJXMX_JXDYDJID,' ') = ' '");
|
||
break;
|
||
}
|
||
}
|
||
|
||
if (conditions.Count > 0)
|
||
sSQL.Add(" AND (" + string.Join(" and ", conditions.ToArray()) + ") ");
|
||
}
|
||
|
||
private static string SafeTrim(object value)
|
||
{
|
||
if (value == null || value == DBNull.Value)
|
||
{
|
||
return string.Empty;
|
||
}
|
||
return value.ToString().Trim();
|
||
}
|
||
|
||
public static string GetBZID(string sMC)
|
||
{
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL SQL = new TSQL(dberp);
|
||
SQL.Clear();
|
||
SQL.Clear();
|
||
SQL.Add(" select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ ");
|
||
SQL.Add(" where 1=1 and XLBZ_XLBZLXMC=:pXLBZ_XLBZID order by XLBZ_XLBZID");
|
||
SQL.ParamByName("pXLBZ_XLBZID").Value = sMC;
|
||
DataSet ds = dberp.OpenDataSet(SQL);
|
||
if (ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
return ds.Tables[0].Rows[0]["XLBZ_XLBZID"].ToString().Trim();
|
||
}
|
||
else
|
||
{
|
||
return sMC;
|
||
}
|
||
|
||
}
|
||
|
||
public static BJXX GetBJDXX(string sBJDID)
|
||
{
|
||
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
||
TSQL SQL = new TSQL(dberp);
|
||
|
||
BJXX bjdxx = new BJXX();
|
||
|
||
SQL.Clear();
|
||
SQL.Add(" select XLXSBJD_JGBID,XLXSBJD_BJRQ,XLXSBJD_BJFLID from XLXSBJD ");
|
||
SQL.Add(" where XLXSBJD_BJDID=:pBJDID ");
|
||
SQL.ParamByName("pBJDID").Value = sBJDID;
|
||
|
||
DataSet ds = dberp.OpenDataSet(SQL);
|
||
if (ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
bjdxx.JGBID = ds.Tables[0].Rows[0]["XLXSBJD_JGBID"].ToString().Trim();
|
||
bjdxx.BJRQ = ds.Tables[0].Rows[0]["XLXSBJD_BJRQ"].ToString().Trim();
|
||
bjdxx.BJFLID = ds.Tables[0].Rows[0]["XLXSBJD_BJFLID"].ToString().Trim();
|
||
|
||
}
|
||
else
|
||
{
|
||
bjdxx.JGBID = "";
|
||
bjdxx.BJRQ = "";
|
||
bjdxx.BJFLID = "";
|
||
}
|
||
return bjdxx;
|
||
}
|
||
|
||
public static bool IsJGE(string sJGBID)
|
||
{
|
||
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSJGB where XLXSJGB_JGBID='{0}' and XLXSJGB_MXBH='JGB'", sJGBID.Trim())))
|
||
return false;
|
||
else
|
||
return true;
|
||
}
|
||
|
||
public static void MatchForXLBZIDAndDYDJID(TDatabase dberp, TSQL SQL, string sJGBID, string sSELBJDID, CMISproSession CurSession)
|
||
{
|
||
//bool bBPPDY = XLBJDUtils.GetXLXSBJPZXX(100860043).XLXSBJPZ_BZDPPDY.Trim().Equals("Y");
|
||
bool bBPPDY = false;
|
||
//清空电压&标准后匹配,会直接将所选记录型号,规格不为空的标准和电压等级全部置空
|
||
//型号规格 可以获取唯一值,点击匹配按钮会直接匹配上标准和电压等级。
|
||
//型号规格标准 可以获取唯一值,点击匹配按钮会直接匹配上电压等级。
|
||
//型号规格电压等级可以获取唯一值,点击匹配按钮会直接匹配上标准。
|
||
//-----------------------------------------------------------------
|
||
|
||
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pFlag");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_DYDJID = ' '");
|
||
|
||
SQL.ParamByName("pFlag").Value = "DY";
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
//先匹配型号相同,规格为空的记录更新外部报价单明细
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add(" using XLXSBJCPMRBZDY sor ");
|
||
SQL.Add(" on(XLXSBJCPMRBZDY_XLXHID=XLXSBJDMX_XLXHID and XLXSBJCPMRBZDY_XLGGID=' ' ");
|
||
SQL.Add(" and XLXSBJDMX_WHR='DY'");
|
||
|
||
SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" XLXSBJDMX_XLBZID=isnull(XLXSBJCPMRBZDY_XLBZID,' ') ");
|
||
if (!bBPPDY)
|
||
SQL.Add(" ,XLXSBJDMX_DYDJID=isnull(XLXSBJCPMRBZDY_DYDJID,' ') ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
//后匹配型号、规格相等的记录更新外部报价单明细
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add(" using XLXSBJCPMRBZDY sor ");
|
||
SQL.Add(" on(XLXSBJCPMRBZDY_XLXHID=XLXSBJDMX_XLXHID and XLXSBJCPMRBZDY_XLGGID=XLXSBJDMX_XLGGID ");
|
||
SQL.Add(" and XLXSBJDMX_WHR='DY'");
|
||
|
||
SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" XLXSBJDMX_XLBZID=isnull(XLXSBJCPMRBZDY_XLBZID,' ') ");
|
||
if (!bBPPDY)
|
||
SQL.Add(" ,XLXSBJDMX_DYDJID=isnull(XLXSBJCPMRBZDY_DYDJID,' ') ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pWHR");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_WHR='DY' ");
|
||
|
||
SQL.ParamByName("pWHR").Value = CurSession.UserName;
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pFlag");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and ISNULL(XLXSBJDMX_DYDJID,' ') <> ' ' ");
|
||
|
||
SQL.ParamByName("pFlag").Value = "BZ";
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
|
||
//再匹配型号、规格、电压相等的记录更新到外部报价单明细
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add(" using XLXSBJCPMRBZDY sor ");
|
||
SQL.Add(" on(XLXSBJCPMRBZDY_XLXHID=XLXSBJDMX_XLXHID and XLXSBJCPMRBZDY_XLGGID=XLXSBJDMX_XLGGID and XLXSBJCPMRBZDY_DYDJID=XLXSBJDMX_DYDJID ");
|
||
SQL.Add(" and XLXSBJDMX_WHR='BZ'");
|
||
|
||
SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" XLXSBJDMX_XLBZID=isnull(XLXSBJCPMRBZDY_XLBZID,' ') ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pWHR");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_WHR='BZ' ");
|
||
|
||
SQL.ParamByName("pWHR").Value = CurSession.UserName;
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
string sWBPPZXSX = "D";
|
||
|
||
//string sWBPPZXSX = "A";
|
||
N_XLXSBJ.XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860043);
|
||
//if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_WBPPZXSX))
|
||
// sWBPPZXSX = pzxx.XLXSBJPZ_WBPPZXSX;
|
||
|
||
string sDefXLBZID = "";
|
||
string sDefDYDJID = "";
|
||
|
||
pzxx = XLBJDUtils.GetXLXSBJPZXX(100860000);
|
||
if (!string.IsNullOrEmpty(XLBJDUtils.GetXLXSBJPZXX(100860140).XLXSBJPZ_MRXLBZID))
|
||
sDefXLBZID = XLBJDUtils.GetXLXSBJPZXX(100860140).XLXSBJPZ_MRXLBZID;
|
||
|
||
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_MRDYDJ))
|
||
sDefDYDJID = pzxx.XLXSBJPZ_MRDYDJ;
|
||
if (!sDefXLBZID.Equals("FirstBZ"))
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_XLBZID=:pFlag,XLXSBJDMX_XDXLBZID=:pFlag ");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and isnull(XLXSBJDMX_XLBZID,' ') = ' '");
|
||
SQL.ParamByName("pFlag").Value = sDefXLBZID;
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
/*
|
||
A:线缆销售材料清单
|
||
B:线缆销售价格表
|
||
C:先材料清单再价格表
|
||
D:先价格表再材料清单
|
||
*/
|
||
string ErrorNo = "";
|
||
try
|
||
{
|
||
if (sWBPPZXSX.Equals("B") || sWBPPZXSX.Equals("D"))
|
||
{
|
||
MatchForXLXSJGBMX(dberp, SQL, sJGBID, sSELBJDID, sDefXLBZID, sDefDYDJID, ref ErrorNo, CurSession);
|
||
if (sWBPPZXSX.Equals("D"))
|
||
{
|
||
MatchForXLXSCLQD(dberp, SQL, sJGBID, sSELBJDID, sDefXLBZID, sDefDYDJID, ref ErrorNo, CurSession);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MatchForXLXSCLQD(dberp, SQL, sJGBID, sSELBJDID, sDefXLBZID, sDefDYDJID, ref ErrorNo, CurSession);
|
||
if (sWBPPZXSX.Equals("C"))
|
||
{
|
||
MatchForXLXSJGBMX(dberp, SQL, sJGBID, sSELBJDID, sDefXLBZID, sDefDYDJID, ref ErrorNo, CurSession);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
}
|
||
}
|
||
public static void MatchForXLXSJGBMX(TDatabase dberp, TSQL SQL, string sJGBID, string sSELBJDID, string sDefXLBZID, string sDefDYDJID, ref string ErrorNo, CMISproSession CurSession)
|
||
{
|
||
bool bBPPDY = XLBJDUtils.GetXLXSBJPZXX(100860043).XLXSBJPZ_BZDPPDY.Trim().Equals("Y");
|
||
//string sJGFID = XLBJDUtils.GetJGFID(PageParam.GetRTrimString("BJRQ"));
|
||
//if (!sJGFID.Equals(""))
|
||
//{
|
||
// if (!sJGBID.Equals(""))
|
||
// {
|
||
// sJGBID += "," + sJGFID;
|
||
// }
|
||
// else
|
||
// {
|
||
// sJGBID = sJGFID;
|
||
// }
|
||
//}
|
||
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pFlag");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID = ' '");
|
||
|
||
SQL.ParamByName("pFlag").Value = "BZ_DY";
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
//使用价格表明细
|
||
/*
|
||
merge into 目标表 tar
|
||
using 源表 sor
|
||
on(a.条件字段1=b.条件字段1 and tar.条件字段2=b.条件字段2 ……)
|
||
when matched then update set a.更新字段=b.字段
|
||
when not matched then insert into a(字段1,字段2……)values(值1,值2……)
|
||
*/
|
||
if (sDefXLBZID.Equals(""))
|
||
{
|
||
ErrorNo = "1.1";
|
||
#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 <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and tar.XLXSBJDMX_WHR = 'BZ_DY' ");
|
||
else
|
||
SQL.Add(" and tar.XLXSBJDMX_XLBZID = ' ' and tar.XLXSBJDMX_DYDJID = ' ' ");
|
||
SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" tar.XLXSBJDMX_XLBZID =sor.XLBZID,tar.XLXSBJDMX_XDXLBZID=sor.XLBZID ");
|
||
if (!bBPPDY)
|
||
SQL.Add(", tar.XLXSBJDMX_DYDJID=sor.DYDJID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
else if (sDefXLBZID.Equals("FirstBZ"))
|
||
{
|
||
ErrorNo = "1.2";
|
||
#region 根据型号、规格,匹配第一个标准
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add(" using ( ");
|
||
SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID,isnull(XLBZ_XLBZID,' ') as XLBZID");
|
||
SQL.Add(" from");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID, min(isnull(XLBZPX,0)) as minXLBZPX ");
|
||
SQL.Add(" from XLXSJGBMX b ");
|
||
SQL.Add(" left join (select row_number()over(order by XLBZ_DZSC,XLBZ_PX,XLBZ_XLBZID) as XLBZPX,XLBZ_XLBZID from XLBZ where 1=1) tmpXLBZ on XLBZ_XLBZID=XLXSJGBMX_XLBZID");
|
||
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(" group by XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID");
|
||
SQL.Add(" ) jgbmx");
|
||
SQL.Add(" left join (select row_number()over(order by XLBZ_DZSC,XLBZ_PX,XLBZ_XLBZID) as XLBZPX,XLBZ_XLBZID from XLBZ where 1=1) tmpXLBZ on XLBZPX=minXLBZPX");
|
||
SQL.Add(" where 1=1");
|
||
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 <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and tar.XLXSBJDMX_WHR = 'BZ_DY' ");
|
||
else
|
||
SQL.Add(" and tar.XLXSBJDMX_XLBZID = ' ' and tar.XLXSBJDMX_DYDJID = ' ' ");
|
||
SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" tar.XLXSBJDMX_XLBZID =sor.XLBZID,tar.XLXSBJDMX_XDXLBZID=sor.XLBZID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pFlag");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XLBZID <> ' ' and XLXSBJDMX_DYDJID = ' '");
|
||
|
||
SQL.ParamByName("pFlag").Value = "DY";
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
if (!bBPPDY)
|
||
{
|
||
if (sDefDYDJID.Equals("minDY"))
|
||
{
|
||
ErrorNo = "2.1";
|
||
#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, isnull(XLDYDJB_DYDJID,' ') as DYDJID, PPSL ");
|
||
SQL.Add(" from");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID, XLXSJGBMX_XLBZID,min(isnull(DYDJPX,0)) as minDYDJPX,sum(1) as PPSL ");//匹配数量等于1则表示唯一匹配
|
||
SQL.Add(" from XLXSJGBMX b ");
|
||
SQL.Add(" left join (select row_number()over(order by XLDYDJB_XH,XLDYDJB_DYDJID) as DYDJPX,XLDYDJB_DYDJID from XLDYDJB where 1=1) tmpXLDY on XLDYDJB_DYDJID=XLXSJGBMX_DYDJID");
|
||
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(" group by XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_XLBZID");
|
||
SQL.Add(" ) jgbmx");
|
||
SQL.Add(" left join (select row_number()over(order by XLDYDJB_XH,XLDYDJB_DYDJID) as DYDJPX,XLDYDJB_DYDJID from XLDYDJB where 1=1) DYDJ on DYDJ.DYDJPX=minDYDJPX");
|
||
SQL.Add(" where 1=1");
|
||
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 <> ' ' and sor.PPSL >=1 ");//匹配数量等于1表示唯一匹配,无需考虑XLXSBJDMX_BJCPDYDJID
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and tar.XLXSBJDMX_WHR = 'DY' ");
|
||
else
|
||
SQL.Add(" and tar.XLXSBJDMX_XLBZID <> ' ' and tar.XLXSBJDMX_DYDJID = ' ' ");
|
||
SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" tar.XLXSBJDMX_DYDJID=sor.DYDJID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
|
||
else
|
||
{
|
||
ErrorNo = "2.2";
|
||
#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 <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and tar.XLXSBJDMX_WHR = 'DY' ");
|
||
else
|
||
SQL.Add(" and tar.XLXSBJDMX_XLBZID <> ' ' and tar.XLXSBJDMX_DYDJID = ' ' ");
|
||
SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" tar.XLXSBJDMX_DYDJID=sor.DYDJID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
}
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pFlag");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID <> ' '");
|
||
|
||
SQL.ParamByName("pFlag").Value = "BZ";
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
if (sDefXLBZID.Equals(""))
|
||
{
|
||
ErrorNo = "3.1";
|
||
#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 <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and tar.XLXSBJDMX_WHR = 'BZ' ");
|
||
else
|
||
SQL.Add(" and tar.XLXSBJDMX_XLBZID = ' ' and tar.XLXSBJDMX_DYDJID <> ' ' ");
|
||
SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" tar.XLXSBJDMX_XLBZID =sor.XLBZID,tar.XLXSBJDMX_XDXLBZID=sor.XLBZID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
else if (sDefXLBZID.Equals("FirstBZ"))
|
||
{
|
||
ErrorNo = "3.2";
|
||
#region 根据型号、规格、电压等级,匹配第一个标准
|
||
SQL.Clear();
|
||
SQL.Add("merge into XLXSBJDMX tar ");
|
||
SQL.Add(" using ( ");
|
||
SQL.Add(" select XLXSJGBMX_XLXHID as XLXHID,XLXSJGBMX_XLGGID as XLGGID,XLXSJGBMX_DYDJID as DYDJID,isnull(XLBZ_XLBZID,' ') as XLBZID");
|
||
SQL.Add(" from");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_DYDJID, min(isnull(XLBZPX,0)) as minXLBZPX ");
|
||
SQL.Add(" from XLXSJGBMX b ");
|
||
SQL.Add(" left join (select row_number()over(order by XLBZ_DZSC,XLBZ_PX,XLBZ_XLBZID) as XLBZPX,XLBZ_XLBZID from XLBZ where 1=1) tmpXLBZ on XLBZ_XLBZID=XLXSJGBMX_XLBZID");
|
||
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(" group by XLXSJGBMX_XLXHID,XLXSJGBMX_XLGGID,XLXSJGBMX_DYDJID");
|
||
SQL.Add(" ) jgbmx");
|
||
SQL.Add(" left join (select row_number()over(order by XLBZ_DZSC,XLBZ_PX,XLBZ_XLBZID) as XLBZPX,XLBZ_XLBZID from XLBZ where 1=1) tmpXLBZ on XLBZPX=minXLBZPX");
|
||
SQL.Add(" where 1=1");
|
||
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 <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and tar.XLXSBJDMX_WHR = 'BZ' ");
|
||
else
|
||
SQL.Add(" and tar.XLXSBJDMX_XLBZID = ' ' and tar.XLXSBJDMX_DYDJID <> ' ' ");
|
||
SQL.Add(" and tar.XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
SQL.Add(" ) ");
|
||
SQL.Add(" when matched then update set ");
|
||
SQL.Add(" tar.XLXSBJDMX_XLBZID =sor.XLBZID,tar.XLXSBJDMX_XDXLBZID=sor.XLBZID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pWHR");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and (XLXSBJDMX_WHR='BZ_DY' or XLXSBJDMX_WHR='DY' or XLXSBJDMX_WHR='BZ')");
|
||
|
||
SQL.ParamByName("pWHR").Value = CurSession.UserName;
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
}
|
||
public static void MatchForXLXSCLQD(TDatabase dberp, TSQL SQL, string sJGBID, string sSELBJDID, string sDefXLBZID, string sDefDYDJID, ref string ErrorNo, CMISproSession CurSession)
|
||
{
|
||
bool bBPPDY = XLBJDUtils.GetXLXSBJPZXX(100860043).XLXSBJPZ_BZDPPDY.Trim().Equals("Y");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pFlag");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID = ' '");
|
||
|
||
SQL.ParamByName("pFlag").Value = "BZ_DY";
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
//使用材料清单匹配
|
||
if (sDefXLBZID.Equals(""))
|
||
{
|
||
ErrorNo = "4.1";
|
||
#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 <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and XLXSBJDMX_WHR = 'BZ_DY' ");
|
||
else
|
||
SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID = ' ' ");
|
||
SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
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,XLXSBJDMX_XDXLBZID=c.XLXSCLQD_XLBZID ");
|
||
if (!bBPPDY)
|
||
SQL.Add(" , XLXSBJDMX_DYDJID=c.XLXSCLQD_DYDJID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
else if (sDefXLBZID.Equals("FirstBZ"))
|
||
{
|
||
ErrorNo = "4.2";
|
||
#region 根据型号、规格,匹配第一个标准
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDMX tag");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" ( ");
|
||
SQL.Add(" select XLXSCLQD_XLXHID as XLXHID,XLXSCLQD_XLGGID as XLGGID,isnull(XLBZ_XLBZID,' ') as XLBZID");
|
||
SQL.Add(" from");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,min(isnull(XLBZPX,0)) as minXLBZPX FROM XLXSCLQD ");
|
||
SQL.Add(" left join (select row_number()over(order by XLBZ_DZSC,XLBZ_PX,XLBZ_XLBZID) as XLBZPX,XLBZ_XLBZID from XLBZ where 1=1) tmpXLBZ on XLBZ_XLBZID=XLXSCLQD_XLBZID");
|
||
SQL.Add(" where XLXSCLQD_WPID = 'ZZZZ' ");
|
||
SQL.Add(" and exists( ");
|
||
SQL.Add(" select 1 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(" ) clqd");
|
||
SQL.Add(" left join (select row_number()over(order by XLBZ_DZSC,XLBZ_PX,XLBZ_XLBZID) as XLBZPX,XLBZ_XLBZID from XLBZ where 1=1) tmpXLBZ on XLBZPX=minXLBZPX");
|
||
SQL.Add(" where 1=1");
|
||
SQL.Add(" ) c ");
|
||
SQL.Add(" on( XLXSBJDMX_XLXHID <> ' ' and XLXSBJDMX_XLGGID <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and XLXSBJDMX_WHR = 'BZ_DY' ");
|
||
else
|
||
SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID = ' ' ");
|
||
SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
SQL.Add(" and c.XLXHID =XLXSBJDMX_XLXHID and c.XLGGID=XLXSBJDMX_XLGGID ) ");
|
||
SQL.Add(" when matched then update set XLXSBJDMX_XLBZID =c.XLBZID,XLXSBJDMX_XDXLBZID=c.XLBZID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pFlag");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XLBZID <> ' ' and XLXSBJDMX_DYDJID = ' '");
|
||
|
||
SQL.ParamByName("pFlag").Value = "DY";
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
if (!bBPPDY)
|
||
{
|
||
if (sDefDYDJID.Equals("minDY"))
|
||
{
|
||
ErrorNo = "5.1";
|
||
#region 根据型号、规格、标准,匹配第一个电压等级
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDMX tag ");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" ( ");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID, isnull(XLDYDJB_DYDJID,' ') as XLDYDJB_DYDJID,PPSL");
|
||
SQL.Add(" from");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,min(isnull(DYDJPX,0)) as minDYDJPX,sum(1) as PPSL FROM XLXSCLQD ");//匹配数量等于1则表示唯一匹配
|
||
SQL.Add(" left join (select row_number()over(order by XLDYDJB_XH,XLDYDJB_DYDJID) as DYDJPX,XLDYDJB_DYDJID from XLDYDJB where 1=1) tmpDYDJ on tmpDYDJ.XLDYDJB_DYDJID=XLXSCLQD_DYDJID");
|
||
SQL.Add(" where XLXSCLQD_WPID = 'ZZZZ' ");
|
||
SQL.Add(" and exists( ");
|
||
SQL.Add(" select 1 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(" ) clqd");
|
||
SQL.Add(" left join (select row_number()over(order by XLDYDJB_XH,XLDYDJB_DYDJID) as DYDJPX,XLDYDJB_DYDJID from XLDYDJB where 1=1) DYDJ on DYDJ.DYDJPX=minDYDJPX");
|
||
SQL.Add(" where 1=1");
|
||
SQL.Add(" ) c ");
|
||
SQL.Add(" on ( XLXSBJDMX_XLXHID <> ' ' and XLXSBJDMX_XLGGID <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and XLXSBJDMX_WHR = 'DY' ");
|
||
else
|
||
SQL.Add(" and XLXSBJDMX_XLBZID <> ' ' and XLXSBJDMX_DYDJID = ' ' and c.PPSL >= 1 ");//匹配数量等于1表示唯一匹配,无需考虑XLXSBJDMX_BJCPDYDJID
|
||
SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
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.XLDYDJB_DYDJID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
else
|
||
{
|
||
ErrorNo = "5.2";
|
||
#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 <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and XLXSBJDMX_WHR = 'DY' ");
|
||
else
|
||
SQL.Add(" and XLXSBJDMX_XLBZID <> ' ' and XLXSBJDMX_DYDJID = ' ' ");
|
||
SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
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 = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
}
|
||
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pFlag");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID <> ' '");
|
||
|
||
SQL.ParamByName("pFlag").Value = "BZ";
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
if (sDefXLBZID.Equals(""))
|
||
{
|
||
ErrorNo = "6.1";
|
||
#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 <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and XLXSBJDMX_WHR = 'BZ' ");
|
||
else
|
||
SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID <> ' ' ");
|
||
SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
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,XLXSBJDMX_XDXLBZID=c.XLXSCLQD_XLBZID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
else if (sDefXLBZID.Equals("FirstBZ"))
|
||
{
|
||
ErrorNo = "6.2";
|
||
#region 根据型号、规格、电压等级,匹配第一个标准
|
||
SQL.Clear();
|
||
SQL.Add(" merge into XLXSBJDMX tag ");
|
||
SQL.Add(" using ");
|
||
SQL.Add(" ( ");
|
||
SQL.Add(" select XLXSCLQD_XLXHID as XLXHID,XLXSCLQD_XLGGID as XLGGID,XLXSCLQD_DYDJID as DYDJID,isnull(XLBZ_XLBZID,' ') as XLBZID");
|
||
SQL.Add(" from");
|
||
SQL.Add(" (");
|
||
SQL.Add(" select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_DYDJID,min(isnull(XLBZPX,0)) as minXLBZPX FROM XLXSCLQD ");
|
||
SQL.Add(" left join (select row_number()over(order by XLBZ_DZSC,XLBZ_PX,XLBZ_XLBZID) as XLBZPX,XLBZ_XLBZID from XLBZ where 1=1) tmpXLBZ on XLBZ_XLBZID=XLXSCLQD_XLBZID");
|
||
SQL.Add(" where XLXSCLQD_WPID = 'ZZZZ' ");
|
||
SQL.Add(" and exists( ");
|
||
SQL.Add(" select 1 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,XLXSCLQD_DYDJID");
|
||
SQL.Add(" ) clqd");
|
||
SQL.Add(" left join (select row_number()over(order by XLBZ_DZSC,XLBZ_PX,XLBZ_XLBZID) as XLBZPX,XLBZ_XLBZID from XLBZ where 1=1) tmpXLBZ on XLBZPX=minXLBZPX");
|
||
SQL.Add(" where 1=1");
|
||
SQL.Add(" ) c ");
|
||
SQL.Add(" on( XLXSBJDMX_XLXHID <> ' ' and XLXSBJDMX_XLGGID <> ' ' ");
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
SQL.Add(" and XLXSBJDMX_WHR = 'BZ' ");
|
||
else
|
||
SQL.Add(" and XLXSBJDMX_XLBZID = ' ' and XLXSBJDMX_DYDJID <> ' ' ");
|
||
SQL.Add(" and XLXSBJDMX_BJDID=:pBJDID ");
|
||
|
||
SQL.Add(" and c.XLXHID =XLXSBJDMX_XLXHID and c.XLGGID=XLXSBJDMX_XLGGID and c.DYDJID=XLXSBJDMX_DYDJID ) ");
|
||
SQL.Add(" when matched then update set XLXSBJDMX_XLBZID =c.XLBZID,XLXSBJDMX_XDXLBZID=c.XLBZID ");
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
#endregion
|
||
}
|
||
|
||
if (dberp.DriverName == "ORACLE")//Oracle下merge into语法被更新的字段不能作为关联条件使用,专门处理
|
||
{
|
||
SQL.Clear();
|
||
SQL.Add("update XLXSBJDMX set XLXSBJDMX_WHR=:pWHR");
|
||
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
|
||
|
||
SQL.Add(" and (XLXSBJDMX_WHR='BZ_DY' or XLXSBJDMX_WHR='DY' or XLXSBJDMX_WHR='BZ')");
|
||
SQL.ParamByName("pWHR").Value = CurSession.UserName;
|
||
|
||
SQL.ParamByName("pBJDID").Value = sSELBJDID;
|
||
dberp.ExecSQL(SQL);
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
#endregion
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
public class XLBZ
|
||
{
|
||
private string xlbzid="";
|
||
private string xlbzmc="";
|
||
public string XLBZID
|
||
{
|
||
get { return xlbzid; }
|
||
set { xlbzid = value; }
|
||
}
|
||
public string XLBZMC
|
||
{
|
||
get { return xlbzmc; }
|
||
set { xlbzmc = value; }
|
||
}
|
||
}
|
||
|
||
public class BJXX
|
||
{
|
||
private string jgbid;
|
||
private string bjrq;
|
||
private string bjflid;
|
||
|
||
public string JGBID
|
||
{
|
||
get { return jgbid; }
|
||
set { jgbid = value; }
|
||
}
|
||
|
||
public string BJRQ
|
||
{
|
||
get { return bjrq; }
|
||
set { bjrq = value; }
|
||
}
|
||
|
||
public string BJFLID
|
||
{
|
||
get { return bjflid; }
|
||
set { bjflid = value; }
|
||
}
|
||
|
||
}
|
||
}
|