|
@@ -527,39 +527,74 @@ namespace Hotline.Api.Controllers.Bigscreen
|
|
|
/// <returns></returns>
|
|
|
[AllowAnonymous]
|
|
|
[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 &&
|
|
|
- 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 =
|
|
|
- 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;
|
|
|
- }
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 占比分析
|
|
|
- /// </summary>
|
|
|
- /// <param name="StartTime"></param>
|
|
|
- /// <param name="EndTime"></param>
|
|
|
- /// <param name="IsSource"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [AllowAnonymous]
|
|
|
+ public async Task<List<OrderVisitOrgSatisfactionRankDto>> OrderVisitOrgSatisfactionRank(DateTime StartTime, DateTime EndTime)
|
|
|
+ {
|
|
|
+ var list = new List<OrderVisitOrgSatisfactionRankDto>();
|
|
|
+
|
|
|
+ if (_appOptions.Value.IsLuZhou)
|
|
|
+ {
|
|
|
+ list = await _orderVisitDetailRepository.Queryable()
|
|
|
+ .LeftJoin<OrderVisit>((x,ov)=>x.VisitId == ov.Id)
|
|
|
+ .Where((x, ov) => ov.VisitTime >= StartTime && ov.VisitTime <= EndTime && x.VisitTarget == EVisitTarget.Org &&
|
|
|
+ x.VisitOrgCode.Length >= 6 && ov.VisitState == EVisitState.Visited)
|
|
|
+ .GroupBy((x, ov) => new
|
|
|
+ {
|
|
|
+ VisitOrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))
|
|
|
+ })
|
|
|
+ .Select((x, ov) => 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 =
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 占比分析
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="StartTime"></param>
|
|
|
+ /// <param name="EndTime"></param>
|
|
|
+ /// <param name="IsSource"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [AllowAnonymous]
|
|
|
[HttpGet("order-source-accepttype-statistics")]
|
|
|
public async Task<List<OrderSourceAndAcceptTtoeStatisticsDto>> OrderSourceAndAcceptTtoeStatistics(DateTime StartTime, DateTime EndTime,
|
|
|
bool IsSource)
|