Переглянути джерело

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

Dun.Jason 4 місяців тому
батько
коміт
95518bd274

+ 26 - 35
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -1404,27 +1404,18 @@ namespace Hotline.Api.Controllers.Bi
         public async Task<SeatSatisfactionStatisticsEvaluateDto> SeatSatisfactionStatisticsRate([FromQuery] PagedKeywordRequest dto)
         {
             var data = await _orderVisitDetailRepository.Queryable()
-               // .Includes(x => x.OrderVisit)
-               .LeftJoin<OrderVisit>((ov, o) => ov.VisitId == o.Id)
-                 .Where((ov, o) => o.VisitTime >= dto.StartTime.Value && o.VisitTime <= dto.EndTime.Value && o.VisitState == EVisitState.Visited
-                 && ov.SeatEvaluate != null && ov.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && ov.SeatEvaluate != ESeatEvaluate.Normal && ov.VisitTarget == EVisitTarget.Seat
+               .LeftJoin<OrderVisit>((od, ov) => od.VisitId == ov.Id)
+                .LeftJoin<Order>((od, ov, o) => ov.OrderId == o.Id)
+                 .Where((od, ov, o) => ov.VisitTime >= dto.StartTime.Value && ov.VisitTime <= dto.EndTime.Value && ov.VisitState == EVisitState.Visited
+                 && od.SeatEvaluate != null && od.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && od.SeatEvaluate != ESeatEvaluate.Normal
+                 && od.VisitTarget == EVisitTarget.Seat && o.SourceChannelCode == "RGDH"
                 )
-                 .Select((ov, o) => new SeatSatisfactionStatisticsEvaluateDto
+                 .Select((od, ov, o) => new SeatSatisfactionStatisticsEvaluateDto
                  {
-                     Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(ov.SeatEvaluate != ESeatEvaluate.NoSatisfied && ov.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied, 1, 0)),
-                     NoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(ov.SeatEvaluate == ESeatEvaluate.NoSatisfied || ov.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied, 1, 0))
+                     Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate != ESeatEvaluate.NoSatisfied && od.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied, 1, 0)),
+                     NoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.NoSatisfied || od.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied, 1, 0))
                  })
                  .FirstAsync();
-            //var data = await _orderVisitRepository.Queryable()
-            //      .LeftJoin<Order>((ov, o) => ov.OrderId == o.Id)
-            //        .Where((ov, o) => ov.VisitTime >= dto.StartTime.Value && ov.VisitTime <= dto.EndTime.Value && ov.VisitState == EVisitState.Visited && o.SeatEvaluate != null
-            //        && o.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && o.SeatEvaluate != ESeatEvaluate.Normal)
-            //         .Select((ov, o) => new SeatSatisfactionStatisticsEvaluateDto
-            //         {
-            //             Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate != ESeatEvaluate.NoSatisfied && o.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied, 1, 0)),
-            //             NoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoSatisfied || o.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied, 1, 0))
-            //         })
-            //         .FirstAsync();
             return data;
 
         }
@@ -3784,17 +3775,17 @@ namespace Hotline.Api.Controllers.Bi
         [HttpGet("order_acceptance_time")]
         public async Task<object> OrderAcceptanceTime([FromQuery] TimeSharingPagedKeywordRequest dto)
         {
-	        var titleData = await _systemDicDataRepository.Queryable()
-		        .Where(p => p.DicTypeCode == "AcceptType")
-		        .Select(p => new Kv()
-		        {
-			        Key = p.DicDataValue,
-			        Value = p.DicDataName
-		        }).OrderBy(p => p.Key).ToListAsync();
+            var titleData = await _systemDicDataRepository.Queryable()
+                .Where(p => p.DicTypeCode == "AcceptType")
+                .Select(p => new Kv()
+                {
+                    Key = p.DicDataValue,
+                    Value = p.DicDataName
+                }).OrderBy(p => p.Key).ToListAsync();
 
-			var item = await _orderRepository.OrderAcceptanceTime(dto);
-			 var res = new  { Item = item, TitleData = titleData };
-			return res;
+            var item = await _orderRepository.OrderAcceptanceTime(dto);
+            var res = new { Item = item, TitleData = titleData };
+            return res;
         }
 
         /// <summary>
