Commit 8d87daf6 by lcx

perheader过滤、筛选条件过滤

parent 903d85ac
......@@ -50,7 +50,8 @@ public ApiResponse Rank([FromBody]HospitalIdRequest request)
[HttpPost]
public ApiResponse Selection([FromBody]SelectionRequest report)
{
var result = reportDataService.GetReportSelection(report.GroupId);
var userId = claimService.GetUserId();
var result = reportDataService.GetReportSelection(report.GroupId, userId);
return new ApiResponse(ResponseType.OK, result);
}
......@@ -66,7 +67,8 @@ public ApiResponse Info([FromBody]SelectionRequest report)
[HttpPost]
public ApiResponse Search([FromBody]SearchReportRequest report)
{
var result = reportDataService.GetReportData(report.HospitalId, report.GroupId, report.ReportId, report.Values ?? new List<SelectionValues>());
var userId = claimService.GetUserId();
var result = reportDataService.GetReportData(report.HospitalId, report.GroupId, report.ReportId, report.Values ?? new List<SelectionValues>(), userId);
return new ApiResponse(ResponseType.OK, result);
}
......
......@@ -242,6 +242,13 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.BudgetController.UseResult(System.Int32)">
<summary>
使用预算比例
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetCompute(Performance.DtoModels.ComputerRequest)">
<summary>
获取绩效发放列表
......
......@@ -21,7 +21,30 @@ public class PerSheetDataReadClinicEmployee : IPerSheetDataRead
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
List<IPerData> dataList = new List<IPerData>();
string[] headers = new string[]
{
"核算单元分类",
"核算单元",
"核算单元",
"人员工号",
"医生姓名",
"职务分类",
"基础绩效系数",
"岗位系数",
"效率绩效系数",
"规模绩效系数",
"管理绩效发放系数",
"考核得分率",
"出勤率",
"其他绩效",
"医院奖罚",
"调节系数",
};
foreach (var item in headers)
{
if (!perHeader.Any(p => p.CellValue == item))
throw new NullReferenceException($"{sheet.SheetName}{item}列为空");
}
for (int r = Point.DataFirstRowNum.Value; r < sheet.LastRowNum + 1; r++)
{
var row = sheet.GetRow(r);
......
......@@ -24,7 +24,30 @@ public class PerSheetDataReadDeptAccounting : IPerSheetDataRead
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
List<IPerData> dataList = new List<IPerData>();
string[] headers = new string[]
{
"核算单元类型",
"核算单元",
"科室名称",
"效率绩效人数",
"科主任/护士长人数",
"核算单元人员数量",
"预算比例",
"倾斜系数",
"工作量倾斜系数",
"保底绩效参考标准",
"保底绩效系数",
"其他绩效1",
"其他绩效2",
"医院奖罚",
"考核得分率",
"调节系数",
};
foreach (var item in headers)
{
if (!perHeader.Any(p => p.CellValue == item))
throw new NullReferenceException($"{sheet.SheetName}{item}列为空");
}
for (int r = Point.DataFirstRowNum.Value; r < sheet.LastRowNum + 1; r++)
{
var row = sheet.GetRow(r);
......
......@@ -24,7 +24,29 @@ public class PerSheetDataReadEmployee : IPerSheetDataRead
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
List<IPerData> dataList = new List<IPerData>();
string[] headers = new string[]
{
"核算单元",
"核算单元",
"人员工号",
"医生姓名",
"职务分类",
"绩效基数核算参考对象",
"绩效基数核算系数",
"人员分类",
"岗位系数",
"参加工作时间",
"考核得分率",
"出勤率",
"其他绩效",
"医院奖罚",
"调节系数",
};
foreach (var item in headers)
{
if (!perHeader.Any(p => p.CellValue == item))
throw new NullReferenceException($"{sheet.SheetName}{item}列为空");
}
for (int r = Point.DataFirstRowNum.Value; r < sheet.LastRowNum + 1; r++)
{
var row = sheet.GetRow(r);
......
......@@ -23,6 +23,23 @@ public class PerSheetDataReadSpecialUnit : IPerSheetDataRead
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
List<IPerData> dataList = new List<IPerData>();
string[] headers = new string[]
{
"量化指标",
"数量",
"量化指标绩效分值",
"科室",
"人数",
"考核得分率",
"其他绩效",
"医院奖罚",
"调节系数",
};
foreach (var item in headers)
{
if (!perHeader.Any(p => p.CellValue == item))
throw new NullReferenceException($"{sheet.SheetName}{item}列为空");
}
// 特殊科室多科室聚合,合并时保留科室名称
string lastAccount = "";
for (int r = Point.DataFirstRowNum.Value; r < sheet.LastRowNum + 1; r++)
......
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Performance.DtoModels;
using Performance.DtoModels.AppSettings;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository;
......@@ -19,19 +21,31 @@ public class ReportDataService : IAutoInjection
private readonly PerforRepselectionRepository selectionRepository;
private readonly PerforRepgroupRepository groupRepository;
private readonly PerforRepgroupselectionRepository groupselectionRepository;
private readonly PerforUserroleRepository userroleRepository;
private readonly PerforRoleRepository roleRepository;
private readonly PerforUserRepository userRepository;
private readonly Application application;
public ReportDataService(
ILogger<ReportDataService> logger,
PerforRepreportRepository reportRepository,
PerforRepselectionRepository selectionRepository,
PerforRepgroupRepository groupRepository,
PerforRepgroupselectionRepository groupselectionRepository)
PerforRepgroupselectionRepository groupselectionRepository,
PerforUserroleRepository userroleRepository,
PerforRoleRepository roleRepository,
PerforUserRepository userRepository,
IOptions<Application> application)
{
this.logger = logger;
this.reportRepository = reportRepository;
this.selectionRepository = selectionRepository;
this.groupRepository = groupRepository;
this.groupselectionRepository = groupselectionRepository;
this.userroleRepository = userroleRepository;
this.roleRepository = roleRepository;
this.userRepository = userRepository;
this.application = application.Value;
}
/// <summary>
......@@ -39,7 +53,7 @@ public class ReportDataService : IAutoInjection
/// </summary>
/// <param name="groupId"></param>
/// <returns></returns>
public List<SelectionOptions> GetReportSelection(int groupId)
public List<SelectionOptions> GetReportSelection(int groupId, int userId)
{
List<SelectionOptions> options = new List<SelectionOptions>();
......@@ -51,6 +65,8 @@ public List<SelectionOptions> GetReportSelection(int groupId)
if (selections == null)
return options;
var isMedical = IsMedical(userId);
var dispaly = new int[] { (int)SelectionState.UsableAndNotDispaly, (int)SelectionState.NotUsableAndNotDispaly };
foreach (var item in selections.Where(t => t.State.HasValue && !dispaly.Contains(t.State.Value)))
{
......@@ -59,6 +75,10 @@ public List<SelectionOptions> GetReportSelection(int groupId)
// handle = new SelectionOptionDynamic();
SelectionOptions selection = new SelectionOptions(item);
selection.Options = handle.GetOptions(item);
if (isMedical)
{
selection.Options.RemoveAll(t => t.Title == "全院");
}
options.Add(selection);
}
return options;
......@@ -92,7 +112,7 @@ public object GetReportInfo(int groupId)
/// <param name="groupId"></param>
/// <param name="values"></param>
/// <returns></returns>
public List<ReportData> GetReportData(int hospitalId, int groupId, int reportId, List<SelectionValues> values)
public List<ReportData> GetReportData(int hospitalId, int groupId, int reportId, List<SelectionValues> values, int userId)
{
var groups = groupRepository.GetEntities(w => w.GroupId == groupId);
var arr1 = groups.Select(w => w.ReportId);
......@@ -112,6 +132,9 @@ public List<ReportData> GetReportData(int hospitalId, int groupId, int reportId,
var selections = selectionRepository.GetEntities(w => arr2.Contains(w.ID) && w.State.HasValue && dispaly.Contains(w.State.Value))
?? new List<rep_selection>();
var isMedical = IsMedical(userId);
var department = GetUserDepartment(userId);
List<ReportData> result = new List<ReportData>();
foreach (var report in reports)
{
......@@ -125,6 +148,8 @@ public List<ReportData> GetReportData(int hospitalId, int groupId, int reportId,
@where = GetFilterSelection(selections, values);
}
@where += $" and hospitalid={hospitalId}";
if (isMedical)
@where += $" and department='{department}'";
// 固定占位符
var pairs = PredefinePlaceholder(values);
pairs.Add("wh", @where);
......@@ -328,6 +353,22 @@ private string ReplacePlaceholder(List<rep_selection> selections, List<Selection
}
return content;
}
private bool IsMedical(int userId)
{
var userrole = userroleRepository.GetEntity(t => t.UserID == userId);
var role = roleRepository.GetEntity(t => t.ID == userrole.RoleID);
if (role.Type == application.DirectorRole || role.Type == application.NurseRole)
return true;
else
return false;
}
private string GetUserDepartment(int userId)
{
var user = userRepository.GetEntity(t => t.ID == userId);
return user.Department;
}
}
......
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