ReportController.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  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. /// <summary>
  23. ///
  24. /// </summary>
  25. /// <param name="type">
  26. /// 0:申诉人;1:申诉类型;2:部门申诉统计;
  27. /// 3:申诉人每月申诉统计;4:申诉类型每月申诉统计
  28. /// </param>
  29. /// <param name="start">开始时间</param>
  30. /// <param name="end">结束时间</param>
  31. /// <param name="userId"></param>
  32. /// <returns></returns>
  33. public ChartDatas AppealReport(int type,DateTime? start,DateTime? end,int? userId)
  34. {
  35. ChartDatas retDatas = new ChartDatas();
  36. var results = Context.AppealRecords.Where(b=>(1==1));
  37. if (start.HasValue)
  38. {
  39. results = results.Where(b => b.CreateTime >= start);
  40. }
  41. if (end.HasValue)
  42. {
  43. results = results.Where(b => b.CreateTime <= end);
  44. }
  45. if (userId.HasValue)
  46. {
  47. results = results.Where(b => b.CreaterId == userId);
  48. }
  49. switch (type)
  50. {
  51. case 0:
  52. var retData = results.GroupBy(c => c.Creater.Name)
  53. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g=>g.Count)
  54. .ToDictionary(g => g.key, g => g.Count);
  55. retDatas.ATitle = "申诉人";
  56. retDatas.Title = "申诉人统计";
  57. retDatas.Datas = new List<ChartData>();
  58. foreach (var key in retData.Keys)
  59. {
  60. retDatas.Datas.Add(new ChartData() { type = key,value=retData[key]} );
  61. }
  62. return retDatas;
  63. break;
  64. case 1:
  65. var retData1 = results.GroupBy(c => c.Type.Name)
  66. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g => g.Count)
  67. .ToDictionary(g => g.key, g => g.Count);
  68. retDatas.ATitle = "申诉类型";
  69. retDatas.Title = "申诉类型统计";
  70. retDatas.Datas = new List<ChartData>();
  71. foreach (var key in retData1.Keys)
  72. {
  73. retDatas.Datas.Add(new ChartData() { type = key, value = retData1[key] });
  74. }
  75. return retDatas;
  76. break;
  77. case 2:
  78. var retData2 = results.GroupBy(c => c.Creater.Department)
  79. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g => g.Count)
  80. .ToDictionary(g => g.key, g => g.Count);
  81. retDatas.ATitle = "部门";
  82. retDatas.Title = "部门申诉统计";
  83. retDatas.Datas = new List<ChartData>();
  84. foreach (var key in retData2.Keys)
  85. {
  86. retDatas.Datas.Add(new ChartData() { type = key, value = retData2[key] });
  87. }
  88. return retDatas;
  89. break;
  90. case 3:
  91. var retData3 = results.GroupBy(c => new { c.Creater.Name,c.CreateTime.Year, c.CreateTime.Month })
  92. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g => g.Count)
  93. .ToDictionary(g => g.key, g => g.Count);
  94. retDatas.ATitle = "申诉人";
  95. retDatas.BTitle = "绩效月份";
  96. retDatas.Title = "申诉人每月申诉统计";
  97. retDatas.Datas = new List<ChartData>();
  98. foreach (var key in retData3.Keys)
  99. {
  100. retDatas.Datas.Add(new ChartData() { type = key.Name, year = $" {DateTime.Parse($"{key.Year}-{key.Month}-1").ToString("yyyy-MM")}", value = retData3[key] });
  101. }
  102. return retDatas;
  103. break;
  104. case 4:
  105. var retData4 = results.GroupBy(c => new { c.Type.Name, c.CreateTime.Year, c.CreateTime.Month })
  106. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g => g.Count)
  107. .ToDictionary(g => g.key, g => g.Count);
  108. retDatas.ATitle = "申诉类型";
  109. retDatas.BTitle = "绩效月份";
  110. retDatas.Title = "申诉类型每月申诉统计";
  111. retDatas.Datas = new List<ChartData>();
  112. foreach (var key in retData4.Keys)
  113. {
  114. retDatas.Datas.Add(new ChartData() { type = key.Name, year = $" {DateTime.Parse($"{key.Year}-{key.Month}-1").ToString("yyyy-MM")}", value = retData4[key] });
  115. }
  116. return retDatas;
  117. break;
  118. default:
  119. return null;
  120. break;
  121. }
  122. }
  123. /// <summary>
  124. /// 绩效统计报表
  125. /// </summary>
  126. /// <param name="type">
  127. /// 0:按人统计
  128. /// 1:按部门统计
  129. /// 2:按人员专案统计
  130. /// </param>
  131. /// /// <param name="isYear">
  132. /// 是否按年统计,默认为false按月统计
  133. /// </param>
  134. /// <returns></returns>
  135. public ChartDatas StaticsReport(int type,bool isYear=false)
  136. {
  137. ChartDatas retDatas = new ChartDatas();
  138. switch (type)
  139. {
  140. case 0:
  141. if (isYear)
  142. {
  143. var retYearData = Context.StaffStatistics.GroupBy(s => new { s.Staff.Name, s.CalMonth.Year })
  144. .Select(g => new { Name = g.Key.Name, Year = g.Key.Year , sum = g.Sum(s => s.FinianlPoint) })
  145. .OrderByDescending(g => g.sum);
  146. retDatas.ATitle = "代理人";
  147. retDatas.BTitle = "绩效年份";
  148. retDatas.Title = "代理人每年绩效统计";
  149. retDatas.Datas = new List<ChartData>();
  150. foreach (var key in retYearData)
  151. {
  152. retDatas.Datas.Add(new ChartData() { type = key.Name, year = $"{key.Year}", value = key.sum.HasValue ? key.sum.Value : 0 });
  153. }
  154. return retDatas;
  155. }
  156. else
  157. {
  158. var retData = Context.StaffStatistics.GroupBy(s => new { s.Staff.Name, s.CalMonth.Year,s.CalMonth.Month })
  159. .Select(g => new { Name = g.Key.Name, Year=g.Key.Year,Month=g.Key.Month , sum = g.Sum(s => s.FinianlPoint) })
  160. .OrderByDescending(g => g.sum);
  161. retDatas.ATitle = "代理人";
  162. retDatas.BTitle = "绩效月份";
  163. retDatas.Title = "代理人每月绩效统计";
  164. retDatas.Datas = new List<ChartData>();
  165. foreach (var key in retData)
  166. {
  167. retDatas.Datas.Add(new ChartData() { type = key.Name, year = $" {DateTime.Parse($"{key.Year}-{key.Month}-1").ToString("yyyy-MM")}", value = key.sum.HasValue ? key.sum.Value : 0 });
  168. }
  169. return retDatas;
  170. }
  171. break;
  172. case 1:
  173. if (isYear)
  174. {
  175. var retData2 = Context.StaffStatistics.GroupBy(s => new { s.Staff.Department, s.CalMonth.Year })
  176. .Select(g => new { Name = g.Key.Department, Year = g.Key.Year, sum = g.Sum(s => s.FinianlPoint) })
  177. .OrderByDescending(g => g.sum);
  178. retDatas.ATitle = "部门";
  179. retDatas.BTitle = "绩效月份";
  180. retDatas.Title = "部门每月绩效统计";
  181. retDatas.Datas = new List<ChartData>();
  182. foreach (var key in retData2)
  183. {
  184. retDatas.Datas.Add(new ChartData() { type = key.Name, year = $"{key.Year }", value = key.sum.HasValue ? key.sum.Value : 0 });
  185. }
  186. return retDatas;
  187. }
  188. else
  189. {
  190. var retData1 = Context.StaffStatistics.GroupBy(s => new { s.Staff.Department, s.CalMonth.Year,s.CalMonth.Month })
  191. .Select(g => new { Name = g.Key.Department, Year = g.Key.Year, Month = g.Key.Month, sum = g.Sum(s => s.FinianlPoint) })
  192. .OrderByDescending(g => g.sum);
  193. retDatas.ATitle = "部门";
  194. retDatas.BTitle = "绩效月份";
  195. retDatas.Title = "部门每月绩效统计";
  196. retDatas.Datas = new List<ChartData>();
  197. foreach (var key in retData1)
  198. {
  199. retDatas.Datas.Add(new ChartData() { type = key.Name, year = $" {DateTime.Parse($"{key.Year}-{key.Month}-1").ToString("yyyy-MM")}", value = key.sum.HasValue ? key.sum.Value : 0 });
  200. }
  201. return retDatas;
  202. }
  203. break;
  204. case 2:
  205. var retData3 = Context.StaffStatistics.Where(s=>s.jxType.Contains("专案")).GroupBy(s => new { s.Staff.Name, s.CalMonth.Year, s.CalMonth.Month })
  206. .Select(g => new { Name = g.Key.Name, Year = g.Key.Year, Month = g.Key.Month, sum = g.Sum(s => s.FinianlPoint) })
  207. .OrderByDescending(g => g.sum);
  208. retDatas.ATitle = "人员";
  209. retDatas.BTitle = "绩效月份";
  210. retDatas.Title = "人员每月专案绩效统计";
  211. retDatas.Datas = new List<ChartData>();
  212. foreach (var key in retData3)
  213. {
  214. retDatas.Datas.Add(new ChartData() { type = key.Name, year = $" {DateTime.Parse($"{key.Year}-{key.Month}-1").ToString("yyyy-MM")}", value = key.sum.HasValue ? key.sum.Value : 0 });
  215. }
  216. return retDatas;
  217. break;
  218. case 3:
  219. break;
  220. }
  221. return retDatas;
  222. }
  223. }
  224. }