Commit 71cb321f by lcx

二次绩效其他模板补充预留比例

parent f9392e64
...@@ -500,28 +500,47 @@ private void SupplementOtherPerfor(ag_secondallot secondAllot, List<BodyItem> bo ...@@ -500,28 +500,47 @@ private void SupplementOtherPerfor(ag_secondallot secondAllot, List<BodyItem> bo
}); });
var lastNumber = rowNumberList.Max() + 1; var lastNumber = rowNumberList.Max() + 1;
var employeeColumns = new List<Tuple<string, string>>
var employeeColumns = new List<Tuple<string, string, Func<per_employee, object>>>
{ {
new Tuple<string, string>("人员工号", "PersonnelNumber"), new Tuple<string, string, Func<per_employee, object>>("人员工号", "PersonnelNumber", (t) => t.PersonnelNumber),
new Tuple<string, string>("姓名", "FullName"), new Tuple<string, string, Func<per_employee, object>>("姓名", "FullName", (t) => t.DoctorName),
new Tuple<string, string>("医院其他绩效", "OtherPerformance") new Tuple<string, string, Func<per_employee, object>>(
"岗位", "Post",
(t) => (t.Duty?.IndexOf("主任") > -1 || t.Duty?.IndexOf("护士长") > -1) ? "科主任/护士长" : "其他"),
new Tuple<string, string, Func<per_employee, object>>("出勤", "ActualAttendance", (t) => t.AttendanceDay),
new Tuple<string, string, Func<per_employee, object>>("人员系数", "StaffCoefficient", (t) => 1),
new Tuple<string, string, Func<per_employee, object>>("职称", "JobTitle", (t) => t.JobTitle),
new Tuple<string, string, Func<per_employee, object>>("预留年度考核比例", "ReservedRatio", (t) => t.ReservedRatio),
new Tuple<string, string, Func<per_employee, object>>("医院其他绩效", "OtherPerformance", (t) => 0)
}; };
var specialColumns = new string[] { "FullName", "OtherPerformance" };
foreach (var item in groupData) foreach (var item in groupData)
{ {
foreach (var column in employeeColumns) foreach (var column in employeeColumns)
{ {
var headItem = otherShowColumns.FirstOrDefault(w => w.FiledName == column.Item1 && w.FiledId == column.Item2 && w.Type == (int)TempColumnType.TableFixedColumns); if (employeeList.Any(t => t.PersonnelNumber == item.PersonnelNumber)
if (headItem == null) continue; && employeeList.FirstOrDefault(t => t.PersonnelNumber == item.PersonnelNumber) is per_employee employee
&& employee.UnitType == secondAllot.UnitType)
var data = new BodyItem(headItem); {
data.RowNumber = lastNumber; var headItem = otherShowColumns.FirstOrDefault(w => w.FiledName == column.Item1 && w.FiledId == column.Item2 && w.Type == (int)TempColumnType.TableFixedColumns);
if (headItem == null) continue;
data.Value = column.Item2 == "OtherPerformance"
? item.Amount var data = new BodyItem(headItem);
: column.Item2 == "PersonnelNumber" ? item.PersonnelNumber : item.DoctorName; data.RowNumber = lastNumber;
if (specialColumns.Contains(column.Item2))
bodyItems.Add(data); {
data.Value = column.Item2 == "OtherPerformance" ? item.Amount : item.DoctorName;
}
else
{
var value = column.Item3.Invoke(employee);
data.Value = value?.ToString();
}
bodyItems.Add(data);
}
} }
lastNumber++; lastNumber++;
} }
...@@ -774,19 +793,27 @@ private void SupplementSecondDetail(ag_secondallot second, List<per_employee> em ...@@ -774,19 +793,27 @@ private void SupplementSecondDetail(ag_secondallot second, List<per_employee> em
if (perapramounts != null && perapramounts.Any(t => t.AccountingUnit == second.Department)) if (perapramounts != null && perapramounts.Any(t => t.AccountingUnit == second.Department))
{ {
var groupData = perapramounts.Where(t => t.AccountingUnit == second.Department).GroupBy(t => t.PersonnelNumber) var groupData = perapramounts.Where(t => t.AccountingUnit == second.Department).GroupBy(t => t.PersonnelNumber)
.Select(t => new .Select(t => new ag_othersource
{ {
PersonnelNumber = t.Key, SecondId = second.Id,
DoctorName = t.FirstOrDefault(w => !string.IsNullOrEmpty(w.DoctorName))?.DoctorName, WorkNumber = t.Key,
Amount = t.Sum(w => w.Amount) Name = t.FirstOrDefault(w => !string.IsNullOrEmpty(w.DoctorName))?.DoctorName,
OtherPerformance = t.Sum(w => w.Amount)
}); });
result.AddRange(groupData.Select(t => new ag_othersource
foreach (var item in groupData)
{ {
SecondId = second.Id, if (employees.Any(t => t.PersonnelNumber == item.WorkNumber)
WorkNumber = t.PersonnelNumber, && employees.FirstOrDefault(t => t.PersonnelNumber == item.WorkNumber) is per_employee employee
Name = t.DoctorName, && employee.UnitType == second.UnitType)
OtherPerformance = t.Amount {
})); item.ReservedRatio = employee.ReservedRatio;
item.Department = employee.AccountingUnit;
item.WorkPost = employee.JobTitle;
result.Add(item);
}
}
} }
} }
......
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