LogicCacheNodeHelper.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using System.Data;
  2. using System.Text.RegularExpressions;
  3. using Common;
  4. using Infrastructure;
  5. using LitJson;
  6. using Model;
  7. using Model.Custom;
  8. using Model.Source;
  9. namespace Util.Logic
  10. {
  11. public class LogicCacheNodeHelper
  12. {
  13. /// <summary>
  14. /// 设置Redis对象节点
  15. /// </summary>
  16. /// <param name="node">节点数据</param>
  17. /// <param name="paramList">参数列表</param>
  18. /// <param name="parentNodeParamList">父节点参数列表</param>
  19. public static void setRedisObject(NodeList node, List<ParamList> paramList, List<LogItem> logDic)
  20. {
  21. Dictionary<string, object> condi = new Dictionary<string, object>(); // 条件参数字典
  22. JsonData nodeData = node.nodeData;
  23. JsonData redisObjectFields = nodeData["data"]["formData"]["output"]["value"]; // Redis对象参数字段
  24. string paramAttribute = "";
  25. if (nodeData.ToJson().Contains("\"parentNode\""))
  26. {
  27. paramAttribute = "iterationInputField";
  28. }
  29. foreach (JsonData item in redisObjectFields)
  30. {
  31. string paramName = item["label"].ToString(); // Redis对象参数字段名
  32. MatchCollection matches = Regex.Matches(paramName, "\\$\\{.*?\\}");
  33. if(matches.Count > 0)
  34. {
  35. foreach(Match match in matches)
  36. {
  37. string key = match.Value.Replace("${", "").Replace("}", "");
  38. string value = paramList.FirstOrDefault(x => x.paramName == key && x.paramAttribute == paramAttribute).paramValue;
  39. paramName = paramName.Replace(match.Value, value);
  40. }
  41. }
  42. string paramValue = item["value"].ToString(); // Redis对象参数字段值
  43. if(paramValue.Contains("."))
  44. {
  45. paramValue = paramValue.Substring(paramValue.LastIndexOf(".") + 1);
  46. var param = paramList.FirstOrDefault(x => x.paramName == paramValue && x.paramAttribute == paramAttribute) ?? paramList.FirstOrDefault(x => x.paramName == paramValue) ?? new ParamList();
  47. paramValue = param.paramValue;
  48. }// 聚合字段类型
  49. RedisServer.Cache.Set("redisObject:" + paramName, paramValue);
  50. }
  51. logDic.Add(new LogItem()
  52. {
  53. title = node.nodeData["data"]["nodeMeta"]["label"].ToString(),
  54. param = condi
  55. });
  56. }
  57. /// <summary>
  58. /// 获取Redis对象节点
  59. /// </summary>
  60. /// <param name="node">节点数据</param>
  61. /// <param name="paramList">参数列表</param>
  62. /// <param name="parentNodeParamList">父节点参数列表</param>
  63. public static void getRedisObject(NodeList node, List<ParamList> paramList, List<LogItem> logDic)
  64. {
  65. Dictionary<string, object> condi = new Dictionary<string, object>(); // 条件参数字典
  66. JsonData nodeData = node.nodeData;
  67. JsonData redisObjectFields = nodeData["data"]["formData"]["output"]["value"]; // Redis对象参数字段
  68. string paramAttribute = "";
  69. if (nodeData.ToJson().Contains("\"parentNode\""))
  70. {
  71. paramAttribute = "iterationInputField";
  72. }
  73. foreach (JsonData item in redisObjectFields)
  74. {
  75. string paramName = item["label"].ToString(); // Redis对象参数字段名
  76. string paramFieldName = paramName; // 字段名
  77. MatchCollection matches = Regex.Matches(paramName, "\\$\\{.*?\\}");
  78. if(matches.Count > 0)
  79. {
  80. foreach(Match match in matches)
  81. {
  82. string key = match.Value.Replace("${", "").Replace("}", "");
  83. var paramObj = paramList.FirstOrDefault(x => x.paramName == key && x.paramAttribute == paramAttribute);
  84. string value = paramObj.paramValue;
  85. paramName = paramName.Replace(match.Value, value);
  86. paramFieldName = paramFieldName.Replace(match.Value, key);
  87. }
  88. }
  89. string paramType = item["type"][0].ToString(); // 字段类型
  90. string getValue = RedisServer.Cache.Get("redisObject:" + paramName);
  91. if(paramType == "number") getValue = Function.CheckNum(getValue);
  92. var param = paramList.FirstOrDefault(x => x.paramName == paramName && x.paramAttribute == paramAttribute);
  93. if(param == null)
  94. {
  95. paramList.Add(new ParamList()
  96. {
  97. nodeId = node.nodeId,
  98. paramAttribute = paramAttribute,
  99. paramName = paramFieldName,
  100. paramValue = getValue,
  101. paramType = paramType
  102. });
  103. }
  104. else
  105. {
  106. param.paramValue = getValue;
  107. }
  108. condi.Add(paramFieldName, getValue);
  109. }
  110. logDic.Add(new LogItem()
  111. {
  112. title = node.nodeData["data"]["nodeMeta"]["label"].ToString(),
  113. param = condi
  114. });
  115. }
  116. }
  117. }