using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace wispro.sp.share
{
public class LevelStatisticsResult
{
public double doAverage()
{
var temList = Statistics.Where(s => s.dS > 0 || s.dA > 0 || s.dB > 0 || s.dC > 0 || s.dD > 0);
int count = temList.Count();
double ret = 0.0;
switch (Grade)
{
case "A":
ret=(double)((((decimal)temList.Sum(s => s.dS)*2.5M)+((decimal)temList.Sum(s=>s.dA)*1.5M))/(decimal)count);
break;
case "B":
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);
break;
case "C":
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);
break;
case "D":
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);
break;
}
return ret;
}
public double vAverage()
{
var temList = Statistics.Where(s => s.vS > 0 || s.vA > 0 || s.vB > 0 || s.vC > 0 || s.vD > 0);
int count = temList.Count();
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);
return ret;
}
public double pAverage(int staffId)
{
var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
if(temObj != null)
{
switch (Grade)
{
case "A":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M) / (decimal)doAverage());
break;
case "B":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M+(decimal)temObj.dB) / (decimal)doAverage());
break;
case "C":
case "D":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / (decimal)doAverage());
break;
default:
return 0.0;
}
}
else
{
return 0.0;
}
}
public double pvAverage(int staffId)
{
var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
if (temObj != null)
{
return (double)(((decimal)temObj.vS * 2.5M + (decimal)temObj.vA * 1.5M + (decimal)temObj.vB + (decimal)temObj.vC * 0.7M)/(decimal)vAverage());
}
else
{
return 0.0;
}
}
public double p2(int staffId)
{
var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
switch (Grade)
{
case "B":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB) / ((decimal)doAverage() * 0.95M));
break;
case "C":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / ((decimal)UpgradeBase*0.7M));
break;
case"D":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / 14M);
default:
return 0.0;
}
}
public double p3(int staffId)
{
var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
switch (Grade)
{
case "B":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB) / ((decimal)doAverage()));
break;
case "C":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / ((decimal)UpgradeBase * 0.8M));
break;
case "D":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / 16M);
default:
return 0.0;
}
}
public double toUpgradeLevel(int staffId)
{
var temObj = Statistics.FirstOrDefault(s => s.StaffId == staffId);
switch (Grade)
{
case "B":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M ) / ((decimal)UpgradeBase));
break;
case "C":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB ) / ((decimal)UpgradeBase * 0.9M));
break;
case "D":
return (double)(((decimal)temObj.dS * 2.5M + (decimal)temObj.dA * 1.5M + (decimal)temObj.dB + (decimal)temObj.dC * 0.7M) / 18M);
default:
return 0.0;
}
}
///
/// 升级基数
///
public double UpgradeBase { get; set; }
///
/// 人员等级
///
public string Grade { get; set; }
///
/// 个人案件数量统计
///
public List Statistics { get; set; }
}
public class LevelStatistics
{
public int StaffId { get; set; }
public string StaffName { get; set; }
public string Grade { get; set; }
public string Department { get; set; }
public double dS { get; set; }
public double dA { get; set; }
public double dB { get; set; }
public double dC { get; set; }
public double dD { get; set; }
public double vS { get; set; }
public double vA { get; set; }
public double vB { get; set; }
public double vC { get; set; }
public double vD { get; set; }
}
}