Browse Source

修改查询

tangjiang 6 tháng trước cách đây
mục cha
commit
77f6fc9c91

+ 35 - 137
src/DataSharing.Host/Controllers/HotlineWebController.cs

@@ -689,7 +689,7 @@ jxrWXHbT1FB6DqkdOnBbQqS1Azqz5HxLlSyEK3F60e3SgB5iZsDZ
                     operationLog.ReceiveServiceInterface = data.TaskType;
                     operationLog.Path = data.Path;
                     operationLog.RequestData = data.Request;
-                    resultId = await _initPushDataService.InitDsSendTaskSubmitCaseInfo(data.ProvinceNo, data.Request, data.RequestData, data.GenerationTime, HttpContext.RequestAborted);
+                    resultId = await _initPushDataService.InitDsSendTaskSubmitCaseInfo(data.OrderId, data.ProvinceNo, data.Request, data.RequestData, data.GenerationTime, HttpContext.RequestAborted);
                 }
             }
 
@@ -799,7 +799,8 @@ jxrWXHbT1FB6DqkdOnBbQqS1Azqz5HxLlSyEK3F60e3SgB5iZsDZ
                      CreationTime = p.CreationTime,
                      IntervalTime = SqlFunc.DateDiff(DateType.Second, p.GenerationTime.Value, p.LastTime.Value),
                      CaseSource = p.CaseSource,
-                     p.RequestData
+                     p.RequestData,
+                     p.OrderId
                  })
                  .MergeTable()
                  .Where(d => d.index == 1)
@@ -809,32 +810,6 @@ jxrWXHbT1FB6DqkdOnBbQqS1Azqz5HxLlSyEK3F60e3SgB5iZsDZ
                  .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
             return new PagedDto<object>(total, items);
 
-
-            //var items = await _dsOrderSendRepository.Queryable()
-            //    .Where(p => p.CreationTime >= dto.StartTime && p.CreationTime <= dto.EndTime)
-            //    .Where(p => p.FirstSendProvinceTime.HasValue && p.StartTime.HasValue)
-            //    .WhereIF(!string.IsNullOrEmpty(dto.CaseSerial), p => p.ProvinceNo == dto.CaseSerial)
-            //    .Select(p => new
-            //    {
-            //        p.OrderId,
-            //        p.OrderNo,
-            //        p.ProvinceNo,
-            //        p.CaseDate,
-            //        p.StartTime,
-            //        p.CallId,
-            //        p.FirstSendProvinceTime,
-            //        p.LastSendProvinceTime,
-            //        p.CaseSource,
-            //        p.CaseSourceCode,
-            //        p.ExpiredTime,
-            //        p.CreationTime
-            //    })
-            //    .MergeTable()
-            //    .WhereIF(dto.IsSuccess.HasValue && dto.IsSuccess == true, p => SqlFunc.DateDiff(DateType.Second, p.StartTime.Value, p.FirstSendProvinceTime.Value) <= 180)//及时上传
-            //    .WhereIF(dto.IsSuccess.HasValue && dto.IsSuccess == false, p => SqlFunc.DateDiff(DateType.Second, p.StartTime.Value, p.FirstSendProvinceTime.Value) > 180)//不及时上传
-            //     .OrderByDescending(p => p.CreationTime)
-            //    .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
-            //return new PagedDto<object>(total, items);
         }
 
         /// <summary>
@@ -879,45 +854,6 @@ jxrWXHbT1FB6DqkdOnBbQqS1Azqz5HxLlSyEK3F60e3SgB5iZsDZ
                  .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
             return new PagedDto<object>(total, items);
 
