Explorar o código

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

xf hai 1 ano
pai
achega
2a91451f17

+ 7 - 23
src/Hotline.Api/Controllers/OrderController.cs

@@ -998,26 +998,6 @@ public class OrderController : BaseController
             id = string.Empty;
             throw new UserFriendlyException($"工单开启甄别流程失败!, {e.Message}", "工单开启甄别流程失败");
         }
-        if (model.Publish.HasValue && model.Publish.Value && !string.IsNullOrEmpty(id))
-        {
-            var screen = await _orderScreenRepository.GetAsync(x => x.Id == id);
-            if (screen != null)
-            {
-                var screenDto = _mapper.Map<OrderScreenListDto>(screen);
-                var order = await _orderRepository.GetAsync(x => x.Id == dto.Data.OrderId);
-                if (order != null && order.Source == ESource.ProvinceStraight)
-                {
-                    var orderDto = _mapper.Map<OrderDto>(order);
-                    //推省上
-                    _capPublisher.Publish(EventNames.HotlineOrderScreenApply, new PublishScreenDto()
-                    {
-                        Order = orderDto,
-                        Screen = screenDto,
-                        ClientGuid = ""
-                    });
-                }
-            }
-        }
     }
 
     /// <summary>
@@ -1067,12 +1047,16 @@ public class OrderController : BaseController
     /// <returns></returns>
     [Permission(EPermission.ScreenEntity)]
     [HttpGet("screen/{id}")]
-    public async Task<OrderScreen> ScreenEntity(string id)
+    public async Task<OrderScreenDto> ScreenEntity(string id)
     {
-        return await _orderScreenRepository.Queryable()
+	    var model = await _orderScreenRepository.Queryable()
+            .Includes(x=>x.Workflow)
             .Includes(x => x.Visit, d => d.Order)
             .FirstAsync(x => x.Id == id);
-    }
+        var rspModel = _mapper.Map<OrderScreenDto>(model);
+        rspModel.IsCanHandle = model.Workflow.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId);
+        return rspModel;
+	}
 
     #endregion
 

+ 25 - 30
src/Hotline.Application/Handlers/FlowEngine/EndWorkflowHandler.cs

@@ -127,36 +127,31 @@ public class EndWorkflowHandler : INotificationHandler<EndWorkflowNotify>
                             visitDetail.OrgProcessingResults = screenSatisfy;
                             visitDetail.OrgHandledAttitude = screenSatisfy;
                             await _orderVisitedDetailRepository.UpdateAsync(visitDetail, cancellationToken);
