|
@@ -86,9 +86,11 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
{
|
|
|
var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, true, true, cancellationToken: cancellationToken);
|
|
|
var nextStepBoxDefine = _workflowDomainService.GetStepBoxDefine(workflow.Definition, dto.NextStepCode);
|
|
|
- var isOutOfCallCenter =
|
|
|
- await CheckIfFlowOutOfCallCenterAsync(nextStepBoxDefine, dto.NextMainHandler, cancellationToken);
|
|
|
- var isStartCountersign = nextStepBoxDefine.IsStartCountersign(dto.NextHandlers.Count);
|
|
|
+ //下一节点为结束节点时,无办理人等参数,只有办理意见即可
|
|
|
+ var isOutOfCallCenter = nextStepBoxDefine.StepType is not EStepType.End
|
|
|
+ && await CheckIfFlowOutOfCallCenterAsync(nextStepBoxDefine, dto.NextMainHandler, cancellationToken);
|
|
|
+ var isStartCountersign = nextStepBoxDefine.StepType is not EStepType.End
|
|
|
+ && nextStepBoxDefine.IsStartCountersign(dto.NextHandlers.Count);
|
|
|
await _workflowDomainService.NextAsync(workflow, dto, nextStepBoxDefine, isOutOfCallCenter, isStartCountersign, cancellationToken);
|
|
|
|
|
|
//更新接办部门(详情页面展示)
|
|
@@ -159,44 +161,52 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
Name = nextStepDefine.Name,
|
|
|
};
|
|
|
|
|
|
- switch (nextStepDefine.HandlerType)
|
|
|
+ if (nextStepDefine.StepType != EStepType.End)
|
|
|
{
|
|
|
- case EHandlerType.AssignUser:
|
|
|
- var users = await _userRepository.QueryAsync(d =>
|
|
|
- nextStepDefine.HandlerClassifies.Select(d => d.Id).Contains(d.Id));
|
|
|
- options.NextSteps = users.Select(d => new KeyValuePair<string, string>(d.Id, d.Name)).ToList();
|
|
|
- break;
|
|
|
- case EHandlerType.AssignOrg:
|
|
|
- var orgs = await _organizeRepository.QueryAsync(d =>
|
|
|
- nextStepDefine.HandlerClassifies.Select(d => d.Id).Contains(d.OrgCode));
|
|
|
- options.NextSteps = orgs.Select(d => new KeyValuePair<string, string>(d.OrgCode, d.OrgName)).ToList();
|
|
|
- break;
|
|
|
- case EHandlerType.Role:
|
|
|
- var roles = await _roleRepository.Queryable().Includes(d => d.Accounts, d => d.User)
|
|
|
- .Where(d => nextStepDefine.HandlerClassifies.Select(d => d.Id).Contains(d.Name)).ToListAsync();
|
|
|
- var users1 = roles.SelectMany(d => d.Accounts).Select(d => d.User);
|
|
|
- if (nextStepDefine.OnlySelfOrg ?? false)
|
|
|
- users1 = users1.Where(d => d.OrgCode == _sessionContext.RequiredOrgCode);
|
|
|
- options.NextSteps = users1.Select(d => new KeyValuePair<string, string>(d.Id, d.Name)).ToList();
|
|
|
- break;
|
|
|
- case EHandlerType.OrgLevel:
|
|
|
- //当前操作人所属部门的下级部门并且属于配置orgLevel的部门
|
|
|
- var levels = nextStepDefine.HandlerClassifies.Select(d => d.Id).Select(d => int.Parse(d));
|
|
|
- var orgs1 = await _organizeRepository.QueryAsync(d =>
|
|
|
- d.IsEnable && d.OrgCode.StartsWith(_sessionContext.RequiredOrgCode) &&
|
|
|
- levels.Contains(d.OrgLevel));
|
|
|
- options.NextSteps = orgs1.Select(d => new KeyValuePair<string, string>(d.OrgCode, d.OrgName)).ToList();
|
|
|
- break;
|
|
|
- case EHandlerType.OrgType:
|
|
|
- var types = nextStepDefine.HandlerClassifies.Select(d => d.Id).Select(d => Enum.Parse<EOrgType>(d));
|
|
|
- var org2 = await _organizeRepository.QueryAsync(d =>
|
|
|
- d.IsEnable && d.OrgCode.StartsWith(_sessionContext.RequiredOrgCode) &&
|
|
|
- types.Contains(d.OrgType));
|
|
|
- options.NextSteps = org2.Select(d => new KeyValuePair<string, string>(d.OrgCode, d.OrgName)).ToList();
|
|
|
- break;
|
|
|
+ switch (nextStepDefine.HandlerType)
|
|
|
+ {
|
|
|
+ case EHandlerType.AssignUser:
|
|
|
+ var users = await _userRepository.QueryAsync(d =>
|
|
|
+ nextStepDefine.HandlerClassifies.Select(d => d.Id).Contains(d.Id));
|
|
|
+ options.NextSteps = users.Select(d => new KeyValuePair<string, string>(d.Id, d.Name)).ToList();
|
|
|
+ break;
|
|
|
+ case EHandlerType.AssignOrg:
|
|
|
+ var orgs = await _organizeRepository.QueryAsync(d =>
|
|
|
+ nextStepDefine.HandlerClassifies.Select(d => d.Id).Contains(d.OrgCode));
|
|
|
+ options.NextSteps = orgs.Select(d => new KeyValuePair<string, string>(d.OrgCode, d.OrgName))
|
|
|
+ .ToList();
|
|
|
+ break;
|
|
|
+ case EHandlerType.Role:
|
|
|
+ var roles = await _roleRepository.Queryable().Includes(d => d.Accounts, d => d.User)
|
|
|
+ .Where(d => nextStepDefine.HandlerClassifies.Select(d => d.Id).Contains(d.Name))
|
|
|
+ .ToListAsync();
|
|
|
+ var users1 = roles.SelectMany(d => d.Accounts).Select(d => d.User);
|
|
|
+ if (nextStepDefine.OnlySelfOrg ?? false)
|
|
|
+ users1 = users1.Where(d => d.OrgCode == _sessionContext.RequiredOrgCode);
|
|
|
+ options.NextSteps = users1.Select(d => new KeyValuePair<string, string>(d.Id, d.Name)).ToList();
|
|
|
+ break;
|
|
|
+ case EHandlerType.OrgLevel:
|
|
|
+ //当前操作人所属部门的下级部门并且属于配置orgLevel的部门
|
|
|
+ var levels = nextStepDefine.HandlerClassifies.Select(d => d.Id).Select(d => int.Parse(d));
|
|
|
+ var orgs1 = await _organizeRepository.QueryAsync(d =>
|
|
|
+ d.IsEnable && d.OrgCode.StartsWith(_sessionContext.RequiredOrgCode) &&
|
|
|
+ levels.Contains(d.OrgLevel));
|
|
|
+ options.NextSteps = orgs1.Select(d => new KeyValuePair<string, string>(d.OrgCode, d.OrgName))
|
|
|
+ .ToList();
|
|
|
+ break;
|
|
|
+ case EHandlerType.OrgType:
|
|
|
+ var types = nextStepDefine.HandlerClassifies.Select(d => d.Id)
|
|
|
+ .Select(d => Enum.Parse<EOrgType>(d));
|
|
|
+ var org2 = await _organizeRepository.QueryAsync(d =>
|
|
|
+ d.IsEnable && d.OrgCode.StartsWith(_sessionContext.RequiredOrgCode) &&
|
|
|
+ types.Contains(d.OrgType));
|
|
|
+ options.NextSteps = org2.Select(d => new KeyValuePair<string, string>(d.OrgCode, d.OrgName))
|
|
|
+ .ToList();
|
|
|
+ break;
|
|
|
|
|
|
- default:
|
|
|
- throw new ArgumentOutOfRangeException();
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
items.Add(options);
|