Commit 1aec9af6 by lcx

全院核算绩效发放 添加字段显示

parent 943a6d0b
...@@ -2805,19 +2805,19 @@ ...@@ -2805,19 +2805,19 @@
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.DeptResponse.ID"> <member name="P:Performance.DtoModels.DeptResponse.ID">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.DeptResponse.AllotID"> <member name="P:Performance.DtoModels.DeptResponse.AllotID">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.DeptResponse.SheetID"> <member name="P:Performance.DtoModels.DeptResponse.SheetID">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.DeptResponse.UnitName"> <member name="P:Performance.DtoModels.DeptResponse.UnitName">
<summary> <summary>
...@@ -2959,6 +2959,21 @@ ...@@ -2959,6 +2959,21 @@
调节后其他绩效 调节后其他绩效
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.DeptResponse.AssessLaterPerforTotal">
<summary>
考核后绩效
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.AssessLaterManagementFee">
<summary>
考核后管理绩效
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.AprPerforAmount">
<summary>
其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.DirectorResponse.TypeName"> <member name="P:Performance.DtoModels.DirectorResponse.TypeName">
<summary> <summary>
绩效类型 绩效类型
......
...@@ -7,17 +7,17 @@ namespace Performance.DtoModels ...@@ -7,17 +7,17 @@ namespace Performance.DtoModels
public class DeptResponse public class DeptResponse
{ {
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public int ID { get; set; } public int ID { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> AllotID { get; set; } public Nullable<int> AllotID { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> SheetID { get; set; } public Nullable<int> SheetID { get; set; }
...@@ -152,13 +152,30 @@ public class DeptResponse ...@@ -152,13 +152,30 @@ public class DeptResponse
/// 考核前其他绩效 /// 考核前其他绩效
/// </summary> /// </summary>
public Nullable<decimal> AssessBeforeOtherFee { get; set; } public Nullable<decimal> AssessBeforeOtherFee { get; set; }
/// <summary> /// <summary>
/// 考核后其他绩效 /// 考核后其他绩效
/// </summary> /// </summary>
public Nullable<decimal> AssessLaterOtherFee { get; set; } public Nullable<decimal> AssessLaterOtherFee { get; set; }
/// <summary> /// <summary>
/// 调节后其他绩效 /// 调节后其他绩效
/// </summary> /// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; } public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 考核后绩效
/// </summary>
public Nullable<decimal> AssessLaterPerforTotal { get; set; }
/// <summary>
/// 考核后管理绩效
/// </summary>
public Nullable<decimal> AssessLaterManagementFee { get; set; }
/// <summary>
/// 其他绩效
/// </summary>
public Nullable<decimal> AprPerforAmount { get; set; }
} }
} }
...@@ -320,54 +320,65 @@ public List<DeptResponse> GetAdminPerformance(int allotId) ...@@ -320,54 +320,65 @@ public List<DeptResponse> GetAdminPerformance(int allotId)
result.ForEach(t => result.ForEach(t =>
{ {
t.UnitName = ((UnitType)t.UnitType).ToString(); t.UnitName = ((UnitType)t.UnitType).ToString();
t.ScoringPerfor = t.PerforFee * (t.ScoringAverage ?? 0); t.AssessLaterPerforTotal = Math.Round((t.PerforTotal * t.ScoringAverage + t.MedicineExtra + t.MaterialsExtra + t.Extra + t.AssessLaterOtherFee) ?? 0);
}); });
result = result.OrderBy(t => t.UnitType).ThenBy(t => t.AccountingUnit).ToList(); result = result.OrderBy(t => t.UnitType).ThenBy(t => t.AccountingUnit).ToList();
} }
var accountType = new List<AccountUnitType> { AccountUnitType.行政高层, AccountUnitType.行政中层, AccountUnitType.行政工勤 }; var list = _perforRescomputeRepository.GetEntities(t => t.AllotID == allotId);
var list = _perforRescomputeRepository.GetEntities(t => t.AllotID == allotId && accountType.Select(a => a.ToString()).Contains(t.AccountType));
if (list == null || !list.Any()) return result; if (list == null || !list.Any()) return result;
List<DeptResponse> adminPerfor = list.GroupBy(t => new { t.AccountingUnit, t.AccountType }) var isShowManage = IsShowManage(allotId);
.Select(t => new DeptResponse
{ Dictionary<string, string> dict = new Dictionary<string, string>
UnitName = t.Key.AccountType, {
AccountingUnit = t.Key.AccountingUnit, { "科主任", "医生组" },
Department = t.Key.AccountingUnit, { "护士长", "护理组" },
Number = t.Count(), { AccountUnitType.行政高层.ToString(), AccountUnitType.行政高层.ToString() },
//Extra = t.FirstOrDefault(group => group.Punishment > 0)?.Punishment, // 医院奖罚 { AccountUnitType.行政中层.ToString(), AccountUnitType.行政中层.ToString() },
//ScoringAverage = t.FirstOrDefault(group => group.ScoreAverageRate > 0)?.ScoreAverageRate, //考核得分率 { AccountUnitType.行政工勤.ToString(), AccountUnitType.行政工勤.ToString() }
//AdjustFactor = t.FirstOrDefault(group => group.Adjust > 0)?.Adjust, //调节系数 };
//WorkloadFee = t.Sum(group => group.Workload), //工作量绩效
//PerforTotal = t.Sum(group => group.RealGiveFee), //绩效合计 List<DeptResponse> adminPerfor = list.GroupBy(t => new { t.AccountingUnit, t.AccountType }).Select(t =>
//ScoringPerfor = t.Sum(group => group.RealGiveFee) * (t.FirstOrDefault(group => group.ScoreAverageRate > 0)?.ScoreAverageRate ?? 0), {
Avg = t.Sum(group => group.RealGiveFee) / t.Count(), //人均绩效 string unitName = result.Where(w => !dict.Values.Contains(w.UnitName)).FirstOrDefault(w => w.AccountingUnit == t.Key.AccountingUnit)?.UnitName ?? "";
OtherPerfor1 = t.Sum(group => group.OtherPerfor), return new DeptResponse
RealGiveFee = t.Sum(group => group.RealGiveFee ?? 0) + t.Sum(group => group.OtherPerfor ?? 0), //实发绩效 {
}).ToList(); UnitName = !dict.Values.Contains(unitName) && !string.IsNullOrEmpty(unitName) ? unitName : dict.ContainsKey(t.Key.AccountType) ? dict[t.Key.AccountType] : "未知",
AccountingUnit = t.Key.AccountingUnit,
Department = t.Key.AccountingUnit,
Number = t.Count(),
OtherPerfor1 = t.Sum(group => group.OtherPerfor),
AssessLaterManagementFee = isShowManage == 1 ? t.Sum(group => group.RealGiveFee ?? 0) + t.Sum(group => group.OtherPerfor ?? 0) //实发绩效
: Math.Round((t.Max(m => m.ShouldGiveFee) * t.Max(m => m.ScoreAverageRate) * t.Max(m => m.Attendance) ?? 0.0M) + t.Max(m => m.Punishment ?? 0.0M)) //考核后管理绩效
};
}).ToList();
result.AddRange(adminPerfor); result.AddRange(adminPerfor);
result = result.GroupBy(t => new { t.AccountingUnit, t.UnitName }) result = result.GroupBy(t => new { t.AccountingUnit, t.UnitName }).Select(t => new DeptResponse
.Select(t => new DeptResponse {
{ UnitName = t.Key.UnitName,
UnitName = t.Key.UnitName, AccountingUnit = t.Key.AccountingUnit,
AccountingUnit = t.Key.AccountingUnit, Department = t.Key.AccountingUnit,
Department = t.Key.AccountingUnit, PerforFee = t.Sum(group => group.PerforFee),
PerforFee = t.Sum(group => group.PerforFee), WorkloadFee = t.Sum(group => group.WorkloadFee),
WorkloadFee = t.Sum(group => group.WorkloadFee), AssessBeforeOtherFee = t.Sum(group => group.AssessBeforeOtherFee),
AssessBeforeOtherFee = t.Sum(group => group.AssessBeforeOtherFee), ScoringAverage = t.Sum(group => group.ScoringAverage),
ScoringAverage = t.Sum(group => group.ScoringAverage), MedicineExtra = t.Sum(group => group.MedicineExtra),
MedicineExtra = t.Sum(group => group.MedicineExtra), Extra = t.Sum(group => group.Extra),
Extra = t.Sum(group => group.Extra), AssessLaterOtherFee = t.Sum(group => group.AssessLaterOtherFee),
AssessLaterOtherFee = t.Sum(group => group.AssessLaterOtherFee), AdjustFactor = t.Sum(group => group.AdjustFactor),
AdjustFactor = t.Sum(group => group.AdjustFactor), AdjustLaterOtherFee = t.Sum(group => group.AdjustLaterOtherFee),
AdjustLaterOtherFee = t.Sum(group => group.AdjustLaterOtherFee), PerforTotal = t.Sum(group => group.PerforTotal),
RealGiveFee = t.Sum(group => group.RealGiveFee), AssessLaterPerforTotal = t.Sum(group => group.AssessLaterPerforTotal),
}).ToList(); AssessLaterManagementFee = t.Sum(group => group.AssessLaterManagementFee),
RealGiveFee = t.Sum(group => group.RealGiveFee) + t.Sum(group => group.AssessLaterManagementFee),
}).ToList();
var enumItems = EnumHelper.GetItems<AccountUnitType>(); var enumItems = EnumHelper.GetItems<AccountUnitType>();
result = result.OrderBy(t => enumItems.FirstOrDefault(e => e.Name == t.UnitName)?.Value)/*.ThenBy(t => t.AccountingUnit)*/.ToList();
result = result.OrderBy(t => enumItems.FirstOrDefault(e => e.Name == t.UnitName)?.Value)/*.ThenBy(t => t.AccountingUnit)*/.ToList();
return result; return result;
} }
......
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