LevelStatistics.cs 6.7 KB

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