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>
/// <value>The set information.</value>
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
/// <summary>
/// 连续多级直属上级
/// <para>不同于钉钉的各上级部门负责人审批OpenAuth以用户的各级直属上级审批模式</para>
@@ -101,12 +101,13 @@
/// <summary>
/// 节点执行人
/// <para>
/// 用一个类封装因为datas存的是id,前端需要在类里面加一个Texts字段用于显示具体的人或角色等
/// </para>
/// </summary>
public class Nodedesignatedata
{
public string[] users { get; set; }
public string[] roles { get; set; }
public string[] orgs { get; set; }
public string[] datas { get; set; }
}
/// <summary>

View File

@@ -680,7 +680,7 @@ namespace OpenAuth.App.Flow
}
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);
}
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<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);
}
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
|| node.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER)
{

View File

@@ -2,7 +2,7 @@
* @Author: yubaolee <yubaolee@163.com> | 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);