|
@@ -17,7 +17,6 @@ using Microsoft.AspNetCore.Authorization;
|
|
|
using XF.Domain.Authentications;
|
|
|
using XF.Domain.Exceptions;
|
|
|
using XF.Utility.EnumExtensions;
|
|
|
-using System.Reflection;
|
|
|
using XF.Domain.Repository;
|
|
|
|
|
|
namespace Hotline.Api.Controllers;
|
|
@@ -401,7 +400,6 @@ public class WorkflowController : BaseController
|
|
|
[HttpPost("cancel")]
|
|
|
public async Task Cancel([FromBody] CancelDto dto)
|
|
|
{
|
|
|
- //todo
|
|
|
await _workflowDomainService.CancelAsync(dto, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
@@ -457,6 +455,53 @@ 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;
|
|
|
+ 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()
|
|
|
{
|