Forráskód Böngészése

中心话务甄别

田爽 6 hónapja
szülő
commit
197dcd8276

+ 9 - 13
src/Hotline.Api/Controllers/OrderController.cs

@@ -1958,11 +1958,11 @@ public class OrderController : BaseController
             .Includes(x => x.OrderVisit, y => y.Employee)
             //.LeftJoin<OrderScreen>((x, s) => x.Id == s.VisitDetailId && s.IsDeleted == false)
             .Includes(x => x.OrderScreens)
-            .Where(x => x.OrderScreens.Any(s => s.Status == EScreenStatus.SendBack && s.SendBackApply == true) || x.OrderScreens.Any() == false
+            .Where(x => x.OrderScreens.Any(s => s.Status == EScreenStatus.SendBack && s.ScreenType == dto.ScreenType && s.SendBackApply == true) || x.OrderScreens.Any() == false
             //|| x.OrderScreens.Any(s => (s.Status != EScreenStatus.SendBack && s.SendBackApply != true)) == false
             )
-            .WhereIF(dto.ScreenSendBack is 1, x => x.OrderScreens.Any(s => s.Status == EScreenStatus.SendBack && s.SendBackApply == true))
-            .WhereIF(dto.ScreenSendBack is 2, x => x.OrderScreens.Any(s => (s.Status != EScreenStatus.SendBack && s.SendBackApply != true)) == false)
+            .WhereIF(dto.ScreenSendBack is 1, x => x.OrderScreens.Any(s => s.Status == EScreenStatus.SendBack && s.ScreenType == dto.ScreenType && s.SendBackApply == true))
+            .WhereIF(dto.ScreenSendBack is 2, x => x.OrderScreens.Any(s => (s.Status != EScreenStatus.SendBack && s.ScreenType == dto.ScreenType && s.SendBackApply != true)) == false)
             .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order!.No!.Contains(dto.No!))
             .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order!.Title!.Contains(dto.Title!))
             .WhereIF(dto.IsProvince.HasValue, x => x.OrderVisit.Order!.IsProvince == dto.IsProvince)
@@ -2016,12 +2016,7 @@ public class OrderController : BaseController
                     SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
                     SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
                 ))
-                .WhereIF(dto.ScreenType == OrderScreenType.Seat, x => x.VisitTarget == EVisitTarget.Seat && (
-	                SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
-	                SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2" ||
-	                SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
-	                SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
-                ))
+                .WhereIF(dto.ScreenType == OrderScreenType.Seat, x => x.VisitTarget == EVisitTarget.Seat && (x.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied || x.SeatEvaluate  == ESeatEvaluate.NoSatisfied))
 				;
         }
 
@@ -2097,18 +2092,18 @@ public class OrderController : BaseController
     public async Task StartFlow([FromBody] StartWorkflowDto<OrderScreenDto> dto)
     {
         var screenAny = await _orderScreenRepository.AnyAsync(x =>
-            x.VisitDetailId == dto.Data.VisitDetailId &&
+            x.VisitDetailId == dto.Data.VisitDetailId && x.ScreenType == dto.Data.ScreenType
             (x.Status == EScreenStatus.Apply || x.Status == EScreenStatus.Approval));
         if (screenAny)
             throw UserFriendlyException.SameMessage("该工单已提起甄别申请,正在审批过程中,不能申请");
 
-        var isNoPass = await _orderScreenRepository.AnyAsync(x => x.Status == EScreenStatus.Refuse && x.VisitDetailId == dto.Data.VisitDetailId);
+        var isNoPass = await _orderScreenRepository.AnyAsync(x => x.Status == EScreenStatus.Refuse && x.ScreenType == dto.Data.ScreenType && x.VisitDetailId == dto.Data.VisitDetailId);
         if (isNoPass)
             throw UserFriendlyException.SameMessage("该工单已被拒绝过甄别申请,不能再次申请");
 
         var setting = _systemSettingCacheManager.GetSetting(SettingConstants.ScreenApplyNum);
         int count = await _orderScreenRepository.CountAsync(x =>
-            x.OrderId == dto.Data.OrderId && x.Status == EScreenStatus.Refuse && x.VisitDetailId == dto.Data.VisitDetailId);
+            x.OrderId == dto.Data.OrderId && x.Status == EScreenStatus.Refuse && x.ScreenType == dto.Data.ScreenType && x.VisitDetailId == dto.Data.VisitDetailId);
         if (count > int.Parse(setting?.SettingValue[0]) && int.Parse(setting?.SettingValue[0]) > -1)
             throw UserFriendlyException.SameMessage("甄别申请已超过系统预定设置,不能申请");
 
@@ -2277,7 +2272,8 @@ public class OrderController : BaseController
         var rsp = new
         {
             ScreenStatus = EnumExts.GetDescriptions<EScreenStatus>(),
-            ScreenType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.ScreenType),
+            OrderScreenType = EnumExts.GetDescriptions<OrderScreenType>(),
+			ScreenType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.ScreenType),
             CounterSignType = EnumExts.GetDescriptions<ECounterSignType>(),
             AcceptType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
             SourceChannel = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.SourceChannel),

+ 48 - 41
src/Hotline.Application/Orders/OrderScreenHandler/OrderScreenEndWorkflowHandler.cs

