From 22fee85c4014eb354b9840dd528a78d151494f59 Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Wed, 25 Dec 2024 10:28:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Ghrh/Ghrh_ResumeController.cs | 3 + Tiobon.Core.Api/Tiobon.Core.Model.xml | 10 ++ .../1871744379090243584/Ghre_Certificate.xlsx | Bin 0 -> 16796 bytes .../Models/Ghrz/Ghrz_Shihua_OA_Employment.cs | 9 +- .../View/Ghre/Ghre_Certificate.Dto.View.cs | 10 +- .../Ghre/Ghre_CertificateServices.cs | 164 ++++++++++++++++++ .../Ghrh/Ghrh_ResumeServices.cs | 80 +++++++-- Tiobon.Core/Tiobon.Core.Model.xml | 10 ++ 8 files changed, 265 insertions(+), 21 deletions(-) create mode 100644 Tiobon.Core.Api/wwwroot/files/import/1871744379090243584/Ghre_Certificate.xlsx diff --git a/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs b/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs index 9e43c3a8..ecc3e7a0 100644 --- a/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs +++ b/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs @@ -519,5 +519,8 @@ public class Ghrh_ResumeController : BaseController SyncToStaff(long id) => await _service.SyncToStaff(id); + [HttpPost, Route("Shihua_OA")] + public async Task Shihua_OA_Sync(long id) => await _service.Shihua_OA_Sync(); + #endregion } \ No newline at end of file diff --git a/Tiobon.Core.Api/Tiobon.Core.Model.xml b/Tiobon.Core.Api/Tiobon.Core.Model.xml index d9793fb9..eb2352e2 100644 --- a/Tiobon.Core.Api/Tiobon.Core.Model.xml +++ b/Tiobon.Core.Api/Tiobon.Core.Model.xml @@ -25863,6 +25863,11 @@ Ghrz_Shihua_OA_Employment (Model) + + + 创建时间 + + EmploymentID @@ -27082,6 +27087,11 @@ 来源 + + + 证书名称 + + 培训证书规则(Dto.View) diff --git a/Tiobon.Core.Api/wwwroot/files/import/1871744379090243584/Ghre_Certificate.xlsx b/Tiobon.Core.Api/wwwroot/files/import/1871744379090243584/Ghre_Certificate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7064981b540ca11597c427be94f7a6f4760125fb GIT binary patch literal 16796 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 T9sP{D5CP0@u1b;TC-wgTN}Of3 literal 0 HcmV?d00001 diff --git a/Tiobon.Core.Model/Models/Ghrz/Ghrz_Shihua_OA_Employment.cs b/Tiobon.Core.Model/Models/Ghrz/Ghrz_Shihua_OA_Employment.cs index aa9aae86..d051cc1f 100644 --- a/Tiobon.Core.Model/Models/Ghrz/Ghrz_Shihua_OA_Employment.cs +++ b/Tiobon.Core.Model/Models/Ghrz/Ghrz_Shihua_OA_Employment.cs @@ -21,9 +21,16 @@ namespace Tiobon.Core.Model.Models; /// Ghrz_Shihua_OA_Employment (Model) /// [SugarTable("Ghrz_Shihua_OA_Employment", "Ghrz_Shihua_OA_Employment"), Entity(TableCnName = "Ghrz_Shihua_OA_Employment", TableName = "Ghrz_Shihua_OA_Employment")] -public class Ghrz_Shihua_OA_Employment : BasePoco1 +public class Ghrz_Shihua_OA_Employment + //: BasePoco1 { + + /// + /// 创建时间 + /// + [Display(Name = "创建时间"), SugarColumn(IsOnlyIgnoreUpdate = true)] + public DateTime? CreateTime { get; set; } /// /// EmploymentID /// diff --git a/Tiobon.Core.Model/View/Ghre/Ghre_Certificate.Dto.View.cs b/Tiobon.Core.Model/View/Ghre/Ghre_Certificate.Dto.View.cs index 1f021db4..5486c488 100644 --- a/Tiobon.Core.Model/View/Ghre/Ghre_Certificate.Dto.View.cs +++ b/Tiobon.Core.Model/View/Ghre/Ghre_Certificate.Dto.View.cs @@ -123,7 +123,13 @@ public class Ghre_CertificateDto : Ghre_Certificate /// /// 来源 /// - public string CertificateTypeLabel { get; set; } - public string IsExpiredLabel { get; set; } + public string CertificateTypeLabel { get; set; } + public string IsExpiredLabel { get; set; } public string AwardDate1 { get; set; } + /// + /// 证书名称 + /// + public string CertificateName { get; set; } + + } \ No newline at end of file diff --git a/Tiobon.Core.Services/Ghre/Ghre_CertificateServices.cs b/Tiobon.Core.Services/Ghre/Ghre_CertificateServices.cs index 65ff94d1..2f6a30b8 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_CertificateServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_CertificateServices.cs @@ -79,4 +79,168 @@ public class Ghre_CertificateServices : BaseServices(filter.pageNum, total, filter.pageSize, entitys); } + + #region Excel导入 + + + public override async Task> DownloadExcel(string menuName) + { + var physicsPath = $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot"; + var path = $"{$"{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}ExcelTemplate{Path.DirectorySeparatorChar}"}"; + if (!Directory.Exists(physicsPath + path)) + Directory.CreateDirectory(physicsPath + path); + + Type entityType = typeof(Ghre_Certificate); + var fileName = entityType.GetEntityTableName() + ".xlsx"; + + + var physicsPath1 = physicsPath + path + fileName; + //if (dataSourceLists.Any()) + // physicsPath1 = physicsPath + path + newFileName; + var result = ServiceResult.OprateSuccess("人证对照表_" + DateTimeHelper.ConvertToSecondString1(DateTime.Now) + ".xlsx", physicsPath1); + return result; + } + public override async Task> ImportExcel(IFormFile file) + { + var data = new ExcelData(); + long id = SnowFlakeSingle.instance.getID(); + var physicsPath = $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot"; + var path = $"{$"{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}import{Path.DirectorySeparatorChar}{id}{Path.DirectorySeparatorChar}"}"; + if (!Directory.Exists(physicsPath + path)) + Directory.CreateDirectory(physicsPath + path); + + var filepath = physicsPath + path + file.FileName; + using (var stream = File.Create(filepath)) + { + await file.CopyToAsync(stream); + } + string extension = Path.GetExtension(filepath); + + bool isExistError = false; + var id1 = SnowFlakeSingle.instance.getID(); + string errorFileName = path + SnowFlakeSingle.instance.getID() + extension; + + var dt = NPOIHelper.ImportExcel(filepath, "人证对照表"); + if (dt.Columns["Comments"] == null) + dt.Columns.Add("Comments", typeof(string)); + + var fields = new List + { + "工号", + "姓名", + "证书名称", + "课程", + "颁发日期", + "证书有效期", + "备注" + }; + for (int i = 0; i < dt.Rows.Count; i++) + { + var comments = new List(); + + + bool isContinue = false; + + fields.ForEach(x => + { + if (!dt.Columns.Contains(x)) + { + comments.Add("未查询到【" + x + "】列!"); + data.ErrorCount++; + dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a)); + isExistError = true; + isContinue = true; + } + }); + + if (isContinue) + continue; + + var StaffNo = dt.Rows[i]["工号"].ToString(); + var StaffName = dt.Rows[i]["姓名"].ToString(); + var CertificateName = dt.Rows[i]["证书名称"].ToString(); + var CourseName = dt.Rows[i]["课程"].ToString(); + var AwardDate = dt.Rows[i]["颁发日期"].ToString(); + var ValidityPeriod = dt.Rows[i]["证书有效期"].ToString(); + + if (StaffNo.IsNullOrEmpty() && StaffName.IsNullOrEmpty()) + continue; + + var remarkSz = dt.Rows[i]["备注"].ToString(); + + var staff = await Db.Queryable().Where(x => x.StaffNo == StaffNo && x.StaffName == StaffName).FirstAsync(); + if (staff == null) + { + comments.Add($"未查询到搞员工,工号或姓名填写错误!"); + data.ErrorCount++; + dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a)); + isExistError = true; + continue; + } + var rule = await Db.Queryable().Where(x => x.CertificateName == CertificateName).FirstAsync(); + if (rule == null) + { + comments.Add($"无效的证书名称!"); + data.ErrorCount++; + dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a)); + isExistError = true; + continue; + } + var course = await Db.Queryable().Where(x => x.CourseName == CourseName).FirstAsync(); + if (course == null) + { + comments.Add($"无效的课程!"); + data.ErrorCount++; + dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a)); + isExistError = true; + continue; + } + //if (await base.AnyAsync(x => x.CertificateRuleId == rule.Id && x.StaffId == ClassNo)) + //{ + // comments.Add($"系统已存在相同编号名称人证对照表数据!"); + // data.ErrorCount++; + // dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a)); + // isExistError = true; + // continue; + //} + + if (AwardDate.IsNullOrEmpty()) + AwardDate = DateTime.Now.ToString(); + var dict = new Dictionary + { + { "Id", SnowFlakeSingle.Instance.NextId() }, + { "CreateBy", App.User.ID }, + { "CreateTime", DateTime.Now }, + { "CertificateRuleId", rule.Id }, + { "StaffId", staff.StaffID }, + { "CourseId", course.Id }, + { "AwardDate", AwardDate }, + { "ValidityPeriod", ValidityPeriod }, + { "RemarkSz", remarkSz } + }; + try + { + await Db.Insertable(dict).AS("Ghre_Certificate").ExecuteCommandAsync(); + data.SuccessCount++; + //data.SuccessCount += list.Count; + } + catch (Exception E) + { + comments.Add(E.Message); + data.ErrorCount++; + dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a)); + isExistError = true; + continue; + } + + } + + if (isExistError) + { + NPOIHelper.ExportExcel(dt, null, "人证对照表", physicsPath + errorFileName); + data.filePath = errorFileName; + } + return ServiceResult.OprateSuccess("导入成功!", data); + } + #endregion } \ No newline at end of file diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs index 25f833b8..e918d951 100644 --- a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs +++ b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs @@ -3,6 +3,7 @@ using DinkToPdf.Contracts; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Hosting; +using Microsoft.VisualBasic; using System.IO.Compression; using static Tiobon.Core.Model.Consts; @@ -352,7 +353,8 @@ public class Ghrh_ResumeServices : BaseServices().Where(x => x.CreateTime.Value.Date == DateTime.Now).ToListAsync(); + var list = await Db.Queryable().Where(x => x.CreateTime >= startDate && x.IsRead == 0).ToListAsync(); for (int i = 0; i < list.Count; i++) { @@ -3700,6 +3702,13 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 }; long id = await Db.Insertable(insert).ExecuteReturnSnowflakeIdAsync(); + #region 写入数据,并判断是否有错误 + var sql = $"SELECT ISNULL(MAX(id)+1,1) FROM Ghrh_OfferApplyOrder WHERE Id !='{id}'"; + var id1 = await Db.Ado.GetLongAsync(sql); + sql = $"UPDATE Ghrh_OfferApplyOrder SET Id={id1} WHERE Id ='{id}'"; + await Db.Ado.ExecuteCommandAsync(sql); + id = id1; + #endregion #region 处理薪资项目 var currencyId = await Db.Ado.GetIntAsync("SELECT top 1 CurrencyID FROM Ghrc_Currency where CurrencyNo='RMB'"); @@ -3708,10 +3717,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S02").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S02, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S02" }); } @@ -3720,10 +3731,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S03").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S03, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S03" }); } if (data.S04.IsNotEmptyOrNull()) @@ -3731,10 +3744,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S04").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S04, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S04" }); } if (data.S05.IsNotEmptyOrNull()) @@ -3742,10 +3757,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S05").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S05, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S05" }); } if (data.S06.IsNotEmptyOrNull()) @@ -3753,10 +3770,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S06").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S06, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S06" }); } if (data.S21.IsNotEmptyOrNull()) @@ -3764,10 +3783,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S21").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S21, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S21" }); } if (data.S22.IsNotEmptyOrNull()) @@ -3775,10 +3796,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S22").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S22, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S22" }); } if (data.S23.IsNotEmptyOrNull()) @@ -3786,10 +3809,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S23").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S23, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S23" }); } if (data.S66.IsNotEmptyOrNull()) @@ -3797,10 +3822,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S66").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S66, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S66" }); } if (data.S68.IsNotEmptyOrNull()) @@ -3808,10 +3835,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S68").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S68, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S68" }); } if (data.S70.IsNotEmptyOrNull()) @@ -3819,18 +3848,20 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 var salaryItemId = (await Db.Queryable().Where(x => x.SalaryItemNo == "S70").FirstAsync())?.SalaryItemID; items.Add(new Ghrh_OfferApplyOrderSalary() { + Id = SnowFlakeSingle.Instance.NextId(), OrderId = id, SalaryItemId = salaryItemId, Amount = data.S70, - CurrencyId = currencyId + CurrencyId = currencyId, + Reverse1 = "S70" }); } #endregion if (items.Any()) - await Db.Insertable(items).ExecuteReturnSnowflakeIdAsync(); + await Db.Insertable(items).ExecuteCommandAsync(); } } - catch (Exception) + catch (Exception E) { } @@ -4035,9 +4066,13 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 dict.Add("IsEnable", 1); #endregion + DateTime? inTime = null; + long? applyOrderId = null; var applyOrder = await Db.Queryable().Where(x => x.ResumeId == id).FirstAsync(); if (applyOrder != null) { + inTime = applyOrder.InDate; + applyOrderId = applyOrder.Id; dict.Add("DeptID", applyOrder.DeptId); dict.Add("TitleID", applyOrder.TitleId); dict.Add("JobID", applyOrder.JobId); @@ -4046,8 +4081,10 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 dict.Add("LegalCompanyID", applyOrder.CompanyId); dict.Add("Reverse8", applyOrder.ProbationMonths); dict.Add("ZoneID", applyOrder.ZoneId); - dict.Add("StaffType1", applyOrder.StaffType1); - dict.Add("StaffType2", applyOrder.StaffType); + var items = await GetParaList("StaffType1"); + dict.Add("StaffType1", items.Where(x => x.ParaDetailNo == applyOrder.StaffType1).FirstOrDefault()?.ParaDetailId); + items = await GetParaList("StaffType2"); + dict.Add("StaffType2", items.Where(x => x.ParaDetailNo == applyOrder.StaffType).FirstOrDefault()?.ParaDetailId); //dict.Add("Reverse8", applyOrder.ProbationMonths); } else @@ -4324,6 +4361,13 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 await Db.Insertable(attachments1).ExecuteReturnIdentityAsync(); } #endregion + + #region 薪资项目同步 + if(applyOrderId != null) + { + + } + #endregion } await Db.Ado.CommitTranAsync(); diff --git a/Tiobon.Core/Tiobon.Core.Model.xml b/Tiobon.Core/Tiobon.Core.Model.xml index d9793fb9..eb2352e2 100644 --- a/Tiobon.Core/Tiobon.Core.Model.xml +++ b/Tiobon.Core/Tiobon.Core.Model.xml @@ -25863,6 +25863,11 @@ Ghrz_Shihua_OA_Employment (Model) + + + 创建时间 + + EmploymentID @@ -27082,6 +27087,11 @@ 来源 + + + 证书名称 + + 培训证书规则(Dto.View)