Commit 8d04651f by lcx

Merge branch 'v2020morge' into v2020morge-graphql

# Conflicts:
#	performance/Performance.Api/Controllers/SecondAllotController.cs
#	performance/Performance.Api/wwwroot/Performance.EntityModels.xml
#	performance/Performance.EntityModels/Context/PerformanceDbContext.cs
parents 6dcaa653 e940a7c2
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Internal;
using Microsoft.AspNetCore.Mvc;
using Performance.DtoModels;
using Performance.Infrastructure;
using Performance.Services;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
......@@ -10,10 +17,51 @@ namespace Performance.Api.Controllers
[Route("api/{hospitalId}/report/global")]
public class ReportGlobalController : Controller
{
//private readonly
private readonly IHostingEnvironment env;
private readonly AllotService allotService;
private readonly ReportGlobalService reportGlobalService;
public ReportGlobalController()
public ReportGlobalController(
IHostingEnvironment env,
AllotService allotService,
ReportGlobalService reportGlobalService
)
{
this.env = env;
this.allotService = allotService;
this.reportGlobalService = reportGlobalService;
}
/// <summary>
/// 上传人员绩效文件
/// </summary>
/// <param name="hospitalId"></param>
/// <param name="form"></param>
/// <returns></returns>
[Route("import")]
[HttpPost]
public ApiResponse Import(int hospitalId, [FromForm] IFormCollection form)
{
var file = ((FormFileCollection)form.Files).FirstOrDefault();
if (file == null)
return new ApiResponse(ResponseType.Fail, "参数错误", "文件无效");
var name = FileHelper.GetFileNameNoExtension(file.FileName) + DateTime.Now.ToString("yyyyMMddHHmmssfff");
var ext = FileHelper.GetExtension(file.FileName);
var dpath = Path.Combine(env.ContentRootPath, "Files", $"{hospitalId}", $"ImportDataFiles");
FileHelper.CreateDirectory(dpath);
var path = Path.Combine(dpath, $"{name}{ext}");
using (var stream = file.OpenReadStream())
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
if (!FileHelper.CreateFile(path, bytes))
return new ApiResponse(ResponseType.Fail, $"{file.FileName}上传失败");
}
reportGlobalService.ImportAllotData(hospitalId, path);
return new ApiResponse(ResponseType.OK);
}
}
}
......@@ -456,7 +456,6 @@ public ApiResponse DeptComputeDetail(int allotId)
var userId = claimService.GetUserId();
//var data = secondAllotService.DeptComputeDetail(userId, allotId, out int isShowManage);
var data = secondAllotService.DeptComputeDetailList(userId, allotId, out int isShowManage);
return new ApiResponse(ResponseType.OK, new { isShowManage, data });
}
}
......
......@@ -1094,6 +1094,14 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportGlobalController.Import(System.Int32,Microsoft.AspNetCore.Http.IFormCollection)">
<summary>
上传人员绩效文件
</summary>
<param name="hospitalId"></param>
<param name="form"></param>
<returns></returns>
</member>
<member name="T:Performance.Api.Controllers.SecondAllotController">
<summary>
二次绩效
......
......@@ -1044,6 +1044,11 @@
应发管理绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.OtherManagePerfor">
<summary>
其他管理绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Income">
<summary>
科室业绩
......
......@@ -88,9 +88,6 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_workitem">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_workloadtype">
<summary> 工作量分类 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_workyear">
<summary> 工龄对应绩效系数配置 </summary>
</member>
......@@ -101,7 +98,7 @@
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cust_script">
<summary> 自定义导出 </summary>
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_item">
<summary> </summary>
......@@ -121,10 +118,7 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_type">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.his_data">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.his_script">
<member name="P:Performance.EntityModels.PerformanceDbContext.his_importdata">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.hos_personfee">
......@@ -160,18 +154,6 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_dic">
<summary> 部分公共数据抽取SQL </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_extract">
<summary> 医院数据提取脚本 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_item">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_module">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_special">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_againallot">
<summary> </summary>
</member>
......@@ -220,21 +202,6 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.report_global">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.report_original_persontime">
<summary> 医院门诊住院人次 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.report_original_stays">
<summary> 医院门诊住院人次 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.report_original_surgery">
<summary> 医院手术人次 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.report_original_workload">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.report_performance">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.res_account">
<summary> 科室核算结果 </summary>
</member>
......@@ -384,11 +351,6 @@
二次绩效ID
</summary>
</member>
<member name="P:Performance.EntityModels.ag_compute.UnitType">
<summary>
科室类型
</summary>
</member>
<member name="P:Performance.EntityModels.ag_compute.Department">
<summary>
科室
......@@ -414,11 +376,6 @@
可分配绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_compute.PerforManagementFee">
<summary>
管理绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_compute.OthePerfor">
<summary>
医院其他绩效
......@@ -426,7 +383,7 @@
</member>
<member name="P:Performance.EntityModels.ag_compute.NightWorkPerfor">
<summary>
夜班工作量绩效
实发绩效工资金额
</summary>
</member>
<member name="P:Performance.EntityModels.ag_compute.RealGiveFee">
......@@ -879,26 +836,6 @@
科室实发金额
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.Efficiency">
<summary>
效率绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.Scale">
<summary>
规模绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.Grant">
<summary>
发放系数
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.ShouldGiveFee">
<summary>
应发管理绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.Status">
<summary>
状态 1 未提交 2 等待审核 3 审核通过 4 驳回
......@@ -929,6 +866,11 @@
备注
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.NursingDeptStatus">
<summary>
护理部审核状态 1 未提交 2 等待审核 3 审核通过 4 驳回
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.NursingDeptAuditTime">
<summary>
护理部审核时间
......@@ -944,11 +886,6 @@
护理部备注
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.NursingDeptStatus">
<summary>
护理部审核状态 2 等待审核 3 审核通过 4 驳回
</summary>
</member>
<member name="T:Performance.EntityModels.ag_temp">
<summary>
二次绩效模板
......@@ -1529,36 +1466,6 @@
1. 药占比 2. CMI
</summary>
</member>
<member name="T:Performance.EntityModels.cof_workloadtype">
<summary>
工作量分类
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workloadtype.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workloadtype.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workloadtype.SourceType">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workloadtype.Original">
<summary>
名称
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workloadtype.Category">
<summary>
类别
</summary>
</member>
<member name="T:Performance.EntityModels.cof_workyear">
<summary>
工龄对应绩效系数配置
......@@ -1591,7 +1498,7 @@
</member>
<member name="T:Performance.EntityModels.collect_data">
<summary>
采集数据
</summary>
</member>
<member name="P:Performance.EntityModels.collect_data.ID">
......@@ -1611,7 +1518,7 @@
</member>
<member name="P:Performance.EntityModels.collect_data.UnitType">
<summary>
核算单元类别 1 医生组 2护理组 3医技组
</summary>
</member>
<member name="P:Performance.EntityModels.collect_data.RowNumber">
......@@ -1631,17 +1538,17 @@
</member>
<member name="P:Performance.EntityModels.collect_data.AccountingUnitTechnician">
<summary>
核算单元名称医技
核算单元名称 医技
</summary>
</member>
<member name="P:Performance.EntityModels.collect_data.AccountingUnitNurse">
<summary>
核算单元名称护士
核算单元名称 护士
</summary>
</member>
<member name="P:Performance.EntityModels.collect_data.AccountingUnitDoctor">
<summary>
核算单元名称医生
核算单元名称 医生
</summary>
</member>
<member name="P:Performance.EntityModels.collect_data.Department">
......@@ -1664,7 +1571,7 @@
</summary>
</member>
<member name="P:Performance.EntityModels.collect_permission.Id">
<member name="P:Performance.EntityModels.collect_permission.ID">
<summary>
</summary>
......@@ -1679,14 +1586,9 @@
</summary>
</member>
<member name="P:Performance.EntityModels.collect_permission.SheetType">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.collect_permission.SheetName">
<summary>
列头类型名称
</summary>
</member>
<member name="P:Performance.EntityModels.collect_permission.HeadName">
......@@ -1694,11 +1596,6 @@
列头名称
</summary>
</member>
<member name="P:Performance.EntityModels.collect_permission.Visible">
<summary>
0 可见 1 只读
</summary>
</member>
<member name="P:Performance.EntityModels.collect_permission.Readnoly">
<summary>
0 可读可写 1 只读
......@@ -1706,7 +1603,12 @@
</member>
<member name="P:Performance.EntityModels.collect_permission.AttachLast">
<summary>
是否附带上次绩效 0 附带 1 不附带
是否附带上次绩效 0 不附带 1 附带
</summary>
</member>
<member name="P:Performance.EntityModels.collect_permission.Visible">
<summary>
0 可见 1 不可见
</summary>
</member>
<member name="T:Performance.EntityModels.cust_script">
......@@ -1714,7 +1616,7 @@
自定义导出
</summary>
</member>
<member name="P:Performance.EntityModels.cust_script.Id">
<member name="P:Performance.EntityModels.cust_script.ID">
<summary>
</summary>
......@@ -1734,16 +1636,6 @@
是否允许二次分配下载 1 允许 2 禁止
</summary>
</member>
<member name="P:Performance.EntityModels.cust_script.Name">
<summary>
名称
</summary>
</member>
<member name="P:Performance.EntityModels.cust_script.Script">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cust_script.ConfigId">
<summary>
配置Id
......@@ -2024,134 +1916,79 @@
来源
</summary>
</member>
<member name="T:Performance.EntityModels.his_data">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.Id">
<member name="T:Performance.EntityModels.his_importdata">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.HospitalId">
<member name="P:Performance.EntityModels.his_importdata.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.AllotId">
<member name="P:Performance.EntityModels.his_importdata.HospitalId">
<summary>
医院ID
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.Year">
<member name="P:Performance.EntityModels.his_importdata.AllotId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.Month">
<member name="P:Performance.EntityModels.his_importdata.Year">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.HisDepartment">
<member name="P:Performance.EntityModels.his_importdata.Month">
<summary>
His科室
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.AccountingUnit">
<member name="P:Performance.EntityModels.his_importdata.AccountingUnit">
<summary>
核算单元
科室核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.Department">
<member name="P:Performance.EntityModels.his_importdata.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.PersonnelName">
<member name="P:Performance.EntityModels.his_importdata.PersonnelName">
<summary>
医生姓名
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.PersonnelNumber">
<member name="P:Performance.EntityModels.his_importdata.PersonnelNumber">
<summary>
人员工号
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.SourceType">
<summary>
来源
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.Category">
<summary>
费用类型
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.Original">
<summary>
原始分类
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.ItemName">
<summary>
标准分类
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.Value">
<summary>
费用
</summary>
</member>
<member name="P:Performance.EntityModels.his_data.CreateTime">
<summary>
创建时间
</summary>
</member>
<member name="T:Performance.EntityModels.his_script">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.HospitalId">
<member name="P:Performance.EntityModels.his_importdata.SourceType">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.SourceType">
<summary>
来源
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.Category">
<summary>
费用类型
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.ExecScript">
<member name="P:Performance.EntityModels.his_importdata.Category">
<summary>
执行sql
一级分类
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.DatabaseType">
<member name="P:Performance.EntityModels.his_importdata.Original">
<summary>
数据库类型1、Sql Server 2、Orcale
原始分类
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.ConfigId">
<member name="P:Performance.EntityModels.his_importdata.ItemName">
<summary>
配置Id
二级分类
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.IsEnable">
<member name="P:Performance.EntityModels.his_importdata.Value">
<summary>
是否可用 1 可用 2 不可用
</summary>
</member>
<member name="T:Performance.EntityModels.hos_personfee">
......@@ -2369,24 +2206,24 @@
行号
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.EmployeeName">
<member name="P:Performance.EntityModels.im_data.AccountingUnit">
<summary>
人员姓名
核算单元名称
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.JobNumber">
<member name="P:Performance.EntityModels.im_data.Department">
<summary>
人员工号
科室名称
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.AccountingUnit">
<member name="P:Performance.EntityModels.im_data.EmployeeName">
<summary>
核算单元名称
人员姓名
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.Department">
<member name="P:Performance.EntityModels.im_data.JobNumber">
<summary>
科室名称
人员工号
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.TypeName">
......@@ -2549,21 +2386,6 @@
其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.OtherPerfor2">
<summary>
其他绩效2
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.OtherPerfor3">
<summary>
其他绩效3
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.OtherPerfor4">
<summary>
其他绩效4
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.NightWorkPerfor">
<summary>
夜班费
......@@ -2669,11 +2491,21 @@
基础绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.FitPeopleValue">
<summary>
实际人均绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.PostCoefficient">
<summary>
岗位系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.PermanentStaff">
<summary>
效率绩效人数
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.Efficiency">
<summary>
效率绩效系数
......@@ -2689,6 +2521,11 @@
管理绩效发放系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.OtherManagePerfor">
<summary>
其他管理绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.ScoreAverageRate">
<summary>
考核得分率
......@@ -2714,16 +2551,6 @@
其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.OtherManagePerfor">
<summary>
其他管理绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.NightWorkPerfor">
<summary>
夜班费
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.Punishment">
<summary>
医院奖罚
......@@ -2749,16 +2576,6 @@
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.PermanentStaff">
<summary>
效率绩效人数
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.FitPeopleValue">
<summary>
实际人均绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.AssessBeforeOtherFee">
<summary>
考核前其他绩效
......@@ -2836,7 +2653,7 @@
</member>
<member name="P:Performance.EntityModels.im_employee_logistics.DoctorName">
<summary>
姓名
医生姓名
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_logistics.JobTitle">
......@@ -3159,201 +2976,6 @@
</summary>
</member>
<member name="T:Performance.EntityModels.mod_extract">
<summary>
医院数据提取脚本
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.HospitalId">
<summary>
医院ID
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.EName">
<summary>
当前脚本提取内容名称
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.ExecuteScript">
<summary>
执行脚本
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.ExecuteType">
<summary>
当前脚本类型 1 收入整表 2 单项数据提取
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.SourceType">
<summary>
数据库来源类型 1 标准库 2 绩效库
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.Description">
<summary>
描述
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.IsEnable">
<summary>
是否可用 1 可用 2 不可用
</summary>
</member>
<member name="T:Performance.EntityModels.mod_item">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ModuleId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ItemName">
<summary>
绩效考核项
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.FactorValue1">
<summary>
默认系数或医生系数
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.FactorValue2">
<summary>
护理系数
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.FactorValue3">
<summary>
医技系数
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ExtractId">
<summary>
抽取绩效值SQL
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ConfigId">
<summary>
数据库地址
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.SelectionRange">
<summary>
用户选定抽取范围
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ReadOnly">
<summary>
只读 0、否 1、是
</summary>
</member>
<member name="T:Performance.EntityModels.mod_module">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.SheetType">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.ModuleName">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.Description">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.ExtractId">
<summary>
提取脚本ID
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.ConfigId">
<summary>
数据库地址
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.ReadOnly">
<summary>
只读 0、否 1、是
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.IsGenerated">
<summary>
是否生成Item 0、否 1、是
</summary>
</member>
<member name="T:Performance.EntityModels.mod_special">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.Target">
<summary>
量化指标
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.TargetFactor">
<summary>
量化指标绩效分值
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.AdjustFactor">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.ExtractId">
<summary>
抽取绩效值SQL
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.ConfigId">
<summary>
数据库地址
</summary>
</member>
<member name="T:Performance.EntityModels.per_againallot">
<summary>
......@@ -3549,19 +3171,19 @@
审核人
</summary>
</member>
<member name="P:Performance.EntityModels.per_apr_amount.CreateDate">
<member name="P:Performance.EntityModels.per_apr_amount.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.EntityModels.per_apr_amount.CreateUser">
<member name="P:Performance.EntityModels.per_apr_amount.CreateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_apr_amount.Remark">
<member name="P:Performance.EntityModels.per_apr_amount.CreateUser">
<summary>
备注
</summary>
</member>
<member name="T:Performance.EntityModels.per_budget_amount">
......@@ -4086,7 +3708,7 @@
</member>
<member name="P:Performance.EntityModels.per_employee.UnitType">
<summary>
核算单元类别
人员类别
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee.Attendance">
......@@ -4216,7 +3838,7 @@
</member>
<member name="T:Performance.EntityModels.report_global">
<summary>
条件表
</summary>
</member>
<member name="P:Performance.EntityModels.report_global.Id">
......@@ -4234,27 +3856,27 @@
类别
</summary>
</member>
<member name="P:Performance.EntityModels.report_global.Year">
<member name="P:Performance.EntityModels.report_global.Type">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_global.Month">
<member name="P:Performance.EntityModels.report_global.InputName">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_global.Value">
<member name="P:Performance.EntityModels.report_global.InputType">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.report_original_persontime">
<summary>
医院门诊住院人次
</summary>
</member>
<member name="P:Performance.EntityModels.report_original_persontime.ID">
<member name="P:Performance.EntityModels.report_original_persontime.Id">
<summary>
</summary>
......@@ -4301,10 +3923,10 @@
</member>
<member name="T:Performance.EntityModels.report_original_stays">
<summary>
医院门诊住院人次
</summary>
</member>
<member name="P:Performance.EntityModels.report_original_stays.ID">
<member name="P:Performance.EntityModels.report_original_stays.Id">
<summary>
</summary>
......@@ -4351,10 +3973,10 @@
</member>
<member name="T:Performance.EntityModels.report_original_surgery">
<summary>
医院手术人次
</summary>
</member>
<member name="P:Performance.EntityModels.report_original_surgery.ID">
<member name="P:Performance.EntityModels.report_original_surgery.Id">
<summary>
</summary>
......@@ -4464,91 +4086,6 @@
费用
</summary>
</member>
<member name="T:Performance.EntityModels.report_performance">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.Year">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.Month">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.PersonnelName">
<summary>
人员信息
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.PersonnelNumber">
<summary>
人员工号
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.Department">
<summary>
医院科室
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.UnitType">
<summary>
核算单元类型
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.SourceType">
<summary>
统计分类
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.Category">
<summary>
统计大分类
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.ItemName">
<summary>
统计小分类
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.CurrentValue">
<summary>
本期
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.LastIssueValue">
<summary>
上期
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.SamePeriodValue">
<summary>
同期
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance.BudgetValue">
<summary>
预算
</summary>
</member>
<member name="T:Performance.EntityModels.rep_group">
<summary>
......@@ -4669,16 +4206,6 @@
报表标题
</summary>
</member>
<member name="P:Performance.EntityModels.rep_report.QueryName">
<summary>
查询方法名称
</summary>
</member>
<member name="P:Performance.EntityModels.rep_report.QueryArguments">
<summary>
查询参数
</summary>
</member>
<member name="P:Performance.EntityModels.rep_report.XTitle">
<summary>
X轴标题
......@@ -4854,16 +4381,6 @@
是否带入平均计算 是 否
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.PermanentStaff">
<summary>
定科人数
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.ManagerNumber">
<summary>
科主任/护士长数量
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Number">
<summary>
核算单元医生数量
......@@ -4964,16 +4481,6 @@
实发绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.ChangeLog">
<summary>
变更日志
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.AssessBeforeOtherFee">
<summary>
考核前其他绩效
......@@ -4994,6 +4501,16 @@
考核后绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.ChangeLog">
<summary>
变更日志
</summary>
</member>
<member name="T:Performance.EntityModels.res_accountdoctor">
<summary>
医生科室核算结果
......@@ -5291,12 +4808,12 @@
</member>
<member name="P:Performance.EntityModels.res_compute.FitPeopleValue">
<summary>
绩效基础核算参考值
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.FitPeopleRatio">
<summary>
绩效基数核算参考对象取值比例(如临床科室护士*95%)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.EmployeeName">
......@@ -5329,11 +4846,6 @@
人均绩效(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Basics">
<summary>
基础绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Efficiency">
<summary>
效率绩效(需计算)
......@@ -5379,26 +4891,6 @@
其他绩效(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.OtherPerfor2">
<summary>
其他绩效2(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.OtherPerfor3">
<summary>
其他绩效3(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.OtherPerfor4">
<summary>
其他绩效4(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.OtherManagePerfor">
<summary>
其他管理绩效(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.NightWorkPerfor">
<summary>
夜班费
......@@ -5459,6 +4951,11 @@
科主任/护士长人数
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.OtherManagePerfor">
<summary>
其他管理绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.MedicalNumber">
<summary>
核算单元人员数量
......@@ -5504,11 +5001,6 @@
</summary>
</member>
<member name="P:Performance.EntityModels.res_reserved.UnitType">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_reserved.AccountingUnit">
<summary>
核算单元
......
......@@ -158,6 +158,11 @@ public class PerDataAccountBaisc : IPerData
/// </summary>
public decimal ShouldGiveFee { get; set; }
/// <summary>
/// 其他管理绩效
/// </summary>
public decimal OtherManagePerfor { get; set; }
///// <summary>
///// 保底绩效参考标准
///// </summary>
......@@ -172,8 +177,8 @@ public class PerDataAccountBaisc : IPerData
///// 工作量倾斜系数
///// </summary>
//public Nullable<decimal> WorkSlopeFactor { get; set; }
#endregion
#endregion EXCEL读取
#region 由计算得出
......@@ -227,6 +232,6 @@ public class PerDataAccountBaisc : IPerData
/// </summary>
public Nullable<decimal> RealGiveFee { get; set; }
#endregion
#endregion 由计算得出
}
}
......@@ -135,6 +135,10 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<his_script> his_script { get; set; }
/// <summary> </summary>
public virtual DbSet<his_importdata> his_importdata { get; set; }
/// <summary> </summary>
public virtual DbSet<hos_personfee> hos_personfee { get; set; }
/// <summary> 科室核算导入信息 </summary>
......
//-----------------------------------------------------------------------
// <copyright file=" his_importdata.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("his_importdata")]
public class his_importdata
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
/// 医院ID
/// </summary>
public int HospitalId { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> AllotId { get; set; }
/// <summary>
/// 年
/// </summary>
public int Year { get; set; }
/// <summary>
/// 月
/// </summary>
public int Month { get; set; }
/// <summary>
/// 科室核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 科室
/// </summary>
public string Department { get; set; }
/// <summary>
/// 医生姓名
/// </summary>
public string PersonnelName { get; set; }
/// <summary>
/// 人员工号
/// </summary>
public string PersonnelNumber { get; set; }
/// <summary>
///
/// </summary>
public string SourceType { get; set; }
/// <summary>
/// 一级分类
/// </summary>
public string Category { get; set; }
/// <summary>
/// 原始分类
/// </summary>
public string Original { get; set; }
/// <summary>
/// 二级分类
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 值
/// </summary>
public Nullable<decimal> Value { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" his_importdata.cs">
// * FileName: his_importdata.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// his_importdata Repository
/// </summary>
public partial class PerforHisimportdataRepository : PerforRepository<his_importdata>
{
public PerforHisimportdataRepository(PerformanceDbContext context) : base(context)
{
}
}
}
......@@ -6,6 +6,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Text.RegularExpressions;
namespace Performance.Services
......@@ -901,9 +903,14 @@ public DeptDataDetails<DetailModuleExtend> DeptDetail(int accountId)
private List<DetailModule> CommonDetailItems(List<im_data> basicData, List<im_header> headers, per_sheet sheet, UnitType type)
{
var items = basicData
.Where(t => t.SheetID == sheet.ID && t.UnitType == (int)type && t.IsTotal != 1)
?.Select(t => new DetailModule
Expression<Func<im_data, bool>> exp = (t) => t.SheetID == sheet.ID && t.IsTotal != 1;
if (sheet.SheetType == (int)SheetType.Workload && new int[] { (int)UnitType.医技组, (int)UnitType.其他医技组 }.Contains((int)type))
exp = exp.And(t => new int[] { (int)UnitType.医生组, (int)UnitType.医技组, (int)UnitType.其他医技组 }.Contains(t.UnitType.Value));
else
exp = exp.And(t => t.UnitType == (int)type);
var items = basicData.Where(exp.Compile())?.Select(t => new DetailModule
{
ItemName = t.TypeName,
CellValue = t.CellValue,
......@@ -1252,35 +1259,43 @@ public DeptDataDetails GetDoctorDetail(int computeId)
//var allot = perforPerallotRepository.GetEntity(t => t.ID == resCompute.AllotID);
//if (allot == null) return new DeptDataDetails();
var employee = _perforImemployeeclinicRepository.GetEntity(t => t.AllotID == resCompute.AllotID && t.AccountingUnit == resCompute.AccountingUnit && t.UnitType == resCompute.UnitType && t.DoctorName == resCompute.EmployeeName);
var employee = _perforImemployeeclinicRepository.GetEntity(t => t.AllotID == resCompute.AllotID && t.AccountingUnit == resCompute.AccountingUnit && t.UnitType == resCompute.UnitType && t.PersonnelNumber == resCompute.JobNumber);
DeptDataDetails doctorDetails = new DeptDataDetails
{
ShowFormula = 0,
Pandect = new PerDataAccountBaisc
{
BasicFactor = employee?.Basics ?? 0, //基础绩效系数
Effic = employee.Efficiency ?? 0, //效率绩效系数
Scale = employee.Scale ?? 0, //规模绩效系数
Management = employee.Management,//管理绩效发放系数
AdjustFactor = employee?.Adjust ?? 1, //调节系数
AdjustLaterOtherFee = employee.AdjustLaterOtherFee, //调节后其他绩效
AccountingUnit = resCompute.AccountingUnit,
EmployeeName = resCompute.EmployeeName,
PerforTotal = resCompute.PerforTotal, //科室考核前绩效
Number = resCompute.Number ?? 0, //核算人数
AvgPerfor = (resCompute.Number ?? 0) == 0 ? 0 : resCompute.PerforTotal / resCompute.Number, //人均绩效
BasicFactor = employee?.Basics ?? 0, //基础绩效系数
Attendance = resCompute.Attendance, //出勤率
Attendance = resCompute.Attendance ?? 1, //出勤率
Avg = resCompute.Avg, //实际人均
PermanentStaff = resCompute.PermanentStaff ?? 0, //效率绩效人数
Effic = employee.Efficiency ?? 0, //效率绩效系数
EfficPerfor = resCompute.Efficiency ?? 0, //效率绩效
Scale = employee.Scale ?? 0, //规模绩效系数
ScalePerfor = resCompute.Scale ?? 0, //规模绩效
Management = employee.Management,//管理绩效发放系数
Extra = resCompute.Punishment ?? 0, //医院奖罚
OtherManagePerfor = resCompute.OtherManagePerfor ?? 0, //其他管理绩效
ShouldGiveFee = resCompute.ShouldGiveFee ?? 0, //考核前管理绩效
ScoringAverage = resCompute.ScoreAverageRate ?? 1, //考核得分率
AssessLaterManagementFee = Math.Round(resCompute.ShouldGiveFee * resCompute.ScoreAverageRate * resCompute.Attendance + resCompute.Punishment ?? 0), //考核后管理绩效
AdjustFactor = employee?.Adjust ?? 1, //调节系数
AdjustLaterOtherFee = employee.AdjustLaterOtherFee, //调节后其他绩效
RealGiveFee = resCompute.RealGiveFee //绩效合计
},
Detail = new List<DetailDtos>()
};
var isShowManage = IsShowManage(resCompute.AllotID.Value);
// 开启 显示管理绩效
if (isShowManage == 2)
doctorDetails.Pandect.RealGiveFee = doctorDetails.Pandect.AssessLaterManagementFee;
var sheets = _perforPerSheetRepository.GetEntities(t => t.AllotID == resCompute.AllotID && new int[] { (int)SheetType.PersonExtra, (int)SheetType.PersonAdjustLaterOtherFee }.Contains(t.SheetType.Value));
if (sheets == null || !sheets.Any()) return doctorDetails;
......
using Performance.EntityModels;
using Microsoft.Extensions.Logging;
using NPOI.SS.UserModel;
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository;
using Performance.Services.ExtractExcelService;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Performance.Services
{
public class ReportGlobalService : IAutoInjection
{
private readonly ILogger logger;
private readonly PerforPerallotRepository perallotRepository;
private readonly PerforReportglobalRepository reportglobalRepository;
private readonly PerforHisimportdataRepository hisimportdataRepository;
public ReportGlobalService(PerforReportglobalRepository reportglobalRepository)
public ReportGlobalService(
ILogger<ReportGlobalService> logger,
PerforPerallotRepository perallotRepository,
PerforReportglobalRepository reportglobalRepository,
PerforHisimportdataRepository hisimportdataRepository
)
{
this.logger = logger;
this.perallotRepository = perallotRepository;
this.reportglobalRepository = reportglobalRepository;
this.hisimportdataRepository = hisimportdataRepository;
}
public List<report_global> GetReportGlobals(int hospitalId)
......@@ -20,5 +37,119 @@ public List<report_global> GetReportGlobals(int hospitalId)
var globals = reportglobalRepository.GetEntities(t => t.HospitalID == hospitalId);
return globals;
}
#region ImportFile && SaveData
public void ImportAllotData(int hospitalId, string filePath)
{
IWorkbook workbook = null;
try
{
workbook = ExcelHelper.GetWorkbook(filePath);
if (workbook == null) throw new PerformanceException("文件读取失败");
var allots = perallotRepository.GetEntities(t => t.HospitalId == hospitalId);
for (int sheetIndex = 0; sheetIndex < workbook.NumberOfSheets; sheetIndex++)
{
var sheet = workbook.GetSheetAt(sheetIndex);
if (sheet == null) continue;
string sheetName = sheet.SheetName.NoBlank();
var columns = GetColumns(sheet, sheetName, out string sourceType);
if (columns == null || !columns.Any(t => !string.IsNullOrEmpty(t.NoBlank()))) continue;
var data = new List<his_importdata>();
for (int rowIndex = 1; rowIndex < sheet.LastRowNum + 1; rowIndex++)
{
var row = sheet.GetRow(rowIndex);
if (row == null) continue;
his_importdata importdata = new his_importdata
{
Year = GetCellValue<int>(row, columns, nameof(his_importdata.Year)),
Month = GetCellValue<int>(row, columns, nameof(his_importdata.Month)),
AccountingUnit = GetCellValue<string>(row, columns, nameof(his_importdata.AccountingUnit)),
Department = GetCellValue<string>(row, columns, nameof(his_importdata.Department)),
PersonnelNumber = GetCellValue<string>(row, columns, nameof(his_importdata.PersonnelNumber)),
PersonnelName = GetCellValue<string>(row, columns, nameof(his_importdata.PersonnelName)),
Original = GetCellValue<string>(row, columns, nameof(his_importdata.Original)),
Value = GetCellValue<decimal>(row, columns, nameof(his_importdata.Value)),
};
data.Add(importdata);
}
if (data == null || !data.Any(t => t.Year != 0 && t.Month != 0)) return;
data.ForEach(t =>
{
t.HospitalId = hospitalId;
t.AllotId = allots?.FirstOrDefault(w => w.Year == t.Year && t.Month == w.Month)?.ID;
t.SourceType = sourceType;
t.Category = sheetName;
});
var years = data.Select(t => t.Year).Distinct();
var months = data.Select(t => t.Month).Distinct();
var historyData = hisimportdataRepository.GetEntities(t => t.HospitalId == hospitalId && years.Contains(t.Year) && months.Contains(t.Month) && t.Category == sheetName);
if (historyData != null && historyData.Any()) hisimportdataRepository.RemoveRange(historyData.ToArray());
hisimportdataRepository.AddRange(data.Where(t => t.Year != 0 && t.Month != 0).ToArray());
}
}
catch (Exception ex)
{
logger.LogError(ex.ToString());
}
}
private List<string> GetColumns(ISheet sheet, string sheetName, out string sourceType)
{
sourceType = "";
foreach (var item in sourceTypes)
{
if (item.Value.Contains(sheetName))
{
sourceType = item.Key;
break;
}
}
if (string.IsNullOrEmpty(sourceType)) return new List<string>(); ;
var columnRow = sheet.GetOrCreate(0);
return columnRow.GetCellValues();
}
private T GetCellValue<T>(IRow row, List<string> columns, string key)
{
var value = hisImportdataDict[key];
if (columns.Contains(value) && row.GetCell(columns.IndexOf(value)) != null)
return row.GetCell(columns.IndexOf(value)).GetCellValue<T>();
return default;
}
private readonly Dictionary<string, string[]> sourceTypes = new Dictionary<string, string[]>
{
{ "收入", new string[] { "门诊收入", "住院收入" } },
{ "医生工作量", new string[] { "门诊人次", "出院人次", "手术概况", "住院天数", "实际开放总床日数" } },
{ "医技工作量", new string[] { "医技工作量" } },
};
private readonly Dictionary<string, string> hisImportdataDict = new Dictionary<string, string>
{
{ nameof(his_importdata.Year), "年份" },
{ nameof(his_importdata.Month), "月份" },
{ nameof(his_importdata.AccountingUnit), "核算单元" },
{ nameof(his_importdata.Department), "科室" },
{ nameof(his_importdata.PersonnelNumber), "工号" },
{ nameof(his_importdata.PersonnelName), "医生姓名" },
{ nameof(his_importdata.Original), "类别" },
{ nameof(his_importdata.Value), "值" },
};
#endregion ImportFile && SaveData
}
}
......@@ -394,7 +394,7 @@ private List<BodyItem> GetEmployees(List<per_employee> employees, ag_secondallot
var list = new List<BodyItem>();
//var employees = personService.GetPersons(allotId, userId);
//if (employees == null || !employees.Any(t => t.UnitType == unittype)) return list;
if (employees == null || !employees.Any()) return list;
var hospital = hospitalRepository.GetEntity(t => t.ID == employees.First().HospitalId);
if (hospital == null) return list;
......
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