TANG JIANG 1 år sedan
förälder
incheckning
a5d788d2f2

+ 20 - 8
src/Hotline.Api/Controllers/WorkflowController.cs

@@ -553,7 +553,6 @@ public class WorkflowController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpGet("order-countersign")]
-    [AllowAnonymous]
     public async Task<PagedDto<WorkflowCountersignDto>> QueryOrderCountersigns([FromQuery] QueryOrderCountersignDto dto)
     {
         RefAsync<int> total = 0;
@@ -564,7 +563,7 @@ public class WorkflowController : BaseController
             .Includes(x => x.Members)
             .LeftJoin<Workflow>((c, w) => c.WorkflowId == w.Id)
             .InnerJoin<Order>((c, w, o) => w.ExternalId == o.Id)
-            .WhereIF(!_sessionContext.OrgIsCenter, (c, w, o) => c.Members.Any(m => m.Key == _sessionContext.OrgId))
+         //   .WhereIF(!_sessionContext.OrgIsCenter, (c, w, o) => c.Members.Any(m => m.Key == _sessionContext.OrgId || m.Key == _sessionContext.RequiredOrgId))
             .WhereIF(!string.IsNullOrEmpty(dto.Title), (c, w, o) => o.Title.Contains(dto.Title))
             .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), (c, w, o) => o.No.Contains(dto.OrderNo))
             .WhereIF(dto.AcceptTypes.Any(), (c, w, o) => dto.AcceptTypes.Contains(o.AcceptTypeCode)) //受理类型
@@ -580,18 +579,18 @@ public class WorkflowController : BaseController
         //承办部门用户能看到自己发起的和同级部门用户发起的会签件
         if (dto.InitiatedCountersignature.HasValue && dto.InitiatedCountersignature == true)
         {
-            if (_sessionContext.Roles.Select(p => "banzhang") != null)
+            if (_sessionContext.Roles.Any(p => p == "banzhang"))
             {
 
             }
             else
-            if (_sessionContext.Roles.Select(p => "paidanyuan") != null)
+            if (_sessionContext.Roles.Any(p => p == "paidanyuan"))
             {
-
+                query = query.Where((c, w, o) => c.StarterId == _sessionContext.UserId);
             }
             else
             {
-
+                query = query.Where((c, w, o) => c.StarterOrgId == _sessionContext.RequiredOrgId);
             }
         }
 
@@ -601,12 +600,24 @@ public class WorkflowController : BaseController
         //承办部门用户能看到和同级部门用户已办理过的会签件
         if (dto.HandleCountersignature.HasValue && dto.HandleCountersignature == true)
         {
-
+            if (_sessionContext.Roles.Any(p => p == "banzhang"))
+            {
+                query = query.Where((c, w, o) => c.EndTime.HasValue);
+            }
+            else
+           if (_sessionContext.Roles.Any(p => p == "paidanyuan"))
+            {
+                query = query.Where((c, w, o) => c.Members.Any(m => m.Key == _sessionContext.RequiredOrgId) && c.EndTime.HasValue);
+            }
+            else
+            {
+                query = query.Where((c, w, o) => c.Members.Any(m => m.Key == _sessionContext.OrgId || m.Key == _sessionContext.RequiredOrgId) && c.EndTime.HasValue);
+            }
         }
 
         //if (dto.IsOnlyStarter)
         //    query = query.Where((c, w, o) => c.StarterId == _sessionContext.RequiredUserId);
-
+        // dto.CounterSignCount = await _workflowCountersignRepository.Queryable().Where(p => p.WorkflowId == dto.WorkflowId).CountAsync();
         var items = await query
             .OrderByDescending((c, w, o) => o.ExpiredTime)
             .Select((c, w, o) => new { c, o })
@@ -616,6 +627,7 @@ public class WorkflowController : BaseController
         {
             var dto = _mapper.Map<WorkflowCountersignDto>(d.c);
             dto.Order = _mapper.Map<OrderDto>(d.o);
+            dto.CounterSignCount = _workflowCountersignRepository.Queryable().Where(p => p.WorkflowId == d.c.WorkflowId).CountAsync().GetAwaiter().GetResult();
             return dto;
         }).ToList();
 

+ 5 - 0
src/Hotline.Share/Dtos/FlowEngine/Workflow/WorkflowCountersignDto.cs

@@ -123,5 +123,10 @@ namespace Hotline.Share.Dtos.FlowEngine.Workflow
         public OrderDto Order { get; set; }
 
         public string? StateText => EndTime.HasValue ? "已结束" : "未结束";
+
+        /// <summary>
+        /// 会签次数
+        /// </summary>
+        public int CounterSignCount { get; set; }
     }
 }