调节系数

parent c4e34666
...@@ -16,6 +16,7 @@ namespace Performance.Services.AllotCompute ...@@ -16,6 +16,7 @@ namespace Performance.Services.AllotCompute
/// </summary> /// </summary>
public class ProcessComputService : IAutoInjection public class ProcessComputService : IAutoInjection
{ {
private readonly BudgetService _budgetService;
private PerforCofincomeRepository perforCofincomeRepository; private PerforCofincomeRepository perforCofincomeRepository;
private PerforCofdrugpropRepository perforCofdrugpropRepository; private PerforCofdrugpropRepository perforCofdrugpropRepository;
private PerforPersheetRepository perforPerSheetRepository; private PerforPersheetRepository perforPerSheetRepository;
...@@ -33,7 +34,9 @@ public class ProcessComputService : IAutoInjection ...@@ -33,7 +34,9 @@ public class ProcessComputService : IAutoInjection
private readonly PerforHospitalRepository hospitalRepository; private readonly PerforHospitalRepository hospitalRepository;
private readonly PerforPerallotRepository perallotRepository; private readonly PerforPerallotRepository perallotRepository;
public ProcessComputService(PerforCofincomeRepository perforCofincomeRepository, public ProcessComputService(
BudgetService budgetService,
PerforCofincomeRepository perforCofincomeRepository,
PerforCofdrugpropRepository perforCofdrugpropRepository, PerforCofdrugpropRepository perforCofdrugpropRepository,
PerforPersheetRepository perforPerSheetRepository, PerforPersheetRepository perforPerSheetRepository,
PerforImdataRepository perforImDataRepository, PerforImdataRepository perforImDataRepository,
...@@ -50,6 +53,7 @@ public class ProcessComputService : IAutoInjection ...@@ -50,6 +53,7 @@ public class ProcessComputService : IAutoInjection
PerforHospitalRepository hospitalRepository, PerforHospitalRepository hospitalRepository,
PerforPerallotRepository perallotRepository) PerforPerallotRepository perallotRepository)
{ {
_budgetService = budgetService;
this.perforCofincomeRepository = perforCofincomeRepository; this.perforCofincomeRepository = perforCofincomeRepository;
this.perforCofdrugpropRepository = perforCofdrugpropRepository; this.perforCofdrugpropRepository = perforCofdrugpropRepository;
this.perforPerSheetRepository = perforPerSheetRepository; this.perforPerSheetRepository = perforPerSheetRepository;
...@@ -261,7 +265,7 @@ public void Save(List<PerSheet> perSheets, int allotId) ...@@ -261,7 +265,7 @@ public void Save(List<PerSheet> perSheets, int allotId)
/// <param name="perSheet"></param> /// <param name="perSheet"></param>
/// <returns></returns> /// <returns></returns>
/// ///
public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet) public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, per_allot allot)
{ {
var accountList = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.AccountBasic)?.PerData?.Select(t => (PerDataAccountBaisc)t); var accountList = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.AccountBasic)?.PerData?.Select(t => (PerDataAccountBaisc)t);
var economicData = perSheet.FirstOrDefault(t => t.SheetType == SheetType.ComputeEconomic)?.PerData?.Select(t => (PerData)t); var economicData = perSheet.FirstOrDefault(t => t.SheetType == SheetType.ComputeEconomic)?.PerData?.Select(t => (PerData)t);
...@@ -275,6 +279,7 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet) ...@@ -275,6 +279,7 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet)
new { Name = "护理组临床科室单元核算表", Data = nurseWorkloadData, SheetType = SheetType.ComputeNurseAccount, new { Name = "护理组临床科室单元核算表", Data = nurseWorkloadData, SheetType = SheetType.ComputeNurseAccount,
UnitTypes = new List<UnitType> { UnitType.护理组, UnitType.其他护理组 } }, UnitTypes = new List<UnitType> { UnitType.护理组, UnitType.其他护理组 } },
}; };
var isBudget = _budgetService.GetAdjustAndGrant(allot, out decimal adjust, out decimal grant);
List<PerSheet> result = new List<PerSheet>(); List<PerSheet> result = new List<PerSheet>();
foreach (var info in pairs) foreach (var info in pairs)
{ {
...@@ -303,7 +308,7 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet) ...@@ -303,7 +308,7 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet)
dept.MedicineFactor = workDoctor?.MedicineFactor; dept.MedicineFactor = workDoctor?.MedicineFactor;
//dept.ScoringAverage = scoreAverage.HasValue ? scoreAverage ?? 0 : dept.ScoringAverage; //dept.ScoringAverage = scoreAverage.HasValue ? scoreAverage ?? 0 : dept.ScoringAverage;
dept.ScoringAverage = dept.ScoringAverage; dept.ScoringAverage = dept.ScoringAverage;
dept.AdjustFactor = dept.AdjustFactor == 0m ? 0 : dept.AdjustFactor; dept.AdjustFactor = (isBudget ? adjust : dept?.AdjustFactor) ?? 1;
dept.Income = econDoctor?.CellValue ?? 0; dept.Income = econDoctor?.CellValue ?? 0;
dept.WorkloadFee = workDoctor?.CellValue ?? 0; dept.WorkloadFee = workDoctor?.CellValue ?? 0;
dept.AssessBeforeOtherFee = dept?.AssessBeforeOtherFee ?? 0; dept.AssessBeforeOtherFee = dept?.AssessBeforeOtherFee ?? 0;
...@@ -353,6 +358,7 @@ public void ComputeOffice(per_allot allot, PerExcel excel) ...@@ -353,6 +358,7 @@ public void ComputeOffice(per_allot allot, PerExcel excel)
List<PerDataAccountBaisc> perDatas = new List<PerDataAccountBaisc>(); List<PerDataAccountBaisc> perDatas = new List<PerDataAccountBaisc>();
// 取出科室 // 取出科室
var dataList = empolyeeList.Select(w => new { w.AccountType, w.AccountingUnit }).Distinct(); var dataList = empolyeeList.Select(w => new { w.AccountType, w.AccountingUnit }).Distinct();
var isBudget = _budgetService.GetAdjustAndGrant(allot, out decimal adjust, out decimal grant);
foreach (var account in dataList) foreach (var account in dataList)
{ {
...@@ -372,7 +378,7 @@ public void ComputeOffice(per_allot allot, PerExcel excel) ...@@ -372,7 +378,7 @@ public void ComputeOffice(per_allot allot, PerExcel excel)
dept.AccountingUnit = account.AccountingUnit; dept.AccountingUnit = account.AccountingUnit;
dept.UnitType = account.AccountType; dept.UnitType = account.AccountType;
dept.ScoringAverage = resAccount?.ScoringAverage == null ? 0 : resAccount.ScoringAverage; dept.ScoringAverage = resAccount?.ScoringAverage == null ? 0 : resAccount.ScoringAverage;
dept.AdjustFactor = resAccount?.AdjustFactor == null ? 0 : resAccount.AdjustFactor; dept.AdjustFactor = (isBudget ? adjust : resAccount?.AdjustFactor) ?? 1;
dept.Income = empolyees.Sum(w => w.PerforTotal ?? 0); dept.Income = empolyees.Sum(w => w.PerforTotal ?? 0);
//dept.Extra = (extra ?? 0); //dept.Extra = (extra ?? 0);
//dept.MedicineExtra = 0;// (drugExtra ?? 0); //dept.MedicineExtra = 0;// (drugExtra ?? 0);
......
...@@ -204,7 +204,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -204,7 +204,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
MedicineExtra = dept?.MedicineExtra ?? 0, MedicineExtra = dept?.MedicineExtra ?? 0,
MaterialsExtra = dept?.MaterialsExtra ?? 0, MaterialsExtra = dept?.MaterialsExtra ?? 0,
Adjust = isBudget ? adjust : (dept?.AdjustFactor ?? 1), Adjust = (isBudget ? adjust : dept?.AdjustFactor) ?? 1,
AssessBeforeOtherFee = dept?.AssessBeforeOtherFee ?? 0, AssessBeforeOtherFee = dept?.AssessBeforeOtherFee ?? 0,
AssessLaterOtherFee = dept?.AssessLaterOtherFee ?? 0, AssessLaterOtherFee = dept?.AssessLaterOtherFee ?? 0,
......
...@@ -381,7 +381,7 @@ public void Generate(per_allot allot, string mail) ...@@ -381,7 +381,7 @@ public void Generate(per_allot allot, string mail)
//重新计算科室业绩(含所有提供保底金额) //重新计算科室业绩(含所有提供保底金额)
logManageService.WriteMsg("正在生成绩效", "计算科室业绩分", 1, allot.ID, "ReceiveMessage", true); logManageService.WriteMsg("正在生成绩效", "计算科室业绩分", 1, allot.ID, "ReceiveMessage", true);
var sheetLast = processComputService.Compute(excel, mergeSheets); var sheetLast = processComputService.Compute(excel, mergeSheets, allot);
//保存计算过程数据 //保存计算过程数据
logManageService.WriteMsg("正在生成绩效", "保存科室业绩结果及计算过程中产生的数据", 1, allot.ID, "ReceiveMessage", true); logManageService.WriteMsg("正在生成绩效", "保存科室业绩结果及计算过程中产生的数据", 1, allot.ID, "ReceiveMessage", true);
......
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