xf преди 4 месеца
родител
ревизия
aeaa450dde

+ 26 - 38
src/Hotline.Api/Controllers/OrderController.cs

@@ -4263,61 +4263,49 @@ public class OrderController : BaseController
     [HttpGet("waited-fixed")]
     public async Task<IReadOnlyList<OrderDto>> QueryWaitedFixed([FromQuery] QueryOrderWaitedFixedDto dto)
     {
-        //1. 已办查询,queryType条件无效
-        //2.封装逻辑:管理员可见所有有trace的order,按照已办/待办过滤、非管理员判断流程那套逻辑,再按照已办/待办过滤
-        //3. queryType过滤: 
         var query = _orderRepository.Queryable();
         var hasHandled = dto.IsHandled.HasValue && dto.IsHandled.Value;
         if (hasHandled)
             dto.QueryType = null;
 
-        var expStepFilter = new Func<WorkflowStep, bool>(step =>
-            ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
-             (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
-             (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
-             (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
-                                                                && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
-        //&& (!hasHandled || step.Status == EWorkflowStepStatus.Handled)
-        //&& (hasHandled || step.Status < EWorkflowStepStatus.Handled)
-            );
-
-        var expHandledStep =
-            new Func<WorkflowStep, bool>(step =>
-                ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
-                 (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
-                 (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
-                 (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
-                  && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
-                &&  step.Status == EWorkflowStepStatus.Handled
-            );
-        var expUnhandleStep = new Func<WorkflowStep, bool>(step =>
-            ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
-             (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
-             (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
-             (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
-              && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
-              && step.Status < EWorkflowStepStatus.Handled
-        );
-
         var isAdmin = _orderDomainService.IsCheckAdmin();
         if (!isAdmin)
         {
             query
-                .Includes(d => d.WorkflowSteps//.Where(expStepFilter)
+                .Includes(d => d.WorkflowSteps.Where(step =>
+                        ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
+                         (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
+                         (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
+                         (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
+                          && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId)))
                     .OrderByDescending(step => step.CreationTime)
                     .Take(1)
                     .ToList()
-                )
-                .Where(d => d.WorkflowSteps
-                    //.WhereIF(hasHandled, step=>step.Status == EWorkflowStepStatus.Handled)
-                    //.WhereIF(!hasHandled, step=>step.Status < EWorkflowStepStatus.Handled)
+                );
+
+            if (hasHandled)
+            {
+                query.Where(d => d.WorkflowSteps
                     .Any(step =>
                         ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
                          (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
                          (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
                          (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
-                          && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId)))
-            );
+                          && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
+                    && step.Status == EWorkflowStepStatus.Handled));
+            }
+            else
+            {
+                query.Where(d => d.WorkflowSteps
+                    .Any(step =>
+                        ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
+                         (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
+                         (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
+                         (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
+                          && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
+                        && step.Status < EWorkflowStepStatus.Handled));
+            }
+            
         }
 
         var orders = await query

+ 1 - 1
src/Hotline.Api/config/appsettings.Development.json

@@ -62,7 +62,7 @@
     }
   },
   "ConnectionStrings": {
-    "Hotline": "PORT=5432;DATABASE=hotline_dev;HOST=110.188.24.182;PASSWORD=fengwo11!!;USER ID=dev;"
+    "Hotline": "PORT=5432;DATABASE=hotline;HOST=110.188.24.182;PASSWORD=fengwo11!!;USER ID=dev;"
   },
   "Cache": {
     "Host": "110.188.24.182",

+ 1 - 1
src/Hotline.Application/Mappers/OrderMapperConfigs.cs

@@ -20,7 +20,7 @@ public class OrderMapperConfigs : IRegister
             //.Map(d => d.IsRed, s => string.IsNullOrEmpty(s.SignerId) || !s.ActualHandleStepAcceptTime.HasValue)
             .Map(d => d.IsRed, s => s.WorkflowSteps!=null 
                                     && s.WorkflowSteps.Any() 
-                                    && s.WorkflowSteps.First().Status!= EWorkflowStepStatus.WaitForAccept)
+                                    && s.WorkflowSteps.First().Status == EWorkflowStepStatus.WaitForAccept)
             ;
 
         config.ForType<OrderCopy, OrderDto>()