@@ -3805,14 +3796,14 @@ namespace Hotline.Api.Controllers.Bi
         [HttpPost("order_acceptance_time_export")]
         public async Task<FileStreamResult> OrderAcceptanceTimeExport([FromBody] TimeSharingPagedKeywordRequest dto)
         {
-	        var titleData = await _systemDicDataRepository.Queryable()
-		        .Where(p => p.DicTypeCode == "AcceptType")
-		        .Select(p => new Kv()
-		        {
-			        Key = p.DicDataValue,
-			        Value = p.DicDataName
-		        }).OrderBy(p => p.Key).ToListAsync();
-			var dataTable = await _orderRepository.OrderAcceptanceTimeExport(dto, titleData);
+            var titleData = await _systemDicDataRepository.Queryable()
+                .Where(p => p.DicTypeCode == "AcceptType")
+                .Select(p => new Kv()
+                {
+                    Key = p.DicDataValue,
+                    Value = p.DicDataName
+                }).OrderBy(p => p.Key).ToListAsync();
+            var dataTable = await _orderRepository.OrderAcceptanceTimeExport(dto, titleData);
             var stream = ExcelHelper.CreateStream(dataTable);
             return ExcelStreamResult(stream, "受理类型分时统计数据");
         }

+ 8 - 8
src/Hotline.Api/Controllers/OrderController.cs

@@ -421,8 +421,8 @@ public class OrderController : BaseController
         //    throw UserFriendlyException.SameMessage("选择的工单中含有省工单, 不能批量发布. 请排除省工单.");
         if (_appOptions.Value.IsYiBin)
         {
-			hasProvince = await _orderRepository.Queryable().AnyAsync(x => dto.Ids.Contains(x.Id) && x.IsProvince);
-		}
+            hasProvince = await _orderRepository.Queryable().AnyAsync(x => dto.Ids.Contains(x.Id) && x.IsProvince);
+        }
         if (hasProvince)
             throw UserFriendlyException.SameMessage("选择的工单中含有省工单, 不能批量发布. 请排除省工单.");
 
