Commit 829748d3 by 纪旭 韦

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

parent 0fa00668
......@@ -6878,6 +6878,146 @@
</summary>
</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">
<summary>
首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本)
......
......@@ -213,6 +213,7 @@ public AutoMapperConfigs()
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => 2));
CreateMap<BudgetResponse, per_budget_ratio>();
CreateMap<per_employee, per_employee_backup>();
CreateMap<per_employee, PerEmployeeResponse>()
.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()))
......
......@@ -181,6 +181,7 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<per_dept_dic> per_dept_dic { get; set; }
/// <summary> 绩效人员表 </summary>
public virtual DbSet<per_employee> per_employee { get; set; }
public virtual DbSet<per_employee_backup> per_employee_backup { get; set; }
/// <summary> 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) </summary>
public virtual DbSet<per_first> per_first { get; set; }
/// <summary> 上传数据解析 </summary>
......@@ -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_vacation> per_attendance_vacation { 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)
}
}
}
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 数据提取
......
......@@ -10,6 +10,7 @@
using Performance.Infrastructure;
using Performance.Infrastructure.Models;
using Performance.Repository;
using Performance.Repository.Repository;
using Performance.Services.ExtractExcelService;
using System;
using System.Collections.Generic;
......@@ -26,13 +27,16 @@ public class PersonService : IAutoInjection
private readonly ILogger<PersonService> logger;
private readonly PerforPerdeptdicRepository perdeptdicRepository;
private readonly PerforPeremployeeRepository peremployeeRepository;
private readonly PerforPeremployeeBackupRepository perforPeremployeeBackupRepository;
private readonly PerforPerallotRepository perallotRepository;
private readonly PerforUserRepository perforUserRepository;
private readonly PerforUserroleRepository perforUserroleRepository;
private readonly PerforRoleRepository perforRoleRepository;
private readonly PerforAgsecondallotRepository agsecondallotRepository;
private readonly PerforHospitalRepository perforHospitalRepository;
private readonly PerforCofaccountingRepository perforCofaccountingRepository;
private readonly UserService userService;
private readonly DapperService dapperService;
private readonly Application application;
private readonly IWebHostEnvironment evn;
......@@ -41,13 +45,16 @@ public class PersonService : IAutoInjection
ILogger<PersonService> logger,
PerforPerdeptdicRepository perdeptdicRepository,
PerforPeremployeeRepository peremployeeRepository,
PerforPeremployeeBackupRepository perforPeremployeeBackupRepository,
PerforPerallotRepository perallotRepository,
PerforUserRepository perforUserRepository,
PerforUserroleRepository perforUserroleRepository,
PerforRoleRepository perforRoleRepository,
PerforAgsecondallotRepository agsecondallotRepository,
PerforHospitalRepository perforHospitalRepository,
PerforCofaccountingRepository perforCofaccountingRepository,
UserService userService,
DapperService dapperService,
IOptions<Application> application,
IWebHostEnvironment evn
)
......@@ -56,13 +63,16 @@ IWebHostEnvironment evn
this.logger = logger;
this.perdeptdicRepository = perdeptdicRepository;
this.peremployeeRepository = peremployeeRepository;
this.perforPeremployeeBackupRepository = perforPeremployeeBackupRepository;
this.perallotRepository = perallotRepository;
this.perforUserRepository = perforUserRepository;
this.perforUserroleRepository = perforUserroleRepository;
this.perforRoleRepository = perforRoleRepository;
this.agsecondallotRepository = agsecondallotRepository;
this.perforHospitalRepository = perforHospitalRepository;
this.perforCofaccountingRepository = perforCofaccountingRepository;
this.userService = userService;
this.dapperService = dapperService;
this.application = application.Value;
this.evn = evn;
}
......@@ -385,6 +395,9 @@ public bool DeleteAllPerson(int allotId)
{
var employees = peremployeeRepository.GetEntities(t => t.AllotId == allotId)
?? new List<per_employee>();
dapperService.PerEmployeeBackup(allotId);
return peremployeeRepository.RemoveRange(employees.ToArray());
}
......@@ -888,6 +901,19 @@ public ApiResponse BathSavePerson(int allotId, int HospitalId, SaveCollectData r
{ "错误原因", $"原名“{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
}
var delPerson = oldEmployees?.Where(t => delPersonsNum.Contains(t.PersonnelNumber));
if (delPerson != null && delPerson.Any())
{
peremployeeRepository.RemoveRange(delPerson.ToArray());
var backDataup = _mapper.Map<List<per_employee_backup>>(delPerson);
perforPeremployeeBackupRepository.AddRange(backDataup.ToArray());
}
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());
}
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