You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

204 lines
7.0 KiB
C#

11 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BP.DA;
using BP.Difference;
using BP.En;
namespace BP.Difference
{
/// <summary>
/// 获得IP
/// </summary>
public static class Glo
{
public static string DealExp(string exp, Hashtable ht)
{
if (exp == null)
exp = string.Empty;
exp = exp.Replace("~", "'");
exp = exp.Replace("/#", "+"); //为什么?
exp = exp.Replace("/$", "-"); //为什么?
if (exp.Contains("@WebUser.No"))
exp = exp.Replace("@WebUser.No", BP.Web.WebUser.No);
if (exp.Contains("@WebUser.Name"))
exp = exp.Replace("@WebUser.Name", BP.Web.WebUser.Name);
if (exp.Contains("@WebUser.FK_DeptName"))
exp = exp.Replace("@WebUser.FK_DeptName", BP.Web.WebUser.DeptName);
if (exp.Contains("@WebUser.FK_Dept"))
exp = exp.Replace("@WebUser.FK_Dept", BP.Web.WebUser.DeptNo);
if (exp.Contains("@") == true && ht != null)
{
foreach (string key in ht.Keys)
{
//值为空或者null不替换
if (ht[key] == null || ht[key].Equals("") == true)
continue;
if (exp.Contains("@" + key))
exp = exp.Replace("@" + key, ht[key].ToString());
//不包含@则返回SQL语句
if (exp.Contains("@") == false)
break;
}
}
if (exp.Contains("@") && BP.Difference.SystemConfig.isBSsystem == true)
{
/*如果是bs*/
foreach (string key in HttpContextHelper.RequestParamKeys)
{
if (string.IsNullOrEmpty(key))
continue;
exp = exp.Replace("@" + key, HttpContextHelper.RequestParams(key));
}
}
//if (exp.Contains("@") == true)
// throw new Exception("@外键类型SQL错误," + exp + "部分查询条件没有被替换.");
return exp;
}
/// <summary>
/// 表达式替换
/// </summary>
/// <param name="exp"></param>
/// <param name="en"></param>
/// <returns></returns>
public static string DealExp(string exp, Entity en, string errInfo = "")
{
//替换字符
exp = exp.Replace("~~", "\"");
exp = exp.Replace("~", "'");
if (exp.Contains("@") == false)
return exp;
//首先替换加; 的。
exp = exp.Replace("@WebUser.No;", BP.Web.WebUser.No);
exp = exp.Replace("@WebUser.Name;", BP.Web.WebUser.Name);
exp = exp.Replace("@WebUser.FK_DeptName;", BP.Web.WebUser.DeptName);
exp = exp.Replace("@WebUser.FK_Dept;", BP.Web.WebUser.DeptNo);
// 替换没有 ; 的 .
exp = exp.Replace("@WebUser.No", BP.Web.WebUser.No);
exp = exp.Replace("@WebUser.Name", BP.Web.WebUser.Name);
exp = exp.Replace("@WebUser.FK_DeptName", BP.Web.WebUser.DeptName);
exp = exp.Replace("@WebUser.FK_Dept", BP.Web.WebUser.DeptNo);
exp = exp.Replace("@WebUser.OrgNo", BP.Web.WebUser.OrgNo);
exp = exp.Replace("@RDT", DataType.CurrentDateTime);
if (exp.Contains("@") == false)
return exp;
//增加对新规则的支持. @MyField; 格式.
if (en != null)
{
Attrs attrs = en.EnMap.Attrs;
BP.En.Row row = en.Row;
//特殊判断.
if (row.ContainsKey("OID") == true)
exp = exp.Replace("@WorkID", row["OID"].ToString());
if (exp.Contains("@") == false)
return exp;
bool isHaveFenHao = exp.Contains(';');
foreach (string key in row.Keys)
{
//值为空或者null不替换
if (row[key] == null)
continue;
if (exp.Contains("@" + key + ";"))
{
//先替换有单引号的.
exp = exp.Replace("'@" + key + ";'", "'" + row[key].ToString() + "'");
//在更新没有单引号的.
exp = exp.Replace("@" + key + ";", row[key].ToString());
}
if (exp.Contains("@" + key))
{
//先替换有单引号的.
exp = exp.Replace("'@" + key + "'", "'" + row[key].ToString() + "'");
//在更新没有单引号的.
exp = exp.Replace("@" + key, row[key].ToString());
}
//不包含@则返回SQL语句
if (exp.Contains("@") == false)
return exp;
}
}
if (exp.Contains("@") && BP.Difference.SystemConfig.isBSsystem == true)
{
/*如果是bs*/
foreach (string key in HttpContextHelper.RequestParamKeys)
{
if (string.IsNullOrEmpty(key))
continue;
exp = exp.Replace("@" + key, HttpContextHelper.RequestParams(key));
}
}
exp = exp.Replace("~", "'");
return exp;
}
public static string DealSQLStringEnumFormat(string cfgString)
{
//把这个string,转化SQL. @tuanyuan=团员@dangyuan=党员
AtPara ap = new AtPara(cfgString);
string sql = "";
foreach (string item in ap.HisHT.Keys)
{
sql += " SELECT '" + item + "' as No, '" + ap.GetValStrByKey(item) + "' as Name FROM Port_Emp WHERE No = 'admin' UNION ";
}
sql = sql.Substring(0, sql.Length - 6);
return sql;
}
/// <summary>
/// 获得ID地址
/// </summary>
public static string GetIP
{
get
{
return HttpContextHelper.Request.ServerVariables["REMOTE_ADDR"].ToString();
}
}
public static string RequestParas
{
get
{
string urlExt = "";
string rawUrl = System.Web.HttpContext.Current.Request.RawUrl;
rawUrl = "&" + rawUrl.Substring(rawUrl.IndexOf('?') + 1);
string[] paras = rawUrl.Split('&');
foreach (string para in paras)
{
if (para == null
|| para.Equals("")
|| para.Contains("=") == false)
continue;
urlExt += "&" + para;
}
return urlExt;
}
}
}
}