Files
lserp_cs_5.0/插件库/Lskj.PubPower/ReplaceHelper.cs
T
2026-07-10 15:25:05 +08:00

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&lt;System.String&gt;.</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;
}
}
}