diff --git a/OpenAuth.App/Flow/FlowNode.cs b/OpenAuth.App/Flow/FlowNode.cs
index beac3d40..478e6c9d 100644
--- a/OpenAuth.App/Flow/FlowNode.cs
+++ b/OpenAuth.App/Flow/FlowNode.cs
@@ -27,7 +27,6 @@
///
/// 节点的附加数据项
///
- /// The set information.
public Setinfo setInfo { get; set; }
}
@@ -36,6 +35,7 @@
public const string ALL_USER = "ALL_USER"; //所有用户
public const string SPECIAL_ROLE = "SPECIAL_ROLE"; //指定角色
public const string SPECIAL_USER = "SPECIAL_USER"; //指定用户
+ public const string SPECIAL_SQL = "SPECIAL_SQL"; //指定SQL
///
/// 连续多级直属上级
/// 不同于钉钉的各上级部门负责人审批,OpenAuth以用户的各级直属上级审批模式
@@ -101,12 +101,13 @@
///
/// 节点执行人
+ ///
+ /// 用一个类封装,因为datas存的是id,前端需要在类里面加一个Texts字段,用于显示具体的人或角色等
+ ///
///
public class Nodedesignatedata
{
- public string[] users { get; set; }
- public string[] roles { get; set; }
- public string[] orgs { get; set; }
+ public string[] datas { get; set; }
}
///
diff --git a/OpenAuth.App/Flow/FlowRuntime.cs b/OpenAuth.App/Flow/FlowRuntime.cs
index 2470f188..b2d349b4 100644
--- a/OpenAuth.App/Flow/FlowRuntime.cs
+++ b/OpenAuth.App/Flow/FlowRuntime.cs
@@ -680,7 +680,7 @@ namespace OpenAuth.App.Flow
}
var orgManagerApp = AutofacContainerModule.GetService();
- var chairmanIds = orgManagerApp.GetChairmanId(nextNode.setInfo.NodeDesignateData.orgs);
+ var chairmanIds = orgManagerApp.GetChairmanId(nextNode.setInfo.NodeDesignateData.datas);
makerList = GenericHelpers.ArrayToString(chairmanIds, makerList);
}
else
@@ -716,14 +716,22 @@ namespace OpenAuth.App.Flow
}
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER) //指定成员
{
- makerList = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.users, makerList);
+ makerList = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.datas, makerList);
}
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_ROLE) //指定角色
{
var revelanceApp = AutofacContainerModule.GetService();
- var users = revelanceApp.Get(Define.USERROLE, false, node.setInfo.NodeDesignateData.roles);
+ var users = revelanceApp.Get(Define.USERROLE, false, node.setInfo.NodeDesignateData.datas);
makerList = GenericHelpers.ArrayToString(users, makerList);
}
+ else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_SQL) //指定SQL
+ {
+ //如果是指定SQL,则需要执行SQL,并返回结果
+ var sql = node.setInfo.NodeDesignateData.datas[0];
+ var sugarClient = AutofacContainerModule.GetService();
+ var result = sugarClient.Ado.SqlQuery(sql);
+ makerList = GenericHelpers.ArrayToString(result, makerList);
+ }
else if (node.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_ROLE
|| node.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER)
{
diff --git a/OpenAuth.App/FlowInstance/FlowInstanceApp.cs b/OpenAuth.App/FlowInstance/FlowInstanceApp.cs
index 45ca7e3b..c5302dae 100644
--- a/OpenAuth.App/FlowInstance/FlowInstanceApp.cs
+++ b/OpenAuth.App/FlowInstance/FlowInstanceApp.cs
@@ -2,7 +2,7 @@
* @Author: yubaolee | ahfu~ <954478625@qq.com>
* @Date: 2024-12-13 16:55:17
* @Description: 工作流实例表操作
- * @LastEditTime: 2025-04-06 02:25:02
+ * @LastEditTime: 2025-04-10 00:02:15
* Copyright (c) 2024 by yubaolee | ahfu~ , All Rights Reserved.
*/
@@ -491,7 +491,7 @@ namespace OpenAuth.App
}
//如果是连续多级直属上级且还没到指定的角色,只改变执行人,不到下一个节点
- if (!wfruntime.currentNode.setInfo.NodeDesignateData.roles.Intersect(roles).Any())
+ if (!wfruntime.currentNode.setInfo.NodeDesignateData.datas.Intersect(roles).Any())
{
canNext = false;
var parentId = _userManagerApp.GetParent(tag.UserId);