|
@@ -338,5 +338,80 @@ namespace Hotline.Api.Controllers.Bi
|
|
.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
return new PagedDto<OrderSpecialDto>(total, _mapper.Map<IReadOnlyList<OrderSpecialDto>>(items));
|
|
return new PagedDto<OrderSpecialDto>(total, _mapper.Map<IReadOnlyList<OrderSpecialDto>>(items));
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 受理类型前十
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="dto"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [HttpGet("accept_type_top10_list")]
|
|
|
|
+ public async Task<PagedDto<AcceptTypeTop10Vo>> AcceptTypeTop10List([FromQuery] ReportPagedRequest dto)
|
|
|
|
+ {
|
|
|
|
+ if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
|
|
|
|
+ dto.PageIndex = 1;
|
|
|
|
+ dto.PageSize = 10;
|
|
|
|
+ var query = _orderRepository.Queryable(false, false, false)
|
|
|
|
+ .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
|
|
|
|
+ .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
|
|
|
|
+ .Select(x => new
|
|
|
|
+ {
|
|
|
|
+ AcceptType = x.AcceptType,
|
|
|
|
+ OneHotspot = SqlFunc.Substring(x.HotspotSpliceName, 0, SqlFunc.CharIndex("-", x.HotspotSpliceName + "-")),
|
|
|
|
+ Id = x.Id
|
|
|
|
+ }).MergeTable()
|
|
|
|
+ .GroupBy(x => new { x.OneHotspot })
|
|
|
|
+ .Select(x => new AcceptTypeTop10Vo
|
|
|
|
+ {
|
|
|
|
+ Name = x.OneHotspot,
|
|
|
|
+ ValidAccept = SqlFunc.AggregateSum(SqlFunc.IIF(true, 1, 0)),
|
|
|
|
+ Consult = SqlFunc.AggregateSum(SqlFunc.IIF("咨询".Equals(x.AcceptType), 1, 0)),
|
|
|
|
+ Report = SqlFunc.AggregateSum(SqlFunc.IIF("举报".Equals(x.AcceptType), 1, 0)),
|
|
|
|
+ Complaint = SqlFunc.AggregateSum(SqlFunc.IIF("投诉".Equals(x.AcceptType), 1, 0)),
|
|
|
|
+ SeekHelp = SqlFunc.AggregateSum(SqlFunc.IIF("求助".Equals(x.AcceptType), 1, 0)),
|
|
|
|
+ Suggest = SqlFunc.AggregateSum(SqlFunc.IIF("建议".Equals(x.AcceptType), 1, 0)),
|
|
|
|
+ Opinion = SqlFunc.AggregateSum(SqlFunc.IIF("意见".Equals(x.AcceptType), 1, 0)),
|
|
|
|
+ Rests = SqlFunc.AggregateSum(SqlFunc.IIF("其他".Equals(x.AcceptType), 1, 0)),
|
|
|
|
+ BenefitThePeople = SqlFunc.AggregateSum(SqlFunc.IIF("惠民帮助".Equals(x.AcceptType), 1, 0)),
|
|
|
|
+ Praise = SqlFunc.AggregateSum(SqlFunc.IIF("表扬".Equals(x.AcceptType), 1, 0)),
|
|
|
|
+ }).MergeTable();
|
|
|
|
+ switch (dto.SortField)
|
|
|
|
+ {
|
|
|
|
+ case "validAccept":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.ValidAccept) : query.OrderByDescending(x => x.ValidAccept);
|
|
|
|
+ break;
|
|
|
|
+ case "consult":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Consult) : query.OrderByDescending(x => x.Consult);
|
|
|
|
+ break;
|
|
|
|
+ case "report":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Report) : query.OrderByDescending(x => x.Report);
|
|
|
|
+ break;
|
|
|
|
+ case "complaint":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Complaint) : query.OrderByDescending(x => x.Complaint);
|
|
|
|
+ break;
|
|
|
|
+ case "seekHelp":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.SeekHelp) : query.OrderByDescending(x => x.SeekHelp);
|
|
|
|
+ break;
|
|
|
|
+ case "suggest":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Suggest) : query.OrderByDescending(x => x.Suggest);
|
|
|
|
+ break;
|
|
|
|
+ case "opinion":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Opinion) : query.OrderByDescending(x => x.Opinion);
|
|
|
|
+ break;
|
|
|
|
+ case "rests":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Rests) : query.OrderByDescending(x => x.Rests);
|
|
|
|
+ break;
|
|
|
|
+ case "benefitThePeople":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.BenefitThePeople) : query.OrderByDescending(x => x.BenefitThePeople);
|
|
|
|
+ break;
|
|
|
|
+ case "praise":
|
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Praise) : query.OrderByDescending(x => x.Praise);
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ query = query.OrderByDescending(x => x.ValidAccept);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
|
+ return new PagedDto<AcceptTypeTop10Vo>(total, items);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|