Commit bb6b2950 by ruyun.zhang@suvalue.com

Merge branch 'feature/二次分配行政工勤工作量带出' into develop

parents 7b8c1c74 d33a2b96
...@@ -90,13 +90,16 @@ public SecondDetailDto Load(int secondId, ComputeMode computeMode, EmployeeSourc ...@@ -90,13 +90,16 @@ public SecondDetailDto Load(int secondId, ComputeMode computeMode, EmployeeSourc
var allot = _perallotRepository.GetEntity(t => t.ID == second.AllotId); var allot = _perallotRepository.GetEntity(t => t.ID == second.AllotId);
if (allot == null) throw new PerformanceException("绩效记录不存在!"); if (allot == null) throw new PerformanceException("绩效记录不存在!");
// 填报模板带出 行政工勤 绩效
var computes = _rescomputeRepository.GetEntities(w => w.AllotID == allot.ID && UnitTypeUtil.IsOffice(w.AccountType));
var loads = GetWorkLoads(allot.HospitalId, second.UnitType, second.Department); var loads = GetWorkLoads(allot.HospitalId, second.UnitType, second.Department);
var employees = _peremployeeRepository.GetEntities(w => w.AllotId == second.AllotId);
HandsonTableBase handson = GetHandsonTable(computeMode, loads); HandsonTableBase handson = GetHandsonTable(computeMode, loads);
// 先占位,更加选择加载指定范围数据 // 先占位,更加选择加载指定范围数据
// 加载方式分 保存,上次,字典,测算表 // 加载方式分 保存,上次,字典,测算表
var loadEmployees = LoadEmployees(allot, second, overrideMode, out bool isSave); var loadEmployees = LoadEmployees(allot, second, employees, overrideMode, out bool isSave);
// 保存后则不再设置默认值 // 保存后则不再设置默认值
if (!isSave) if (!isSave)
{ {
...@@ -106,6 +109,9 @@ public SecondDetailDto Load(int secondId, ComputeMode computeMode, EmployeeSourc ...@@ -106,6 +109,9 @@ public SecondDetailDto Load(int secondId, ComputeMode computeMode, EmployeeSourc
item.StaffCoefficient = item.StaffCoefficient ?? 1; // 人员系数 item.StaffCoefficient = item.StaffCoefficient ?? 1; // 人员系数
item.ActualAttendance = item.ActualAttendance ?? DateTime.DaysInMonth(allot.Year, allot.Month); // 出勤 item.ActualAttendance = item.ActualAttendance ?? DateTime.DaysInMonth(allot.Year, allot.Month); // 出勤
item.TitleCoefficient = item.TitleCoefficient ?? 1; // 职称系数 item.TitleCoefficient = item.TitleCoefficient ?? 1; // 职称系数
// 填报模板带出 行政工勤 绩效
if (computeMode == ComputeMode.NotCalculate)
item.WorkPerformance = computes?.Where(w => w.AccountingUnit == second.Department && w.JobNumber?.Trim() == item.WorkNumber?.Trim())?.Sum(w => w.GiveFee) ?? 0;
} }
} }
//if (overrideMode == EmployeeSource.Workload) isSave = false; //if (overrideMode == EmployeeSource.Workload) isSave = false;
...@@ -292,16 +298,16 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -292,16 +298,16 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
if (workitem.ItemId.StartsWithIgnoreCase($"SingleAwards_")) if (workitem.ItemId.StartsWithIgnoreCase($"SingleAwards_"))
{ {
/* 如果是已保存数据,则加载原始数据,否则加载工作量自动带出 */ /* 如果是已保存数据,则加载原始数据,否则加载工作量自动带出 */
value = isSave value = isSave
? bodyDynamic?.FirstOrDefault(w => w.BodyId == employee.Id && w.WorkloadId == workitem.Id)?.Value ? bodyDynamic?.FirstOrDefault(w => w.BodyId == employee.Id && w.WorkloadId == workitem.Id)?.Value
: secondWorkload.FirstOrDefault(w => w.PersonnelNumber == employee.WorkNumber && w.DoctorName == employee.Name && workitem.ItemId.EqualsIgnoreCase(w.ItemId))?.Value; : secondWorkload.FirstOrDefault(w => w.PersonnelNumber == employee.WorkNumber && w.DoctorName == employee.Name && workitem.ItemId.EqualsIgnoreCase(w.ItemId))?.Value;
} }
else else
{ {
/* 如果是已保存数据,则加载原始数据,否则加载工作量自动带出 */ /* 如果是已保存数据,则加载原始数据,否则加载工作量自动带出 */
value = isSave && overrideMode != EmployeeSource.Workload value = isSave && overrideMode != EmployeeSource.Workload
? bodyDynamic?.FirstOrDefault(w => w.BodyId == employee.Id && w.WorkloadId == workitem.Id)?.Value ? bodyDynamic?.FirstOrDefault(w => w.BodyId == employee.Id && w.WorkloadId == workitem.Id)?.Value
: secondWorkload.FirstOrDefault(w => w.PersonnelNumber == employee.WorkNumber && w.DoctorName == employee.Name && workitem.ItemId.EqualsIgnoreCase(w.ItemId))?.Value; : secondWorkload.FirstOrDefault(w => w.PersonnelNumber == employee.WorkNumber && w.DoctorName == employee.Name && workitem.ItemId.EqualsIgnoreCase(w.ItemId))?.Value;
} }
dict.AddOrUpdate(workitem.ItemId, value); dict.AddOrUpdate(workitem.ItemId, value);
} }
...@@ -388,9 +394,8 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -388,9 +394,8 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
/// <param name="mode"></param> /// <param name="mode"></param>
/// <param name="isSave">true 保存 false 未保存</param> /// <param name="isSave">true 保存 false 未保存</param>
/// <returns></returns> /// <returns></returns>
private List<ag_bodysource> LoadEmployees(per_allot allot, ag_secondallot second, EmployeeSource mode, out bool isSave) private List<ag_bodysource> LoadEmployees(per_allot allot, ag_secondallot second, List<per_employee> employees, EmployeeSource mode, out bool isSave)
{ {
var employees = _peremployeeRepository.GetEntities(w => w.AllotId == second.AllotId);
isSave = false; isSave = false;
// 默认流程 // 默认流程
if (new[] { EmployeeSource.Initial, EmployeeSource.Workload }.Contains(mode)) if (new[] { EmployeeSource.Initial, EmployeeSource.Workload }.Contains(mode))
...@@ -447,17 +452,15 @@ List<ag_bodysource> LoadEmployeeByDictionary(ag_secondallot second, List<per_emp ...@@ -447,17 +452,15 @@ List<ag_bodysource> LoadEmployeeByDictionary(ag_secondallot second, List<per_emp
foreach (var personnelNumber in numbers) foreach (var personnelNumber in numbers)
{ {
var existEmp = employees.FirstOrDefault(w => w.PersonnelNumber?.Trim() == personnelNumber?.Trim()); var existEmp = employees.FirstOrDefault(w => w.PersonnelNumber?.Trim() == personnelNumber?.Trim());
if (existEmp == null)
continue;
var data = new ag_bodysource var data = new ag_bodysource
{ {
SecondId = second.Id, SecondId = second.Id,
Department = existEmp.AccountingUnit, Department = existEmp?.AccountingUnit ?? "",
WorkNumber = existEmp.PersonnelNumber, WorkNumber = personnelNumber,
Name = existEmp.DoctorName, Name = existEmp?.DoctorName ?? "花名册无信息",
JobTitle = existEmp.JobTitle, JobTitle = existEmp?.JobTitle ?? "",
ReservedRatio = existEmp.ReservedRatio, ReservedRatio = existEmp?.ReservedRatio ?? 1,
Post = "", Post = "",
}; };
// 带出上次 人员系数、职称系数 // 带出上次 人员系数、职称系数
...@@ -1338,31 +1341,32 @@ public object RedistributionEmployee(SecondEmployeeDto request) ...@@ -1338,31 +1341,32 @@ public object RedistributionEmployee(SecondEmployeeDto request)
if (employees != null) if (employees != null)
{ {
Func<per_employee, decimal?> getDistPerformance = (emp) => 0; Func<per_employee, decimal?> getDistPerformance = (emp) => 0;
// 不计算模板时,带出工作量绩效(一次分配中的应发绩效) //// 不计算模板时,带出工作量绩效(一次分配中的应发绩效)
if (request.ComputeMode == (int)ComputeMode.NotCalculate) //if (request.ComputeMode == (int)ComputeMode.NotCalculate)
{ //{
if (UnitTypeUtil.IsOffice(second.UnitType)) // if (UnitTypeUtil.IsOffice(second.UnitType))
{ // {
var distPerformance = _rescomputeRepository.GetEntities(t => t.AllotID == second.AllotId && employees.Select(s => s.PersonnelNumber).Contains(t.JobNumber)); // // 填报模板带出 行政工勤 绩效
getDistPerformance = (emp) => // var distPerformance = _rescomputeRepository.GetEntities(t => t.AllotID == second.AllotId && employees.Select(s => s.PersonnelNumber).Contains(t.JobNumber));
{ // getDistPerformance = (emp) =>
if (second.Department == emp.AccountingUnit) // {
return distPerformance?.Where(w => w.JobNumber?.Trim() == emp.PersonnelNumber?.Trim())?.Sum(w => w.GiveFee); // if (second.Department == emp.AccountingUnit)
return 0; // return distPerformance?.Where(w => w.JobNumber?.Trim() == emp.PersonnelNumber?.Trim())?.Sum(w => w.GiveFee) ?? 0;
}; // return 0;
} // };
} // }
//}
var secondWorkload = GetSecondWorkloadByValue(second.AllotId.Value, second.UnitType, second.Department); var secondWorkload = GetSecondWorkloadByValue(second.AllotId.Value, second.UnitType, second.Department);
var monthDays = DateTime.DaysInMonth(allot.Year, allot.Month); var monthDays = DateTime.DaysInMonth(allot.Year, allot.Month);
foreach (var employee in employees) foreach (var employee in employees)
{ {
Dictionary<string, object> item = new Dictionary<string, object>(); Dictionary<string, object> item = new Dictionary<string, object>();
// 不计算模板时,带出工作量绩效(一次分配中的应发绩效) //// 不计算模板时,带出工作量绩效(一次分配中的应发绩效)
if (request.ComputeMode == (int)ComputeMode.NotCalculate) //if (request.ComputeMode == (int)ComputeMode.NotCalculate)
{ //{
item.Add(nameof(ag_bodysource.WorkPerformance), getDistPerformance(employee)); // item.Add(nameof(ag_bodysource.WorkPerformance), getDistPerformance(employee));
} //}
item.Add(nameof(per_employee.UnitType), employee.UnitType); item.Add(nameof(per_employee.UnitType), employee.UnitType);
item.Add(nameof(ag_bodysource.SecondId), request.SecondId); item.Add(nameof(ag_bodysource.SecondId), request.SecondId);
......
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