@@ -621,7 +621,7 @@ public class OrderController : BaseController
         {
             try
             {
-                if (order.Source != ESource.ProvinceStraight)
+                if (order.Source != ESource.ProvinceStraight && order.FileOrgIsCenter.Value == false)
                 {
 
                     var code = "";
@@ -3480,7 +3480,7 @@ public class OrderController : BaseController
             orderTerminateList.Any(x => x.Status == ETerminateStatus.Approval || x.Status == ETerminateStatus.SendBack) ? "审批中" : null;
 
         dto.IsReTransact = await _orderSpecialRepository.Queryable()
-	        .Where(x => x.OrderId == dto.Id && x.SpecialType == ESpecialType.ReTransact).AnyAsync();
+            .Where(x => x.OrderId == dto.Id && x.SpecialType == ESpecialType.ReTransact).AnyAsync();
 
         return _sessionContext.OrgIsCenter ? dto : dto.DataMask();
     }
@@ -5505,14 +5505,14 @@ public class OrderController : BaseController
             // 计算期满时间
             if (dto.AlterTime)
             {
-               
+
 
                 DateTime startTime = DateTime.Now;
-                if (order.CenterToOrgTime.HasValue && processType== EProcessType.Jiaoban)
+                if (order.CenterToOrgTime.HasValue && processType == EProcessType.Jiaoban)
                 {
                     startTime = order.CenterToOrgTime.Value;
                 }
-                else if(processType== EProcessType.Zhiban)
+                else if (processType == EProcessType.Zhiban)
                 {
                     startTime = order.StartTime.Value;
                 }
@@ -5542,7 +5542,7 @@ public class OrderController : BaseController
                     cancellationToken: HttpContext.RequestAborted);
             }
 
-            
+
 
             if (dto.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
             {

+ 1 - 0
src/Hotline.Api/Controllers/WorkflowController.cs

@@ -442,6 +442,7 @@ public class WorkflowController : BaseController
     {
         var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, withTracesTree: true,
             cancellationToken: HttpContext.RequestAborted);
+        workflow.Traces = workflow.Traces.Where(d => d.TraceStyle == ETraceStyle.Flow).ToList();
 
         var workflowDto = _mapper.Map<WorkflowDto>(workflow);
         if (workflowDto.Traces.Any())

+ 96 - 134
src/Hotline.Application/Orders/OrderApplication.cs

@@ -2009,76 +2009,76 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         string orgLevelStr = (dto.OrgCode.Length + 3).ToString();
         var oldData = new List<VisitAndOrgSatisfactionStatisticsDto>();
 
-		var mainList = await _systemOrganizeRepository.Queryable().Where(x => x.Id.StartsWith(dto.OrgCode))
-		   .LeftJoin<OrderVisitDetail>((x, it) => x.Id == it.VisitOrgCode)
-		   .Where((x, it) => it.OrderVisit.VisitTime >= dto.StartTime.Value &&
-							 it.OrderVisit.VisitTime <= dto.EndTime.Value &&
-							 it.VisitTarget == EVisitTarget.Org && it.OrderVisit.VisitState == EVisitState.Visited)
-           .Where((x, it) => it.VisitOrgCode.StartsWith(dto.OrgCode)  )
-		                 //&& it.VisitOrgCode != dto.OrgCode
-		   .WhereIF(!string.IsNullOrEmpty(dto.LineNum),
-			   (x, it) => it.OrderVisit.Order.CallRecord.Gateway.Contains(dto.LineNum))
-		   .WhereIF(dto.TypeCode != null && dto.TypeCode == 1,
-			   (x, it) => it.OrderVisit.Order.IdentityType == EIdentityType.Citizen)
-		   .WhereIF(dto.TypeCode != null && dto.TypeCode == 2,
-			   (x, it) => it.OrderVisit.Order.IdentityType == EIdentityType.Enterprise)
-		   .WhereIF(IsCenter == false,
-			   (x, it) => it.VisitOrgCode.StartsWith(_sessionContextProvider.SessionContext.OrgId))
-		   .WhereIF(dto.VisitType != null, (x, it) => it.OrderVisit.VisitType == dto.VisitType)
-		   .GroupBy((x, it) => new
-		   {
-			   VisitOrgCode = it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr))
-		   })
-		   .Select((x, it) => new VisitAndOrgSatisfactionStatisticsDto()
-		   {
-			   OrgCode = it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr)),
-			   TotalSumCount = SqlFunc.AggregateCount(it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr))),
-			   VerySatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "5", 1, 0)),
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "5", 1,
-					   0))), //非常满意数
-			   SatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "4", 1, 0)),
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "4", 1,
-					   0))), //满意数
-			   RegardedAsSatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "-1", 1, 0)),
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "-1", 1,
-					   0))), //视为满意
-			   DefaultSatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "0", 1, 0)),
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "0", 1,
-					   0))), //默认满意
-			   NoSatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "2", 1, 0)),
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "2", 1,
-					   0))), //不满意
-			   NoEvaluateCount = SqlFunc.IIF(dto.TypeId == 1,
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "7", 1, 0)),
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "7", 1,
-					   0))), //未做评价
-			   NoPutThroughCount = SqlFunc.IIF(dto.TypeId == 1,
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "6", 1, 0)),
-				   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "6", 1,
-					   0))) //未接通
-		   })
-		   .MergeTable()
-		   .LeftJoin<SystemOrganize>((x, it) =>
-			   x.OrgCode == it.Id && (it.Level == org.Level || it.Level == (org.Level + 1)))
-		   .Select((x, it) => new VisitAndOrgSatisfactionStatisticsDto()
-		   {
-			   OrgName = it.Name,
-			   OrgCode = x.OrgCode,
-			   OrgType = it.OrgType,
-			   TotalSumCount = x.TotalSumCount,
-			   VerySatisfiedCount = x.VerySatisfiedCount, //非常满意数
-			   SatisfiedCount = x.SatisfiedCount, //满意数
-			   RegardedAsSatisfiedCount = x.RegardedAsSatisfiedCount, //视为满意
-			   DefaultSatisfiedCount = x.DefaultSatisfiedCount, //默认满意
-			   NoSatisfiedCount = x.NoSatisfiedCount, //不满意
-			   NoEvaluateCount = x.NoEvaluateCount, //未做评价
-			   NoPutThroughCount = x.NoPutThroughCount, //未接通
-		   }).ToListAsync();
+        var mainList = await _systemOrganizeRepository.Queryable().Where(x => x.Id.StartsWith(dto.OrgCode))
+           .LeftJoin<OrderVisitDetail>((x, it) => x.Id == it.VisitOrgCode)
+           .Where((x, it) => it.OrderVisit.VisitTime >= dto.StartTime.Value &&
+                             it.OrderVisit.VisitTime <= dto.EndTime.Value &&
+                             it.VisitTarget == EVisitTarget.Org && it.OrderVisit.VisitState == EVisitState.Visited)
+           .Where((x, it) => it.VisitOrgCode.StartsWith(dto.OrgCode))
+           //&& it.VisitOrgCode != dto.OrgCode
+           .WhereIF(!string.IsNullOrEmpty(dto.LineNum),
+               (x, it) => it.OrderVisit.Order.CallRecord.Gateway.Contains(dto.LineNum))
+           .WhereIF(dto.TypeCode != null && dto.TypeCode == 1,
+               (x, it) => it.OrderVisit.Order.IdentityType == EIdentityType.Citizen)
+           .WhereIF(dto.TypeCode != null && dto.TypeCode == 2,
+               (x, it) => it.OrderVisit.Order.IdentityType == EIdentityType.Enterprise)
+           .WhereIF(IsCenter == false,
+               (x, it) => it.VisitOrgCode.StartsWith(_sessionContextProvider.SessionContext.OrgId))
+           .WhereIF(dto.VisitType != null, (x, it) => it.OrderVisit.VisitType == dto.VisitType)
+           .GroupBy((x, it) => new
+           {
+               VisitOrgCode = it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr))
+           })
+           .Select((x, it) => new VisitAndOrgSatisfactionStatisticsDto()
+           {
+               OrgCode = it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr)),
+               TotalSumCount = SqlFunc.AggregateCount(it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr))),
+               VerySatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "5", 1, 0)),
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "5", 1,
+                       0))), //非常满意数
+               SatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "4", 1, 0)),
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "4", 1,
+                       0))), //满意数
+               RegardedAsSatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "-1", 1, 0)),
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "-1", 1,
+                       0))), //视为满意
+               DefaultSatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "0", 1, 0)),
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "0", 1,
+                       0))), //默认满意
+               NoSatisfiedCount = SqlFunc.IIF(dto.TypeId == 1,
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "2", 1, 0)),
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "2", 1,
+                       0))), //不满意
+               NoEvaluateCount = SqlFunc.IIF(dto.TypeId == 1,
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "7", 1, 0)),
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "7", 1,
+                       0))), //未做评价
+               NoPutThroughCount = SqlFunc.IIF(dto.TypeId == 1,
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "6", 1, 0)),
+                   SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "6", 1,
+                       0))) //未接通
+           })
+           .MergeTable()
+           .LeftJoin<SystemOrganize>((x, it) =>
+               x.OrgCode == it.Id && (it.Level == org.Level || it.Level == (org.Level + 1)))
+           .Select((x, it) => new VisitAndOrgSatisfactionStatisticsDto()
+           {
+               OrgName = it.Name,
+               OrgCode = x.OrgCode,
+               OrgType = it.OrgType,
+               TotalSumCount = x.TotalSumCount,
+               VerySatisfiedCount = x.VerySatisfiedCount, //非常满意数
+               SatisfiedCount = x.SatisfiedCount, //满意数
+               RegardedAsSatisfiedCount = x.RegardedAsSatisfiedCount, //视为满意
+               DefaultSatisfiedCount = x.DefaultSatisfiedCount, //默认满意
+               NoSatisfiedCount = x.NoSatisfiedCount, //不满意
+               NoEvaluateCount = x.NoEvaluateCount, //未做评价
+               NoPutThroughCount = x.NoPutThroughCount, //未接通
+           }).ToListAsync();
 
 
         #region 老系统数据