-            //var items = await _dsTelCallRepository.Queryable()
-            //    .Where(p => p.CreationTime >= dto.StartTime && p.CreationTime <= dto.EndTime)
-            //    .WhereIF(!string.IsNullOrEmpty(dto.CaseSerial), p => p.ProvinceNo == dto.CaseSerial)
-            //    .Where(p => p.FirstSendProvinceTime != null)
-            //    .Where(p => p.OverTime != null)
-            //    .Select(p => new
-            //    {
-            //        p.CallId,
-            //        p.CPN,
-            //        p.CDPN,
-            //        p.CallDirection,
-            //        p.TelNo,
-            //        p.UserName,
-            //        p.BeginIvrTime,
-            //        p.EndIvrTime,
-            //        p.BeginQueueTime,
-            //        p.EndQueueTime,
-            //        p.BeginRingTime,
-            //        p.EndRingTimg,
-            //        p.AnsweredTime,
-            //        p.OverTime,
-            //        p.Duration,
-            //        p.RingTimes,
-            //        p.QueueTims,
-            //        p.OnState,
-            //        p.RecordingFileUrl,
-            //        p.ProvinceNo,
-            //        p.FirstSendProvinceTime,
-            //        p.LastSendProvinceTime,
-            //        p.TaskId,
-            //        p.CreationTime
-            //    })
-            //    .MergeTable()
-            //    .WhereIF(dto.IsSuccess.HasValue && dto.IsSuccess == true, p => SqlFunc.DateDiff(DateType.Second, p.OverTime.Value, p.FirstSendProvinceTime.Value) <= 180)//及时
-            //    .WhereIF(dto.IsSuccess.HasValue && dto.IsSuccess == false, p => SqlFunc.DateDiff(DateType.Second, p.OverTime.Value, p.FirstSendProvinceTime.Value) > 180)//不及时
-            //    .OrderByDescending(p => p.CreationTime)
-            //    .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
-            //return new PagedDto<object>(total, items);
-
         }
 
         /// <summary>
@@ -936,77 +872,40 @@ jxrWXHbT1FB6DqkdOnBbQqS1Azqz5HxLlSyEK3F60e3SgB5iZsDZ
 
             RefAsync<int> total = 0;
 
-            var queryableCall = _sendTaskSubmitCaseRecordRepository.Queryable()
-                      .Where(p => p.GenerationTime >= dto.StartTime && p.GenerationTime <= dto.EndTime)
-                   .Where(p => p.LastTime >= dto.StartTime && p.LastTime <= dto.EndTime && p.IsSuccess == ESendTaskState.PushSuccess)
-                     .Select(p => new
-                     {
-                         index = SqlFunc.RowNumber($"{p.CreationTime} desc ", $"{p.CallLogId}"),
-                         ProvinceNo = p.ProvinceNo,
-                         FirstTime = p.FirstTime,
-                         LastTime = p.LastTime,
-                         SendTimes = p.SendTimes,
-                         StartTime = p.GenerationTime,
-                         CreationTime = p.CreationTime,
-                         IntervalTime = SqlFunc.DateDiff(DateType.Second, p.GenerationTime.Value, p.LastTime.Value),
-                         p.CallId,
-                         p.RequestData,
-                         p.CallLogId
-                     })
-                     .MergeTable()
-                     .Where(d => d.index == 1)
-                    .MergeTable();
-
-            var items = await _sendTaskSubmitCaseInfoRepository.Queryable()
-              .Where(p => p.GenerationTime >= dto.StartTime && p.GenerationTime <= dto.EndTime)
-              .Where(p => p.LastTime >= dto.StartTime && p.LastTime <= dto.EndTime && p.IsSuccess == ESendTaskState.PushSuccess)
-               .Select(p => new
-               {
-                   index = SqlFunc.RowNumber($"{p.CreationTime} desc ", $"{p.ProvinceNo}"),
-                   ProvinceNo = p.ProvinceNo,
-                   FirstTime = p.FirstTime,
-                   LastTime = p.LastTime,
-                   SendTimes = p.SendTimes,
-                   StartTime = p.GenerationTime,
-                   CreationTime = p.CreationTime,
-                   p.RequestData,
-                   p.ExpiredTime,
-                   p.CaseSource
-               })
-               .MergeTable()
-               .Where(d => d.index == 1 && d.CaseSource == "RGDH")
-               .MergeTable()
-               .LeftJoin(queryableCall, (o, c) => o.ProvinceNo == c.ProvinceNo)
-               .Select((o, c) => new
-               {
-                   ProvinceNo = o.ProvinceNo,
-                   FirstTime = o.FirstTime,
-                   LastTime = o.LastTime,
-                   SendTimes = o.SendTimes,
-                   StartTime = o.StartTime,
-                   CreationTime = o.CreationTime,
-                   CallId = c.CallId,
-                   CallLogId = c.CallLogId,
-                   o.CaseSource,
-                   o.RequestData
-               })
-               .MergeTable()
-               .Where(o => o.CallId == null || o.CallId == "")
-               .OrderByDescending(o => o.CreationTime)
-               .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
+            string strSql = @"SELECT ""SCO"".""ProvinceNo"",""FirstTime"",
+""LastTime"",""SendTimes"", ""StartTime"",""CreationTime"",""RequestData"",""ExpiredTime"", ""CaseSource"",""OrderId""
+FROM(
 
-            return new PagedDto<object>(total, items);
+SELECT *
+FROM 
+(
+SELECT ROW_NUMBER() OVER(PARTITION BY ""ProvinceNo"" ORDER BY ""CreationTime"" DESC)  AS ""newIndex"",""ProvinceNo"",""FirstTime"",""OrderId"",
+""LastTime"",""SendTimes"",""GenerationTime""AS ""StartTime"",""CreationTime"",""RequestData"",""ExpiredTime"",""RequestData""->>'CaseSource' AS ""CaseSource""
 
-            //var items = await _dsOrderSendRepository.Queryable()
-            //    .LeftJoin<DsTelCall>((p, o) => p.CallId == o.CallId)
-            //    .Where((p, o) => p.FirstSendProvinceTime >= dto.StartTime && p.FirstSendProvinceTime <= dto.EndTime && p.CaseSourceCode == "RGDH")
-            //    .Where((p, o) => p.FirstSendProvinceTime.HasValue)
-            //    .Where((p, o) => o.CallId == null || o.CallId == "")
-            //    .WhereIF(!string.IsNullOrEmpty(dto.CaseSerial), p => p.ProvinceNo == dto.CaseSerial)
-            //    .OrderByDescending((p, o) => p.CreationTime)
-            //   .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
+FROM ""ds_send_task_submit_case_info"" 
+	where  ""GenerationTime"" >= '{0}'  AND  ""GenerationTime"" <= '{1}'  
+		AND  ""LastTime"" >= '{0}'  AND  ""LastTime"" <= '{1}' AND  ""IsSuccess"" = 1 
+				
+) ""SCI"" WHERE ""newIndex""=1  	AND  ""CaseSource"" =  'RGDH' 
+) ""SCO""
+ LEFT JOIN 
 
