Commit e6ede3ac by ruyun.zhang@suvalue.com

Merge branch '夜班绩效' into v20201230yubei

parents 3cff38c8 c78dadec
......@@ -1101,6 +1101,11 @@
是否需要二次分配
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.NightShiftWorkPerforFee">
<summary>
夜班绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataClinicEmployee.UnitType">
<summary>
核算单元分类
......
......@@ -4420,6 +4420,11 @@
是否需要二次分配
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.NightShiftWorkPerforFee">
<summary>
夜班绩效
</summary>
</member>
<member name="T:Performance.EntityModels.res_accountdoctor">
<summary>
医生科室核算结果
......@@ -5175,6 +5180,11 @@
调节后其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.NightShiftWorkPerforFee">
<summary>
夜班绩效
</summary>
</member>
<member name="T:Performance.EntityModels.sys_extract">
<summary>
医院数据提取脚本
......
......@@ -237,6 +237,11 @@ public class PerDataAccountBaisc : IPerData
/// </summary>
public string NeedSecondAllot { get; set; }
/// <summary>
/// 夜班绩效
/// </summary>
public Nullable<decimal> NightShiftWorkPerforFee { get; set; }
#endregion 由计算得出
}
}
......@@ -105,5 +105,6 @@ public class ag_secondallot
/// 护理部备注
/// </summary>
public string NursingDeptRemark { get; set; }
public decimal? NightShiftWorkPerforFee { get; set; }
}
}
......@@ -192,5 +192,9 @@ public class res_account
/// 是否需要二次分配
/// </summary>
public string NeedSecondAllot { get; set; }
/// <summary>
/// 夜班绩效
/// </summary>
public Nullable<decimal> NightShiftWorkPerforFee { get; set; }
}
}
......@@ -131,5 +131,9 @@ public class res_specialunit
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 夜班绩效
/// </summary>
public Nullable<decimal> NightShiftWorkPerforFee { get; set; }
}
}
......@@ -268,6 +268,7 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, per_allot
var economicData = perSheet.FirstOrDefault(t => t.SheetType == SheetType.ComputeEconomic)?.PerData?.Select(t => (PerData)t);
var doctorWorkloadData = perSheet.FirstOrDefault(t => t.SheetType == SheetType.ComputeDoctorWorkload)?.PerData?.Select(t => (PerData)t);
var nurseWorkloadData = perSheet.FirstOrDefault(t => t.SheetType == SheetType.ComputeNurseWorkload)?.PerData?.Select(t => (PerData)t);
var accountExtraData = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.AccountExtra)?.PerData?.Select(t => (PerData)t);
var pairs = new[]
{
......@@ -301,7 +302,10 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, per_allot
}
if (UnitType.医技组 == unitType && workDoctor == null)
workDoctor = info.Data.FirstOrDefault(t => t.UnitType == UnitType.医生组.ToString() && t.AccountingUnit == dept.AccountingUnit);
// 夜班绩效 从医院奖罚的明细项中获取
var nightShift = accountExtraData.FirstOrDefault(w => w.UnitType == dept.UnitType && w.AccountingUnit == dept.AccountingUnit && w.TypeName?.Trim() == "夜班绩效")?.CellValue ?? 0;
dept.NightShiftWorkPerforFee = nightShift;
//dept.MedicineFactor = workDoctor?.MedicineFactor;
//dept.ScoringAverage = scoreAverage.HasValue ? scoreAverage ?? 0 : dept.ScoringAverage;
dept.ScoringAverage = dept.ScoringAverage;
......@@ -325,6 +329,7 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, per_allot
dept.RealGiveFee = Math.Round((dept.AssessLaterPerforTotal * dept.AdjustFactor + dept.AdjustLaterOtherFee) ?? 0);
//dept.Avg = dept.ManagerNumber + dept.Number == 0 ? 0 : dept.PerforTotal / (dept.ManagerNumber + dept.Number);
dept.Avg = dept.Number == 0 ? 0 : dept.PerforTotal / dept.Number;
}
sheet.PerData.AddRange(atDataList);
......
......@@ -136,6 +136,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
//取出科室
var accountList = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.AccountBasic)?.PerData?.Select(t => (PerDataAccountBaisc)t);
var accountExtraData = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.AccountExtra)?.PerData?.Select(t => (PerData)t);
List<res_specialunit> resDataList = new List<res_specialunit>();
......@@ -173,6 +174,9 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
//var materialsExtra = materialsExtras?.FirstOrDefault(w => w.UnitType == UnitType.特殊核算组.ToString() && w.AccountingUnit == dept?.AccountingUnit)?.TotelValue;
//var scoreAverage = accountScoreAverages?.FirstOrDefault(w => w.UnitType == UnitType.特殊核算组.ToString() && w.AccountingUnit == dept?.AccountingUnit)?.TotelValue;
// 夜班绩效 从医院奖罚的明细项中获取
var nightShift = accountExtraData.FirstOrDefault(w => w.UnitType == dept.UnitType && w.AccountingUnit == dept.AccountingUnit && w.TypeName?.Trim() == "夜班绩效")?.CellValue ?? 0;
decimal? headcount = null;
if (typeList.Any(o => o.Description == item.QuantitativeIndicators))
headcount = group.Number;
......@@ -207,6 +211,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
AssessBeforeOtherFee = dept?.AssessBeforeOtherFee ?? 0,
AssessLaterOtherFee = dept?.AssessLaterOtherFee ?? 0,
AdjustLaterOtherFee = dept?.AdjustLaterOtherFee ?? 0,
NightShiftWorkPerforFee = nightShift,
};
res.PerforTotal = (sumValue ?? 0) + res.AssessBeforeOtherFee;
res.GiveFee = Math.Round(res.PerforTotal + res.AssessLaterOtherFee ?? 0);
......@@ -541,6 +546,7 @@ public void GenerateSecondAllot(per_allot allot)
Month = allot.Month,
UnitType = ((UnitType)item.UnitType).ToString(),
Department = item.AccountingUnit,
NightShiftWorkPerforFee = item.NightShiftWorkPerforFee,
RealGiveFee = item.RealGiveFee,
});
}
......@@ -548,7 +554,7 @@ public void GenerateSecondAllot(per_allot allot)
}
if (specialList != null)
{
foreach (var item in specialList.Select(w => new { w.AccountingUnit, w.RealGiveFee }).Distinct())
foreach (var item in specialList.Select(w => new { w.AccountingUnit, w.NightShiftWorkPerforFee, w.RealGiveFee }).Distinct())
{
if (!tempSecond.Any(f => f.UnitType == UnitType.特殊核算组.ToString() && f.Department == item.AccountingUnit))
{
......@@ -559,6 +565,7 @@ public void GenerateSecondAllot(per_allot allot)
Month = allot.Month,
UnitType = UnitType.特殊核算组.ToString(),
Department = item.AccountingUnit,
NightShiftWorkPerforFee = item.NightShiftWorkPerforFee,
RealGiveFee = item.RealGiveFee,
});
}
......@@ -580,13 +587,16 @@ public void GenerateSecondAllot(per_allot allot)
UnitType = item.UnitType,
Department = item.Department,
RealGiveFee = item.RealGiveFee,
NightShiftWorkPerforFee = item.NightShiftWorkPerforFee,
Status = 1,
NursingDeptStatus = 1,
});
}
else
{
if (Math.Abs((second.RealGiveFee ?? 0) - (item.RealGiveFee ?? 0)) >= 0.5m && second.Status > 1)
var backResult = Math.Abs((second.RealGiveFee ?? 0) - (item.RealGiveFee ?? 0)) >= 0.5m
|| Math.Abs((second.NightShiftWorkPerforFee ?? 0) - (item.NightShiftWorkPerforFee ?? 0)) >= 0.5m;
if (backResult && second.Status > 1)
{
second.Status = 4;
second.Remark = "科室绩效结果发生变更,需要重新提交";
......
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