Explorar o código

Merge branch 'master' of http://git.fway.com.cn/Fengwo/hotline

田爽 hai 1 ano
pai
achega
afeb1605be

+ 47 - 2
src/Hotline.Api/Controllers/WorkflowController.cs

@@ -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()
     {

+ 3 - 3
src/Hotline/FlowEngine/Workflows/StepBasicEntity.cs

@@ -133,19 +133,19 @@ public abstract class StepBasicEntity : CreationEntity
     public string? OrgCode { get; set; }
 
     /// <summary>
-    /// 部门名称
+    /// 办理人部门名称
     /// </summary>
     [SugarColumn(IsNullable = true)]
     public string? OrgName { get; set; }
 
     /// <summary>
-    /// 部门行政区划代码
+    /// 办理人部门行政区划代码
     /// </summary>
     [SugarColumn(IsNullable = true)]
     public string? OrgAreaCode { get; set; }
 
     /// <summary>
-    /// 部门行政区划名称
+    /// 办理人部门行政区划名称
     /// </summary>
     [SugarColumn(IsNullable = true)]
     public string? OrgAreaName { get; set; }

+ 0 - 47
src/XF.Domain/Entities/IDataPermission.cs

@@ -13,51 +13,4 @@ namespace XF.Domain.Entities
 
         void CreateDataPermission(string orgId, string orgCode, string creatorId, string? areaId);
     }
-
-    public interface IWorkflow
-    {
-        string? WorkflowId { get; set; }
-
-        /// <summary>
-        /// 过期时间配置id
-        /// </summary>
-        string? ExpiredTimeConfigId { get; set; }
-
-        /// <summary>
-        /// 指派部门编码
-        /// </summary>
-        List<string> AssignOrgCodes { get; set; }
-
-        /// <summary>
-        /// 指派用户Id
-        /// </summary>
-        List<string> AssignUserIds { get; set; }
-
-        ///// <summary>
-        ///// 指派角色名称
-        ///// </summary>
-        //List<string> AssignRoles { get; set; }
-
-        void Assign(EFlowAssignType type, string handler);
-
-        void Assign(EFlowAssignType type, IEnumerable<string> handlers);
-    }
-
-    public enum EFlowAssignType
-    {
-        /// <summary>
-        /// 指派到部门
-        /// </summary>
-        Org = 0,
-
-        /// <summary>
-        /// 指派到用户
-        /// </summary>
-        User = 1,
-
-        ///// <summary>
-        ///// 指派到角色
-        ///// </summary>
-        //Role = 2,
-    }
 }

+ 48 - 0
src/XF.Domain/Entities/IWorkflow.cs

@@ -0,0 +1,48 @@
+namespace XF.Domain.Entities;
+
+public interface IWorkflow
+{
+    string? WorkflowId { get; set; }
+
+    /// <summary>
+    /// 过期时间配置id
+    /// </summary>
+    string? ExpiredTimeConfigId { get; set; }
+
+    /// <summary>
+    /// 指派部门编码
+    /// </summary>
+    List<string> AssignOrgCodes { get; set; }
+
+    /// <summary>
+    /// 指派用户Id
+    /// </summary>
+    List<string> AssignUserIds { get; set; }
+
+    ///// <summary>
+    ///// 指派角色名称
+    ///// </summary>
+    //List<string> AssignRoles { get; set; }
+
+    void Assign(EFlowAssignType type, string handler);
+
+    void Assign(EFlowAssignType type, IEnumerable<string> handlers);
+}
+
+public enum EFlowAssignType
+{
+    /// <summary>
+    /// 指派到部门
+    /// </summary>
+    Org = 0,
+
+    /// <summary>
+    /// 指派到用户
+    /// </summary>
+    User = 1,
+
+    ///// <summary>
+    ///// 指派到角色
+    ///// </summary>
+    //Role = 2,
+}