@@ -2122,22 +2122,22 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                 })
                 .ToListAsync();
             mainList = (from t1 in mainList
-					join t2 in oldData on t1.OrgCode equals t2.OrgCode into t1_t2
-                    from item in t1_t2.DefaultIfEmpty()
-                    select new VisitAndOrgSatisfactionStatisticsDto()
-                    {
-                        OrgName = t1.OrgName,
-                        OrgCode = t1.OrgCode,
-                        OrgType = t1.OrgType,
-                        TotalSumCount = t1.TotalSumCount + t1_t2.Select(x => x.TotalSumCount).FirstOrDefault(),
-                        VerySatisfiedCount = t1.VerySatisfiedCount + t1_t2.Select(x => x.VerySatisfiedCount).FirstOrDefault(),//非常满意数
-                        SatisfiedCount = t1.SatisfiedCount + t1_t2.Select(x => x.SatisfiedCount).FirstOrDefault(), //满意数
-                        RegardedAsSatisfiedCount = t1.RegardedAsSatisfiedCount + t1_t2.Select(x => x.RegardedAsSatisfiedCount).FirstOrDefault(), //视为满意
-                        DefaultSatisfiedCount = t1.DefaultSatisfiedCount + t1_t2.Select(x => x.DefaultSatisfiedCount).FirstOrDefault(), //默认满意
-                        NoSatisfiedCount = t1.NoSatisfiedCount + t1_t2.Select(x => x.NoSatisfiedCount).FirstOrDefault(), //不满意
-                        NoEvaluateCount = t1.NoEvaluateCount + t1_t2.Select(x => x.NoEvaluateCount).FirstOrDefault(), //未做评价
-                        NoPutThroughCount = t1.NoPutThroughCount + t1_t2.Select(x => x.NoPutThroughCount).FirstOrDefault(), //未接通
-                    }).ToList();
+                        join t2 in oldData on t1.OrgCode equals t2.OrgCode into t1_t2
+                        from item in t1_t2.DefaultIfEmpty()
+                        select new VisitAndOrgSatisfactionStatisticsDto()
+                        {
+                            OrgName = t1.OrgName,
+                            OrgCode = t1.OrgCode,
+                            OrgType = t1.OrgType,
+                            TotalSumCount = t1.TotalSumCount + t1_t2.Select(x => x.TotalSumCount).FirstOrDefault(),
+                            VerySatisfiedCount = t1.VerySatisfiedCount + t1_t2.Select(x => x.VerySatisfiedCount).FirstOrDefault(),//非常满意数
+                            SatisfiedCount = t1.SatisfiedCount + t1_t2.Select(x => x.SatisfiedCount).FirstOrDefault(), //满意数
+                            RegardedAsSatisfiedCount = t1.RegardedAsSatisfiedCount + t1_t2.Select(x => x.RegardedAsSatisfiedCount).FirstOrDefault(), //视为满意
+                            DefaultSatisfiedCount = t1.DefaultSatisfiedCount + t1_t2.Select(x => x.DefaultSatisfiedCount).FirstOrDefault(), //默认满意
+                            NoSatisfiedCount = t1.NoSatisfiedCount + t1_t2.Select(x => x.NoSatisfiedCount).FirstOrDefault(), //不满意
+                            NoEvaluateCount = t1.NoEvaluateCount + t1_t2.Select(x => x.NoEvaluateCount).FirstOrDefault(), //未做评价
+                            NoPutThroughCount = t1.NoPutThroughCount + t1_t2.Select(x => x.NoPutThroughCount).FirstOrDefault(), //未接通
+                        }).ToList();
         }
         #endregion
         return mainList;
