|
@@ -116,121 +116,88 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
[HttpGet("org_data_list_detail")]
|
|
|
public async Task<PagedDto<OrderDto>> OrgDataListDetail([FromQuery] OrgDataListDetailRequest dto)
|
|
|
{
|
|
|
- dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
|
|
|
-
|
|
|
- var quer = _orderRepository.Queryable()
|
|
|
- .InnerJoin<SystemOrganize>((x, so) => x.ActualHandleOrgCode == so.Id)
|
|
|
- .Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
|
|
|
- .WhereIF(dto.QueryType == 1, x => x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) //业务已办超期
|
|
|
- .WhereIF(dto.QueryType == 3, x => x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()) //业务待办超期
|
|
|
- .WhereIF(dto.QueryType == 5, x =>
|
|
|
- (x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) || (x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.QueryType is 1 or 3 && dto.OrgCode == "001", x => x.ActualHandleOrgCode == dto.OrgCode)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.QueryType is 1 or 3 && dto.OrgCode != "001", x => x.ActualHandleOrgCode.StartsWith(dto.OrgCode))
|
|
|
- .MergeTable();
|
|
|
-
|
|
|
- if (dto.QueryType is 2 or 4 or 5)
|
|
|
- {
|
|
|
- var queryCountersign = _workflowCountersignRepository.Queryable()
|
|
|
- .LeftJoin<WorkflowCountersignMember>((x, o) => x.Id == o.WorkflowCountersignId)
|
|
|
- .Where((x, o) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime && x.IsExpired.HasValue && x.IsExpired.Value == true)
|
|
|
- .WhereIF(dto.QueryType == 2, (x, o) => o.IsHandled == true) //会签已办超期
|
|
|
- .WhereIF(dto.QueryType == 4, (x, o) => o.IsHandled == false) //会签待办超期
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.QueryType is 2 or 4 or 5, (x, o) => o.Key.StartsWith(dto.OrgCode))
|
|
|
- //.GroupBy((x,o)=>x.WorkflowId)
|
|
|
- .Select((x, o) => new { Id = x.WorkflowId })
|
|
|
- .MergeTable();
|
|
|
-
|
|
|
- quer = quer.InnerJoin(queryCountersign, (x, c) => x.WorkflowId == c.Id);
|
|
|
-
|
|
|
- }
|
|
|
- var (total, items) = await quer.ToPagedListAsync(dto.PageIndex, dto.PageSize);
|
|
|
+ var quer = _orderApplication.QueryOrgDataListDetail(dto);
|
|
|
+ var (total, items) = await quer.ToPagedListAsync(dto.PageIndex, dto.PageSize);
|
|
|
|
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/// <summary>
|
|
|
- /// 部门超期统计
|
|
|
+ /// 部门超期统计明细导出
|
|
|
/// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [HttpGet("org_data_list")]
|
|
|
- public async Task<PagedDto<OrderBiOrgDataListVo>> OrgDataList([FromQuery] ReportPagedRequest dto)
|
|
|
+ [HttpPost("org_data_list_detail/_export")]
|
|
|
+ public async Task<FileStreamResult> OrgDataListDetailExport([FromBody] ExportExcelDto<OrgDataListDetailRequest> dto)
|
|
|
{
|
|
|
- if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
|
|
|
+ var query = _orderApplication.QueryOrgDataListDetail(dto.QueryDto);
|
|
|
+ List<Order> secondaryHandling;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ secondaryHandling = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ secondaryHandling = items;
|
|
|
+ }
|
|
|
|
|
|
- dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
+ var secondaryHandlingDtos = _mapper.Map<ICollection<OrderDto>>(secondaryHandling);
|
|
|
|
|
|
- var IsCenter = _sessionContext.OrgIsCenter;
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
|
|
|
+ var dtos = secondaryHandlingDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
|
|
|
- var queryOrder = _systemOrganizeRepository.Queryable()
|
|
|
- .LeftJoin<Order>((x, o) => x.Id == o.ActualHandleOrgCode)
|
|
|
- .WhereIF(dto.StartTime.HasValue, (x, o) => o.CreationTime >= dto.StartTime)
|
|
|
- .WhereIF(dto.EndTime.HasValue, (x, o) => o.CreationTime <= dto.EndTime)
|
|
|
- .WhereIF(IsCenter == false, (x, o) => o.ActualHandleOrgCode == _sessionContext.RequiredOrgId)
|
|
|
- .GroupBy((x, o) => new { x.Id, x.Name })
|
|
|
- .Select((x, o) => new OrderBiOrgDataListVo
|
|
|
- {
|
|
|
- OrgName = x.Name,
|
|
|
- OrgId = x.Id,
|
|
|
- HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.Status >= EOrderStatus.Filed && o.ExpiredTime < o.FiledTime, 1, 0)),
|
|
|
- NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.Status < EOrderStatus.Filed && o.ExpiredTime < SqlFunc.GetDate(), 1, 0)),
|
|
|
- }).MergeTable();
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
|
|
|
- var queryCountersign = _workflowCountersignRepository.Queryable()
|
|
|
- .LeftJoin<WorkflowCountersignMember>((x, o) => x.Id == o.WorkflowCountersignId)
|
|
|
- .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
|
|
|
- .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
|
|
|
- .GroupBy((x, o) => o.Key)
|
|
|
- .Select((x, o) => new OrderBiOrgDataListVo
|
|
|
- {
|
|
|
- OrgId = o.Key,
|
|
|
- CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled && x.IsExpired.HasValue && x.IsExpired.Value == true, 1, 0)),
|
|
|
- CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled == false && x.IsExpired.HasValue && x.IsExpired.Value == true, 1, 0)),
|
|
|
- }).MergeTable();
|
|
|
+ return ExcelStreamResult(stream, "部门超期统计明细数据");
|
|
|
+ }
|
|
|
|
|
|
- var query = queryOrder.LeftJoin(queryCountersign, (or, co) => or.OrgId == co.OrgId)
|
|
|
- .LeftJoin<SystemOrganize>((or, co, so) => or.OrgId.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")) == so.Id)
|
|
|
- .GroupBy((or, co, so) => new { so.Id, so.Name })
|
|
|
- .Select((or, co, so) => new OrderBiOrgDataListVo
|
|
|
- {
|
|
|
- OrgName = so.Name,
|
|
|
- OrgId = so.Id,
|
|
|
- HandlerExtendedNum = SqlFunc.AggregateSum(or.HandlerExtendedNum),
|
|
|
- NoHandlerExtendedNum = SqlFunc.AggregateSum(or.NoHandlerExtendedNum),
|
|
|
- CounterHandlerExtendedNum = SqlFunc.AggregateSum(co.CounterHandlerExtendedNum),
|
|
|
- CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(co.CounterNoHandlerExtendedNum)
|
|
|
- }).MergeTable();
|
|
|
|
|
|
- query = query.WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.OrgName.Contains(dto.Keyword!)).Where(x => x.HandlerExtendedNum > 0 || x.NoHandlerExtendedNum > 0 || x.CounterHandlerExtendedNum > 0 || x.CounterNoHandlerExtendedNum > 0);
|
|
|
- switch (dto.SortField)
|
|
|
- {
|
|
|
- case "handlerExtendedNum":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.HandlerExtendedNum) : query.OrderByDescending(x => x.HandlerExtendedNum);
|
|
|
- break;
|
|
|
- case "counterHandlerExtendedNum":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.CounterHandlerExtendedNum) : query.OrderByDescending(x => x.CounterHandlerExtendedNum);
|
|
|
- break;
|
|
|
- case "noHandlerExtendedNum":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.NoHandlerExtendedNum) : query.OrderByDescending(x => x.NoHandlerExtendedNum);
|
|
|
- break;
|
|
|
- case "counterNoHandlerExtendedNum":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.CounterNoHandlerExtendedNum) : query.OrderByDescending(x => x.CounterNoHandlerExtendedNum);
|
|
|
- break;
|
|
|
- }
|
|
|
+ /// <summary>
|
|
|
+ /// 部门超期统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("org_data_list")]
|
|
|
+ public async Task<PagedDto<OrderBiOrgDataListVo>> OrgDataList([FromQuery] ReportPagedRequest dto)
|
|
|
+ {
|
|
|
|
|
|
- var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ var query = _orderApplication.QueryOrgDataList(dto);
|
|
|
+ var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
return new PagedDto<OrderBiOrgDataListVo>(total, items);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 话务员办件统计
|
|
|
+ /// 部门超期统计导出
|
|
|
/// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [HttpGet("centre_data_list")]
|
|
|
+ [HttpPost("org_data_list/_export")]
|
|
|
+ public async Task<FileStreamResult> OrgDataListExport([FromBody] ExportExcelDto<ReportPagedRequest> dto)
|
|
|
+ {
|
|
|
+ var query = _orderApplication.QueryOrgDataList(dto.QueryDto);
|
|
|
+ List<OrderBiOrgDataListVo> secondaryHandling;
|
|
|
+ secondaryHandling = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ var dtos = secondaryHandling
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderBiOrgDataListVo), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "部门超期统计数据");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 话务员办件统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("centre_data_list")]
|
|
|
public async Task<List<OrderBiCentreDataListVo>> CentreDataList([FromQuery] ReportPagedRequest dto)
|
|
|
{
|
|
|
if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
|
|
@@ -2758,26 +2725,34 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
if (!dto.StartTime.HasValue || !dto.EndTime.HasValue)
|
|
|
throw UserFriendlyException.SameMessage("请选择时间!");
|
|
|
dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
- var (total, items) = await _orderSpecialDetailRepository.Queryable()
|
|
|
- .Includes(x => x.OrderSpecial)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgName), x => x.OrgName.Contains(dto.OrgName!))
|
|
|
- .Where(x => x.OrderSpecial.ESpecialType == ESpecialType.ReTransact)
|
|
|
- .Where(x => x.OrderSpecial.CreationTime >= dto.StartTime)
|
|
|
- .Where(x => x.OrderSpecial.CreationTime <= dto.EndTime)
|
|
|
- .GroupBy(x => new { Time = x.OrderSpecial.CreationTime.ToString("yyyy-MM-dd"), x.OrgId, x.OrgName })
|
|
|
- .Select(x => new OrderReTransactVo
|
|
|
- {
|
|
|
- Time = x.OrderSpecial.CreationTime.ToString("yyyy-MM-dd"),
|
|
|
- OrgId = x.OrgId,
|
|
|
- OrgName = x.OrgName,
|
|
|
- Num = SqlFunc.AggregateCount(1)
|
|
|
- }).MergeTable()
|
|
|
- .OrderByIF(dto.SortRule == 0, x => x.Num, OrderByType.Asc)
|
|
|
- .OrderByIF(dto.SortRule == 1, x => x.Num, OrderByType.Desc)
|
|
|
- .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ var query = _orderApplication.OrderReTransact(dto);
|
|
|
+ var (total, items) = await query
|
|
|
+ .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
return new PagedDto<OrderReTransactVo>(total, _mapper.Map<IReadOnlyList<OrderReTransactVo>>(items));
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 回退错件导出
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("reTransact/_export")]
|
|
|
+ public async Task<FileStreamResult> OrderReTransactExport([FromBody] ExportExcelDto<QueryOrderReTransactRequest> dto)
|
|
|
+ {
|
|
|
+ var query = _orderApplication.OrderReTransact(dto.QueryDto);
|
|
|
+ List<OrderReTransactVo> secondaryHandling;
|
|
|
+ secondaryHandling = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ var dtos = secondaryHandling
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderReTransactVo), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "回退错件统计数据");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 回退错件明细
|
|
|
/// </summary>
|
|
@@ -2789,24 +2764,52 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
if (!dto.StartTime.HasValue || !dto.EndTime.HasValue)
|
|
|
throw UserFriendlyException.SameMessage("请选择时间!");
|
|
|
dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
- var (total, items) = await _orderSpecialDetailRepository.Queryable()
|
|
|
- .Includes(x => x.OrderSpecial, s => s.Order)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgName), x => x.OrgName.Contains(dto.OrgName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ErrorName), x => x.ErrorName.Contains(dto.ErrorName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderSpecial!.Order!.No!.Contains(dto.No!))
|
|
|
- .Where(x => x.OrderSpecial.ESpecialType == ESpecialType.ReTransact)
|
|
|
- .Where(x => x.OrderSpecial.CreationTime >= dto.StartTime)
|
|
|
- .Where(x => x.OrderSpecial.CreationTime <= dto.EndTime)
|
|
|
- .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ var query = _orderApplication.QueryOrderSourceDetail(dto);
|
|
|
+ var (total, items) = await
|
|
|
+ query.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
return new PagedDto<OrderSpecialDetailDto>(total, _mapper.Map<IReadOnlyList<OrderSpecialDetailDto>>(items));
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 回退错件明细导出
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("reTransact_detail/_export")]
|
|
|
+ public async Task<FileStreamResult> OrderReTransactDetailExport([FromBody] ExportExcelDto<QueryOrderReTransactDetailRequest> dto)
|
|
|
+ {
|
|
|
+ var query = _orderApplication.QueryOrderSourceDetail(dto.QueryDto);
|
|
|
+ List<OrderSpecialDetail> secondaryHandling;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ secondaryHandling = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ secondaryHandling = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ var secondaryHandlingDtos = _mapper.Map<ICollection<OrderSpecialDetailDto>>(secondaryHandling);
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = secondaryHandlingDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderSpecialDetailDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "回退错件明细列表数据");
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 获取基本信息
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
|
- [HttpGet("reTransact_base")]
|
|
|
+ [HttpGet("reTransact_base")]
|
|
|
public async Task<object> ReTransactBaseData()
|
|
|
{
|
|
|
var rsp = new
|