fix: 修复会签节点审批

This commit is contained in:
yubaolee
2025-04-18 17:33:36 +08:00
parent 3eb94d7f21
commit d5249d8cb3
2 changed files with 74 additions and 58 deletions

View File

@@ -120,7 +120,7 @@ namespace OpenAuth.App.Flow
}
//URL表单暂时不支持URL表单
if(flowInstance.FrmType == Define.FORM_TYPE_URL) return lines[0].to;
if (flowInstance.FrmType == Define.FORM_TYPE_URL) return lines[0].to;
if (FrmData == "" || FrmData == "{}") return lines[0].to;
@@ -560,7 +560,7 @@ namespace OpenAuth.App.Flow
throw new Exception("流程已结束,不能撤销");
}
if(Nodes[previousId].type == Define.NODE_TYPE_START)
if (Nodes[previousId].type == Define.NODE_TYPE_START)
{
throw new Exception("没有任何审批,不能撤销!你可以删除或召回这个流程");
}
@@ -710,7 +710,7 @@ namespace OpenAuth.App.Flow
/// <returns></returns>
private string GetMultiInstanceNodeMakers(string nodeId)
{
if(GetNodeType(nodeId) != Define.NODE_TYPE_MULTI_INSTANCE)
if (GetNodeType(nodeId) != Define.NODE_TYPE_MULTI_INSTANCE)
{
throw new Exception("当前节点不是会签节点,请联系管理员");
}
@@ -719,7 +719,7 @@ namespace OpenAuth.App.Flow
string[] makerList = Array.Empty<string>(); // 执行人列表
var sugarClient = AutofacContainerModule.GetService<ISqlSugarClient>();
if (node.setInfo.NodeDesignate == Define.SPECIAL_USER) //指定成员
if (node.setInfo.NodeDesignate == Define.SPECIAL_USER) //指定用户
{
makerList = node.setInfo.NodeDesignateData.datas;
}
@@ -740,8 +740,12 @@ namespace OpenAuth.App.Flow
throw new Exception("会签节点,不支持该类型,请重新设计流程模板");
}
//写入到FlowApprover
var users = sugarClient.Queryable<SysUser>().Where(u => makerList.Contains(u.Id)).ToList();
//将所有的会签人员写入到FlowApprover,后续审批的时候,按加签的逻辑处理
var users = sugarClient.Queryable<SysUser>()
.Where(u => makerList.Contains(u.Id))
.ToList()
.OrderBy(u => Array.IndexOf(makerList, u.Id))
.ToList();
int order = 1;
foreach (var user in users)
{
@@ -759,6 +763,12 @@ namespace OpenAuth.App.Flow
};
sugarClient.Insertable(flowApprover).ExecuteCommand();
}
//如果是顺序执行,取第一个人
if (node.setInfo.NodeConfluenceType == Define.APPROVE_TYPE_SEQUENTIAL)
{
return makerList[0];
}
//否则并行且/并行或都是返回所有加签人
return GenericHelpers.ArrayToString(makerList, "");
}
@@ -822,7 +832,8 @@ namespace OpenAuth.App.Flow
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
private string ReplaceSql(string sql){
private string ReplaceSql(string sql)
{
var loginUser = AutofacContainerModule.GetService<IAuth>().GetCurrentUser();
var res = sql.Replace(Define.DATAPRIVILEGE_LOGINUSER, $"'{loginUser.User.Id}'");
res = res.Replace(Define.DATAPRIVILEGE_LOGINROLE, string.Join(',', loginUser.Roles.Select(u => $"'{u.Id}'")));

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-17 21:37:03
* @LastEditTime: 2025-04-18 17:30:07
* Copyright (c) 2024 by yubaolee | ahfu~ , All Rights Reserved.
*/
@@ -460,6 +460,11 @@ namespace OpenAuth.App
if (!isfinish) //如果没有完成,不能到下一步
{
canNext = false;
flowInstance.MakerList = GenericHelpers.ArrayToString(_flowApproverApp.GetApproverIds(new QueryApproverReq()
{
FlowInstanceId = flowInstance.Id,
ActivityId = flowInstance.ActivityId
}), "");
}
else if (approverInfo.ReturnToSignNode == null || !approverInfo.ReturnToSignNode.Value)
{