-                            //推省上数据
-                            if (screen.Publish != null && screen.Publish.Value)
-                            {
-                                //获取回访信息
-                                var visit = await _orderVisitRepository.Queryable().Includes(x => x.Order)
-                                    .Includes(x => x.OrderVisitDetails)
-                                    .Where(x => x.Id == screen.VisitId).FirstAsync(cancellationToken);
-                                if (visit != null)
-                                {
-                                    //获取回访明细
-                                    var visitDe = visit.OrderVisitDetails.First(x => x.Id == screen.VisitDetailId);
-                                    //推省上
-                                    _capPublisher.Publish(EventNames.HotlineOrderVisited,
-                                        new PublishVisitDto()
-                                        {
-                                            Order = _mapper.Map<OrderDto>(visit.Order),
-                                            No = visit.No,
-                                            VisitType = visit.VisitType,
-                                            VisitName = visit.CreatorName,
-                                            VisitTime = visit.VisitTime,
-                                            VisitRemark = visitDe.VisitContent,
-                                            AreaCode = visit.Order.AreaCode!,
-                                            SubjectResultSatifyCode = visitDe.OrgProcessingResults?.Key,
-                                            FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
-                                            ClientGuid = ""
-                                        });
-                                }
-
-                            }
-                        }
+							//获取回访信息
+							var visit = await _orderVisitRepository.Queryable().Includes(x => x.Order)
+								.Includes(x => x.OrderVisitDetails)
+								.Where(x => x.Id == screen.VisitId).FirstAsync(cancellationToken);
+							if (visit != null)
+							{
+								//获取回访明细
+								var visitDe = visit.OrderVisitDetails.First(x => x.Id == screen.VisitDetailId);
+								//推省上
+								_capPublisher.Publish(EventNames.HotlineOrderScreenApplyed,
+									new PublishVisitDto()
+									{
+										Order = _mapper.Map<OrderDto>(visit.Order),
+										No = visit.No,
+										VisitType = visit.VisitType,
+										VisitName = visit.CreatorName,
+										VisitTime = visit.VisitTime,
+										VisitRemark = visitDe.VisitContent,
+										AreaCode = visit.Order.AreaCode!,
+										SubjectResultSatifyCode = visitDe.OrgProcessingResults?.Key,
+										FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
+										ClientGuid = ""
+									});
+							}
+						}
                     }
                     else
                     {

+ 28 - 2
src/Hotline.Application/Handlers/FlowEngine/NextStepHandler.cs

@@ -103,13 +103,39 @@ public class NextStepHandler : INotificationHandler<NextStepNotify>
             case WorkflowModuleConsts.KnowledgeUpdate:
             case WorkflowModuleConsts.KnowledgeDelete:
             case WorkflowModuleConsts.OrderScreen:
-                var screen = await _orderScreenRepository.GetAsync(workflow.ExternalId, cancellationToken);
+                var screen = await _orderScreenRepository.Queryable().Includes(x=>x.Order).Where(x=>x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
                 if (screen != null)
                 {
                     screen.Status = EScreenStatus.Approval;
                     await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
                 }
-                break;
+                if (nextTag is not null)
+                {
+	                if (nextTag.Type == TagDefaults.TagType.Org)
+	                {
+		                switch (nextTag.Value)
+		                {
+			                case TagDefaults.TagValue.Province:
+                                if (screen != null)
+                                {
+                                    var screenDto = _mapper.Map<OrderScreenListDto>(screen);
+                                    if (screen.Order != null && screen.Order.Source == ESource.ProvinceStraight)
+                                    {
+                                        var screenOrderDto = _mapper.Map<OrderDto>(screen.Order);
+                                        //推省上
+                                        _capPublisher.Publish(EventNames.HotlineOrderScreenApply, new PublishScreenDto()
+                                        {
+                                            Order = screenOrderDto,
+                                            Screen = screenDto,
+                                            ClientGuid = ""
+                                        });
+                                    }
+                                }
+                                break;
+		                }
+	                }
+                }
+				break;
             case WorkflowModuleConsts.OrderDelay:
                 if (nextTag is not null)
                 {

+ 5 - 0
src/Hotline.Share/Dtos/Order/OrderScreenDto.cs

@@ -66,6 +66,11 @@ namespace Hotline.Share.Dtos.Order
 		/// 附件列表
 		/// </summary>
 		public List<FileDto> Files { get; set; } = new();
+
+		/// <summary>
+		/// 是否可办理
+		/// </summary>
+		public bool IsCanHandle { get; set; }
 	}
 
 	public class OrderScreenListDto

+ 1 - 1
src/Hotline.Share/Mq/EventNames.Order.cs

@@ -39,7 +39,7 @@ namespace Hotline.Share.Mq
         public const string HotlineOrderScreenApply = "hotline.order.screen.apply";
 
         /// <summary>
-        /// 甄别申请完成
+        /// 甄别申请完成---甄别通过
         /// </summary>
         public const string HotlineOrderScreenApplyed = "hotline.order.screen.applyed";
 

+ 4 - 6
src/Hotline/Orders/OrderScreen.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Enums.Order;
+using Hotline.FlowEngine.Workflows;
+using Hotline.Share.Enums.Order;
 using SqlSugar;
 using XF.Domain.Repository;
 
@@ -92,11 +93,8 @@ namespace Hotline.Orders
 		[SugarColumn(ColumnDescription = "业务流程ID")]
 		public string? WorkflowId {  get; set; }
 
-		/// <summary>
-		/// 是否推送省上
-		/// </summary>
-		[SugarColumn(ColumnDescription = "是否推送省上")]
-		public bool? Publish { get; set; } = false;
+		[Navigate(NavigateType.OneToOne, nameof(WorkflowId))]
+		public Workflow? Workflow { get; set; }
 
 	}
 }