-            //return new PagedDto<object>(total, _mapper.Map<IReadOnlyList<DsOrderSend>>(items));
+(
+SELECT * FROM (
+SELECT ROW_NUMBER() OVER(PARTITION BY ""ProvinceNo"" ORDER BY ""CreationTime"" DESC) as ""newIndex"",""ProvinceNo"",""CallId"",""CallLogId""
+FROM
+					""ds_send_task_submit_case_record"" 
+				WHERE
+				 ""GenerationTime"" >= '{0}'  AND  ""GenerationTime"" <= '{1}' 
+					AND  ""LastTime"" >= '{0}'  AND  ""LastTime"" <= '{1}'  AND  ""IsSuccess"" = 1
+    ) ""SCR"" WHERE ""newIndex""=1
+)""SCRC""
+ON ""SCO"".""ProvinceNo""=""SCRC"".""ProvinceNo""
+WHERE  ""SCRC"".""ProvinceNo""  IS NULL  ";
+            strSql = string.Format(strSql, dto.StartTime, dto.EndTime);
+            return await _waitSendTaskRepository.GetDataBySql(strSql, dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
+           
         }
 
         /// <summary>
@@ -1655,8 +1554,7 @@ WHERE  ""GenerationTime"">='{2}' AND ""GenerationTime""<='{0}' AND ""IsSuccess""
 ) SCR WHERE ""newIndex""=1 ;
 
 
-select ""与电话工单匹配的话务数据量"",""电话工单量"",
-""时间范围按时办结量"",""结转按时已办结量"",""时间范围超期办结量"",""结转超期已办结量"",""时间范围超期未办量"",""结转超期未办量"",
+select 
 CASE WHEN ""呼入总量"">0 THEN CAST(CAST(((""呼入接通量""*1.0)/""呼入总量"") as decimal(10,5))*100 as decimal(10,3)) ELSE 0 END AS ""CalConnectionRate"" ,
 
 CASE WHEN ""电话工单量"">0 THEN CAST(CAST(((""与电话工单匹配的话务数据量""*1.0)/""电话工单量"") as decimal(10,5))*100 as decimal(10,3)) ELSE 0 END AS ""MatchingRateOfCallData"" ,

