feat: 节点执行权限增加指定sql

This commit is contained in:
wintel
2025-04-10 00:37:04 +08:00
parent 7cd9d740c7
commit 6eb901c8bd
3 changed files with 18 additions and 9 deletions

View File

@@ -27,7 +27,6 @@
/// <summary> /// <summary>
/// 节点的附加数据项 /// 节点的附加数据项
/// </summary> /// </summary>
/// <value>The set information.</value>
public Setinfo setInfo { get; set; } public Setinfo setInfo { get; set; }
} }
@@ -36,6 +35,7 @@
public const string ALL_USER = "ALL_USER"; //所有用户 public const string ALL_USER = "ALL_USER"; //所有用户
public const string SPECIAL_ROLE = "SPECIAL_ROLE"; //指定角色 public const string SPECIAL_ROLE = "SPECIAL_ROLE"; //指定角色
public const string SPECIAL_USER = "SPECIAL_USER"; //指定用户 public const string SPECIAL_USER = "SPECIAL_USER"; //指定用户
public const string SPECIAL_SQL = "SPECIAL_SQL"; //指定SQL
/// <summary> /// <summary>
/// 连续多级直属上级 /// 连续多级直属上级
/// <para>不同于钉钉的各上级部门负责人审批OpenAuth以用户的各级直属上级审批模式</para> /// <para>不同于钉钉的各上级部门负责人审批OpenAuth以用户的各级直属上级审批模式</para>
@@ -101,12 +101,13 @@
/// <summary> /// <summary>
/// 节点执行人 /// 节点执行人
/// <para>
/// 用一个类封装因为datas存的是id,前端需要在类里面加一个Texts字段用于显示具体的人或角色等
/// </para>
/// </summary> /// </summary>
public class Nodedesignatedata public class Nodedesignatedata
{ {
public string[] users { get; set; } public string[] datas { get; set; }
public string[] roles { get; set; }
public string[] orgs { get; set; }
} }
/// <summary> /// <summary>

View File

@@ -680,7 +680,7 @@ namespace OpenAuth.App.Flow
} }
var orgManagerApp = AutofacContainerModule.GetService<OrgManagerApp>(); var orgManagerApp = AutofacContainerModule.GetService<OrgManagerApp>();
var chairmanIds = orgManagerApp.GetChairmanId(nextNode.setInfo.NodeDesignateData.orgs); var chairmanIds = orgManagerApp.GetChairmanId(nextNode.setInfo.NodeDesignateData.datas);
makerList = GenericHelpers.ArrayToString(chairmanIds, makerList); makerList = GenericHelpers.ArrayToString(chairmanIds, makerList);
} }
else else
@@ -716,14 +716,22 @@ namespace OpenAuth.App.Flow
} }
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER) //指定成员 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) //指定角色 else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_ROLE) //指定角色
{ {
var revelanceApp = AutofacContainerModule.GetService<RevelanceManagerApp>(); var revelanceApp = AutofacContainerModule.GetService<RevelanceManagerApp>();
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); 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<ISqlSugarClient>();
var result = sugarClient.Ado.SqlQuery<string>(sql);
makerList = GenericHelpers.ArrayToString(result, makerList);
}
else if (node.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_ROLE else if (node.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_ROLE
|| node.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER) || node.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER)
{ {

View File

@@ -2,7 +2,7 @@
* @Author: yubaolee <yubaolee@163.com> | ahfu~ <954478625@qq.com> * @Author: yubaolee <yubaolee@163.com> | ahfu~ <954478625@qq.com>
* @Date: 2024-12-13 16:55:17 * @Date: 2024-12-13 16:55:17
* @Description: 工作流实例表操作 * @Description: 工作流实例表操作
* @LastEditTime: 2025-04-06 02:25:02 * @LastEditTime: 2025-04-10 00:02:15
* Copyright (c) 2024 by yubaolee | ahfu~ , All Rights Reserved. * 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; canNext = false;
var parentId = _userManagerApp.GetParent(tag.UserId); var parentId = _userManagerApp.GetParent(tag.UserId);