东方医院11月核对修改完结

parent 6f9c6770
...@@ -550,6 +550,11 @@ ...@@ -550,6 +550,11 @@
工号 工号
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.ComputeResult.IncludeAvgCalculate">
<summary>
是否带入平均计算 是 否
</summary>
</member>
<member name="T:Performance.DtoModels.UnitType"> <member name="T:Performance.DtoModels.UnitType">
<summary> 核算单元类型 </summary> <summary> 核算单元类型 </summary>
</member> </member>
...@@ -724,6 +729,16 @@ ...@@ -724,6 +729,16 @@
科室名称 科室名称
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.IncludeAvgCalculate">
<summary>
是否带入平均计算 是 否
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.PermanentStaff">
<summary>
定科人数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.ManagerNumber"> <member name="P:Performance.DtoModels.PerDataAccountBaisc.ManagerNumber">
<summary> <summary>
科主任/护士长数量 科主任/护士长数量
......
...@@ -1393,6 +1393,16 @@ ...@@ -1393,6 +1393,16 @@
科室 科室
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.im_accountbasic.IncludeAvgCalculate">
<summary>
是否带入平均计算 是 否
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.PermanentStaff">
<summary>
定科人数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorDirectorNumber"> <member name="P:Performance.EntityModels.im_accountbasic.DoctorDirectorNumber">
<summary> <summary>
科主任数量 科主任数量
...@@ -2508,6 +2518,16 @@ ...@@ -2508,6 +2518,16 @@
科室 科室
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.res_account.IncludeAvgCalculate">
<summary>
是否带入平均计算 是 否
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.PermanentStaff">
<summary>
定科人数
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.ManagerNumber"> <member name="P:Performance.EntityModels.res_account.ManagerNumber">
<summary> <summary>
科主任/护士长数量 科主任/护士长数量
......
...@@ -131,7 +131,9 @@ public class ComputeResult ...@@ -131,7 +131,9 @@ public class ComputeResult
public decimal? Adjust { get; set; } public decimal? Adjust { get; set; }
public string UnitType { get; set; } public string UnitType { get; set; }
public string Remark { get; set; } public string Remark { get; set; }
/// <summary> /// <summary>
/// 工号 /// 工号
/// </summary> /// </summary>
......
...@@ -34,6 +34,11 @@ public class PerDataAccountBaisc : IPerData ...@@ -34,6 +34,11 @@ public class PerDataAccountBaisc : IPerData
public string Department { get; set; } public string Department { get; set; }
/// <summary> /// <summary>
/// 定科人数
/// </summary>
public decimal PermanentStaff { get; set; }
/// <summary>
/// 科主任/护士长数量 /// 科主任/护士长数量
/// </summary> /// </summary>
public decimal ManagerNumber { get; set; } public decimal ManagerNumber { get; set; }
......
...@@ -50,7 +50,12 @@ public class im_accountbasic ...@@ -50,7 +50,12 @@ public class im_accountbasic
/// 科室 /// 科室
/// </summary> /// </summary>
public string Department { get; set; } public string Department { get; set; }
/// <summary>
/// 定科人数
/// </summary>
public Nullable<decimal> PermanentStaff { get; set; }
/// <summary> /// <summary>
/// 科主任数量 /// 科主任数量
/// </summary> /// </summary>
......
...@@ -45,6 +45,11 @@ public class res_account ...@@ -45,6 +45,11 @@ public class res_account
/// 科室 /// 科室
/// </summary> /// </summary>
public string Department { get; set; } public string Department { get; set; }
/// <summary>
/// 定科人数
/// </summary>
public Nullable<decimal> PermanentStaff { get; set; }
/// <summary> /// <summary>
/// 科主任/护士长数量 /// 科主任/护士长数量
......
...@@ -89,16 +89,18 @@ public List<res_baiscnorm> ComputeOtherAvg(List<res_baiscnorm> baiscnormList, Li ...@@ -89,16 +89,18 @@ public List<res_baiscnorm> ComputeOtherAvg(List<res_baiscnorm> baiscnormList, Li
decimal? result = null; decimal? result = null;
if (type == PerforType.临床主任护士长平均) if (type == PerforType.临床主任护士长平均)
{ {
var lczrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.临床主任))?.AvgValue; var lczrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.临床主任));
var hszValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.护士长))?.AvgValue; var hszValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.护士长));
result = ((lczrValue ?? 0) + (hszValue ?? 0)) / 2; var total = ((lczrValue?.TotelNumber ?? 0) + (hszValue?.TotelNumber ?? 0));
result = total == 0 ? 0 : ((lczrValue?.TotelValue ?? 0) + (hszValue?.TotelValue ?? 0)) / total;
} }
else if (type == PerforType.临床主任医技主任护士长平均) else if (type == PerforType.临床主任医技主任护士长平均)
{ {
var lczrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.临床主任))?.AvgValue; var lczrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.临床主任));
var yjzrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.医技主任))?.AvgValue; var yjzrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.医技主任));
var hszValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.护士长))?.AvgValue; var hszValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.护士长));
result = ((lczrValue ?? 0) + (yjzrValue ?? 0) + (hszValue ?? 0)) / 3; var total = ((lczrValue?.TotelNumber ?? 0) + (yjzrValue?.TotelNumber ?? 0) + (hszValue?.TotelNumber ?? 0));
result = total == 0 ? 0 : ((lczrValue?.TotelValue ?? 0) + (yjzrValue?.TotelValue ?? 0) + (hszValue?.TotelValue ?? 0)) / total;
} }
else else
{ {
......
...@@ -293,8 +293,9 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, List<res_ ...@@ -293,8 +293,9 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, List<res_
dept.ScoringAverage = dept.ScoringAverage == 0m ? 1 : dept.ScoringAverage; dept.ScoringAverage = dept.ScoringAverage == 0m ? 1 : dept.ScoringAverage;
dept.AdjustFactor = dept.AdjustFactor == 0m ? 1 : dept.AdjustFactor; dept.AdjustFactor = dept.AdjustFactor == 0m ? 1 : dept.AdjustFactor;
dept.WorkSlopeFactor = dept.WorkSlopeFactor == 0m ? 1 : dept.WorkSlopeFactor;
dept.Income = econDoctor?.CellValue ?? 0; dept.Income = econDoctor?.CellValue ?? 0;
dept.WorkloadFee = workDoctor?.CellValue ?? 0; dept.WorkloadFee = dept.WorkSlopeFactor * (workDoctor?.CellValue ?? 0);
dept.PerforFee = dept.Income * (dept.BasicFactor + dept.SlopeFactor); dept.PerforFee = dept.Income * (dept.BasicFactor + dept.SlopeFactor);
dept.PerforTotal = dept.PerforFee + dept.WorkloadFee + dept.OtherPerfor1 + (dept.MinimumFee ?? 0); dept.PerforTotal = dept.PerforFee + dept.WorkloadFee + dept.OtherPerfor1 + (dept.MinimumFee ?? 0);
dept.RealGiveFee = (dept.PerforTotal * dept.ScoringAverage + dept.Extra + dept.OtherPerfor2) * dept.AdjustFactor; dept.RealGiveFee = (dept.PerforTotal * dept.ScoringAverage + dept.Extra + dept.OtherPerfor2) * dept.AdjustFactor;
...@@ -526,7 +527,7 @@ private List<CofDrugProp> GetDrugConfig(PerExcel excel, int allotid) ...@@ -526,7 +527,7 @@ private List<CofDrugProp> GetDrugConfig(PerExcel excel, int allotid)
var fvalue = cofList.FirstOrDefault(t => prop > t.MinRange && prop <= t.MaxRange)?.Value ?? 0; var fvalue = cofList.FirstOrDefault(t => prop > t.MinRange && prop <= t.MaxRange)?.Value ?? 0;
cofs.Add(new CofDrugProp { AccoutingUnit = unit, Factor = fvalue, Prop = prop }); cofs.Add(new CofDrugProp { AccoutingUnit = unit, Factor = fvalue, Prop = prop });
} }
return cofs; return cofs;
} }
#endregion #endregion
} }
......
...@@ -185,54 +185,57 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -185,54 +185,57 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
} }
var empolyee = computeEmployees.FirstOrDefault(t => t.AccountingUnit == group.AccountingUnit); var empolyees = computeEmployees.Where(t => t.AccountingUnit == group.AccountingUnit);
if (empolyee == null) foreach (var empolyee in empolyees)
{ {
empolyee = new ComputeEmployee //if (empolyee == null)
//{
// empolyee = new ComputeEmployee
// {
// AccountType = AccountUnitType.科主任.ToString(),
// DoctorName = "人员信息缺失",
// FitPeople = "",
// ScoreAverageRate = 1,
// Punishment = 0,
// OtherPerfor = 0,
// Adjust = 1,
// };
//}
var compute = new ComputeResult
{ {
UnitType = UnitType.特殊核算组.ToString(),
AccountingUnit = group.AccountingUnit,
AccountType = AccountUnitType.科主任.ToString(), AccountType = AccountUnitType.科主任.ToString(),
DoctorName = "人员信息缺失", EmployeeName = empolyee.DoctorName,
FitPeople = "", FitPeople = empolyee.FitPeople,
ScoreAverageRate = 1, JobTitle = empolyee.JobTitle,
Punishment = 0,
OtherPerfor = 0, ScoreAverageRate = empolyee.ScoreAverageRate,
Adjust = 1, Punishment = empolyee.Punishment,
OtherPerfor = empolyee.OtherPerfor,
Number = group.Number,
PerforTotal = sumValue,
Avg = group.Number == 0 ? 0 : (sumValue / group.Number),
Adjust = empolyee.Adjust
}; };
compute.Efficiency = compute.Avg * (empolyee.Efficiency ?? 1);
compute.Scale = compute.PerforTotal * (empolyee.Scale ?? 1);
//应发管理绩效
compute.ShouldGiveFee = (compute.Efficiency + compute.Scale) * empolyee.Management;
//绩效合计
compute.PerforSumFee = compute.Avg + compute.ShouldGiveFee;
//应发绩效
compute.GiveFee = compute.PerforSumFee;
//实发绩效
compute.RealGiveFee = (compute.GiveFee * compute.ScoreAverageRate + (compute.Punishment ?? 0) + (compute.OtherPerfor ?? 0)) * (compute.Adjust ?? 1m);
// 参考基数专用绩效合计
compute.BaiscNormPerforTotal = compute.RealGiveFee;
computeList.Add(compute);
} }
var compute = new ComputeResult
{
UnitType = UnitType.特殊核算组.ToString(),
AccountingUnit = group.AccountingUnit,
AccountType = AccountUnitType.科主任.ToString(),
EmployeeName = empolyee.DoctorName,
FitPeople = empolyee.FitPeople,
JobTitle = empolyee.JobTitle,
ScoreAverageRate = empolyee.ScoreAverageRate,
Punishment = empolyee.Punishment,
OtherPerfor = empolyee.OtherPerfor,
Number = group.Number,
PerforTotal = sumValue,
Avg = group.Number == 0 ? 0 : (sumValue / group.Number),
Adjust = empolyee.Adjust
};
compute.Efficiency = compute.Avg * (empolyee.Efficiency ?? 1);
compute.Scale = compute.PerforTotal * (empolyee.Scale ?? 1);
//应发管理绩效
compute.ShouldGiveFee = (compute.Efficiency + compute.Scale) * empolyee.Management;
//绩效合计
compute.PerforSumFee = compute.Avg + compute.ShouldGiveFee;
//应发绩效
compute.GiveFee = compute.PerforSumFee;
//实发绩效
compute.RealGiveFee = (compute.GiveFee * compute.ScoreAverageRate + (compute.Punishment ?? 0) + (compute.OtherPerfor ?? 0)) * (compute.Adjust ?? 1m);
// 参考基数专用绩效合计
compute.BaiscNormPerforTotal = compute.RealGiveFee;
computeList.Add(compute);
} }
var computes = Mapper.Map<List<res_compute>>(computeList); var computes = Mapper.Map<List<res_compute>>(computeList);
computes.ForEach(t => t.AllotID = allot.ID); computes.ForEach(t => t.AllotID = allot.ID);
......
...@@ -35,6 +35,7 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader) ...@@ -35,6 +35,7 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
unifyUnit.UnitType = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元类型").PointCell)?.StringCellValue; unifyUnit.UnitType = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元类型").PointCell)?.StringCellValue;
unifyUnit.AccountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元").PointCell)?.StringCellValue; unifyUnit.AccountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元").PointCell)?.StringCellValue;
unifyUnit.Department = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科室名称").PointCell)?.StringCellValue; unifyUnit.Department = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科室名称").PointCell)?.StringCellValue;
unifyUnit.PermanentStaff = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "效率绩效人数").PointCell)?.NumericCellValue);
unifyUnit.ManagerNumber = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科主任/护士长人数").PointCell)?.NumericCellValue); unifyUnit.ManagerNumber = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科主任/护士长人数").PointCell)?.NumericCellValue);
unifyUnit.Number = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元人员数量").PointCell)?.NumericCellValue); unifyUnit.Number = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元人员数量").PointCell)?.NumericCellValue);
unifyUnit.BasicFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "预算比例").PointCell)?.NumericCellValue); unifyUnit.BasicFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "预算比例").PointCell)?.NumericCellValue);
......
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