Commit 20b07b6f by 799284587@qq.com

特殊科室

parent 8f813702
...@@ -91,8 +91,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -91,8 +91,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
?.FirstOrDefault().FitPeopleRatio ?? 1; ?.FirstOrDefault().FitPeopleRatio ?? 1;
var basic = baiscNormService.GetBaiscNorm(baiscnormList, (PerforType)type.Value); var basic = baiscNormService.GetBaiscNorm(baiscnormList, (PerforType)type.Value);
// 添加参数计算 // 添加参数计算
// 新都医院在特殊科室计算时,如果取核算基数计算时带入人数计算 item.Quantity = basic != null ? basic * radio : null;
item.Quantity = basic != null ? basic * radio * (!item.Number.HasValue || item.Number == 0 ? 1 : item.Number) : null;
} }
} }
...@@ -113,7 +112,16 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -113,7 +112,16 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
//获取需要聚合的科室 //获取需要聚合的科室
var accountDataList = dataList.Where(t => t.AccountingUnit == group.AccountingUnit); var accountDataList = dataList.Where(t => t.AccountingUnit == group.AccountingUnit);
//计算量化指标子项合计 //计算量化指标子项合计
var sumValue = accountDataList.Sum(t => t.Quantity * t.QuantitativeIndicatorsValue); var sumValue = accountDataList.Sum(t =>
{
// 新都医院在特殊科室计算时,如果取核算基数计算时带入人数计算
decimal? headcount = null;
if (typeList.Any(o => o.Description == t.QuantitativeIndicators))
headcount = accountDataList.Sum(p => p.Number);
if (!headcount.HasValue || headcount == 0)
headcount = 1;
return t.Quantity * t.QuantitativeIndicatorsValue * headcount;
});
foreach (var item in accountDataList) foreach (var item in accountDataList)
{ {
var res = new res_specialunit var res = new res_specialunit
...@@ -129,10 +137,10 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -129,10 +137,10 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
OtherPerfor = group.OtherPerfor, OtherPerfor = group.OtherPerfor,
Punishment = group.Punishment, Punishment = group.Punishment,
Adjust = group.Adjust == 0 ? 1 : group.Adjust, Adjust = group.Adjust == 0 ? 1 : group.Adjust,
Avg = group.Number != 0 ? sumValue / group.Number : null,
GiveFee = sumValue,
RealGiveFee = (sumValue + (group.OtherPerfor ?? 0) + (group.Punishment ?? 0)) * (group.Adjust == 0 ? 1 : group.Adjust),
}; };
res.GiveFee = (sumValue + (group.OtherPerfor ?? 0) + (group.Punishment ?? 0)) * (group.Adjust == 0 ? 1 : group.Adjust);
res.RealGiveFee = res.GiveFee;
res.Avg = group.Number != 0 ? res.GiveFee / group.Number : null;
resDataList.Add(res); resDataList.Add(res);
} }
} }
......
...@@ -190,7 +190,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot ...@@ -190,7 +190,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
//添加参数计算 //添加参数计算
compute.BaiscNormValue = baiscnorm * (item.FitPeopleRatio ?? 1); compute.BaiscNormValue = baiscnorm * (item.FitPeopleRatio ?? 1);
//应发绩效 //应发绩效
compute.GiveFee = compute.BaiscNormValue * (compute.PostCoefficient + item.Adjust ?? 0) compute.GiveFee = compute.BaiscNormValue * (compute.PostCoefficient + (item.Adjust ?? 0))
* (item.Grant ?? 1) * compute.Attendance * compute.ScoreAverageRate * (compute.WorkYear ?? 1) * (item.Grant ?? 1) * compute.Attendance * compute.ScoreAverageRate * (compute.WorkYear ?? 1)
+ (compute.OtherPerfor ?? 0) + (item.Workload ?? 0) + (compute.Punishment ?? 0); + (compute.OtherPerfor ?? 0) + (item.Workload ?? 0) + (compute.Punishment ?? 0);
//实发绩效 //实发绩效
......
...@@ -31,22 +31,27 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader) ...@@ -31,22 +31,27 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
var accountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科室").PointCell)?.ToString(); var accountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科室").PointCell)?.ToString();
if (string.IsNullOrEmpty(accountingUnit)) if (string.IsNullOrEmpty(accountingUnit))
accountingUnit = lastAccount; accountingUnit = lastAccount;
PerDataSpecialUnit employee = new PerDataSpecialUnit PerDataSpecialUnit specialUnit = new PerDataSpecialUnit
{ {
RowNumber = r, RowNumber = r,
AccountingUnit = accountingUnit, AccountingUnit = accountingUnit,
Department = accountingUnit, Department = accountingUnit,
Number = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "人数").PointCell)?.ToString()),
QuantitativeIndicators = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "量化指标").PointCell)?.ToString(), QuantitativeIndicators = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "量化指标").PointCell)?.ToString(),
Quantity = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "数量").PointCell)?.ToString()), Quantity = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "数量").PointCell)?.ToString()),
QuantitativeIndicatorsValue = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "量化指标绩效分值").PointCell)?.ToString()), QuantitativeIndicatorsValue = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "量化指标绩效分值").PointCell)?.ToString()),
ScoringAverage = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率").PointCell)?.ToString()),
OtherPerfor = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效").PointCell)?.ToString()),
Punishment = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "医院奖罚").PointCell)?.ToString()),
Adjust = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "调节系数").PointCell)?.ToString()),
}; };
dataList.Add(employee); //相同科室只取以下项目第一次出现的值
lastAccount = employee.AccountingUnit; if (accountingUnit != lastAccount)
{
specialUnit.Number = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "人数").PointCell)?.ToString());
specialUnit.ScoringAverage = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率").PointCell)?.ToString());
specialUnit.OtherPerfor = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效").PointCell)?.ToString());
specialUnit.Punishment = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "医院奖罚").PointCell)?.ToString());
specialUnit.Adjust = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "调节系数").PointCell)?.ToString());
}
dataList.Add(specialUnit);
//合并单元格科室名称补全
lastAccount = specialUnit.AccountingUnit;
} }
return dataList; return dataList;
......
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