|
@@ -31,8 +31,8 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
private readonly IRepository<OrderVisitDetail> _orderVisitDetailRepository;
|
|
|
private readonly IRepository<OrderDelay> _orderDelayRepository;
|
|
|
private readonly IMapper _mapper;
|
|
|
- private readonly ISystemOrganizeRepository _organizeRepository;
|
|
|
private readonly IRepository<WorkflowCountersign> _workflowCountersignRepository;
|
|
|
+ private readonly IRepository<OrderSpecial> _orderSpecialRepository;
|
|
|
|
|
|
public BiOrderController(
|
|
|
IOrderRepository orderRepository,
|
|
@@ -40,8 +40,8 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
ISystemDicDataCacheManager sysDicDataCacheManager,
|
|
|
IRepository<OrderVisitDetail> orderVisitDetailRepository,
|
|
|
IRepository<OrderDelay> orderDelayRepository,
|
|
|
- ISystemOrganizeRepository organizeRepository,
|
|
|
IRepository<WorkflowCountersign> workflowCountersignRepository,
|
|
|
+ IRepository<OrderSpecial> orderSpecialRepository,
|
|
|
IMapper mapper
|
|
|
)
|
|
|
{
|
|
@@ -50,8 +50,8 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
_sysDicDataCacheManager = sysDicDataCacheManager;
|
|
|
_orderVisitDetailRepository = orderVisitDetailRepository;
|
|
|
_orderDelayRepository = orderDelayRepository;
|
|
|
- _organizeRepository = organizeRepository;
|
|
|
_workflowCountersignRepository = workflowCountersignRepository;
|
|
|
+ _orderSpecialRepository = orderSpecialRepository;
|
|
|
_mapper = mapper;
|
|
|
}
|
|
|
|
|
@@ -283,6 +283,38 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- }
|
|
|
+ /// <summary>
|
|
|
+ /// 特提统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("special_data_list")]
|
|
|
+ public async Task<PagedDto<OrderBiSpecialListVo>> SpecialDataList([FromQuery] ReportPagedRequest dto)
|
|
|
+ {
|
|
|
+ var query = _orderSpecialRepository.Queryable()
|
|
|
+ .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
|
|
|
+ .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
|
|
|
+ .GroupBy(x => new { x.Cause })
|
|
|
+ .Select(x => new OrderBiSpecialListVo
|
|
|
+ {
|
|
|
+ Cause = x.Cause,
|
|
|
+ OrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(true, 1, 0)),
|
|
|
+ MaxSpecialTime = SqlFunc.AggregateMax(x.CreationTime),
|
|
|
+ }).MergeTable();
|
|
|
+ switch (dto.SortField)
|
|
|
+ {
|
|
|
+ case "cause":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Cause) : query.OrderByDescending(x => x.Cause);
|
|
|
+ break;
|
|
|
+ case "orderNum":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.OrderNum) : query.OrderByDescending(x => x.OrderNum);
|
|
|
+ break;
|
|
|
+ case "maxSpecialTime":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.MaxSpecialTime) : query.OrderByDescending(x => x.MaxSpecialTime);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<OrderBiSpecialListVo>(total, items);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|