@@ -3262,7 +3262,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     public ISugarQueryable<SeatSatisfactionStatisticsDto> SeatSatisfactionStatistics(PagedKeywordRequest dto)
     {
         var list = _orderVisitDetailRepository.Queryable()
-            .Includes(d => d.OrderVisit)
+             .Includes(x => x.OrderVisit, d => d.Order)
+             .Where(x => x.OrderVisit.Order.SourceChannelCode == "RGDH")
              .Where(x => x.OrderVisit.VisitTime >= dto.StartTime.Value && x.OrderVisit.VisitTime <= dto.EndTime.Value && x.OrderVisit.VisitState == EVisitState.Visited
              && x.SeatEvaluate != null && x.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && x.SeatEvaluate != ESeatEvaluate.Normal && x.VisitTarget == EVisitTarget.Seat
             )
@@ -3297,10 +3298,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         var query = _orderVisitDetailRepository.Queryable()
             .LeftJoin<OrderVisit>((od, ov) => od.VisitId == ov.Id)
             .LeftJoin<Order>((od, ov, o) => ov.OrderId == o.Id)
-             //.Includes(d => d.OrderVisit)
-             //.Includes(d => d.OrderVisit, d => d.Order)
              .Where((od, ov, o) => ov.VisitTime >= dto.StartTime.Value && ov.VisitTime <= dto.EndTime.Value && ov.VisitState == EVisitState.Visited
-                && od.SeatEvaluate != null && od.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && od.SeatEvaluate != ESeatEvaluate.Normal && od.VisitTarget == EVisitTarget.Seat)
+                && od.SeatEvaluate != null && od.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied
+                && od.SeatEvaluate != ESeatEvaluate.Normal && od.VisitTarget == EVisitTarget.Seat && o.SourceChannelCode == "RGDH")
               .GroupBy((od, ov, o) => new
               {
                   o.AcceptorName,
@@ -3320,29 +3320,6 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                      NoEvaluate = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.NoEvaluate, 1, 0))
                  });
         return query;
