Commit 70d4de26 by ruyun.zhang

二次分配汇总栏目名称返回

parent 023d7e0b
......@@ -64,6 +64,11 @@
开启反SQL注入白名单地址
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.Application.NightShiftTexts">
<summary>
夜班绩效文本名称
</summary>
</member>
<member name="T:Performance.DtoModels.AppSettings.AppSQLEncrypt">
<summary>
数据库密码加密
......
......@@ -38,5 +38,9 @@ public class Application
/// 开启反SQL注入白名单地址
/// </summary>
public string[] AntiSqlInjectRouteWhite { get; set; }
/// <summary>
/// 夜班绩效文本名称
/// </summary>
public string[] NightShiftTexts { get; set; }
}
}
using AutoMapper;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using AutoMapper;
using Microsoft.Extensions.Options;
using Performance.DtoModels;
using Performance.DtoModels.AppSettings;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Performance.Services.AllotCompute
{
......@@ -17,6 +16,7 @@ namespace Performance.Services.AllotCompute
public class ProcessComputService : IAutoInjection
{
private readonly IMapper _mapper;
private readonly IOptions<Application> _options;
private readonly BudgetService _budgetService;
private PerforCofincomeRepository perforCofincomeRepository;
private PerforPersheetRepository perforPerSheetRepository;
......@@ -35,6 +35,7 @@ public class ProcessComputService : IAutoInjection
public ProcessComputService(
IMapper mapper,
IOptions<Application> options,
BudgetService budgetService,
PerforCofincomeRepository perforCofincomeRepository,
PerforPersheetRepository perforPerSheetRepository,
......@@ -52,6 +53,7 @@ public class ProcessComputService : IAutoInjection
PerforPerallotRepository perallotRepository)
{
_mapper = mapper;
_options = options;
_budgetService = budgetService;
this.perforCofincomeRepository = perforCofincomeRepository;
this.perforPerSheetRepository = perforPerSheetRepository;
......@@ -307,7 +309,10 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, per_allot
workDoctor = info.Data.FirstOrDefault(t => t.UnitType == UnitType.医生组.ToString() && t.AccountingUnit == dept.AccountingUnit);
// 夜班绩效 从医院奖罚的明细项中获取
// 2022-03-16 wufeifei
string[] nightShiftTexts = new string[] { "夜班绩效", "夜班工作量", "夜班工作量奖励" };
string[] nightShiftTexts = _options.Value.NightShiftTexts;
if (nightShiftTexts?.Any() != true)
nightShiftTexts = new string[] { "夜班绩效", "夜班工作量", "夜班工作量奖励", "手术绩效", };
var nightShift = adjustLaterOtherFee?.FirstOrDefault(w => w.UnitType == dept.UnitType && w.AccountingUnit == dept.AccountingUnit && nightShiftTexts.Contains(w.TypeName?.Trim()))?.CellValue ?? 0;
dept.NightShiftWorkPerforFee = nightShift;
......@@ -391,7 +396,10 @@ public void ComputeOffice(per_allot allot, PerExcel excel)
{
// 夜班绩效 从医院奖罚的明细项中获取
// 2022-03-16 wufeifei
string[] nightShiftTexts = new string[] { "夜班绩效", "夜班工作量", "夜班工作量奖励" };
string[] nightShiftTexts = _options.Value.NightShiftTexts;
if (nightShiftTexts?.Any() != true)
nightShiftTexts = new string[] { "夜班绩效", "夜班工作量", "夜班工作量奖励", "手术绩效", };
var nightShift = adjustLaterOtherFee?.FirstOrDefault(w => w.UnitType == dept.UnitType && w.AccountingUnit == dept.AccountingUnit && nightShiftTexts.Contains(w.TypeName?.Trim()))?.CellValue ?? 0;
dept.NightShiftWorkPerforFee = nightShift;
......
using AutoMapper;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Performance.DtoModels;
using Performance.DtoModels.AppSettings;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository;
......@@ -17,6 +19,7 @@ namespace Performance.Services.AllotCompute
public class ResultComputeService : IAutoInjection
{
private readonly IMapper _mapper;
private readonly IOptions<Application> _options;
private readonly DapperService _service;
private readonly PerforPerallotRepository _perforPerallotRepository;
private readonly BaiscNormService baiscNormService;
......@@ -36,6 +39,7 @@ public class ResultComputeService : IAutoInjection
public ResultComputeService(
IMapper mapper,
IOptions<Application> options,
DapperService service,
PerforPerallotRepository perforPerallotRepository,
PerforHospitalRepository hospitalRepository,
......@@ -52,6 +56,7 @@ public class ResultComputeService : IAutoInjection
ILogger<ResultComputeService> logger)
{
_mapper = mapper;
_options = options;
_service = service;
_perforPerallotRepository = perforPerallotRepository;
this.baiscNormService = baiscNormService;
......@@ -174,7 +179,10 @@ public void SpecialUnitCompute(PerExcel excel, per_allot allot, List<res_baiscno
// 夜班绩效 从医院奖罚的明细项中获取
// 2022-03-16 wufeifei
string[] nightShiftTexts = new string[] { "夜班绩效", "夜班工作量", "夜班工作量奖励" };
string[] nightShiftTexts = _options.Value.NightShiftTexts;
if (nightShiftTexts?.Any() != true)
nightShiftTexts = new string[] { "夜班绩效", "夜班工作量", "夜班工作量奖励", "手术绩效", };
var nightShift = adjustLaterOtherFee?.FirstOrDefault(w => w.UnitType == dept?.UnitType && w.AccountingUnit == dept?.AccountingUnit && nightShiftTexts.Contains(w.TypeName?.Trim()))?.CellValue ?? 0;
decimal? headcount = null;
......
......@@ -464,7 +464,7 @@ public IEnumerable<dynamic> QueryAttendanceIssue(int allotId, List<string> unitT
if (!string.IsNullOrEmpty(accountingUnit))
{
sql += " and accountingUnit = @accountingUnit";
parameters.Add("@accountingUnit", $"accountingUnit");
parameters.Add("@accountingUnit", accountingUnit);
}
if (!string.IsNullOrEmpty(personnelNameOrNumber))
{
......
......@@ -35,6 +35,7 @@ public class PersonService : IAutoInjection
private readonly PerforAgsecondallotRepository agsecondallotRepository;
private readonly PerforHospitalRepository perforHospitalRepository;
private readonly PerforCofaccountingRepository perforCofaccountingRepository;
private readonly PerforPerAttendanceIssueRepository _issueRepository;
private readonly UserService userService;
private readonly DapperService dapperService;
private readonly Application application;
......@@ -53,11 +54,11 @@ public class PersonService : IAutoInjection
PerforAgsecondallotRepository agsecondallotRepository,
PerforHospitalRepository perforHospitalRepository,
PerforCofaccountingRepository perforCofaccountingRepository,
PerforPerAttendanceIssueRepository issueRepository,
UserService userService,
DapperService dapperService,
IOptions<Application> application,
IWebHostEnvironment evn
)
IWebHostEnvironment evn)
{
_mapper = mapper;
this.logger = logger;
......@@ -71,6 +72,7 @@ IWebHostEnvironment evn
this.agsecondallotRepository = agsecondallotRepository;
this.perforHospitalRepository = perforHospitalRepository;
this.perforCofaccountingRepository = perforCofaccountingRepository;
_issueRepository = issueRepository;
this.userService = userService;
this.dapperService = dapperService;
this.application = application.Value;
......@@ -150,6 +152,25 @@ public void CreateAllotPersons(int hospitalId, int allotId, int prevAllotId = -1
return entity;
}).ToList();
// lcr 2023-04-14 按调动记录最后一次所在科室更新人员字典
var issues = _issueRepository.GetEntities(w => w.AllotId == prevAllotId);
if (issues?.Any() == true)
{
foreach (var item in data)
{
var issuePersonnel = issues.Where(w => w.PersonnelNumber == item.PersonnelNumber).OrderByDescending(w => w.BeginDate).FirstOrDefault();
if (issuePersonnel != null)
{
if (issuePersonnel.UnitType != item.UnitType || issuePersonnel.AccountingUnit != item.AccountingUnit || issuePersonnel.PermanentStaff != item.PermanentStaff)
{
item.UnitType = issuePersonnel.UnitType;
item.AccountingUnit = issuePersonnel.AccountingUnit;
item.PermanentStaff = issuePersonnel.PermanentStaff;
}
}
}
}
SaveAllotPersons(data);
}
......
......@@ -205,6 +205,24 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
var maps = new List<SecondColumnDictionary>()
{
// 顶部
new SecondColumnDictionary(getAlias(nameof(ag_headsource.TotalPerformance),"可分配绩效"),nameof(ag_bodysource.WorkNumber), true, 10, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.HosOtherPerformance),"医院其他绩效"),nameof(ag_bodysource.WorkNumber), true, 20, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.NightShiftWorkPerforTotal),"夜班绩效综合"),nameof(ag_bodysource.WorkNumber), true, 30, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.TotalPreAccountingReward),"核算平均前单项"),nameof(ag_bodysource.WorkNumber), true, 40, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.TotalDistPerformance),"科室总绩效"),nameof(ag_bodysource.WorkNumber), true, 50, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.DirectorBasisPerformance),"主任基础绩效"),nameof(ag_bodysource.WorkNumber), true, 60, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.TotalDeptReward),"科室单项奖励"),nameof(ag_bodysource.WorkNumber), true, 70, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.DaysFullAttendance),"满勤天数"),nameof(ag_bodysource.WorkNumber), true, 80, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.DepartmentsPerCapita),"科室人均"),nameof(ag_bodysource.WorkNumber), true, 90, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.TheNumberOfAccountingDepartment),"科室核算人数"),nameof(ag_bodysource.WorkNumber), true, 100, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.TheTotalAllocationOfPerformanceResults),"业绩分配绩效总额"),nameof(ag_bodysource.WorkNumber), true, 110, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.SeniorityTitlesAccountedPerformance),"年资职称绩效占比"),nameof(ag_bodysource.WorkNumber), true, 120, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.SeniorityTitlesPerformance),"年资职称绩效"),nameof(ag_bodysource.WorkNumber), true, 130, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.Workload_Ratio_Default),"工作量绩效占比"),nameof(ag_bodysource.WorkNumber), true, 140, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.Workload_Amount_Default),"工作量绩效金额"),nameof(ag_bodysource.WorkNumber), true, 150, "Top", isNumber: true),
// 表格
new SecondColumnDictionary(getAlias(nameof(ag_bodysource.WorkNumber),"人员工号"),nameof(ag_bodysource.WorkNumber),true,100, isNumber: false),
new SecondColumnDictionary(getAlias(nameof(ag_bodysource.Name),"姓名"),nameof(ag_bodysource.Name),true,100, isNumber: false),
new SecondColumnDictionary(getAlias(nameof(ag_bodysource.Department),"分配科室"),nameof(ag_bodysource.Department),true,100, isNumber: false),
......@@ -254,7 +272,8 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
foreach (var item in alias)
{
if (!maps.Any(w => w.Key.Equals(item.Name, StringComparison.OrdinalIgnoreCase))
&& !notCalculate.Contains(item.Name))
&& !notCalculate.Contains(item.Name)
&& !item.OriginalName.Equals("Top", StringComparison.OrdinalIgnoreCase))
{
maps.Add(new SecondColumnDictionary(item.Alias, item.Name, false, item.Sort, color: "title_color", isNumber: false, expand: true));
}
......@@ -307,8 +326,8 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
foreach (var item in workloadTypes.OrderBy(t => t.Id))
{
maps.Add(new SecondColumnDictionary($"{item.TypeName}占比", $"Workload_Ratio_{item.Id}", true, 1, "Top", isNumber: true));
maps.Add(new SecondColumnDictionary($"{item.TypeName}金额", $"Workload_Amount_{item.Id}", true, 1, "Top", isNumber: true));
maps.Add(new SecondColumnDictionary($"{item.TypeName}占比", $"Workload_Ratio_{item.Id}", true, 400, "Top", isNumber: true));
maps.Add(new SecondColumnDictionary($"{item.TypeName}金额", $"Workload_Amount_{item.Id}", true, 400, "Top", isNumber: true));
}
}
}
......@@ -324,7 +343,7 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
{
maps.Add(new SecondColumnDictionary(item.Value, item.Title, false, ++preAccountingRewardSort, type: "PreAccountingReward", color: "preaccountingreward_color"));
}
return maps.OrderBy(w => w.Sort).ToList();
return maps.OrderBy(w => w.Site).ThenBy(w => w.Sort).ToList();
}
/// <summary>
......
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