|
@@ -754,43 +754,31 @@ public class OrderController : BaseController
|
|
|
[HttpGet("visit/source")]
|
|
|
[AllowAnonymous]
|
|
|
public async Task<IList<OrderVisitSourceChannelDto>> QueryOrderVisitSourceChannelAsync([FromQuery] QueryOrderVisitSourceChannelDto dto)
|
|
|
+ => await _orderApplication.QueryOrderVisitSourceChannelAsync(dto);
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 回访来源统计--导出
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("visit/source/export")]
|
|
|
+ [AllowAnonymous]
|
|
|
+ public async Task<FileStreamResult> QueryOrderVisitSourceChannelExportAsync([FromQuery] ExportExcelDto<QueryOrderVisitSourceChannelDto> dto)
|
|
|
{
|
|
|
- var startDate = new DateTime();
|
|
|
- var endDate = new DateTime();
|
|
|
- switch (dto.DateType)
|
|
|
- {
|
|
|
- case Share.Enums.Order.EDateType.Day:
|
|
|
- (startDate, endDate) = dto.StartTime.GetDayStartAndEnd();
|
|
|
- break;
|
|
|
- case Share.Enums.Order.EDateType.Week:
|
|
|
- (startDate, endDate) = dto.StartTime.GetWeekStartAndEnd();
|
|
|
- break;
|
|
|
- case Share.Enums.Order.EDateType.Month:
|
|
|
- (startDate, endDate) = dto.StartTime.GetMonthStartAndEnd();
|
|
|
- break;
|
|
|
- case Share.Enums.Order.EDateType.TimeLimit:
|
|
|
- if (dto.EndTime is null) throw new UserFriendlyException("结束时间错误");
|
|
|
- startDate = dto.StartTime;
|
|
|
- endDate = dto.EndTime.Value;
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- var result = await _orderVisitRepository.Queryable()
|
|
|
- .LeftJoin<Order>((visit, order) => order.Id == visit.OrderId)
|
|
|
- .Where((visit, order) => visit.VisitTime >= startDate && visit.VisitTime <= endDate)
|
|
|
- .GroupBy((visit, order) => new { order.SourceChannel })
|
|
|
- .Select((visit, order) => new OrderVisitSourceChannelDto
|
|
|
- {
|
|
|
- Count = SqlFunc.AggregateCount(visit.OrderId),
|
|
|
- SourceChannel = order.SourceChannel
|
|
|
- })
|
|
|
- .ToListAsync();
|
|
|
+ var result = await _orderApplication.QueryOrderVisitSourceChannelAsync(dto.QueryDto);
|
|
|
|
|
|
- return result;
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = result
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderVisitSourceChannelDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "回访来源统计");
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 回访列表
|
|
|
/// </summary>
|