Commit ae0981df by lcx

Merge branch 'develop' into feature/审核

parents 6680b8fa cf59fc2e
...@@ -269,5 +269,22 @@ public ApiResponse SaveDeptHands(int hospitalId, SaveCollectData request) ...@@ -269,5 +269,22 @@ public ApiResponse SaveDeptHands(int hospitalId, SaveCollectData request)
personService.SaveDeptDicHands(hospitalId, request); personService.SaveDeptDicHands(hospitalId, request);
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
/// <summary>
/// 重新加载人员字典
/// </summary>
/// <param name="hospitalId"></param>
/// <param name="allotId"></param>
/// <returns></returns>
[HttpPost]
[Route("peson/{hospitalId}/reloadPersonnel/{allotId}")]
public ApiResponse ReloadPersonnel(int hospitalId, int allotId)
{
var result = personService.ReloadPersonnel(hospitalId, allotId);
if (result)
return new ApiResponse(ResponseType.OK, result);
else
return new ApiResponse(ResponseType.Error, result);
}
} }
} }
...@@ -1403,6 +1403,14 @@ ...@@ -1403,6 +1403,14 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.PersonController.ReloadPersonnel(System.Int32,System.Int32)">
<summary>
重新加载人员字典
</summary>
<param name="hospitalId"></param>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="T:Performance.Api.Controllers.ReportController"> <member name="T:Performance.Api.Controllers.ReportController">
<summary> <summary>
报表 报表
......
...@@ -241,7 +241,9 @@ public AutoMapperConfigs() ...@@ -241,7 +241,9 @@ public AutoMapperConfigs()
CreateMap<cost_transfer, cost_transfer>( CreateMap<cost_transfer, cost_transfer>(
).ForMember(back => back.Id, n => n.Ignore()); ).ForMember(back => back.Id, n => n.Ignore());
CreateMap<ag_headsource, SecPrintHeaderResponse>().ReverseMap(); CreateMap<ag_headsource, SecPrintHeaderResponse>()
.ForMember(dest => dest.TheTotalAllocationOfPerformanceResults, opt => opt.MapFrom(src => src.TotalDeptReward))
.ReverseMap();
} }
} }
} }
...@@ -126,8 +126,5 @@ public ComputeResponse(string source, string accountingUnit, string employeeName ...@@ -126,8 +126,5 @@ public ComputeResponse(string source, string accountingUnit, string employeeName
/// </summary> /// </summary>
public string TitlePosition { get; set; } public string TitlePosition { get; set; }
} }
} }
namespace Performance.EntityModels using System;
namespace Performance.EntityModels
{ {
public class view_per_apr_amount : per_apr_amount public class view_per_apr_amount : per_apr_amount
{ {
...@@ -44,5 +46,7 @@ public view_per_total_amount(string unitType, string accountingUnit, string pers ...@@ -44,5 +46,7 @@ public view_per_total_amount(string unitType, string accountingUnit, string pers
/// 是否被使用 默认false /// 是否被使用 默认false
/// </summary> /// </summary>
public bool Use { get; set; } public bool Use { get; set; }
public DateTime AuditTime { get; set; }
} }
} }
...@@ -182,15 +182,12 @@ public IEnumerable<report_original_workload> QueryWorkloadData(int allotid, stri ...@@ -182,15 +182,12 @@ public IEnumerable<report_original_workload> QueryWorkloadData(int allotid, stri
string unittype = unittypes.Any(t => !string.IsNullOrEmpty(t) && t.Contains("医生")) string unittype = unittypes.Any(t => !string.IsNullOrEmpty(t) && t.Contains("医生"))
? "医生组" ? "医生组"
: unittypes.Any(t => !string.IsNullOrEmpty(t) && t.Contains("护理")) ? "护理组" : "其他组"; : unittypes.Any(t => !string.IsNullOrEmpty(t) && t.Contains("护理")) ? "护理组" : "其他组";
string clear = @"SELECT DISTINCT t3.AccountingUnit as Department,ifnull(t1.DoctorName, '未知') DoctorName,t1.PersonnelNumber,t1.Category,SUM(t1.Fee) Fee FROM ex_result t1 string clear = @"
JOIN (select distinct AccountingUnit,HISDeptName,unittype from per_dept_dic where HospitalId = @hospitalid) t3 ON t1.Department = t3.HISDeptName SELECT DISTINCT AccountingUnit as Department,if(ifnull(DoctorName,'')='', '未知',DoctorName) DoctorName,PersonnelNumber,Category,ROUND(SUM(Fee),2) Fee
WHERE t1.allotid = @allotid FROM view_second_report_workload
AND t3.unittype in @unittypes WHERE AllotId = @allotid AND UnitType in @unittypes AND AccountingUnit = @accountingunit
AND t3.accountingunit = @accountingunit GROUP BY AccountingUnit,DoctorName,PersonnelNumber,Category
AND (t1.Source LIKE CONCAT('%',@unittype,'工作量%') OR t1.Source = '通用工作量') ORDER BY doctorname,Category;";
AND T1.IsDelete = 0
GROUP BY ifnull(t1.DoctorName, '未知'),t1.PersonnelNumber,t1.Category
ORDER BY t1.doctorname,t1.Category;";
return connection.Query<report_original_workload>(clear, new { allotid, accountingunit, unittypes, unittype, hospitalid }, commandTimeout: 60 * 60); return connection.Query<report_original_workload>(clear, new { allotid, accountingunit, unittypes, unittype, hospitalid }, commandTimeout: 60 * 60);
} }
catch (Exception ex) catch (Exception ex)
...@@ -204,23 +201,24 @@ public IEnumerable<report_original_workload> QueryWorkloadData(int allotid, stri ...@@ -204,23 +201,24 @@ public IEnumerable<report_original_workload> QueryWorkloadData(int allotid, stri
/// 查询门诊收入数据 /// 查询门诊收入数据
/// </summary> /// </summary>
/// <param name="allotid"></param> /// <param name="allotid"></param>
public IEnumerable<ex_result> QueryIncomeData(int allotid, string source, string accountingunit, string[] unittype, int hospitalid) public IEnumerable<ex_result> QueryIncomeData(int allotid, string source, string accountingunit, string[] unittypes, int hospitalid)
{ {
using (var connection = context.Database.GetDbConnection()) using (var connection = context.Database.GetDbConnection())
{ {
if (connection.State != ConnectionState.Open) connection.Open(); if (connection.State != ConnectionState.Open) connection.Open();
try try
{ {
string clear = $@"SELECT DISTINCT t3.AccountingUnit as Department,ifnull(t1.DoctorName, '未知') DoctorName,t1.PersonnelNumber,t1.Category,SUM(t1.Fee) Fee FROM ex_result t1 var tableName = (source == "门诊") ? "view_second_report_income_out" : "view_second_report_income_inpat";
JOIN (select distinct AccountingUnit,HISDeptName,unittype from per_dept_dic where HospitalId = @hospitalid) t3 ON t1.Department = t3.HISDeptName
WHERE t1.allotid = @allotid
AND t3.unittype in @unittype string clear = $@"
AND t3.accountingunit = @accountingunit SELECT DISTINCT AccountingUnit as Department,if(ifnull(DoctorName,'')='', '未知',DoctorName) DoctorName,PersonnelNumber,Category,ROUND(SUM(Fee),2) Fee
AND (t1.Source like '%{source}开单%' OR t1.Source like '%{source}就诊%') FROM {tableName}
AND T1.IsDelete = 0 WHERE AllotId = @allotid AND UnitType in @unittypes AND AccountingUnit = @accountingunit
GROUP BY ifnull(t1.DoctorName, '未知'),t1.PersonnelNumber,t1.Category GROUP BY AccountingUnit,DoctorName,PersonnelNumber,Category
ORDER BY t1.doctorname,t1.Category;"; ORDER BY doctorname,Category;";
return connection.Query<ex_result>(clear, new { allotid, accountingunit, unittype, hospitalid }, commandTimeout: 60 * 60);
return connection.Query<ex_result>(clear, new { allotid, accountingunit, unittypes, hospitalid }, commandTimeout: 60 * 60);
} }
catch (Exception ex) catch (Exception ex)
{ {
......
...@@ -324,7 +324,7 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, per_allot ...@@ -324,7 +324,7 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, per_allot
dept.PerforFee = dept.Income * dept.BasicFactor; dept.PerforFee = dept.Income * dept.BasicFactor;
//dept.PerforTotal = Math.Round((dept.PerforFee + dept.WorkloadFee + dept.OtherPerfor1 + dept.AssessBeforeOtherFee) ?? 0); //dept.PerforTotal = Math.Round((dept.PerforFee + dept.WorkloadFee + dept.OtherPerfor1 + dept.AssessBeforeOtherFee) ?? 0);
dept.PerforTotal = Math.Round((dept.PerforFee + dept.WorkloadFee + dept.AssessBeforeOtherFee) ?? 0); dept.PerforTotal = Math.Round((dept.PerforFee + dept.WorkloadFee + dept.AssessBeforeOtherFee) ?? 0, MidpointRounding.AwayFromZero);
dept.AssessLaterPerforTotal = Math.Round((dept.PerforTotal * dept.ScoringAverage + dept.MedicineExtra + dept.MaterialsExtra + dept.Extra + dept.AssessLaterOtherFee) ?? 0, MidpointRounding.AwayFromZero); dept.AssessLaterPerforTotal = Math.Round((dept.PerforTotal * dept.ScoringAverage + dept.MedicineExtra + dept.MaterialsExtra + dept.Extra + dept.AssessLaterOtherFee) ?? 0, MidpointRounding.AwayFromZero);
dept.RealGiveFee = Math.Round((dept.AssessLaterPerforTotal * dept.AdjustFactor + dept.AdjustLaterOtherFee) ?? 0, MidpointRounding.AwayFromZero); dept.RealGiveFee = Math.Round((dept.AssessLaterPerforTotal * dept.AdjustFactor + dept.AdjustLaterOtherFee) ?? 0, MidpointRounding.AwayFromZero);
//dept.Avg = dept.ManagerNumber + dept.Number == 0 ? 0 : dept.PerforTotal / (dept.ManagerNumber + dept.Number); //dept.Avg = dept.ManagerNumber + dept.Number == 0 ? 0 : dept.PerforTotal / (dept.ManagerNumber + dept.Number);
...@@ -418,9 +418,9 @@ public void ComputeOffice(per_allot allot, PerExcel excel) ...@@ -418,9 +418,9 @@ public void ComputeOffice(per_allot allot, PerExcel excel)
dept.PerforFee = empolyees.Sum(w => w.PerforTotal ?? 0); dept.PerforFee = empolyees.Sum(w => w.PerforTotal ?? 0);
dept.PerforTotal = Math.Round(empolyees.Sum(w => w.GiveFee ?? 0)); dept.PerforTotal = Math.Round(empolyees.Sum(w => w.GiveFee ?? 0), MidpointRounding.AwayFromZero);
dept.AssessLaterPerforTotal = Math.Round((dept.PerforTotal * dept.ScoringAverage + dept.MedicineExtra + dept.MaterialsExtra + dept.Extra) ?? 0); dept.AssessLaterPerforTotal = Math.Round((dept.PerforTotal * dept.ScoringAverage + dept.MedicineExtra + dept.MaterialsExtra + dept.Extra) ?? 0, MidpointRounding.AwayFromZero);
dept.RealGiveFee = Math.Round((dept.AssessLaterPerforTotal * dept.AdjustFactor + dept.AdjustLaterOtherFee) ?? 0); dept.RealGiveFee = Math.Round((dept.AssessLaterPerforTotal * dept.AdjustFactor + dept.AdjustLaterOtherFee) ?? 0, MidpointRounding.AwayFromZero);
//dept.Avg = dept.ManagerNumber + dept.Number == 0 ? 0 : dept.PerforTotal / (dept.ManagerNumber + dept.Number); //dept.Avg = dept.ManagerNumber + dept.Number == 0 ? 0 : dept.PerforTotal / (dept.ManagerNumber + dept.Number);
dept.Avg = dept.Number == 0 ? 0 : dept.PerforTotal / dept.Number; dept.Avg = dept.Number == 0 ? 0 : dept.PerforTotal / dept.Number;
......
...@@ -98,12 +98,12 @@ public List<res_baiscnorm> Compute(per_allot allot, List<PerSheet> accountSheet) ...@@ -98,12 +98,12 @@ public List<res_baiscnorm> Compute(per_allot allot, List<PerSheet> accountSheet)
var empolyeeList2 = perforImEmployeeRepository.GetEntities(t => t.AllotID == allot.ID); var empolyeeList2 = perforImEmployeeRepository.GetEntities(t => t.AllotID == allot.ID);
var computeEmployees2 = Mapper.Map<List<ComputeEmployee>>(empolyeeList2); var computeEmployees2 = Mapper.Map<List<ComputeEmployee>>(empolyeeList2);
logManageService.WriteMsg("正在生成绩效", "行政中高层 最终绩效数据计算", 1, allot.ID, "ReceiveMessage"); logManageService.WriteMsg("正在生成绩效", "行政中高层 最终绩效数据计算", 1, allot.ID, "ReceiveMessage");
var computResult2 = computeDirector.Compute(computeEmployees2, allot, baiscnormList); var computResult2 = computeDirector.Compute(computeEmployees2, allot, baiscnormList, accountbasicList);
var empolyeeList3 = perforImemployeelogisticsRepository.GetEntities(t => t.AllotID == allot.ID); var empolyeeList3 = perforImemployeelogisticsRepository.GetEntities(t => t.AllotID == allot.ID);
var computeEmployees3 = Mapper.Map<List<ComputeEmployee>>(empolyeeList3); var computeEmployees3 = Mapper.Map<List<ComputeEmployee>>(empolyeeList3);
logManageService.WriteMsg("正在生成绩效", "行政后勤 最终绩效数据计算", 1, allot.ID, "ReceiveMessage"); logManageService.WriteMsg("正在生成绩效", "行政后勤 最终绩效数据计算", 1, allot.ID, "ReceiveMessage");
var computResult3 = computeDirector.Compute(computeEmployees3, allot, baiscnormList); var computResult3 = computeDirector.Compute(computeEmployees3, allot, baiscnormList, accountbasicList);
//计算 行政中高层 平均值 //计算 行政中高层 平均值
baiscNormService.ComputeOtherAvg(baiscnormList, computResult2, empolyeeList2); baiscNormService.ComputeOtherAvg(baiscnormList, computResult2, empolyeeList2);
...@@ -179,7 +179,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -179,7 +179,7 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
//var scoreAverage = accountScoreAverages?.FirstOrDefault(w => w.UnitType == UnitType.特殊核算组.ToString() && w.AccountingUnit == dept?.AccountingUnit)?.TotelValue; //var scoreAverage = accountScoreAverages?.FirstOrDefault(w => w.UnitType == UnitType.特殊核算组.ToString() && w.AccountingUnit == dept?.AccountingUnit)?.TotelValue;
// 夜班绩效 从医院奖罚的明细项中获取 // 夜班绩效 从医院奖罚的明细项中获取
var nightShift = adjustLaterOtherFee?.FirstOrDefault(w => w.UnitType == dept.UnitType && w.AccountingUnit == dept.AccountingUnit && w.TypeName?.Trim() == "夜班绩效")?.CellValue ?? 0; var nightShift = adjustLaterOtherFee?.FirstOrDefault(w => w.UnitType == dept?.UnitType && w.AccountingUnit == dept?.AccountingUnit && w.TypeName?.Trim() == "夜班绩效")?.CellValue ?? 0;
decimal? headcount = null; decimal? headcount = null;
if (typeList.Any(o => o.Description == item.QuantitativeIndicators)) if (typeList.Any(o => o.Description == item.QuantitativeIndicators))
...@@ -219,11 +219,11 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -219,11 +219,11 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
NightShiftWorkPerforFee = nightShift, NightShiftWorkPerforFee = nightShift,
}; };
logger.LogInformation($"特殊核算组-{group.AccountingUnit},sumValue:{sumValue},预算比例:{dept?.BasicFactor ?? -100}"); logger.LogInformation($"特殊核算组-{group.AccountingUnit},sumValue:{sumValue},预算比例:{dept?.BasicFactor ?? -100}");
res.ResultsTotalFee = Math.Round((sumValue * (dept?.BasicFactor ?? 1m)) ?? 0); res.ResultsTotalFee = Math.Round((sumValue * (dept?.BasicFactor ?? 1m)) ?? 0, MidpointRounding.AwayFromZero);
res.PerforTotal = res.ResultsTotalFee + res.AssessBeforeOtherFee; res.PerforTotal = res.ResultsTotalFee + res.AssessBeforeOtherFee;
res.GiveFee = Math.Round((res.PerforTotal * res.ScoringAverage + res.MedicineExtra + res.MaterialsExtra + res.Punishment + res.AssessLaterOtherFee) ?? 0); res.GiveFee = Math.Round((res.PerforTotal * res.ScoringAverage + res.MedicineExtra + res.MaterialsExtra + res.Punishment + res.AssessLaterOtherFee) ?? 0, MidpointRounding.AwayFromZero);
res.RealGiveFee = Math.Round(res.GiveFee * res.Adjust + res.AdjustLaterOtherFee ?? 0); res.RealGiveFee = Math.Round(res.GiveFee * res.Adjust + res.AdjustLaterOtherFee ?? 0, MidpointRounding.AwayFromZero);
res.Avg = Math.Round((res.Number != 0 ? res.PerforTotal / res.Number : null) ?? 0); res.Avg = Math.Round((res.Number != 0 ? res.PerforTotal / res.Number : null) ?? 0, MidpointRounding.AwayFromZero);
resDataList.Add(res); resDataList.Add(res);
...@@ -276,17 +276,17 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno ...@@ -276,17 +276,17 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
compute.Avg = avg * (empolyee.Basics ?? 0) * compute.Attendance; compute.Avg = avg * (empolyee.Basics ?? 0) * compute.Attendance;
// 考核前管理绩效 // 考核前管理绩效
compute.ShouldGiveFee = Math.Round((compute.Efficiency + compute.Scale) * compute.Grant + compute.OtherManagePerfor ?? 0); compute.ShouldGiveFee = Math.Round((compute.Efficiency + compute.Scale) * compute.Grant + compute.OtherManagePerfor ?? 0, MidpointRounding.AwayFromZero);
// 考核后管理绩效 // 考核后管理绩效
compute.AssessLaterManagementFee = Math.Round(compute.ShouldGiveFee * compute.ScoreAverageRate * compute.Attendance + compute.Punishment ?? 0); compute.AssessLaterManagementFee = Math.Round(compute.ShouldGiveFee * compute.ScoreAverageRate * compute.Attendance + compute.Punishment ?? 0, MidpointRounding.AwayFromZero);
// 考核前绩效 // 考核前绩效
compute.PerforSumFee = compute.Attendance == 0 ? Math.Round(compute.ShouldGiveFee ?? 0) : Math.Round(compute.Avg / compute.Attendance + compute.ShouldGiveFee ?? 0); compute.PerforSumFee = compute.Attendance == 0 ? Math.Round(compute.ShouldGiveFee ?? 0, MidpointRounding.AwayFromZero) : Math.Round(compute.Avg / compute.Attendance + compute.ShouldGiveFee ?? 0, MidpointRounding.AwayFromZero);
// 考核后绩效 // 考核后绩效
compute.GiveFee = Math.Round(compute.Avg + compute.AssessLaterManagementFee ?? 0); compute.GiveFee = Math.Round(compute.Avg + compute.AssessLaterManagementFee ?? 0, MidpointRounding.AwayFromZero);
// 参考基数专用绩效合计 // 参考基数专用绩效合计
compute.BaiscNormPerforTotal = compute.PerforSumFee; compute.BaiscNormPerforTotal = compute.PerforSumFee;
// 实发绩效 // 实发绩效
compute.RealGiveFee = Math.Round((compute.Avg + compute.AssessLaterManagementFee) * compute.Adjust + compute.AdjustLaterOtherFee ?? 0); compute.RealGiveFee = Math.Round((compute.Avg + compute.AssessLaterManagementFee) * compute.Adjust + compute.AdjustLaterOtherFee ?? 0, MidpointRounding.AwayFromZero);
//compute.Efficiency = compute.Avg * (empolyee.Efficiency ?? 1); //compute.Efficiency = compute.Avg * (empolyee.Efficiency ?? 1);
//compute.Scale = compute.PerforTotal * (empolyee.Scale ?? 1); //compute.Scale = compute.PerforTotal * (empolyee.Scale ?? 1);
...@@ -395,7 +395,7 @@ public void SaveReserved(per_allot allot, int hospitalId) ...@@ -395,7 +395,7 @@ public void SaveReserved(per_allot allot, int hospitalId)
var hospital = hospitalRepository.GetEntity(w => w.ID == hospitalId); var hospital = hospitalRepository.GetEntity(w => w.ID == hospitalId);
if (hospital?.IsShowManage == 1) if (hospital?.IsShowManage == 1)
mTypes.AddRange(new List<string> { AccountUnitType.护士长.ToString(), AccountUnitType.科主任.ToString() }); mTypes.AddRange(new List<string> { AccountUnitType.护士长.ToString(), AccountUnitType.科主任.ToString() });
var resComputes = perforRescomputeRepository var resComputes = perforRescomputeRepository
.GetEntities(t => t.AllotID == allot.ID && mTypes.Contains(t.AccountType) && (string.IsNullOrEmpty(t.NeedSecondAllot) || t.NeedSecondAllot == "否")) .GetEntities(t => t.AllotID == allot.ID && mTypes.Contains(t.AccountType) && (string.IsNullOrEmpty(t.NeedSecondAllot) || t.NeedSecondAllot == "否"))
?.OrderByDescending(t => t.AccountingUnit); ?.OrderByDescending(t => t.AccountingUnit);
......
...@@ -902,6 +902,7 @@ public List<ComputeResponse> AllCompute(int allotId, int hospitalId, int isShowM ...@@ -902,6 +902,7 @@ public List<ComputeResponse> AllCompute(int allotId, int hospitalId, int isShowM
item.JobCategory = emps?.JobCategory ?? ""; item.JobCategory = emps?.JobCategory ?? "";
item.Duty = emps?.Duty ?? ""; item.Duty = emps?.Duty ?? "";
item.TitlePosition = emps?.JobTitle ?? ""; item.TitlePosition = emps?.JobTitle ?? "";
// 人员信息使用人员字典中数据 // 人员信息使用人员字典中数据
if (isEmpDic) if (isEmpDic)
{ {
......
...@@ -1357,11 +1357,13 @@ public SheetExportResponse GetDrugtypeFactor(AllotDeptRequest request) ...@@ -1357,11 +1357,13 @@ public SheetExportResponse GetDrugtypeFactor(AllotDeptRequest request)
{ {
new Cell{ CellType = "header", CellValue = "", PointCell = 0, MergeRow = 1, MergeCell = 1 }, new Cell{ CellType = "header", CellValue = "", PointCell = 0, MergeRow = 1, MergeCell = 1 },
new Cell{ CellType = "header", CellValue = "", PointCell = 1, MergeRow = 1, MergeCell = 1 }, new Cell{ CellType = "header", CellValue = "", PointCell = 1, MergeRow = 1, MergeCell = 1 },
new Cell{ CellType = "header", CellValue = "", PointCell = 2, MergeRow = 1, MergeCell = 1 },
}; };
var cells = new List<Cell> var cells = new List<Cell>
{ {
new Cell{ CellType = "header", CellValue = "项目小类(测算表)", PointCell = 0, MergeRow = 1, MergeCell = 1 }, new Cell{ CellType = "header", CellValue = "序号", PointCell = 0, MergeRow = 1, MergeCell = 1 },
new Cell{ CellType = "header", CellValue = "费用大类(大屏展示)", PointCell = 1, MergeRow = 1, MergeCell = 1 } new Cell{ CellType = "header", CellValue = "项目小类(测算表)", PointCell = 1, MergeRow = 1, MergeCell = 1 },
new Cell{ CellType = "header", CellValue = "费用大类(大屏展示)", PointCell = 2, MergeRow = 1, MergeCell = 1 }
}; };
var defaultColumns = new Dictionary<string, string> var defaultColumns = new Dictionary<string, string>
...@@ -1374,7 +1376,7 @@ public SheetExportResponse GetDrugtypeFactor(AllotDeptRequest request) ...@@ -1374,7 +1376,7 @@ public SheetExportResponse GetDrugtypeFactor(AllotDeptRequest request)
int index = 0; int index = 0;
foreach (var model in models) foreach (var model in models)
{ {
mergeCells.Add(new Cell { CellType = "header", CellValue = model.ModuleName, PointCell = 2 + index * 3, MergeRow = 1, MergeCell = defaultColumns.Count }); mergeCells.Add(new Cell { CellType = "header", CellValue = model.ModuleName, PointCell = 3 + index * 3, MergeRow = 1, MergeCell = defaultColumns.Count });
int i = 0; int i = 0;
cells.AddRange(defaultColumns.Select(t => cells.AddRange(defaultColumns.Select(t =>
...@@ -1419,6 +1421,7 @@ public SheetExportResponse GetDrugtypeFactor(AllotDeptRequest request) ...@@ -1419,6 +1421,7 @@ public SheetExportResponse GetDrugtypeFactor(AllotDeptRequest request)
{ {
var rowcells = new List<Cell> var rowcells = new List<Cell>
{ {
new Cell { CellType = "body", CellValue = index+1, PointCell = 0, MergeRow = 1, MergeCell = 1 },
new Cell { CellType = "body", CellValue = charge.Charge, PointCell = 0, MergeRow = 1, MergeCell = 1 }, new Cell { CellType = "body", CellValue = charge.Charge, PointCell = 0, MergeRow = 1, MergeCell = 1 },
new Cell { CellType = "body", CellValue = charge.ChargeType, PointCell = 1, MergeRow = 1, MergeCell = 1 }, new Cell { CellType = "body", CellValue = charge.ChargeType, PointCell = 1, MergeRow = 1, MergeCell = 1 },
}; };
......
...@@ -407,17 +407,17 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<PerS ...@@ -407,17 +407,17 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<PerS
compute.Avg = avg * (empolyee.Basics ?? 0) * compute.Attendance; compute.Avg = avg * (empolyee.Basics ?? 0) * compute.Attendance;
compute.Punishment = (empolyee?.Punishment ?? 0); compute.Punishment = (empolyee?.Punishment ?? 0);
// 考核前管理绩效 // 考核前管理绩效
compute.ShouldGiveFee = Math.Round((compute.Efficiency + compute.Scale) * compute.Grant + compute.OtherManagePerfor ?? 0); compute.ShouldGiveFee = Math.Round((compute.Efficiency + compute.Scale) * compute.Grant + compute.OtherManagePerfor ?? 0, MidpointRounding.AwayFromZero);
// 考核后管理绩效 // 考核后管理绩效
compute.AssessLaterManagementFee = Math.Round(compute.ShouldGiveFee * compute.ScoreAverageRate * compute.Attendance + compute.Punishment ?? 0); compute.AssessLaterManagementFee = Math.Round(compute.ShouldGiveFee * compute.ScoreAverageRate * compute.Attendance + compute.Punishment ?? 0, MidpointRounding.AwayFromZero);
// 考核前绩效 // 考核前绩效
compute.PerforSumFee = compute.Attendance == 0 ? Math.Round(compute.ShouldGiveFee ?? 0) : Math.Round(compute.Avg / compute.Attendance + compute.ShouldGiveFee ?? 0); compute.PerforSumFee = compute.Attendance == 0 ? Math.Round(compute.ShouldGiveFee ?? 0, MidpointRounding.AwayFromZero) : Math.Round(compute.Avg / compute.Attendance + compute.ShouldGiveFee ?? 0, MidpointRounding.AwayFromZero);
// 考核后绩效 // 考核后绩效
compute.GiveFee = Math.Round((compute.Avg ?? 0) + (compute.AssessLaterManagementFee ?? 0)); compute.GiveFee = Math.Round((compute.Avg ?? 0) + (compute.AssessLaterManagementFee ?? 0), MidpointRounding.AwayFromZero);
// 参考基数专用绩效合计 // 参考基数专用绩效合计
compute.BaiscNormPerforTotal = compute.PerforSumFee; compute.BaiscNormPerforTotal = compute.PerforSumFee;
// 实发绩效 // 实发绩效
compute.RealGiveFee = Math.Round(((compute.Avg ?? 0) + (compute.AssessLaterManagementFee ?? 0)) * compute.Adjust + (compute.AdjustLaterOtherFee ?? 0) ?? 0); compute.RealGiveFee = Math.Round(((compute.Avg ?? 0) + (compute.AssessLaterManagementFee ?? 0)) * compute.Adjust + (compute.AdjustLaterOtherFee ?? 0) ?? 0, MidpointRounding.AwayFromZero);
////绩效合计 ////绩效合计
//compute.PerforSumFee = Math.Round((compute.Avg * (empolyee.Basics ?? 0)) + compute.ShouldGiveFee + compute.AssessBeforeOtherFee ?? 0); //compute.PerforSumFee = Math.Round((compute.Avg * (empolyee.Basics ?? 0)) + compute.ShouldGiveFee + compute.AssessBeforeOtherFee ?? 0);
...@@ -442,11 +442,8 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<PerS ...@@ -442,11 +442,8 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<PerS
/// <param name="empolyeeList"></param> /// <param name="empolyeeList"></param>
/// <param name="baiscnormList"></param> /// <param name="baiscnormList"></param>
/// <returns></returns> /// <returns></returns>
public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot allot, List<res_baiscnorm> baiscnormList) public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot allot, List<res_baiscnorm> baiscnormList, List<im_accountbasic> accountbasicList = null)
{ {
////年资系数
//var workyearList = perforCofworkyearRepository.GetEntities(t => t.AllotID == allot.ID);
List<ComputeResult> computeList = new List<ComputeResult>(); List<ComputeResult> computeList = new List<ComputeResult>();
if (empolyeeList == null) return computeList; if (empolyeeList == null) return computeList;
...@@ -517,22 +514,31 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot ...@@ -517,22 +514,31 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
// 行政高层 行政中层 夜班费 // 行政高层 行政中层 夜班费
compute.NightWorkPerfor = item.NightWorkPerfor; compute.NightWorkPerfor = item.NightWorkPerfor;
//考核前绩效 //考核前绩效
compute.PerforTotal = Math.Round(compute.BaiscNormValue * compute.PostCoefficient * compute.Attendance + compute.AssessBeforeOtherFee ?? 0); compute.PerforTotal = Math.Round(compute.BaiscNormValue * compute.PostCoefficient * compute.Attendance + compute.AssessBeforeOtherFee ?? 0, MidpointRounding.AwayFromZero);
//考核后绩效 //考核后绩效
compute.GiveFee = Math.Round(compute.PerforTotal * compute.ScoreAverageRate + compute.Punishment ?? 0); compute.GiveFee = Math.Round(compute.PerforTotal * compute.ScoreAverageRate + compute.Punishment ?? 0, MidpointRounding.AwayFromZero);
//实发绩效 //实发绩效
compute.RealGiveFee = Math.Round((compute.GiveFee * compute.Adjust + compute.AdjustLaterOtherFee) ?? 0); compute.RealGiveFee = Math.Round((compute.GiveFee * compute.Adjust + compute.AdjustLaterOtherFee) ?? 0, MidpointRounding.AwayFromZero);
} }
else if (AccountUnitType.行政工勤.ToString() == involve) else if (AccountUnitType.行政工勤.ToString() == involve)
{ {
// 行政工勤 根据测算表判读是否需要二次分配 默认不需要 // 行政工勤 根据测算表判读是否需要二次分配 默认不需要
compute.NeedSecondAllot = string.IsNullOrWhiteSpace(item.NeedSecondAllot) ? "否" : item.NeedSecondAllot; compute.NeedSecondAllot = string.IsNullOrWhiteSpace(item.NeedSecondAllot) ? "否" : item.NeedSecondAllot;
#region 禅道137
// 行政后勤人员不需要二次分配的时候,个人的考核得分及调节系数取4.1表里面的科室的考核得分和调节系数
if (compute.NeedSecondAllot == "否")
{
var resAccount = accountbasicList?.FirstOrDefault(t => UnitTypeUtil.IsOffice(t.UnitType) && t.DoctorAccountingUnit == compute.AccountingUnit);
compute.ScoreAverageRate = resAccount?.DoctorScoringAverage ?? 1;
compute.Adjust = resAccount?.DoctorAdjustFactor ?? 1m;
}
#endregion
//考核前绩效 //考核前绩效
compute.PerforTotal = Math.Round(compute.BaiscNormValue * compute.PostCoefficient * compute.Attendance + compute.OtherPerfor ?? 0); compute.PerforTotal = Math.Round(compute.BaiscNormValue * compute.PostCoefficient * compute.Attendance + compute.OtherPerfor ?? 0, MidpointRounding.AwayFromZero);
//考核后绩效 更加开关来控制显示 //考核后绩效 更加开关来控制显示
compute.GiveFee = compute.PerforTotal * compute.ScoreAverageRate; compute.GiveFee = compute.PerforTotal * compute.ScoreAverageRate;
//实发绩效 更加开关来控制显示 //实发绩效 更加开关来控制显示
compute.RealGiveFee = Math.Round(compute.GiveFee * compute.Adjust ?? 0); compute.RealGiveFee = Math.Round(compute.GiveFee * compute.Adjust ?? 0, MidpointRounding.AwayFromZero);
} }
computeList.Add(compute); computeList.Add(compute);
//// 行政高层 行政中层 夜班费 //// 行政高层 行政中层 夜班费
......
...@@ -1000,5 +1000,75 @@ public string GetPersonDictFile(int allotId, int userId) ...@@ -1000,5 +1000,75 @@ public string GetPersonDictFile(int allotId, int userId)
} }
return filepath; return filepath;
} }
public bool ReloadPersonnel(int hospitalId, int allotId)
{
var allotList = perallotRepository.GetEntities(w => w.HospitalId == hospitalId)?.OrderBy(s => s.Year).ThenBy(s => s.Month).ToList();
if (allotList == null || !allotList.Any())
throw new PerformanceException("加载失败,绩效记录不存在!");
var allot = allotList.FirstOrDefault(w => w.ID == allotId);
if (allot == null)
throw new PerformanceException("加载失败,绩效记录不存在!");
var index = allotList.IndexOf(allot);
if (index == 0)
throw new PerformanceException("加载失败,绩效记录不存在!");
var prevAllot = allotList[index - 1];
if (prevAllot == null) prevAllot.ID = -1;
var persons = peremployeeRepository.GetEntities(t => t.HospitalId == hospitalId && t.AllotId == prevAllot.ID);
if (persons == null || !persons.Any())
throw new PerformanceException("加载失败,未查询到上月人员信息!");
var i = peremployeeRepository.Execute($@"DELETE FROM per_employee WHERE HospitalId=@HospitalId and AllotId=@AllotId;", new { hospitalId, allotId });
if (i <= 0)
throw new PerformanceException("加载失败,人员信息重置失败!");
int day = DateTime.DaysInMonth(allot.Year, allot.Month);
var data = persons.Select(t =>
{
var entity = new per_employee
{
HospitalId = t.HospitalId,
AllotId = allotId,
AccountingUnit = t.AccountingUnit,
Department = t.Department,
DoctorName = t.DoctorName,
JobCategory = t.JobCategory,
Duty = t.Duty,
JobTitle = t.JobTitle,
UnitType = t.UnitType,
AttendanceDay = day,
Attendance = 1,
PermanentStaff = t.PermanentStaff,
EfficiencyNumber = t.EfficiencyNumber,
WorkTime = t.WorkTime,
BirthDate = t.BirthDate,
Age = t.Age,
ReservedRatio = t.ReservedRatio,
BankCard = t.BankCard,
Remark = t.Remark,
CreateTime = DateTime.Now,
};
if (!string.IsNullOrEmpty(t.PersonnelNumber) && !string.IsNullOrEmpty(t.JobNumber))
{
entity.PersonnelNumber = t.PersonnelNumber;
entity.JobNumber = t.JobNumber;
}
else
{
string number = !string.IsNullOrEmpty(t.PersonnelNumber) ? t.PersonnelNumber : t.JobNumber;
entity.PersonnelNumber = number;
entity.JobNumber = number;
}
return entity;
}).ToList();
SaveAllotPersons(data);
return true;
}
} }
} }
...@@ -123,7 +123,7 @@ public SecondDetailDto Load(int secondId, ComputeMode computeMode, EmployeeSourc ...@@ -123,7 +123,7 @@ public SecondDetailDto Load(int secondId, ComputeMode computeMode, EmployeeSourc
} }
var head = LoadHead(computeMode, allot, second); var head = LoadHead(computeMode, allot, second);
var dic = GetTableHeaderDictionary(computeMode, allot, second, loads); var dic = GetTableHeaderDictionary(computeMode, allot, second, loads, isAttachFactor: false);
return new SecondDetailDto { Head = head, Body = handson, Dic = dic }; return new SecondDetailDto { Head = head, Body = handson, Dic = dic };
} }
...@@ -160,7 +160,7 @@ public HandsonTableBase GetHandsonTable(ComputeMode computeMode, List<TitleValue ...@@ -160,7 +160,7 @@ public HandsonTableBase GetHandsonTable(ComputeMode computeMode, List<TitleValue
/// <param name="second"></param> /// <param name="second"></param>
/// <param name="loads"></param> /// <param name="loads"></param>
/// <returns></returns> /// <returns></returns>
public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode computeMode, per_allot allot, ag_secondallot second, List<TitleValue<string, decimal?>> loads, List<SecondWorkLoadDto> workloadGroups = null) public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode computeMode, per_allot allot, ag_secondallot second, List<TitleValue<string, decimal?>> loads, List<SecondWorkLoadDto> workloadGroups = null, bool isAttachFactor = true)
{ {
/* /*
此处数据需要额外注意,前端显示规则:通过isTrue=true显示,显示名称为label 此处数据需要额外注意,前端显示规则:通过isTrue=true显示,显示名称为label
...@@ -170,14 +170,8 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -170,14 +170,8 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
new SecondColumnDictionary("人员工号",nameof(ag_bodysource.WorkNumber),true,100), new SecondColumnDictionary("人员工号",nameof(ag_bodysource.WorkNumber),true,100),
new SecondColumnDictionary("姓名",nameof(ag_bodysource.Name),true,100), new SecondColumnDictionary("姓名",nameof(ag_bodysource.Name),true,100),
new SecondColumnDictionary("科室",nameof(ag_bodysource.Department),true,100), new SecondColumnDictionary("科室",nameof(ag_bodysource.Department),true,100),
new SecondColumnDictionary("领取平均绩效",nameof(ag_bodysource.Post),true,100 ),
new SecondColumnDictionary("人员系数",nameof(ag_bodysource.StaffCoefficient),false,200, color: "title_color" ), new SecondColumnDictionary("职称绩效", nameof(ag_bodysource.TitlePerformance), true, 299),
new SecondColumnDictionary("出勤",nameof(ag_bodysource.ActualAttendance),false,201, color: "title_color" ),
new SecondColumnDictionary("职称",nameof(ag_bodysource.JobTitle),false,202, color: "title_color" ),
new SecondColumnDictionary("职称系数",nameof(ag_bodysource.TitleCoefficient),false,203, color: "title_color" ),
new SecondColumnDictionary("职称绩效得分",nameof(ag_bodysource.TitlePerformanceScore),false,204, color: "title_color" ),
new SecondColumnDictionary("职称绩效",nameof(ag_bodysource.TitlePerformance),true,299 ),
new SecondColumnDictionary("工作量绩效合计",nameof(ag_bodysource.WorkPerformance),true,399 ), new SecondColumnDictionary("工作量绩效合计",nameof(ag_bodysource.WorkPerformance),true,399 ),
new SecondColumnDictionary("单项奖励合计",nameof(ag_bodysource.DeptReward),true,499 ), new SecondColumnDictionary("单项奖励合计",nameof(ag_bodysource.DeptReward),true,499 ),
...@@ -194,6 +188,17 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -194,6 +188,17 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
new SecondColumnDictionary("实发绩效",nameof(ag_bodysource.ReferToRealAmount),false,802, color: "referto_color"), new SecondColumnDictionary("实发绩效",nameof(ag_bodysource.ReferToRealAmount),false,802, color: "referto_color"),
new SecondColumnDictionary("备注",nameof(ag_bodysource.Remark),false,803,width:200), new SecondColumnDictionary("备注",nameof(ag_bodysource.Remark),false,803,width:200),
}; };
// 填报模板不含一下展示信息
if (computeMode != ComputeMode.NotCalculate)
{
maps.Add(new SecondColumnDictionary("领取平均绩效", nameof(ag_bodysource.Post), true, 100));
maps.Add(new SecondColumnDictionary("人员系数", nameof(ag_bodysource.StaffCoefficient), false, 200, color: "title_color"));
maps.Add(new SecondColumnDictionary("出勤", nameof(ag_bodysource.ActualAttendance), false, 201, color: "title_color"));
maps.Add(new SecondColumnDictionary("职称", nameof(ag_bodysource.JobTitle), false, 202, color: "title_color"));
maps.Add(new SecondColumnDictionary("职称系数", nameof(ag_bodysource.TitleCoefficient), false, 203, color: "title_color"));
maps.Add(new SecondColumnDictionary("职称绩效得分", nameof(ag_bodysource.TitlePerformanceScore), false, 204, color: "title_color"));
}
// 工作量 // 工作量
if (computeMode != ComputeMode.NotCalculate) if (computeMode != ComputeMode.NotCalculate)
...@@ -212,7 +217,11 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -212,7 +217,11 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
.Where(w => w.Items == null || w.Items.Count == 0) .Where(w => w.Items == null || w.Items.Count == 0)
.Any(w => item.Title.EqualsIgnoreCase(w.WorkloadScore) || item.Title.EqualsIgnoreCase(w.AssessmentScore) || item.Title.EqualsIgnoreCase(w.WorkPerformance)); .Any(w => item.Title.EqualsIgnoreCase(w.WorkloadScore) || item.Title.EqualsIgnoreCase(w.AssessmentScore) || item.Title.EqualsIgnoreCase(w.WorkPerformance));
if (!isExist) if (!isExist)
maps.Add(new SecondColumnDictionary(item.Value, item.Title, false, ++workloadSort, type: "Workload", color: $"workload_color{index}")); {
string factor = item.Title.StartsWith("Workload_") ? $"({item.State ?? 0:0.####})" : "";
var label = isAttachFactor == true ? $"{item.Value}{factor}" : item.Value;
maps.Add(new SecondColumnDictionary(label, item.Title, false, ++workloadSort, type: "Workload", color: $"workload_color{index}"));
}
} }
// 多工作量加载 // 多工作量加载
...@@ -714,7 +723,7 @@ public void SupplementOtherPerfor(ag_secondallot second, List<Dictionary<string, ...@@ -714,7 +723,7 @@ public void SupplementOtherPerfor(ag_secondallot second, List<Dictionary<string,
foreach (var row in rows) foreach (var row in rows)
{ {
var personnelNumber = row.GetString(nameof(ag_bodysource.WorkNumber)); var personnelNumber = row.GetString(nameof(ag_bodysource.WorkNumber));
var amounts = perapramounts.Where(w => w.PersonnelNumber?.Trim() == personnelNumber?.Trim()); var amounts = perapramounts.Where(w => UnitTypeUtil.IsEqualsUnitType(w.UnitType, second.UnitType) && w.AccountingUnit == second.Department && w.PersonnelNumber?.Trim() == personnelNumber?.Trim());
row.AddOrUpdate(nameof(ag_bodysource.OtherPerformance), amounts.Sum(w => w.Amount ?? 0)); row.AddOrUpdate(nameof(ag_bodysource.OtherPerformance), amounts.Sum(w => w.Amount ?? 0));
} }
...@@ -770,6 +779,8 @@ public void ResultCompute(ComputeMode computeMode, Dictionary<string, object> he ...@@ -770,6 +779,8 @@ public void ResultCompute(ComputeMode computeMode, Dictionary<string, object> he
{ {
// 清空无效数据 // 清空无效数据
clearPerformanceWorkload(rows, workloadGroups); clearPerformanceWorkload(rows, workloadGroups);
// 行内计算单项奖励
deptRewardCalculate(rows);
// 行内可分配绩效 // 行内可分配绩效
distPerformanceCalculate(rows); distPerformanceCalculate(rows);
// 行内实发绩效 // 行内实发绩效
......
...@@ -1363,7 +1363,7 @@ public bool WorkloadAdd(WorkloadRequest request) ...@@ -1363,7 +1363,7 @@ public bool WorkloadAdd(WorkloadRequest request)
Expression<Func<ag_workload, bool>> exp = (t) => t.HospitalId == request.HospitalId && t.Department == request.Department && t.UnitType == request.UnitType; Expression<Func<ag_workload, bool>> exp = (t) => t.HospitalId == request.HospitalId && t.Department == request.Department && t.UnitType == request.UnitType;
if (request.IsSingleAwards) if (request.IsSingleAwards)
{ {
exp = exp.And(t => t.ItemId.StartsWith(AgWorkloadType.SingleAwards.ToString())); exp = exp.And(t => t.ItemId.StartsWith(AgWorkloadType.SingleAwards.ToString()));
} }
else else
{ {
...@@ -1788,7 +1788,7 @@ public bool ConfirmAudit(int userId, SecondAuditRequest request) ...@@ -1788,7 +1788,7 @@ public bool ConfirmAudit(int userId, SecondAuditRequest request)
SecondId = second.Id, SecondId = second.Id,
UnitType = second.UnitType, UnitType = second.UnitType,
Department = second.Department, Department = second.Department,
WorkPost = item.Post, WorkPost = item.JobTitle,
JobNumber = item.WorkNumber, JobNumber = item.WorkNumber,
PersonName = item.Name, PersonName = item.Name,
PerforSumFee = item.DistPerformance, PerforSumFee = item.DistPerformance,
...@@ -2128,12 +2128,18 @@ public dynamic Print(int secondId) ...@@ -2128,12 +2128,18 @@ public dynamic Print(int secondId)
var second = agsecondallotRepository.GetEntity(t => t.Id == secondId); var second = agsecondallotRepository.GetEntity(t => t.Id == secondId);
if (second == null) return new List<SecPrintResponse>(); if (second == null) return new List<SecPrintResponse>();
//var computes = agcomputeRepository.GetEntities(t => t.SecondId == secondId); var status = new int[] { (int)SecondAllotStatus.WaitReview, (int)SecondAllotStatus.PassAudit };
//if (computes == null || !computes.Any()) if (!second.Status.HasValue || !status.Contains(second.Status.Value))
// return new List<SecPrintResponse>(); throw new PerformanceException("当前科室分配结果未提交,无法打印!");
if (!second.UseTempId.HasValue)
throw new PerformanceException("当前科室分配模板信息错误!");
var useTempId = second.UseTempId.Value;
List<SecPrintResponse> result = new List<SecPrintResponse>(); List<SecPrintResponse> result = new List<SecPrintResponse>();
SecPrintHeaderResponse header = new SecPrintHeaderResponse(); SecPrintHeaderResponse header = new SecPrintHeaderResponse();
if (second.UseTempId.HasValue && second.UseTempId == 6) if (useTempId == 6)
{ {
var data = agothersourceRepository.GetEntities(t => t.SecondId == secondId); var data = agothersourceRepository.GetEntities(t => t.SecondId == secondId);
if (data == null || !data.Any()) return new List<SecPrintResponse>(); if (data == null || !data.Any()) return new List<SecPrintResponse>();
...@@ -2145,7 +2151,7 @@ public dynamic Print(int secondId) ...@@ -2145,7 +2151,7 @@ public dynamic Print(int secondId)
header.NightShiftWorkPerforTotal = result.Sum(t => t.NightWorkPerformance ?? 0); header.NightShiftWorkPerforTotal = result.Sum(t => t.NightWorkPerformance ?? 0);
header.TotalPerformance = result.Sum(t => t.DistPerformance ?? 0); header.TotalPerformance = result.Sum(t => t.DistPerformance ?? 0);
} }
else if (second.UseTempId.HasValue && (new int[] { 9, 10 }).Contains(second.UseTempId.Value)) else if ((new int[] { 9, 10 }).Contains(useTempId))
{ {
var data = agbodysourceRepository.GetEntities(t => t.SecondId == secondId); var data = agbodysourceRepository.GetEntities(t => t.SecondId == secondId);
if (data == null || !data.Any()) return new List<SecPrintResponse>(); if (data == null || !data.Any()) return new List<SecPrintResponse>();
...@@ -2173,7 +2179,7 @@ public dynamic Print(int secondId) ...@@ -2173,7 +2179,7 @@ public dynamic Print(int secondId)
header = Mapper.Map<SecPrintHeaderResponse>(headerdata); header = Mapper.Map<SecPrintHeaderResponse>(headerdata);
//header.HosOtherPerformance = result.Sum(t => t.OtherPerformance ?? 0); //header.HosOtherPerformance = result.Sum(t => t.OtherPerformance ?? 0);
} }
else if (second.UseTempId.HasValue && (new int[] { 7, 8 }).Contains(second.UseTempId.Value)) else if ((new int[] { 7, 8 }).Contains(useTempId))
{ {
var itemname = new List<string> { "人员工号", "姓名", "职称", "职称绩效", "工作量绩效工资", "单项奖励小计", "可分配绩效", "医院其他绩效", "夜班工作量绩效" }; var itemname = new List<string> { "人员工号", "姓名", "职称", "职称绩效", "工作量绩效工资", "单项奖励小计", "可分配绩效", "医院其他绩效", "夜班工作量绩效" };
var fixaitems = agfixatitemRepository.GetEntities(t => t.SecondId == secondId && itemname.Contains(t.ItemName)); var fixaitems = agfixatitemRepository.GetEntities(t => t.SecondId == secondId && itemname.Contains(t.ItemName));
...@@ -2232,9 +2238,9 @@ public dynamic Print(int secondId) ...@@ -2232,9 +2238,9 @@ public dynamic Print(int secondId)
PersonName = w.Name, PersonName = w.Name,
Department = w.Department, Department = w.Department,
RealAmount = w.RealAmount, RealAmount = w.RealAmount,
WorkPost = w.Post, WorkPost = w.JobTitle,
TitlePerfor = w.TitlePerformance, TitlePerfor = w.TitlePerformance,
WorkPerformance = bodyDynamic?.Where(b => b.BodyId == w.Id && b.ItemId.StartsWith("WorkPerformance_")).Sum(b => b.Value) ?? 0, WorkPerformance = w.WorkPerformance,
DeptReward = w.DeptReward, DeptReward = w.DeptReward,
DistPerformance = w.DistPerformance, DistPerformance = w.DistPerformance,
OtherPerformance = w.OtherPerformance, OtherPerformance = w.OtherPerformance,
......
...@@ -113,7 +113,8 @@ public SheetExportResponse SheetExport(int sheetID) ...@@ -113,7 +113,8 @@ public SheetExportResponse SheetExport(int sheetID)
} }
else else
{ {
CommonExport(sheetID, response); CommonExport(sheetID, response,sheet.SheetType);
//response.Header = response.Header.Select(t => t.Data.ToDistinct(c => c.CellValue)).ToList();
if (new int[] { (int)SheetType.Income, (int)SheetType.OtherIncome, (int)SheetType.Expend, (int)SheetType.Workload }.Contains(sheet.SheetType.Value)) if (new int[] { (int)SheetType.Income, (int)SheetType.OtherIncome, (int)SheetType.Expend, (int)SheetType.Workload }.Contains(sheet.SheetType.Value))
{ {
var point = 0; var point = 0;
...@@ -141,12 +142,17 @@ public SheetExportResponse SheetExport(int sheetID) ...@@ -141,12 +142,17 @@ public SheetExportResponse SheetExport(int sheetID)
return response; return response;
} }
private void CommonExport(int sheetID, SheetExportResponse response) private void CommonExport(int sheetID, SheetExportResponse response,int? sheetType)
{ {
var headList = _perforImHeaderRepository.GetEntities(t => t.SheetID == sheetID)?.OrderBy(t => t.PointCell).ToDistinct(t=>t.CellValue); var headList = _perforImHeaderRepository.GetEntities(t => t.SheetID == sheetID)?.OrderBy(t => t.PointCell);
if (headList == null) return; if (headList == null) return;
var dataList = _perforImDataRepository.GetEntities(t => t.SheetID == sheetID)?.OrderByDescending(t => t.AccountingUnit).ToList();
if (sheetType == (int)SheetType.AccountBasic)
headList = headList.ToDistinct(t => t.CellValue).OrderBy(t => t.PointCell);
var dataList = _perforImDataRepository.GetEntities(t => t.SheetID == sheetID)?.OrderByDescending(t => t.AccountingUnit).ToList();
var sheet = _perforImSheetRepository.GetEntity(t => t.ID == sheetID); var sheet = _perforImSheetRepository.GetEntity(t => t.ID == sheetID);
//添加系数值 //添加系数值
......
...@@ -12,7 +12,7 @@ public class UnitTypeUtil ...@@ -12,7 +12,7 @@ public class UnitTypeUtil
/// </summary> /// </summary>
/// <param name="unit"></param> /// <param name="unit"></param>
/// <returns></returns> /// <returns></returns>
public static bool IsOffice(int unit) public static bool IsOffice(int? unit)
{ {
return unit == (int)UnitType.行政后勤; return unit == (int)UnitType.行政后勤;
} }
......
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