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

parent 6f9c6770
......@@ -550,6 +550,11 @@
工号
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.IncludeAvgCalculate">
<summary>
是否带入平均计算 是 否
</summary>
</member>
<member name="T:Performance.DtoModels.UnitType">
<summary> 核算单元类型 </summary>
</member>
......@@ -724,6 +729,16 @@
科室名称
</summary>
</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">
<summary>
科主任/护士长数量
......
......@@ -1393,6 +1393,16 @@
科室
</summary>
</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">
<summary>
科主任数量
......@@ -2508,6 +2518,16 @@
科室
</summary>
</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">
<summary>
科主任/护士长数量
......
......@@ -131,7 +131,9 @@ public class ComputeResult
public decimal? Adjust { get; set; }
public string UnitType { get; set; }
public string Remark { get; set; }
/// <summary>
/// 工号
/// </summary>
......
......@@ -34,6 +34,11 @@ public class PerDataAccountBaisc : IPerData
public string Department { get; set; }
/// <summary>
/// 定科人数
/// </summary>
public decimal PermanentStaff { get; set; }
/// <summary>
/// 科主任/护士长数量
/// </summary>
public decimal ManagerNumber { get; set; }
......
......@@ -50,7 +50,12 @@ public class im_accountbasic
/// 科室
/// </summary>
public string Department { get; set; }
/// <summary>
/// 定科人数
/// </summary>
public Nullable<decimal> PermanentStaff { get; set; }
/// <summary>
/// 科主任数量
/// </summary>
......
......@@ -45,6 +45,11 @@ public class res_account
/// 科室
/// </summary>
public string Department { get; set; }
/// <summary>
/// 定科人数
/// </summary>
public Nullable<decimal> PermanentStaff { get; set; }
/// <summary>
/// 科主任/护士长数量
......
......@@ -89,16 +89,18 @@ public List<res_baiscnorm> ComputeOtherAvg(List<res_baiscnorm> baiscnormList, Li
decimal? result = null;
if (type == PerforType.临床主任护士长平均)
{
var lczrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.临床主任))?.AvgValue;
var hszValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.护士长))?.AvgValue;
result = ((lczrValue ?? 0) + (hszValue ?? 0)) / 2;
var lczrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.临床主任));
var hszValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.护士长));
var total = ((lczrValue?.TotelNumber ?? 0) + (hszValue?.TotelNumber ?? 0));
result = total == 0 ? 0 : ((lczrValue?.TotelValue ?? 0) + (hszValue?.TotelValue ?? 0)) / total;
}
else if (type == PerforType.临床主任医技主任护士长平均)
{
var lczrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.临床主任))?.AvgValue;
var yjzrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.医技主任))?.AvgValue;
var hszValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.护士长))?.AvgValue;
result = ((lczrValue ?? 0) + (yjzrValue ?? 0) + (hszValue ?? 0)) / 3;
var lczrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.临床主任));
var yjzrValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.医技主任));
var hszValue = baiscnorms.FirstOrDefault(t => t.PositionName == EnumHelper.GetDescription(PerforType.护士长));
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
{
......
......@@ -293,8 +293,9 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, List<res_
dept.ScoringAverage = dept.ScoringAverage == 0m ? 1 : dept.ScoringAverage;
dept.AdjustFactor = dept.AdjustFactor == 0m ? 1 : dept.AdjustFactor;
dept.WorkSlopeFactor = dept.WorkSlopeFactor == 0m ? 1 : dept.WorkSlopeFactor;
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.PerforTotal = dept.PerforFee + dept.WorkloadFee + dept.OtherPerfor1 + (dept.MinimumFee ?? 0);
dept.RealGiveFee = (dept.PerforTotal * dept.ScoringAverage + dept.Extra + dept.OtherPerfor2) * dept.AdjustFactor;
......@@ -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;
cofs.Add(new CofDrugProp { AccoutingUnit = unit, Factor = fvalue, Prop = prop });
}
return cofs;
return cofs;
}
#endregion
}
......
......@@ -185,54 +185,57 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
}
var empolyee = computeEmployees.FirstOrDefault(t => t.AccountingUnit == group.AccountingUnit);
if (empolyee == null)
var empolyees = computeEmployees.Where(t => t.AccountingUnit == group.AccountingUnit);
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(),
DoctorName = "人员信息缺失",
FitPeople = "",
ScoreAverageRate = 1,
Punishment = 0,
OtherPerfor = 0,
Adjust = 1,
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 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);
computes.ForEach(t => t.AllotID = allot.ID);
......
......@@ -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.AccountingUnit = 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.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);
......
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