Commit 796c7a54 by 李承祥

临床人员管理 生成绩效修改

parent a9e8f4f4
......@@ -72,5 +72,81 @@ public ApiResponse Delete([CustomizeValidator(RuleSet = "Delete"), FromBody]Empl
return new ApiResponse(ResponseType.Fail);
return new ApiResponse(ResponseType.OK);
}
/// <summary>
/// 获取临床人员列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("clinic/getlist")]
[HttpPost]
public ApiResponse GetEmployeeClinicList([CustomizeValidator(RuleSet = "Select"), FromBody]im_employee_clinic request)
{
if ((request.AllotID ?? 0) == 0)
return new ApiResponse(ResponseType.ParameterError, "参数AllotId无效!");
var employee = employeeService.GetEmployeeClinicList(request.AllotID.Value);
return new ApiResponse(ResponseType.OK, "ok", employee);
}
/// <summary>
/// 新增临床人员
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("clinic/insert")]
[HttpPost]
public ApiResponse InsertClinic([CustomizeValidator(RuleSet = "Insert"), FromBody]im_employee_clinic request)
{
if ((request.AllotID ?? 0) == 0)
return new ApiResponse(ResponseType.ParameterError, "参数AllotId无效!");
if (string.IsNullOrEmpty(request.AccountingUnit))
return new ApiResponse(ResponseType.ParameterError, "参数AccountingUnit无效!");
if (string.IsNullOrEmpty(request.DoctorName))
return new ApiResponse(ResponseType.ParameterError, "参数DoctorName无效!");
var employee = employeeService.InsertClinic(request);
return new ApiResponse(ResponseType.OK, "ok", employee);
}
/// <summary>
/// 修改临床人员
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("clinic/update")]
[HttpPost]
public ApiResponse UpdateClinic([CustomizeValidator(RuleSet = "Update"), FromBody]im_employee_clinic request)
{
if ((request.AllotID ?? 0) == 0)
return new ApiResponse(ResponseType.ParameterError, "参数AllotId无效!");
if (string.IsNullOrEmpty(request.AccountingUnit))
return new ApiResponse(ResponseType.ParameterError, "参数AccountingUnit无效!");
if (string.IsNullOrEmpty(request.DoctorName))
return new ApiResponse(ResponseType.ParameterError, "参数DoctorName无效!");
var employee = employeeService.UpdateClinic(request);
return new ApiResponse(ResponseType.OK, "ok", employee);
}
/// <summary>
/// 删除临床人员
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("clinic/delete")]
[HttpPost]
public ApiResponse DeleteClinic([CustomizeValidator(RuleSet = "Delete"), FromBody]im_employee_clinic request)
{
if (request.ID == 0)
return new ApiResponse(ResponseType.ParameterError, "参数ID无效!");
if (!employeeService.DeleteClinic(request))
return new ApiResponse(ResponseType.Fail);
return new ApiResponse(ResponseType.OK);
}
}
}
\ No newline at end of file
......@@ -480,6 +480,34 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.GetEmployeeClinicList(Performance.EntityModels.im_employee_clinic)">
<summary>
获取临床人员列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.InsertClinic(Performance.EntityModels.im_employee_clinic)">
<summary>
新增临床人员
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.UpdateClinic(Performance.EntityModels.im_employee_clinic)">
<summary>
修改临床人员
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.DeleteClinic(Performance.EntityModels.im_employee_clinic)">
<summary>
删除临床人员
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.GuaranteeController.Guarantee(Performance.DtoModels.GuaranteeRequest)">
<summary>
保底绩效配置列表
......
......@@ -142,6 +142,10 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
Adjust = t.Max(p => p.Adjust),
});
var empolyeeList = perforImemployeeclinicRepository.GetEntities(t => t.AllotID == allot.ID && t.UnitType == UnitType.特殊核算组.ToString());
List<ComputeEmployee> computeEmployees = Mapper.Map<List<ComputeEmployee>>(empolyeeList);
List<ComputeResult> computeList = new List<ComputeResult>();
foreach (var group in groupSpeList)
{
//获取需要聚合的科室
......@@ -176,10 +180,63 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
res.GiveFee = (sumValue + (group.OtherPerfor ?? 0) + (group.Punishment ?? 0));
res.RealGiveFee = res.GiveFee * (group.Adjust == 0 ? 1 : group.Adjust);
res.Avg = group.Number != 0 ? res.GiveFee / group.Number : null;
res.ResultsTotalFee = 0;
res.ResultsTotalFee = sumValue;
resDataList.Add(res);
}
var empolyee = computeEmployees.FirstOrDefault(t => t.AccountingUnit == group.AccountingUnit);
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(),
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);
perforRescomputeRepository.AddRange(computes.ToArray());
perforResspecialunitRepository.AddRange(resDataList.ToArray());
}
}
......
......@@ -18,15 +18,20 @@ public class EmployeeService : IAutoInjection
private PerforImemployeeRepository perforImemployeeRepository;
private PerforPersheetRepository perforPersheetRepository;
private PerforPerallotRepository perforPerallotRepository;
private PerforImemployeeclinicRepository perforImemployeeclinicRepository;
public EmployeeService(PerforImemployeeRepository perforImemployeeRepository,
PerforPersheetRepository perforPersheetRepository,
PerforPerallotRepository perforPerallotRepository)
PerforPerallotRepository perforPerallotRepository,
PerforImemployeeclinicRepository perforImemployeeclinicRepository)
{
this.perforImemployeeRepository = perforImemployeeRepository;
this.perforPersheetRepository = perforPersheetRepository;
this.perforPerallotRepository = perforPerallotRepository;
this.perforImemployeeclinicRepository = perforImemployeeclinicRepository;
}
#region 行政人员
/// <summary>
///获取人员信息
/// </summary>
......@@ -65,7 +70,7 @@ public im_employee Insert(EmployeeRequest request)
var sheet = perforPersheetRepository.GetEntity(t => t.AllotID == request.AllotID && t.SheetType == (int)SheetType.Employee);
if (sheet == null)
{
sheet = new per_sheet { AllotID = allot.ID, SheetName = "医院人员名单", SheetType = (int)SheetType.Employee, Source = 1 };
sheet = new per_sheet { AllotID = allot.ID, SheetName = "行政人员名单", SheetType = (int)SheetType.Employee, Source = 1 };
perforPersheetRepository.Add(sheet);
}
......@@ -121,5 +126,92 @@ public bool Delete(EmployeeRequest request)
return perforImemployeeRepository.Remove(employee);
}
#endregion
#region 临床人员
/// <summary>
///获取临床人员列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public List<im_employee_clinic> GetEmployeeClinicList(int allotId)
{
var employee = perforImemployeeclinicRepository.GetEntities(t => t.AllotID == allotId);
return employee?.OrderBy(t => t.RowNumber).ToList();
}
/// <summary>
/// 新增临床人员
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public im_employee_clinic InsertClinic(im_employee_clinic request)
{
var allot = perforPerallotRepository.GetEntity(t => t.ID == request.AllotID);
if (allot == null)
throw new PerformanceException("绩效方案不存在");
var sheet = perforPersheetRepository.GetEntity(t => t.AllotID == request.AllotID && t.SheetType == (int)SheetType.ClinicEmployee);
if (sheet == null)
{
sheet = new per_sheet { AllotID = allot.ID, SheetName = "临床人员名单", SheetType = (int)SheetType.Employee, Source = 1 };
perforPersheetRepository.Add(sheet);
}
request.SheetID = sheet.ID;
perforImemployeeclinicRepository.Add(request);
return request;
}
/// <summary>
/// 修改临床人员信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public im_employee_clinic UpdateClinic(im_employee_clinic request)
{
var employee = perforImemployeeclinicRepository.GetEntity(t => t.ID == request.ID);
if (employee == null)
throw new PerformanceException("该人员不存在");
employee.AccountingUnit = request.AccountingUnit;
employee.DoctorName = request.DoctorName;
employee.UnitType = request.UnitType;
employee.Department = request.Department;
employee.JobTitle = request.JobTitle;
employee.PostCoefficient = request.PostCoefficient;
employee.ScoreAverageRate = request.ScoreAverageRate;
employee.Efficiency = request.Efficiency;
employee.Scale = request.Scale;
employee.Management = request.Management;
employee.Attendance = request.Attendance;
employee.PeopleNumber = request.PeopleNumber;
employee.Workload = request.Workload;
employee.OtherPerfor = request.OtherPerfor;
employee.Punishment = request.Punishment;
employee.Adjust = request.Adjust;
employee.Grant = request.Grant;
//修改人员信息
perforImemployeeclinicRepository.Update(employee);
return employee;
}
/// <summary>
/// 删除临床人员
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public bool DeleteClinic(im_employee_clinic request)
{
var employee = perforImemployeeclinicRepository.GetEntity(t => t.ID == request.ID);
if (null == employee)
throw new PerformanceException("该人员不存在");
return perforImemployeeclinicRepository.Remove(employee);
}
#endregion
}
}
......@@ -157,10 +157,10 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
List<ComputeResult> computeList = new List<ComputeResult>();
foreach (var accountbasic in accountbasicList)
{
//if (!accountbasic.ManagerNumber.HasValue || accountbasic.ManagerNumber.Value == 0)
// continue;
if ((!accountbasic.DoctorDirectorNumber.HasValue && "皮肤科" != accountbasic.DoctorAccountingUnit) || (accountbasic.DoctorDirectorNumber.Value == 0 && "皮肤科" != accountbasic.DoctorAccountingUnit))
if (!accountbasic.DoctorDirectorNumber.HasValue || accountbasic.DoctorDirectorNumber.Value == 0)
continue;
//if ((!accountbasic.DoctorDirectorNumber.HasValue && "皮肤科" != accountbasic.DoctorAccountingUnit) || (accountbasic.DoctorDirectorNumber.Value == 0 && "皮肤科" != accountbasic.DoctorAccountingUnit))
// continue;
//原不存在科主任则跳过科主任绩效计算20190920新都
//是否共用核算单元
......@@ -243,7 +243,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
Remark = isShare ? "特殊科室主任,共用核算单元" : ""
};
//应发管理绩效
compute.ShouldGiveFee = (compute.Efficiency + compute.Scale) * accountbasic.DoctorGrant;
compute.ShouldGiveFee = (compute.Efficiency + compute.Scale) * (empolyee.Management ?? 0);
//绩效合计
compute.PerforSumFee = compute.Avg + compute.ShouldGiveFee;
//应发绩效
......@@ -258,8 +258,6 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_a
return computeList;
}
/// <summary>
/// 院领导、业务中层、工勤人员 计算
/// </summary>
......@@ -327,6 +325,4 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
return computeList;
}
}
}
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