Explorar o código

部门满意度排行榜

田爽 hai 1 mes
pai
achega
e194eb9e84
Modificáronse 1 ficheiros con 53 adicións e 18 borrados
  1. 53 18
      src/Hotline.Api/Controllers/Bigscreen/DataScreenController.cs

+ 53 - 18
src/Hotline.Api/Controllers/Bigscreen/DataScreenController.cs

@@ -531,28 +531,63 @@ namespace Hotline.Api.Controllers.Bigscreen
         [HttpGet("ordervisit-orgsatisfaction-rank")]
         public async Task<List<OrderVisitOrgSatisfactionRankDto>> OrderVisitOrgSatisfactionRank(DateTime StartTime, DateTime EndTime)
         {
-            var list = await _orderVisitDetailRepository.Queryable()
-                .Includes(x => x.OrderVisit)
-                .Where(x => x.OrderVisit.VisitTime >= StartTime && x.OrderVisit.VisitTime <= EndTime && x.VisitTarget == EVisitTarget.Org &&
+            var list = new List<OrderVisitOrgSatisfactionRankDto>();
+
+            if (_appOptions.Value.IsLuZhou)
+            {
+                list = await _orderVisitDetailRepository.Queryable()
+                      .Includes(x => x.OrderVisit)
+                      .Where(x => x.OrderVisit.VisitTime >= StartTime && x.OrderVisit.VisitTime <= EndTime && x.VisitTarget == EVisitTarget.Org &&
+                                  x.VisitOrgCode.Length >= 6 && x.OrderVisit.VisitState == EVisitState.Visited)
+                      .GroupBy(x => new
+                      {
+                          VisitOrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))
+                      })
+                      .Select(x => new OrderVisitOrgSatisfactionRankDto()
+                      {
+                          VisitOrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
+                          SatisfiedCount =
+                              SqlFunc.AggregateSum(SqlFunc.IIF(
+                                  SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "1" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "2", 1,
+                                  0)),
+                          VisitCount = SqlFunc.AggregateCount(x.VisitOrgName)
+                      }).MergeTable()
+                      .LeftJoin<SystemOrganize>((x, so) => x.VisitOrgCode == so.Id)
+                      .Select((x, so) => new OrderVisitOrgSatisfactionRankDto()
+                      {
+                          VisitOrgCode = x.VisitOrgCode,
+                          VisitOrgName = so.Name,
+                          SatisfiedCount = x.SatisfiedCount,
+                          VisitCount = x.VisitCount
+                      })
+                      .OrderByDescending(x => x.SatisfiedCount).Take(10).ToListAsync();
+                list = list.OrderByDescending(x => x.SatisfiedRate).ToList();
+            }
+            else
+            {
+                list = await _orderVisitDetailRepository.Queryable()
+                    .Includes(x => x.OrderVisit)
+                    .Where(x => x.OrderVisit.VisitTime >= StartTime && x.OrderVisit.VisitTime <= EndTime && x.VisitTarget == EVisitTarget.Org &&
                             x.VisitOrgCode.Length >= 6 && x.OrderVisit.VisitState == EVisitState.Visited)
-                .GroupBy(x => new
-                {
-                    VisitOrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
-                    x.VisitOrgName
-                })
-                .Select(x => new OrderVisitOrgSatisfactionRankDto()
-                {
-                    VisitOrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
-                    VisitOrgName = x.VisitOrgName,
-                    SatisfiedCount =
+                    .GroupBy(x => new
+                    {
+                        VisitOrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
+                        x.VisitOrgName
+                    })
+                    .Select(x => new OrderVisitOrgSatisfactionRankDto()
+                    {
+                        VisitOrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
+                        VisitOrgName = x.VisitOrgName,
+                        SatisfiedCount =
                         SqlFunc.AggregateSum(SqlFunc.IIF(
                             SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "1" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "2", 1,
                             0)),
-                    VisitCount = SqlFunc.AggregateCount(x.VisitOrgName)
-                }).MergeTable().OrderByDescending(x => x.SatisfiedCount).Take(10).ToListAsync();
-            list = list.OrderByDescending(x => x.SatisfiedRate).ToList();
-            return list;
-        }
+                        VisitCount = SqlFunc.AggregateCount(x.VisitOrgName)
+                    }).MergeTable().OrderByDescending(x => x.SatisfiedCount).Take(10).ToListAsync();
+                                    list = list.OrderByDescending(x => x.SatisfiedRate).ToList();
+            }
+			return list;
+		}
 
         /// <summary>
         /// 占比分析