Commit 3a4ce197 by ruyun.zhang@suvalue.com

Merge branch 'feature/二次分配小数位' into develop

parents 8b9aafc9 3e285b7a
......@@ -884,8 +884,8 @@ private void deptRewardCalculate(List<Dictionary<string, object>> rows)
{
foreach (var row in rows)
{
decimal total_deptReward = row.Where(w => w.Key.StartsWithIgnoreCase("SingleAwards_")).Sum(r => GetDecimal2(row, r.Key));
row.AddOrUpdate(nameof(ag_bodysource.DeptReward), total_deptReward);
decimal total_deptReward = row.Where(w => w.Key.StartsWithIgnoreCase("SingleAwards_")).Sum(r => GetDecimal(row, r.Key));
row.AddOrUpdate(nameof(ag_bodysource.DeptReward), GetDecimal2(total_deptReward));
}
}
/// <summary>
......@@ -960,10 +960,10 @@ private void basisPerformanceCalculate(Dictionary<string, object> head, List<Dic
var post = row.GetString(nameof(ag_bodysource.Post));
if (specialPostName.Contains(post))
{
var daysFullAttendance = GetDecimal2(head, nameof(ag_headsource.DaysFullAttendance));
var daysFullAttendance = GetDecimal(head, nameof(ag_headsource.DaysFullAttendance));
var departmentsPerCapita = GetDecimal2(head, nameof(ag_headsource.DepartmentsPerCapita));
var staffCoefficient = GetDecimal2(row, nameof(ag_bodysource.StaffCoefficient));
var actualAttendance = GetDecimal2(row, nameof(ag_bodysource.ActualAttendance));
var staffCoefficient = GetDecimal(row, nameof(ag_bodysource.StaffCoefficient));
var actualAttendance = GetDecimal(row, nameof(ag_bodysource.ActualAttendance));
var basisPerformance = daysFullAttendance == 0 ? 0 : departmentsPerCapita * staffCoefficient * actualAttendance / daysFullAttendance;
row.AddOrUpdate(nameof(ag_bodysource.BasisPerformance), basisPerformance);
......@@ -988,10 +988,10 @@ private void titleCoefficientCalculate(Dictionary<string, object> head, List<Dic
{
var post = row.GetString(nameof(ag_bodysource.Post));
if (!specialPostName.Contains(post))
total_titleCoefficient += GetDecimal2(row, nameof(ag_bodysource.ActualAttendance)) * GetDecimal2(row, nameof(ag_bodysource.TitleCoefficient));
total_titleCoefficient += GetDecimal(row, nameof(ag_bodysource.ActualAttendance)) * GetDecimal(row, nameof(ag_bodysource.TitleCoefficient));
}
var seniorityTitlesPerformance = GetDecimal2(head, nameof(ag_headsource.SeniorityTitlesPerformance));
var seniorityTitlesPerformance = GetDecimal(head, nameof(ag_headsource.SeniorityTitlesPerformance));
foreach (var row in rows)
{
var post = row.GetString(nameof(ag_bodysource.Post));
......@@ -999,8 +999,8 @@ private void titleCoefficientCalculate(Dictionary<string, object> head, List<Dic
if (specialPostName.Contains(post))
row.AddOrUpdate(nameof(ag_bodysource.TitleCoefficient), 0m);
// 职称得分 = 当前行实际出勤 * 当前行职称系数
var titlePerformanceScore = GetDecimal2(row, nameof(ag_bodysource.ActualAttendance)) * GetDecimal2(row, nameof(ag_bodysource.TitleCoefficient));
row.AddOrUpdate(nameof(ag_bodysource.TitlePerformanceScore), GetDecimal2(titlePerformanceScore));
var titlePerformanceScore = GetDecimal(row, nameof(ag_bodysource.ActualAttendance)) * GetDecimal(row, nameof(ag_bodysource.TitleCoefficient));
row.AddOrUpdate(nameof(ag_bodysource.TitlePerformanceScore), titlePerformanceScore);
//个人职称绩效 = ( 当前行实际出勤 * 当前行职称系数 ) / 职称系数总和* 年资职称绩效总和
var titlePerformance = total_titleCoefficient == 0 ? 0 : titlePerformanceScore / total_titleCoefficient * seniorityTitlesPerformance;
row.AddOrUpdate(nameof(ag_bodysource.TitlePerformance), GetDecimal2(titlePerformance));
......@@ -1036,14 +1036,14 @@ private void titleCoefficientCalculate(Dictionary<string, object> head, List<Dic
break;
}
// 工作量得分
row.AddOrUpdate(gp.WorkloadScore, GetDecimal2(workload_score));
row.AddOrUpdate(gp.WorkloadScore, workload_score);
}
}
// 工作量每分价格计算
foreach (var gp in workloadGroups)
{
// 汇总行内工作量总得分
var total_score = rows.Sum(row => GetDecimal2(row, gp.WorkloadScore) * GetDecimal2(row, gp.AssessmentScore));
var total_score = rows.Sum(row => GetDecimal(row, gp.WorkloadScore) * GetDecimal(row, gp.AssessmentScore));
// 计算每分价格
gp.Unit_Price = total_score == 0 ? 0 : head.GetDecimal($"Workload_Amount_{gp.Name}") / total_score;
}
......@@ -1061,12 +1061,12 @@ private void titleCoefficientCalculate(Dictionary<string, object> head, List<Dic
row.AddOrUpdate(gp.AssessmentScore, 0m);
}
// 工作量绩效 = 工作量得分 * 每分价格 * 考核得分
var workload_fee = GetDecimal2(row.GetDecimal(gp.WorkloadScore) * gp.Unit_Price * row.GetDecimal(gp.AssessmentScore));
row.AddOrUpdate(gp.WorkPerformance, workload_fee);
var workload_fee = row.GetDecimal(gp.WorkloadScore) * gp.Unit_Price * row.GetDecimal(gp.AssessmentScore);
row.AddOrUpdate(gp.WorkPerformance, GetDecimal2(workload_fee));
workPerformance += workload_fee;
}
// 行内工作量汇总到一起
row.AddOrUpdate(nameof(ag_bodysource.WorkPerformance), workPerformance);
row.AddOrUpdate(nameof(ag_bodysource.WorkPerformance), GetDecimal2(workPerformance));
}
}
......@@ -1095,7 +1095,7 @@ decimal ComputeMode_3(Dictionary<string, object> row, List<TitleValue<string, de
// 科主任/护士长 不参与工作量考核
if (specialPostName.Contains(post))
row.AddOrUpdate(item.ToLower(), 0);
return GetDecimal2(row.GetDecimal(item.ToLower()) * getFactorValue(loads, item));
return row.GetDecimal(item.ToLower()) * getFactorValue(loads, item);
});
return workload_score;
}
......@@ -1122,7 +1122,7 @@ decimal ComputeMode_2(Dictionary<string, object> row, SecondWorkLoadDto gp, stri
row.AddOrUpdate(gp.Items[i + 1], 0m);
}
var amount = row.GetDecimal(gp.Items[i]) * row.GetDecimal(gp.Items[i + 1]);
workload_score += GetDecimal2(amount);
workload_score += amount;
}
}
return workload_score;
......@@ -1205,6 +1205,13 @@ private void realAmountCalculate(List<Dictionary<string, object>> rows)
/// <param name="key"></param>
/// <returns></returns>
private decimal GetDecimal2(Dictionary<string, object> pairs, string key) => GetDecimal2(pairs.GetDecimal(key));
/// <summary>
/// 从键值对中获取decimal,默认:0,返回原始值
/// </summary>
/// <param name="pairs"></param>
/// <param name="key"></param>
/// <returns></returns>
private decimal GetDecimal(Dictionary<string, object> pairs, string key) => pairs.GetDecimal(key);
/// <summary>
/// decimal?类型转换decimal 默认:0,保留2位小数
......
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