Commit 209c0c0e by lcx

Merge branch 'v2020calculate' into v2020newreq

# Conflicts:
#	performance/Performance.Api/wwwroot/Performance.DtoModels.xml
#	performance/Performance.DtoModels/PerExcel/ExcelEnum.cs
parents c5c952a1 9cd57574
......@@ -320,6 +320,19 @@ public ApiResponse DeleteApr([FromBody] per_apr_amount request)
}
/// <summary>
/// 医院其他绩效审核;驳回、成功
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("apr/audit")]
public ApiResponse AuditResult([FromBody] AprAmountAuditRequest request)
{
var userid = claim.GetUserId();
var result = employeeService.ConfirmAudit(userid, request);
return result ? new ApiResponse(ResponseType.OK, "操作成功") : new ApiResponse(ResponseType.Fail, "操作失败");
}
/// <summary>
/// 上传人员绩效文件
/// </summary>
/// <param name="form"></param>
......
......@@ -654,6 +654,12 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.AuditResult(Performance.DtoModels.AprAmountAuditRequest)">
<summary>
医院其他绩效审核;驳回、成功
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.Import(Microsoft.AspNetCore.Http.IFormCollection)">
<summary>
上传人员绩效文件
......
......@@ -408,11 +408,26 @@
效率绩效人数
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.ScoreAverageRate">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.Attendance">
<summary>
出勤率
......@@ -485,7 +500,7 @@
</member>
<member name="P:Performance.DtoModels.ComputeResult.PerforTotal">
<summary>
绩效合计(来自科室经济测算表)
绩效合计 考核前(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.Number">
......@@ -525,12 +540,27 @@
</member>
<member name="P:Performance.DtoModels.ComputeResult.PerforSumFee">
<summary>
绩效合计(需计算)
绩效合计 考核前(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.ScoreAverageRate">
<summary>
考核对分率(来自人员名单)
考核得分率
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.Attendance">
......@@ -555,7 +585,7 @@
</member>
<member name="P:Performance.DtoModels.ComputeResult.GiveFee">
<summary>
应发绩效(需计算)
应发绩效 考核前(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.BaiscNormPerforTotal">
......@@ -677,8 +707,11 @@
<member name="F:Performance.DtoModels.SheetType.AccountScoreAverage">
<summary> 科室材料考核 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.OtherWorkload">
<summary> 其他工作量(不参与核算) </summary>
<member name="F:Performance.DtoModels.SheetType.AccountAdjustLaterOtherFee">
<summary> 科室调节后其他绩效 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.PersonAdjustLaterOtherFee">
<summary> 业务中层行政中高层调节后其他绩效 </summary>
</member>
<member name="T:Performance.DtoModels.AccountUnitType">
<summary>
......@@ -828,9 +861,9 @@
其他绩效1
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.OtherPerfor2">
<member name="P:Performance.DtoModels.PerDataAccountBaisc.AssessBeforeOtherFee">
<summary>
其他绩效2
考核前其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.MedicineExtra">
......@@ -853,11 +886,21 @@
考核对分率
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.AdjustFactor">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Scale">
<summary>
规模绩效系数
......@@ -895,7 +938,12 @@
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.PerforTotal">
<summary>
绩效合计
绩效合计 考核前
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.AssessLaterPerforTotal">
<summary>
绩效合计 考核后
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Avg">
......@@ -968,11 +1016,21 @@
管理绩效发放系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataClinicEmployee.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataClinicEmployee.ScoreAverageRate">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataClinicEmployee.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataClinicEmployee.Attendance">
<summary>
出勤率
......@@ -993,6 +1051,11 @@
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataClinicEmployee.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataClinicEmployee.RowNumber">
<summary>
行号
......@@ -1053,11 +1116,21 @@
夜班费
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.ScoreAverageRate">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.Attendance">
<summary>
出勤率
......@@ -1068,6 +1141,11 @@
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.RowNumber">
<summary>
行号
......@@ -1128,6 +1206,11 @@
其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataLogisticsEmployee.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataLogisticsEmployee.RowNumber">
<summary>
行号
......@@ -1498,6 +1581,15 @@
路径
</summary>
</member>
<member name="P:Performance.DtoModels.AprAmountAuditRequest.Id">
<summary> 二次绩效Id </summary>
</member>
<member name="P:Performance.DtoModels.AprAmountAuditRequest.IsPass">
<summary> 审核结果 1、审核通过 2、驳回 </summary>
</member>
<member name="P:Performance.DtoModels.AprAmountAuditRequest.Remark">
<summary> 备注 </summary>
</member>
<member name="P:Performance.DtoModels.Request.SmsCodeRequest.Type">
<summary>
短信验证类型 1 手机号登录 2 其他
......@@ -2932,6 +3024,21 @@
医院其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.RoleResponse.RoleName">
<summary>
角色名称
......
......@@ -1962,79 +1962,29 @@
保底绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseHeadNumber">
<summary>
护士长人数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseNumber">
<summary>
护士人数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseBasicFactor">
<summary>
护理基础系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseSlopeFactor">
<summary>
倾斜系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseScale">
<summary>
规模绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseEffic">
<summary>
效率绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseGrant">
<summary>
发放系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseOtherPerfor1">
<summary>
其他绩效1
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseOtherPerfor2">
<summary>
其他绩效2
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseExtra">
<member name="P:Performance.EntityModels.im_accountbasic.UpdateDate">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseScoringAverage">
<member name="P:Performance.EntityModels.im_accountbasic.UpdateUser">
<summary>
考核对分率
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseAdjustFactor">
<member name="P:Performance.EntityModels.im_accountbasic.AssessBeforeOtherFee">
<summary>
调节系数
考核前其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.WorkSlopeFactor">
<member name="P:Performance.EntityModels.im_accountbasic.AssessLaterOtherFee">
<summary>
工作量倾斜系数
考核后其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.UpdateDate">
<member name="P:Performance.EntityModels.im_accountbasic.AdjustLaterOtherFee">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.UpdateUser">
<summary>
调节后其他绩效
</summary>
</member>
<member name="T:Performance.EntityModels.im_data">
......@@ -2277,6 +2227,21 @@
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="T:Performance.EntityModels.im_employee_clinic">
<summary>
......@@ -2422,6 +2387,21 @@
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="T:Performance.EntityModels.im_employee_logistics">
<summary>
......@@ -2522,6 +2502,21 @@
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_logistics.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_logistics.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_logistics.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="T:Performance.EntityModels.im_header">
<summary>
......@@ -2967,6 +2962,26 @@
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.per_apr_amount.Status">
<summary>
状态 1 未提交 2 等待审核 3 审核通过 4 驳回
</summary>
</member>
<member name="P:Performance.EntityModels.per_apr_amount.AuditTime">
<summary>
审核时间
</summary>
</member>
<member name="P:Performance.EntityModels.per_apr_amount.AuditUser">
<summary>
审核人
</summary>
</member>
<member name="P:Performance.EntityModels.per_apr_amount.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.EntityModels.per_apr_amount.CreateDate">
<summary>
......@@ -4087,6 +4102,26 @@
实发绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.AssessLaterPerforTotal">
<summary>
考核后绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Remark">
<summary>
备注
......@@ -4552,6 +4587,21 @@
效率绩效人数
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="T:Performance.EntityModels.res_reserved">
<summary>
......@@ -4812,6 +4862,26 @@
业绩总绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.PerforTotal">
<summary>
考核前绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.AssessBeforeOtherFee">
<summary>
考核前其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.AssessLaterOtherFee">
<summary>
考核后其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.AdjustLaterOtherFee">
<summary>
调节后其他绩效
</summary>
</member>
<member name="T:Performance.EntityModels.sys_extract">
<summary>
医院数据提取脚本
......
......@@ -116,7 +116,7 @@ public AutoMapperConfigs()
.ForMember(dest => dest.DoctorBasicFactor, opt => opt.MapFrom(src => src.BasicFactor))
//.ForMember(dest => dest.DoctorSlopeFactor, opt => opt.MapFrom(src => src.SlopeFactor))
.ForMember(dest => dest.DoctorOtherPerfor1, opt => opt.MapFrom(src => src.OtherPerfor1))
.ForMember(dest => dest.DoctorOtherPerfor2, opt => opt.MapFrom(src => src.OtherPerfor2))
//.ForMember(dest => dest.DoctorOtherPerfor2, opt => opt.MapFrom(src => src.OtherPerfor2))
//.ForMember(dest => dest.DoctorExtra, opt => opt.MapFrom(src => src.Extra))
.ForMember(dest => dest.DoctorScoringAverage, opt => opt.MapFrom(src => src.ScoringAverage))
.ForMember(dest => dest.DoctorAdjustFactor, opt => opt.MapFrom(src => src.AdjustFactor))
......
......@@ -82,11 +82,26 @@ public class ComputeEmployee
//public Nullable<DateTime> WorkTime { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核得分率
/// </summary>
public Nullable<decimal> ScoreAverageRate { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 出勤率
/// </summary>
public Nullable<decimal> Attendance { get; set; }
......
......@@ -36,7 +36,7 @@ public class ComputeResult
public string EmployeeName { get; set; }
/// <summary>
/// 绩效合计(来自科室经济测算表)
/// 绩效合计 考核前(来自科室经济测算表)
/// </summary>
public Nullable<decimal> PerforTotal { get; set; }
......@@ -76,16 +76,31 @@ public class ComputeResult
public Nullable<decimal> ShouldGiveFee { get; set; }
/// <summary>
/// 绩效合计(需计算)
/// 绩效合计 考核前(需计算)
/// </summary>
public Nullable<decimal> PerforSumFee { get; set; }
/// <summary>
/// 考核对分率(来自人员名单)
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核得分率
/// </summary>
public Nullable<decimal> ScoreAverageRate { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 出勤率(来自人员名单)
/// </summary>
public Nullable<decimal> Attendance { get; set; }
......@@ -106,7 +121,7 @@ public class ComputeResult
public Nullable<decimal> OtherPerfor { get; set; }
/// <summary>
/// 应发绩效(需计算)
/// 应发绩效 考核前(需计算)
/// </summary>
public Nullable<decimal> GiveFee { get; set; }
......
......@@ -94,7 +94,7 @@ public enum SheetType
/// <summary> 特殊临床科室医护绩效测算基础 </summary>
[Description("特殊临床科室医护绩效测算基础")]
AccountBasicSpecial = 16,
/// <summary> 科室绩效医院奖罚 </summary>
[Description("科室绩效医院奖罚")]
AccountExtra = 17,
......@@ -120,10 +120,17 @@ public enum SheetType
[Description("科室考核")]
AccountScoreAverage = 25,
/// <summary> 科室调节后其他绩效 </summary>
[Description("科室调节后其他绩效")]
AccountAdjustLaterOtherFee = 26,
/// <summary> 业务中层行政中高层调节后其他绩效 </summary>
[Description("业务中层行政中高层调节后其他绩效")]
PersonAdjustLaterOtherFee = 27,
/// <summary> 其他工作量(不参与核算) </summary>
[Description("其他工作量")]
OtherWorkload = 26,
OtherWorkload = 28,
}
/// <summary>
......
......@@ -64,9 +64,14 @@ public class PerDataAccountBaisc : IPerData
public decimal OtherPerfor1 { get; set; }
/// <summary>
/// 其他绩效2
/// 考核前其他绩效
/// </summary>
public decimal OtherPerfor2 { get; set; }
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
///// <summary>
///// 其他绩效2
///// </summary>
//public decimal OtherPerfor2 { get; set; }
/// <summary>
/// 药占比奖罚
......@@ -89,11 +94,21 @@ public class PerDataAccountBaisc : IPerData
public decimal ScoringAverage { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节系数
/// </summary>
public decimal AdjustFactor { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 规模绩效系数
/// </summary>
public decimal Scale { get; set; }
......@@ -153,11 +168,16 @@ public class PerDataAccountBaisc : IPerData
public Nullable<decimal> WorkloadFee { get; set; }
/// <summary>
/// 绩效合计
/// 绩效合计 考核前
/// </summary>
public Nullable<decimal> PerforTotal { get; set; }
/// <summary>
/// 绩效合计 考核后
/// </summary>
public Nullable<decimal> AssessLaterPerforTotal { get; set; }
/// <summary>
/// 人均绩效
/// </summary>
public Nullable<decimal> Avg { get; set; }
......
......@@ -77,11 +77,21 @@ public class PerDataClinicEmployee : IPerData
//public Nullable<DateTime> WorkTime { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核得分率
/// </summary>
public Nullable<decimal> ScoreAverageRate { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 出勤率
/// </summary>
public Nullable<decimal> Attendance { get; set; }
......@@ -112,6 +122,11 @@ public class PerDataClinicEmployee : IPerData
public Nullable<decimal> Adjust { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 行号
/// </summary>
public int RowNumber { get; set; }
......
......@@ -67,11 +67,21 @@ public class PerDataEmployee : IPerData
public Nullable<decimal> NightWorkPerfor { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核得分率
/// </summary>
public Nullable<decimal> ScoreAverageRate { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 出勤率
/// </summary>
public Nullable<decimal> Attendance { get; set; }
......@@ -96,6 +106,11 @@ public class PerDataEmployee : IPerData
/// </summary>
public Nullable<decimal> Adjust { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
///// <summary>
///// 发放系数
///// </summary>
......
......@@ -62,6 +62,11 @@ public class PerDataLogisticsEmployee : IPerData
public Nullable<decimal> OthePerfor { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 行号
/// </summary>
public int RowNumber { get; set; }
......
using FluentValidation;
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class AprAmountAuditRequest
{
/// <summary> 二次绩效Id </summary>
public int Id { get; set; }
/// <summary> 审核结果 1、审核通过 2、驳回 </summary>
public int IsPass { get; set; }
/// <summary> 备注 </summary>
public string Remark { get; set; }
}
public class AprAmountAuditRequestValidator : AbstractValidator<AprAmountAuditRequest>
{
public AprAmountAuditRequestValidator()
{
RuleFor(x => x.Id).NotNull().NotEmpty().GreaterThan(0);
RuleFor(x => x.IsPass).NotNull().NotEmpty().InclusiveBetween(1, 2);
}
}
}
......@@ -182,5 +182,20 @@ public class ResComputeResponse
/// 医院其他绩效
/// </summary>
public Nullable<decimal> OtherPerformance { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
}
}
......@@ -141,70 +141,70 @@ public class im_accountbasic
/// </summary>
public Nullable<decimal> MinimumFactor { get; set; }
/// <summary>
/// 护士长人数
/// </summary>
public Nullable<decimal> NurseHeadNumber { get; set; }
///// <summary>
///// 护士长人数
///// </summary>
//public Nullable<decimal> NurseHeadNumber { get; set; }
/// <summary>
/// 护士人数
/// </summary>
public Nullable<decimal> NurseNumber { get; set; }
///// <summary>
///// 护士人数
///// </summary>
//public Nullable<decimal> NurseNumber { get; set; }
/// <summary>
/// 护理基础系数
/// </summary>
public Nullable<decimal> NurseBasicFactor { get; set; }
///// <summary>
///// 护理基础系数
///// </summary>
//public Nullable<decimal> NurseBasicFactor { get; set; }
/// <summary>
/// 倾斜系数
/// </summary>
public Nullable<decimal> NurseSlopeFactor { get; set; }
///// <summary>
///// 倾斜系数
///// </summary>
//public Nullable<decimal> NurseSlopeFactor { get; set; }
/// <summary>
/// 规模绩效系数
/// </summary>
public Nullable<decimal> NurseScale { get; set; }
///// <summary>
///// 规模绩效系数
///// </summary>
//public Nullable<decimal> NurseScale { get; set; }
/// <summary>
/// 效率绩效系数
/// </summary>
public Nullable<decimal> NurseEffic { get; set; }
///// <summary>
///// 效率绩效系数
///// </summary>
//public Nullable<decimal> NurseEffic { get; set; }
/// <summary>
/// 发放系数
/// </summary>
public Nullable<decimal> NurseGrant { get; set; }
///// <summary>
///// 发放系数
///// </summary>
//public Nullable<decimal> NurseGrant { get; set; }
/// <summary>
/// 其他绩效1
/// </summary>
public Nullable<decimal> NurseOtherPerfor1 { get; set; }
///// <summary>
///// 其他绩效1
///// </summary>
//public Nullable<decimal> NurseOtherPerfor1 { get; set; }
/// <summary>
/// 其他绩效2
/// </summary>
public Nullable<decimal> NurseOtherPerfor2 { get; set; }
///// <summary>
///// 其他绩效2
///// </summary>
//public Nullable<decimal> NurseOtherPerfor2 { get; set; }
/// <summary>
/// 医院奖罚
/// </summary>
public Nullable<decimal> NurseExtra { get; set; }
///// <summary>
///// 医院奖罚
///// </summary>
//public Nullable<decimal> NurseExtra { get; set; }
/// <summary>
/// 考核对分率
/// </summary>
public Nullable<decimal> NurseScoringAverage { get; set; }
///// <summary>
///// 考核对分率
///// </summary>
//public Nullable<decimal> NurseScoringAverage { get; set; }
/// <summary>
/// 调节系数
/// </summary>
public Nullable<decimal> NurseAdjustFactor { get; set; }
///// <summary>
///// 调节系数
///// </summary>
//public Nullable<decimal> NurseAdjustFactor { get; set; }
/// <summary>
/// 工作量倾斜系数
/// </summary>
public Nullable<decimal> WorkSlopeFactor { get; set; }
///// <summary>
///// 工作量倾斜系数
///// </summary>
//public Nullable<decimal> WorkSlopeFactor { get; set; }
/// <summary>
///
......@@ -215,5 +215,18 @@ public class im_accountbasic
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
}
}
......@@ -145,5 +145,17 @@ public class im_employee
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
}
}
......@@ -155,5 +155,17 @@ public class im_employee_clinic
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
}
}
......@@ -140,5 +140,18 @@ public class im_employee_logistics
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
}
}
......@@ -57,6 +57,26 @@ public class per_apr_amount
public string AccountingUnit { get; set; }
/// <summary>
/// 状态 1 未提交 2 等待审核 3 审核通过 4 驳回
/// </summary>
public int Status { get; set; }
/// <summary>
/// 审核时间
/// </summary>
public Nullable<DateTime> AuditTime { get; set; }
/// <summary>
/// 审核人
/// </summary>
public Nullable<int> AuditUser { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
///
/// </summary>
public Nullable<DateTime> CreateDate { get; set; }
......
......@@ -160,7 +160,24 @@ public class res_account
/// 实发绩效
/// </summary>
public Nullable<decimal> RealGiveFee { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 考核后绩效
/// </summary>
public Nullable<decimal> AssessLaterPerforTotal { get; set; }
/// <summary>
/// 备注
/// </summary>
......
......@@ -210,5 +210,18 @@ public class res_compute
/// 效率绩效人数
/// </summary>
public Nullable<decimal> PermanentStaff { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
}
}
......@@ -115,5 +115,21 @@ public class res_specialunit
/// 业绩总绩效
/// </summary>
public Nullable<decimal> ResultsTotalFee { get; set; }
/// <summary>
/// 考核前绩效
/// </summary>
public Nullable<decimal> PerforTotal { get; set; }
/// <summary>
/// 考核前其他绩效
/// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary>
/// 考核后其他绩效
/// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary>
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
}
}
......@@ -305,12 +305,16 @@ public void Save(List<PerSheet> perSheets, int allotId)
dept.AdjustFactor = dept.AdjustFactor == 0m ? 1 : dept.AdjustFactor;
dept.Income = econDoctor?.CellValue ?? 0;
dept.WorkloadFee = workDoctor?.CellValue ?? 0;
dept.AssessBeforeOtherFee = dept.AssessBeforeOtherFee ?? 0;
dept.AssessLaterOtherFee = dept.AssessLaterOtherFee ?? 0;
dept.AdjustLaterOtherFee = dept.AdjustLaterOtherFee ?? 0;
dept.Extra = (extra ?? 0);
dept.MedicineExtra = (drugExtra ?? 0);
dept.MaterialsExtra = (materialsExtra ?? 0);
dept.PerforFee = dept.Income * dept.BasicFactor;
dept.PerforTotal = Math.Round((dept.PerforFee + dept.WorkloadFee + dept.OtherPerfor1) ?? 0);
dept.RealGiveFee = Math.Round(((dept.PerforTotal * dept.ScoringAverage + dept.MedicineExtra + dept.MaterialsExtra + dept.OtherPerfor2 + (extra ?? 0)) * dept.AdjustFactor) ?? 0);
dept.PerforTotal = Math.Round((dept.PerforFee + dept.WorkloadFee + dept.OtherPerfor1 + dept.AssessBeforeOtherFee) ?? 0);
dept.AssessLaterPerforTotal = Math.Round((dept.PerforTotal * dept.ScoringAverage + dept.MedicineExtra + dept.MaterialsExtra + dept.Extra + dept.AssessLaterOtherFee) ?? 0);
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);
}
......@@ -368,7 +372,7 @@ public void ComputeOffice(per_allot allot, PerExcel excel, IEnumerable<AccountUn
dept.MaterialsExtra = 0;//(materialsExtra ?? 0);
dept.PerforFee = empolyees.Sum(w => w.PerforTotal ?? 0);
dept.PerforTotal = Math.Round((dept.PerforFee + (dept?.OtherPerfor1 ?? 0)) ?? 0);
dept.RealGiveFee = Math.Round(((dept.PerforTotal * dept.ScoringAverage + dept.MedicineExtra + dept.MaterialsExtra + dept.OtherPerfor2 + (extra ?? 0)) * dept.AdjustFactor) ?? 0);
dept.RealGiveFee = Math.Round(((dept.PerforTotal * dept.ScoringAverage + dept.MedicineExtra + dept.MaterialsExtra + (extra ?? 0)) * dept.AdjustFactor) ?? 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;
......
......@@ -164,7 +164,6 @@ public class ResultComputeService : IAutoInjection
});
var groupAdjust = isBudget ? adjust : (dept?.AdjustFactor ?? 0);
foreach (var item in accountDataList)
{
//科室奖罚汇总结果
......@@ -193,16 +192,20 @@ public class ResultComputeService : IAutoInjection
QuantitativeIndicatorsValue = item.QuantitativeIndicatorsValue,
QuantitativeFee = item.Quantity * item.QuantitativeIndicatorsValue * headcount,
//ScoringAverage = scoreAverage.HasValue ? scoreAverage : dept?.ScoringAverage,
ScoringAverage = dept?.ScoringAverage,
ScoringAverage = dept?.ScoringAverage ?? 0,
OtherPerfor = dept?.OtherPerfor1,
Punishment = (extra ?? 0),
MedicineExtra = (drugExtra ?? 0),
MaterialsExtra = (materialsExtra ?? 0),
Adjust = (groupAdjust == 0) ? 1 : groupAdjust,
};
Adjust = isBudget ? adjust : (dept?.AdjustFactor ?? 1),
res.GiveFee = Math.Round((sumValue + (extra ?? 0)) ?? 0);
res.RealGiveFee = Math.Round(res.GiveFee * (res.ScoringAverage ?? 0) * (groupAdjust == 0 ? 1 : groupAdjust) ?? 0);
AssessBeforeOtherFee = dept.AssessBeforeOtherFee ?? 0,
AssessLaterOtherFee = dept.AssessLaterOtherFee ?? 0,
AdjustLaterOtherFee = dept.AdjustLaterOtherFee ?? 0,
};
res.PerforTotal = (sumValue ?? 0) + res.AssessBeforeOtherFee;
res.GiveFee = Math.Round(res.PerforTotal + res.AssessLaterOtherFee ?? 0);
res.RealGiveFee = Math.Round(res.GiveFee * res.ScoringAverage * res.Adjust + res.Punishment + res.AdjustLaterOtherFee ?? 0);
res.Avg = Math.Round((group.Number != 0 ? res.GiveFee / group.Number : null) ?? 0);
res.ResultsTotalFee = Math.Round(sumValue ?? 0);
......@@ -233,14 +236,18 @@ public class ResultComputeService : IAutoInjection
JobTitle = empolyee.JobTitle,
ScoreAverageRate = empolyee.ScoreAverageRate,
//Punishment = empolyee.Punishment,
Punishment = extra ?? 0,
//OtherPerfor = empolyee.OtherPerfor,
OtherManagePerfor = empolyee.OtherManagePerfor,
Number = group.Number,
PerforTotal = sumValue,
Avg = group.Number == 0 ? 0 : (sumValue / group.Number),
Adjust = empolyeeAdjust,
Grant = isBudget ? grant : empolyee.Management
Adjust = empolyeeAdjust ?? 1m,
Grant = isBudget ? grant : empolyee.Management,
Attendance = empolyee.Attendance ?? 0,
AssessBeforeOtherFee = empolyee.AssessBeforeOtherFee ?? 0,
AssessLaterOtherFee = empolyee.AssessLaterOtherFee ?? 0,
AdjustLaterOtherFee = empolyee.AdjustLaterOtherFee ?? 0,
};
compute.Efficiency = compute.Avg * (empolyee.Efficiency ?? 1);
......@@ -248,13 +255,13 @@ public class ResultComputeService : IAutoInjection
//应发管理绩效
compute.ShouldGiveFee = Math.Round((compute.Efficiency + compute.Scale) * compute.Grant ?? 0);
//绩效合计
compute.PerforSumFee = Math.Round(compute.Avg + compute.ShouldGiveFee ?? 0);
compute.PerforSumFee = Math.Round(compute.Avg + compute.ShouldGiveFee + compute.AssessBeforeOtherFee ?? 0);
//应发绩效
//compute.GiveFee = compute.PerforSumFee;
compute.GiveFee = Math.Round(compute.PerforSumFee * compute.ScoreAverageRate * (compute.Attendance ?? 0) + (extra ?? 0) ?? 0);
compute.GiveFee = Math.Round(compute.PerforSumFee * compute.ScoreAverageRate * compute.Attendance + compute.Punishment + compute.AssessLaterOtherFee ?? 0);
//实发绩效
//compute.RealGiveFee = (compute.GiveFee * compute.ScoreAverageRate + (compute.Punishment ?? 0) + (compute.OtherPerfor ?? 0)) * (compute.Adjust ?? 1m);
compute.RealGiveFee = Math.Round(compute.GiveFee * (compute.Adjust ?? 1m) ?? 0);
compute.RealGiveFee = Math.Round(compute.GiveFee * compute.Adjust + compute.AdjustLaterOtherFee ?? 0);
// 参考基数专用绩效合计
compute.BaiscNormPerforTotal = compute.PerforSumFee;
......
......@@ -710,7 +710,8 @@ public DeptDataDetails<DetailModuleExtend> DeptDetail(int accountId)
string single = "";
var sheetType = new List<int> {
(int)SheetType.Income, (int)SheetType.OtherIncome, (int)SheetType.Expend, (int)SheetType.Workload, (int)SheetType.AccountExtra,
(int)SheetType.AccountDrugAssess, (int)SheetType.AccountMaterialsAssess, (int)SheetType.AccountScoreAverage
(int)SheetType.AccountDrugAssess, (int)SheetType.AccountMaterialsAssess, (int)SheetType.AccountScoreAverage,
(int)SheetType.AccountAdjustLaterOtherFee
};
foreach (var stype in sheetType)
{
......@@ -764,6 +765,11 @@ public DeptDataDetails<DetailModuleExtend> DeptDetail(int accountId)
//amount = Math.Round(doctor?.ScoringAverage ?? 0, 4);
amount = Math.Round(basicData.Where(t => t.SheetID == sheet.ID && t.UnitType == type && t.IsTotal == 1)?.FirstOrDefault()?.CellValue ?? 0, 4);
}
else if (sheet.SheetType == (int)SheetType.AccountAdjustLaterOtherFee)
{
sheettype = 9;
amount = Math.Round(basicData.Where(t => t.SheetID == sheet.ID && t.UnitType == type && t.IsTotal == 1)?.FirstOrDefault()?.CellValue ?? 0, 0);
}
var item = new DetailDtos
{
......@@ -965,7 +971,8 @@ public DeptDataDetails SpecialDeptDetail(ag_secondallot second)
var sheetType = new List<int>
{
(int)SheetType.AccountExtra, (int)SheetType.AccountDrugAssess, (int)SheetType.AccountMaterialsAssess,(int)SheetType.AccountScoreAverage
(int)SheetType.AccountExtra, (int)SheetType.AccountDrugAssess, (int)SheetType.AccountMaterialsAssess,
(int)SheetType.AccountScoreAverage, (int)SheetType.AccountAdjustLaterOtherFee
};
Regex reg = new Regex("[0-9]*");
int groupBasis = 0;
......@@ -1003,6 +1010,11 @@ public DeptDataDetails SpecialDeptDetail(ag_secondallot second)
//amount = Math.Round(special.FirstOrDefault()?.ScoringAverage ?? 0, 4);
amount = Math.Round(basicData.Where(t => t.SheetID == sheet.ID && t.UnitType == (int)UnitType.特殊核算组 && t.IsTotal == 1)?.FirstOrDefault()?.CellValue ?? 0, 4);
}
else if (sheet.SheetType == (int)SheetType.AccountAdjustLaterOtherFee)
{
sheettype = 9;
amount = Math.Round(basicData.Where(t => t.SheetID == sheet.ID && t.UnitType == (int)UnitType.特殊核算组 && t.IsTotal == 1)?.FirstOrDefault()?.CellValue ?? 0, 0);
}
var item = new DetailDtos
{
......
......@@ -425,6 +425,25 @@ public bool DeleteApr(int id)
return true;
}
/// <summary>
/// 审核医院其他绩效
/// </summary>
/// <param name="userid"></param>
/// <param name="request"></param>
/// <returns></returns>
public bool ConfirmAudit(int userid, AprAmountAuditRequest request)
{
var apramount = perapramountRepository.GetEntity(t => t.Id == request.Id);
if (apramount.Status != 2)
throw new PerformanceException("该绩效未提交至审核,请确认");
apramount.Status = (request.IsPass == 1) ? 3 : 4;
apramount.AuditUser = userid;
apramount.AuditTime = DateTime.Now;
apramount.Remark = request.Remark;
return perapramountRepository.Update(apramount);
}
public void ImpoerAprEmployees(int allotid, string path, int userid)
{
var data = perapramountRepository.GetEntities(t => t.AllotId == allotid);
......
......@@ -183,7 +183,7 @@ private bool EditAccountBasic(int userId, OriginalRequest request)
{ "核算单元人员数量", nameof(im_accountbasic.DoctorNumber) },
{ "预算比例", nameof(im_accountbasic.DoctorBasicFactor) },
//{ "倾斜系数", nameof(im_accountbasic.DoctorSlopeFactor) },
{ "工作量倾斜系数", nameof(im_accountbasic.WorkSlopeFactor) },
//{ "工作量倾斜系数", nameof(im_accountbasic.WorkSlopeFactor) },
{ "保底绩效参考标准", nameof(im_accountbasic.MinimumReference) },
{ "保底绩效系数", nameof(im_accountbasic.MinimumFactor) },
{ "其他绩效1", nameof(im_accountbasic.DoctorOtherPerfor1) },
......
......@@ -379,21 +379,24 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<PerS
JobTitle = empolyee.JobTitle,
JobNumber = empolyee.JobNumber,
ScoreAverageRate = empolyee.ScoreAverageRate,
OtherPerfor = empolyee.OtherPerfor,
AssessBeforeOtherFee = empolyee.AssessBeforeOtherFee ?? 0,
ScoreAverageRate = empolyee.ScoreAverageRate ?? 0,
AssessLaterOtherFee = empolyee.AssessLaterOtherFee ?? 0,
AdjustLaterOtherFee = empolyee.AdjustLaterOtherFee ?? 0,
OtherPerfor = empolyee.OtherPerfor ?? 0,
OtherManagePerfor = empolyee.OtherManagePerfor ?? 0,
Number = resAccount.ManagerNumber + resAccount.Number,
PerforTotal = resAccount.PerforTotal,
Avg = avg,
Efficiency = effAvg * (empolyee.Efficiency ?? 0),
Scale = resAccount.PerforTotal * (empolyee.Scale ?? 0),
Adjust = isBudget ? adjust : empolyee.Adjust,
Adjust = (isBudget ? adjust : empolyee.Adjust) ?? 1m,
Remark = empolyees.Count() > 1 ? "特殊科室主任,共用核算单元" : "",
Grant = isBudget ? grant : empolyee.Management,
Grant = (isBudget ? grant : empolyee.Management) ?? 0,
ManagerNumber = resAccount.ManagerNumber,
MedicalNumber = resAccount.Number,
PermanentStaff = empolyee.PermanentStaff,
Attendance = empolyee.Attendance
Attendance = empolyee.Attendance ?? 0,
};
var extra = employeeExtra?.Where(w => !string.IsNullOrEmpty(w.AccountingUnit) && !string.IsNullOrEmpty(w.UnitType)
......@@ -403,15 +406,15 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<PerS
compute.Punishment = extra ?? 0;
//应发管理绩效
compute.ShouldGiveFee = Math.Round((compute.Efficiency + compute.Scale + compute.OtherManagePerfor) * (compute.Grant ?? 0) ?? 0);
compute.ShouldGiveFee = Math.Round((compute.Efficiency + compute.Scale + compute.OtherManagePerfor) * compute.Grant ?? 0);
//绩效合计
compute.PerforSumFee = Math.Round((compute.Avg * (empolyee.Basics ?? 0)) + compute.ShouldGiveFee ?? 0);
compute.PerforSumFee = Math.Round((compute.Avg * (empolyee.Basics ?? 0)) + compute.ShouldGiveFee + compute.AssessBeforeOtherFee ?? 0);
//应发绩效
//compute.GiveFee = compute.PerforSumFee;
compute.GiveFee = Math.Round(compute.PerforSumFee * compute.ScoreAverageRate * (compute.Attendance ?? 0) + (extra ?? 0) ?? 0) + (compute.OtherPerfor ?? 0);
compute.GiveFee = Math.Round(compute.PerforSumFee * compute.ScoreAverageRate * compute.Attendance + compute.Punishment + compute.OtherPerfor + compute.AssessLaterOtherFee ?? 0);
//实发绩效
//compute.RealGiveFee = (compute.GiveFee * compute.ScoreAverageRate * (compute.Attendance ?? 0) + (compute.Punishment ?? 0) + (compute.OtherPerfor ?? 0)) * (compute.Adjust ?? 1m);
compute.RealGiveFee = Math.Round(compute.GiveFee * (compute.Adjust ?? 1m) ?? 0);
compute.RealGiveFee = Math.Round(compute.GiveFee * compute.Adjust + compute.AdjustLaterOtherFee ?? 0);
// 参考基数专用绩效合计
compute.BaiscNormPerforTotal = compute.PerforSumFee;
......@@ -455,7 +458,6 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
.FirstOrDefault(w => w.AccountingUnit == item.AccountingUnit && w.UnitType == item.UnitType && w.JobNumber == item.JobNumber && w.EmployeeName == item.DoctorName)
?.TotelValue;
var itemAdjust = isBudget ? adjust : item.Adjust;
var compute = new ComputeResult
{
AccountType = item.AccountType,
......@@ -470,12 +472,15 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
Attendance = item.Attendance,
ScoreAverageRate = item.ScoreAverageRate,
Punishment = extra ?? 0,
OtherPerfor = item.OtherPerfor,
OtherPerfor = item.OtherPerfor ?? 0,
JobTitle = item.JobTitle,
JobNumber = item.JobNumber,
Adjust = itemAdjust,
Adjust = (isBudget ? adjust : item.Adjust) ?? 1m,
//Workload = item.Workload
AssessBeforeOtherFee = item.AssessBeforeOtherFee ?? 0,
AssessLaterOtherFee = item.AssessLaterOtherFee ?? 0,
AdjustLaterOtherFee = item.AdjustLaterOtherFee ?? 0,
};
decimal? baiscnorm = compute?.FitPeopleValue ?? 0;
......@@ -497,17 +502,22 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
compute.BaiscNormValue = baiscnorm * (item.FitPeopleRatio ?? 0);
//绩效合计
compute.PerforTotal = compute.BaiscNormValue * compute.PostCoefficient * compute.Attendance;
// 行政高层 行政中层 考核前其他绩效
if (AccountUnitType.行政高层.ToString() == involve || AccountUnitType.行政中层.ToString() == involve)
compute.PerforTotal = compute.PerforTotal + compute.AssessBeforeOtherFee;
//应发绩效
compute.GiveFee = compute.BaiscNormValue * compute.PostCoefficient * compute.Attendance + compute.Punishment;
// 行政中高层 不需要其他绩效 行政工勤 不需要考核得分率 区分开计算
if (AccountUnitType.行政工勤.ToString() == involve)
compute.GiveFee = Math.Round(compute.GiveFee + (compute.OtherPerfor ?? 0) ?? 0);
compute.GiveFee = Math.Round(compute.GiveFee + compute.OtherPerfor ?? 0);
else
compute.GiveFee = Math.Round((compute.GiveFee * compute.ScoreAverageRate) ?? 0);
compute.GiveFee = Math.Round((compute.GiveFee * compute.ScoreAverageRate + compute.AssessLaterOtherFee) ?? 0);
//实发绩效
compute.RealGiveFee = Math.Round((compute.GiveFee * (itemAdjust ?? 1)) ?? 0);
compute.RealGiveFee = Math.Round((compute.GiveFee * compute.Adjust + compute.AdjustLaterOtherFee) ?? 0);
computeList.Add(compute);
}
}
......
......@@ -20,9 +20,12 @@ public class ExcelReadConfig
new ColumnInfo(nameof(PerDataEmployee.AccountType), "人员分类"),
new ColumnInfo(nameof(PerDataEmployee.PostCoefficient), "岗位系数", true),
new ColumnInfo(nameof(PerDataEmployee.NightWorkPerfor), "夜班费"),
new ColumnInfo(nameof(PerDataEmployee.AssessBeforeOtherFee), "考核前其他绩效", true),
new ColumnInfo(nameof(PerDataEmployee.ScoreAverageRate), "考核得分率", true),
new ColumnInfo(nameof(PerDataEmployee.AssessLaterOtherFee), "考核后其他绩效", true),
new ColumnInfo(nameof(PerDataEmployee.Attendance), "出勤率", true),
new ColumnInfo(nameof(PerDataEmployee.Adjust), "调节系数", true),
new ColumnInfo(nameof(PerDataEmployee.AdjustLaterOtherFee), "调节后其他绩效", true),
};
......@@ -40,12 +43,15 @@ public class ExcelReadConfig
new ColumnInfo(nameof(PerDataClinicEmployee.Efficiency), "效率绩效系数", true),
new ColumnInfo(nameof(PerDataClinicEmployee.Scale), "规模绩效系数", true),
new ColumnInfo(nameof(PerDataClinicEmployee.Management), "管理绩效发放系数", true),
new ColumnInfo(nameof(PerDataClinicEmployee.AssessBeforeOtherFee), "考核前其他绩效", true),
new ColumnInfo(nameof(PerDataClinicEmployee.ScoreAverageRate), "考核得分率", true),
new ColumnInfo(nameof(PerDataClinicEmployee.AssessLaterOtherFee), "考核后其他绩效", true),
new ColumnInfo(nameof(PerDataClinicEmployee.Attendance), "出勤率", true),
new ColumnInfo(nameof(PerDataClinicEmployee.OtherManagePerfor), "其他管理绩效"),
new ColumnInfo(nameof(PerDataClinicEmployee.OthePerfor), "其他绩效"),
//new ColumnInfo(nameof(PerDataClinicEmployee.NightWorkPerfor), "夜班费"),
new ColumnInfo(nameof(PerDataClinicEmployee.Adjust), "调节系数", true),
new ColumnInfo(nameof(PerDataClinicEmployee.AdjustLaterOtherFee), "调节后其他绩效", true),
};
......@@ -62,6 +68,7 @@ public class ExcelReadConfig
new ColumnInfo(nameof(PerDataLogisticsEmployee.PostCoefficient), "岗位系数", true),
new ColumnInfo(nameof(PerDataLogisticsEmployee.Attendance), "出勤率", true),
new ColumnInfo(nameof(PerDataLogisticsEmployee.OthePerfor), "其他绩效", true),
new ColumnInfo(nameof(PerDataLogisticsEmployee.AdjustLaterOtherFee), "调节后其他绩效", true),
};
public static ColumnInfo[] AccountBaisc { get; set; } = new ColumnInfo[]
......@@ -72,8 +79,11 @@ public class ExcelReadConfig
new ColumnInfo(nameof(PerDataAccountBaisc.Number), "核算单元人员数量", true),
new ColumnInfo(nameof(PerDataAccountBaisc.BasicFactor), "预算比例", true),
new ColumnInfo(nameof(PerDataAccountBaisc.OtherPerfor1), "其他绩效1", true),
new ColumnInfo(nameof(PerDataAccountBaisc.AssessBeforeOtherFee), "考核前其他绩效", true),
new ColumnInfo(nameof(PerDataAccountBaisc.ScoringAverage), "考核得分率", true),
new ColumnInfo(nameof(PerDataAccountBaisc.AssessLaterOtherFee), "考核后其他绩效", true),
new ColumnInfo(nameof(PerDataAccountBaisc.AdjustFactor), "调节系数", true),
new ColumnInfo(nameof(PerDataAccountBaisc.AdjustLaterOtherFee), "调节后其他绩效", true),
};
}
......
......@@ -73,10 +73,17 @@ public static IPerSheetDataRead GetDataRead(SheetType sheetType, bool isnew = fa
//dataread = new PerSheetDataReadAccountMaterialsAssess(); // 科室材料考核
break;
case SheetType.AccountScoreAverage:
dataread = new PerSheetDataReadAccountExtra();
dataread = new PerSheetDataReadAccountExtra();
break;
case SheetType.AccountAdjustLaterOtherFee:
//dataread = new PerSheetDataReadPersonExtra(); // 科室调节后其他绩效
dataread = new PerSheetDataReadAccountExtra();
break;
case SheetType.PersonAdjustLaterOtherFee:
dataread = new PerSheetDataReadPersonExtra(); // 业务中层行政中高层调节后其他绩效
break;
}
return dataread;
}
}
}
}
\ No newline at end of file
......@@ -106,6 +106,10 @@ public SheetType GetSheetType(string sheetName)
return SheetType.AccountMaterialsAssess;
else if (sheetName.StartsWith("6.1"))
return SheetType.AccountScoreAverage;
else if (sheetName.StartsWith("6.2"))
return SheetType.AccountAdjustLaterOtherFee;
else if (sheetName.StartsWith("6.3"))
return SheetType.PersonAdjustLaterOtherFee;
return SheetType.Unidentifiable;
}
}
......
......@@ -143,6 +143,11 @@ public List<SecondListResponse> GetSecondList(int userId)
account = accountList?.FirstOrDefault(t => t.AllotID == item && t.UnitType == (int)UnitType.行政后勤);
if (account == null && special == null) continue;
// 医生组护理组特殊核算组
var realGiveFee = role.Type == application.SpecialRole ? special.RealGiveFee : account.RealGiveFee;
// 行政后勤则取考核前绩效
if (role.Type == application.OfficeRole)
realGiveFee = account.PerforTotal;
var second = new ag_secondallot
{
......@@ -151,11 +156,51 @@ public List<SecondListResponse> GetSecondList(int userId)
Month = allot.Month,
Department = user.Department,
UnitType = role.Type == application.SpecialRole ? UnitType.特殊核算组.ToString() : ((UnitType)account.UnitType).ToString(),
RealGiveFee = role.Type == application.SpecialRole ? special.RealGiveFee : account.RealGiveFee,
RealGiveFee = realGiveFee,
Status = 1
};
newSecond.Add(second);
}
if (secondList != null && secondList.Any())
{
var fixatitems = new List<ag_fixatitem>();
foreach (var item in secondList.Select(t => t.AllotId.Value))
{
var allot = allotList.FirstOrDefault(t => t.ID == item);
if (allot == null) continue;
res_account account = null;
res_specialunit special = null;
if (role.Type == application.DirectorRole)
account = accountList?.FirstOrDefault(t => t.AllotID == item && (t.UnitType == (int)UnitType.医生组 || t.UnitType == (int)UnitType.医技组));
else if (role.Type == application.NurseRole)
account = accountList?.FirstOrDefault(t => t.AllotID == item && t.UnitType == (int)UnitType.护理组);
else if (role.Type == application.SpecialRole)
special = specialList?.FirstOrDefault(t => t.AllotID == item);
else if (role.Type == application.OfficeRole)
account = accountList?.FirstOrDefault(t => t.AllotID == item && t.UnitType == (int)UnitType.行政后勤);
if (account == null && special == null) continue;
// 医生组护理组特殊核算组
var realGiveFee = role.Type == application.SpecialRole ? special.RealGiveFee : account.RealGiveFee;
// 行政后勤则取考核前绩效
if (role.Type == application.OfficeRole)
realGiveFee = account.PerforTotal;
var second = secondList.FirstOrDefault(t => t.AllotId == item);
second.RealGiveFee = realGiveFee;
var fixatitem = perforAgfixatitemRepository.GetEntity(t => t.SecondId == second.Id && t.AllotId == second.AllotId && t.RowNumber == -1 && t.ItemName == "可分配绩效");
if (fixatitem != null)
{
fixatitem.ItemValue = realGiveFee.ToString();
fixatitems.Add(fixatitem);
}
}
perforAgsecondallotRepository.UpdateRange(secondList.ToArray());
perforAgfixatitemRepository.UpdateRange(fixatitems.ToArray());
}
#endregion
if (newSecond.Count > 0)
......@@ -577,7 +622,7 @@ private void FillData(ag_secondallot second, List<BodyItem> bodyItems)
foreach (var item in keyValue)
{
var header = bodyItems.FirstOrDefault(t => t.FiledName == item.Key);
if (header != null && (string.IsNullOrEmpty(header.Value) || header.Value == "0"))
if (header != null && (string.IsNullOrEmpty(header.Value) /*|| header.Value == "0"*/))
bodyItems.FirstOrDefault(t => t.FiledName == item.Key).Value = item.Value;
}
}
......
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