|
@@ -331,8 +331,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
}
|
|
}
|
|
|
|
|
|
//是否从中心流转出去,重新计算expiredTime
|
|
//是否从中心流转出去,重新计算expiredTime
|
|
- var isFromCenterToOrg = CheckIfFlowFromCenterToOrg(currentStepBox, nextStepBoxDefine);
|
|
|
|
- if (isFromCenterToOrg)
|
|
|
|
|
|
+ var isCenterToOrg = CheckIfFlowFromCenterToOrg(currentStepBox, nextStepBoxDefine);
|
|
|
|
+ if (isCenterToOrg)
|
|
workflow.CenterToOrg(CalculateExpiredTime(workflow.Definition.Code));//todo 过期时间
|
|
workflow.CenterToOrg(CalculateExpiredTime(workflow.Definition.Code));//todo 过期时间
|
|
|
|
|
|
////最终办理意见与时间处理(解决工单业务需求,如果流程配置普通节点后未配置汇总节点则不会运行到此处)
|
|
////最终办理意见与时间处理(解决工单业务需求,如果流程配置普通节点后未配置汇总节点则不会运行到此处)
|
|
@@ -414,7 +414,9 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
- await _mediator.Publish(new NextStepNotify(workflow, dto, trace, isFromCenterToOrg, isStartCountersign, isCountersignOver, flowAssignInfo), cancellationToken);
|
|
|
|
|
|
+ await _mediator.Publish(new NextStepNotify(workflow, dto, trace,
|
|
|
|
+ isCenterToOrg, isStartCountersign, isCountersignOver,
|
|
|
|
+ _sessionContext.RequiredOrgCode, flowAssignInfo), cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -458,12 +460,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
workflow.UpdatePreviousHandlers(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode, newPrevStep);
|
|
workflow.UpdatePreviousHandlers(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode, newPrevStep);
|
|
|
|
|
|
//orgToCenter会触发重新计算期满时间,1.无需审核按当前时间进行计算 2.需审核按审核通过时间计算
|
|
//orgToCenter会触发重新计算期满时间,1.无需审核按当前时间进行计算 2.需审核按审核通过时间计算
|
|
- if (CheckIfFlowFromOrgToCenter(currentStepBox, prevStepBox))
|
|
|
|
|
|
+ var isOrgToCenter = CheckIfFlowFromOrgToCenter(currentStepBox, prevStepBox);
|
|
|
|
+ if (isOrgToCenter)
|
|
workflow.OrgToCenter(CalculateExpiredTime(""));//todo 过期时间
|
|
workflow.OrgToCenter(CalculateExpiredTime(""));//todo 过期时间
|
|
|
|
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
|
|
|
- await _mediator.Publish(new PreviousNotify(workflow, dto), cancellationToken);
|
|
|
|
|
|
+ await _mediator.Publish(new PreviousNotify(workflow, dto, isOrgToCenter), cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -481,13 +484,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
if (targetStepBox is null)
|
|
if (targetStepBox is null)
|
|
throw UserFriendlyException.SameMessage("该流程尚未流转至该节点");
|
|
throw UserFriendlyException.SameMessage("该流程尚未流转至该节点");
|
|
|
|
|
|
- await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, EWorkflowTraceStatus.Recall, cancellationToken);
|
|
|
|
|
|
+ var isOrgToCenter = await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, EWorkflowTraceStatus.Recall, cancellationToken);
|
|
|
|
|
|
workflow.ResetHandlers(flowAssignInfo.FlowAssignType, flowAssignInfo.HandlerObjects);
|
|
workflow.ResetHandlers(flowAssignInfo.FlowAssignType, flowAssignInfo.HandlerObjects);
|
|
|
|
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
|
|
|
- await _mediator.Publish(new RecallNotify(workflow, dto), cancellationToken);
|
|
|
|
|
|
+ await _mediator.Publish(new RecallNotify(workflow, dto, isOrgToCenter), cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -501,6 +504,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
//update uncompleted traces
|
|
//update uncompleted traces
|
|
await JumpTraceAsync(workflow.Id, dto, cancellationToken);
|
|
await JumpTraceAsync(workflow.Id, dto, cancellationToken);
|
|
|
|
|
|
|
|
+ bool isOrgToCenter = false, isCenterToOrg = false;
|
|
var targetStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Code == dto.NextStepCode);
|
|
var targetStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Code == dto.NextStepCode);
|
|
if (targetStepBox == null)
|
|
if (targetStepBox == null)
|
|
{
|
|
{
|
|
@@ -521,7 +525,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
workflow.UpdateWorkflowCurrentStepInfo(dto.IsStartCountersign, nextStep: targetStepBox.Steps.First());
|
|
workflow.UpdateWorkflowCurrentStepInfo(dto.IsStartCountersign, nextStep: targetStepBox.Steps.First());
|
|
|
|
|
|
//calc workflow expired time
|
|
//calc workflow expired time
|
|
- var isCenterToOrg = CheckIfFlowFromCenterToOrg(workflow, targetStepBox);
|
|
|
|
|
|
+ isCenterToOrg = CheckIfFlowFromCenterToOrg(workflow, targetStepBox);
|
|
if (isCenterToOrg)
|
|
if (isCenterToOrg)
|
|
workflow.ExpiredTime = CalculateExpiredTime("");
|
|
workflow.ExpiredTime = CalculateExpiredTime("");
|
|
|
|
|
|
@@ -553,13 +557,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
else
|
|
else
|
|
{
|
|
{
|
|
//返回之前节点
|
|
//返回之前节点
|
|
- await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, EWorkflowTraceStatus.Jump, cancellationToken);
|
|
|
|
|
|
+ isOrgToCenter = await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, EWorkflowTraceStatus.Jump, cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
workflow.ResetHandlers(flowAssignInfo.FlowAssignType, flowAssignInfo.HandlerObjects);
|
|
workflow.ResetHandlers(flowAssignInfo.FlowAssignType, flowAssignInfo.HandlerObjects);
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
|
|
|
- await _mediator.Publish(new JumpNotify(workflow, dto, flowAssignInfo), cancellationToken);
|
|
|
|
|
|
+ await _mediator.Publish(new JumpNotify(workflow, dto, flowAssignInfo, isCenterToOrg, isOrgToCenter), cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -616,7 +620,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
/// 查询待回访部门
|
|
/// 查询待回访部门
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
- public async Task<(IdName, IReadOnlyList<IdName>)> GetNoVisiteOrgsAsync(string workflowId, CancellationToken cancellationToken)
|
|
|
|
|
|
+ public async Task<(IdName, IReadOnlyList<IdName>)> GetUnvisitOrgsAsync(string workflowId, CancellationToken cancellationToken)
|
|
{
|
|
{
|
|
var workflow = await GetWorkflowAsync(workflowId, withSteps: true, cancellationToken: cancellationToken);
|
|
var workflow = await GetWorkflowAsync(workflowId, withSteps: true, cancellationToken: cancellationToken);
|
|
if (workflow.CounterSignType is not ECounterSignType.Center)
|
|
if (workflow.CounterSignType is not ECounterSignType.Center)
|
|
@@ -684,6 +688,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
currentStep.Complete(
|
|
currentStep.Complete(
|
|
_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
_sessionContext.RequiredOrgCode, _sessionContext.OrgName,
|
|
_sessionContext.RequiredOrgCode, _sessionContext.OrgName,
|
|
|
|
+ _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName,
|
|
dto.NextStepCode);
|
|
dto.NextStepCode);
|
|
|
|
|
|
//stepBox办理状态
|
|
//stepBox办理状态
|
|
@@ -973,7 +978,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
return parentTrace;
|
|
return parentTrace;
|
|
}
|
|
}
|
|
|
|
|
|
- private async Task RecallAsync(Workflow workflow, NextWorkflowDto dto, StepDefine targetStepDefine, WorkflowStep targetStepBox, EWorkflowTraceStatus traceStatus, CancellationToken cancellationToken)
|
|
|
|
|
|
+ private async Task<bool> RecallAsync(Workflow workflow, NextWorkflowDto dto, StepDefine targetStepDefine, WorkflowStep targetStepBox, EWorkflowTraceStatus traceStatus, CancellationToken cancellationToken)
|
|
{
|
|
{
|
|
//get targetStep's previous
|
|
//get targetStep's previous
|
|
var targetPrevStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Id == targetStepBox.PreviousId);
|
|
var targetPrevStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Id == targetStepBox.PreviousId);
|
|
@@ -1005,6 +1010,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
var isOrgToCenter = CheckIfFlowFromOrgToCenter(workflow, targetStepBox);
|
|
var isOrgToCenter = CheckIfFlowFromOrgToCenter(workflow, targetStepBox);
|
|
if (isOrgToCenter)
|
|
if (isOrgToCenter)
|
|
workflow.ExpiredTime = CalculateExpiredTime("");
|
|
workflow.ExpiredTime = CalculateExpiredTime("");
|
|
|
|
+
|
|
|
|
+ return isOrgToCenter;
|
|
}
|
|
}
|
|
|
|
|
|
private ICollection<WorkflowStep> GetStepsBehindTargetStepBox(List<WorkflowStep> stepBoxes, WorkflowStep targetStepBox)
|
|
private ICollection<WorkflowStep> GetStepsBehindTargetStepBox(List<WorkflowStep> stepBoxes, WorkflowStep targetStepBox)
|
|
@@ -1153,6 +1160,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
subStep.Complete(
|
|
subStep.Complete(
|
|
_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
_sessionContext.RequiredOrgCode, _sessionContext.OrgName,
|
|
_sessionContext.RequiredOrgCode, _sessionContext.OrgName,
|
|
|
|
+ _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName,
|
|
dto.NextStepCode);
|
|
dto.NextStepCode);
|
|
_mapper.Map(dto, subStep);
|
|
_mapper.Map(dto, subStep);
|
|
|
|
|
|
@@ -1175,7 +1183,9 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
//step办理状态
|
|
//step办理状态
|
|
subStep.Complete(_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
subStep.Complete(_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
- _sessionContext.RequiredOrgCode, _sessionContext.OrgName, nextStepCode);
|
|
|
|
|
|
+ _sessionContext.RequiredOrgCode, _sessionContext.OrgName,
|
|
|
|
+ _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName,
|
|
|
|
+ nextStepCode);
|
|
|
|
|
|
subStep.Opinion = "流程开启";
|
|
subStep.Opinion = "流程开启";
|
|
stepBox.Steps.Add(subStep);
|
|
stepBox.Steps.Add(subStep);
|
|
@@ -1194,7 +1204,9 @@ namespace Hotline.FlowEngine.Workflows
|
|
subStep.Accept(_sessionContext.RequiredUserId, _sessionContext.UserName, _sessionContext.RequiredOrgCode,
|
|
subStep.Accept(_sessionContext.RequiredUserId, _sessionContext.UserName, _sessionContext.RequiredOrgCode,
|
|
_sessionContext.OrgName);
|
|
_sessionContext.OrgName);
|
|
subStep.Complete(_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
subStep.Complete(_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
- _sessionContext.RequiredOrgCode, _sessionContext.OrgName, string.Empty);
|
|
|
|
|
|
+ _sessionContext.RequiredOrgCode, _sessionContext.OrgName,
|
|
|
|
+ _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName,
|
|
|
|
+ string.Empty);
|
|
|
|
|
|
currentStepBox.Steps.Add(subStep);
|
|
currentStepBox.Steps.Add(subStep);
|
|
await _workflowStepRepository.AddAsync(subStep, cancellationToken);
|
|
await _workflowStepRepository.AddAsync(subStep, cancellationToken);
|