ReportController.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  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. case 5:
  119. var retData5 = results.GroupBy(c => new { c.Creater.Department, c.CreateTime.Year, c.CreateTime.Month })
  120. .Select(g => new { key = g.Key, Count = g.Count() }).OrderByDescending(g => g.Count)
  121. .ToDictionary(g => g.key, g => g.Count);
  122. retDatas.ATitle = "部门";
  123. retDatas.BTitle = "绩效月份";
  124. retDatas.Title = "部门每月申诉统计";
  125. retDatas.Datas = new List<ChartData>();
  126. foreach (var key in retData5.Keys)
  127. {
  128. retDatas.Datas.Add(new ChartData() { type = key.Department, year = $" {DateTime.Parse($"{key.Year}-{key.Month}-1").ToString("yyyy-MM")}", value = retData5[key] });
  129. }
  130. return retDatas;
  131. break;
  132. default:
  133. return null;
  134. break;
  135. }
  136. }
  137. /// <summary>
  138. /// 绩效统计报表
  139. /// </summary>
  140. /// <param name="type">
  141. /// 0:按人统计
  142. /// 1:按部门统计
  143. /// 2:按人员专案统计
  144. /// </param>
  145. /// /// <param name="isYear">
  146. /// 是否按年统计,默认为false按月统计
  147. /// </param>
  148. /// <returns></returns>
  149. public ChartDatas StaticsReport(int type,bool isYear=false)
  150. {
  151. ChartDatas retDatas = new ChartDatas();
  152. switch (type)
  153. {
  154. case 0:
  155. if (isYear)
  156. {
  157. var retYearData = Context.StaffStatistics.GroupBy(s => new { s.Staff.Name, s.CalMonth.Year })
  158. .Select(g => new { Name = g.Key.Name, Year = g.Key.Year , sum = g.Sum(s => s.FinianlPoint) })
  159. .OrderByDescending(g => g.sum);
  160. retDatas.ATitle = "代理人";
  161. retDatas.BTitle = "绩效年份";
  162. retDatas.Title = "代理人每年绩效统计";
  163. retDatas.Datas = new List<ChartData>();
  164. foreach (var key in retYearData)
  165. {
  166. retDatas.Datas.Add(new ChartData() { type = key.Name, year = $"{key.Year}", value = key.sum.HasValue ? key.sum.Value : 0 });
  167. }
  168. return retDatas;
  169. }
  170. else
  171. {
  172. var retData = Context.StaffStatistics.GroupBy(s => new { s.Staff.Name, s.CalMonth.Year,s.CalMonth.Month })
  173. .Select(g => new { Name = g.Key.Name, Year=g.Key.Year,Month=g.Key.Month , sum = g.Sum(s => s.FinianlPoint) })
  174. .OrderByDescending(g => g.sum);
  175. retDatas.ATitle = "代理人";
  176. retDatas.BTitle = "绩效月份";
  177. retDatas.Title = "代理人每月绩效统计";
  178. retDatas.Datas = new List<ChartData>();
  179. foreach (var key in retData)
  180. {
  181. 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 });
  182. }
  183. return retDatas;
  184. }
  185. break;
  186. case 1:
  187. if (isYear)
  188. {
  189. var retData2 = Context.StaffStatistics.GroupBy(s => new { s.Staff.Department, s.CalMonth.Year })
  190. .Select(g => new { Name = g.Key.Department, Year = g.Key.Year, sum = g.Sum(s => s.FinianlPoint) })
  191. .OrderByDescending(g => g.sum);
  192. retDatas.ATitle = "部门";
  193. retDatas.BTitle = "绩效月份";
  194. retDatas.Title = "部门每月绩效统计";
  195. retDatas.Datas = new List<ChartData>();
  196. foreach (var key in retData2)
  197. {
  198. retDatas.Datas.Add(new ChartData() { type = key.Name, year = $"{key.Year }", value = key.sum.HasValue ? key.sum.Value : 0 });
  199. }
  200. return retDatas;
  201. }
  202. else
  203. {
  204. var retData1 = Context.StaffStatistics.GroupBy(s => new { s.Staff.Department, s.CalMonth.Year,s.CalMonth.Month })
  205. .Select(g => new { Name = g.Key.Department, Year = g.Key.Year, Month = g.Key.Month, sum = g.Sum(s => s.FinianlPoint) })
  206. .OrderByDescending(g => g.sum);
  207. retDatas.ATitle = "部门";
  208. retDatas.BTitle = "绩效月份";
  209. retDatas.Title = "部门每月绩效统计";
  210. retDatas.Datas = new List<ChartData>();
  211. foreach (var key in retData1)
  212. {
  213. 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 });
  214. }
  215. return retDatas;
  216. }
  217. break;
  218. case 2:
  219. var retData3 = Context.StaffStatistics.Where(s=>s.jxType.Contains("专案")).GroupBy(s => new { s.Staff.Name, s.CalMonth.Year, s.CalMonth.Month })
  220. .Select(g => new { Name = g.Key.Name, Year = g.Key.Year, Month = g.Key.Month, sum = g.Sum(s => s.FinianlPoint) })
  221. .OrderByDescending(g => g.sum);
  222. retDatas.ATitle = "人员";
  223. retDatas.BTitle = "绩效月份";
  224. retDatas.Title = "人员每月专案绩效统计";
  225. retDatas.Datas = new List<ChartData>();
  226. foreach (var key in retData3)
  227. {
  228. 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 });
  229. }
  230. return retDatas;
  231. break;
  232. case 3:
  233. break;
  234. }
  235. return retDatas;
  236. }
  237. }
  238. }