|
@@ -2,6 +2,7 @@
|
|
|
using Hotline.FlowEngine.Notifications;
|
|
|
using Hotline.FlowEngine.WfModules;
|
|
|
using Hotline.Settings;
|
|
|
+using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Dtos.FlowEngine;
|
|
|
using Hotline.Share.Enums.FlowEngine;
|
|
|
using Hotline.Share.Enums.Order;
|
|
@@ -124,7 +125,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
workflow.StartCountersign(firstStepBox.Code, counterSignType);
|
|
|
|
|
|
//更新受理人信息
|
|
|
- workflow.UpdateAcceptor(_sessionContext.RequiredUserId, _sessionContext.UserName);
|
|
|
+ workflow.UpdateAcceptor(_sessionContext.RequiredUserId, _sessionContext.UserName, _sessionContext.StaffNo);
|
|
|
|
|
|
workflow.UpdateHandlers(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode,
|
|
|
flowAssignInfo.FlowAssignType, flowAssignInfo.HandlerObjects);
|
|
@@ -320,13 +321,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
//create endStep
|
|
|
var (_, endStep) = await CreateEndStepAsync(workflow, nextStepBoxDefine, currentStepBox, currentStep, cancellationToken);
|
|
|
//update endTrace
|
|
|
- await NextTraceAsync(workflow, dto, endStep, cancellationToken);
|
|
|
+ var endTrace = await NextTraceAsync(workflow, dto, endStep, cancellationToken);
|
|
|
|
|
|
workflow.Complete();
|
|
|
|
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
|
|
|
- await _mediator.Publish(new EndWorkflowNotify(workflow), cancellationToken);
|
|
|
+ await _mediator.Publish(new EndWorkflowNotify(workflow, endTrace), cancellationToken);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -450,7 +451,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
await ResetStepBoxStatusAsync(prevStepBox, cancellationToken);
|
|
|
|
|
|
//复制上一个节点为待接办
|
|
|
- var newPrevStep = await CreateByAsync(workflow, prevStep, cancellationToken);
|
|
|
+ var newPrevStep = await CreatePrevStepAsync(workflow, prevStep, cancellationToken);
|
|
|
|
|
|
//remove workflow.steps
|
|
|
await _workflowStepRepository.RemoveRangeAsync(new List<WorkflowStep> { currentStepBox, currentStep, prevStep }, cancellationToken);
|
|
@@ -773,7 +774,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// <summary>
|
|
|
/// 复制一个节点为待接办
|
|
|
/// </summary>
|
|
|
- private async Task<WorkflowStep> CreateByAsync(Workflow workflow, WorkflowStep step, CancellationToken cancellationToken)
|
|
|
+ private async Task<WorkflowStep> CreatePrevStepAsync(Workflow workflow, WorkflowStep step, CancellationToken cancellationToken)
|
|
|
{
|
|
|
step.Reset();
|
|
|
var newStep = _mapper.Map<WorkflowStep>(step);
|
|
@@ -787,7 +788,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
newStep.IsStartedCountersignComplete = step.IsStartedCountersignComplete;
|
|
|
await _workflowStepRepository.AddAsync(newStep, cancellationToken);
|
|
|
|
|
|
- await CreateTraceAsync(workflow, newStep, EWorkflowTraceStatus.Back, cancellationToken);
|
|
|
+ await CreateTraceAsync(workflow, newStep, EWorkflowTraceStatus.Previous, cancellationToken);
|
|
|
|
|
|
return newStep;
|
|
|
}
|
|
@@ -1049,7 +1050,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
throw UserFriendlyException.SameMessage("无办理权限");
|
|
|
}
|
|
|
|
|
|
- private async Task<(WorkflowStep startStepBox, WorkflowStep startStep, WorkflowStep firstStepBox)> CreateStartAndFirstStepAsync(Workflow workflow, BasicWorkflowDto dto, CancellationToken cancellationToken)
|
|
|
+ private async Task<(WorkflowStep startStepBox, WorkflowStep startStep, WorkflowStep firstStepBox)> CreateStartAndFirstStepAsync(
|
|
|
+ Workflow workflow, BasicWorkflowDto dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
if (workflow.StepBoxes.Any())
|
|
|
throw UserFriendlyException.SameMessage("无法重复创建开始节点");
|
|
@@ -1067,7 +1069,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
//开始节点的下一个节点(工单业务:话务员节点)
|
|
|
var firstStepCode = workflow.Definition.FindStartStep().NextSteps.First().Code;
|
|
|
- var startStep = await CreateStartSubStepAsync(handler, firstStepCode, startStepBox, cancellationToken);
|
|
|
+ var startStep = await CreateStartSubStepAsync(handler, firstStepCode, startStepBox, dto, cancellationToken);
|
|
|
|
|
|
//开始节点trace
|
|
|
await CreateTraceAsync(workflow, startStep, cancellationToken: cancellationToken);
|
|
@@ -1156,7 +1158,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
{
|
|
|
//开始节点既不发起会签,也不处于会签中
|
|
|
var subStep = CreateSubStep(stepBox, new List<IdName> { handler }, dto.NextStepCode, dto.NextMainHandler,
|
|
|
- null, null, EWorkflowStepStatus.Completed, EStepCountersignStatus.None, DateTime.Now);
|
|
|
+ null, null, EWorkflowStepStatus.Completed, EStepCountersignStatus.None, DateTime.Now,
|
|
|
+ _mapper.Map<StepExtension>(dto.Extension));
|
|
|
subStep.Accept(_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
|
_sessionContext.RequiredOrgCode, _sessionContext.OrgName);
|
|
|
//step办理状态
|
|
@@ -1176,11 +1179,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
IdName handler,
|
|
|
string nextStepCode,
|
|
|
WorkflowStep stepBox,
|
|
|
+ BasicWorkflowDto dto,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
//开始节点既不发起会签,也不处于会签中
|
|
|
var subStep = CreateSubStep(stepBox, new List<IdName> { handler }, nextStepCode, null,
|
|
|
- null, null, EWorkflowStepStatus.Completed, EStepCountersignStatus.None, DateTime.Today);
|
|
|
+ null, null, EWorkflowStepStatus.Completed, EStepCountersignStatus.None, DateTime.Today,
|
|
|
+ _mapper.Map<StepExtension>(dto.Extension));
|
|
|
subStep.Accept(_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
|
_sessionContext.RequiredOrgCode, _sessionContext.OrgName);
|
|
|
|
|
@@ -1203,7 +1208,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
var subStep = CreateSubStep(currentStepBox, new List<IdName> { handler }, null, null, prevStep.Id,
|
|
|
- null, EWorkflowStepStatus.Completed, EStepCountersignStatus.None, DateTime.Today);
|
|
|
+ null, EWorkflowStepStatus.Completed, EStepCountersignStatus.None, DateTime.Today, new());
|
|
|
subStep.Accept(_sessionContext.RequiredUserId, _sessionContext.UserName, _sessionContext.RequiredOrgCode,
|
|
|
_sessionContext.OrgName);
|
|
|
subStep.Complete(_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
@@ -1237,17 +1242,18 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
var countersignId = isPrevStartCountersign ? prevStep.StartCountersignId : prevStep.CountersignId;
|
|
|
|
|
|
List<WorkflowStep> subSteps;
|
|
|
+ var stepExtension = _mapper.Map<StepExtension>(dto.Extension);
|
|
|
if (stepBoxDefine.HandlerType is EHandlerType.AssignUser or EHandlerType.AssignOrg)
|
|
|
{
|
|
|
subSteps = CreateSubSteps(isPrevStartCountersign, stepBox, stepBox.HandlerClassifies, dto.NextStepCode, dto.NextMainHandler,
|
|
|
- prevStep?.Id, countersignId, stepStatus, countersignStatus, expiredTime);
|
|
|
+ prevStep?.Id, countersignId, stepStatus, countersignStatus, expiredTime, stepExtension);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (stepBoxDefine.HandlerType != EHandlerType.Role && !dto.NextHandlers.Any())
|
|
|
throw new UserFriendlyException("未指定节点处理者");
|
|
|
subSteps = CreateSubSteps(isPrevStartCountersign, stepBox, dto.NextHandlers, dto.NextStepCode, dto.NextMainHandler,
|
|
|
- prevStep?.Id, countersignId, stepStatus, countersignStatus, expiredTime);
|
|
|
+ prevStep?.Id, countersignId, stepStatus, countersignStatus, expiredTime, stepExtension);
|
|
|
}
|
|
|
stepBox.Steps.AddRange(subSteps);
|
|
|
await _workflowStepRepository.AddRangeAsync(subSteps, cancellationToken);
|
|
@@ -1316,7 +1322,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
string? countersignId,
|
|
|
EWorkflowStepStatus stepStatus,
|
|
|
EStepCountersignStatus countersignStatus,
|
|
|
- DateTime expiredTime)
|
|
|
+ DateTime expiredTime,
|
|
|
+ StepExtension extension)
|
|
|
{
|
|
|
if (countersignStatus is EStepCountersignStatus.None && !string.IsNullOrEmpty(countersignId))
|
|
|
throw UserFriendlyException.SameMessage("非法参数");
|
|
@@ -1330,7 +1337,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
foreach (var handler in handlers)
|
|
|
{
|
|
|
var step = CreateSubStep(stepBox, new List<IdName> { handler }, nextStepCode, nextMainHandler,
|
|
|
- prevStepId, countersignId, stepStatus, countersignStatus, expiredTime);
|
|
|
+ prevStepId, countersignId, stepStatus, countersignStatus, expiredTime, extension);
|
|
|
|
|
|
steps.Add(step);
|
|
|
}
|
|
@@ -1338,7 +1345,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
else
|
|
|
{
|
|
|
var step = CreateSubStep(stepBox, handlers, nextStepCode, nextMainHandler,
|
|
|
- prevStepId, countersignId, stepStatus, countersignStatus, expiredTime);
|
|
|
+ prevStepId, countersignId, stepStatus, countersignStatus, expiredTime, extension);
|
|
|
|
|
|
steps.Add(step);
|
|
|
}
|
|
@@ -1355,7 +1362,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
string? countersignId,
|
|
|
EWorkflowStepStatus stepStatus,
|
|
|
EStepCountersignStatus countersignStatus,
|
|
|
- DateTime expiredTime)
|
|
|
+ DateTime expiredTime,
|
|
|
+ StepExtension extension)
|
|
|
{
|
|
|
if (!handlers.Any())
|
|
|
throw new UserFriendlyException("非法参数");
|
|
@@ -1373,6 +1381,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
step.StepCountersignStatus = countersignStatus;
|
|
|
step.ExpiredTime = expiredTime;
|
|
|
step.TimeLimit = GetTimeLimit("");//todo 过期时间
|
|
|
+ step.Extension = extension;
|
|
|
|
|
|
return step;
|
|
|
}
|