二次分配提交数据带出

parent 9e935df2
...@@ -612,7 +612,7 @@ public ApiResponse RedistributionCheck([FromBody] SecondComputeDto request) ...@@ -612,7 +612,7 @@ public ApiResponse RedistributionCheck([FromBody] SecondComputeDto request)
if (allot == null) if (allot == null)
throw new PerformanceException("绩效记录不存在!"); throw new PerformanceException("绩效记录不存在!");
// 年资职称绩效占比与工作量绩效占比 校验 // 年资职称绩效占比与工作量绩效占比 校验
var loads = _redistributionService.GetWorkLoads(allot.HospitalId, second.UnitType, second.Department); var loads = _redistributionService.GetWorkLoads(allot, second);
var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads); var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads);
if ((ComputeMode)request.ComputeMode != ComputeMode.NotCalculate) if ((ComputeMode)request.ComputeMode != ComputeMode.NotCalculate)
...@@ -681,7 +681,7 @@ public ApiResponse RedistributionCompute([FromBody] SecondComputeDto request) ...@@ -681,7 +681,7 @@ public ApiResponse RedistributionCompute([FromBody] SecondComputeDto request)
if (allot == null) if (allot == null)
throw new PerformanceException("绩效记录不存在!"); throw new PerformanceException("绩效记录不存在!");
// 年资职称绩效占比与工作量绩效占比 校验 // 年资职称绩效占比与工作量绩效占比 校验
var loads = _redistributionService.GetWorkLoads(allot.HospitalId, second.UnitType, second.Department); var loads = _redistributionService.GetWorkLoads(allot, second);
var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads); var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads);
if ((ComputeMode)request.ComputeMode != ComputeMode.NotCalculate) if ((ComputeMode)request.ComputeMode != ComputeMode.NotCalculate)
...@@ -752,7 +752,7 @@ public ApiResponse RedistributionSave([FromBody] SecondComputeDto request) ...@@ -752,7 +752,7 @@ public ApiResponse RedistributionSave([FromBody] SecondComputeDto request)
if (allot == null) if (allot == null)
throw new PerformanceException("绩效记录不存在!"); throw new PerformanceException("绩效记录不存在!");
var loads = _redistributionService.GetWorkLoads(allot.HospitalId, second.UnitType, second.Department); var loads = _redistributionService.GetWorkLoads(allot, second);
var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads); var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads);
// 二次分配人员信息 校验 // 二次分配人员信息 校验
var checkDatas = _redistributionService.CheckData(allot, second, (ComputeMode)request.ComputeMode, request.Body, loads); var checkDatas = _redistributionService.CheckData(allot, second, (ComputeMode)request.ComputeMode, request.Body, loads);
...@@ -814,7 +814,7 @@ public ApiResponse RedistributionSubmit([FromBody] SecondComputeDto request) ...@@ -814,7 +814,7 @@ public ApiResponse RedistributionSubmit([FromBody] SecondComputeDto request)
if (!new int[] { (int)AllotStates.GenerateSucceed, (int)AllotStates.Archive }.Contains(allot.States)) if (!new int[] { (int)AllotStates.GenerateSucceed, (int)AllotStates.Archive }.Contains(allot.States))
throw new PerformanceException("绩效未下发,无法提交!"); throw new PerformanceException("绩效未下发,无法提交!");
var loads = _redistributionService.GetWorkLoads(allot.HospitalId, second.UnitType, second.Department); var loads = _redistributionService.GetWorkLoads(allot, second);
var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads); var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads);
// 二次分配人员信息 校验 // 二次分配人员信息 校验
...@@ -913,7 +913,7 @@ public ApiResponse RedistributionDetail([FromBody] SecondBaseDto request) ...@@ -913,7 +913,7 @@ public ApiResponse RedistributionDetail([FromBody] SecondBaseDto request)
if (allot == null) if (allot == null)
throw new PerformanceException("绩效记录不存在!"); throw new PerformanceException("绩效记录不存在!");
// 年资职称绩效占比与工作量绩效占比 校验 // 年资职称绩效占比与工作量绩效占比 校验
var loads = _redistributionService.GetWorkLoads(allot.HospitalId, second.UnitType, second.Department); var loads = _redistributionService.GetWorkLoads(allot, second);
var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads); var workloadGroups = _redistributionService.GetTopWorkloadBodyGroups(loads);
// 返回信息 // 返回信息
......
...@@ -103,7 +103,7 @@ public SecondDetailDto Load(int secondId, ComputeMode computeMode, EmployeeSourc ...@@ -103,7 +103,7 @@ public SecondDetailDto Load(int secondId, ComputeMode computeMode, EmployeeSourc
// 填报模板带出 行政工勤 绩效 // 填报模板带出 行政工勤 绩效
var computes = _rescomputeRepository.GetEntities(w => w.AllotID == allot.ID && UnitTypeUtil.Office.Contains(w.AccountType)); var computes = _rescomputeRepository.GetEntities(w => w.AllotID == allot.ID && UnitTypeUtil.Office.Contains(w.AccountType));
var loads = GetWorkLoads(allot.HospitalId, second.UnitType, second.Department); var loads = GetWorkLoads(allot, second);
var employees = _peremployeeRepository.GetEntities(w => w.AllotId == second.AllotId); var employees = _peremployeeRepository.GetEntities(w => w.AllotId == second.AllotId);
HandsonTableBase handson = GetHandsonTable(allot, computeMode, loads); HandsonTableBase handson = GetHandsonTable(allot, computeMode, loads);
...@@ -259,7 +259,10 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -259,7 +259,10 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
if (second.Status.HasValue && status.Contains(second.Status.Value)) if (second.Status.HasValue && status.Contains(second.Status.Value))
{ {
var headDynamic = _agworktypesourceRepository.GetEntities(t => t.SecondId == second.Id) ?? new List<ag_worktype_source>(); var headDynamic = _agworktypesourceRepository.GetEntities(t => t.SecondId == second.Id) ?? new List<ag_worktype_source>();
foreach (var item in headDynamic.OrderBy(t => t.Id)) var groupDatas = headDynamic
.GroupBy(w => new { w.WorkTypeId, w.SecondId, w.FieldId, w.FieldName })
.Select(w => w.OrderByDescending(w => w.Id).FirstOrDefault());
foreach (var item in groupDatas.OrderBy(t => t.Id))
{ {
maps.Add(new SecondColumnDictionary(item.FieldName, item.FieldId, true, 1, "Top", isNumber: true)); maps.Add(new SecondColumnDictionary(item.FieldName, item.FieldId, true, 1, "Top", isNumber: true));
} }
...@@ -698,20 +701,35 @@ private List<string> LoadEmployees_OfficeExcel(ag_secondallot second) ...@@ -698,20 +701,35 @@ private List<string> LoadEmployees_OfficeExcel(ag_secondallot second)
/// <summary> /// <summary>
/// 获取工作量及单项奖励 /// 获取工作量及单项奖励
/// </summary> /// </summary>
/// <param name="hospitalId"></param> /// <param name="allot"></param>
/// <param name="unitType"></param> /// <param name="second"></param>
/// <param name="accountingUnit"></param>
/// <returns></returns> /// <returns></returns>
public List<TitleValue<string, decimal?>> GetWorkLoads(int hospitalId, string unitType, string accountingUnit) public List<TitleValue<string, decimal?>> GetWorkLoads(per_allot allot, ag_secondallot second)
{
var status = (new int[] { (int)SecondAllotStatus.WaitReview, (int)SecondAllotStatus.PassAudit });
// 已提交
if (second.Status.HasValue && status.Contains(second.Status.Value))
{
var bodys = _agbodysourceRepository.GetEntities(w => w.SecondId == second.Id);
var ids = bodys.Select(w => w.Id).ToList();
var sources = _agworkloadsourceRepository.GetEntities(w => ids.Contains(w.BodyId)) ?? new List<ag_workload_source>();
var loads = sources
.OrderBy(t => t.WorkTypeId).ThenBy(t => t.Sort)
.GroupBy(w => new { w.ItemId, w.ItemName })
.Select(t => new TitleValue<string, decimal?> { Title = t.Key.ItemId, Value = t.Key.ItemName, State = t.FirstOrDefault()?.FactorValue ?? 0 })
.ToList();
return loads;
}
else
{ {
var workloads = _agworkloadRepository.GetEntities(t => t.HospitalId == hospitalId && t.Department == accountingUnit && t.UnitType == unitType) ?? new List<ag_workload>(); var workloads = _agworkloadRepository.GetEntities(t => t.HospitalId == allot.HospitalId && t.Department == second.Department && t.UnitType == second.UnitType) ?? new List<ag_workload>();
var loads = workloads var loads = workloads
.OrderBy(t => t.WorkTypeId).ThenBy(t => t.Sort) .OrderBy(t => t.WorkTypeId).ThenBy(t => t.Sort)
.Select(t => new TitleValue<string, decimal?> { Title = t.ItemId, Value = t.ItemName, State = t.FactorValue }) .Select(t => new TitleValue<string, decimal?> { Title = t.ItemId, Value = t.ItemName, State = t.FactorValue })
.ToList(); .ToList();
return loads; return loads;
} }
}
#endregion #endregion
#region 三种计算对应的格式 #region 三种计算对应的格式
...@@ -1535,7 +1553,7 @@ public object RedistributionEmployee(SecondEmployeeDto request) ...@@ -1535,7 +1553,7 @@ public object RedistributionEmployee(SecondEmployeeDto request)
if (allot == null) if (allot == null)
throw new PerformanceException("绩效记录不存在!"); throw new PerformanceException("绩效记录不存在!");
// 当前二次分配配置工作量 // 当前二次分配配置工作量
var loads = GetWorkLoads(allot.HospitalId, second.UnitType, second.Department); var loads = GetWorkLoads(allot, second);
Expression<Func<per_employee, bool>> exp = t => t.AllotId == second.AllotId; Expression<Func<per_employee, bool>> exp = t => t.AllotId == second.AllotId;
......
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