Ver código fonte

修改查询报错

tangjiang 9 meses atrás
pai
commit
7aeb30e9ce
1 arquivos alterados com 132 adições e 128 exclusões
  1. 132 128
      src/Hotline.Api/Controllers/OrderController.cs

+ 132 - 128
src/Hotline.Api/Controllers/OrderController.cs

@@ -1660,8 +1660,8 @@ public class OrderController : BaseController
             .Includes(d => d.VisitDetail)
             .Includes(d => d.Visit, v => v.Order)
             .Includes(d => d.Workflow)
-			.WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Visit.Order.Title.Contains(dto.Title!) )
-			.WhereIF(!string.IsNullOrEmpty(dto.No),  d => d.Visit.Order.No.Contains(dto.No!));
+            .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Visit.Order.Title.Contains(dto.Title!))
+            .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.Visit.Order.No.Contains(dto.No!));
         if (dto.Status is EScreenStatus.Apply)
         {
             query.Where(d => (d.Status == EScreenStatus.Apply || d.Status == EScreenStatus.Approval));
@@ -1676,7 +1676,7 @@ public class OrderController : BaseController
             .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
             .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
             .WhereIF(!string.IsNullOrEmpty(dto.OrderId), d => d.OrderId == dto.OrderId)
-            .WhereIF(!string.IsNullOrEmpty(dto.CreatorOrgName),d=>d.CreatorOrgName == dto.CreatorOrgName)
+            .WhereIF(!string.IsNullOrEmpty(dto.CreatorOrgName), d => d.CreatorOrgName == dto.CreatorOrgName)
             .OrderByDescending(d => d.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
         return new PagedDto<OrderScreenListDto>(total, _mapper.Map<IReadOnlyList<OrderScreenListDto>>(items));
@@ -2431,40 +2431,42 @@ public class OrderController : BaseController
         if (!string.IsNullOrEmpty(order.WorkflowId))
         {
             bool canInsteadHandle = false;
-			//班长代办
-			var settingEnable = _systemSettingCacheManager.GetSetting(SettingConstants.ChargeDAffaires);
+            //班长代办
+            var settingEnable = _systemSettingCacheManager.GetSetting(SettingConstants.ChargeDAffaires);
             var isEnable = settingEnable != null && settingEnable.SettingValue.Any() ? int.Parse(settingEnable?.SettingValue[0]) : 0;
-			if (isEnable > 0)
-			{
-				var setting = _systemSettingCacheManager.GetSetting(SettingConstants.SeatsMonitor);
-				var settingStr = setting?.SettingValue;
-				var roles = _sessionContext.Roles;
-				foreach (var item in settingStr)
-				{
+            if (isEnable > 0)
+            {
+                var setting = _systemSettingCacheManager.GetSetting(SettingConstants.SeatsMonitor);
+                var settingStr = setting?.SettingValue;
+                var roles = _sessionContext.Roles;
+                foreach (var item in settingStr)
+                {
                     if (roles != null && roles.Contains(item))
-                    { 
-                        canInsteadHandle = true; 
-                    }else {
+                    {
+                        canInsteadHandle = true;
+                    }
+                    else
+                    {
                         canInsteadHandle = false;
                     };
-				}
-				if (canInsteadHandle)
-				{
-					var unhandleSteps =
-						await _workflowDomainService.GetUnhandleStepsByOthersAsync(order.WorkflowId, HttpContext.RequestAborted);
-					// 会签多节点 不允许班长代办
-					if (unhandleSteps.Count > 1)
-						canInsteadHandle = false;
-					if (isEnable < 3 && unhandleSteps.Count == 1)
+                }
+                if (canInsteadHandle)
+                {
+                    var unhandleSteps =
+                        await _workflowDomainService.GetUnhandleStepsByOthersAsync(order.WorkflowId, HttpContext.RequestAborted);
+                    // 会签多节点 不允许班长代办
+                    if (unhandleSteps.Count > 1)
+                        canInsteadHandle = false;
+                    if (isEnable < 3 && unhandleSteps.Count == 1)
                     {
                         var type = isEnable - 1;
-						var step = unhandleSteps.FirstOrDefault(d => d.BusinessType == (EBusinessType)type);
-						canInsteadHandle = step != null && !string.IsNullOrEmpty(step.Id);
-						if (canInsteadHandle && step.IsInCountersign())
-							canInsteadHandle = false;
-					}
-				}
-			}
+                        var step = unhandleSteps.FirstOrDefault(d => d.BusinessType == (EBusinessType)type);
+                        canInsteadHandle = step != null && !string.IsNullOrEmpty(step.Id);
+                        if (canInsteadHandle && step.IsInCountersign())
+                            canInsteadHandle = false;
+                    }
+                }
+            }
             var result = await _workflowDomainService.GetWorkflowHandlePermissionAsync(
                 order.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles,
                 cancellationToken: HttpContext.RequestAborted);
@@ -2475,25 +2477,25 @@ public class OrderController : BaseController
             dto.CanInsteadHandle = !dto.CanHandle && canInsteadHandle;
             if (result.Trace is not null)
             {
-	            dto.PreviousOpinion = result.Trace!.Opinion;
-				var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.Id && x.TraceId == result.Trace.Id).OrderByDescending(x => x.CreationTime).FirstAsync();
-	            if (sendBack is { Id: not null })
-	            {
-					dto.SendBackOpinion = !string.IsNullOrEmpty(sendBack.Content) ? sendBack.Content : string.Empty;
-					if (sendBack.State == ESendBackAuditState.Refuse)
-					{
-						dto.SendBackRefuseOpinion = sendBack.AuditContent;
+                dto.PreviousOpinion = result.Trace!.Opinion;
+                var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.Id && x.TraceId == result.Trace.Id).OrderByDescending(x => x.CreationTime).FirstAsync();
+                if (sendBack is { Id: not null })
+                {
+                    dto.SendBackOpinion = !string.IsNullOrEmpty(sendBack.Content) ? sendBack.Content : string.Empty;
+                    if (sendBack.State == ESendBackAuditState.Refuse)
+                    {
+                        dto.SendBackRefuseOpinion = sendBack.AuditContent;
                         dto.SendBackAuditTime = sendBack.AuditTime;
-					}
-				}
-			}
+                    }
+                }
+            }
 
