|
@@ -147,25 +147,25 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
current.RequiredUserId, current.RequiredOrgId,
|
|
current.RequiredUserId, current.RequiredOrgId,
|
|
externalId, cancellationToken);
|
|
externalId, cancellationToken);
|
|
|
|
|
|
- //var startStepHandles = new List<WorkflowStepHandler>{WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId,
|
|
|
|
- // EFlowAssignType.User, current.RequiredUserId, current.UserName,
|
|
|
|
- // current.RequiredOrgId, current.OrgName)};
|
|
|
|
-
|
|
|
|
- var defineHandler = startStepDefine.HandlerTypeItems.First();
|
|
|
|
- var startStep = _workflowDomainService.CreateStartStep(workflow, startStepDefine, dto,
|
|
|
|
- new FlowStepHandler
|
|
|
|
- {
|
|
|
|
- Key = current.RequiredUserId,
|
|
|
|
- Value = current.UserName,
|
|
|
|
- UserId = current.UserId,
|
|
|
|
- Username = current.UserName,
|
|
|
|
- OrgId = current.RequiredOrgId,
|
|
|
|
- OrgName = current.OrgName,
|
|
|
|
- RoleId = defineHandler.Key,
|
|
|
|
- RoleName = defineHandler.Value,
|
|
|
|
- }, expiredTime);
|
|
|
|
-
|
|
|
|
- var flowAssignInfo =
|
|
|
|
|
|
+ //var startStepHandles = new List<WorkflowStepHandler>{WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId,
|
|
|
|
+ // EFlowAssignType.User, current.RequiredUserId, current.UserName,
|
|
|
|
+ // current.RequiredOrgId, current.OrgName)};
|
|
|
|
+
|
|
|
|
+ var defineHandler = startStepDefine.HandlerTypeItems.First();
|
|
|
|
+ var startStep = _workflowDomainService.CreateStartStep(workflow, startStepDefine, dto,
|
|
|
|
+ new FlowStepHandler
|
|
|
|
+ {
|
|
|
|
+ Key = current.RequiredUserId,
|
|
|
|
+ Value = current.UserName,
|
|
|
|
+ UserId = current.UserId,
|
|
|
|
+ Username = current.UserName,
|
|
|
|
+ OrgId = current.RequiredOrgId,
|
|
|
|
+ OrgName = current.OrgName,
|
|
|
|
+ RoleId = defineHandler.Key,
|
|
|
|
+ RoleName = defineHandler.Value,
|
|
|
|
+ }, expiredTime);
|
|
|
|
+
|
|
|
|
+ var flowAssignInfo =
|
|
await GetNextStepFlowAssignInfoAsync(workflow, startStep, dto, firstStepDefine, isNextDynamic, cancellationToken);
|
|
await GetNextStepFlowAssignInfoAsync(workflow, startStep, dto, firstStepDefine, isNextDynamic, cancellationToken);
|
|
|
|
|
|
//var firstStepHandlers = await GetNextStepHandlersAsync(workflow, firstStepDefine, dto, cancellationToken);
|
|
//var firstStepHandlers = await GetNextStepHandlersAsync(workflow, firstStepDefine, dto, cancellationToken);
|
|
@@ -318,7 +318,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 撤回至任意节点
|
|
/// 撤回至任意节点
|
|
/// </summary>
|
|
/// </summary>
|
|
- public async Task RecallAsync(RecallDto dto, DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
|
|
|
+ public async Task RecallAsync(RecallDto dto, DateTime? expiredTime, bool isOrderFiled, CancellationToken cancellationToken)
|
|
{
|
|
{
|
|
var validator = new RecallDtoValidator();
|
|
var validator = new RecallDtoValidator();
|
|
var validationResult = await validator.ValidateAsync(dto, cancellationToken);
|
|
var validationResult = await validator.ValidateAsync(dto, cancellationToken);
|
|
@@ -339,7 +339,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
|
|
|
//var stepHandlers = await GetNextStepHandlersAsync(workflow, targetStepDefine, dto, cancellationToken);
|
|
//var stepHandlers = await GetNextStepHandlersAsync(workflow, targetStepDefine, dto, cancellationToken);
|
|
|
|
|
|
- await _workflowDomainService.RecallAsync(workflow, dto, targetStepDefine, flowAssignInfo, expiredTime, cancellationToken);
|
|
|
|
|
|
+ await _workflowDomainService.RecallAsync(workflow, dto, targetStepDefine, flowAssignInfo, expiredTime, isOrderFiled, cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -353,6 +353,9 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
var endStepDefine = workflow.WorkflowDefinition.FindEndStepDefine();
|
|
var endStepDefine = workflow.WorkflowDefinition.FindEndStepDefine();
|
|
if (endStepDefine is null)
|
|
if (endStepDefine is null)
|
|
throw new UserFriendlyException("未正确配置结束节点");
|
|
throw new UserFriendlyException("未正确配置结束节点");
|
|
|
|
+ var unHandleStep = workflow.Steps.FirstOrDefault(d => d.Status is not EWorkflowStepStatus.Handled);
|
|
|
|
+ if (unHandleStep is null)
|
|
|
|
+ throw new UserFriendlyException($"无待办节点, workflowId: {workflowId}", "无待办节点");
|
|
var dto = new NextWorkflowDto
|
|
var dto = new NextWorkflowDto
|
|
{
|
|
{
|
|
WorkflowId = workflowId,
|
|
WorkflowId = workflowId,
|
|
@@ -362,7 +365,8 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
BusinessType = endStepDefine.BusinessType,
|
|
BusinessType = endStepDefine.BusinessType,
|
|
ReviewResult = reviewResult,
|
|
ReviewResult = reviewResult,
|
|
Opinion = opinion,
|
|
Opinion = opinion,
|
|
- Files = files
|
|
|
|
|
|
+ Files = files,
|
|
|
|
+ StepId = unHandleStep.Id
|
|
};
|
|
};
|
|
await NextAsync(dto, current, cancellationToken: cancellationToken);
|
|
await NextAsync(dto, current, cancellationToken: cancellationToken);
|
|
}
|
|
}
|
|
@@ -414,8 +418,14 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
await _workflowStepRepository.UpdateRangeAsync(unhandleSteps, cancellationToken);
|
|
await _workflowStepRepository.UpdateRangeAsync(unhandleSteps, cancellationToken);
|
|
await _workflowTraceRepository.UpdateRangeAsync(unhandleTraces, cancellationToken);
|
|
await _workflowTraceRepository.UpdateRangeAsync(unhandleTraces, cancellationToken);
|
|
|
|
|
|
- await _workflowDomainService.EndAsync(workflow, dto,
|
|
|
|
- endStepDefine, unhandleSteps.First(), current, expiredTime, cancellationToken);
|
|
|
|
|
|
+ if (workflow.Steps.All(d => d.StepType != EStepType.End))
|
|
|
|
+ {
|
|
|
|
+ var currentStep = unhandleSteps.FirstOrDefault()
|
|
|
|
+ ?? workflow.Steps.OrderBy(d => d.CreationTime).Last();
|
|
|
|
+
|
|
|
|
+ await _workflowDomainService.EndAsync(workflow, dto,
|
|
|
|
+ endStepDefine, currentStep, current, expiredTime, cancellationToken);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -855,7 +865,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
users1 = users1.Where(d => d.OrgId.StartsWith(levelOneOrgId));
|
|
users1 = users1.Where(d => d.OrgId.StartsWith(levelOneOrgId));
|
|
var defineTypeItem = stepDefine.HandlerTypeItems.First();
|
|
var defineTypeItem = stepDefine.HandlerTypeItems.First();
|
|
|
|
|
|
- handlers = users1.Where(d => d != null && !string.IsNullOrEmpty(d.Id))
|
|
|
|
|
|
+ handlers = users1.Where(d => d != null && !string.IsNullOrEmpty(d.Id))
|
|
.Select(d => new FlowStepHandler
|
|
.Select(d => new FlowStepHandler
|
|
{
|
|
{
|
|
Key = d.Id,
|
|
Key = d.Id,
|
|
@@ -866,7 +876,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
OrgName = d.Organization.Name,
|
|
OrgName = d.Organization.Name,
|
|
RoleId = defineTypeItem.Key,
|
|
RoleId = defineTypeItem.Key,
|
|
RoleName = defineTypeItem.Value
|
|
RoleName = defineTypeItem.Value
|
|
- })
|
|
|
|
|
|
+ })
|
|
.ToList();
|
|
.ToList();
|
|
break;
|
|
break;
|
|
case EHandlerType.OrgLevel:
|
|
case EHandlerType.OrgLevel:
|