Commit 943a6d0b by lcx

全院核算绩效发放数据分组合并、5.2读取数据设置起始行、人员信息中的医院奖罚数据来源修改

parent f4c54d56
......@@ -78,7 +78,7 @@ public class ResultComputeService : IAutoInjection
/// <param name="excel"></param>
public List<res_baiscnorm> Compute(per_allot allot, List<PerSheet> accountSheet)
{
//取出人员信息
//取出人员信息
var empolyeeList = perforImemployeeclinicRepository.GetEntities(t => t.AllotID == allot.ID);
var accountbasicList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == allot.ID);
......@@ -118,7 +118,6 @@ public List<res_baiscnorm> Compute(per_allot allot, List<PerSheet> accountSheet)
return baiscnormList;
}
/// <summary>
/// 特殊科室绩效计算
/// </summary>
......@@ -166,7 +165,6 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
return t.Quantity * t.QuantitativeIndicatorsValue * headcount;
});
foreach (var item in accountDataList)
{
//科室奖罚汇总结果
......@@ -194,7 +192,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
Quantity = item.Quantity,
QuantitativeIndicatorsValue = item.QuantitativeIndicatorsValue,
QuantitativeFee = item.Quantity * item.QuantitativeIndicatorsValue * headcount,
//ScoringAverage = scoreAverage.HasValue ? scoreAverage : dept?.ScoringAverage,
//ScoringAverage = scoreAverage.HasValue ? scoreAverage : dept?.ScoringAverage,
ScoringAverage = dept?.ScoringAverage ?? 1,
//OtherPerfor = dept?.OtherPerfor1,
//Punishment = (extra ?? 0),
......@@ -250,7 +248,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
JobTitle = empolyee.JobTitle,
JobNumber = empolyee.JobNumber,
ScoreAverageRate = empolyee.ScoreAverageRate,
Punishment = 0,
Punishment = empolyee.Punishment ?? 0,
//OtherPerfor = empolyee.OtherPerfor,
OtherManagePerfor = empolyee?.OtherManagePerfor ?? 0,
Number = group.Number,
......@@ -503,7 +501,8 @@ private void ChangeRealGiveFee(res_reserved reserved, per_allot allot, decimal r
reserved.DecRatio = ratio;
}
}
#endregion
#endregion 预留金额
/// <summary>
/// 创建科室二次分配
......
......@@ -344,12 +344,30 @@ public List<DeptResponse> GetAdminPerformance(int allotId)
//ScoringPerfor = t.Sum(group => group.RealGiveFee) * (t.FirstOrDefault(group => group.ScoreAverageRate > 0)?.ScoreAverageRate ?? 0),
Avg = t.Sum(group => group.RealGiveFee) / t.Count(), //人均绩效
OtherPerfor1 = t.Sum(group => group.OtherPerfor),
RealGiveFee = t.Sum(group => group.RealGiveFee) + t.Sum(group => group.OtherPerfor), //实发绩效
RealGiveFee = t.Sum(group => group.RealGiveFee ?? 0) + t.Sum(group => group.OtherPerfor ?? 0), //实发绩效
}).ToList();
var enumItems = EnumHelper.GetItems<AccountUnitType>();
adminPerfor = adminPerfor.OrderBy(t => enumItems.FirstOrDefault(e => e.Name == t.UnitName).Value).ThenBy(t => t.AccountingUnit).ToList();
result.AddRange(adminPerfor);
result = result.GroupBy(t => new { t.AccountingUnit, t.UnitName })
.Select(t => new DeptResponse
{
UnitName = t.Key.UnitName,
AccountingUnit = t.Key.AccountingUnit,
Department = t.Key.AccountingUnit,
PerforFee = t.Sum(group => group.PerforFee),
WorkloadFee = t.Sum(group => group.WorkloadFee),
AssessBeforeOtherFee = t.Sum(group => group.AssessBeforeOtherFee),
ScoringAverage = t.Sum(group => group.ScoringAverage),
MedicineExtra = t.Sum(group => group.MedicineExtra),
Extra = t.Sum(group => group.Extra),
AssessLaterOtherFee = t.Sum(group => group.AssessLaterOtherFee),
AdjustFactor = t.Sum(group => group.AdjustFactor),
AdjustLaterOtherFee = t.Sum(group => group.AdjustLaterOtherFee),
RealGiveFee = t.Sum(group => group.RealGiveFee),
}).ToList();
var enumItems = EnumHelper.GetItems<AccountUnitType>();
result = result.OrderBy(t => enumItems.FirstOrDefault(e => e.Name == t.UnitName)?.Value)/*.ThenBy(t => t.AccountingUnit)*/.ToList();
return result;
}
......
......@@ -19,6 +19,7 @@ public class PerSheetDataReadPersonExtra : IPerSheetDataRead
HeaderLastRowNum = 1,
HeaderFirstCellNum = 0,
DataFirstRowNum = 2,
DataFirstCellNum = 4,
TotalCellNum = 0,
AccountingUnit = new List<AccountingUnit>
{
......@@ -45,7 +46,7 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
var row = sheet.GetRow(r);
if (row == null) continue;
for (int c = 0; c < vhead.Count(); c++)
for (int c = Point.DataFirstCellNum.Value; c < vhead.Count(); c++)
{
var athead = vhead.ElementAt(c);
//var cellValue = NopiSevice.GetCellValue(row.GetCell(athead.PointCell));
......@@ -74,7 +75,6 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
if (unit.JobCellNum.HasValue)
data.JobNumber = row.GetCell(unit.JobCellNum.Value).GetValue();
if (string.IsNullOrEmpty(data.AccountingUnit) && string.IsNullOrEmpty(data.Department))
continue;
dataList.Add(data);
......
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