-			await _mediator.Publish(new GetOrderDetailNotify(result.Workflow,
+            await _mediator.Publish(new GetOrderDetailNotify(result.Workflow,
                 _sessionContext.RequiredUserId, _sessionContext.UserName,
                 _sessionContext.RequiredOrgId, _sessionContext.OrgName,
                 _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName));
         }
-       
+
 
         //var dto = _mapper.Map<OrderDto>(order!);
         //dto.CountersignId = countersignId;
@@ -2565,8 +2567,10 @@ public class OrderController : BaseController
         {
             var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true,
                 cancellationToken: HttpContext.RequestAborted);
-            var centerOpinion = workflow.Steps.Where(x => x.HandlerOrgId == OrgSeedData.CenterId).OrderByDescending(x => x.CreationTime).Select(x => x.Opinion).First();
-            dto.CenterOpinion = string.IsNullOrEmpty(centerOpinion) ? string.Empty : centerOpinion;
+            //  var centerOpinion = workflow.Steps.Where(x => x.HandlerOrgId == OrgSeedData.CenterId).OrderByDescending(x => x.CreationTime).Select(x => x.Opinion).FirstOrDefault();
+            var centerOpinion = workflow.Steps.Where(x => x.HandlerOrgId == OrgSeedData.CenterId).MaxBy(d => d.CreationTime)?.Opinion ?? string.Empty;
+
+            dto.CenterOpinion = centerOpinion;//string.IsNullOrEmpty(centerOpinion) ? string.Empty : centerOpinion;
             List<OrderRemarksDto> remarks = workflow.Steps.Where(x => !string.IsNullOrEmpty(x.Remark)).Select(x => new OrderRemarksDto { Remark = x.Remark, RemarkTime = x.CreationTime, RemarkUser = x.CreatorName }).ToList();
             dto.OrderRemarks = remarks;
         }
@@ -2624,7 +2628,7 @@ public class OrderController : BaseController
         }
 
         //内容分词
-        await _orderApplication.OrderParticiple(dto.Content, order.Id,order.CreationTime, HttpContext.RequestAborted);
+        await _orderApplication.OrderParticiple(dto.Content, order.Id, order.CreationTime, HttpContext.RequestAborted);
         //敏感分词
         await _orderApplication.OrderSensitiveParticiple(dto.Content, order.Id, HttpContext.RequestAborted);
         //sms
