Procházet zdrojové kódy

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

田爽 před 9 měsíci
rodič
revize
1e354887b4

+ 47 - 35
src/Hotline.Api/Controllers/OrderController.cs

@@ -342,15 +342,18 @@ public class OrderController : BaseController
                             else
                             {
                                 //存在修改
-                                orderData = _mapper.Map<ContingencyManagementOrders>(order);
+                                _mapper.Map(order, orderData);
                                 orderData.ArrangementOpinion = order.ActualOpinion;
                                 orderData.ArrangeTitle = order.Title;
                                 orderData.ArrangeContent = order.Content;
                                 await _contingencyManagementOrdersRepository.UpdateAsync(orderData, HttpContext.RequestAborted);
                             }
                             //推送消息
-                            await _capPublisher.PublishAsync(Share.Mq.EventNames.HotlineOrderContingencyManagement,
-                                _mapper.Map<ContingencyManagementOrdersDto>(orderData), Share.Mq.EventNames.HotlineOrderContingencyManagementState);
+                            var pushaData = _mapper.Map<ContingencyManagementOrdersDto>(orderData);
+                            pushaData.Id = orderData.Id;
+                            //推送消息
+                            await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderContingencyManagement,
+                             pushaData, Hotline.Share.Mq.EventNames.HotlineOrderContingencyManagementState);
                         }
                     }
                     catch (Exception)
@@ -367,6 +370,9 @@ public class OrderController : BaseController
                     if (order is { ProcessType: EProcessType.Zhiban, CounterSignType: null })
                     {
                         orderVisit.VisitState = EVisitState.Visited;
+                        orderVisit.VisitTime = DateTime.Now;
+                        orderVisit.VisitType = EVisitType.OtherVisit;
+                        orderVisit.NowEvaluate = new Kv() { Key = "4", Value = "满意" };
                     }
 
                     if (order.CounterSignType != ECounterSignType.Center)
@@ -393,7 +399,7 @@ public class OrderController : BaseController
                     {
                         var satisfy = new Kv() { Key = "4", Value = "满意" };
                         orgDetail.OrgProcessingResults = satisfy;
-                        orgDetail.OrgHandledAttitude = satisfy;
+                        //orgDetail.OrgHandledAttitude = satisfy;
                     }
 
                     visitedDetail.Add(orgDetail);
@@ -477,15 +483,18 @@ public class OrderController : BaseController
                 else
                 {
                     //存在修改
-                    orderData = _mapper.Map<ContingencyManagementOrders>(order);
+                    _mapper.Map(order, orderData);
                     orderData.ArrangementOpinion = dto.ArrangeOpinion;
                     orderData.ArrangeTitle = dto.ArrangeTitle;
                     orderData.ArrangeContent = dto.ArrangeContent;
                     await _contingencyManagementOrdersRepository.UpdateAsync(orderData, HttpContext.RequestAborted);
                 }
+                var pushaData = _mapper.Map<ContingencyManagementOrdersDto>(orderData);
+                pushaData.Id = order.Id;
+                pushaData.CreationTime = order.CreationTime;
                 //推送消息
                 await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderContingencyManagement,
-                    _mapper.Map<ContingencyManagementOrdersDto>(orderData), Hotline.Share.Mq.EventNames.HotlineOrderContingencyManagementState);
+                 pushaData, Hotline.Share.Mq.EventNames.HotlineOrderContingencyManagementState);
             }
         }
         catch (Exception)
@@ -506,6 +515,9 @@ public class OrderController : BaseController
         if (order is { ProcessType: EProcessType.Zhiban, CounterSignType: null })
         {
             orderVisit.VisitState = EVisitState.Visited;
+            orderVisit.VisitTime = DateTime.Now;
+            orderVisit.VisitType = EVisitType.OtherVisit;
+            orderVisit.NowEvaluate = new Kv() { Key = "4", Value = "满意" };
         }
 
         if (order.CounterSignType != ECounterSignType.Center)
@@ -532,7 +544,7 @@ public class OrderController : BaseController
             {
                 var satisfy = new Kv() { Key = "4", Value = "满意" };
                 orgDetail.OrgProcessingResults = satisfy;
-                orgDetail.OrgHandledAttitude = satisfy;
+                //orgDetail.OrgHandledAttitude = satisfy;
             }
 
             visitedDetail.Add(orgDetail);
