绩效新都四月

parent 0515adfa
...@@ -156,8 +156,8 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody]Al ...@@ -156,8 +156,8 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody]Al
if (null == allot || string.IsNullOrEmpty(allot.Path)) if (null == allot || string.IsNullOrEmpty(allot.Path))
throw new PerformanceException("当前绩效记录不存在或没有上传数据文件"); throw new PerformanceException("当前绩效记录不存在或没有上传数据文件");
var user = _claim.At(request); var user = _claim.At(request);
//_allotService.Generate(allot, user.Mail); _allotService.Generate(allot, user.Mail);
BackgroundJob.Enqueue(() => _allotService.Generate(allot, user.Mail)); //BackgroundJob.Enqueue(() => _allotService.Generate(allot, user.Mail));
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
......
...@@ -66,16 +66,16 @@ public enum PerformanceType ...@@ -66,16 +66,16 @@ public enum PerformanceType
/// <summary> </summary> /// <summary> </summary>
[Description("")] [Description("")]
Null = 0, Null = 0,
/// <summary> 科室主任人均绩效 </summary> /// <summary> 绩效基数临床科室主任(专门用来计算科主任绩效,由此产生=>>临床科室主任人均绩效)</summary>
//[Description("科室主任人均绩效")] [Description("绩效基数临床科室主任")]
//Director = 1, StandardDirector = 1,
/// <summary> 科室副主任人均绩效 </summary> /// <summary> 绩效基数临床科室副主任(专门用来计算科主任绩效,由此产生=>>临床科室副主任人均绩效) </summary>
[Description("科室副主任人均绩效")] [Description("绩效基数临床科室副主任")]
DeputyDirector = 2, StandardDeputyDirector = 2,
/// <summary> 科室护士长人均绩效 </summary> /// <summary> 绩效基数临床科室护士长(专门用来计算科主任绩效,由此产生=>>临床科室护士长人均绩效) </summary>
//[Description("科室护士长人均绩效")] [Description("绩效基数临床科室护士长")]
//Nurse = 3, StandardNurse = 3,
/// <summary> 临床科室主任人均绩效 (绩效标准取 科室主任人均绩效) </summary> /// <summary> 临床科室主任人均绩效 (绩效标准取 科室主任人均绩效) </summary>
[Description("临床科室主任人均绩效")] [Description("临床科室主任人均绩效")]
...@@ -83,9 +83,7 @@ public enum PerformanceType ...@@ -83,9 +83,7 @@ public enum PerformanceType
/// <summary> 临床科室中层人均绩效 (绩效标准取 科室主任/护士长/科室副主任/医技主任 平均值) </summary> /// <summary> 临床科室中层人均绩效 (绩效标准取 科室主任/护士长/科室副主任/医技主任 平均值) </summary>
[Description("临床科室中层人均绩效")] [Description("临床科室中层人均绩效")]
ReferenceDirectorAvg = 5, ReferenceDirectorAvg = 5,
/// <summary> 临床科室护士人均绩效的95% (绩效标准取 护理组临床科室单元核算表 平均值) </summary>
//[Description("临床科室护士人均绩效的95%")]
//ReferenceNurseAvg95 = 6,
/// <summary> 临床科室护士长人均绩效 (绩效标准取 护士长 平均值)</summary> /// <summary> 临床科室护士长人均绩效 (绩效标准取 护士长 平均值)</summary>
[Description("临床科室护士长人均绩效")] [Description("临床科室护士长人均绩效")]
ReferenceHeadNurse = 7, ReferenceHeadNurse = 7,
......
...@@ -36,18 +36,18 @@ public class BaiscNormService : IAutoInjection ...@@ -36,18 +36,18 @@ public class BaiscNormService : IAutoInjection
{ {
result = baiscnorms.FirstOrDefault(t => t.PositionName == "临床科护长")?.AvgValue; result = baiscnorms.FirstOrDefault(t => t.PositionName == "临床科护长")?.AvgValue;
} }
//else if (type == PerformanceType.ReferenceNurse) else if (type == PerformanceType.ReferenceNurse)
//{ {
// result = baiscnorms.FirstOrDefault(t => t.PositionName == "临床护士")?.AvgValue; result = baiscnorms.FirstOrDefault(t => t.PositionName == "临床护士")?.AvgValue;
//} }
else if (type == PerformanceType.ReferenceDoctor) else if (type == PerformanceType.ReferenceDoctor)
{ {
result = baiscnorms.FirstOrDefault(t => t.PositionName == "临床医生")?.AvgValue; result = baiscnorms.FirstOrDefault(t => t.PositionName == "临床医生")?.AvgValue;
} }
//else if (type == PerformanceType.LogisticsWorker) else if (type == PerformanceType.LogisticsWorker)
//{ {
// result = baiscnorms.FirstOrDefault(t => t.PositionName == "行政工勤")?.AvgValue; result = baiscnorms.FirstOrDefault(t => t.PositionName == "行政工勤")?.AvgValue;
//} }
if (result.HasValue) if (result.HasValue)
result = Math.Round(result.Value, 4); result = Math.Round(result.Value, 4);
return result; return result;
......
...@@ -70,11 +70,14 @@ public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, res_baiscnor ...@@ -70,11 +70,14 @@ public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, res_baiscnor
computeSources.AddRange(Mapper.Map<List<ComputeSource>>(nurseList)); computeSources.AddRange(Mapper.Map<List<ComputeSource>>(nurseList));
var computResult = computeDirector.Compute(computeEmployees, computeSources, directorList); var computResult = computeDirector.Compute(computeEmployees, computeSources, directorList);
//计算 绩效标准 基数(科主任、副主任、护士长 =>> 平均值)
var baiscnormList = computeDirector.ComputeAvg(computResult); var baiscnormList = computeDirector.ComputeAvg(computResult);
baiscnormList.Add(baiscnorm); baiscnormList.Add(baiscnorm);
var computResult2 = computeDirector.Compute(computeEmployees, baiscnormList, workyearList); var computResult2 = computeDirector.Compute(computeEmployees, baiscnormList, workyearList);
//计算 行政人员 平均值
var baiscnormList2 = computeDirector.ComputeOtherAvg(computResult2);
baiscnormList.AddRange(baiscnormList2);
var computes = Mapper.Map<List<res_compute>>(computResult); var computes = Mapper.Map<List<res_compute>>(computResult);
computes.AddRange(Mapper.Map<List<res_compute>>(computResult2)); computes.AddRange(Mapper.Map<List<res_compute>>(computResult2));
......
...@@ -56,7 +56,7 @@ public List<ResComputeResponse> GetCompute(int allotId, int type) ...@@ -56,7 +56,7 @@ public List<ResComputeResponse> GetCompute(int allotId, int type)
{ 1,new List<PerformanceType>{ PerformanceType.ReferenceDirector } }, { 1,new List<PerformanceType>{ PerformanceType.ReferenceDirector } },
{ 2,new List<PerformanceType>{ PerformanceType.ReferenceDirectorAvg } }, { 2,new List<PerformanceType>{ PerformanceType.ReferenceDirectorAvg } },
{ 3,new List<PerformanceType>{ PerformanceType.LogisticsWorker, PerformanceType.ReferenceHeadNurse, PerformanceType.ReferenceNurse, PerformanceType.Null } }, { 3,new List<PerformanceType>{ PerformanceType.LogisticsWorker, PerformanceType.ReferenceHeadNurse, PerformanceType.ReferenceNurse, PerformanceType.Null } },
{ 4,new List<PerformanceType>{ PerformanceType.ReferenceDoctor, PerformanceType.DeputyDirector } }, { 4,new List<PerformanceType>{ PerformanceType.ReferenceDoctor, PerformanceType.StandardDeputyDirector } },
{ 5,new List<PerformanceType>{ PerformanceType.ReferenceNurse } } { 5,new List<PerformanceType>{ PerformanceType.ReferenceNurse } }
}; };
......
...@@ -31,11 +31,11 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<Comp ...@@ -31,11 +31,11 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<Comp
{ {
Dictionary<PerformanceType, string> keyValues = new Dictionary<PerformanceType, string> Dictionary<PerformanceType, string> keyValues = new Dictionary<PerformanceType, string>
{ {
{ PerformanceType.ReferenceDirector, "临床科室主任"}, { PerformanceType.StandardDirector, "临床科室主任"},
{ PerformanceType.ReferenceDeputyDirector, "临床科室副主任"}, { PerformanceType.StandardDeputyDirector, "临床科室副主任"},
{ PerformanceType.ReferenceHeadNurse, "临床科室护士长"}, { PerformanceType.StandardNurse, "临床科室护士长"},
{ PerformanceType.Null, "临床科室主任"},
}; };
List<ComputeResult> computeList = new List<ComputeResult>(); List<ComputeResult> computeList = new List<ComputeResult>();
foreach (var key in keyValues.Keys) foreach (var key in keyValues.Keys)
{ {
...@@ -76,8 +76,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<Comp ...@@ -76,8 +76,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<Comp
//应发绩效 //应发绩效
compute.GiveFee = compute.Avg * (item.Grant ?? 1) + (compute.Efficiency + compute.Scale) * (item.Grant ?? 1) * compute.ScoreAverageRate + (item.Punishment ?? 0) + (item.OtherPerfor ?? 0); compute.GiveFee = compute.Avg * (item.Grant ?? 1) + (compute.Efficiency + compute.Scale) * (item.Grant ?? 1) * compute.ScoreAverageRate + (item.Punishment ?? 0) + (item.OtherPerfor ?? 0);
//实发绩效 //实发绩效
var adjust = item.Adjust ?? 1m; compute.RealGiveFee = compute.GiveFee * (item.Adjust ?? 1m) - compute.ShouldGiveFee * item.ScoreAverageRate * (item.Grant ?? 1) * 0.1m;
compute.RealGiveFee = compute.GiveFee * adjust - compute.ShouldGiveFee * item.ScoreAverageRate * (item.Grant ?? 1) * 0.1m;
computeList.Add(compute); computeList.Add(compute);
} }
...@@ -94,23 +93,12 @@ public List<res_baiscnorm> ComputeAvg(List<ComputeResult> computes) ...@@ -94,23 +93,12 @@ public List<res_baiscnorm> ComputeAvg(List<ComputeResult> computes)
{ {
var keyList = new[] var keyList = new[]
{ {
//new { type = "临床科室", reference = "科室主任人均绩效", groupname = "临床科主任" }, //绩效基数平均值项目
//new { type = "临床科室", reference = "科室副主任人均绩效", groupname = "临床科副主任" }, new { type = "临床科室", reference = EnumHelper.GetDescription(PerformanceType.StandardDirector), groupname = "临床科主任" },
//new { type = "医技科室", reference = "科室主任人均绩效", groupname = "医技科主任" }, new { type = "临床科室", reference = EnumHelper.GetDescription(PerformanceType.StandardDeputyDirector), groupname = "临床科副主任" },
//new { type = "临床科室", reference = "科室护士长人均绩效", groupname = "临床科护长" }, new { type = "医技科室", reference = EnumHelper.GetDescription(PerformanceType.StandardDirector), groupname = "医技科主任" },
new { type = "医技科室", reference = EnumHelper.GetDescription(PerformanceType.StandardDeputyDirector), groupname = "医技科副主任" },
new { type = "行政中高层", reference = "临床科室主任人均绩效", groupname = "临床科主任" }, new { type = "临床科室", reference = EnumHelper.GetDescription(PerformanceType.StandardNurse), groupname = "临床科护长" },
new { type = "行政中高层", reference = "临床科室护士长人均绩效", groupname = "临床科护长" },
new { type = "临床科室", reference = "临床科室主任人均绩效", groupname = "临床科主任" },
new { type = "临床科室", reference = "临床科室副主任人均绩效", groupname = "临床科副主任" },
new { type = "临床科室", reference = "临床科室护士长人均绩效", groupname = "临床科护长" },
new { type = "临床科室", reference = "", groupname = "临床科主任" },
new { type = "医技科室", reference = "临床科室主任人均绩效", groupname = "医技科主任" },
new { type = "医技科室", reference = "临床科室副主任人均绩效", groupname = "医技副主任" },
new { type = "医技科室", reference = "临床科室护士长人均绩效", groupname = "医技护士长" },
new { type = "医技科室", reference = "", groupname = "医技科主任" },
}; };
var groupList = from cp in computes var groupList = from cp in computes
...@@ -129,6 +117,37 @@ public List<res_baiscnorm> ComputeAvg(List<ComputeResult> computes) ...@@ -129,6 +117,37 @@ public List<res_baiscnorm> ComputeAvg(List<ComputeResult> computes)
} }
/// <summary> /// <summary>
/// 绩效标准计算
/// </summary>
/// <param name="computes"></param>
/// <returns></returns>
public List<res_baiscnorm> ComputeOtherAvg(List<ComputeResult> computes)
{
var keyList = new[]
{
//行政绩效平均值项目
new { type = "行政中高层", groupname = "行政中高层" },
new { type = "行政高层", groupname = "行政高层" },
new { type = "行政中层", groupname = "行政中层" },
new { type = "行政工勤", groupname = "行政工勤" },
};
var groupList = from cp in computes
join gp in keyList on cp.AccountType equals gp.type
select new { gp.groupname, cp };
var result = groupList.GroupBy(t => t.groupname)
.Select(s => new res_baiscnorm
{
PositionName = s.Key,
TotelNumber = s.Count(),
TotelValue = s.Sum(t => t.cp.GiveFee),
AvgValue = s.Sum(t => t.cp.GiveFee) / s.Count()
});
return result.ToList();
}
/// <summary>
/// 院领导、业务中层、工勤人员 计算 /// 院领导、业务中层、工勤人员 计算
/// </summary> /// </summary>
/// <param name="empolyeeList"></param> /// <param name="empolyeeList"></param>
......
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