Commit 829748d3 by 纪旭 韦

删除人员字典时插入备份表,当粘贴之前的数据时,标签根据备份表带出来

parent 0fa00668
...@@ -6878,6 +6878,146 @@ ...@@ -6878,6 +6878,146 @@
</summary> </summary>
</member> </member>
<member name="T:Performance.EntityModels.per_employee_backup">
<summary>
绩效人员表备份
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.HospitalId">
<summary>
医院Id
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.AllotId">
<summary>
绩效Id
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.DoctorName">
<summary>
姓名
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.PersonnelNumber">
<summary>
员工工号
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.JobNumber">
<summary>
员工工号(HIS)
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.JobCategory">
<summary>
正式/临聘
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.Duty">
<summary>
职务
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.JobTitle">
<summary>
职称
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.UnitType">
<summary>
人员类别
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.Attendance">
<summary>
出勤率
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.AttendanceDay">
<summary>
出勤天数
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.PermanentStaff">
<summary>
核算人数
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.EfficiencyNumber">
<summary>
效率人数
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.WorkTime">
<summary>
参加工作时间
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.BirthDate">
<summary>
出生年月
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.Age">
<summary>
年龄
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.ReservedRatio">
<summary>
预留比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.BankCard">
<summary>
银行卡号
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.IsVerify">
<summary>
0 未通过验证 1 通过验证
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.VerifyMessage">
<summary>
验证失败描述
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.IsHrpEmployee">
<summary>
是否是hrp人员 0 不是 1 是
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.CreateTime">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee_backup.CreateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.per_first"> <member name="T:Performance.EntityModels.per_first">
<summary> <summary>
首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本)
......
...@@ -213,6 +213,7 @@ public AutoMapperConfigs() ...@@ -213,6 +213,7 @@ public AutoMapperConfigs()
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => 2)); .ForMember(dest => dest.Type, opt => opt.MapFrom(src => 2));
CreateMap<BudgetResponse, per_budget_ratio>(); CreateMap<BudgetResponse, per_budget_ratio>();
CreateMap<per_employee, per_employee_backup>();
CreateMap<per_employee, PerEmployeeResponse>() CreateMap<per_employee, PerEmployeeResponse>()
.ForMember(dest => dest.WorkTime, opt => opt.MapFrom(src => src.WorkTime == null ? null : src.WorkTime.ToString())) .ForMember(dest => dest.WorkTime, opt => opt.MapFrom(src => src.WorkTime == null ? null : src.WorkTime.ToString()))
.ForMember(dest => dest.BirthDate, opt => opt.MapFrom(src => src.BirthDate == null ? null : src.BirthDate.ToString())) .ForMember(dest => dest.BirthDate, opt => opt.MapFrom(src => src.BirthDate == null ? null : src.BirthDate.ToString()))
......
...@@ -181,6 +181,7 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options) ...@@ -181,6 +181,7 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<per_dept_dic> per_dept_dic { get; set; } public virtual DbSet<per_dept_dic> per_dept_dic { get; set; }
/// <summary> 绩效人员表 </summary> /// <summary> 绩效人员表 </summary>
public virtual DbSet<per_employee> per_employee { get; set; } public virtual DbSet<per_employee> per_employee { get; set; }
public virtual DbSet<per_employee_backup> per_employee_backup { get; set; }
/// <summary> 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) </summary> /// <summary> 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) </summary>
public virtual DbSet<per_first> per_first { get; set; } public virtual DbSet<per_first> per_first { get; set; }
/// <summary> 上传数据解析 </summary> /// <summary> 上传数据解析 </summary>
...@@ -256,5 +257,6 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options) ...@@ -256,5 +257,6 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<per_attendance_type> per_attendance_type { get; set; } public virtual DbSet<per_attendance_type> per_attendance_type { get; set; }
public virtual DbSet<per_attendance_vacation> per_attendance_vacation { get; set; } public virtual DbSet<per_attendance_vacation> per_attendance_vacation { get; set; }
public virtual DbSet<per_allot_action> per_allot_action { get; set; } public virtual DbSet<per_allot_action> per_allot_action { get; set; }
} }
} }
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.EntityModels
{
/// <summary>
/// 绩效人员表备份
/// </summary>
[Table("per_employee_backup")]
public class per_employee_backup
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
/// 医院Id
/// </summary>
public Nullable<int> HospitalId { get; set; }
/// <summary>
/// 绩效Id
/// </summary>
public Nullable<int> AllotId { get; set; }
/// <summary>
/// 核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 科室
/// </summary>
public string Department { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string DoctorName { get; set; }
/// <summary>
/// 员工工号
/// </summary>
public string PersonnelNumber { get; set; }
/// <summary>
/// 员工工号(HIS)
/// </summary>
public string JobNumber { get; set; }
/// <summary>
/// 正式/临聘
/// </summary>
public string JobCategory { get; set; }
/// <summary>
/// 职务
/// </summary>
public string Duty { get; set; }
/// <summary>
/// 职称
/// </summary>
public string JobTitle { get; set; }
/// <summary>
/// 人员类别
/// </summary>
public string UnitType { get; set; }
/// <summary>
/// 出勤率
/// </summary>
public Nullable<decimal> Attendance { get; set; }
/// <summary>
/// 出勤天数
/// </summary>
public Nullable<int> AttendanceDay { get; set; }
/// <summary>
/// 核算人数
/// </summary>
public Nullable<decimal> PermanentStaff { get; set; }
/// <summary>
/// 效率人数
/// </summary>
public Nullable<decimal> EfficiencyNumber { get; set; }
/// <summary>
/// 参加工作时间
/// </summary>
public Nullable<DateTime> WorkTime { get; set; }
/// <summary>
/// 出生年月
/// </summary>
public Nullable<DateTime> BirthDate { get; set; }
/// <summary>
/// 年龄
/// </summary>
public Nullable<int> Age { get; set; }
/// <summary>
/// 预留比例
/// </summary>
public Nullable<decimal> ReservedRatio { get; set; }
/// <summary>
/// 银行卡号
/// </summary>
public string BankCard { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 0 未通过验证 1 通过验证
/// </summary>
public Nullable<int> IsVerify { get; set; }
/// <summary>
/// 验证失败描述
/// </summary>
public string VerifyMessage { get; set; }
/// <summary>
/// 是否是hrp人员 0 不是 1 是
/// </summary>
public Nullable<int> IsHrpEmployee { get; set; }
/// <summary>
///
/// </summary>
public Nullable<DateTime> CreateTime { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> CreateUser { get; set; }
public string Reserve01 { get; set; }
public string Reserve02 { get; set; }
public string Reserve03 { get; set; }
public string Reserve04 { get; set; }
public string Reserve05 { get; set; }
public string Reserve06 { get; set; }
public string Reserve07 { get; set; }
public string Reserve08 { get; set; }
public string Reserve09 { get; set; }
public string Reserve10 { get; set; }
}
}
\ No newline at end of file
using Performance.EntityModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.Repository.Repository
{
/// <summary>
/// per_employee_backup Repository
/// </summary>
public partial class PerforPeremployeeBackupRepository : PerforRepository<per_employee_backup>
{
public PerforPeremployeeBackupRepository(PerformanceDbContext context) : base(context)
{
}
}
}
...@@ -123,6 +123,22 @@ public void SyncDataToResult(int allotId) ...@@ -123,6 +123,22 @@ public void SyncDataToResult(int allotId)
} }
} }
} }
public void PerEmployeeBackup(int allotId)
{
using (var connection = new MySqlConnection(_options.Value.PerformanceConnectionString))
{
if (connection.State != ConnectionState.Open) connection.Open();
try
{
string sql = $@"call proc_per_employee_backup({allotId})";
connection.Execute(sql, commandTimeout: 60 * 60);
}
catch (Exception)
{
throw;
}
}
}
#region 数据提取 #region 数据提取
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Infrastructure.Models; using Performance.Infrastructure.Models;
using Performance.Repository; using Performance.Repository;
using Performance.Repository.Repository;
using Performance.Services.ExtractExcelService; using Performance.Services.ExtractExcelService;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
...@@ -26,13 +27,16 @@ public class PersonService : IAutoInjection ...@@ -26,13 +27,16 @@ public class PersonService : IAutoInjection
private readonly ILogger<PersonService> logger; private readonly ILogger<PersonService> logger;
private readonly PerforPerdeptdicRepository perdeptdicRepository; private readonly PerforPerdeptdicRepository perdeptdicRepository;
private readonly PerforPeremployeeRepository peremployeeRepository; private readonly PerforPeremployeeRepository peremployeeRepository;
private readonly PerforPeremployeeBackupRepository perforPeremployeeBackupRepository;
private readonly PerforPerallotRepository perallotRepository; private readonly PerforPerallotRepository perallotRepository;
private readonly PerforUserRepository perforUserRepository; private readonly PerforUserRepository perforUserRepository;
private readonly PerforUserroleRepository perforUserroleRepository; private readonly PerforUserroleRepository perforUserroleRepository;
private readonly PerforRoleRepository perforRoleRepository; private readonly PerforRoleRepository perforRoleRepository;
private readonly PerforAgsecondallotRepository agsecondallotRepository; private readonly PerforAgsecondallotRepository agsecondallotRepository;
private readonly PerforHospitalRepository perforHospitalRepository; private readonly PerforHospitalRepository perforHospitalRepository;
private readonly PerforCofaccountingRepository perforCofaccountingRepository;
private readonly UserService userService; private readonly UserService userService;
private readonly DapperService dapperService;
private readonly Application application; private readonly Application application;
private readonly IWebHostEnvironment evn; private readonly IWebHostEnvironment evn;
...@@ -41,13 +45,16 @@ public class PersonService : IAutoInjection ...@@ -41,13 +45,16 @@ public class PersonService : IAutoInjection
ILogger<PersonService> logger, ILogger<PersonService> logger,
PerforPerdeptdicRepository perdeptdicRepository, PerforPerdeptdicRepository perdeptdicRepository,
PerforPeremployeeRepository peremployeeRepository, PerforPeremployeeRepository peremployeeRepository,
PerforPeremployeeBackupRepository perforPeremployeeBackupRepository,
PerforPerallotRepository perallotRepository, PerforPerallotRepository perallotRepository,
PerforUserRepository perforUserRepository, PerforUserRepository perforUserRepository,
PerforUserroleRepository perforUserroleRepository, PerforUserroleRepository perforUserroleRepository,
PerforRoleRepository perforRoleRepository, PerforRoleRepository perforRoleRepository,
PerforAgsecondallotRepository agsecondallotRepository, PerforAgsecondallotRepository agsecondallotRepository,
PerforHospitalRepository perforHospitalRepository, PerforHospitalRepository perforHospitalRepository,
PerforCofaccountingRepository perforCofaccountingRepository,
UserService userService, UserService userService,
DapperService dapperService,
IOptions<Application> application, IOptions<Application> application,
IWebHostEnvironment evn IWebHostEnvironment evn
) )
...@@ -56,13 +63,16 @@ IWebHostEnvironment evn ...@@ -56,13 +63,16 @@ IWebHostEnvironment evn
this.logger = logger; this.logger = logger;
this.perdeptdicRepository = perdeptdicRepository; this.perdeptdicRepository = perdeptdicRepository;
this.peremployeeRepository = peremployeeRepository; this.peremployeeRepository = peremployeeRepository;
this.perforPeremployeeBackupRepository = perforPeremployeeBackupRepository;
this.perallotRepository = perallotRepository; this.perallotRepository = perallotRepository;
this.perforUserRepository = perforUserRepository; this.perforUserRepository = perforUserRepository;
this.perforUserroleRepository = perforUserroleRepository; this.perforUserroleRepository = perforUserroleRepository;
this.perforRoleRepository = perforRoleRepository; this.perforRoleRepository = perforRoleRepository;
this.agsecondallotRepository = agsecondallotRepository; this.agsecondallotRepository = agsecondallotRepository;
this.perforHospitalRepository = perforHospitalRepository; this.perforHospitalRepository = perforHospitalRepository;
this.perforCofaccountingRepository = perforCofaccountingRepository;
this.userService = userService; this.userService = userService;
this.dapperService = dapperService;
this.application = application.Value; this.application = application.Value;
this.evn = evn; this.evn = evn;
} }
...@@ -385,6 +395,9 @@ public bool DeleteAllPerson(int allotId) ...@@ -385,6 +395,9 @@ public bool DeleteAllPerson(int allotId)
{ {
var employees = peremployeeRepository.GetEntities(t => t.AllotId == allotId) var employees = peremployeeRepository.GetEntities(t => t.AllotId == allotId)
?? new List<per_employee>(); ?? new List<per_employee>();
dapperService.PerEmployeeBackup(allotId);
return peremployeeRepository.RemoveRange(employees.ToArray()); return peremployeeRepository.RemoveRange(employees.ToArray());
} }
...@@ -888,6 +901,19 @@ public ApiResponse BathSavePerson(int allotId, int HospitalId, SaveCollectData r ...@@ -888,6 +901,19 @@ public ApiResponse BathSavePerson(int allotId, int HospitalId, SaveCollectData r
{ "错误原因", $"原名“{oldEmp.DoctorName}”,工号相同但姓名不同,请删除“历史数据”中该员工" }, { "错误原因", $"原名“{oldEmp.DoctorName}”,工号相同但姓名不同,请删除“历史数据”中该员工" },
}); });
} }
var accountinglist = perforCofaccountingRepository.GetEntity(w => w.UnitType == newEmployees[i].UnitType && w.AccountingUnit == newEmployees[i].AccountingUnit);
if (accountinglist == null)
{
error.Add(new Dictionary<string, string>
{
{ "行号", $"第{i+1}行" },
{ "人员工号", newEmployees[i].PersonnelNumber??"" },
{ "姓名", newEmployees[i].DoctorName??"" },
{ "来源", "粘贴数据" },
{ "错误原因", $"核算单元及组别不存在" },
});
}
} }
...@@ -933,10 +959,56 @@ public ApiResponse BathSavePerson(int allotId, int HospitalId, SaveCollectData r ...@@ -933,10 +959,56 @@ public ApiResponse BathSavePerson(int allotId, int HospitalId, SaveCollectData r
} }
var delPerson = oldEmployees?.Where(t => delPersonsNum.Contains(t.PersonnelNumber)); var delPerson = oldEmployees?.Where(t => delPersonsNum.Contains(t.PersonnelNumber));
if (delPerson != null && delPerson.Any()) if (delPerson != null && delPerson.Any())
{
peremployeeRepository.RemoveRange(delPerson.ToArray()); peremployeeRepository.RemoveRange(delPerson.ToArray());
var backDataup = _mapper.Map<List<per_employee_backup>>(delPerson);
perforPeremployeeBackupRepository.AddRange(backDataup.ToArray());
}
if (employees != null && employees.Any()) if (employees != null && employees.Any())
{
var backupTab = perforPeremployeeBackupRepository.GetEntities(t => t.AllotId == allotId);
employees.ForEach(e =>
{
var result = backupTab.FirstOrDefault(d => d.PersonnelNumber.Contains(e.PersonnelNumber) && d.AllotId == e.AllotId && d.HospitalId == e.HospitalId);
if(result!=null)
{
e.JobNumber = result.JobNumber;
e.JobCategory = result.JobCategory;
e.Duty = result.Duty;
e.JobTitle = result.JobTitle;
e.Attendance = result.Attendance;
e.AttendanceDay = result.AttendanceDay;
e.PermanentStaff = result.PermanentStaff;
e.EfficiencyNumber = result.EfficiencyNumber;
e.WorkTime = result.WorkTime;
e.BirthDate = result.BirthDate;
e.Age = result.Age;
e.ReservedRatio = result.ReservedRatio;
e.BankCard = result.BankCard;
e.Remark = result.Remark;
e.IsVerify = result.IsVerify;
e.VerifyMessage = result.VerifyMessage;
e.IsHrpEmployee = result.IsHrpEmployee;
e.CreateUser = result.CreateUser;
e.Reserve01 = result.Reserve01;
e.Reserve02 = result.Reserve02;
e.Reserve03 = result.Reserve03;
e.Reserve04 = result.Reserve04;
e.Reserve05 = result.Reserve05;
e.Reserve06 = result.Reserve06;
e.Reserve07 = result.Reserve07;
e.Reserve08 = result.Reserve08;
e.Reserve09 = result.Reserve09;
e.Reserve10 = result.Reserve10;
}
});
peremployeeRepository.AddRange(employees.ToArray()); peremployeeRepository.AddRange(employees.ToArray());
}
perallotRepository.AccoungtingVerify(allotId); perallotRepository.AccoungtingVerify(allotId);
......
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