@@ -1729,14 +1741,14 @@ public class OrderController : BaseController
             .WhereIF(!string.IsNullOrEmpty(dto.CurrentHandleOrgName), x => x.OrderVisit.Order!.CurrentHandleOrgName!.Contains(dto.CurrentHandleOrgName!))
             .WhereIF(!string.IsNullOrEmpty(dto.VisitOrgName), x => x.VisitOrgName!.Contains(dto.VisitOrgName!))
             .WhereIF(dto.CreationTime.HasValue && dto.EndCreationTime.HasValue,
-	            x => x.OrderVisit.Order!.CreationTime >= dto.CreationTime && x.OrderVisit.Order!.CreationTime <= dto.EndCreationTime)
+                x => x.OrderVisit.Order!.CreationTime >= dto.CreationTime && x.OrderVisit.Order!.CreationTime <= dto.EndCreationTime)
             .WhereIF(dto.CurrentHandleTime.HasValue && dto.EndCurrentHandleTime.HasValue,
                 x => x.OrderVisit.Order!.CurrentHandleTime >= dto.CurrentHandleTime && x.OrderVisit.Order!.ActualHandleTime <= dto.EndCurrentHandleTime)
             .WhereIF(dto.FiledTime.HasValue && dto.EndFiledTime.HasValue,
-	            x => x.OrderVisit.Order!.FiledTime >= dto.FiledTime && x.OrderVisit.Order!.FiledTime <= dto.EndFiledTime)
+                x => x.OrderVisit.Order!.FiledTime >= dto.FiledTime && x.OrderVisit.Order!.FiledTime <= dto.EndFiledTime)
             .WhereIF(dto.VisitTime.HasValue && dto.EndVisitTime.HasValue,
-	            x => x.OrderVisit.VisitTime >= dto.VisitTime && x.OrderVisit.VisitTime <= dto.EndVisitTime)
-			.WhereIF(dto.IsHomePage.HasValue && dto.IsHomePage == true,
+                x => x.OrderVisit.VisitTime >= dto.VisitTime && x.OrderVisit.VisitTime <= dto.EndVisitTime)
+            .WhereIF(dto.IsHomePage.HasValue && dto.IsHomePage == true,
                 x => x.OrderVisit.VisitTime < dto.CreationTimeEnd && x.OrderVisit.VisitTime > dto.CreationTimeStart)
             //.WhereIF(dto.CounterSignType.HasValue, x => x.OrderVisit.Order!.CounterSignType == dto.CounterSignType)
             //.WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults),
@@ -1807,31 +1819,31 @@ public class OrderController : BaseController
         }
 
         var (total, items) = await query
