refactor: 优化代码结构

This commit is contained in:
wintel
2025-04-17 00:05:49 +08:00
parent daf7273537
commit ac72a26313
5 changed files with 95 additions and 75 deletions

View File

@@ -5,11 +5,6 @@
/// </summary>
public class FlowNode
{
public const string START = "start round mix";
public const string END = "end round";
public const string NODE = "node";
public const string FORK = "fork"; //会签开始节点
public const string JOIN = "join"; //会签结束节点
public string id { get; set; }
@@ -32,27 +27,7 @@
public class Setinfo
{
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>
/// </summary>
public const string RUNTIME_MANY_PARENTS = "RUNTIME_MANY_PARENTS";
/// <summary>
/// 部门负责人
/// </summary>
public const string RUNTIME_CHAIRMAN = "RUNTIME_CHAIRMAN";
/// <summary>
/// 上一节点执行人的直属上级
/// </summary>
public const string RUNTIME_PARENT = "RUNTIME_PARENT";
public const string RUNTIME_SPECIAL_ROLE = "RUNTIME_SPECIAL_ROLE"; //运行时指定角色
public const string RUNTIME_SPECIAL_USER = "RUNTIME_SPECIAL_USER"; //运行时指定用户
/// <summary>
/// 节点执行权限类型
/// </summary>

View File

@@ -71,7 +71,7 @@ namespace OpenAuth.App.Flow
Nodes.Add(node.id, node);
}
if (node.type == FlowNode.START)
if (node.type == Define.NODE_TYPE_START)
{
this.startNodeId = node.id;
}
@@ -174,16 +174,16 @@ namespace OpenAuth.App.Flow
switch (Nodes[nodeId].type)
{
//会签开始节点
case FlowNode.FORK:
case Define.NODE_TYPE_FORK:
return 0;
//会签结束节点
case FlowNode.JOIN:
case Define.NODE_TYPE_JOIN:
return 1;
//结束节点
case FlowNode.END:
case Define.NODE_TYPE_END:
return 4;
//开始节点
case FlowNode.START:
case Define.NODE_TYPE_START:
return 3;
default:
@@ -234,7 +234,7 @@ namespace OpenAuth.App.Flow
{
if (tag.Taged == (int)TagState.Ok)
{
if (nextNode.type == FlowNode.JOIN) //下一个节点是会签结束,则该线路结束
if (nextNode.type == Define.NODE_TYPE_JOIN) //下一个节点是会签结束,则该线路结束
{
res = GetNextNodeId(nextNode.id);
}
@@ -277,7 +277,7 @@ namespace OpenAuth.App.Flow
}
else if (tag.Taged == (int)TagState.Ok)
{
if (nextNode.type == FlowNode.JOIN) //这种模式下只有坚持到【会签结束】节点之前才有意义,是否需要判定这条线所有的节点都通过,不然直接执行这个节点??
if (nextNode.type == Define.NODE_TYPE_JOIN) //这种模式下只有坚持到【会签结束】节点之前才有意义,是否需要判定这条线所有的节点都通过,不然直接执行这个节点??
{
if (forkNode.setInfo.ConfluenceOk == null)
{
@@ -533,7 +533,7 @@ namespace OpenAuth.App.Flow
result = tag.Taged, //1通过;2不通过3驳回
description = tag.Description,
execTime = tag.TagedTime,
isFinish = node.type == FlowNode.END
isFinish = node.type == Define.NODE_TYPE_END
};
var url = node.setInfo.ThirdPartyUrl;
@@ -568,7 +568,7 @@ namespace OpenAuth.App.Flow
throw new Exception("流程已结束,不能撤销");
}
if(Nodes[previousId].type == FlowNode.START)
if(Nodes[previousId].type == Define.NODE_TYPE_START)
{
throw new Exception("没有任何审批,不能撤销!你可以删除或召回这个流程");
}
@@ -628,7 +628,7 @@ namespace OpenAuth.App.Flow
{
makerList = GetForkNodeMakers(nextNodeId);
}
else if (nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_ROLE)
else if (nextNode.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_ROLE)
{
//如果是运行时指定角色
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
@@ -640,7 +640,7 @@ namespace OpenAuth.App.Flow
var users = revelanceApp.Get(Define.USERROLE, false, request.NodeDesignates);
makerList = GenericHelpers.ArrayToString(users, makerList);
}
else if (nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER)
else if (nextNode.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_USER)
{
//如果是运行时指定用户
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
@@ -650,7 +650,7 @@ namespace OpenAuth.App.Flow
makerList = GenericHelpers.ArrayToString(request.NodeDesignates, makerList);
}
else if (nextNode.setInfo.NodeDesignate == Setinfo.SPECIAL_SQL)
else if (nextNode.setInfo.NodeDesignate == Define.SPECIAL_SQL)
{
//如果是指定SQL
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
@@ -663,8 +663,8 @@ namespace OpenAuth.App.Flow
var result = sugarClient.Ado.SqlQuery<string>(sql);
makerList = GenericHelpers.ArrayToString(result, makerList);
}
else if (nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_PARENT
|| nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_MANY_PARENTS)
else if (nextNode.setInfo.NodeDesignate == Define.RUNTIME_PARENT
|| nextNode.setInfo.NodeDesignate == Define.RUNTIME_MANY_PARENTS)
{
//如果是上一节点执行人的直属上级或连续多级直属上级
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
@@ -684,7 +684,7 @@ namespace OpenAuth.App.Flow
makerList = GenericHelpers.ArrayToString(new[] { parentId }, makerList);
}
else if (nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_CHAIRMAN)
else if (nextNode.setInfo.NodeDesignate == Define.RUNTIME_CHAIRMAN)
{
//如果是发起人的部门负责人
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
@@ -716,28 +716,28 @@ namespace OpenAuth.App.Flow
public string GetNodeMarkers(FlowNode node, string flowinstanceCreateUserId = "")
{
string makerList = "";
if (node.type == FlowNode.START && (!string.IsNullOrEmpty(flowinstanceCreateUserId))) //如果是开始节点,通常情况下是驳回到开始了
if (node.type == Define.NODE_TYPE_START && (!string.IsNullOrEmpty(flowinstanceCreateUserId))) //如果是开始节点,通常情况下是驳回到开始了
{
makerList = flowinstanceCreateUserId;
}
else if (node.setInfo != null)
{
if (string.IsNullOrEmpty(node.setInfo.NodeDesignate) ||
node.setInfo.NodeDesignate == Setinfo.ALL_USER) //所有成员
node.setInfo.NodeDesignate == Define.ALL_USER) //所有成员
{
makerList = "1";
}
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER) //指定成员
else if (node.setInfo.NodeDesignate == Define.SPECIAL_USER) //指定成员
{
makerList = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.datas, makerList);
}
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_ROLE) //指定角色
else if (node.setInfo.NodeDesignate == Define.SPECIAL_ROLE) //指定角色
{
var revelanceApp = AutofacContainerModule.GetService<RevelanceManagerApp>();
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
else if (node.setInfo.NodeDesignate == Define.SPECIAL_SQL) //指定SQL
{
//如果是指定SQL则需要执行SQL并返回结果
var sql = ReplaceSql(node.setInfo.NodeDesignateData.datas[0]);
@@ -745,8 +745,8 @@ namespace OpenAuth.App.Flow
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)
else if (node.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_ROLE
|| node.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_USER)
{
//如果是运行时选定的用户,则暂不处理。由上个节点审批时选定
}
@@ -798,7 +798,7 @@ namespace OpenAuth.App.Flow
}
node = GetNextNode(node.id);
} while (node.type != FlowNode.JOIN);
} while (node.type != Define.NODE_TYPE_JOIN);
return canCheckId;
}
@@ -837,7 +837,7 @@ namespace OpenAuth.App.Flow
{
if (node.setInfo != null && node.setInfo.Taged != null)
{
if (node.type != FlowNode.FORK && node.setInfo.Taged != (int)TagState.Ok) //如果节点是不同意或驳回,则不用再找了
if (node.type != Define.NODE_TYPE_FORK && node.setInfo.Taged != (int)TagState.Ok) //如果节点是不同意或驳回,则不用再找了
{
break;
}
@@ -864,7 +864,7 @@ namespace OpenAuth.App.Flow
markers += marker;
break;
} while (node.type != FlowNode.JOIN);
} while (node.type != Define.NODE_TYPE_JOIN);
return markers;
}

