Commit a9e8f4f4 by 李承祥

更改效率、规模系数来源

parent 3e4c46bf
...@@ -400,6 +400,26 @@ ...@@ -400,6 +400,26 @@
调节系数 调节系数
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.ComputeEmployee.UnitType">
<summary>
核算单元分类
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.Efficiency">
<summary>
效率绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.Scale">
<summary>
规模绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.Management">
<summary>
管理绩效发放系数
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.AccountType"> <member name="P:Performance.DtoModels.ComputeResult.AccountType">
<summary> <summary>
科室类别(例如 医技科室 临床科室 其他科室) 科室类别(例如 医技科室 临床科室 其他科室)
...@@ -1006,6 +1026,21 @@ ...@@ -1006,6 +1026,21 @@
调节系数 调节系数
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.Efficiency">
<summary>
效率绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.Scale">
<summary>
规模绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.Management">
<summary>
管理绩效发放系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerHeader.SignID"> <member name="P:Performance.DtoModels.PerHeader.SignID">
<summary> <summary>
唯一标准 唯一标准
......
...@@ -2974,6 +2974,11 @@ ...@@ -2974,6 +2974,11 @@
实发绩效 实发绩效
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.res_specialunit.ResultsTotalFee">
<summary>
业绩总绩效
</summary>
</member>
<member name="T:Performance.EntityModels.sys_extract"> <member name="T:Performance.EntityModels.sys_extract">
<summary> <summary>
医院数据提取脚本 医院数据提取脚本
......
...@@ -194,6 +194,8 @@ public AutoMapperConfigs() ...@@ -194,6 +194,8 @@ public AutoMapperConfigs()
CreateMap<ag_secondallot, SecondListResponse>().ReverseMap(); CreateMap<ag_secondallot, SecondListResponse>().ReverseMap();
CreateMap<im_employee_clinic, PerDataClinicEmployee>().ReverseMap(); CreateMap<im_employee_clinic, PerDataClinicEmployee>().ReverseMap();
CreateMap<im_employee_clinic, ComputeEmployee>().ReverseMap();
} }
} }
} }
...@@ -95,5 +95,25 @@ public class ComputeEmployee ...@@ -95,5 +95,25 @@ public class ComputeEmployee
///// 发放系数 ///// 发放系数
///// </summary> ///// </summary>
//public Nullable<decimal> Grant { get; set; } //public Nullable<decimal> Grant { get; set; }
/// <summary>
/// 核算单元分类
/// </summary>
public string UnitType { get; set; }
/// <summary>
/// 效率绩效系数
/// </summary>
public Nullable<decimal> Efficiency { get; set; }
/// <summary>
/// 规模绩效系数
/// </summary>
public Nullable<decimal> Scale { get; set; }
/// <summary>
/// 管理绩效发放系数
/// </summary>
public Nullable<decimal> Management { get; set; }
} }
} }
...@@ -56,5 +56,20 @@ public class PerDataSpecialUnit : IPerData ...@@ -56,5 +56,20 @@ public class PerDataSpecialUnit : IPerData
/// </summary> /// </summary>
public Nullable<decimal> Adjust { get; set; } public Nullable<decimal> Adjust { get; set; }
public int RowNumber { get; set; } public int RowNumber { get; set; }
/// <summary>
/// 效率绩效系数
/// </summary>
public Nullable<decimal> Efficiency { get; set; }
/// <summary>
/// 规模绩效系数
/// </summary>
public Nullable<decimal> Scale { get; set; }
/// <summary>
/// 管理绩效发放系数
/// </summary>
public Nullable<decimal> Management { get; set; }
} }
} }
...@@ -95,5 +95,10 @@ public class res_specialunit ...@@ -95,5 +95,10 @@ public class res_specialunit
/// 实发绩效 /// 实发绩效
/// </summary> /// </summary>
public Nullable<decimal> RealGiveFee { get; set; } public Nullable<decimal> RealGiveFee { get; set; }
/// <summary>
/// 业绩总绩效
/// </summary>
public Nullable<decimal> ResultsTotalFee { get; set; }
} }
} }
...@@ -22,6 +22,7 @@ public int DeleteData(int allotId) ...@@ -22,6 +22,7 @@ public int DeleteData(int allotId)
"im_accountbasic", "im_accountbasic",
"im_data", "im_data",
"im_employee", "im_employee",
"im_employee_clinic",
"im_header", "im_header",
"im_specialunit", "im_specialunit",
"per_sheet", "per_sheet",
......
...@@ -526,7 +526,7 @@ private List<CofDrugProp> GetDrugConfig(PerExcel excel, int allotid) ...@@ -526,7 +526,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
} }
......
...@@ -23,6 +23,7 @@ public class ResultComputeService : IAutoInjection ...@@ -23,6 +23,7 @@ public class ResultComputeService : IAutoInjection
private readonly PerforResspecialunitRepository perforResspecialunitRepository; private readonly PerforResspecialunitRepository perforResspecialunitRepository;
private readonly PerforImaccountbasicRepository perforImaccountbasicRepository; private readonly PerforImaccountbasicRepository perforImaccountbasicRepository;
private readonly LogManageService logManageService; private readonly LogManageService logManageService;
private readonly PerforImemployeeclinicRepository perforImemployeeclinicRepository;
public ResultComputeService( public ResultComputeService(
PerforImemployeeRepository perforImEmployeeRepository, PerforImemployeeRepository perforImEmployeeRepository,
...@@ -31,7 +32,8 @@ public class ResultComputeService : IAutoInjection ...@@ -31,7 +32,8 @@ public class ResultComputeService : IAutoInjection
PerforResspecialunitRepository perforResspecialunitRepository, PerforResspecialunitRepository perforResspecialunitRepository,
PerforImaccountbasicRepository perforImaccountbasicRepository, PerforImaccountbasicRepository perforImaccountbasicRepository,
BaiscNormService baiscNormService, ComputeDirector computeDirector, BaiscNormService baiscNormService, ComputeDirector computeDirector,
LogManageService logManageService) LogManageService logManageService,
PerforImemployeeclinicRepository perforImemployeeclinicRepository)
{ {
this.baiscNormService = baiscNormService; this.baiscNormService = baiscNormService;
this.computeDirector = computeDirector; this.computeDirector = computeDirector;
...@@ -41,6 +43,7 @@ public class ResultComputeService : IAutoInjection ...@@ -41,6 +43,7 @@ public class ResultComputeService : IAutoInjection
this.perforResspecialunitRepository = perforResspecialunitRepository; this.perforResspecialunitRepository = perforResspecialunitRepository;
this.perforImaccountbasicRepository = perforImaccountbasicRepository; this.perforImaccountbasicRepository = perforImaccountbasicRepository;
this.logManageService = logManageService; this.logManageService = logManageService;
this.perforImemployeeclinicRepository = perforImemployeeclinicRepository;
} }
/// <summary> /// <summary>
...@@ -50,7 +53,7 @@ public class ResultComputeService : IAutoInjection ...@@ -50,7 +53,7 @@ public class ResultComputeService : IAutoInjection
public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, List<PerSheet> accountSheet, bool isMinimum = false) public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, List<PerSheet> accountSheet, bool isMinimum = false)
{ {
//取出人员信息 //取出人员信息
var empolyeeList = perforImEmployeeRepository.GetEntities(t => t.AllotID == allot.ID); var empolyeeList = perforImemployeeclinicRepository.GetEntities(t => t.AllotID == allot.ID);
var accountbasicList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == allot.ID); var accountbasicList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == allot.ID);
List<ComputeEmployee> computeEmployees = Mapper.Map<List<ComputeEmployee>>(empolyeeList); List<ComputeEmployee> computeEmployees = Mapper.Map<List<ComputeEmployee>>(empolyeeList);
...@@ -62,10 +65,12 @@ public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, List<PerShee ...@@ -62,10 +65,12 @@ public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, List<PerShee
baiscNormService.ComputeAvg(baiscnormList, accountbasicList, computResult); baiscNormService.ComputeAvg(baiscnormList, accountbasicList, computResult);
baiscNormService.DocterNurseBaiscnorm(baiscnormList, accountbasicList, accountSheet); baiscNormService.DocterNurseBaiscnorm(baiscnormList, accountbasicList, accountSheet);
var empolyeeList1 = perforImEmployeeRepository.GetEntities(t => t.AllotID == allot.ID);
computeEmployees = Mapper.Map<List<ComputeEmployee>>(empolyeeList1);
logManageService.WriteMsg("正在生成绩效", "院领导、业务中层、工勤人员 最终绩效数据计算", 1, allot.ID, "ReceiveMessage"); logManageService.WriteMsg("正在生成绩效", "院领导、业务中层、工勤人员 最终绩效数据计算", 1, allot.ID, "ReceiveMessage");
var computResult2 = computeDirector.Compute(computeEmployees, allot, baiscnormList); var computResult2 = computeDirector.Compute(computeEmployees, allot, baiscnormList);
//计算 行政人员 平均值 //计算 行政人员 平均值
baiscNormService.ComputeOtherAvg(baiscnormList, computResult2, empolyeeList); baiscNormService.ComputeOtherAvg(baiscnormList, computResult2, empolyeeList1);
if (!isMinimum) if (!isMinimum)
{ {
...@@ -94,9 +99,16 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -94,9 +99,16 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
return; return;
var typeList = EnumHelper.GetItems<PerforType>(); var typeList = EnumHelper.GetItems<PerforType>();
var dataList = specialUnit.PerData.Select(t => (PerDataSpecialUnit)t); var dataList = specialUnit.PerData.Select(t => (PerDataSpecialUnit)t);
var specialEmployee = perforImemployeeclinicRepository.GetEntities(t => t.AllotID == allot.ID);
//替换考核基数 //替换考核基数
foreach (var item in dataList) foreach (var item in dataList)
{ {
if (specialEmployee != null && specialEmployee.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit) != null)
{
item.Efficiency = specialEmployee.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit).Efficiency ?? 1;
item.Scale = specialEmployee.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit).Scale ?? 1;
item.Management = specialEmployee.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit).Management ?? 1;
}
var type = typeList.FirstOrDefault(o => o.Description == item.QuantitativeIndicators); var type = typeList.FirstOrDefault(o => o.Description == item.QuantitativeIndicators);
if (type != null) if (type != null)
{ {
...@@ -164,6 +176,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -164,6 +176,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
res.GiveFee = (sumValue + (group.OtherPerfor ?? 0) + (group.Punishment ?? 0)); res.GiveFee = (sumValue + (group.OtherPerfor ?? 0) + (group.Punishment ?? 0));
res.RealGiveFee = res.GiveFee * (group.Adjust == 0 ? 1 : group.Adjust); res.RealGiveFee = res.GiveFee * (group.Adjust == 0 ? 1 : group.Adjust);
res.Avg = group.Number != 0 ? res.GiveFee / group.Number : null; res.Avg = group.Number != 0 ? res.GiveFee / group.Number : null;
res.ResultsTotalFee = 0;
resDataList.Add(res); resDataList.Add(res);
} }
} }
......
...@@ -205,7 +205,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a ...@@ -205,7 +205,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
var basicRule = basicRuleList.FirstOrDefault(t => t.UnitType == (UnitType)accountbasic.UnitType); var basicRule = basicRuleList.FirstOrDefault(t => t.UnitType == (UnitType)accountbasic.UnitType);
if (basicRule == null) continue; if (basicRule == null) continue;
var empolyee = empolyeeList.FirstOrDefault(t => t.AccountType == basicRule.AccountUnitType.ToString() && t.AccountingUnit == accountbasic.DoctorAccountingUnit); var empolyee = empolyeeList.FirstOrDefault(t => t.UnitType == basicRule.UnitType.ToString() && t.AccountingUnit == accountbasic.DoctorAccountingUnit);
if (empolyee == null) if (empolyee == null)
{ {
...@@ -225,7 +225,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a ...@@ -225,7 +225,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
UnitType = basicRule.UnitType.ToString(), UnitType = basicRule.UnitType.ToString(),
AccountingUnit = accountbasic.DoctorAccountingUnit, AccountingUnit = accountbasic.DoctorAccountingUnit,
AccountType = empolyee.AccountType, AccountType = basicRule.AccountUnitType.ToString(),
EmployeeName = empolyee.DoctorName, EmployeeName = empolyee.DoctorName,
FitPeople = empolyee.FitPeople, FitPeople = empolyee.FitPeople,
JobTitle = empolyee.JobTitle, JobTitle = empolyee.JobTitle,
...@@ -237,8 +237,8 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a ...@@ -237,8 +237,8 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
Number = number, Number = number,
PerforTotal = realGiveFee, PerforTotal = realGiveFee,
Avg = realAvg, Avg = realAvg,
Efficiency = realAvg * (accountbasic.DoctorEffic ?? 1), Efficiency = realAvg * (empolyee.Efficiency ?? 1),
Scale = perforTotal * (accountbasic.DoctorScale ?? 1), Scale = perforTotal * (empolyee.Scale ?? 1),
Adjust = empolyee.Adjust, Adjust = empolyee.Adjust,
Remark = isShare ? "特殊科室主任,共用核算单元" : "" Remark = isShare ? "特殊科室主任,共用核算单元" : ""
}; };
......
...@@ -144,7 +144,7 @@ public PerSheet OnceCompute(PerSheet sheet) ...@@ -144,7 +144,7 @@ public PerSheet OnceCompute(PerSheet sheet)
{ {
header.PointCell = header.PointCell + phead; header.PointCell = header.PointCell + phead;
header.Children.ForEach(item => item.PointCell = item.PointCell + phead); header.Children.ForEach(item => item.PointCell = item.PointCell + phead);
phead = phead + 3; phead = phead + 3;
} }
} }
......
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