LevelStatistics.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace wispro.sp.share
  7. {
  8. public class LevelStatisticsResult
  9. {
  10. public double doAverage()
  11. {
  12. var temList = Statistics.Where(s => s.dS > 0 || s.dA > 0 || s.dB > 0 || s.dC > 0 || s.dD > 0);
  13. int count = temList.Count();
  14. double ret = 0.0;
  15. if (count > 0)
  16. {
  17. switch (Grade)
  18. {
  19. case "A":
  20. ret = (double)((((decimal)temList.Sum(s => s.dS) * 2.5M) + ((decimal)temList.Sum(s => s.dA) * 1.5M)) / (decimal)count);
  21. break;
  22. case "B":
  23. ret = (double)((((decimal)temList.Sum(s => s.dS) * 2.5M) + ((decimal)temList.Sum(s => s.dA) * 1.5M) + ((decimal)temList.Sum(s => s.dB))) / (decimal)count);
  24. break;
  25. case "C":
  26. ret = (double)((((decimal)temList.Sum(s => s.dS) * 2.5M) + ((decimal)temList.Sum(s => s.dA) * 1.5M) + ((decimal)temList.Sum(s => s.dB)) + ((decimal)temList.Sum(s => s.dC) * 0.7M)) / (decimal)count);
  27. break;
  28. case "D":
  29. ret = (double)((((decimal)temList.Sum(s => s.dS) * 2.5M) + ((decimal)temList.Sum(s => s.dA) * 1.5M) + ((decimal)temList.Sum(s => s.dB)) + ((decimal)temList.Sum(s => s.dC) * 0.7M)) / (decimal)count);
  30. break;
  31. }
  32. }
  33. return ret;
  34. }
  35. public double vAverage()
  36. {
  37. var temList = Statistics.Where(s => s.vS > 0 || s.vA > 0 || s.vB > 0 || s.vC > 0 || s.vD > 0);
  38. int count = temList.Count();
  39. double ret = (double)(((decimal)temList.Sum(s => s.dS) * 2.5M + (decimal)temList.Sum(s => s.dA) * 1.5M + (decimal)temList.Sum(s => s.dB) + (decimal)temList.Sum(s => s.dC) * 0.7M) / (decimal)count);
  40. return ret;
  41. }
  42. public double pAverage(int staffId)
  43. {
  44. var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
  45. if(temObj != null)
  46. {
  47. switch (Grade)
  48. {
  49. case "A":
  50. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M) / (decimal)doAverage());
  51. break;
  52. case "B":
  53. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M+(decimal)temObj.dB) / (decimal)doAverage());
  54. break;
  55. case "C":
  56. case "D":
  57. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / (decimal)doAverage());
  58. break;
  59. default:
  60. return 0.0;
  61. }
  62. }
  63. else
  64. {
  65. return 0.0;
  66. }
  67. }
  68. public double pvAverage(int staffId)
  69. {
  70. var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
  71. if (temObj != null)
  72. {
  73. return (double)(((decimal)temObj.vS * 2.5M + (decimal)temObj.vA * 1.5M + (decimal)temObj.vB + (decimal)temObj.vC * 0.7M)/(decimal)vAverage());
  74. }
  75. else
  76. {
  77. return 0.0;
  78. }
  79. }
  80. public double p2(int staffId)
  81. {
  82. var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
  83. switch (Grade)
  84. {
  85. case "B":
  86. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB) / ((decimal)doAverage() * 0.95M));
  87. break;
  88. case "C":
  89. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / ((decimal)UpgradeBase*0.7M));
  90. break;
  91. case"D":
  92. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / 14M);
  93. default:
  94. return 0.0;
  95. }
  96. }
  97. public double p3(int staffId)
  98. {
  99. var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
  100. switch (Grade)
  101. {
  102. case "B":
  103. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB) / ((decimal)doAverage()));
  104. break;
  105. case "C":
  106. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / ((decimal)UpgradeBase * 0.8M));
  107. break;
  108. case "D":
  109. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / 16M);
  110. default:
  111. return 0.0;
  112. }
  113. }
  114. public double toUpgradeLevel(int staffId)
  115. {
  116. var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
  117. switch (Grade)
  118. {
  119. case "B":
  120. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M ) / ((decimal)UpgradeBase));
  121. break;
  122. case "C":
  123. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB ) / ((decimal)UpgradeBase * 0.9M));
  124. break;
  125. case "D":
  126. return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / 18M);
  127. default:
  128. return 0.0;
  129. }
  130. }
  131. /// <summary>
  132. /// 升级基数
  133. /// </summary>
  134. public double UpgradeBase { get; set; }
  135. /// <summary>
  136. /// 人员等级
  137. /// </summary>
  138. public string Grade { get; set; }
  139. /// <summary>
  140. /// 个人案件数量统计
  141. /// </summary>
  142. public List<LevelStatistics> Statistics { get; set; }
  143. }
  144. public class LevelStatistics
  145. {
  146. public int StaffId { get; set; }
  147. public string StaffName { get; set; }
  148. public string Grade { get; set; }
  149. public string Department { get; set; }
  150. public double dS { get; set; }
  151. public double dA { get; set; }
  152. public double dB { get; set; }
  153. public double dC { get; set; }
  154. public double dD { get; set; }
  155. public double vS { get; set; }
  156. public double vA { get; set; }
  157. public double vB { get; set; }
  158. public double vC { get; set; }
  159. public double vD { get; set; }
  160. }
  161. }