人员绩效公式调整

parent deea3975
...@@ -91,7 +91,7 @@ public class ComputeResult ...@@ -91,7 +91,7 @@ public class ComputeResult
public Nullable<decimal> OtherPerfor { get; set; } public Nullable<decimal> OtherPerfor { get; set; }
/// <summary> /// <summary>
/// 发绩效(需计算) /// 发绩效(需计算)
/// </summary> /// </summary>
public Nullable<decimal> GiveFee { get; set; } public Nullable<decimal> GiveFee { get; set; }
...@@ -109,6 +109,9 @@ public class ComputeResult ...@@ -109,6 +109,9 @@ public class ComputeResult
/// 年资系数(来自人员名单) /// 年资系数(来自人员名单)
/// </summary> /// </summary>
public Nullable<decimal> WorkYear { get; set; } public Nullable<decimal> WorkYear { get; set; }
/// <summary>
/// 实发绩效
/// </summary>
public decimal? RealGiveFee { get; set; }
} }
} }
...@@ -57,11 +57,12 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<Comp ...@@ -57,11 +57,12 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<Comp
Efficiency = efficiency?.Value * resAccount?.Avg, Efficiency = efficiency?.Value * resAccount?.Avg,
Scale = scale?.Value * resAccount?.PerforTotal, Scale = scale?.Value * resAccount?.PerforTotal,
Grant = item.Grant, Grant = item.Grant,
ShouldGiveFee = (efficiency?.Value * resAccount?.Avg + scale?.Value * resAccount?.PerforTotal) * item.Grant,
ScoreAverageRate = item.ScoreAverageRate, ScoreAverageRate = item.ScoreAverageRate,
Punishment = item.Punishment, Punishment = item.Punishment,
OtherPerfor = item.OtherPerfor OtherPerfor = item.OtherPerfor
}; };
//应发管理绩效
compute.ShouldGiveFee = (efficiency?.Value * resAccount?.Avg + scale?.Value * resAccount?.PerforTotal) * item.Grant;
//绩效合计 //绩效合计
var perforSumFee = (compute.Avg + compute.Efficiency + compute.Scale) * item.Grant; var perforSumFee = (compute.Avg + compute.Efficiency + compute.Scale) * item.Grant;
if (perforSumFee > (compute.Avg ?? 0) * 2.5m) if (perforSumFee > (compute.Avg ?? 0) * 2.5m)
...@@ -70,6 +71,8 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<Comp ...@@ -70,6 +71,8 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<Comp
compute.PerforSumFee = perforSumFee; compute.PerforSumFee = perforSumFee;
//应发绩效 //应发绩效
compute.GiveFee = compute.Avg * item.Grant + (compute.Efficiency + compute.Scale) * item.Grant * compute.ScoreAverageRate + (item.Punishment ?? 0) + (item.OtherPerfor ?? 0); compute.GiveFee = compute.Avg * item.Grant + (compute.Efficiency + compute.Scale) * item.Grant * compute.ScoreAverageRate + (item.Punishment ?? 0) + (item.OtherPerfor ?? 0);
//实发绩效
compute.RealGiveFee = compute.GiveFee * item.Adjust - compute.ShouldGiveFee * item.ScoreAverageRate * item.Grant * 0.1m;
computeList.Add(compute); computeList.Add(compute);
} }
...@@ -153,18 +156,16 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<res_ ...@@ -153,18 +156,16 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<res_
Punishment = item.Punishment, Punishment = item.Punishment,
OtherPerfor = item.OtherPerfor OtherPerfor = item.OtherPerfor
}; };
//绩效合计
compute.ShouldGiveFee = baiscnorm * compute.PostCoefficient * compute.Attendance * compute.ScoreAverageRate + (compute.OtherPerfor ?? 0) + (item.Workload ?? 0) + (compute.Punishment ?? 0);
//年资系数 //年资系数
if (yearTypes.Contains(type) && item.WorkTime.HasValue && item.WorkTime.Value > new DateTime(1970, 1, 1)) if (yearTypes.Contains(type) && item.WorkTime.HasValue && item.WorkTime.Value > new DateTime(1970, 1, 1))
{ {
var years = ((DateTime.Now.Year - item.WorkTime.Value.Year) * 12 + (DateTime.Now.Month - item.WorkTime.Value.Month)) / 12.0m; var years = ((DateTime.Now.Year - item.WorkTime.Value.Year) * 12 + (DateTime.Now.Month - item.WorkTime.Value.Month)) / 12.0m;
var value = workyearList.FirstOrDefault(t => t.MinRange < years && years <= t.MaxRange)?.Value; var value = workyearList.FirstOrDefault(t => t.MinRange < years && years <= t.MaxRange)?.Value;
compute.WorkYear = value; compute.WorkYear = value;
compute.ShouldGiveFee = compute.ShouldGiveFee * (value ?? 1);
} }
compute.GiveFee = baiscnorm * compute.PostCoefficient * compute.Attendance * compute.ScoreAverageRate * (compute.WorkYear ?? 1) + (compute.OtherPerfor ?? 0) + (item.Workload ?? 0) + (compute.Punishment ?? 0);
//应发绩效 //应发绩效
compute.GiveFee = compute.ShouldGiveFee * item.Adjust * item.Grant; compute.RealGiveFee = compute.GiveFee * item.Adjust * item.Grant;
computeList.Add(compute); computeList.Add(compute);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment