ReportController.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using Microsoft.AspNetCore.Authorization;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.AspNetCore.Mvc;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Threading.Tasks;
  9. using wispro.sp.share;
  10. namespace wispro.sp.api.Controllers
  11. {
  12. [Route("api/[controller]/[action]")]
  13. [ApiController]
  14. //[Authorize]
  15. public class ReportController : ControllerBase
  16. {
  17. spDbContext Context;
  18. public ReportController(spDbContext context)
  19. {
  20. Context = context;
  21. }
  22. public ChartDatas AppealReport(int type,DateTime? start,DateTime? end,int? userId)
  23. {
  24. ChartDatas retDatas = new ChartDatas();
  25. var results = Context.AppealRecords.Where(b=>(1==1));
  26. if (start.HasValue)
  27. {
  28. results = results.Where(b => b.CreateTime >= start);
  29. }
  30. if (end.HasValue)
  31. {
  32. results = results.Where(b => b.CreateTime <= end);
  33. }
  34. if (userId.HasValue)
  35. {
  36. results = results.Where(b => b.CreaterId == userId);
  37. }
  38. switch (type)
  39. {
  40. case 0:
  41. var retData = results.GroupBy(c => c.Creater.Name)
  42. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g=>g.Count)
  43. .ToDictionary(g => g.key, g => g.Count);
  44. retDatas.ATitle = "申诉人";
  45. retDatas.Title = "申诉人统计";
  46. retDatas.Datas = new List<ChartData>();
  47. foreach (var key in retData.Keys)
  48. {
  49. retDatas.Datas.Add(new ChartData() { ColumnA = key,value=retData[key]} );
  50. }
  51. return retDatas;
  52. break;
  53. case 1:
  54. var retData1 = results.GroupBy(c => c.Type.Name)
  55. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g => g.Count)
  56. .ToDictionary(g => g.key, g => g.Count);
  57. retDatas.ATitle = "申诉类型";
  58. retDatas.Title = "申诉类型统计";
  59. retDatas.Datas = new List<ChartData>();
  60. foreach (var key in retData1.Keys)
  61. {
  62. retDatas.Datas.Add(new ChartData() { ColumnA = key, value = retData1[key] });
  63. }
  64. return retDatas;
  65. break;
  66. case 2:
  67. var retData2 = results.GroupBy(c => c.Creater.Department)
  68. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g => g.Count)
  69. .ToDictionary(g => g.key, g => g.Count);
  70. retDatas.ATitle = "部门";
  71. retDatas.Title = "部门申诉统计";
  72. retDatas.Datas = new List<ChartData>();
  73. foreach (var key in retData2.Keys)
  74. {
  75. retDatas.Datas.Add(new ChartData() { ColumnA = key, value = retData2[key] });
  76. }
  77. return retDatas;
  78. break;
  79. case 3:
  80. var retData3 = results.GroupBy(c => new { c.Creater.Name,c.CreateTime.Year, c.CreateTime.Month })
  81. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g => g.Count)
  82. .ToDictionary(g => g.key, g => g.Count);
  83. retDatas.ATitle = "申诉人";
  84. retDatas.BTitle = "绩效月份";
  85. retDatas.Title = "申诉人每月申诉统计";
  86. retDatas.Datas = new List<ChartData>();
  87. foreach (var key in retData3.Keys)
  88. {
  89. retDatas.Datas.Add(new ChartData() { ColumnA = key.Name, ColumnB = $"{key.Year}-{key.Month}", value = retData3[key] });
  90. }
  91. return retDatas;
  92. break;
  93. default:
  94. return null;
  95. break;
  96. }
  97. }
  98. }
  99. }