commit 87af4f2233828a3415fa6792f0719c42013f4c7d Author: wangwei <1163568462@qq.com> Date: Fri Aug 28 16:38:07 2026 +0800 上传文件至「/ã€� BatchUpdateXLJXMX 的批é‡�æ›´æ–°é‡�æž„ diff --git a/XLBJJXDRService.cs b/XLBJJXDRService.cs new file mode 100644 index 0000000..4c6c116 --- /dev/null +++ b/XLBJJXDRService.cs @@ -0,0 +1,3726 @@ +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 = ""; + } + + /// + /// Ïß·ÏàËÆ±¨¼Ûµ¥Ã÷ϸÅúÁ¿²åÈëʵÌå¡£ + /// + 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 quoteList = new List(); + + } + 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 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 resultList = new List(); + + // ¹¹½¨²éѯÓï¾ä + 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 = 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"]); + + 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(); // ·µ»Ø¿Õ¼¯ºÏ + } + 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 resultList = new List(); + + // ¹¹½¨²éѯÓï¾ä + 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 GetXLJXGZList(string XLJXDJ, string XLJXDH) + { + TDatabase dberp = null; + try + { + dberp = TContextDatabases.GetDatabase("DBERP"); + List resultList = new List(); + + // ¹¹½¨²éѯÓï¾ä + 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 = 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"]); + + resultList.Add(item); + } + } + return resultList; + } + catch (Exception ex) + { + return new List(); // ·µ»Ø¿Õ¼¯ºÏ + } + finally + { + + } + } + + [AjaxMethod(AuthRequried = false)] + public static List GetTYXLJXGZList(string XLJXDJ, string XLJXDH) + { + TDatabase dberp = null; + try + { + dberp = TContextDatabases.GetDatabase("DBERP"); + List resultList = new List(); + + // ¹¹½¨²éѯÓï¾ä + 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 = 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"]); + + resultList.Add(item); + } + } + return resultList; + } + catch (Exception ex) + { + return new List(); // ·µ»Ø¿Õ¼¯ºÏ + } + 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 resultList = new List(); + + // ¹¹½¨²éѯÓï¾ä + 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.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"]); + + + } + } + 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.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; + } + 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 items) + { + CMISproSession tSession = CMISproSessionManager.GetCurrentSession(); + TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); + TSQL sSQL = new TSQL(dberp); + Result result = new Result(); + try + { + + dberp.BeginTrans(); // ¿ªÆôÊÂÎñ + + // ´´½¨×ÖµäÓÃÓÚ°´XLJXDH·Ö×é + Dictionary> groupedItems = new Dictionary>(); + + // °´XLJXDH·Ö×é + foreach (XLJXMX item in items) + { + string key = item.XLJXDH; + if (!groupedItems.ContainsKey(key)) + { + groupedItems[key] = new List(); + } + groupedItems[key].Add(item); + } + + // ´¦Àíÿ¸ö·Ö×é + foreach (string key in groupedItems.Keys) + { + List 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 items) + { + CMISproSession tSession = CMISproSessionManager.GetCurrentSession(); + TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); + TSQL sSQL = new TSQL(dberp); + Result result = new Result(); + try + { + + dberp.BeginTrans(); // ¿ªÆôÊÂÎñ + + // ´´½¨×ÖµäÓÃÓÚ°´XLJXDH·Ö×é + Dictionary> groupedItems = new Dictionary>(); + + // °´XLJXDH·Ö×é + foreach (XLJXMX item in items) + { + string key = item.XLJXDH; + if (!groupedItems.ContainsKey(key)) + { + groupedItems[key] = new List(); + } + groupedItems[key].Add(item); + } + + // ´¦Àíÿ¸ö·Ö×é + foreach (string key in groupedItems.Keys) + { + List 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 ½âÎö¹«¹²ºËÐÄ + + /// + /// Ê״γɹ¦½âÎöʱµÄ»Øµ÷ίÍУ¬·µ»ØÒªÓ¦ÓõĹæÔòÐòºÅ + /// + private delegate string OnFirstSuccessfulParseDelegate(); + + /// + /// ¼ÓÔØµÈÐ§Ìæ»»¹æÔò + /// + 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); + } + + /// + /// ¸ù¾Ý XLXSBJDXTHDZQD ÅäÖöԽâÎö½á¹û½øÐеÈÐ§Ìæ»» + /// + 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; + } + } + } + } + + /// + /// ½âÎöµ¥Ìõ²úÆ·×Ö·û´®£¬·µ»Ø½âÎö½á¹û¼°µÈÐ§Ìæ»»ºóµÄ½á¹û + /// + 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; + } + + /// + /// ½«½âÎö½á¹û¸üе½ XLJXMX µ¥Ìõ¼Ç¼ + /// + 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); + } + + /// + /// ±£´æ»ò¸üнâÎö¹æÔòµ½ XLJXGZ£¬·µ»Ø¹æÔòÐòºÅ + /// + 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; + } + + /// + /// ά»¤ XLYFGZ Óï·¨¿â + /// + 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); + } + + /// + /// ½«ÒýÓÃÖ¸¶¨¹æÔòµÄ XLJXMX Ã÷Ï¸ÖØÖÃΪδ½âÎö״̬ + /// + 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); + } + + /// + /// ½«Ö¸¶¨½âÎö¹æÔòÓ¦Óõ½Ä¿±ê±¨¼Ûµ¥ÏÂËùÓÐ XLJXGZXH=0 µÄÃ÷ϸÐÐ + /// + /// Ê״γɹ¦½âÎöʱµÄ»Øµ÷£¬·µ»ØÒªÓ¦ÓõĹæÔòÐòºÅ£»·µ»Ø¿ÕÔòÌø¹ý¸ÃÐÐ + /// ³É¹¦½âÎö²¢¸üеÄÐÐÊý + 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 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 xljxgzList = new List(); + 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 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 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 dicBZ = new Dictionary(); + try + { + if (items == null || items.Count == 0) + { + result.success = false; + result.msg = "ûÓпɵ¼ÈëµÄÊý¾Ý"; + return result; + } + + Dictionary seenJXMXH = new Dictionary(); + 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 insertMXEntityList = new List(); + List insertMXList = new List(); + Dictionary dicYSID = new Dictionary(); + + 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 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(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 GetXLXHYFList(string sXLJXGZC) + { + List list = new List(); + 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 GetXLGGYFList(string sXLJXGZC) + { + List list = new List(); + 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 GetDYDJYFList(string sXLJXGZC) + { + List list = new List(); + 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 GetXLBZYFList(string sXLJXGZC) + { + List list = new List(); + 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 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> groups = new Dictionary>(); + 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(); + } + groups[key].Add(item); + } + + dberp = TContextDatabases.GetDatabase("DBERP"); + dberp.BeginTrans(); + + int totalAffectedRows = 0; + const int MaxInListSize = 1000; + + foreach (KeyValuePair> group in groups) + { + string[] keyParts = group.Key.Split('|'); + string dj = keyParts[0] as string; + string dh = keyParts[1] as string; + List 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 ¸¨Öú·½·¨ + + + 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 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´¦Àíº¯Êý + /// + /// È±Ê§ÒªËØ¶àѡɸѡ£ºXLXH=ÏßÀÂÐͺŠXLGG=ÏßÀ¹æ¸ñ XLBZ=ÏßÀ±ê×¼ DYDJ=µçѹµÈ¼¶£¬¶àѡΪ OR ¹ØÏµ + /// + private static void AppendMissingElementFilter(TSQL sSQL, string sQSYS) + { + if (string.IsNullOrEmpty(sQSYS)) + return; + + List conditions = new List(); + 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; } + } + + } +}