| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- using Newtonsoft.Json.Linq;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Business.Core.Utilities
- {
- /// <summary>
- /// 通配符类
- /// </summary>
- public class Wildcard
- {
- /// <summary>
- /// 所有通配符
- /// </summary>
- private static readonly string[] Wildcards = new string[] {
- "{<UserId>}",//当前登录用户id
- "{<UserName>}",//当前登录用户姓名
- "{<UserAccount>}",//当前登录用户帐号
- "{<UserDeptId>}",//当前登录用户所在部门id
- "{<UserDeptName>}",//当前登录用户所在部门名称
- "{<UserStationId>}",//当前登录用户所在岗位id
- "{<UserStationName>}",//当前登录用户所在岗位名称
- "{<UserWorkGroupId>}",//当前登录用户所在工作组id(如果有多个英文逗号,分隔)
- "{<UserWorkGroupName>}",//当前登录用户所在工作组名称(如果有多个中文分号;分隔)
- "{<UserUnitId>}",//当前登录用户所在单位id
- "{<UserCompanyId>}",//当前登录用户所在单位id
- "{<UserUnitName>}",//当前用户所在单位名称
- "{<UserCompanyName>}",//当前用户所在单位名称
- "{<UserOrganize>}",//当前用户组织关系(示例:研发部 \ 产品开发组)
- "{<UserOrganizeRoot>}",//当前用户组织关系,包含根(示例:重庆云思维软件技术有限公司 \ 研发部 \ 产品开发组)
- "{<UserSign>}",//用户签章,如果设置有签章图片返回图片,否则返回用户姓名。
- "{<InitiatorId>}",//流程的发起者id
- "{<InitiatorName>}",//流程的发起者姓名
- "{<InitiatorDeptId>}",//流程发起者所在部门id
- "{<InitiatorDeptName>}",//流程发起者所在部门名称
- "{<InitiatorStationId>}",//流程发起者所在岗位id
- "{<InitiatorStationName>}",//流程发起者所在岗位名称
- "{<InitiatorUnitId>}",//流程发起者单位id
- "{<InitiatorUnitName>}",//流程发起者单位名称
- "{<ShortDate>}",//短日期格式yyyy-MM-dd
- "{<LongDate>}",//长日期格式yyyy年M月d日
- "{<ShortDateTime>}",//短日期时间格式yyyy-MM-dd HH:mm
- "{<LongDateTime>}",//长日期时间格式yyyy年M月d日 H时m分
- "{<ShortDateTimeSecond>}",//短日期时间格式yyyy-MM-dd HH:mm:ss
- "{<LongDateTimeSecond>}",//长日期时间格式yyyy年M月d日 H时m分s秒
- "{<FlowId>}",//流程id
- "{<FlowName>}",//流程名称
- "{<StepId>}",//步骤id
- "{<StepName>}",//步骤名称
- "{<TaskId>}",//任务id
- "{<TaskTitle>}",//任务标题
- "{<InstanceId>}",//实例id
- "{<GroupId>}",//实例分组id
- "{<LongId>}",//生成一个新的long数字id
- "{Query<",//Get获取Url中的参数值
- "{Form<",//Post获取提交的值
- "{Get<",//先Get如果没获取到再Post获取提交的值
- "{DataRow<",//object参数传一个DataRow获取其中key列的值
- "{DateTime<",//获取自定义格式的当前日期时间值,如{DateTime<yyyy-MM-dd HH:mm>}
- "{Method<",//执行一个方法返回值,方法参数为object参数
- "{JArray<",//从JArray中获取key列的值,多个用英文逗号分隔
- "{JObject<",//从JObject中获取key的值
- "{Json<",//从JObject中获取key的值和JObject功能相同
- "{FlowTask<",//从FlowTask实体类字段获取key字段的值
- "{User<",//从用户实体中获取key字段的值
- };
- /// <summary>
- /// 得到通配符的值
- /// </summary>
- /// <param name="wildcardKey">通配符key</param>
- /// <param name="obj">参数对象</param>
- /// <returns></returns>
- private static string GetValue(string wildcardKey, params object?[] objs)
- {
- if ("{<ShortDate>}".EqualsIgnoreCase(wildcardKey))
- {
- //短日期格式yyyy-MM-dd
- return DateTime.Now.ToString("yyyy-MM-dd");
- }
- else if ("{<LongDate>}".EqualsIgnoreCase(wildcardKey))
- {
- //长日期格式yyyy年M月d日
- return DateTime.Now.ToString("yyyy年M月d日");
- }
- else if ("{<ShortDateTime>}".EqualsIgnoreCase(wildcardKey))
- {
- //短日期时间格式yyyy-MM-dd HH:mm
- return DateTime.Now.ToString("yyyy-MM-dd HH:mm");
- }
- else if ("{<LongDateTime>}".EqualsIgnoreCase(wildcardKey))
- {
- //长日期时间格式yyyy年M月d日 H时m分
- return DateTime.Now.ToString("yyyy年M月d日 H时m分");
- }
- else if ("{<ShortDateTimeSecond>}".EqualsIgnoreCase(wildcardKey))
- {
- //短日期时间格式yyyy-MM-dd HH:mm:ss
- return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- }
- else if ("{<LongDateTimeSecond>}".EqualsIgnoreCase(wildcardKey))
- {
- //长日期时间格式yyyy年M月d日 H时m分s秒
- return DateTime.Now.ToString("yyyy年M月d日 H时m分s秒");
- }
- return string.Empty;
- }
- /// <summary>
- /// 替换通配符
- /// </summary>
- /// <param name="str">包含通配符的字符串</param>
- /// <param name="obj">包含通配符值的对象</param>
- /// <returns></returns>
- public static string Replace(string? str, params object?[] objs)
- {
- if (string.IsNullOrWhiteSpace(str))
- {
- return string.Empty;
- }
- foreach (string wildcardKey in Wildcards)
- {
- while (str.ContainsIgnoreCase(wildcardKey))
- {
- string wildcardKey1 = wildcardKey;
- string? value = string.Empty;
- //Get获取Url中的参数值
- if ("{DateTime<".EqualsIgnoreCase(wildcardKey))
- {
- string key = str.Substring(str.IndexOfIgnoreCase("{DateTime<") + 10);
- string key1 = key.Substring(0, key.IndexOf(">}"));
- if (!string.IsNullOrWhiteSpace(key1))
- {
- wildcardKey1 = wildcardKey + key1 + ">}";
- value = DateTime.Now.ToString(key1);
- }
- }
- else
- {
- value = GetValue(wildcardKey, objs);
- }
- str = str.ReplaceIgnoreCase(wildcardKey1, value);
- }
- }
- return str;
- }
- }
- }
|