-	        .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.Order!.AcceptTypeCode! == dto.AcceptType!)
-	        .WhereIF(!string.IsNullOrEmpty(dto.HotspotSpliceName), x => x.Order!.Hotspot.HotSpotFullName!.StartsWith(dto.HotspotSpliceName!))
-	        .WhereIF(!string.IsNullOrEmpty(dto.SourceChannel), x => x.Order!.SourceChannelCode! == dto.SourceChannel!)
-	        .WhereIF(!string.IsNullOrEmpty(dto.VisitOrgName), x => x.VisitDetail.VisitOrgName!.Contains(dto.VisitOrgName!))
-	        .WhereIF(!string.IsNullOrEmpty(dto.CreatorOrgName), d => d.CreatorOrgName == dto.CreatorOrgName)
-	        .WhereIF(dto.IsProvince.HasValue, x => x.Order!.IsProvince == dto.IsProvince)
-            .WhereIF(dto.IsSendBackApplyNum is true , x=> x.SendBackApplyNum > 0)
-	        .WhereIF(dto.IsSendBackApplyNum is false, x => x.SendBackApplyNum == 0)
-			.WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
+            .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.Order!.AcceptTypeCode! == dto.AcceptType!)
+            .WhereIF(!string.IsNullOrEmpty(dto.HotspotSpliceName), x => x.Order!.Hotspot.HotSpotFullName!.StartsWith(dto.HotspotSpliceName!))
+            .WhereIF(!string.IsNullOrEmpty(dto.SourceChannel), x => x.Order!.SourceChannelCode! == dto.SourceChannel!)
+            .WhereIF(!string.IsNullOrEmpty(dto.VisitOrgName), x => x.VisitDetail.VisitOrgName!.Contains(dto.VisitOrgName!))
+            .WhereIF(!string.IsNullOrEmpty(dto.CreatorOrgName), d => d.CreatorOrgName == dto.CreatorOrgName)
+            .WhereIF(dto.IsProvince.HasValue, x => x.Order!.IsProvince == dto.IsProvince)
+            .WhereIF(dto.IsSendBackApplyNum is true, x => x.SendBackApplyNum > 0)
+            .WhereIF(dto.IsSendBackApplyNum is false, x => x.SendBackApplyNum == 0)
+            .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.OrgLevelOneName), x => x.Order!.OrgLevelOneName!.Contains(dto.OrgLevelOneName!))
-	        .WhereIF(!string.IsNullOrEmpty(dto.CurrentHandleOrgName), x => x.Order!.CurrentHandleOrgName!.Contains(dto.CurrentHandleOrgName!))
-	        .WhereIF(dto.CreationTime.HasValue && dto.EndCreationTime.HasValue,
-		        x => x.Order!.CreationTime >= dto.CreationTime && x.Order!.CreationTime <= dto.EndCreationTime)
-	        .WhereIF(dto.CurrentHandleTime.HasValue && dto.EndCurrentHandleTime.HasValue,
-		        x => x.Order!.CurrentHandleTime >= dto.CurrentHandleTime && x.Order!.ActualHandleTime <= dto.EndCurrentHandleTime)
-	        .WhereIF(dto.FiledTime.HasValue && dto.EndFiledTime.HasValue,
-		        x => x.Order!.FiledTime >= dto.FiledTime && x.Order!.FiledTime <= dto.EndFiledTime)
-	        .WhereIF(dto.VisitTime.HasValue && dto.EndVisitTime.HasValue,
-		        x => x.Visit.VisitTime >= dto.VisitTime && x.Visit.VisitTime <= dto.EndVisitTime)
-	        .WhereIF(!string.IsNullOrEmpty(dto.Contact), x => x.Order!.Contact! == dto.Contact!)
-	        .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), x => x.Order!.FromPhone! == dto.FromPhone!)
-			.OrderByDescending(d => d.CreationTime)
+            //甄别列表
+            .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), x => x.Order!.OrgLevelOneName!.Contains(dto.OrgLevelOneName!))
+            .WhereIF(!string.IsNullOrEmpty(dto.CurrentHandleOrgName), x => x.Order!.CurrentHandleOrgName!.Contains(dto.CurrentHandleOrgName!))
+            .WhereIF(dto.CreationTime.HasValue && dto.EndCreationTime.HasValue,
+                x => x.Order!.CreationTime >= dto.CreationTime && x.Order!.CreationTime <= dto.EndCreationTime)
+            .WhereIF(dto.CurrentHandleTime.HasValue && dto.EndCurrentHandleTime.HasValue,
+                x => x.Order!.CurrentHandleTime >= dto.CurrentHandleTime && x.Order!.ActualHandleTime <= dto.EndCurrentHandleTime)
+            .WhereIF(dto.FiledTime.HasValue && dto.EndFiledTime.HasValue,
+                x => x.Order!.FiledTime >= dto.FiledTime && x.Order!.FiledTime <= dto.EndFiledTime)
+            .WhereIF(dto.VisitTime.HasValue && dto.EndVisitTime.HasValue,
+                x => x.Visit.VisitTime >= dto.VisitTime && x.Visit.VisitTime <= dto.EndVisitTime)
+            .WhereIF(!string.IsNullOrEmpty(dto.Contact), x => x.Order!.Contact! == dto.Contact!)
+            .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), x => x.Order!.FromPhone! == dto.FromPhone!)
+            .OrderByDescending(d => d.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
         return new PagedDto<OrderScreenListDto>(total, _mapper.Map<IReadOnlyList<OrderScreenListDto>>(items));
     }