+ 18 - 0
src/DataSharing.Repository/WaitSendTaskRepository.cs

@@ -1,6 +1,8 @@
 using DataSharing.Province.SendTask;
 using DataSharing.Province.SendTask.ProvinceOther;
 using DataSharing.Share.Dtos.Statistics;
+using Hotline.Share.Dtos;
+using Microsoft.AspNetCore.Http;
 using SqlSugar;
 using XF.Domain.Dependency;
 
@@ -28,5 +30,21 @@ namespace DataSharing.Repository
             return Db.Ado.SqlQuery<DataAggregationSituationDto>(sql);
 
         }
+
+        /// <summary>
+        /// 根据sql查询分页数据
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <returns></returns>
+        public async Task<PagedDto<object>> GetDataBySql(string sql, int pageIndex, int pageSize, CancellationToken cancellationToken = default)
+        {
+            RefAsync<int> total = 0;
+
+            var items = await Db.SqlQueryable<object>(sql).ToPageListAsync(pageIndex, pageSize, total, cancellationToken);
+
+            return new PagedDto<object>(total, items);
+
+
+        }
     }
 }

+ 5 - 5
src/DataSharing/Province/ProvinceService.cs

@@ -60,7 +60,7 @@ namespace DataSharing.Province
         private readonly ISharingConfigurationManager _sharingConfigurationManager;
         private readonly IInitPushDataService _initPushDataService;
         private readonly IRepository<DsGetCaseMaterialInfo> _getCaseMaterialInfoRepository;
-        private readonly IRepository<ConfigurationInformation> _configurationInformationRepository; 
+        private readonly IRepository<ConfigurationInformation> _configurationInformationRepository;
         private readonly IRepository<DsSendTaskSubmitCaseRecord> _sendTaskSubmitCaseRecordRepository;
 
         /// <summary>
@@ -370,7 +370,7 @@ namespace DataSharing.Province
                 #endregion
 
                 //将待推送数据写入待推送表
-                await _initPushDataService.InitDsSendTaskSubmitCaseInfo(data.CaseSerial, jsonData, data, pushdto.Order.StartTime, cancellationToken);
+                await _initPushDataService.InitDsSendTaskSubmitCaseInfo(dto.Id, data.CaseSerial, jsonData, data, pushdto.Order.StartTime, cancellationToken);
 
                 //处理附件
                 await FileDataAsync(dto.FileJson, data.CaseSerial, data.CliengGuid, EMaterialType.Acceptance, data.AreaCode, cancellationToken);
@@ -442,7 +442,7 @@ namespace DataSharing.Province
                 #endregion
 
                 //将待推送数据写入待推送表
-                await _initPushDataService.InitDsSendTaskSubmitCaseInfo(data.CaseSerial, jsonData, data, dto.StartTime, cancellationToken);
+                await _initPushDataService.InitDsSendTaskSubmitCaseInfo(dto.Id, data.CaseSerial, jsonData, data, dto.StartTime, cancellationToken);
             }
 
         }
@@ -484,7 +484,7 @@ namespace DataSharing.Province
                 #endregion
 
                 //将待推送数据写入待推送表
-                await _initPushDataService.InitDsSendTaskSubmitCaseInfo(submitCaseInfo.CaseSerial, jsonDataSubmitCaseInfo, submitCaseInfo, dto.Order.StartTime, cancellationToken);
+                await _initPushDataService.InitDsSendTaskSubmitCaseInfo(dto.Order.Id, submitCaseInfo.CaseSerial, jsonDataSubmitCaseInfo, submitCaseInfo, dto.Order.StartTime, cancellationToken);
                 //如果话务部派出去,再次上传附件
                 if (dto.Order.ActualHandleStepName == "话务部")
                 {
@@ -674,7 +674,7 @@ namespace DataSharing.Province
                 #endregion
 
                 //将待推送数据写入待推送表
-                await _initPushDataService.InitDsSendTaskSubmitCaseInfo(data.CaseSerial, jsonData, data, dto.Order.StartTime, cancellationToken);
+                await _initPushDataService.InitDsSendTaskSubmitCaseInfo(dto.Order.Id, data.CaseSerial, jsonData, data, dto.Order.StartTime, cancellationToken);
 
                 //推送服务工单结果信息
                 await SubmitCaseResultAsync(dto, cancellationToken);

+ 8 - 0
src/DataSharing/Province/SendTask/IWaitSendTaskRepository.cs

@@ -1,6 +1,7 @@
 using DataSharing.Province.SendTask.ProvinceOther;
 using DataSharing.Share.Dtos.HotlineWeb;
 using DataSharing.Share.Dtos.Statistics;
+using Hotline.Share.Dtos;
 using SqlSugar;
 using XF.Domain.Repository;
 
@@ -16,5 +17,12 @@ namespace DataSharing.Province.SendTask
         /// <param name="sql"></param>
         /// <returns></returns>
         List<DataAggregationSituationDto> GetDataAggregationSituation(string sql);
+
+        /// <summary>
+        /// 根据sql查询分页数据
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <returns></returns>
+        Task<PagedDto<object>> GetDataBySql(string sql, int pageIndex, int pageSize, CancellationToken cancellationToken = default);
     }
 }