-        //var query = _orderVisitRepository.Queryable()
-        //         .LeftJoin<Order>((ov, o) => ov.OrderId == o.Id)
-        //         .Where((ov, o) => ov.VisitTime >= dto.StartTime.Value && ov.VisitTime <= dto.EndTime.Value && ov.VisitState == EVisitState.Visited && o.SeatEvaluate != null
-        //         && o.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && o.SeatEvaluate != ESeatEvaluate.Normal)
-        //         .GroupBy((ov, o) => new
-        //         {
-        //             o.AcceptorName,
-        //             o.AcceptorId
-        //         })
-        //         .Select((ov, o) => new SeatSatisfactionStatisticsListDetailDto
-        //         {
-        //             UserName = o.AcceptorName,
-        //             UserId = o.AcceptorId,
-        //             DefaultSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.DefaultSatisfied, 1, 0)),
-        //             VeryNoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied, 1, 0)),
-        //             NoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoSatisfied, 1, 0)),
-        //             Normal = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.Normal, 1, 0)),
-        //             Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.Satisfied, 1, 0)),
-        //             VerySatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.VerySatisfied, 1, 0)),
-        //             NoConnect = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoConnect, 1, 0)),
-        //             NoEvaluate = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoEvaluate, 1, 0))
-        //         });
-        //return query;
     }
 
     /// <summary>
