From 7409fe365b60f5a203a628645f7defba6e459c52 Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Fri, 13 Dec 2024 18:36:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8E=86=E6=9F=A5=E7=9C=8B=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Ghrh/Ghrh_ResumeController.cs | 24 ++++- Tiobon.Core.Api/Tiobon.Core.Model.xml | 45 ++++++++ Tiobon.Core.Api/Tiobon.Core.xml | 17 ++- .../Ghrh/IGhrh_ResumeServices.cs | 4 +- .../ViewModels/Extend/ResumeViewTab.cs | 59 ++++++++++- .../Ghrh/Ghrh_ResumeServices.cs | 100 ++++++++++++++++-- Tiobon.Core/Tiobon.Core.Model.xml | 45 ++++++++ Tiobon.Core/Tiobon.Core.xml | 17 ++- 8 files changed, 293 insertions(+), 18 deletions(-) diff --git a/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs b/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs index f8a57a79..18782d31 100644 --- a/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs +++ b/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs @@ -466,14 +466,34 @@ public class Ghrh_ResumeController : BaseController - /// 获取安排面试表单信息 + /// 获取评估信息 /// /// 简历ID /// [HttpPost, Route("QueryAssessForm/{id}")] public async Task> QueryAssessForm(long id) => await _service.QueryAssessForm(id); + /// + /// 获取评估信息 + /// + /// 简历ID + /// 面试单ID + /// + [HttpPost, Route("QueryAssessForm/{id}/{orderId}")] + public async Task> QueryAssessForm(long id, long orderId) => await _service.QueryAssessForm(id, orderId); + + #endregion + + #region 获取面试日志 + /// + /// 获取面试日志 + /// + /// 简历ID + /// + [HttpPost, Route("Log/{id}")] + public async Task>> Log(long id) => await _service.Log(id); + #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 d03627bf..8d7ac356 100644 --- a/Tiobon.Core.Api/Tiobon.Core.Model.xml +++ b/Tiobon.Core.Api/Tiobon.Core.Model.xml @@ -29392,6 +29392,51 @@ 取消原因 + + + 首次推荐时间 + + + + + 面试单Id + + + + + 明细 + + + + + 操作时间 + + + + + 操作人 + + + + + 内容 + + + + + 来源 + + + + + 人力需求单Id + + + + + 附件 + + 留言信息展示类 diff --git a/Tiobon.Core.Api/Tiobon.Core.xml b/Tiobon.Core.Api/Tiobon.Core.xml index 02636cfc..b1dcd6ca 100644 --- a/Tiobon.Core.Api/Tiobon.Core.xml +++ b/Tiobon.Core.Api/Tiobon.Core.xml @@ -1577,7 +1577,22 @@ - 获取安排面试表单信息 + 获取评估信息 + + 简历ID + + + + + 获取评估信息 + + 简历ID + 面试单ID + + + + + 获取面试日志 简历ID diff --git a/Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs b/Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs index fd0eaeb5..5003ca42 100644 --- a/Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs +++ b/Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs @@ -72,7 +72,9 @@ public interface IGhrh_ResumeServices : IBaseServices OverTimeDeleteResume(); Task> Download(List ids); - Task> QueryAssessForm(long id); + Task> QueryAssessForm(long id, long? orderId = null); Task Shihua_OA_Sync(); + + Task>> Log(long id); } \ No newline at end of file diff --git a/Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs b/Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs index 12d6afbe..b3c658a9 100644 --- a/Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs +++ b/Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs @@ -300,11 +300,11 @@ public class ResumeAttachment { public long? AttachmentID { get; set; } public string AttachFileExtension { get; set; } - + public string AttachmentNo { get; set; } - + public string AttachmentType { get; set; } - + public string AttachmentEname { get; set; } public string AttachFileName { get; set; } public long? AttachFileSize { get; set; } @@ -316,4 +316,57 @@ public class ResumeAttachment public class ResumePhotoAttachment : ResumeAttachment { +} + +public class ResumeLog +{ + + /// + /// 首次推荐时间 + /// + public DateTime? FirstRecommendTime { get; set; } + + /// + /// 面试单Id + /// + public long? OrderId { get; set; } + + /// + /// 明细 + /// + public List Items { get; set; } + +} + +public class ResumeLogItem +{ + /// + /// 操作时间 + /// + public DateTime? Time { get; set; } + + /// + /// 操作人 + /// + public string Operator { get; set; } + + /// + /// 内容 + /// + public string Content { get; set; } + + /// + /// 来源 + /// + public string Source { get; set; } + + /// + /// 人力需求单Id + /// + public long? RequestId { get; set; } + + /// + /// 附件 + /// + public List Attachments { get; set; } } \ 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 eb36c71d..2a476e5a 100644 --- a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs +++ b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs @@ -1,8 +1,9 @@ -using DinkToPdf; +using Amazon.Auth.AccessControlPolicy; +using DinkToPdf; using DinkToPdf.Contracts; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; -using MySqlX.XDevAPI.Common; +using NPOI.HSSF.Record; using System.IO.Compression; using static Tiobon.Core.Model.Consts; @@ -13,6 +14,8 @@ namespace Tiobon.Core.Services; /// public class Ghrh_ResumeServices : BaseServices, IGhrh_ResumeServices { + #region 变量定义 + private readonly IBaseRepository _dal; private readonly IGhrh_ResumeEduBGServices _ghrh_ResumeEduBGServices; private readonly IGhrh_ResumeWorkExpServices _ghrh_ResumeWorkExpServices; @@ -92,7 +95,9 @@ public class Ghrh_ResumeServices : BaseServices /// 字典映射、全称、单位转换等 /// @@ -134,6 +139,9 @@ public class Ghrh_ResumeServices : BaseServices> QueryFilterPage(QueryBody filter, string condition, bool? IsEnable = true) { var query = Db.Queryable(); @@ -424,6 +432,7 @@ public class Ghrh_ResumeServices : BaseServices> QueryViewTab() @@ -2153,9 +2162,11 @@ END"; await UpdateInterviewOrderStatus(order, DIC_INTERVIEW_ORDER_STATUS.HasSendOffer); await UpdateInterviewRecordStatus(order, DIC_INTERVIEW_ORDER_STATUS.HasSendOffer); - await LogRecord(order.Id, "变更状态为:已发offer!"); + //await LogRecord(order.Id, $"给【{entity.StaffName}】发送Offer!", id, null, "SendOffer"); + var content = (await _ghrh_TemplateServices.Preview(id, templateId, extFields)).Data; + #region 发送邮件 var mailOutbox = new Ghrs_MailOutbox(); mailOutbox.TOMail = entity.Email; @@ -2208,6 +2219,18 @@ END"; } entity.OfferFileUrl = "/Advanced/files/pdf_files/" + fileName; await Update(entity, ["OfferFileUrl"]); + + await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() + { + InterviewOrderId = order.Id, + ResumeId = id, + Source = "SendOffer", + Reverse1 = entity.OfferFileUrl, + UserId = App.User.ID, + UserName = App.User.Name, + RemarkSz = $"给【{entity.StaffName}】发送Offer!", + }); + #endregion return ServiceResult.OprateSuccess(); @@ -2363,7 +2386,7 @@ END"; var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); await UpdateInterviewOrderStatus(order, DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer); await UpdateInterviewRecordStatus(order, DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer); - await LogRecord(order.Id, "发起录用审批!"); + await LogRecord(order.Id, "发起录用审批!", id, null, "ApplyOffer"); } return ServiceResult.OprateSuccess(); @@ -2891,7 +2914,6 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status"; path = "/Advanced" + path; } - return ServiceResult.OprateSuccess(path); } @@ -2919,21 +2941,27 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status"; #endregion #region 获取评估单表单信息 - public async Task> QueryAssessForm(long id) + public async Task> QueryAssessForm(long id, long? orderId = null) { dynamic result = new ExpandoObject(); var entity = await base.QueryById(id); if (entity == null) return ServiceResult.OprateFailed("无效的简历ID!"); + var order = new Ghrh_InterviewOrder(); + if (orderId is null) + { - var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); - if (order == null) - return ServiceResult.OprateFailed("无效的简历ID!"); + order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); + if (order == null) + return ServiceResult.OprateFailed("无效的简历ID!"); + } + else + order = await Db.Ado.SqlQuerySingleAsync($"SELECT * from Ghrh_InterviewOrder where Id={orderId} "); var assessConfigs = new List(); - var assess = await _ghrh_InterviewAssessServices.QuerySingle(x => x.OrderId == order.Id); + var assess = await _ghrh_InterviewAssessServices.QuerySingle(x => x.OrderId == orderId); if (assess != null) assessConfigs = JsonHelper.JsonToObj>(assess.AssessFormContent); else @@ -3510,6 +3538,58 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status"; } #endregion + #region 面试日志 + public async Task>> Log(long id) + { + var logs = new List(); + var sql = $"Select * from Ghrh_InterviewOrder where ResumeId='{id}' Order by CreateTime desc "; + var orders = await Db.Ado.SqlQueryAsync(sql); + for (int i = 0; i < orders.Count; i++) + { + var items = new List(); + var interviewLogs = await _ghrh_InterviewLogServices.Query(x => x.InterviewOrderId == orders[i].Id, "CreateTime asc"); + for (int j = 0; j < interviewLogs.Count; j++) + { + var interviewLog = interviewLogs[j]; + var attachments = new List(); + + + switch (interviewLog.Source) + { + case "Recommended": + attachments = await Db.Queryable().Where(x => x.TableName == interviewLog.InterviewOrderId.ObjToString()).ToListAsync(); + break; + case "ScheduleInterview": + attachments = await Db.Queryable().Where(x => x.TableName == interviewLog.InterviewRecordId.ObjToString()).ToListAsync(); + break; + default: + break; + } + + items.Add(new ResumeLogItem() + { + Time = interviewLog.CreateTime, + Operator = interviewLog.UserName, + Content = interviewLog.RemarkSz, + Source = interviewLog.Source, + Attachments = attachments, + RequestId = interviewLog.Source == "Recommended" ? orders[i].RequestId : null + }); + } + logs.Add(new ResumeLog() + { + OrderId = orders[i].Id, + FirstRecommendTime = orders[i].RecommendTime, + Items = items + }); + + } + + return ServiceResult>.OprateSuccess("查询成功!", logs); + + } + #endregion + #region 通用方法 /// /// 记录日志 diff --git a/Tiobon.Core/Tiobon.Core.Model.xml b/Tiobon.Core/Tiobon.Core.Model.xml index d03627bf..8d7ac356 100644 --- a/Tiobon.Core/Tiobon.Core.Model.xml +++ b/Tiobon.Core/Tiobon.Core.Model.xml @@ -29392,6 +29392,51 @@ 取消原因 + + + 首次推荐时间 + + + + + 面试单Id + + + + + 明细 + + + + + 操作时间 + + + + + 操作人 + + + + + 内容 + + + + + 来源 + + + + + 人力需求单Id + + + + + 附件 + + 留言信息展示类 diff --git a/Tiobon.Core/Tiobon.Core.xml b/Tiobon.Core/Tiobon.Core.xml index 02636cfc..b1dcd6ca 100644 --- a/Tiobon.Core/Tiobon.Core.xml +++ b/Tiobon.Core/Tiobon.Core.xml @@ -1577,7 +1577,22 @@ - 获取安排面试表单信息 + 获取评估信息 + + 简历ID + + + + + 获取评估信息 + + 简历ID + 面试单ID + + + + + 获取面试日志 简历ID