|
@@ -496,84 +496,62 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
- public async Task<List<dynamic>> QueryOrderSourceList(QueryOrderSourceRequest dto)
|
|
|
|
|
|
+ public async Task<List<OrderSourceHeaderVo>> QueryOrderSourceList(QueryOrderSourceRequest dto)
|
|
{
|
|
{
|
|
if (dto.EndTime.HasValue)
|
|
if (dto.EndTime.HasValue)
|
|
dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
- var time = 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=> d.CreationTime.ToString("yyyy-MM-dd"))
|
|
|
|
- .Select(d => new OrderSourceTimeVo { Time = d.CreationTime.ToString("yyyy-MM-dd") }).ToListAsync();
|
|
|
|
var data = await _orderRepository.Queryable()
|
|
var data = await _orderRepository.Queryable()
|
|
.WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
.WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
.WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
.WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
.WhereIF(dto.IdentityType.HasValue, d => d.IdentityType == dto.IdentityType)
|
|
.WhereIF(dto.IdentityType.HasValue, d => d.IdentityType == dto.IdentityType)
|
|
.Where(d => d.SourceChannel != null && d.SourceChannel != "")
|
|
.Where(d => d.SourceChannel != null && d.SourceChannel != "")
|
|
.GroupBy(d => new { Time = d.CreationTime.ToString("yyyy-MM-dd"), d.SourceChannel })
|
|
.GroupBy(d => new { Time = d.CreationTime.ToString("yyyy-MM-dd"), d.SourceChannel })
|
|
- .Select(d => new OrderSourceTimeListVo
|
|
|
|
- {
|
|
|
|
|
|
+ .Select(d => new OrderSourceHeaderVo
|
|
|
|
+ {
|
|
Time = d.CreationTime.ToString("yyyy-MM-dd"),
|
|
Time = d.CreationTime.ToString("yyyy-MM-dd"),
|
|
- Source = d.SourceChannel,
|
|
|
|
- Num = SqlFunc.AggregateCount(d.Id)
|
|
|
|
- }).ToListAsync() ;
|
|
|
|
- var header = await QueryOrderSourceHeaderList(dto);
|
|
|
|
- List<dynamic> res = new List<dynamic>();
|
|
|
|
- foreach (var item in time)
|
|
|
|
|
|
+ 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))
|
|
|
|
+ }).ToListAsync() ;
|
|
|
|
+ var totalVo = new OrderSourceHeaderVo()
|
|
{
|
|
{
|
|
- List<dynamic> hraderRes = new List<dynamic>();
|
|
|
|
- foreach (var item1 in header)
|
|
|
|
- {
|
|
|
|
- dynamic dynamicObj = new ExpandoObject();
|
|
|
|
- dynamicObj.Name = item1.Code;
|
|
|
|
- if ("Subtotal".Equals(item1.Code))
|
|
|
|
- {
|
|
|
|
- var sum = data.Where(x => x.Time == item.Time).Sum(x => x.Num);
|
|
|
|
- dynamicObj.GetNumber = new Func<int>(() => sum);
|
|
|
|
-
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- if ("Time".Equals(item1.Code))
|
|
|
|
- {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- var timeVo = data.FirstOrDefault(x => x.Time == item.Time && x.Source == item1.Header);
|
|
|
|
- if (timeVo != null)
|
|
|
|
- {
|
|
|
|
- dynamicObj.GetNumber = new Func<int>(() => timeVo.Num);
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- dynamicObj.GetNumber = 0;
|
|
|
|
- }
|
|
|
|
- hraderRes.Add(dynamicObj);
|
|
|
|
- }
|
|
|
|
- res.Add(hraderRes);
|
|
|
|
- }
|
|
|
|
- return res;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// 信件来源统计列表表头
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="dto"></param>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- public async Task<List<OrderSourceHeaderVo>> QueryOrderSourceHeaderList(QueryOrderSourceRequest dto)
|
|
|
|
- {
|
|
|
|
- if (dto.EndTime.HasValue)
|
|
|
|
- dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
|
- var list = 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 => d.SourceChannel)
|
|
|
|
- .Select(d => new OrderSourceHeaderVo { Header = d.SourceChannel,Code = d.SourceChannel }).ToListAsync();
|
|
|
|
- list.Insert(0, new OrderSourceHeaderVo { Header = "小计", Code = "Subtotal" });
|
|
|
|
- list.Insert(0, new OrderSourceHeaderVo { Header = "日期", Code = "Time" });
|
|
|
|
- return list;
|
|
|
|
|
|
+ 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;
|
|
}
|
|
}
|
|
|
|
|
|
public ISugarQueryable<Order> QueryOrderSourceDetail(QueryOrderSourceDetailRequest dto) {
|
|
public ISugarQueryable<Order> QueryOrderSourceDetail(QueryOrderSourceDetailRequest dto) {
|