|
@@ -24,6 +24,7 @@ using Hotline.Share.Enums.Order;
|
|
|
using Hotline.Share.Requests;
|
|
|
using Hotline.Share.Tools;
|
|
|
using Hotline.Tools;
|
|
|
+using Mapster;
|
|
|
using MapsterMapper;
|
|
|
using MediatR;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
@@ -4198,5 +4199,32 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
var stream = ExcelHelper.CreateStream(dtos);
|
|
|
return ExcelStreamResult(stream, "扭转信件统计");
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 部门延期统计明细-单独菜单
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("order_delay_detail")]
|
|
|
+ public async Task<PagedDto<OrderDelayDto>> QueryOrderDelayDataDetailAsync([FromQuery]QueryOrderDelayDataDetailRequest dto)
|
|
|
+ {
|
|
|
+ var query = _orderDelayRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
|
|
|
+ .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
|
|
|
+ .WhereIF(dto.TypeId != null && dto.TypeId == 1, x => x.Order.IdentityType == EIdentityType.Citizen)
|
|
|
+ .WhereIF(dto.TypeId != null && dto.TypeId == 2, x => x.Order.IdentityType == EIdentityType.Enterprise)
|
|
|
+ .WhereIF(dto.Type is 1, x => x.DelayState == EDelayState.Pass)
|
|
|
+ .WhereIF(dto.Type is 2, x => x.DelayState == EDelayState.NoPass)
|
|
|
+ .WhereIF(dto.Type is 3, x => x.DelayState == EDelayState.Examining)
|
|
|
+ .WhereIF(dto.Type is 4, x => x.DelayState < EDelayState.Withdraw)
|
|
|
+ .MergeTable();
|
|
|
+
|
|
|
+ if (_sessionContext.OrgIsCenter == false)
|
|
|
+ query = query.Where(x => x.ApplyOrgCode.StartsWith(_sessionContext.OrgId));
|
|
|
+
|
|
|
+ var (total, items) = await query.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
|
|
|
+ }
|
|
|
}
|
|
|
}
|