|
@@ -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>
|
|
|
/// 占比分析
|