@@ -3651,7 +3663,7 @@ public class OrderController : BaseController
                 d => d.CreationTime >= dto.StCreationTime && d.CreationTime <= dto.EndCreationTime)
             .WhereIF(dto is { StartTimeSt: not null, StartTimeEnd: not null }, d => d.StartTime >= dto.StartTimeSt && d.StartTime <= dto.StartTimeEnd)
             .WhereIF(!string.IsNullOrEmpty(dto.StepName), d => d.ActualHandleStepName == dto.StepName)
-            .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName == dto.ActualHandleOrgName!)
+            .WhereIF(!string.IsNullOrEmpty(dto.CurrentHandleOrgName), d => d.CurrentHandleOrgName == dto.CurrentHandleOrgName!)
             .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status)
             .WhereIF(!string.IsNullOrEmpty(dto.AcceptorName), d => d.AcceptorName!.Contains(dto.AcceptorName!))
             .WhereIF(dto.ExpiredStatus is EExpiredStatus.Normal, d => DateTime.Now < d.NearlyExpiredTime)

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

@@ -1,7 +1,7 @@
 {
   "AllowedHosts": "*",
   "CallCenterConfiguration": {
-    "CallCenterType": "XingTang", //XunShi、WeiErXin、TianRun、XingTang
+    "CallCenterType": "TianRun", //XunShi、WeiErXin、TianRun、XingTang
     "NewRock": {
       "Address": "http://192.168.100.100/xml",
       "Authorize": true,

+ 3 - 1
src/Hotline.Application/Orders/OrderApplication.cs

@@ -1284,7 +1284,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .InnerJoin<Hotspot>((x, h) => h.Id == x.OrderVisit.Order.HotspotId.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("2")) && h.ParentId == null)
             .Where(x => x.OrderVisit.VisitTime >= dto.StartTime.Value && x.OrderVisit.VisitTime <= dto.EndTime.Value && x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited && !string.IsNullOrEmpty(x.VisitOrgCode))
             .WhereIF(string.IsNullOrEmpty(dto.HotspotName) == false, (x, h) => h.HotSpotName == dto.HotspotName)
-            .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.OrgId));
+            .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.OrgId))
+            .WhereIF(dto.TypeId == 1 ,x=>x.OrgProcessingResults != null)
+			.WhereIF(dto.TypeId == 2, x => x.OrgHandledAttitude != null);
 
         var data = new List<VisitAndHotspotSatisfactionStatisticsDto>();
 

+ 1 - 1
src/Hotline.Application/Orders/OrderSendBackAuditApplication.cs

@@ -36,7 +36,7 @@ namespace Hotline.Application.Orders
 				.WhereIF(dto.AuditState == 1, d => d.State == ESendBackAuditState.Apply)
 				.WhereIF(dto is { AuditState: 2, State: null }, d => d.State > ESendBackAuditState.Apply)
 				.WhereIF(dto.AuditState is 2 or 3 && dto.State.HasValue, d => d.State == dto.State)
-				.WhereIF(dto.AuditState == 3 && _sessionContext.RequiredOrgId != OrgSeedData.CenterId, x => x.SendBackOrgId.StartsWith(_sessionContext.OrgId))
+				.WhereIF(dto.AuditState == 3 && _sessionContext.RequiredOrgId != OrgSeedData.CenterId, x => x.ApplyOrgId.StartsWith(_sessionContext.OrgId))
 				.WhereIF(_sessionContext.Roles.Contains("role_sysadmin") == false && dto.AuditState != 3, x => x.SendBackOrgId == _sessionContext.OrgId) // 123 系统管理员;
 				.OrderByDescending(x => x.CreationTime);
 		}

+ 1 - 1
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -809,7 +809,7 @@ namespace Hotline.Repository.SqlSugar.Orders
                .Where(x => x.AcceptTypeCode == dto.AcceptTypeCode && x.CreationTime.ToString("yyyy-MM-dd") == Date)
                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No == dto.No)
                .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title))
