|
@@ -283,59 +283,39 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
[HttpGet("centre_data_list")]
|
|
|
public async Task<List<OrderBiCentreDataListVo>> CentreDataList([FromQuery] ReportPagedRequest dto)
|
|
|
{
|
|
|
- if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
|
|
|
-
|
|
|
- dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
-
|
|
|
- var query = _orderRepository.Queryable(false, false, false)
|
|
|
- .WhereIF(dto.StartTime.HasValue, it => it.CreationTime >= dto.StartTime)
|
|
|
- .WhereIF(dto.EndTime.HasValue, it => it.CreationTime <= dto.EndTime)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword), it => it.SignerName.Contains(dto.Keyword!))
|
|
|
- .GroupBy(it => new { it.SignerId, it.SignerName })
|
|
|
- .Select(it => new OrderBiCentreDataListVo
|
|
|
- {
|
|
|
- UserName = it.SignerName,
|
|
|
- UserId = it.SignerId,
|
|
|
- //Subtotal = SqlFunc.AggregateCount(x.AcceptorId),
|
|
|
- CentreArchive = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Filed && it.ProcessType == EProcessType.Zhiban && it.AcceptType != "无效", 1, 0)), //中心归档件
|
|
|
- //CentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Filed && (it.FileUserRole == EFileUserType.Org || it.FileUserRole == EFileUserType.Dispatch), 1, 0)), //转办信件
|
|
|
- CentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptType != "无效" && (it.ProcessType == EProcessType.Jiaoban || (it.ActualHandleStepName == "派单组" && it.Status < EOrderStatus.Filed) || (it.ActualHandleStepName == "班长审批" && it.Status < EOrderStatus.Filed)), 1, 0)),
|
|
|
- NoCentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptType != "无效" && (it.Status <= EOrderStatus.SpecialToUnAccept), 1, 0)), //坐席待办 //中心领导?市领导? 是否在统计条件中
|
|
|
- //CentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Filed && it.ProcessType == EProcessType.Jiaoban, 1, 0)),
|
|
|
- //NoCentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
|
|
|
- Invalid = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptType == "无效", 1, 0)),
|
|
|
- Repeat = SqlFunc.AggregateSum(SqlFunc.IIF(it.DuplicateIds != null && SqlFunc.JsonArrayLength(it.DuplicateIds) > 0, 1, 0)),
|
|
|
- Subtotal = SqlFunc.AggregateSum(SqlFunc.IIF((it.Status >= EOrderStatus.Filed && it.ProcessType == EProcessType.Zhiban && it.AcceptType != "无效") || (it.AcceptType != "无效" && (it.ProcessType == EProcessType.Jiaoban || (it.ActualHandleStepName == "派单组" && it.Status < EOrderStatus.Filed) || (it.ActualHandleStepName == "班长审批" && it.Status < EOrderStatus.Filed))) || (it.Status <= EOrderStatus.SpecialToUnAccept) || it.AcceptType == "无效" || (it.DuplicateIds != null && SqlFunc.JsonArrayLength(it.DuplicateIds) > 0), 1, 0))
|
|
|
- }).MergeTable();
|
|
|
- switch (dto.SortField)
|
|
|
- {
|
|
|
- case "centreArchive":
|
|
|
- query = dto.SortRule is 0 ? query.OrderBy(x => x.CentreArchive) : query.OrderByDescending(x => x.CentreArchive);
|
|
|
- break;
|
|
|
- case "centreCareOf":
|
|
|
- query = dto.SortRule is 0 ? query.OrderBy(x => x.CentreCareOf) : query.OrderByDescending(x => x.CentreCareOf);
|
|
|
- break;
|
|
|
- case "noCentreCareOf":
|
|
|
- query = dto.SortRule is 0 ? query.OrderBy(x => x.NoCentreCareOf) : query.OrderByDescending(x => x.NoCentreCareOf);
|
|
|
- break;
|
|
|
- case "invalid":
|
|
|
- query = dto.SortRule is 0 ? query.OrderBy(x => x.Invalid) : query.OrderByDescending(x => x.Invalid);
|
|
|
- break;
|
|
|
- case "repeat":
|
|
|
- query = dto.SortRule is 0 ? query.OrderBy(x => x.Repeat) : query.OrderByDescending(x => x.Repeat);
|
|
|
- break;
|
|
|
- case "subtotal":
|
|
|
- query = dto.SortRule is 0 ? query.OrderBy(x => x.Subtotal) : query.OrderByDescending(x => x.Subtotal);
|
|
|
- break;
|
|
|
- }
|
|
|
+ var query = _orderApplication.CentreDataList(dto);
|
|
|
+ var list = await query.Where(x => (x.CentreArchive + x.CentreCareOf + x.NoCentreCareOf + x.Invalid + x.Repeat) != 0).ToListAsync(HttpContext.RequestAborted);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
|
|
|
- if (string.IsNullOrEmpty(dto.SortField))
|
|
|
+ /// <summary>
|
|
|
+ /// 话务员办件统计--导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("centre_data_list_export")]
|
|
|
+ public async Task<FileStreamResult> CentreDataListExport([FromBody] ExportExcelDto<ReportPagedRequest> dto)
|
|
|
+ {
|
|
|
+ var query = _orderApplication.CentreDataList(dto.QueryDto);
|
|
|
+ List<OrderBiCentreDataListVo> data = await query.Where(x => (x.CentreArchive + x.CentreCareOf + x.NoCentreCareOf + x.Invalid + x.Repeat) != 0).ToListAsync(HttpContext.RequestAborted);
|
|
|
+ data.Add(new OrderBiCentreDataListVo
|
|
|
{
|
|
|
- query = query.OrderByDescending(x => x.Subtotal);
|
|
|
- }
|
|
|
+ UserName = "合计",
|
|
|
+ CentreArchive = data.Select(s => s.CentreArchive).Sum(),
|
|
|
+ CentreCareOf = data.Select(s => s.CentreCareOf).Sum(),
|
|
|
+ NoCentreCareOf = data.Select(s => s.NoCentreCareOf).Sum(),
|
|
|
+ Invalid = data.Select(s => s.Invalid).Sum(),
|
|
|
+ Repeat = data.Select(s => s.Repeat).Sum(),
|
|
|
+ Subtotal = data.Select(s => s.Subtotal).Sum()
|
|
|
+ });
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ var dtos = data
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderBiCentreDataListVo), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
|
|
|
- var list = await query.Where(x => (x.CentreArchive + x.CentreCareOf + x.NoCentreCareOf + x.Invalid + x.Repeat) != 0).ToListAsync(HttpContext.RequestAborted);
|
|
|
- return list;
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "话务员办件统计");
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -1443,35 +1423,35 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
OrgCode = "",
|
|
|
OrgType = "",
|
|
|
ZxAllCount = items.Sum(p => p.ZxAllCount),
|
|
|
- ZxAllTimes = Math.Round(items.Sum(p => p.ZxAllTimes).Value,2),
|
|
|
+ ZxAllTimes = Math.Round(items.Sum(p => p.ZxAllTimes).Value, 2),
|
|
|
ZxAcceptanceTypeCode = "10",
|
|
|
|
|
|
JyAllCount = items.Sum(p => p.JyAllCount),
|
|
|
- JyAllTimes = Math.Round(items.Sum(p => p.JyAllTimes).Value,2),
|
|
|
+ JyAllTimes = Math.Round(items.Sum(p => p.JyAllTimes).Value, 2),
|
|
|
JyAcceptanceTypeCode = "15",
|
|
|
|
|
|
QzAllCount = items.Sum(p => p.QzAllCount),
|
|
|
- QzAllTimes = Math.Round(items.Sum(p => p.QzAllTimes).Value,2),
|
|
|
+ QzAllTimes = Math.Round(items.Sum(p => p.QzAllTimes).Value, 2),
|
|
|
QzAcceptanceTypeCode = "20",
|
|
|
|
|
|
ByAllCount = items.Sum(p => p.ByAllCount),
|
|
|
- ByAllTimes = Math.Round(items.Sum(p => p.ByAllTimes).Value,2),
|
|
|
+ ByAllTimes = Math.Round(items.Sum(p => p.ByAllTimes).Value, 2),
|
|
|
ByAcceptanceTypeCode = "25",
|
|
|
|
|
|
JbAllCount = items.Sum(p => p.JbAllCount),
|
|
|
- JbAllTimes = Math.Round(items.Sum(p => p.JbAllTimes).Value,2),
|
|
|
+ JbAllTimes = Math.Round(items.Sum(p => p.JbAllTimes).Value, 2),
|
|
|
JbAcceptanceTypeCode = "30",
|
|
|
|
|
|
TsAllCount = items.Sum(p => p.TsAllCount),
|
|
|
- TsAllTimes = Math.Round(items.Sum(p => p.TsAllTimes).Value,2),
|
|
|
+ TsAllTimes = Math.Round(items.Sum(p => p.TsAllTimes).Value, 2),
|
|
|
TsAcceptanceTypeCode = "35",
|
|
|
|
|
|
QtAllCount = items.Sum(p => p.QtAllCount),
|
|
|
- QtAllTimes = Math.Round(items.Sum(p => p.QtAllTimes).Value,2),
|
|
|
+ QtAllTimes = Math.Round(items.Sum(p => p.QtAllTimes).Value, 2),
|
|
|
QtAcceptanceTypeCode = "40",
|
|
|
|
|
|
YjAllCount = items.Sum(p => p.YjAllCount),
|
|
|
- YjAllTimes = Math.Round(items.Sum(p => p.YjAllTimes).Value,2),
|
|
|
+ YjAllTimes = Math.Round(items.Sum(p => p.YjAllTimes).Value, 2),
|
|
|
YjAcceptanceTypeCode = "1"
|
|
|
};
|
|
|
|