|
@@ -455,24 +455,52 @@ public class WorkflowController : BaseController
|
|
|
return _mapper.Map<WorkflowDto>(workflow);
|
|
|
}
|
|
|
|
|
|
- ///// <summary>
|
|
|
- ///// 查询被督办/催办部门
|
|
|
- ///// </summary>
|
|
|
- ///// <param name="workflowId"></param>
|
|
|
- ///// <returns></returns>
|
|
|
- //[HttpGet("{workflowId}/urge")]
|
|
|
- //public async Task<IReadOnlyList<IdName>> GetUrgeOrgs(string workflowId)
|
|
|
- //{
|
|
|
- // var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, true, true, cancellationToken: HttpContext.RequestAborted);
|
|
|
- // var stepBoxes = workflow.StepBoxes.Where(d => d.StepType != EStepType.Start && d.StepType != EStepType.End).ToList();
|
|
|
- // var steps = stepBoxes.SelectMany(d => d.Steps);
|
|
|
-
|
|
|
- // var orgs = new List<IdName>();
|
|
|
- // foreach (var step in steps)
|
|
|
- // {
|
|
|
- // var orgCode = step.OrgCode ?? step.AcceptOrgCode;
|
|
|
- // }
|
|
|
- //}
|
|
|
+ /// <summary>
|
|
|
+ /// 查询被督办/催办部门
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="workflowId"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("{workflowId}/urge")]
|
|
|
+ public async Task<IReadOnlyList<IdName>> GetUrgeOrgs(string workflowId)
|
|
|
+ {
|
|
|
+ var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, true, true, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ var stepBoxes = workflow.StepBoxes.Where(d => d.StepType != EStepType.Start && d.StepType != EStepType.End).ToList();
|
|
|
+ var steps = stepBoxes.SelectMany(d => d.Steps);
|
|
|
+
|
|
|
+ var orgs = new List<IdName>();
|
|
|
+ foreach (var step in steps)
|
|
|
+ {
|
|
|
+ var orgCode = step.OrgCode ?? step.AcceptOrgCode;
|
|
|
+ var orgName = step.OrgName ?? step.AcceptOrgName;
|
|
|
+ if (string.IsNullOrEmpty(orgCode))
|
|
|
+ {
|
|
|
+ switch (step.HandlerType)
|
|
|
+ {
|
|
|
+ case EHandlerType.Role:
|
|
|
+ case EHandlerType.AssignUser:
|
|
|
+ //todo
|
|
|
+ var users = await _userRepository.Queryable()
|
|
|
+ .Includes(d => d.Organization)
|
|
|
+ .Where(d => step.Handlers.Select(x => x.Id).Contains(d.Id))
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
+ orgs.AddRange(users.Select(d => new IdName(d.OrgCode, d.Organization.OrgName)));
|
|
|
+ break;
|
|
|
+ case EHandlerType.OrgLevel:
|
|
|
+ case EHandlerType.OrgType:
|
|
|
+ case EHandlerType.AssignOrg:
|
|
|
+ orgs.AddRange(step.Handlers);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ orgs.Add(new IdName(orgCode, orgName));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return orgs.DistinctBy(d=>d.Id).ToList();
|
|
|
+ }
|
|
|
|
|
|
[HttpGet("base-data")]
|
|
|
public async Task<dynamic> BaseData()
|