Commit 79d541e6 by 李承祥

科主任共用核算单元、特殊科室计算

parent d77d6822
......@@ -123,7 +123,7 @@ public List<res_baiscnorm> DocterNurseBaiscnorm(List<res_baiscnorm> baiscnormLis
//剔除不同科室相同核算单元
var groupData = perData.Where(t => t.UnitType == info.UnitType.ToString())
.GroupBy(t => t.AccountingUnit)
.Select(t => new { AccountingUnit = t.Key, Number = t.Sum(p => p.ManagerNumber + p.Number), PerforTotal = t.Max(p => p.PerforTotal) });
.Select(t => new { AccountingUnit = t.Key, Number = t.Sum(p => p.ManagerNumber + p.Number), PerforTotal = t.Sum(p => p.PerforTotal) });
var baiscnorm = new res_baiscnorm
{
......
......@@ -140,7 +140,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
// 新都医院在特殊科室计算时,如果取核算基数计算时带入人数计算
decimal? headcount = null;
if (typeList.Any(o => o.Description == t.QuantitativeIndicators))
headcount = accountDataList.Sum(p => p.Number);
headcount = group.Number;
if (!headcount.HasValue || headcount == 0)
headcount = 1;
return t.Quantity * t.QuantitativeIndicatorsValue * headcount;
......
......@@ -159,8 +159,9 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
{
//if (!accountbasic.ManagerNumber.HasValue || accountbasic.ManagerNumber.Value == 0)
// continue;
if (!accountbasic.DoctorDirectorNumber.HasValue || accountbasic.DoctorDirectorNumber.Value == 0)
if ((!accountbasic.DoctorDirectorNumber.HasValue && "皮肤科" != accountbasic.DoctorAccountingUnit) || (accountbasic.DoctorDirectorNumber.Value == 0 && "皮肤科" != accountbasic.DoctorAccountingUnit))
continue;
//原不存在科主任则跳过科主任绩效计算20190920新都
//是否共用核算单元
var isShare = multi.Any(group => group.UnitType == accountbasic.UnitType && group.DoctorAccountingUnit == accountbasic.DoctorAccountingUnit);
......@@ -172,9 +173,33 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
var resAccount = dataList.Where(t => t.UnitType == accountbasic.UnitType && t.AccountingUnit == accountbasic.DoctorAccountingUnit);
var number = resAccount.OrderByDescending(t => t.ManagerNumber).Sum(t => t.ManagerNumber + t.Number);
var perforTotal = resAccount.Sum(t => t.PerforTotal);
var avg = resAccount.Average(t => t.Avg);
//var avg = resAccount.Average(t => t.Avg);
//绩效参考标准,不使用实发绩效
var realAvg = resAccount.Sum(t => (t.ManagerNumber + t.Number) == 0 ? 0 : t.RealGiveFee / (t.ManagerNumber + t.Number)) / resAccount.Count();
//var realAvg = resAccount.Sum(t => (t.ManagerNumber + t.Number) == 0 ? 0 : t.RealGiveFee / (t.ManagerNumber + t.Number)) / resAccount.Count();
//var realAvg = resAccount.Sum(t => t.Number + t.ManagerNumber) == 0 ? 0 : resAccount.Sum(t => t.RealGiveFee) / resAccount.Sum(t => t.Number + t.ManagerNumber);
decimal? realAvg = 0;
bool isAvg = true;
if ("内五科" == accountbasic.DoctorAccountingUnit && isShare)
realAvg = resAccount.Sum(r => r.Number + r.ManagerNumber) == 0 ? 0 : resAccount.Sum(r => r.RealGiveFee) / resAccount.Sum(r => r.Number);
else
{
foreach (var item in resAccount)
{
if ((item.ManagerNumber + item.Number) == 0)
{
isAvg = false;
realAvg = resAccount.Sum(r => r.Number + r.ManagerNumber) == 0 ? 0 : resAccount.Sum(r => r.RealGiveFee) / resAccount.Sum(r => r.Number + r.ManagerNumber);
break;
}
else
{
realAvg += item.RealGiveFee / (item.ManagerNumber + item.Number);
}
}
if (isAvg)
realAvg = realAvg / resAccount.Count();
}
var realGiveFee = resAccount.Sum(t => t.RealGiveFee);
......@@ -212,7 +237,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
Number = number,
PerforTotal = realGiveFee,
Avg = realAvg,
Efficiency = avg * (accountbasic.DoctorEffic ?? 1),
Efficiency = realAvg * (accountbasic.DoctorEffic ?? 1),
Scale = perforTotal * (accountbasic.DoctorScale ?? 1),
Adjust = empolyee.Adjust,
Remark = isShare ? "特殊科室主任,共用核算单元" : ""
......@@ -226,7 +251,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
//实发绩效
compute.RealGiveFee = (compute.GiveFee * compute.ScoreAverageRate + (compute.Punishment ?? 0) + (compute.OtherPerfor ?? 0)) * (compute.Adjust ?? 1m);
// 参考基数专用绩效合计
compute.BaiscNormPerforTotal = avg + compute.ShouldGiveFee;
compute.BaiscNormPerforTotal = compute.RealGiveFee;
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