@@ -2985,38 +2989,38 @@ public class OrderController : BaseController
     [HttpGet("nextsteps_commission/{orderId}")]
     public async Task<NextStepsWithOpinionDto<RecommendStepOption>> GetNextStepsWithRecommendCommission(string orderId)
     {
-	    var order = await _orderDomainService.GetOrderAsync(orderId, cancellationToken: HttpContext.RequestAborted);
-	    if (string.IsNullOrEmpty(order.WorkflowId))
-		    throw UserFriendlyException.SameMessage("该工单未开启流程");
-	    var unhandleSteps =
-		    await _workflowDomainService.GetUnhandleStepsByOthersAsync(order.WorkflowId, HttpContext.RequestAborted);
-	    if (unhandleSteps.Count > 1)
-		    throw UserFriendlyException.SameMessage("会签工单不允许班长代办");
-	    if (unhandleSteps.Count < 1)
-		    throw UserFriendlyException.SameMessage("未查询到流程信息");
+        var order = await _orderDomainService.GetOrderAsync(orderId, cancellationToken: HttpContext.RequestAborted);
+        if (string.IsNullOrEmpty(order.WorkflowId))
+            throw UserFriendlyException.SameMessage("该工单未开启流程");
+        var unhandleSteps =
+            await _workflowDomainService.GetUnhandleStepsByOthersAsync(order.WorkflowId, HttpContext.RequestAborted);
+        if (unhandleSteps.Count > 1)
+            throw UserFriendlyException.SameMessage("会签工单不允许班长代办");
+        if (unhandleSteps.Count < 1)
+            throw UserFriendlyException.SameMessage("未查询到流程信息");
         var stepOne = unhandleSteps.First();
         if (stepOne.IsInCountersign())
-	        throw UserFriendlyException.SameMessage("会签工单不允许班长代办");
-		var dto = await _workflowApplication.GetNextStepsAsync(order.WorkflowId, stepOne.Id, HttpContext.RequestAborted);
-	    dto.ExpiredTime = order.ExpiredTime;
-	    var rsp = _mapper.Map<NextStepsWithOpinionDto<RecommendStepOption>>(dto);
-	    foreach (var step in rsp.Steps)
-	    {
-		    if (dto.CurrentStepBusinessType is not EBusinessType.Send ||
-		        step.BusinessType is not EBusinessType.Department) continue;
-		    var org = await _organizeRepository.GetAsync(d => d.AreaCode == order.AreaCode, HttpContext.RequestAborted);
-		    if (org is null) continue;
-		    step.RecommendOrgId = org.Id;
-		    step.RecommendOrgName = org.Name;
-	    }
-
-	    return rsp;
-    }
-
-	/// <summary>
-	/// 结束会签
-	/// </summary>
-	[HttpPost("endcs")]
+            throw UserFriendlyException.SameMessage("会签工单不允许班长代办");
+        var dto = await _workflowApplication.GetNextStepsAsync(order.WorkflowId, stepOne.Id, HttpContext.RequestAborted);
+        dto.ExpiredTime = order.ExpiredTime;
+        var rsp = _mapper.Map<NextStepsWithOpinionDto<RecommendStepOption>>(dto);
+        foreach (var step in rsp.Steps)
+        {
+            if (dto.CurrentStepBusinessType is not EBusinessType.Send ||
+                step.BusinessType is not EBusinessType.Department) continue;
+            var org = await _organizeRepository.GetAsync(d => d.AreaCode == order.AreaCode, HttpContext.RequestAborted);
+            if (org is null) continue;
+            step.RecommendOrgId = org.Id;
+            step.RecommendOrgName = org.Name;
+        }
+
+        return rsp;
+    }
+
+    /// <summary>
+    /// 结束会签
+    /// </summary>
+    [HttpPost("endcs")]
     public async Task EndCountersign([FromBody] EndCountersignDto dto)
     {
         var workflow = await _workflowDomainService.TerminalCountersignAsync(dto.CountersignId, HttpContext.RequestAborted);
@@ -3249,7 +3253,7 @@ public class OrderController : BaseController
         //}
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
-    
+
     /// <summary>
     /// 查询坐席待办
     /// </summary>
@@ -3266,7 +3270,7 @@ public class OrderController : BaseController
             dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
 
         var query = _orderRepository.Queryable();
-        if(dto.IsHandled.HasValue)
+        if (dto.IsHandled.HasValue)
         {
             var hasHandled = dto.IsHandled.Value;
             query = query.Where(d => SqlFunc.Subqueryable<WorkflowTrace>()
@@ -3275,8 +3279,8 @@ public class OrderController : BaseController
                                (!hasHandled || step.Status == EWorkflowStepStatus.Handled && step.TraceState != EWorkflowTraceState.StepRemoveByPrevious) &&
                                ((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)))).Any() || 
-                                     (string.IsNullOrEmpty(d.WorkflowId) && 
+                                (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)))).Any() ||
+                                     (string.IsNullOrEmpty(d.WorkflowId) &&
                                       (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId))
             );
         }
@@ -3333,7 +3337,7 @@ public class OrderController : BaseController
 
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
-    
+
     /// <summary>
     /// 查询中心待办
     /// </summary>
@@ -3396,7 +3400,7 @@ public class OrderController : BaseController
             .WhereIF(dto.ExpiredStatus is EExpiredStatus.Normal, d => DateTime.Now < d.NearlyExpiredTime)
             .WhereIF(dto.ExpiredStatus is EExpiredStatus.GoingToExpired, d => DateTime.Now > d.NearlyExpiredTime && DateTime.Now < d.ExpiredTime)
             .WhereIF(dto.ExpiredStatus is EExpiredStatus.Expired, d => DateTime.Now >= d.ExpiredTime)
