|
@@ -35,6 +35,7 @@ using XF.Domain.Repository;
|
|
|
using Hotline.Repository.SqlSugar.System;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using Hotline.Share.Dtos.Bi;
|
|
|
+using System.Net;
|
|
|
|
|
|
namespace Hotline.Application.Orders;
|
|
|
|
|
@@ -580,7 +581,13 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
return data;
|
|
|
}
|
|
|
|
|
|
- public ISugarQueryable<Order> QueryOrderSourceDetail(QueryOrderSourceDetailRequest dto)
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 信件来源统计明细
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public ISugarQueryable<Order> QueryOrderSourceDetail(QueryOrderSourceDetailRequest dto)
|
|
|
{
|
|
|
|
|
|
return _orderRepository.Queryable()
|
|
@@ -590,12 +597,78 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
.Where(d => d.SourceChannel != null && d.SourceChannel != "");
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 部门超期统计
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- public ISugarQueryable<OrderBiOrgDataListVo> QueryOrgDataList(ReportPagedRequest dto)
|
|
|
+ /// <summary>
|
|
|
+ /// 信件来源分时统计列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<List<OrderSourceHeaderVo>> QueryOrderSourceHoursList(QueryOrderSourceRequest dto)
|
|
|
+ {
|
|
|
+ if (dto.EndTime.HasValue)
|
|
|
+ dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
+
|
|
|
+ var data =await _orderRepository.Queryable()
|
|
|
+ .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
|
+ .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
|
+ .WhereIF(dto.IdentityType.HasValue, d => d.IdentityType == dto.IdentityType)
|
|
|
+ .Where(d => d.SourceChannel != null && d.SourceChannel != "")
|
|
|
+ .GroupBy(d => new { Time = d.CreationTime.ToString("HH"), d.SourceChannel })
|
|
|
+ .Select(d => new OrderSourceHeaderVo
|
|
|
+ {
|
|
|
+ Time = d.CreationTime.ToString("HH")+":00 - " + d.CreationTime.ToString("HH")+":59",
|
|
|
+ TimeSort = d.CreationTime.ToString("HH"),
|
|
|
+ Phone = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "RGDH", 1, 0)),
|
|
|
+ Web = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "YTW", 1, 0)),
|
|
|
+ Rests = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "QT", 1, 0)),
|
|
|
+ Created = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "ZJ", 1, 0)),
|
|
|
+ WeChat = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "WX", 1, 0)),
|
|
|
+ App = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "AP", 1, 0)),
|
|
|
+ WisdomYB = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "ZHYB", 1, 0)),
|
|
|
+ Platform = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "ZZPT", 1, 0)),
|
|
|
+ Platform12328 = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "S12328", 1, 0)),
|
|
|
+ MayorAndNetizens = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "SZYSM", 1, 0)),
|
|
|
+ MediaYB = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "YBRMT", 1, 0)),
|
|
|
+ Platform12345 = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "S12345", 1, 0)),
|
|
|
+ Interaction = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "SZMHD", 1, 0)),
|
|
|
+ ServiceYB = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "YBS", 1, 0)),
|
|
|
+ CityTransfer = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "SZHZ", 1, 0)),
|
|
|
+ Platform110 = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "YB110", 1, 0)),
|
|
|
+ NoService = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "SMZXBNCS", 1, 0)),
|
|
|
+ Iyb = SqlFunc.AggregateSum(SqlFunc.IIF(d.SourceChannelCode == "IYB", 1, 0))
|
|
|
+ }).OrderBy(d=> d.TimeSort).ToListAsync();
|
|
|
+
|
|
|
+ var totalVo = new OrderSourceHeaderVo()
|
|
|
+ {
|
|
|
+ Time = "合计",
|
|
|
+ Phone = data.Sum(x => x.Phone),
|
|
|
+ Web = data.Sum(x => x.Web),
|
|
|
+ Rests = data.Sum(x => x.Rests),
|
|
|
+ Created = data.Sum(x => x.Created),
|
|
|
+ WeChat = data.Sum(x => x.WeChat),
|
|
|
+ App = data.Sum(x => x.App),
|
|
|
+ WisdomYB = data.Sum(x => x.WisdomYB),
|
|
|
+ Platform = data.Sum(x => x.Platform),
|
|
|
+ Platform12328 = data.Sum(x => x.Platform12328),
|
|
|
+ MayorAndNetizens = data.Sum(x => x.MayorAndNetizens),
|
|
|
+ MediaYB = data.Sum(x => x.MediaYB),
|
|
|
+ Platform12345 = data.Sum(x => x.Platform12345),
|
|
|
+ Interaction = data.Sum(x => x.Interaction),
|
|
|
+ ServiceYB = data.Sum(x => x.ServiceYB),
|
|
|
+ CityTransfer = data.Sum(x => x.CityTransfer),
|
|
|
+ Platform110 = data.Sum(x => x.Platform110),
|
|
|
+ NoService = data.Sum(x => x.NoService),
|
|
|
+ Iyb = data.Sum(x => x.Iyb)
|
|
|
+ };
|
|
|
+ data.Add(totalVo);
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 部门超期统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public ISugarQueryable<OrderBiOrgDataListVo> QueryOrgDataList(ReportPagedRequest dto)
|
|
|
{
|
|
|
if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
|
|
|
|
|
@@ -747,12 +820,12 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public async Task<List<VisitAndOrgSatisfactionStatisticsDto>> VisitAndOrgSatisfactionStatistics(PagedKeywordSonRequest dto) {
|
|
|
- dto.EndDate = dto.EndDate.Value.AddDays(1).AddSeconds(-1);
|
|
|
+ dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
|
|
|
bool IsCenter = _sessionContext.OrgIsCenter;
|
|
|
|
|
|
var list = _orderVisitDetailRepository.Queryable()
|
|
|
- .Where(x => x.OrderVisit.VisitTime >= dto.StartDate.Value && x.OrderVisit.VisitTime <= dto.EndDate.Value && x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited && !string.IsNullOrEmpty(x.VisitOrgCode))
|
|
|
+ .Where(x => x.OrderVisit.VisitTime >= dto.StartTime.Value && x.OrderVisit.VisitTime <= dto.EndTime.Value && x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited && !string.IsNullOrEmpty(x.VisitOrgCode))
|
|
|
.WhereIF(string.IsNullOrEmpty(dto.OrgName) == false, x => x.VisitOrgName.Contains(dto.OrgName))
|
|
|
.WhereIF(string.IsNullOrEmpty(dto.LineNum) == false, x => x.OrderVisit.Order.CallRecord.Gateway.Contains(dto.LineNum))
|
|
|
.WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.OrgId));
|
|
@@ -840,13 +913,13 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
/// <returns></returns>
|
|
|
public async Task<List<VisitAndOrgSatisfactionStatisticsDto>> VisitAndOrgStatisfactionOrgDetail(PagedKeywordSonRequest dto)
|
|
|
{
|
|
|
- dto.EndDate = dto.EndDate.Value.AddDays(1).AddSeconds(-1);
|
|
|
+ dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
|
|
|
bool IsCenter = _sessionContext.OrgIsCenter;
|
|
|
|
|
|
var list = 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.StartDate.Value && it.OrderVisit.VisitTime <= dto.EndDate.Value && it.VisitTarget == EVisitTarget.Org && it.OrderVisit.VisitState == EVisitState.Visited)
|
|
|
+ .Where((x, it) => it.OrderVisit.VisitTime >= dto.StartTime.Value && it.OrderVisit.VisitTime <= dto.EndTime.Value && it.VisitTarget == EVisitTarget.Org && it.OrderVisit.VisitState == EVisitState.Visited)
|
|
|
.WhereIF(dto.OrgCode == "001", (x, it) => it.VisitOrgCode == dto.OrgCode)
|
|
|
.WhereIF(dto.OrgCode != "001", (x, it) => it.VisitOrgCode.StartsWith(dto.OrgCode))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.LineNum), (x, it) => it.OrderVisit.Order.CallRecord.Gateway.Contains(dto.LineNum))
|