| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- using System.Data;
- using System.Text.RegularExpressions;
- using Common;
- using Infrastructure;
- using LitJson;
- using Model;
- using Model.Custom;
- using Model.Source;
- namespace Util.Logic
- {
- public class LogicCacheNodeHelper
- {
- /// <summary>
- /// 设置Redis对象节点
- /// </summary>
- /// <param name="node">节点数据</param>
- /// <param name="paramList">参数列表</param>
- /// <param name="parentNodeParamList">父节点参数列表</param>
- public static void setRedisObject(NodeList node, List<ParamList> paramList, List<LogItem> logDic)
- {
- Dictionary<string, object> condi = new Dictionary<string, object>(); // 条件参数字典
- JsonData nodeData = node.nodeData;
- JsonData redisObjectFields = nodeData["data"]["formData"]["output"]["value"]; // Redis对象参数字段
- string paramAttribute = "";
- if (nodeData.ToJson().Contains("\"parentNode\""))
- {
- paramAttribute = "iterationInputField";
- }
- foreach (JsonData item in redisObjectFields)
- {
- string paramName = item["label"].ToString(); // Redis对象参数字段名
- MatchCollection matches = Regex.Matches(paramName, "\\$\\{.*?\\}");
- if(matches.Count > 0)
- {
- foreach(Match match in matches)
- {
- string key = match.Value.Replace("${", "").Replace("}", "");
- string value = paramList.FirstOrDefault(x => x.paramName == key && x.paramAttribute == paramAttribute).paramValue;
- paramName = paramName.Replace(match.Value, value);
- }
- }
-
- string paramValue = item["value"].ToString(); // Redis对象参数字段值
- if(paramValue.Contains("."))
- {
- paramValue = paramValue.Substring(paramValue.LastIndexOf(".") + 1);
- var param = paramList.FirstOrDefault(x => x.paramName == paramValue && x.paramAttribute == paramAttribute) ?? paramList.FirstOrDefault(x => x.paramName == paramValue) ?? new ParamList();
- paramValue = param.paramValue;
- }// 聚合字段类型
- RedisServer.Cache.Set("redisObject:" + paramName, paramValue);
- }
- logDic.Add(new LogItem()
- {
- title = node.nodeData["data"]["nodeMeta"]["label"].ToString(),
- param = condi
- });
- }
- /// <summary>
- /// 获取Redis对象节点
- /// </summary>
- /// <param name="node">节点数据</param>
- /// <param name="paramList">参数列表</param>
- /// <param name="parentNodeParamList">父节点参数列表</param>
- public static void getRedisObject(NodeList node, List<ParamList> paramList, List<LogItem> logDic)
- {
- Dictionary<string, object> condi = new Dictionary<string, object>(); // 条件参数字典
- JsonData nodeData = node.nodeData;
- JsonData redisObjectFields = nodeData["data"]["formData"]["output"]["value"]; // Redis对象参数字段
- string paramAttribute = "";
- if (nodeData.ToJson().Contains("\"parentNode\""))
- {
- paramAttribute = "iterationInputField";
- }
- foreach (JsonData item in redisObjectFields)
- {
- string paramName = item["label"].ToString(); // Redis对象参数字段名
- string paramFieldName = paramName; // 字段名
- MatchCollection matches = Regex.Matches(paramName, "\\$\\{.*?\\}");
- if(matches.Count > 0)
- {
- foreach(Match match in matches)
- {
- string key = match.Value.Replace("${", "").Replace("}", "");
- var paramObj = paramList.FirstOrDefault(x => x.paramName == key && x.paramAttribute == paramAttribute);
- string value = paramObj.paramValue;
- paramName = paramName.Replace(match.Value, value);
- paramFieldName = paramFieldName.Replace(match.Value, key);
- }
- }
- string paramType = item["type"][0].ToString(); // 字段类型
- string getValue = RedisServer.Cache.Get("redisObject:" + paramName);
- if(paramType == "number") getValue = Function.CheckNum(getValue);
- var param = paramList.FirstOrDefault(x => x.paramName == paramName && x.paramAttribute == paramAttribute);
- if(param == null)
- {
- paramList.Add(new ParamList()
- {
- nodeId = node.nodeId,
- paramAttribute = paramAttribute,
- paramName = paramFieldName,
- paramValue = getValue,
- paramType = paramType
- });
- }
- else
- {
- param.paramValue = getValue;
- }
- condi.Add(paramFieldName, getValue);
- }
- logDic.Add(new LogItem()
- {
- title = node.nodeData["data"]["nodeMeta"]["label"].ToString(),
- param = condi
- });
- }
- }
- }
|