-            .WhereIF(!string.IsNullOrEmpty(dto.CenterToOrgHandlerName),d=>d.CenterToOrgHandlerName == dto.CenterToOrgHandlerName)
+            .WhereIF(!string.IsNullOrEmpty(dto.CenterToOrgHandlerName), d => d.CenterToOrgHandlerName == dto.CenterToOrgHandlerName)
             .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent!.Value)
             .OrderBy(d => d.Status)
             .OrderBy(d => d.CreationTime, OrderByType.Desc)
@@ -3543,7 +3547,7 @@ public class OrderController : BaseController
                     WorkflowUserId = _sessionContext.RequiredUserId,
                     WorkflowRoleIds = _sessionContext.Roles.ToList(),
                     TraceId = currentStep.Id
-				};
+                };
                 await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
             }
             else
@@ -3661,45 +3665,45 @@ public class OrderController : BaseController
         return new PagedDto<SendBackDto>(total, _mapper.Map<IReadOnlyList<SendBackDto>>(items));
     }
 
-	/// <summary>
-	/// 工单业务退回审批列表导出
-	/// </summary>
-	/// <returns></returns>
-	[HttpPost("order_previous_list/_export")]
+    /// <summary>
+    /// 工单业务退回审批列表导出
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("order_previous_list/_export")]
     public async Task<FileStreamResult> OrgDataListDetailExport([FromBody] ExportExcelDto<SendBackListDto> dto)
     {
-	    var query = _orderSendBackAuditApplication.AuditList(dto.QueryDto);
-	    List<OrderSendBackAudit> data;
-	    if (dto.IsExportAll)
-	    {
-		    data = await query.ToListAsync(HttpContext.RequestAborted);
-	    }
-	    else
-	    {
-		    var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
-		    data = items;
-	    }
+        var query = _orderSendBackAuditApplication.AuditList(dto.QueryDto);
+        List<OrderSendBackAudit> data;
+        if (dto.IsExportAll)
+        {
+            data = await query.ToListAsync(HttpContext.RequestAborted);
+        }
+        else
+        {
+            var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
+            data = items;
+        }
 
-	    var dataDtos = _mapper.Map<ICollection<SendBackDto>>(data);
+        var dataDtos = _mapper.Map<ICollection<SendBackDto>>(data);
 
-	    dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+        dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
 
-	    var dtos = dataDtos
-		    .Select(stu => _mapper.Map(stu, typeof(SendBackDto), dynamicClass))
-		    .Cast<object>()
-		    .ToList();
+        var dtos = dataDtos
+            .Select(stu => _mapper.Map(stu, typeof(SendBackDto), dynamicClass))
+            .Cast<object>()
+            .ToList();
 
-	    var stream = ExcelHelper.CreateStream(dtos);
+        var stream = ExcelHelper.CreateStream(dtos);
 
-	    return ExcelStreamResult(stream, "工单退回列表数据");
+        return ExcelStreamResult(stream, "工单退回列表数据");
     }
 
-	/// <summary>
-	/// 退回详情
-	/// </summary>
-	/// <param name="id"></param>
-	/// <returns></returns>
-	[HttpGet("order_previous/{id}")]
+    /// <summary>
+    /// 退回详情
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    [HttpGet("order_previous/{id}")]
     public async Task<OrderSendBackAudit> OrderSendBackEntity(string id)
     {
         return await _orderSendBackAuditRepository.Queryable()
@@ -3714,24 +3718,24 @@ public class OrderController : BaseController
     [HttpGet("order_previous/base-data")]
     public async Task<object> OrderSendBackBaseData()
     {
-	    var rsp = new
-	    {
-		    AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
-		    ESendBackAuditState = EnumExts.GetDescriptions<ESendBackAuditState>(),
-	    };
-	    return rsp;
+        var rsp = new
+        {
+            AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
+            ESendBackAuditState = EnumExts.GetDescriptions<ESendBackAuditState>(),
+        };
+        return rsp;
     }
 
-	#endregion
+    #endregion
 
-	#region 省工单退回
+    #region 省工单退回
 
-	/// <summary>
-	/// 工单退回列表
-	/// </summary>
-	/// <param name="dto"></param>
-	/// <returns></returns>
-	[Permission(EPermission.SendBackOrder)]
+    /// <summary>
+    /// 工单退回列表
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [Permission(EPermission.SendBackOrder)]
     [HttpGet("send_back")]
     public async Task<PagedDto<OrderSendBackDto>> UrgeList([FromQuery] OrderSendBackListDto dto)
     {