312 lines
12 KiB
C#
312 lines
12 KiB
C#
using CommonLib;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace Lskj.PubPower
|
|
{
|
|
public static class ReplaceHelper
|
|
{
|
|
/// <summary>
|
|
/// 带参数控件替换规则
|
|
/// </summary>
|
|
private static readonly string _replace_param = "#[^##]+#";
|
|
private static readonly string _replace_parent_left_key = "{#";
|
|
private static readonly string _replace_param_first_key = "{";
|
|
private static readonly string _replace_param_end_key = "}";
|
|
private static readonly string _proc_first_key = "@";
|
|
/// <summary>
|
|
/// 树节点替换key
|
|
/// </summary>
|
|
private static readonly string _replace_parent_key = "{parent.key}";
|
|
/// <summary>
|
|
/// 替换sql语句中的对应字段
|
|
/// </summary>
|
|
private static readonly string _replace_field_key = "{([^{])+}";
|
|
/// <summary>
|
|
/// 存储过程标识
|
|
/// </summary>
|
|
private static readonly string _procedureFlag = "exec";
|
|
/// <summary>
|
|
/// 查询语句标记
|
|
/// </summary>
|
|
private static readonly string _selectFlag = "select";
|
|
/// <summary>
|
|
/// 查询条件替换值
|
|
/// </summary>
|
|
private static readonly string _search_control_value = "{value}";
|
|
/// <summary>
|
|
/// loginid 固定字段
|
|
/// </summary>
|
|
private static readonly string _loginid_key = "{loginid}";
|
|
/// <summary>
|
|
/// loginname 固定字段
|
|
/// </summary>
|
|
private static readonly string _loginname_key = "{loginname}";
|
|
/// <summary>
|
|
/// groupid 固定字段
|
|
/// </summary>
|
|
private static readonly string _groupid_key = "{groupid}";
|
|
/// <summary>
|
|
/// password 固定字段
|
|
/// </summary>
|
|
private static readonly string _password_key = "{password}";
|
|
/// <summary>
|
|
/// 车间固定字段
|
|
/// </summary>
|
|
private static readonly string _cj_key = "{logincj}";
|
|
/// <summary>
|
|
/// 机台固定字段
|
|
/// </summary>
|
|
private static readonly string _jt_key = "{loginjt}";
|
|
/// <summary>
|
|
/// 班次固定字段
|
|
/// </summary>
|
|
private static readonly string _bz_key = "{loginbz}";
|
|
/// <summary>
|
|
/// 班组固定字段
|
|
/// </summary>
|
|
private static readonly string _className_key = "{className}";
|
|
/// <summary>
|
|
/// 替换表格列标识
|
|
/// </summary>
|
|
private static readonly string _column_key = "{COLUMN_NAME}";
|
|
/// <summary>
|
|
/// 替换表格列标题标识
|
|
/// </summary>
|
|
private static readonly string _column_title_key = "{COLUMN_TITLE}";
|
|
/// <summary>
|
|
/// 取单元格值
|
|
/// </summary>
|
|
private static readonly string _column_value_key = "{COLUMN_VALUE}";
|
|
/// <summary>
|
|
/// 系统id固定字段
|
|
/// </summary>
|
|
private static readonly string _seriesId_id = "{SeriesId}";
|
|
/// <summary>
|
|
/// 系统种类固定字段
|
|
/// </summary>
|
|
private static readonly string _logintype = "{logintype}";
|
|
/// <summary>
|
|
/// UserCode 固定字段
|
|
/// </summary>
|
|
private static readonly string _userCode_key = "{lserpUserCode}";
|
|
|
|
|
|
/// <summary>
|
|
/// 参数替换父级字符前缀
|
|
/// </summary>
|
|
/// <value>The replace parent left key.</value>
|
|
public static string ReplaceParentLeftKey { get { return _replace_parent_left_key; } }
|
|
/// <summary>
|
|
/// 参数替换首字符
|
|
/// </summary>
|
|
/// <value>The replace parameter first key.</value>
|
|
public static string ReplaceParamFirstKey { get { return _replace_param_first_key; } }
|
|
/// <summary>
|
|
/// 参数替换尾字符
|
|
/// </summary>
|
|
/// <value>The replace parameter end key.</value>
|
|
public static string ReplaceParamEndKey { get { return _replace_param_end_key; } }
|
|
/// <summary>
|
|
/// 存储过程参数执行方式首字符
|
|
/// </summary>
|
|
/// <value>The proc first key.</value>
|
|
public static string ProcFirstKey { get { return _proc_first_key; } }
|
|
/// <summary>
|
|
/// 带参数控件替换规则
|
|
/// </summary>
|
|
/// <value>The replace parameter.</value>
|
|
public static string ReplaceParamKey { get { return _replace_param; } }
|
|
/// <summary>
|
|
/// <para>说明:替换userid、username、groupid</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-10-25 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="defaultValue">The default value.</param>
|
|
/// <returns>System.String.</returns>
|
|
public static string ReplaceUserInfo(string defaultValue)
|
|
{
|
|
return ReplaceUserInfo(defaultValue, ERPInfo.Instance.EmployeeId+"", ERPInfo.Instance.EmployeeName, ERPInfo.Instance.GroupId, ERPInfo.Instance.Password);
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:替换userid、username、groupid</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-23 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="defaultValue">The default value.</param>
|
|
/// <param name="userId">The user identifier.</param>
|
|
/// <param name="userName">Name of the user.</param>
|
|
/// <param name="groupId">The group identifier.</param>
|
|
/// <returns>System.String.</returns>
|
|
public static string ReplaceUserInfo(string defaultValue, string userId, string userName, string groupId, string password)
|
|
{
|
|
return defaultValue = defaultValue.Replace(_loginid_key, userId, true)
|
|
.Replace(_loginname_key, userName, true)
|
|
.Replace(_groupid_key, groupId, true)
|
|
.Replace(_password_key, password, true)
|
|
//.Replace(_cj_key, ERPInfo.Instance.WorkCJ, true)
|
|
//.Replace(_jt_key, ERPInfo.Instance.WorkJT, true)
|
|
//.Replace(_bz_key, ERPInfo.Instance.WorkBZ, true)
|
|
//.Replace(_seriesId_id, ERPInfo.Instance.SeriesId, true)
|
|
//.Replace(_className_key, ERPInfo.Instance.ClassName, true)
|
|
.Replace(_logintype, "0", true);
|
|
//.Replace(_userCode_key, ERPInfo.Instance.LoginAccount, true);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:带参数替换为1=1</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-23 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <returns>System.String.</returns>
|
|
public static string ReplaceParam(string defaultValue)
|
|
{
|
|
try
|
|
{
|
|
if (SubstringCount(defaultValue, "#") > 1)
|
|
{
|
|
return defaultValue.Replace(defaultValue.Substring(defaultValue.IndexOf('#'), defaultValue.LastIndexOf('#') + 1 - defaultValue.IndexOf('#')), " 1=1 ");
|
|
}
|
|
else
|
|
{
|
|
return defaultValue;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return Regex.Replace(defaultValue, _replace_param, " 1=1 ");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:判断字符串出现次数</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期: </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="str">The string.</param>
|
|
/// <param name="substring">The substring.</param>
|
|
/// <returns>System.Int32.</returns>
|
|
private static int SubstringCount(string str, string substring)
|
|
{
|
|
if (str.Contains(substring))
|
|
{
|
|
string strReplaced = str.Replace(substring, "");
|
|
return (str.Length - strReplaced.Length) / substring.Length;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/// <summaryconta
|
|
/// <para>说明:替换树节点parentkey</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-09-04 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <returns>System.String.</returns>
|
|
public static string ReplaceTreeViewParentKeyCond(string defaultValue, string value)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(defaultValue)) return defaultValue;
|
|
|
|
return defaultValue.Replace(_replace_parent_key, value);
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:获取sql语句中替换</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-09-04 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <returns>List<System.String>.</returns>
|
|
public static List<string> GetParamFields(string defaultValue)
|
|
{
|
|
List<string> list = new List<string>();
|
|
Regex regex = new Regex(_replace_field_key);
|
|
MatchCollection mcs = regex.Matches(defaultValue);
|
|
foreach (Match item in mcs)
|
|
{
|
|
if (list.IndexOf(item.Value) == -1)
|
|
list.Add(item.Value);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:{key}字符串替换</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-05-28 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="key">The key.</param>
|
|
/// <param name="value">The value.</param>
|
|
/// <param name="ignoreCase">是否忽略大小写</param>
|
|
/// <returns>System.String.</returns>
|
|
public static string Replace(this string str, string key, string value, bool ignoreCase)
|
|
{
|
|
if (string.IsNullOrEmpty(str)) return str;
|
|
|
|
return Regex.IsMatch(str, key, RegexOptions.IgnoreCase) ?
|
|
System.Text.RegularExpressions.Regex.Replace(str, key, value, ignoreCase ? RegexOptions.IgnoreCase : RegexOptions.None)
|
|
: str;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:将{xxx}格式全部替换为某个值</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-12-01 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>l
|
|
/// <param name="defaultValue">The default value.</param>
|
|
/// <param name="value">The value.</param>
|
|
/// <returns>System.String.</returns>
|
|
public static string ReplaceParamToValue(string defaultValue, string value)
|
|
{
|
|
if (string.IsNullOrEmpty(defaultValue)) return defaultValue;
|
|
|
|
var fields = GetParamFields(defaultValue);
|
|
foreach (string item in fields)
|
|
{
|
|
defaultValue = defaultValue.Replace(item, value);
|
|
}
|
|
return defaultValue;
|
|
}
|
|
|
|
}
|
|
}
|