|
@@ -966,6 +966,83 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
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));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 部门延期统计明细-单独菜单 导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("order-delay-detail/exprot")]
|
|
|
+ public async Task<FileStreamResult> ExportQueryOrderDelayDataDetailAsync([FromBody] ExportExcelDto<QueryOrderDelayDataDetailRequest> dto)
|
|
|
+ {
|
|
|
+ var query = _orderDelayRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .WhereIF(dto.QueryDto.StartTime.HasValue, x => x.CreationTime >= dto.QueryDto.StartTime)
|
|
|
+ .WhereIF(dto.QueryDto.EndTime.HasValue, x => x.CreationTime <= dto.QueryDto.EndTime)
|
|
|
+ .WhereIF(dto.QueryDto.TypeId != null && dto.QueryDto.TypeId == 1, x => x.Order.IdentityType == EIdentityType.Citizen)
|
|
|
+ .WhereIF(dto.QueryDto.TypeId != null && dto.QueryDto.TypeId == 2, x => x.Order.IdentityType == EIdentityType.Enterprise)
|
|
|
+ .WhereIF(dto.QueryDto.Type is 1, x => x.DelayState == EDelayState.Pass)
|
|
|
+ .WhereIF(dto.QueryDto.Type is 2, x => x.DelayState == EDelayState.NoPass)
|
|
|
+ .WhereIF(dto.QueryDto.Type is 3, x => x.DelayState == EDelayState.Examining)
|
|
|
+ .WhereIF(dto.QueryDto.Type is 4, x => x.DelayState < EDelayState.Withdraw)
|
|
|
+ .MergeTable();
|
|
|
+
|
|
|
+ if (_sessionContext.OrgIsCenter == false)
|
|
|
+ query = query.Where(x => x.ApplyOrgCode.StartsWith(_sessionContext.OrgId));
|
|
|
+
|
|
|
+ List<OrderDelay> list;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ list = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ list = items;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ var orderDtos = _mapper.Map<ICollection<OrderDelayDto>>(list);
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = orderDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderDelayDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "部门延期统计明细数据");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 特提统计
|
|
|
/// </summary>
|
|
@@ -5512,33 +5589,6 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
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));
|
|
|
- }
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 工单热词分析
|
|
|
/// </summary>
|