From 6eb901c8bd822c9133f9963e7d8c6b746cac7d93 Mon Sep 17 00:00:00 2001 From: wintel Date: Thu, 10 Apr 2025 00:37:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8A=82=E7=82=B9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E6=9D=83=E9=99=90=E5=A2=9E=E5=8A=A0=E6=8C=87=E5=AE=9Asql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/Flow/FlowNode.cs | 9 +++++---- OpenAuth.App/Flow/FlowRuntime.cs | 14 +++++++++++--- OpenAuth.App/FlowInstance/FlowInstanceApp.cs | 4 ++-- 3 files changed, 18 insertions(+), 9 deletions(-) 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);