@@ -61,53 +61,60 @@ public class OrderScreenEndWorkflowHandler : INotificationHandler<EndWorkflowNot
 				{
 					screen.Status = EScreenStatus.End;
 					screen.ReplyContent = workflow.ActualOpinion;
-					await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
+					//await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
 					var visitDetail =
 						await _orderVisitedDetailRepository.GetAsync(screen.VisitDetailId, cancellationToken);
 					if (visitDetail != null)
 					{
-						var screenSatisfy = new Kv() { Key = "-1", Value = "视为满意" };
-						visitDetail.OrgProcessingResults = screenSatisfy;
-						//visitDetail.OrgHandledAttitude = screenSatisfy;
-						await _orderVisitedDetailRepository.UpdateAsync(visitDetail, cancellationToken);
-						// 修改主表当前评价结果
-						await _orderVisitRepository.Updateable().SetColumns(v => new OrderVisit() { NowEvaluate = screenSatisfy }).Where(v => v.Id == visitDetail.VisitId).ExecuteCommandAsync(cancellationToken);
-						//获取回访信息
-						var visit = await _orderVisitRepository.Queryable().Includes(x => x.Order)
-							.Includes(x => x.OrderVisitDetails)
-							.Where(x => x.Id == screen.VisitId).FirstAsync(cancellationToken);
-						if (visit != null)
+						if (screen.ScreenType == OrderScreenType.Seat)
 						{
-							//获取回访明细
-							var visitDe = visit.OrderVisitDetails.First(x => x.Id == screen.VisitDetailId);
-							//推省上
-							await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderScreenApplyed,
-								  new PublishVisitDto()
-								  {
-									  Order = _mapper.Map<OrderDto>(visit.Order),
-									  No = visit.No,
-									  VisitType = visit.VisitType,
-									  VisitName = visit.CreatorName,
-									  VisitTime = visit.VisitTime,
-									  VisitRemark = string.IsNullOrEmpty(visitDe.VisitContent) ? screenSatisfy.Value : visitDe.VisitContent,
-									  AreaCode = visit.Order.AreaCode!,
-									  SubjectResultSatifyCode = visitDe.OrgProcessingResults?.Key,
-									  FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
-									  ClientGuid = ""
-								  });
-
-							//推门户
-							await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto()
+							visitDetail.SeatEvaluate = ESeatEvaluate.DefaultSatisfied;
+							await _orderVisitedDetailRepository.UpdateAsync(visitDetail, cancellationToken);
+						}
+						else {
+							var screenSatisfy = new Kv() { Key = "-1", Value = "视为满意" };
+							visitDetail.OrgProcessingResults = screenSatisfy;
+							//visitDetail.OrgHandledAttitude = screenSatisfy;
+							await _orderVisitedDetailRepository.UpdateAsync(visitDetail, cancellationToken);
+							// 修改主表当前评价结果
+							await _orderVisitRepository.Updateable().SetColumns(v => new OrderVisit() { NowEvaluate = screenSatisfy }).Where(v => v.Id == visitDetail.VisitId).ExecuteCommandAsync(cancellationToken);
+							//获取回访信息
+							var visit = await _orderVisitRepository.Queryable().Includes(x => x.Order)
+								.Includes(x => x.OrderVisitDetails)
+								.Where(x => x.Id == screen.VisitId).FirstAsync(cancellationToken);
+							if (visit != null)
 							{
-								Id = visit.Id,
-								Order = _mapper.Map<OrderDto>(visit.Order),
-								OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(visit.OrderVisitDetails),
-								VisitName = visit.CreatorName,
-								VisitTime = visit.VisitTime,
-								VisitType = visit.VisitType,
-								VisitState = visit.VisitState,
-								PublishTime = visit.PublishTime,
-							}, cancellationToken: cancellationToken);
+								//获取回访明细
+								var visitDe = visit.OrderVisitDetails.First(x => x.Id == screen.VisitDetailId);
+								//推省上
+								await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderScreenApplyed,
+									new PublishVisitDto()
+									{
+										Order = _mapper.Map<OrderDto>(visit.Order),
+										No = visit.No,
+										VisitType = visit.VisitType,
+										VisitName = visit.CreatorName,
+										VisitTime = visit.VisitTime,
+										VisitRemark = string.IsNullOrEmpty(visitDe.VisitContent) ? screenSatisfy.Value : visitDe.VisitContent,
+										AreaCode = visit.Order.AreaCode!,
+										SubjectResultSatifyCode = visitDe.OrgProcessingResults?.Key,
+										FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
+										ClientGuid = ""
+									});
+
+								//推门户
+								await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto()
+								{
+									Id = visit.Id,
+									Order = _mapper.Map<OrderDto>(visit.Order),
+									OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(visit.OrderVisitDetails),
+									VisitName = visit.CreatorName,
+									VisitTime = visit.VisitTime,
+									VisitType = visit.VisitType,
+									VisitState = visit.VisitState,
+									PublishTime = visit.PublishTime,
+								}, cancellationToken: cancellationToken);
+							}
 						}
 					}
 				}

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

@@ -95,10 +95,23 @@ namespace Hotline.Share.Dtos.Order
 		/// 甄别重提申请次数
 		/// </summary>
 		public int SendBackApplyNum { get; set; }
+
+		/// <summary>
+		/// 甄别类型
+		/// </summary>
+		public OrderScreenType? ScreenType { get; set; }
 	}
 
 	public class OrderScreenListDto
 	{
+
+		/// <summary>
+		/// 甄别类型
+		/// </summary>
+		public OrderScreenType? ScreenType { get; set; }
+
+		public string ScreenTypeText => ScreenType.GetDescription();
+
 		/// <summary>
 		/// 是否可办理
 		/// </summary>