Commit 58367fb6 by lcx

Merge branch 'budget' into readExcel

parents 8d87daf6 e49e553d
......@@ -2822,6 +2822,11 @@
成本合计实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.States">
<summary>
1.初始 2. 确认使用发放/调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.CreateDate">
<summary>
......
......@@ -17,6 +17,7 @@ public class ResultComputeService : IAutoInjection
{
private readonly BaiscNormService baiscNormService;
private readonly ComputeDirector computeDirector;
private readonly BudgetService budgetService;
private readonly PerforImemployeeRepository perforImEmployeeRepository;
private readonly PerforRescomputeRepository perforRescomputeRepository;
private readonly PerforResbaiscnormRepository perforResbaiscnormRepository;
......@@ -32,7 +33,7 @@ public class ResultComputeService : IAutoInjection
PerforResspecialunitRepository perforResspecialunitRepository,
PerforImaccountbasicRepository perforImaccountbasicRepository,
BaiscNormService baiscNormService, ComputeDirector computeDirector,
LogManageService logManageService,
LogManageService logManageService, BudgetService budgetService,
PerforImemployeeclinicRepository perforImemployeeclinicRepository)
{
this.baiscNormService = baiscNormService;
......@@ -43,6 +44,7 @@ public class ResultComputeService : IAutoInjection
this.perforResspecialunitRepository = perforResspecialunitRepository;
this.perforImaccountbasicRepository = perforImaccountbasicRepository;
this.logManageService = logManageService;
this.budgetService = budgetService;
this.perforImemployeeclinicRepository = perforImemployeeclinicRepository;
}
......@@ -100,6 +102,11 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
var typeList = EnumHelper.GetItems<PerforType>();
var dataList = specialUnit.PerData.Select(t => (PerDataSpecialUnit)t);
var specialEmployee = perforImemployeeclinicRepository.GetEntities(t => t.AllotID == allot.ID);
decimal adjust = 1m;
decimal grant = 1m;
var isBudget = budgetService.GetAdjustAndGrant(allot, ref adjust, ref grant);
//替换考核基数
foreach (var item in dataList)
{
......@@ -161,6 +168,8 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
headcount = 1;
return t.Quantity * t.QuantitativeIndicatorsValue * headcount;
});
var groupAdjust = isBudget ? adjust : group.Adjust;
foreach (var item in accountDataList)
{
var res = new res_specialunit
......@@ -175,10 +184,10 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
ScoringAverage = group.ScoringAverage,
OtherPerfor = group.OtherPerfor,
Punishment = group.Punishment,
Adjust = group.Adjust == 0 ? 1 : group.Adjust,
Adjust = (groupAdjust == 0) ? 1 : groupAdjust,
};
res.GiveFee = (sumValue + (group.OtherPerfor ?? 0) + (group.Punishment ?? 0));
res.RealGiveFee = res.GiveFee * (group.Adjust == 0 ? 1 : group.Adjust);
res.RealGiveFee = res.GiveFee * (groupAdjust == 0 ? 1 : groupAdjust);
res.Avg = group.Number != 0 ? res.GiveFee / group.Number : null;
res.ResultsTotalFee = sumValue;
resDataList.Add(res);
......@@ -201,6 +210,8 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
// Adjust = 1,
// };
//}
var empolyeeAdjust = isBudget ? adjust : empolyee.Adjust;
var compute = new ComputeResult
{
UnitType = UnitType.特殊核算组.ToString(),
......@@ -218,14 +229,14 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
Number = group.Number,
PerforTotal = sumValue,
Avg = group.Number == 0 ? 0 : (sumValue / group.Number),
Adjust = empolyee.Adjust,
Grant = empolyee.Management
Adjust = empolyeeAdjust,
Grant = isBudget ? grant : empolyee.Management
};
compute.Efficiency = compute.Avg * (empolyee.Efficiency ?? 1);
compute.Scale = compute.PerforTotal * (empolyee.Scale ?? 1);
//应发管理绩效
compute.ShouldGiveFee = (compute.Efficiency + compute.Scale) * empolyee.Management;
compute.ShouldGiveFee = (compute.Efficiency + compute.Scale) * compute.Grant;
//绩效合计
compute.PerforSumFee = compute.Avg + compute.ShouldGiveFee;
//应发绩效
......
......@@ -275,26 +275,27 @@ public bool UseResult(int id)
return perbudgetresultRepository.Update(result);
}
public void GetAdjust(int allotId, ref decimal adjust)
public bool GetAdjustAndGrant(int allotId, ref decimal adjust, ref decimal grant)
{
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
if (allot == null) return;
if (allot == null) return false;
var result = perbudgetresultRepository.GetEntity(t => t.HospitalId == allot.HospitalId && t.Year == allot.Year && t.Month == allot.Month);
if (result == null || result.States != 2) return;
if (result == null || result.States != 2) return false;
adjust = result.Adjust.Value;
grant = result.Grant.Value;
return true;
}
public void GetGrant(int allotId, ref decimal grant)
public bool GetAdjustAndGrant(per_allot allot, ref decimal adjust, ref decimal grant)
{
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
if (allot == null) return;
var result = perbudgetresultRepository.GetEntity(t => t.HospitalId == allot.HospitalId && t.Year == allot.Year && t.Month == allot.Month);
if (result == null || result.States != 2) return;
if (result == null || result.States != 2) return false;
adjust = result.Adjust.Value;
grant = result.Grant.Value;
return true;
}
}
}
......@@ -19,17 +19,20 @@ public class ComputeDirector : IAutoInjection
private readonly PerforCofdirectorRepository perforCofdirectorRepository;
private readonly PerforCofworkyearRepository perforCofworkyearRepository;
private readonly PerforResaccountRepository perforResaccountRepository;
private readonly BudgetService budgetService;
//private readonly PerforResaccountdoctorRepository perforResAccountdoctorRepository;
public ComputeDirector(BaiscNormService baiscNormService,
PerforCofdirectorRepository perforCofdirectorRepository,
PerforCofworkyearRepository perforCofworkyearRepository,
PerforResaccountRepository perforResaccountRepository)
PerforResaccountRepository perforResaccountRepository,
BudgetService budgetService)
{
this.baiscNormService = baiscNormService;
this.perforCofdirectorRepository = perforCofdirectorRepository;
this.perforCofworkyearRepository = perforCofworkyearRepository;
this.perforResaccountRepository = perforResaccountRepository;
this.budgetService = budgetService;
}
#region 老版计算
......@@ -292,6 +295,10 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
}
List<ComputeResult> computeList = new List<ComputeResult>();
var adjust = 1m;
var grant = 1m;
var isBudget = budgetService.GetAdjustAndGrant(allot, ref adjust, ref grant);
var empDis = empolyeeList.Select(w => new { w.DoctorName, w.JobNumber }).Distinct();
foreach (var emp in empDis)
{
......@@ -338,7 +345,6 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
var efficiency = avg * (empolyee.Efficiency ?? 1);
var scale = resAccount.PerforTotal * (empolyee.Scale ?? 1);
var compute = new ComputeResult
{
UnitType = basicRule.UnitType.ToString(),
......@@ -359,9 +365,9 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
Avg = avg,
Efficiency = effAvg * (empolyee.Efficiency ?? 1),
Scale = resAccount.PerforTotal * (empolyee.Scale ?? 1),
Adjust = empolyee.Adjust,
Adjust = isBudget ? adjust : empolyee.Adjust,
Remark = empolyees.Count() > 1 ? "特殊科室主任,共用核算单元" : "",
Grant = empolyee.Management,
Grant = isBudget ? grant : empolyee.Management,
ManagerNumber = resAccount.ManagerNumber,
MedicalNumber = resAccount.Number,
PermanentStaff = resAccount.PermanentStaff,
......@@ -404,16 +410,21 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
if (!needCompute.Any()) return computeList;
decimal adjust = 1m;
decimal grant = 1m;
var isBudget = budgetService.GetAdjustAndGrant(allot, ref adjust, ref grant);
var perforTypeArray = EnumHelper.GetItems<PerforType>();
foreach (var item in needCompute)
{
var itemAdjust = isBudget ? adjust : item.Adjust;
var compute = new ComputeResult
{
AccountType = item.AccountType,
AccountingUnit = item.AccountingUnit,
EmployeeName = item.DoctorName,
FitPeople = item.FitPeople,
Grant = item.Management ?? 1,
Grant = isBudget ? grant : (item.Management ?? 1),
WorkTime = item.WorkTime,
PostCoefficient = item.PostCoefficient,
Attendance = item.Attendance,
......@@ -422,7 +433,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
OtherPerfor = item.OtherPerfor,
JobTitle = item.JobTitle,
JobNumber = item.JobNumber,
Adjust = item.Adjust,
Adjust = itemAdjust,
//Workload = item.Workload
};
......@@ -447,7 +458,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
compute.GiveFee = compute.BaiscNormValue * compute.PostCoefficient * (compute.WorkYear ?? 1) * compute.Attendance * compute.ScoreAverageRate
+ (compute.OtherPerfor ?? 0) + (compute.Punishment ?? 0);
//实发绩效
compute.RealGiveFee = compute.GiveFee * (item.Adjust ?? 1);
compute.RealGiveFee = compute.GiveFee * (itemAdjust ?? 1);
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