View File

@@ -477,7 +477,7 @@ namespace OpenAuth.App
}
}
if (wfruntime.currentNode.setInfo.NodeDesignate == Setinfo.RUNTIME_MANY_PARENTS)
if (wfruntime.currentNode.setInfo.NodeDesignate == Define.RUNTIME_MANY_PARENTS)
{
List<string> roles;
if (user.Id != tag.UserId)
@@ -619,8 +619,8 @@ namespace OpenAuth.App
/// <exception cref="Exception"></exception>
private void CheckNodeDesignate(NodeDesignateReq request)
{
if ((request.NodeDesignateType == Setinfo.RUNTIME_SPECIAL_ROLE
|| request.NodeDesignateType == Setinfo.RUNTIME_SPECIAL_USER) && request.NodeDesignates.Length == 0)
if ((request.NodeDesignateType == Define.RUNTIME_SPECIAL_ROLE
|| request.NodeDesignateType == Define.RUNTIME_SPECIAL_USER) && request.NodeDesignates.Length == 0)
{
throw new Exception("下个节点需要选择执行人或执行角色");
}
@@ -860,8 +860,8 @@ namespace OpenAuth.App
var wfruntime = new FlowRuntime(flowInstance);
var user = _auth.GetCurrentUser();
if (wfruntime.nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER
|| wfruntime.nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_ROLE)
if (wfruntime.nextNode.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_USER
|| wfruntime.nextNode.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_ROLE)
{
throw new Exception("暂不支持【第二执行节点为运行时指定角色/账号执行】的流程恢复");
}