|
@@ -1,6 +1,7 @@
|
|
|
using SqlSugar;
|
|
|
using XF.Domain.Entities;
|
|
|
using XF.Domain.Events;
|
|
|
+using XF.Domain.Extensions;
|
|
|
|
|
|
namespace XF.Domain.Repository;
|
|
|
|
|
@@ -142,27 +143,29 @@ public abstract class WorkflowEntity : FullStateEntity, IWorkflow
|
|
|
[SugarColumn(ColumnDataType = "varchar(1000)", IsJson = true)]
|
|
|
public List<string> AssignOrgCodes { get; set; } = new();
|
|
|
|
|
|
- [SugarColumn(ColumnDataType = "varchar(2000)", IsJson = true)]
|
|
|
+ [SugarColumn(ColumnDataType = "longtext", IsJson = true)]
|
|
|
public List<string> AssignUserIds { get; set; } = new();
|
|
|
|
|
|
- [SugarColumn(ColumnDataType = "varchar(600)", IsJson = true)]
|
|
|
- public List<string> AssignRoles { get; set; } = new();
|
|
|
+ //[SugarColumn(ColumnDataType = "varchar(600)", IsJson = true)]
|
|
|
+ //public List<string> AssignRoles { get; set; } = new();
|
|
|
|
|
|
public void Assign(EFlowAssignType type, string handler)
|
|
|
{
|
|
|
switch (type)
|
|
|
{
|
|
|
case EFlowAssignType.Org:
|
|
|
- if (!AssignOrgCodes.Exists(d => d == handler))
|
|
|
- AssignOrgCodes.Add(handler);
|
|
|
+ var orgCodes = handler.GetHigherOrgCodes(true).ToList();
|
|
|
+ AssignOrgCodes.AddRange(orgCodes);
|
|
|
+ AssignOrgCodes = AssignOrgCodes.Distinct().ToList();
|
|
|
break;
|
|
|
case EFlowAssignType.User:
|
|
|
if (!AssignUserIds.Exists(d => d == handler))
|
|
|
AssignUserIds.Add(handler);
|
|
|
break;
|
|
|
case EFlowAssignType.Role:
|
|
|
- if (!AssignRoles.Exists(d => d == handler))
|
|
|
- AssignRoles.Add(handler);
|
|
|
+ //if (!AssignRoles.Exists(d => d == handler))
|
|
|
+ // AssignRoles.Add(handler);
|
|
|
+ throw new NotImplementedException();
|
|
|
break;
|
|
|
default:
|
|
|
throw new ArgumentOutOfRangeException(nameof(type), type, null);
|
|
@@ -174,7 +177,8 @@ public abstract class WorkflowEntity : FullStateEntity, IWorkflow
|
|
|
switch (type)
|
|
|
{
|
|
|
case EFlowAssignType.Org:
|
|
|
- AssignOrgCodes.AddRange(handlers);
|
|
|
+ var orgCodes = handlers.SelectMany(d => d.GetHigherOrgCodes(true)).ToList();
|
|
|
+ AssignOrgCodes.AddRange(orgCodes);
|
|
|
AssignOrgCodes = AssignOrgCodes.Distinct().ToList();
|
|
|
break;
|
|
|
case EFlowAssignType.User:
|
|
@@ -182,8 +186,9 @@ public abstract class WorkflowEntity : FullStateEntity, IWorkflow
|
|
|
AssignUserIds = AssignUserIds.Distinct().ToList();
|
|
|
break;
|
|
|
case EFlowAssignType.Role:
|
|
|
- AssignRoles.AddRange(handlers);
|
|
|
- AssignRoles = AssignRoles.Distinct().ToList();
|
|
|
+ //AssignRoles.AddRange(handlers);
|
|
|
+ //AssignRoles = AssignRoles.Distinct().ToList();
|
|
|
+ throw new NotImplementedException();
|
|
|
break;
|
|
|
default:
|
|
|
throw new ArgumentOutOfRangeException(nameof(type), type, null);
|
|
@@ -235,27 +240,29 @@ public abstract class PositionWorkflowEntity : PositionEntity, IWorkflow
|
|
|
[SugarColumn(ColumnDataType = "varchar(1000)", IsJson = true)]
|
|
|
public List<string> AssignOrgCodes { get; set; } = new();
|
|
|
|
|
|
- [SugarColumn(ColumnDataType = "varchar(2000)", IsJson = true)]
|
|
|
+ [SugarColumn(ColumnDataType = "longtext", IsJson = true)]
|
|
|
public List<string> AssignUserIds { get; set; } = new();
|
|
|
|
|
|
- [SugarColumn(ColumnDataType = "varchar(600)", IsJson = true)]
|
|
|
- public List<string> AssignRoles { get; set; } = new();
|
|
|
+ //[SugarColumn(ColumnDataType = "varchar(600)", IsJson = true)]
|
|
|
+ //public List<string> AssignRoles { get; set; } = new();
|
|
|
|
|
|
public void Assign(EFlowAssignType type, string handler)
|
|
|
{
|
|
|
switch (type)
|
|
|
{
|
|
|
case EFlowAssignType.Org:
|
|
|
- if (!AssignOrgCodes.Exists(d => d == handler))
|
|
|
- AssignOrgCodes.Add(handler);
|
|
|
+ var orgCodes = handler.GetHigherOrgCodes(true).ToList();
|
|
|
+ AssignOrgCodes.AddRange(orgCodes);
|
|
|
+ AssignOrgCodes = AssignOrgCodes.Distinct().ToList();
|
|
|
break;
|
|
|
case EFlowAssignType.User:
|
|
|
if (!AssignUserIds.Exists(d => d == handler))
|
|
|
AssignUserIds.Add(handler);
|
|
|
break;
|
|
|
case EFlowAssignType.Role:
|
|
|
- if (!AssignRoles.Exists(d => d == handler))
|
|
|
- AssignRoles.Add(handler);
|
|
|
+ //if (!AssignRoles.Exists(d => d == handler))
|
|
|
+ // AssignRoles.Add(handler);
|
|
|
+ throw new NotImplementedException();
|
|
|
break;
|
|
|
default:
|
|
|
throw new ArgumentOutOfRangeException(nameof(type), type, null);
|
|
@@ -267,7 +274,8 @@ public abstract class PositionWorkflowEntity : PositionEntity, IWorkflow
|
|
|
switch (type)
|
|
|
{
|
|
|
case EFlowAssignType.Org:
|
|
|
- AssignOrgCodes.AddRange(handlers);
|
|
|
+ var orgCodes = handlers.SelectMany(d => d.GetHigherOrgCodes(true)).ToList();
|
|
|
+ AssignOrgCodes.AddRange(orgCodes);
|
|
|
AssignOrgCodes = AssignOrgCodes.Distinct().ToList();
|
|
|
break;
|
|
|
case EFlowAssignType.User:
|
|
@@ -275,8 +283,9 @@ public abstract class PositionWorkflowEntity : PositionEntity, IWorkflow
|
|
|
AssignUserIds = AssignUserIds.Distinct().ToList();
|
|
|
break;
|
|
|
case EFlowAssignType.Role:
|
|
|
- AssignRoles.AddRange(handlers);
|
|
|
- AssignRoles = AssignRoles.Distinct().ToList();
|
|
|
+ //AssignRoles.AddRange(handlers);
|
|
|
+ //AssignRoles = AssignRoles.Distinct().ToList();
|
|
|
+ throw new NotImplementedException();
|
|
|
break;
|
|
|
default:
|
|
|
throw new ArgumentOutOfRangeException(nameof(type), type, null);
|