|
@@ -969,7 +969,6 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
return ExcelStreamResult(stream, "部门满意度统计数据");
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 子部门满意度明细
|
|
|
/// </summary>
|
|
@@ -1357,80 +1356,125 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
/// <summary>
|
|
|
/// 部门受理类型统计周期
|
|
|
/// </summary>
|
|
|
- /// <param name="StartTime"></param>
|
|
|
- /// <param name="EndTime"></param>
|
|
|
- /// <param name="TypeCode">0:全部,1:中心,2:部门</param>
|
|
|
+ /// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("department_acceptance_type_statistics")]
|
|
|
- public async Task<List<DepartmentAcceptanceTypeStatisticsDto>> DepartmentAcceptanceTypeStatistics(DateTime StartTime, DateTime EndTime, int TypeCode)
|
|
|
+ public async Task<object> DepartmentAcceptanceTypeStatistics([FromQuery] DepartmentKeyWordRequest dto)
|
|
|
{
|
|
|
- EndTime = EndTime.AddDays(1).AddSeconds(-1);
|
|
|
+ var items = await _orderReportApplication.DepartmentAcceptanceTypeStatistics(dto).ToListAsync();
|
|
|
|
|
|
- var IsCenter = _sessionContext.OrgIsCenter;
|
|
|
+ var total = new DepartmentAcceptanceTypeStatisticsDto
|
|
|
+ {
|
|
|
+ OrgName = "合计",
|
|
|
+ OrgCode = "",
|
|
|
+ OrgType = "",
|
|
|
+ ZxAllCount = items.Sum(p => p.ZxAllCount),
|
|
|
+ ZxAllTimes = items.Sum(p => p.ZxAllTimes),
|
|
|
+ ZxAcceptanceTypeCode = "10",
|
|
|
+
|
|
|
+ JyAllCount = items.Sum(p => p.JyAllCount),
|
|
|
+ JyAllTimes = items.Sum(p => p.JyAllTimes),
|
|
|
+ JyAcceptanceTypeCode = "15",
|
|
|
+
|
|
|
+ QzAllCount = items.Sum(p => p.QzAllCount),
|
|
|
+ QzAllTimes = items.Sum(p => p.QzAllTimes),
|
|
|
+ QzAcceptanceTypeCode = "20",
|
|
|
+
|
|
|
+ ByAllCount = items.Sum(p => p.ByAllCount),
|
|
|
+ ByAllTimes = items.Sum(p => p.ByAllTimes),
|
|
|
+ ByAcceptanceTypeCode = "25",
|
|
|
+
|
|
|
+ JbAllCount = items.Sum(p => p.JbAllCount),
|
|
|
+ JbAllTimes = items.Sum(p => p.JbAllTimes),
|
|
|
+ JbAcceptanceTypeCode = "30",
|
|
|
+
|
|
|
+ TsAllCount = items.Sum(p => p.TsAllCount),
|
|
|
+ TsAllTimes = items.Sum(p => p.TsAllTimes),
|
|
|
+ TsAcceptanceTypeCode = "35",
|
|
|
+
|
|
|
+ QtAllCount = items.Sum(p => p.QtAllCount),
|
|
|
+ QtAllTimes = items.Sum(p => p.QtAllTimes),
|
|
|
+ QtAcceptanceTypeCode = "40",
|
|
|
+
|
|
|
+ YjAllCount = items.Sum(p => p.YjAllCount),
|
|
|
+ YjAllTimes = items.Sum(p => p.YjAllTimes),
|
|
|
+ YjAcceptanceTypeCode = "1"
|
|
|
+ };
|
|
|
|
|
|
- var orderData = await _orderRepository.Queryable()
|
|
|
- .Where(it => it.CreationTime >= StartTime && it.CreationTime <= EndTime && it.Status >= EOrderStatus.Filed)
|
|
|
- .Select(it => new
|
|
|
- {
|
|
|
- OrgCode = IsCenter == true ? it.ActualHandleOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")) : it.ActualHandleOrgCode.Substring(0, _sessionContext.RequiredOrgId.Length + 3),
|
|
|
- AcceptTypeCode = it.AcceptTypeCode,
|
|
|
- ProcessType = it.ProcessType,
|
|
|
- AllTime = it.ProcessType == EProcessType.Zhiban ? it.CreationTimeHandleDurationWorkday : it.CenterToOrgHandleDurationWorkday
|
|
|
-
|
|
|
- })
|
|
|
- .MergeTable()
|
|
|
- .LeftJoin<SystemOrganize>((it, o) => it.OrgCode == o.Id)
|
|
|
- //.WhereIF(TypeCode == 1, (it, o) => it.OrgCode == "001")
|
|
|
- //.WhereIF(TypeCode == 2, (it, o) => it.OrgCode != "001")
|
|
|
- .WhereIF(TypeCode == 1, (it, o) => it.ProcessType == EProcessType.Zhiban)
|
|
|
- .WhereIF(TypeCode == 2, (it, o) => it.ProcessType == EProcessType.Jiaoban)
|
|
|
- .WhereIF(IsCenter == false, (it, o) => it.OrgCode.StartsWith(_sessionContext.RequiredOrgId))
|
|
|
- .GroupBy((it, o) => new
|
|
|
- {
|
|
|
- it.OrgCode,
|
|
|
- o.Name,
|
|
|
- o.OrgType
|
|
|
- })
|
|
|
- .Select((it, o) => new DepartmentAcceptanceTypeStatisticsDto
|
|
|
- {
|
|
|
- OrgName = it.OrgCode == "001" ? "热线中心" : o.Name,
|
|
|
- OrgCode = it.OrgCode,
|
|
|
- OrgType = o.OrgType == EOrgType.County ? "区县部门" : "市直部门",
|
|
|
- ZxAllCount = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "10", 1, 0)),
|
|
|
- ZxAllTimes = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "10" && it.AllTime != null, it.AllTime, 0)),
|
|
|
- ZxAcceptanceTypeCode = "10",
|
|
|
-
|
|
|
- JyAllCount = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "15", 1, 0)),
|
|
|
- JyAllTimes = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "15" && it.AllTime != null, it.AllTime, 0)),
|
|
|
- JyAcceptanceTypeCode = "15",
|
|
|
-
|
|
|
- QzAllCount = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "20", 1, 0)),
|
|
|
- QzAllTimes = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "20" && it.AllTime != null, it.AllTime, 0)),
|
|
|
- QzAcceptanceTypeCode = "20",
|
|
|
-
|
|
|
- ByAllCount = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "25", 1, 0)),
|
|
|
- ByAllTimes = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "25" && it.AllTime != null, it.AllTime, 0)),
|
|
|
- ByAcceptanceTypeCode = "25",
|
|
|
-
|
|
|
- JbAllCount = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "30", 1, 0)),
|
|
|
- JbAllTimes = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "30" && it.AllTime != null, it.AllTime, 0)),
|
|
|
- JbAcceptanceTypeCode = "30",
|
|
|
-
|
|
|
- TsAllCount = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "35", 1, 0)),
|
|
|
- TsAllTimes = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "35" && it.AllTime != null, it.AllTime, 0)),
|
|
|
- TsAcceptanceTypeCode = "35",
|
|
|
-
|
|
|
- QtAllCount = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "40", 1, 0)),
|
|
|
- QtAllTimes = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "40" && it.AllTime != null, it.AllTime, 0)),
|
|
|
- QtAcceptanceTypeCode = "40",
|
|
|
-
|
|
|
- YjAllCount = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "1", 1, 0)),
|
|
|
- YjAllTimes = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptTypeCode == "1" && it.AllTime != null, it.AllTime, 0)),
|
|
|
- YjAcceptanceTypeCode = "1"
|
|
|
- })
|
|
|
- .ToListAsync();
|
|
|
+ return new { List = items, Total = total };
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 部门受理类型统计周期---导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("department_acceptance_type_statistics_export")]
|
|
|
+ public async Task<FileStreamResult> ExportDepartmentAcceptanceTypeStatistics([FromBody] ExportExcelDto<DepartmentKeyWordRequest> dto)
|
|
|
+ {
|
|
|
+ var query = _orderReportApplication.DepartmentAcceptanceTypeStatistics(dto.QueryDto);
|
|
|
+ List<DepartmentAcceptanceTypeStatisticsDto> list;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ list = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ list = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ //增加合计
|
|
|
+ list.Add(new DepartmentAcceptanceTypeStatisticsDto
|
|
|
+ {
|
|
|
+ OrgName = "合计",
|
|
|
+ OrgCode = "",
|
|
|
+ OrgType = "",
|
|
|
+ ZxAllCount = list.Sum(p => p.ZxAllCount),
|
|
|
+ ZxAllTimes = list.Sum(p => p.ZxAllTimes),
|
|
|
+ ZxAcceptanceTypeCode = "10",
|
|
|
+
|
|
|
+ JyAllCount = list.Sum(p => p.JyAllCount),
|
|
|
+ JyAllTimes = list.Sum(p => p.JyAllTimes),
|
|
|
+ JyAcceptanceTypeCode = "15",
|
|
|
+
|
|
|
+ QzAllCount = list.Sum(p => p.QzAllCount),
|
|
|
+ QzAllTimes = list.Sum(p => p.QzAllTimes),
|
|
|
+ QzAcceptanceTypeCode = "20",
|
|
|
+
|
|
|
+ ByAllCount = list.Sum(p => p.ByAllCount),
|
|
|
+ ByAllTimes = list.Sum(p => p.ByAllTimes),
|
|
|
+ ByAcceptanceTypeCode = "25",
|
|
|
+
|
|
|
+ JbAllCount = list.Sum(p => p.JbAllCount),
|
|
|
+ JbAllTimes = list.Sum(p => p.JbAllTimes),
|
|
|
+ JbAcceptanceTypeCode = "30",
|
|
|
+
|
|
|
+ TsAllCount = list.Sum(p => p.TsAllCount),
|
|
|
+ TsAllTimes = list.Sum(p => p.TsAllTimes),
|
|
|
+ TsAcceptanceTypeCode = "35",
|
|
|
+
|
|
|
+ QtAllCount = list.Sum(p => p.QtAllCount),
|
|
|
+ QtAllTimes = list.Sum(p => p.QtAllTimes),
|
|
|
+ QtAcceptanceTypeCode = "40",
|
|
|
+
|
|
|
+ YjAllCount = list.Sum(p => p.YjAllCount),
|
|
|
+ YjAllTimes = list.Sum(p => p.YjAllTimes),
|
|
|
+ YjAcceptanceTypeCode = "1"
|
|
|
+ });
|
|
|
+
|
|
|
+ var orderDtos = _mapper.Map<ICollection<DepartmentAcceptanceTypeStatisticsDto>>(list);
|
|
|
|
|
|
- return orderData;
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = orderDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(DepartmentAcceptanceTypeStatisticsDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "部门受理类型统计周期数据");
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -1441,22 +1485,46 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
[HttpGet("department_acceptance_type_order_list")]
|
|
|
public async Task<PagedDto<OrderDto>> DepartmentAcceptanceTypeOrderList([FromQuery] DepartmentKeyWordRequest dto)
|
|
|
{
|
|
|
- dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
|
|
|
- var (total, items) = await _orderRepository.Queryable()
|
|
|
- .Where(p => p.CreationTime >= dto.StartTime && p.CreationTime <= dto.EndTime && p.Status >= EOrderStatus.Filed)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.OrgCode == "001", p => p.ActualHandleOrgCode == dto.OrgCode)
|
|
|
-
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.OrgCode != "001" && _sessionContext.RequiredOrgId != dto.OrgCode, p => p.ActualHandleOrgCode.StartsWith(dto.OrgCode))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.OrgCode != "001" && _sessionContext.RequiredOrgId == dto.OrgCode, p => p.ActualHandleOrgCode == dto.OrgCode)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AcceptTypeCode), p => p.AcceptTypeCode == dto.AcceptTypeCode)
|
|
|
- .WhereIF(dto.TypeCode == 1, p => p.ProcessType == EProcessType.Zhiban)
|
|
|
- .WhereIF(dto.TypeCode == 2, p => p.ProcessType == EProcessType.Jiaoban)
|
|
|
- .OrderByDescending(d => d.CreationTime)
|
|
|
+ var (total, items) = await _orderReportApplication.DepartmentAcceptanceTypeOrderList(dto)
|
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
|
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 部门受理类型统计周期--明细列表---导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("department_acceptance_type_order_list_export")]
|
|
|
+ public async Task<FileStreamResult> ExportDepartmentAcceptanceTypeOrderList([FromBody] ExportExcelDto<DepartmentKeyWordRequest> dto)
|
|
|
+ {
|
|
|
+ var query = _orderReportApplication.DepartmentAcceptanceTypeOrderList(dto.QueryDto);
|
|
|
+ List<Order> 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<OrderDto>>(list);
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = orderDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "部门受理类型统计周期数据");
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 部门办件统计表
|
|
|
/// </summary>
|