瀏覽代碼

Merge branch 'master' of http://git.12345lm.cn/Fengwo/hotline

Dun.Jason 1 年之前
父節點
當前提交
905ba39d21

+ 4 - 4
src/Hotline/FlowEngine/Workflows/WorkflowCountersign.cs

@@ -113,8 +113,8 @@ namespace Hotline.FlowEngine.Workflows
         /// 该会签参与成员数量
         /// </summary>
         // public int Members { get; set; }
-        [SugarColumn(ColumnDataType = "json", IsJson = true)]
-        public List<CountersignMember> Members { get; set; }
+        [Navigate(NavigateType.OneToMany, nameof(WorkflowCountersignMember.WorkflowCountersignId))]
+        public List<WorkflowCountersignMember> Members { get; set; }
         //todo 发起时记录哪些待办,办理时记录哪些已办
 
         /// <summary>
@@ -164,8 +164,8 @@ namespace Hotline.FlowEngine.Workflows
         public void MemberHandled(string userId, string orgId)
         {
             var member = FlowAssignType == EFlowAssignType.Org
-                ? Members.FirstOrDefault(d => d.Key == orgId)
-                : Members.FirstOrDefault(d => d.Key == userId);
+                ? Members.FirstOrDefault(d => d.Id == orgId)
+                : Members.FirstOrDefault(d => d.Id == userId);
 
             if (member is null)
                 throw new UserFriendlyException($"未找到会签办理对象");

+ 21 - 0
src/Hotline/FlowEngine/Workflows/WorkflowCountersignMember.cs

@@ -0,0 +1,21 @@
+using XF.Domain.Entities;
+using XF.Domain.Repository;
+
+namespace Hotline.FlowEngine.Workflows;
+
+/// <summary>
+/// 会签办理对象
+/// </summary>
+public class WorkflowCountersignMember : CreationEntity
+{
+    public string WorkflowCountersignId { get; set; }
+
+    /// <summary>
+    /// 流程指派类型(冗余,非工单办理为null)
+    /// </summary>
+    public EFlowAssignType? FlowAssignType { get; set; }
+
+    public string Name { get; set; }
+
+    public bool IsHandled { get; set; }
+}

+ 14 - 3
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -174,7 +174,7 @@ namespace Hotline.FlowEngine.Workflows
             //if (withAssigns)
             //    query = query.Includes(d => d.Assigns);
             if (withCountersigns)
-                query = query.Includes(d => d.Countersigns);
+                query = query.Includes(d => d.Countersigns, x => x.Members);
             if (withSteps)
                 query = query.Includes(d => d.Steps);
 
@@ -1208,6 +1208,13 @@ namespace Hotline.FlowEngine.Workflows
             ECounterSignType? counterSignType, DateTime expiredTime, string? parentId = null,
             CancellationToken cancellationToken = default)
         {
+            var members = handlers.Select(d => new WorkflowCountersignMember
+            {
+                Id = d.Key,
+                Name = d.Value,
+                FlowAssignType = flowAssignType
+            }).ToList();
+
             var countersign = new WorkflowCountersign
             {
                 WorkflowId = workflowId,
@@ -1223,12 +1230,16 @@ namespace Hotline.FlowEngine.Workflows
                 StarterOrgAreaName = _sessionContext.OrgAreaName,
 
                 ParentId = parentId,
-                Members = _mapper.Map<List<CountersignMember>>(handlers),
+                Members = members,
                 FlowAssignType = flowAssignType,
                 CounterSignType = counterSignType,
                 ExpiredTime = expiredTime,
             };
-            await _workflowCountersignRepository.AddAsync(countersign, cancellationToken);
+            //await _workflowCountersignRepository.AddAsync(countersign, cancellationToken);
+
+            await _workflowCountersignRepository.AddNav(countersign)
+                .Include(d => d.Members)
+                .ExecuteCommandAsync();
             return countersign;
         }