-               .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), x => x.ActualHandleOrgName.Contains(dto.ActualHandleOrgName))
+               .WhereIF(!string.IsNullOrEmpty(dto.CurrentHandleOrgName), x => x.ActualHandleOrgName.Contains(dto.CurrentHandleOrgName))
                .Select(x => new HotspotAndAreaStatisticsDetailDto
                {
                    Id = x.Id,

+ 57 - 0
src/Hotline.Share/Dtos/ContingencyManagement/ContingencyManagementOrdersDto.cs

@@ -6,6 +6,8 @@ namespace Hotline.Share.Dtos.ContingencyManagement
 {
     public class ContingencyManagementOrdersDto
     {
+        public string Id { get; set; }
+
         /// <summary>
         /// 来源渠道(电话、网站、APP等)
         /// </summary>
@@ -181,6 +183,61 @@ namespace Hotline.Share.Dtos.ContingencyManagement
         /// </summary>
         public string? ArrangementOpinion { get; set; }
 
+        /// <summary>
+        /// 经度
+        /// </summary>
+        public double? Longitude { get; set; }
+
+        /// <summary>
+        /// 维度
+        /// </summary>
+        public double? Latitude { get; set; }
+
+        /// <summary>
+        /// 行政区划编码
+        /// </summary>
+        public string? AreaCode { get; set; }
+
+        /// <summary>
+        /// 省
+        /// </summary>
+        public string? Province { get; set; }
+
+        /// <summary>
+        /// 市
+        /// </summary>
+        public string? City { get; set; }
+
+        /// <summary>
+        /// 区/县
+        /// </summary>
+        public string? County { get; set; }
+
+        /// <summary>
+        /// 乡镇(4级行政区划)
+        /// </summary>
+        public string? Town { get; set; }
+
+        /// <summary>
+        /// 详细街道
+        /// </summary>
+        public string? Street { get; set; }
+
+        /// <summary>
+        /// 行政区划地址
+        /// </summary>
+        public string? Address { get; set; }
+
+        /// <summary>
+        /// 完整地址
+        /// </summary>
+        public string? FullAddress { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public DateTime CreationTime { get; set; }
+
         /// <summary>
         ///  推送状态 0:推送中,1:成功,2:失败
         /// </summary>

+ 1 - 1
src/Hotline.Share/Dtos/Order/OrderWaitedDto.cs

@@ -81,7 +81,7 @@ namespace Hotline.Share.Dtos.Order
         /// <summary>
         /// 接办部门
         /// </summary>
-        public string? ActualHandleOrgName { get; set; }
+        public string? CurrentHandleOrgName { get; set; }
 
         /// <summary>
         /// 状态

+ 1 - 1
src/Hotline.Share/Hotline.Share.csproj

@@ -7,7 +7,7 @@
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <NoWarn>$(NoWarn);1591;8618;</NoWarn>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <Version>1.0.89</Version>
+    <Version>1.0.91</Version>
   </PropertyGroup>
 
   <ItemGroup>

+ 1 - 1
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -452,7 +452,7 @@ public record AcceptTypeStatisticsByDateDetailReq:PagedRequest
     /// <summary>
     /// 接办部门名称
     /// </summary>
-    public string? ActualHandleOrgName { get; set; }
+    public string? CurrentHandleOrgName { get; set; }
 
     /// <summary>
     /// 受理类型Code

+ 1 - 0
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -609,6 +609,7 @@ namespace Hotline.FlowEngine.Workflows
             //    applicantIsCenter, cancellationToken);
             var trace = workflow.Traces.First(t => t.StepId == currentStep.Id);
             _mapper.Map(dto, trace);
+            trace.FileJson = currentStep.FileJson;
 
             //HandleTrace(trace, dto.Opinion, current);
 

+ 17 - 0
src/Hotline/Permissions/EPermission.cs

@@ -2287,6 +2287,16 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName ="数据统计",Name ="热点区域统计",Description ="热点区域统计")]
         HotspotAndAreaStatistics = 110222,
+        /// <summary>
+        /// 热点满意度统计
+        /// </summary>
+        [Display(GroupName ="数据统计",Name ="热点满意度统计",Description ="热点满意度统计")]
+        HotspotSatisfiedStatistics = 110223,
+        /// <summary>
+        /// 热点受理类型统计
+        /// </summary>
+        [Display(GroupName = "数据统计", Name = "热点受理类型统计", Description = "热点受理类型统计")]
+        HotspotAcceptTypeStatistics = 110234,
         #endregion
 
         #region 知识库统计(11,03,00)
@@ -2543,12 +2553,19 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName = "省平台对接", Name = "省平台对接", Description = "省平台对接")]
         ProvinceAbutment = 140000,
+        #region 省综合查询
         /// <summary>
         /// 省综合查询
         /// </summary>
         [Display(GroupName ="省平台对接",Name ="省综合查询",Description ="省综合查询")]
         ProvinceOrderList = 140100,
         /// <summary>
+        /// 省工单退回
+        /// </summary>
+        [Display(GroupName = "省平台对接", Name = "省工单退回", Description = "省工单退回")]
+        ProvinceSendBack = 140101,
+        #endregion
+        /// <summary>
         /// 省延期查询
         /// </summary>
         [Display(GroupName ="省平台对接",Name ="省延期查询",Description ="省延期查询")]

+ 53 - 1
src/Hotline/dataview.md

@@ -186,4 +186,56 @@ CASE "DelayState"
 END AS DelayState 
  from order_delay delaytemp
 left join "order" ordertemp on delaytemp."OrderId"= ordertemp."Id"
-where ordertemp."CreationTime">='2024-06-01' and ordertemp."CreationTime"<'2024-07-01' and delaytemp."DelayState"<>3
+where ordertemp."CreationTime">='2024-06-01' and ordertemp."CreationTime"<'2024-07-01' and delaytemp."DelayState"<>3
+
+
+### 智能回访任务统计
+select 
+cc."No" as "No",
+cc."Title" as "Title",
+CASE aa."AiOrderVisitState"
+	WHEN 1 THEN '待执行'
+	WHEN 2 THEN '暂停中'
+	WHEN 3 THEN '执行中'
+	WHEN 4 THEN '失效'
+	WHEN 5 THEN '呼叫失败'
+	WHEN 6 THEN '已结束'
+	ELSE
+		'未知'
+END AS "AiOrderVisitState",
+CASE aa."IsSuccess"
+	WHEN true THEN
+		'成功'
+	ELSE
+		'失败'
+END AS "IsSuccess",
+aa."OuterNo" as "OuterNo",
+cc."FromName" as "FromName",
+CASE cc."FromGender"
+		WHEN 0 THEN '女士'
+	WHEN 1 THEN '先生'
+	ELSE '未知'
+END AS "FromGender",
+cc."StartTime" as "StartTime",
+cc."FiledTime" as "FiledTime",
+(select 
+CASE qq."SeatEvaluate"
+	WHEN 0 THEN	'默认满意'
+	WHEN 2 THEN '不满意'
+	WHEN 4 THEN '满意'
+	WHEN 5 THEN '非常满意'
+	WHEN 6 THEN '未接通'
+	WHEN 7 THEN '未做评价'
+	ELSE
+		'未知'
+END AS SeatEvaluate
+ from order_visit_detail qq where qq."VisitId"= aa."OrderVisitId" and qq."VisitTarget"=10 and qq."CreationTime">'2024-06-01' and qq."CreationTime"<'2024-07-24' LIMIT 1)  AS SeatEvaluate,
+(
+select ww."OrgProcessingResults"::JSON->>'Value'  from order_visit_detail ww  WHERE ww."VisitId" = aa."OrderVisitId" AND ww."VisitTarget"=20 and ww."CreationTime">'2024-06-01' and ww."CreationTime"<'2024-07-24' LIMIT 1) AS OrgProcessingResults,
+(select ee."IsContact"  from order_visit_detail ee  WHERE ee."VisitId" = aa."OrderVisitId" AND ee."VisitTarget"=20 and ee."CreationTime">'2024-06-01' and ee."CreationTime"<'2024-07-24' LIMIT 1) as "IsContact",
+(select rr."Volved"  from order_visit_detail rr  WHERE rr."VisitId" = aa."OrderVisitId" AND rr."VisitTarget"=20 and rr."CreationTime">'2024-06-01' and rr."CreationTime"<'2024-07-24' LIMIT 1) as "IsContact"
+ from ai_order_visit_detail aa
+left join order_visit bb on aa."OrderVisitId"=bb."Id"
+left join "order" cc on bb."OrderId"=cc."Id"
+--left join order_visit_detail dd on bb."Id"=dd."VisitId"
+where aa."CreationTime" >'2024-07-01' --and dd."VisitTarget"=20