瀏覽代碼

Merge branch 'dev' of http://110.188.24.182:10023/Fengwo/hotline into dev

xf 6 月之前
父節點
當前提交
6346b250c7

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

@@ -1980,11 +1980,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)
@@ -2032,12 +2032,14 @@ public class OrderController : BaseController
             query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
                     x => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
                          x.OrderVisit.Order.No.Contains(dto.Keyword!))
-                .Where(x => x.VisitTarget == EVisitTarget.Org && (
+                .WhereIF(dto.ScreenType == OrderScreenType.Org,x => x.VisitTarget == EVisitTarget.Org && (
                     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))
+				;
         }
 
         var (total, items) = await query
@@ -2112,18 +2114,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("甄别申请已超过系统预定设置,不能申请");
 
@@ -2292,7 +2294,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);
+							}
 						}
 					}
 				}

+ 26 - 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>
@@ -343,4 +356,17 @@ namespace Hotline.Share.Dtos.Order
 		/// </summary>
 		public DateTime ScreenByEndTime { get; set; }
 	}
+
+	public enum OrderScreenType 
+	{
+		/// <summary>
+		/// 部门办件
+		/// </summary>
+		Org = 0,
+
+		/// <summary>
+		/// 中心话务
+		/// </summary>
+		Seat =1,
+	}
 }

+ 4 - 1
src/Hotline.Share/Dtos/Order/QueryOrderDto.cs

@@ -745,7 +745,10 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public string? OrgNoSatisfiedReason { get; set; }
 
-       
+		/// <summary>
+		/// 甄别类型
+		/// </summary>
+		public OrderScreenType? ScreenType { get; set; }
 	}
 
     public record UrgeListDto : PagedKeywordRequest

+ 7 - 0
src/Hotline/Orders/OrderScreen.cs

@@ -4,6 +4,7 @@ using Hotline.Share.Enums.Order;
 using SqlSugar;
 using System.ComponentModel;
 using Hotline.Share.Dtos.File;
+using Hotline.Share.Dtos.Order;
 using XF.Domain.Repository;
 
 namespace Hotline.Orders
@@ -169,5 +170,11 @@ namespace Hotline.Orders
         /// </summary>
         [SugarColumn(ColumnDescription = "甄别审批时间")]
         public DateTime? NewestAuditTime { get; set; }
+
+        /// <summary>
+        /// 甄别类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "甄别类型",DefaultValue ="0")]
+		public OrderScreenType?  ScreenType { get; set; }
 	}
 }