+ 7 - 0
src/DataSharing/Province/SendTask/SubmitCaseInfo/DsSendTaskSubmitCaseInfo.cs

@@ -31,6 +31,13 @@ namespace DataSharing.Province.SendTask.SubmitCaseInfo
         /// <summary>
         /// 诉求渠道
         /// </summary>
+        [SugarColumn(ColumnDescription = "诉求渠道")]
         public string? CaseSource { get; set; }
+
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "工单编号")]
+        public string? OrderId { get; set; }
     }
 }

+ 7 - 0
src/DataSharing/Province/SendTask/SubmitCaseInfo/DsWaitSendTaskSubmitCaseInfo.cs

@@ -25,6 +25,13 @@ namespace DataSharing.Province.SendTask.SubmitCaseInfo
         /// <summary>
         /// 诉求渠道
         /// </summary>
+        [SugarColumn(ColumnDescription = "期满时间")]
         public string? CaseSource { get; set; }
+
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "工单编号")]
+        public string? OrderId { get; set; }
     }
 }

+ 3 - 2
src/DataSharing/SendTask/IInitPushDataService.cs

@@ -9,13 +9,14 @@ namespace DataSharing.SendTask
         /// <summary>
         /// 组装工单受理数据
         /// </summary>
-        /// <param name="provinceNo"></param>
+        /// <param name="orderId">工单编号</param>
+        /// <param name="provinceNo">省编号</param>
         /// <param name="request">请求参数</param>
         /// <param name="requestData">请求参数</param>
         /// <param name="generationTime">生成时间(保存工单创建时间或者通话记录生成时间)</param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        Task<string> InitDsSendTaskSubmitCaseInfo(string provinceNo, string request, SubmitCaseInfo requestData, DateTime? generationTime = null, CancellationToken cancellationToken = default);
+        Task<string> InitDsSendTaskSubmitCaseInfo(string orderId, string provinceNo, string request, SubmitCaseInfo requestData, DateTime? generationTime = null, CancellationToken cancellationToken = default);
 
         /// <summary>
         /// 组装服务工单处理过程

+ 4 - 2
src/DataSharing/SendTask/InitPushDataService.cs

@@ -88,13 +88,14 @@ namespace DataSharing.SendTask
         /// <summary>
         /// 组装工单受理数据
         /// </summary>
+        /// <param name="orderId">工单编号</param>
         /// <param name="provinceNo">省编号</param>
         /// <param name="request">请求参数</param>
         /// <param name="requestData">请求参数</param>
         /// <param name="generationTime">生成时间(保存工单创建时间或者通话记录生成时间)</param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        public async Task<string> InitDsSendTaskSubmitCaseInfo(string provinceNo, string request, SubmitCaseInfo requestData,
+        public async Task<string> InitDsSendTaskSubmitCaseInfo(string orderId,string provinceNo, string request, SubmitCaseInfo requestData,
             DateTime? generationTime = null, CancellationToken cancellationToken = default)
         {
             //写入待推送表
@@ -109,7 +110,8 @@ namespace DataSharing.SendTask
                 GenerationTime = generationTime,
                 PathType = EPathType.HuiJu,
                 ExpiredTime = requestData.TfdBackTimeBf,
-                CaseSource=requestData.CaseSource
+                CaseSource=requestData.CaseSource,
+                OrderId= orderId
             };
             waitTask.Id = await _waitSendTaskSubmitCaseInfoRepository.AddAsync(waitTask, cancellationToken);