人员计算

parent 5e8f6891
...@@ -148,8 +148,8 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody]Al ...@@ -148,8 +148,8 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody]Al
var allot = _allotService.GetAllot(request.ID); var allot = _allotService.GetAllot(request.ID);
if (null == allot || string.IsNullOrEmpty(allot.Path)) if (null == allot || string.IsNullOrEmpty(allot.Path))
throw new PerformanceException("当前绩效记录不存在或没有上传数据文件"); throw new PerformanceException("当前绩效记录不存在或没有上传数据文件");
//_perExcelService.Execute(allot); _perExcelService.Execute(allot);
BackgroundJob.Enqueue(() => _perExcelService.Execute(allot)); //BackgroundJob.Enqueue(() => _perExcelService.Execute(allot));
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
} }
......
...@@ -98,6 +98,11 @@ public AutoMapperConfigs() ...@@ -98,6 +98,11 @@ public AutoMapperConfigs()
CreateMap<PerDataAccountBaisc, im_accountbasic>(); CreateMap<PerDataAccountBaisc, im_accountbasic>();
CreateMap<PerDataAccountDoctor, res_accountdoctor>(); CreateMap<PerDataAccountDoctor, res_accountdoctor>();
CreateMap<PerDataAccountNurse, res_accountnurse>(); CreateMap<PerDataAccountNurse, res_accountnurse>();
CreateMap<res_accountdoctor, ComputeSource>();
CreateMap<res_accountnurse, ComputeSource>();
CreateMap<im_employee, ComputeEmployee>();
CreateMap<ComputeResult, res_compute>();
} }
} }
} }
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class ComputeEmployee
{
/// <summary>
/// 科室类别(例如 医技科室 临床科室 其他科室)
/// </summary>
public string AccountType { get; set; }
/// <summary>
/// 核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 科室名称
/// </summary>
public string Department { get; set; }
/// <summary>
/// 绩效基数核算参考对象
/// </summary>
public string FitPeople { get; set; }
/// <summary>
/// 核算基数
/// </summary>
public Nullable<decimal> BasicNorm { get; set; }
/// <summary>
/// 医生姓名
/// </summary>
public string DoctorName { get; set; }
/// <summary>
/// 职称
/// </summary>
public string JobTitle { get; set; }
/// <summary>
/// 岗位系数
/// </summary>
public Nullable<decimal> PostCoefficient { get; set; }
/// <summary>
/// 参加工作时间
/// </summary>
public Nullable<DateTime> WorkTime { get; set; }
/// <summary>
/// 考核得分率
/// </summary>
public Nullable<decimal> ScoreAverageRate { get; set; }
/// <summary>
/// 出勤率
/// </summary>
public Nullable<decimal> Attendance { get; set; }
/// <summary>
/// 核算单元医生数
/// </summary>
public Nullable<int> PeopleNumber { get; set; }
/// <summary>
/// 工作量绩效
/// </summary>
public Nullable<decimal> Workload { get; set; }
/// <summary>
/// 其他绩效
/// </summary>
public Nullable<decimal> OtherPerfor { get; set; }
/// <summary>
/// 医院奖罚
/// </summary>
public Nullable<decimal> Punishment { get; set; }
/// <summary>
/// 调节系数
/// </summary>
public Nullable<decimal> Adjust { get; set; }
/// <summary>
/// 发放系数
/// </summary>
public Nullable<decimal> Grant { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class ComputeResult
{
/// <summary>
/// 科室类别(例如 医技科室 临床科室 其他科室)
/// </summary>
public string AccountType { get; set; }
/// <summary>
/// 核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 绩效基数核算参考对象
/// </summary>
public string FitPeople { get; set; }
/// <summary>
/// 人员姓名
/// </summary>
public string EmployeeName { get; set; }
/// <summary>
/// 绩效合计(来自科室经济测算表)
/// </summary>
public Nullable<decimal> PerforTotal { get; set; }
/// <summary>
/// 核算单元医生数量(来自科室经济测算表)
/// </summary>
public Nullable<decimal> Number { get; set; }
/// <summary>
/// 人均绩效(来自科室经济测算表)
/// </summary>
public Nullable<decimal> Avg { get; set; }
/// <summary>
/// 效率绩效(需计算)
/// </summary>
public Nullable<decimal> Efficiency { get; set; }
/// <summary>
/// 规模绩效(需计算)
/// </summary>
public Nullable<decimal> Scale { get; set; }
/// <summary>
/// 岗位系数
/// </summary>
public Nullable<decimal> PostCoefficient { get; set; }
/// <summary>
/// 发放系数(来自人员名单)
/// </summary>
public Nullable<decimal> Grant { get; set; }
/// <summary>
/// 应发管理绩效(需计算)
/// </summary>
public Nullable<decimal> ShouldGiveFee { get; set; }
/// <summary>
/// 绩效合计(需计算)
/// </summary>
public Nullable<decimal> PerforSumFee { get; set; }
/// <summary>
/// 考核对分率(来自人员名单)
/// </summary>
public Nullable<decimal> ScoreAverageRate { get; set; }
/// <summary>
/// 出勤率(来自人员名单)
/// </summary>
public Nullable<decimal> Attendance { get; set; }
/// <summary>
/// 医院奖罚(来自人员名单)
/// </summary>
public Nullable<decimal> Punishment { get; set; }
/// <summary>
/// 其他绩效(来自人员名单)
/// </summary>
public Nullable<decimal> OtherPerfor { get; set; }
/// <summary>
/// 实发绩效(需计算)
/// </summary>
public Nullable<decimal> GiveFee { get; set; }
/// <summary>
/// 参加工作时间(来自人员名单)
/// </summary>
public Nullable<DateTime> WorkTime { get; set; }
/// <summary>
/// 绩效基础金额(计算)
/// </summary>
public Nullable<decimal> BaiscNormValue { get; set; }
/// <summary>
/// 年资系数(来自人员名单)
/// </summary>
public Nullable<decimal> WorkYear { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class ComputeSource
{
/// <summary>
/// 核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 核算单元医生数量
/// </summary>
public Nullable<decimal> Number { get; set; }
/// <summary>
/// 医生基础系数
/// </summary>
public Nullable<decimal> BasicFactor { get; set; }
/// <summary>
/// 倾斜系数
/// </summary>
public Nullable<decimal> SlopeFactor { get; set; }
/// <summary>
/// 其他绩效1
/// </summary>
public Nullable<decimal> OtherPerfor1 { get; set; }
/// <summary>
/// 其他绩效2
/// </summary>
public Nullable<decimal> OtherPerfor2 { get; set; }
/// <summary>
/// 医院奖罚
/// </summary>
public Nullable<decimal> Extra { get; set; }
/// <summary>
/// 考核对分率
/// </summary>
public Nullable<decimal> ScoringAverage { get; set; }
/// <summary>
/// 调节系数
/// </summary>
public Nullable<decimal> AdjustFactor { get; set; }
/// <summary>
/// 科室业绩
/// </summary>
public Nullable<decimal> Income { get; set; }
/// <summary>
/// 业绩绩效
/// </summary>
public Nullable<decimal> PerforFee { get; set; }
/// <summary>
/// 工作量绩效
/// </summary>
public Nullable<decimal> WorkloadFee { get; set; }
/// <summary>
/// 绩效合计
/// </summary>
public Nullable<decimal> PerforTotal { get; set; }
/// <summary>
/// 人均绩效
/// </summary>
public Nullable<decimal> Avg { get; set; }
/// <summary>
/// 实发绩效
/// </summary>
public Nullable<decimal> GiveFee { get; set; }
}
}
...@@ -45,27 +45,35 @@ public enum SheetType ...@@ -45,27 +45,35 @@ public enum SheetType
} }
/// <summary> /// <summary>
/// 职位归类 /// 绩效类型
/// </summary> /// </summary>
public enum EmpolyeeType public enum PerformanceType
{ {
/// <summary> 院领导 </summary> /// <summary> 没有绩效 </summary>
[Description("院领导")] [Description("没有绩效")]
TopManage = 1, Null = 0,
/// <summary> 行政中层 </summary>
[Description("行政中层")] /// <summary> 科室主任人均绩效 </summary>
MiddleManage = 2, [Description("科室主任人均绩效")]
/// <summary> 行政中层 </summary> Director = 1,
[Description("行政工勤")] /// <summary> 科室副主任人均绩效 </summary>
LogisticsWorkers = 3, [Description("科室副主任人均绩效")]
/// <summary> 行政中层 </summary> DeputyDirector = 2,
[Description("临床科室主任")] /// <summary> 科室护士长人均绩效 </summary>
Director = 4, [Description("科室护士长人均绩效")]
/// <summary> 行政中层 </summary> Nurse = 3,
[Description("临床科室副主任")]
DeputyDirector = 5, /// <summary> 临床科室主任人均绩效 (绩效标准取 科室主任人均绩效) </summary>
/// <summary> 行政中层 </summary> [Description("临床科室主任人均绩效")]
[Description("临床科室护士长")] ReferenceDirector = 4,
Nurse = 6, /// <summary> 临床科室中层人均绩效 (绩效标准取 科室主任/护士长/科室副主任/医技主任 平均值) </summary>
[Description("临床科室中层人均绩效")]
ReferenceDirectorAvg = 5,
/// <summary> 临床科室护士人均绩效的95% (绩效标准取 护理组临床科室单元核算表 平均值) </summary>
[Description("临床科室护士人均绩效的95%")]
ReferenceNurseAvg95 = 6,
/// <summary> 临床科室护士长人均绩效 (绩效标准取 护士长 平均值)</summary>
[Description("临床科室护士长人均绩效")]
ReferenceHeadNurse = 7,
} }
} }
...@@ -32,6 +32,7 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options) ...@@ -32,6 +32,7 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<cof_director> Cof_Director { get; set; } public virtual DbSet<cof_director> Cof_Director { get; set; }
public virtual DbSet<res_baiscnorm> Res_Baiscnorm { get; set; } public virtual DbSet<res_baiscnorm> Res_Baiscnorm { get; set; }
public virtual DbSet<res_compute> Res_Compute { get; set; } public virtual DbSet<res_compute> Res_Compute { get; set; }
public virtual DbSet<cof_position> Dic_Position { get; set; } public virtual DbSet<cof_position> Cof_Position { get; set; }
public virtual DbSet<cof_workyear> Cof_Workyear { get; set; }
} }
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" sys_user.cs"> // <copyright file=" sys_user.cs">
// * FileName: sys_user.cs // * FileName: sys_user.cs
// * history : 2019-03-05 14:05:41 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// sys_user Entity Model /// sys_user Entity Model
/// </summary> /// </summary>
[Table("sys_user")]
public class sys_user public class sys_user
{ {
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" cof_director.cs"> // <copyright file=" cof_director.cs">
// * FileName: cof_director.cs // * FileName: cof_director.cs
// * history : 2019-03-22 15:48:50 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// cof_director Entity Model /// cof_director Entity Model
/// </summary> /// </summary>
[Table("cof_director")]
public class cof_director public class cof_director
{ {
/// <summary> /// <summary>
...@@ -23,6 +25,11 @@ public class cof_director ...@@ -23,6 +25,11 @@ public class cof_director
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> AllotID { get; set; }
/// <summary>
///
/// </summary>
public string TypeName { get; set; } public string TypeName { get; set; }
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" cof_drugprop.cs"> // <copyright file=" cof_drugprop.cs">
// * FileName: cof_drugprop.cs // * FileName: cof_drugprop.cs
// * history : 2019-03-20 16:16:15 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// cof_drugprop Entity Model /// cof_drugprop Entity Model
/// </summary> /// </summary>
[Table("cof_drugprop")]
public class cof_drugprop public class cof_drugprop
{ {
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" cof_income.cs"> // <copyright file=" cof_income.cs">
// * FileName: cof_income.cs // * FileName: cof_income.cs
// * history : 2019-03-21 15:03:58 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// cof_income Entity Model /// cof_income Entity Model
/// </summary> /// </summary>
[Table("cof_income")]
public class cof_income public class cof_income
{ {
/// <summary> /// <summary>
...@@ -21,6 +23,11 @@ public class cof_income ...@@ -21,6 +23,11 @@ public class cof_income
public int ID { get; set; } public int ID { get; set; }
/// <summary> /// <summary>
///
/// </summary>
public Nullable<int> AllotID { get; set; }
/// <summary>
/// 关键字匹配 /// 关键字匹配
/// </summary> /// </summary>
public string SheetNameKeyword { get; set; } public string SheetNameKeyword { get; set; }
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" dic_position.cs"> // <copyright file=" cof_position.cs">
// * FileName: dic_position.cs // * FileName: cof_position.cs
// * history : 2019-03-22 15:48:50 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// dic_position Entity Model /// cof_position Entity Model
/// </summary> /// </summary>
[Table("cof_position")]
public class cof_position public class cof_position
{ {
/// <summary> /// <summary>
...@@ -21,6 +23,11 @@ public class cof_position ...@@ -21,6 +23,11 @@ public class cof_position
public int ID { get; set; } public int ID { get; set; }
/// <summary> /// <summary>
///
/// </summary>
public Nullable<int> AllotID { get; set; }
/// <summary>
/// 职位名称 /// 职位名称
/// </summary> /// </summary>
public string JobTitle { get; set; } public string JobTitle { get; set; }
...@@ -31,6 +38,11 @@ public class cof_position ...@@ -31,6 +38,11 @@ public class cof_position
public Nullable<int> JobType { get; set; } public Nullable<int> JobType { get; set; }
/// <summary> /// <summary>
/// 额外补偿系数
/// </summary>
public Nullable<decimal> ExtraFactor { get; set; }
/// <summary>
/// 职位类别 1 普通类别 2 基础绩效来源 /// 职位类别 1 普通类别 2 基础绩效来源
/// </summary> /// </summary>
public Nullable<int> State { get; set; } public Nullable<int> State { get; set; }
......
//-----------------------------------------------------------------------
// <copyright file=" cof_workyear.cs">
// * FileName: cof_workyear.cs
// * history : 2019-03-25 11:33:14
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
/// cof_workyear Entity Model
/// </summary>
[Table("cof_workyear")]
public class cof_workyear
{
/// <summary>
///
/// </summary>
[Key]
public int ID { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> AllotID { get; set; }
/// <summary>
/// >
/// </summary>
public Nullable<decimal> MaxRange { get; set; }
/// <summary>
/// <=
/// </summary>
public Nullable<decimal> MinRange { get; set; }
/// <summary>
///
/// </summary>
public Nullable<decimal> Value { get; set; }
}
}
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" im_accountbasic.cs"> // <copyright file=" im_accountbasic.cs">
// * FileName: im_accountbasic.cs // * FileName: im_accountbasic.cs
// * history : 2019-03-20 09:47:33 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// im_accountbasic Entity Model /// im_accountbasic Entity Model
/// </summary> /// </summary>
[Table("im_accountbasic")]
public class im_accountbasic public class im_accountbasic
{ {
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" im_data.cs"> // <copyright file=" im_data.cs">
// * FileName: im_data.cs // * FileName: im_data.cs
// * history : 2019-03-14 10:25:59 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// im_data Entity Model /// im_data Entity Model
/// </summary> /// </summary>
[Table("im_data")]
public class im_data public class im_data
{ {
/// <summary> /// <summary>
...@@ -89,8 +91,9 @@ public class im_data ...@@ -89,8 +91,9 @@ public class im_data
/// 单元格备注 /// 单元格备注
/// </summary> /// </summary>
public string Remark { get; set; } public string Remark { get; set; }
/// <summary> /// <summary>
/// SignID ///
/// </summary> /// </summary>
public string SignID { get; set; } public string SignID { get; set; }
} }
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" im_employee.cs"> // <copyright file=" im_employee.cs">
// * FileName: im_employee.cs // * FileName: im_employee.cs
// * history : 2019-03-08 16:39:35 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// im_employee Entity Model /// im_employee Entity Model
/// </summary> /// </summary>
[Table("im_employee")]
public class im_employee public class im_employee
{ {
/// <summary> /// <summary>
...@@ -32,6 +34,8 @@ public class im_employee ...@@ -32,6 +34,8 @@ public class im_employee
/// <summary> /// <summary>
/// 科室类别(例如 医技科室 临床科室 其他科室) /// 科室类别(例如 医技科室 临床科室 其他科室)
/// </summary> /// </summary>
public string AccountType { get; set; } public string AccountType { get; set; }
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" im_header.cs"> // <copyright file=" im_header.cs">
// * FileName: im_header.cs // * FileName: im_header.cs
// * history : 2019-03-14 10:25:59 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// im_header Entity Model /// im_header Entity Model
/// </summary> /// </summary>
[Table("im_header")]
public class im_header public class im_header
{ {
/// <summary> /// <summary>
...@@ -61,17 +63,18 @@ public class im_header ...@@ -61,17 +63,18 @@ public class im_header
public Nullable<int> MergeCell { get; set; } public Nullable<int> MergeCell { get; set; }
/// <summary> /// <summary>
/// 1 汇总 2原始数据
/// </summary>
public Nullable<int> IsTotal { get; set; }
/// <summary>
/// 单元格内容 /// 单元格内容
/// </summary> /// </summary>
public string CellValue { get; set; } public string CellValue { get; set; }
/// <summary> /// <summary>
/// SignID ///
/// </summary> /// </summary>
public string SignID { get; set; } public string SignID { get; set; }
/// <summary>
/// 1 汇总 2原始数据
/// </summary>
public Nullable<int> IsTotal { get; set; }
} }
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" sys_allot.cs"> // <copyright file=" per_allot.cs">
// * FileName: sys_allot.cs // * FileName: per_allot.cs
// * history : 2019-03-06 16:43:26 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// sys_allot Entity Model /// per_allot Entity Model
/// </summary> /// </summary>
[Table("per_allot")]
public class per_allot public class per_allot
{ {
/// <summary> /// <summary>
...@@ -26,9 +28,14 @@ public class per_allot ...@@ -26,9 +28,14 @@ public class per_allot
public int HospitalId { get; set; } public int HospitalId { get; set; }
/// <summary> /// <summary>
/// CreateUser ///
/// </summary> /// </summary>
public int? CreateUser { get; set; } public Nullable<int> CreateUser { get; set; }
/// <summary>
/// 绩效统计时间
/// </summary>
public Nullable<DateTime> CreateDate { get; set; }
/// <summary> /// <summary>
/// 绩效发放年 /// 绩效发放年
...@@ -46,11 +53,6 @@ public class per_allot ...@@ -46,11 +53,6 @@ public class per_allot
public Nullable<decimal> AllotFee { get; set; } public Nullable<decimal> AllotFee { get; set; }
/// <summary> /// <summary>
/// 绩效统计时间
/// </summary>
public Nullable<DateTime> CreateDate { get; set; }
/// <summary>
/// 文件路径 /// 文件路径
/// </summary> /// </summary>
public string Path { get; set; } public string Path { get; set; }
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" im_sheet.cs"> // <copyright file=" per_sheet.cs">
// * FileName: im_sheet.cs // * FileName: per_sheet.cs
// * history : 2019-03-14 10:25:59 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// im_sheet Entity Model /// per_sheet Entity Model
/// </summary> /// </summary>
[Table("per_sheet")]
public class per_sheet public class per_sheet
{ {
/// <summary> /// <summary>
...@@ -36,7 +38,7 @@ public class per_sheet ...@@ -36,7 +38,7 @@ public class per_sheet
public Nullable<int> SheetType { get; set; } public Nullable<int> SheetType { get; set; }
/// <summary> /// <summary>
/// Դ 1 excel 2 /// 数据来源 1 excel 导入 2 计算
/// </summary> /// </summary>
public Nullable<int> Source { get; set; } public Nullable<int> Source { get; set; }
} }
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" im_accountdoctor.cs"> // <copyright file=" res_accountdoctor.cs">
// * FileName: im_accountdoctor.cs // * FileName: res_accountdoctor.cs
// * history : 2019-03-20 09:47:33 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// im_accountdoctor Entity Model /// res_accountdoctor Entity Model
/// </summary> /// </summary>
[Table("res_accountdoctor")]
public class res_accountdoctor public class res_accountdoctor
{ {
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" im_accountnurse.cs"> // <copyright file=" res_accountnurse.cs">
// * FileName: im_accountnurse.cs // * FileName: res_accountnurse.cs
// * history : 2019-03-20 09:47:33 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// im_accountnurse Entity Model /// res_accountnurse Entity Model
/// </summary> /// </summary>
[Table("res_accountnurse")]
public class res_accountnurse public class res_accountnurse
{ {
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" res_baiscnorm.cs"> // <copyright file=" res_baiscnorm.cs">
// * FileName: res_baiscnorm.cs // * FileName: res_baiscnorm.cs
// * history : 2019-03-22 15:48:50 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// res_baiscnorm Entity Model /// res_baiscnorm Entity Model
/// </summary> /// </summary>
[Table("res_baiscnorm")]
public class res_baiscnorm public class res_baiscnorm
{ {
/// <summary> /// <summary>
...@@ -38,16 +40,16 @@ public class res_baiscnorm ...@@ -38,16 +40,16 @@ public class res_baiscnorm
/// <summary> /// <summary>
/// 绩效总额 /// 绩效总额
/// </summary> /// </summary>
public string TotelValue { get; set; } public Nullable<decimal> TotelValue { get; set; }
/// <summary> /// <summary>
/// 人均绩效 /// 人均绩效
/// </summary> /// </summary>
public string AvgValue { get; set; } public Nullable<decimal> AvgValue { get; set; }
/// <summary> /// <summary>
/// 总人数 /// 总人数
/// </summary> /// </summary>
public Nullable<int> TotelNumber { get; set; } public Nullable<decimal> TotelNumber { get; set; }
} }
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" res_compute.cs"> // <copyright file=" res_compute.cs">
// * FileName: res_compute.cs // * FileName: res_compute.cs
// * history : 2019-03-22 16:41:30 // * history : 2019-03-25 19:35:46
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// res_compute Entity Model /// res_compute Entity Model
/// </summary> /// </summary>
[Table("res_compute")]
public class res_compute public class res_compute
{ {
/// <summary> /// <summary>
...@@ -71,6 +73,16 @@ public class res_compute ...@@ -71,6 +73,16 @@ public class res_compute
public Nullable<decimal> Scale { get; set; } public Nullable<decimal> Scale { get; set; }
/// <summary> /// <summary>
/// 岗位系数
/// </summary>
public Nullable<decimal> PostCoefficient { get; set; }
/// <summary>
/// 发放系数(来自人员名单)
/// </summary>
public Nullable<decimal> Grant { get; set; }
/// <summary>
/// 应发管理绩效(需计算) /// 应发管理绩效(需计算)
/// </summary> /// </summary>
public Nullable<decimal> ShouldGiveFee { get; set; } public Nullable<decimal> ShouldGiveFee { get; set; }
...@@ -81,11 +93,6 @@ public class res_compute ...@@ -81,11 +93,6 @@ public class res_compute
public Nullable<decimal> PerforSumFee { get; set; } public Nullable<decimal> PerforSumFee { get; set; }
/// <summary> /// <summary>
/// 发放系数(来自人员名单)
/// </summary>
public Nullable<decimal> Grant { get; set; }
/// <summary>
/// 考核对分率(来自人员名单) /// 考核对分率(来自人员名单)
/// </summary> /// </summary>
public Nullable<decimal> ScoreAverageRate { get; set; } public Nullable<decimal> ScoreAverageRate { get; set; }
...@@ -104,5 +111,25 @@ public class res_compute ...@@ -104,5 +111,25 @@ public class res_compute
/// 应发绩效(需计算) /// 应发绩效(需计算)
/// </summary> /// </summary>
public Nullable<decimal> GiveFee { get; set; } public Nullable<decimal> GiveFee { get; set; }
/// <summary>
/// 出勤率(来自人员名单)
/// </summary>
public Nullable<decimal> Attendance { get; set; }
/// <summary>
/// 参加工作时间(来自人员名单)
/// </summary>
public Nullable<DateTime> WorkTime { get; set; }
/// <summary>
/// 绩效基础金额(计算)
/// </summary>
public Nullable<decimal> BaiscNormValue { get; set; }
/// <summary>
/// 年资系数(来自人员名单)
/// </summary>
public Nullable<decimal> WorkYear { get; set; }
} }
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" sys_hospital.cs"> // <copyright file=" sys_hospital.cs">
// * FileName: sys_hospital.cs // * FileName: sys_hospital.cs
// * history : 2019-03-05 14:05:41 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// sys_hospital Entity Model /// sys_hospital Entity Model
/// </summary> /// </summary>
[Table("sys_hospital")]
public class sys_hospital public class sys_hospital
{ {
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" sys_menu.cs"> // <copyright file=" sys_menu.cs">
// * FileName: sys_menu.cs // * FileName: sys_menu.cs
// * history : 2019-03-05 16:57:57 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// sys_menu Entity Model /// sys_menu Entity Model
/// </summary> /// </summary>
[Table("sys_menu")]
public class sys_menu public class sys_menu
{ {
/// <summary> /// <summary>
...@@ -41,14 +43,13 @@ public class sys_menu ...@@ -41,14 +43,13 @@ public class sys_menu
public string MenuIcon { get; set; } public string MenuIcon { get; set; }
/// <summary> /// <summary>
/// 菜单类型 1 首页中出现 2 医院页中出现 /// 菜单状态 1 启用 2禁用
/// </summary> /// </summary>
public int MenuType { get; set; } public int States { get; set; }
/// <summary> /// <summary>
/// 菜单状态 1 启用 2禁用 ///
/// </summary> /// </summary>
public int States { get; set; } public Nullable<int> Sort { get; set; }
public int Sort { get; set; }
} }
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" sys_role.cs"> // <copyright file=" sys_role.cs">
// * FileName: sys_role.cs // * FileName: sys_role.cs
// * history : 2019-03-05 16:57:57 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// sys_role Entity Model /// sys_role Entity Model
/// </summary> /// </summary>
[Table("sys_role")]
public class sys_role public class sys_role
{ {
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" sys_role_menu.cs"> // <copyright file=" sys_role_menu.cs">
// * FileName: sys_role_menu.cs // * FileName: sys_role_menu.cs
// * history : 2019-03-05 16:57:57 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// sys_role_menu Entity Model /// sys_role_menu Entity Model
/// </summary> /// </summary>
[Table("sys_role_menu")]
public class sys_role_menu public class sys_role_menu
{ {
/// <summary> /// <summary>
...@@ -23,11 +25,11 @@ public class sys_role_menu ...@@ -23,11 +25,11 @@ public class sys_role_menu
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> RuleID { get; set; } public int RoleID { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> MenuID { get; set; } public int MenuID { get; set; }
} }
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" sys_sms.cs"> // <copyright file=" sys_sms.cs">
// * FileName: sys_sms.cs // * FileName: sys_sms.cs
// * history : 2019-03-05 11:49:50 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// sys_sms Entity Model /// sys_sms Entity Model
/// </summary> /// </summary>
[Table("sys_sms")]
public class sys_sms public class sys_sms
{ {
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" sys_user_hospital.cs"> // <copyright file=" sys_user_hospital.cs">
// * FileName: sys_user_hospital.cs // * FileName: sys_user_hospital.cs
// * history : 2019-03-05 11:49:50 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// sys_user_hospital Entity Model /// sys_user_hospital Entity Model
/// </summary> /// </summary>
[Table("sys_user_hospital")]
public class sys_user_hospital public class sys_user_hospital
{ {
/// <summary> /// <summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" sys_user_role.cs"> // <copyright file=" sys_user_role.cs">
// * FileName: sys_user_role.cs // * FileName: sys_user_role.cs
// * history : 2019-03-05 16:57:57 // * history : 2019-03-25 11:33:14
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// sys_user_role Entity Model /// sys_user_role Entity Model
/// </summary> /// </summary>
[Table("sys_user_role")]
public class sys_user_role public class sys_user_role
{ {
/// <summary> /// <summary>
...@@ -23,11 +25,11 @@ public class sys_user_role ...@@ -23,11 +25,11 @@ public class sys_user_role
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> RoleID { get; set; } public int RoleID { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> UserID { get; set; } public int UserID { get; set; }
} }
} }
//-----------------------------------------------------------------------
// <copyright file=" cof_workyear.cs">
// * FileName: cof_workyear.cs
// * history : Created by T4 2019-03-25 11:32:42
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// cof_workyear Repository
/// </summary>
public class PerforCofworkyearRepository : PerforRepository<cof_workyear>
{
public PerforCofworkyearRepository(PerformanceDbContext context) : base(context)
{
}
}
}
using Performance.DtoModels;
using Performance.EntityModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Performance.Services
{
public class BaiscNormService : IAutoInjection
{
public decimal? GetBaiscNorm(List<res_baiscnorm> baiscnorms, PerformanceType type)
{
decimal? result = null;
if (type == PerformanceType.ReferenceDirector)
{
result = baiscnorms.FirstOrDefault(t => t.PositionName == "临床科主任")?.AvgValue;
}
else if (type == PerformanceType.ReferenceDirectorAvg)
{
List<string> avgObjectList = new List<string> { "临床科主任", "临床科副主任", "医技科主任", "临床科护长" };
var baisc = baiscnorms.Where(t => avgObjectList.Contains(t.PositionName));
result = baisc.Sum(s => s.TotelValue) / baisc.Sum(s => s.TotelNumber);
}
else if (type == PerformanceType.ReferenceHeadNurse)
{
result = baiscnorms.FirstOrDefault(t => t.PositionName == "临床科护长")?.AvgValue;
}
else if (type == PerformanceType.ReferenceNurseAvg95)
{
result = baiscnorms.FirstOrDefault(t => t.PositionName == "临床护士")?.AvgValue * 0.95m;
}
if (result.HasValue)
result = Math.Round(result.Value, 4);
return result;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.Services
{
/// <summary>
/// 临床科室副主任
/// </summary>
public class ComputeDeputyDirector
{
public void Compute(List<EntityModels.im_employee> empolyeeList)
{
throw new NotImplementedException();
}
}
}
using Performance.DtoModels; using Performance.DtoModels;
using Performance.EntityModels; using Performance.EntityModels;
using Performance.Infrastructure;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
...@@ -10,22 +11,35 @@ namespace Performance.Services ...@@ -10,22 +11,35 @@ namespace Performance.Services
/// <summary> /// <summary>
/// 临床科室主任 /// 临床科室主任
/// </summary> /// </summary>
public class ComputeDirector public class ComputeDirector : IAutoInjection
{ {
public void Compute(List<im_employee> empolyeeList, List<cof_position> positionList, /// <summary>
List<res_accountdoctor> doctorList, List<cof_director> directorList) /// 临床科室主任、临床科室副主任、临床科室护士长 计算
/// </summary>
/// <param name="empolyeeList"></param>
/// <param name="nurseList"></param>
/// <param name="directorList"></param>
/// <returns></returns>
public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<ComputeSource> nurseList, List<cof_director> directorList)
{
Dictionary<PerformanceType, string> keyValues = new Dictionary<PerformanceType, string>
{ {
var positions = positionList.Where(t => t.JobType == (int)EmpolyeeType.Director); { PerformanceType.Director, "临床科室主任"},
var needCompute = empolyeeList.Where(t => positions.Select(s => s.JobTitle).Contains(t.JobTitle)); { PerformanceType.DeputyDirector, "临床科室副主任"},
{ PerformanceType.Nurse, "临床科室护士长"},
};
List<ComputeResult> computeList = new List<ComputeResult>();
foreach (var key in keyValues.Keys)
{
var needCompute = empolyeeList.Where(t => t.FitPeople == EnumHelper.GetDescription(key));
foreach (var item in needCompute) foreach (var item in needCompute)
{ {
var resAccount = doctorList.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit); var resAccount = nurseList.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit);
var efficiency = directorList.FirstOrDefault(t => t.TypeName == "效率绩效" && positions.Select(s => s.JobTitle).Contains(t.JobTitle)); var efficiency = directorList.FirstOrDefault(t => t.TypeName == "效率绩效" && t.JobTitle == keyValues[key]);
var scale = directorList.FirstOrDefault(t => t.TypeName == "规模绩效" && positions.Select(s => s.JobTitle).Contains(t.JobTitle)); var scale = directorList.FirstOrDefault(t => t.TypeName == "规模绩效" && t.JobTitle == keyValues[key]);
new res_compute var compute = new ComputeResult
{ {
AllotID = item.AllotID, AccountType = item.AccountType,
SheetID = item.SheetID,
AccountingUnit = item.AccountingUnit, AccountingUnit = item.AccountingUnit,
EmployeeName = item.DoctorName, EmployeeName = item.DoctorName,
FitPeople = item.FitPeople, FitPeople = item.FitPeople,
...@@ -37,13 +51,120 @@ public class ComputeDirector ...@@ -37,13 +51,120 @@ public class ComputeDirector
Scale = scale?.Value * resAccount?.PerforTotal, Scale = scale?.Value * resAccount?.PerforTotal,
Grant = item.Grant, Grant = item.Grant,
ShouldGiveFee = (efficiency?.Value * resAccount?.Avg + scale?.Value * resAccount?.PerforTotal) * item.Grant, ShouldGiveFee = (efficiency?.Value * resAccount?.Avg + scale?.Value * resAccount?.PerforTotal) * item.Grant,
PerforSumFee = 0,
ScoreAverageRate = item.ScoreAverageRate, ScoreAverageRate = item.ScoreAverageRate,
Punishment = item.Punishment, Punishment = item.Punishment,
OtherPerfor = item.OtherPerfor, OtherPerfor = item.OtherPerfor
GiveFee = item.AllotID,
}; };
//绩效合计
var perforSumFee = (compute.Avg + compute.Efficiency + compute.Scale) * item.Grant;
if (perforSumFee > (compute.Avg ?? 0) * 2.5m)
compute.PerforSumFee = (compute.Avg ?? 0) * 2.5m;
else
compute.PerforSumFee = perforSumFee;
//应发绩效
compute.GiveFee = compute.Avg * item.Grant + (compute.Efficiency + compute.Scale) * item.Grant * compute.ScoreAverageRate + (item.Punishment ?? 0) + (item.OtherPerfor ?? 0);
computeList.Add(compute);
} }
} }
return computeList;
} }
/// <summary>
/// 绩效标准计算
/// </summary>
/// <param name="computes"></param>
/// <returns></returns>
public List<res_baiscnorm> ComputeAvg(List<ComputeResult> computes)
{
var keyList = new[]
{
new { type = "临床科室", reference = "科室主任人均绩效", groupname = "临床科主任" },
new { type = "临床科室", reference = "科室副主任人均绩效", groupname = "临床科副主任" },
new { type = "医技科室", reference = "科室主任人均绩效", groupname = "医技科主任" },
new { type = "临床科室", reference = "科室护士长人均绩效", groupname = "临床科护长" },
};
var groupList = from cp in computes
join gp in keyList on new { type = cp.AccountType, reference = cp.FitPeople } equals new { gp.type, gp.reference }
select new { gp.groupname, cp };
var result = groupList.GroupBy(t => t.groupname)
.Select(s => new res_baiscnorm
{
PositionName = s.Key,
TotelNumber = s.Count(),
TotelValue = s.Sum(t => t.cp.GiveFee),
AvgValue = s.Sum(t => t.cp.GiveFee) / s.Count()
});
return result.ToList();
}
/// <summary>
/// 院领导、业务中层、工勤人员 计算
/// </summary>
/// <param name="empolyeeList"></param>
/// <param name="baiscnormList"></param>
/// <returns></returns>
public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<res_baiscnorm> baiscnormList, List<cof_workyear> workyearList)
{
PerformanceType[] types = new PerformanceType[]
{
PerformanceType.ReferenceDirector,
PerformanceType.ReferenceDirectorAvg,
PerformanceType.ReferenceNurseAvg95,
PerformanceType.ReferenceHeadNurse,
PerformanceType.Null,
};
PerformanceType[] yearTypes = new PerformanceType[]
{
PerformanceType.ReferenceNurseAvg95,
PerformanceType.ReferenceHeadNurse,
PerformanceType.Null,
};
BaiscNormService baiscNormService = new BaiscNormService();
List<ComputeResult> computeList = new List<ComputeResult>();
foreach (var type in types)
{
var needCompute = empolyeeList.Where(t => t.FitPeople == EnumHelper.GetDescription(type));
var baiscnorm = baiscNormService.GetBaiscNorm(baiscnormList, type);
foreach (var item in needCompute)
{
var compute = new ComputeResult
{
AccountType = item.AccountType,
AccountingUnit = item.AccountingUnit,
EmployeeName = item.DoctorName,
FitPeople = item.FitPeople,
Grant = item.Grant,
WorkTime = item.WorkTime,
BaiscNormValue = baiscnorm,
PostCoefficient = item.PostCoefficient,
Attendance = item.Attendance,
ScoreAverageRate = item.ScoreAverageRate,
Punishment = item.Punishment,
OtherPerfor = item.OtherPerfor
};
//绩效合计
compute.ShouldGiveFee = baiscnorm * compute.PostCoefficient * compute.Attendance * compute.ScoreAverageRate + (compute.OtherPerfor ?? 0) + (item.Workload ?? 0) + (compute.Punishment ?? 0);
//年资系数
if (yearTypes.Contains(type) && item.WorkTime.HasValue && item.WorkTime.Value > new DateTime(1970, 1, 1))
{
var years = ((DateTime.Now.Year - item.WorkTime.Value.Year) * 12 + (DateTime.Now.Month - item.WorkTime.Value.Month)) / 12.0m;
var value = workyearList.FirstOrDefault(t => t.MinRange < years && years <= t.MaxRange)?.Value;
compute.WorkYear = value;
compute.ShouldGiveFee = compute.ShouldGiveFee * (value ?? 1);
}
//应发绩效
compute.GiveFee = compute.ShouldGiveFee * item.Adjust * item.Grant;
computeList.Add(compute);
}
}
return computeList;
}
}
} }
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.Services
{
public class ComputeMedicalTechnician
{
public void Compute(List<EntityModels.im_employee> empolyeeList)
{
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.Services
{
/// <summary>
/// 护士长
/// </summary>
public class ComputeNurse
{
public void Compute(List<EntityModels.im_employee> empolyeeList)
{
throw new NotImplementedException();
}
}
}
using NPOI.SS.UserModel; using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using Performance.Infrastructure; using Performance.Infrastructure;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
...@@ -24,5 +25,20 @@ public class NopiSevice ...@@ -24,5 +25,20 @@ public class NopiSevice
} }
return null; return null;
} }
public static DateTime? GetCellDatetimeValue(ICell cell)
{
if (cell != null)
{
if (cell.CellType == CellType.Numeric)
{
if (HSSFDateUtil.IsCellDateFormatted(cell))
{
return cell.DateCellValue;
}
}
}
return null;
}
} }
} }
...@@ -11,7 +11,7 @@ namespace Performance.Services ...@@ -11,7 +11,7 @@ namespace Performance.Services
/// <summary> /// <summary>
/// 科室经济核算汇总表 (收入/其他收入/支出) /// 科室经济核算汇总表 (收入/其他收入/支出)
/// </summary> /// </summary>
public class PerSheetDataComputeEconomic public class PerSheetDataComputeEconomic : IAutoInjection
{ {
#region 合并科室经济 #region 合并科室经济
/// <summary> /// <summary>
......
...@@ -11,7 +11,7 @@ namespace Performance.Services ...@@ -11,7 +11,7 @@ namespace Performance.Services
/// <summary> /// <summary>
/// 工作量 /// 工作量
/// </summary> /// </summary>
public class PerSheetDataComputeWorkload public class PerSheetDataComputeWorkload : IAutoInjection
{ {
#region 工作量一次计算 #region 工作量一次计算
/// <summary> /// <summary>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
namespace Performance.Services namespace Performance.Services
{ {
public interface IPerSheetDataRead public interface IPerSheetDataRead : IAutoInjection
{ {
/// <summary> /// <summary>
/// excel 列头及数据 配置信息 /// excel 列头及数据 配置信息
......
...@@ -37,14 +37,14 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader) ...@@ -37,14 +37,14 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{ {
RowNumber = r, RowNumber = r,
AccountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元").PointCell).ToString(), AccountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元").PointCell).ToString(),
Department = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科室").PointCell).ToString(), Department = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元").PointCell).ToString(),
DoctorName = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "医生姓名").PointCell).ToString(), DoctorName = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "医生姓名").PointCell).ToString(),
JobTitle = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "职称").PointCell).ToString(), JobTitle = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "职称").PointCell).ToString(),
FitPeople = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "绩效基数核算参考对象").PointCell).ToString(), FitPeople = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "绩效基数核算参考对象").PointCell).ToString(),
AccountType = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元分类").PointCell).ToString(), AccountType = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元分类").PointCell).ToString(),
PostCoefficient = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "岗位系数").PointCell).ToString()), PostCoefficient = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "岗位系数").PointCell).ToString()),
WorkTime = ConvertHelper.To<DateTime?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率").PointCell).ToString()), WorkTime = NopiSevice.GetCellDatetimeValue(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "参加工作时间").PointCell)),
ScoreAverageRate = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "医生姓名").PointCell).ToString()), ScoreAverageRate = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率").PointCell).ToString()),
Attendance = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "出勤率").PointCell).ToString()), Attendance = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "出勤率").PointCell).ToString()),
PeopleNumber = ConvertHelper.To<int?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元医生数").PointCell).ToString()), PeopleNumber = ConvertHelper.To<int?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元医生数").PointCell).ToString()),
Workload = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "工作量绩效").PointCell).ToString()), Workload = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "工作量绩效").PointCell).ToString()),
......
...@@ -101,6 +101,7 @@ private void CommonExport(int sheetID, SheetExportResponse response) ...@@ -101,6 +101,7 @@ private void CommonExport(int sheetID, SheetExportResponse response)
var headList = _perforImHeaderRepository.GetEntities(t => t.SheetID == sheetID).OrderBy(t => t.PointCell); var headList = _perforImHeaderRepository.GetEntities(t => t.SheetID == sheetID).OrderBy(t => t.PointCell);
var dataList = _perforImDataRepository.GetEntities(t => t.SheetID == sheetID); var dataList = _perforImDataRepository.GetEntities(t => t.SheetID == sheetID);
if (dataList == null || dataList.Count == 0) return;
//创建列头行 //创建列头行
var rowhead = new Row(0); var rowhead = new Row(0);
......
...@@ -12,6 +12,9 @@ EndProject ...@@ -12,6 +12,9 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "1.site", "1.site", "{69CFD3FA-0B61-41D4-A9E8-44B933001293}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "1.site", "1.site", "{69CFD3FA-0B61-41D4-A9E8-44B933001293}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2.services", "2.services", "{2E5D3959-48C9-4BAD-89BF-9CF1DDCB453D}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2.services", "2.services", "{2E5D3959-48C9-4BAD-89BF-9CF1DDCB453D}"
ProjectSection(SolutionItems) = preProject
Performance.EntityModels\Entity\ComputeResult.cs = Performance.EntityModels\Entity\ComputeResult.cs
EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3.repository", "3.repository", "{95E7A23D-DC0E-4C27-AD7C-EAF4917012EF}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3.repository", "3.repository", "{95E7A23D-DC0E-4C27-AD7C-EAF4917012EF}"
EndProject EndProject
...@@ -23,7 +26,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Performance.DtoModels", "Pe ...@@ -23,7 +26,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Performance.DtoModels", "Pe
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Performance.EntityModels", "Performance.EntityModels\Performance.EntityModels.csproj", "{F7708C0C-0B0B-4E7E-A995-E39F7044FD11}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Performance.EntityModels", "Performance.EntityModels\Performance.EntityModels.csproj", "{F7708C0C-0B0B-4E7E-A995-E39F7044FD11}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Performance.Api", "Performance.Api\Performance.Api.csproj", "{3AE00FF5-F0BA-4D72-A23B-770186309327}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Performance.Api", "Performance.Api\Performance.Api.csproj", "{3AE00FF5-F0BA-4D72-A23B-770186309327}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
......
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