@@ -3357,7 +3334,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
               .Includes(x => x.OrderVisit, d => d.Employee)
               .Where(x => x.OrderVisit.VisitTime >= dto.StartTime.Value && x.OrderVisit.VisitTime <= dto.EndTime.Value
                   && x.OrderVisit.VisitState == EVisitState.Visited && x.SeatEvaluate != null
-                  && x.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && x.SeatEvaluate != ESeatEvaluate.Normal && x.VisitTarget == EVisitTarget.Seat)
+                  && x.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied &&
+                  x.SeatEvaluate != ESeatEvaluate.Normal && x.VisitTarget == EVisitTarget.Seat && x.OrderVisit.Order.SourceChannelCode == "RGDH")
                  .WhereIF(!string.IsNullOrEmpty(dto.UserId), x => x.OrderVisit.Order.AcceptorId == dto.UserId)
                .WhereIF(dto.SeatEvaluate.HasValue, x => x.SeatEvaluate == dto.SeatEvaluate)
                .WhereIF(!string.IsNullOrEmpty(dto.UserName), x => x.OrderVisit.Order.AcceptorName == dto.UserName)
@@ -3365,22 +3343,6 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order.No.Contains(dto.No))
             .OrderByDescending(x => x.OrderVisit.VisitTime);
         return query;
-        //var query = _orderVisitRepository.Queryable()
-        //    .Includes(d => d.Order)
-        //    .Includes(d => d.Employee)
-        //    .Includes(d => d.OrderVisitDetails)
-        //   .Where(p => p.VisitTime >= dto.StartTime.Value && p.VisitTime <= dto.EndTime.Value && p.VisitState == EVisitState.Visited && p.Order.SeatEvaluate != null
-        //   && p.Order.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && p.Order.SeatEvaluate != ESeatEvaluate.Normal)
-
-
-
-        //   .WhereIF(!string.IsNullOrEmpty(dto.UserId), p => p.Order.AcceptorId == dto.UserId)
-        //   .WhereIF(dto.SeatEvaluate.HasValue, p => p.Order.SeatEvaluate == dto.SeatEvaluate)
-        //   .WhereIF(!string.IsNullOrEmpty(dto.UserName), p => p.Order.AcceptorName == dto.UserName)
-        //   .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title.Contains(dto.Title))
-        //   .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No.Contains(dto.No))
-        //    .OrderByDescending(p => p.VisitTime);
-        //return query;
     }
 
     #region private
@@ -3780,12 +3742,12 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                                          (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
                                           && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
                                         && step.Status < EWorkflowStepStatus.Handled)
-                                || (SqlFunc.IsNullOrEmpty(d.WorkflowId) 
+                                || (SqlFunc.IsNullOrEmpty(d.WorkflowId)
                                     && (SqlFunc.IsNullOrEmpty(d.SignerId) || (!SqlFunc.IsNullOrEmpty(d.SignerId) && d.SignerId == _sessionContext.UserId)))
                     )
                     .Where(d => d.Status <= EOrderStatus.HandOverToUnAccept
                         || d.Status == EOrderStatus.Handling//指派给班长再指派回坐席时
-                        //|| d.Status == EOrderStatus.Countersigning//跨级派单业务如发起会签再回到坐席会签汇总时
+                                                            //|| d.Status == EOrderStatus.Countersigning//跨级派单业务如发起会签再回到坐席会签汇总时
                         )
                     ;
 
@@ -3926,8 +3888,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .Where(d => SqlFunc.Subqueryable<OrderDelay>().Where(od => od.OrderId == d.Id && od.IsDeleted == false && od.DelayState == EDelayState.Examining).NotAny())
             .Where(d => SqlFunc.Subqueryable<OrderSendBackAudit>().Where(osba => osba.OrderId == d.Id && osba.IsDeleted == false && osba.State == ESendBackAuditState.Apply)
                 .NotAny())
-			.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(s => s.OrderId == d.Id && s.State == 0 && s.IsDeleted == false).NotAny())
-			.WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
+            .Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(s => s.OrderId == d.Id && s.State == 0 && s.IsDeleted == false).NotAny())
+            .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
             .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
             .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode)

Різницю між файлами не показано, бо вона завелика
+ 0 - 84
src/Hotline.Application/StatisticalReport/OrderReportApplication.cs


Деякі файли не було показано, через те що забагато файлів було змінено