简历查看页面接口开发

master
xiaochanghai 6 months ago
parent 5e06b257d5
commit 7409fe365b
  1. 24
      Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs
  2. 45
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  3. 17
      Tiobon.Core.Api/Tiobon.Core.xml
  4. 4
      Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs
  5. 53
      Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs
  6. 96
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
  7. 45
      Tiobon.Core/Tiobon.Core.Model.xml
  8. 17
      Tiobon.Core/Tiobon.Core.xml

@ -466,14 +466,34 @@ public class Ghrh_ResumeController : BaseController<IGhrh_ResumeServices, Ghrh_R
}
#endregion
#region 获取安排面试表单信息
#region 获取评估信息
/// <summary>
/// 获取安排面试表单信息
/// 获取评估信息
/// </summary>
/// <param name="id">简历ID</param>
/// <returns></returns>
[HttpPost, Route("QueryAssessForm/{id}")]
public async Task<ServiceResult<dynamic>> QueryAssessForm(long id) => await _service.QueryAssessForm(id);
/// <summary>
/// 获取评估信息
/// </summary>
/// <param name="id">简历ID</param>
/// <param name="orderId">面试单ID</param>
/// <returns></returns>
[HttpPost, Route("QueryAssessForm/{id}/{orderId}")]
public async Task<ServiceResult<dynamic>> QueryAssessForm(long id, long orderId) => await _service.QueryAssessForm(id, orderId);
#endregion
#region 获取面试日志
/// <summary>
/// 获取面试日志
/// </summary>
/// <param name="id">简历ID</param>
/// <returns></returns>
[HttpPost, Route("Log/{id}")]
public async Task<ServiceResult<List<ResumeLog>>> Log(long id) => await _service.Log(id);
#endregion
}

@ -29392,6 +29392,51 @@
取消原因
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLog.FirstRecommendTime">
<summary>
首次推荐时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLog.OrderId">
<summary>
面试单Id
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLog.Items">
<summary>
明细
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Time">
<summary>
操作时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Operator">
<summary>
操作人
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Content">
<summary>
内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Source">
<summary>
来源
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.RequestId">
<summary>
人力需求单Id
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Attachments">
<summary>
附件
</summary>
</member>
<member name="T:Tiobon.Core.Model.ViewModels.GuestbookViewModels">
<summary>
留言信息展示类

@ -1577,7 +1577,22 @@
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghrh_ResumeController.QueryAssessForm(System.Int64)">
<summary>
获取安排面试表单信息
获取评估信息
</summary>
<param name="id">简历ID</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghrh_ResumeController.QueryAssessForm(System.Int64,System.Int64)">
<summary>
获取评估信息
</summary>
<param name="id">简历ID</param>
<param name="orderId">面试单ID</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghrh_ResumeController.Log(System.Int64)">
<summary>
获取面试日志
</summary>
<param name="id">简历ID</param>
<returns></returns>

@ -72,7 +72,9 @@ public interface IGhrh_ResumeServices : IBaseServices<Ghrh_Resume, Ghrh_ResumeDt
Task<ServiceResult> OverTimeDeleteResume();
Task<ServiceResult<string>> Download(List<long> ids);
Task<ServiceResult<dynamic>> QueryAssessForm(long id);
Task<ServiceResult<dynamic>> QueryAssessForm(long id, long? orderId = null);
Task Shihua_OA_Sync();
Task<ServiceResult<List<ResumeLog>>> Log(long id);
}

@ -317,3 +317,56 @@ public class ResumeAttachment
public class ResumePhotoAttachment : ResumeAttachment
{
}
public class ResumeLog
{
/// <summary>
/// 首次推荐时间
/// </summary>
public DateTime? FirstRecommendTime { get; set; }
/// <summary>
/// 面试单Id
/// </summary>
public long? OrderId { get; set; }
/// <summary>
/// 明细
/// </summary>
public List<ResumeLogItem> Items { get; set; }
}
public class ResumeLogItem
{
/// <summary>
/// 操作时间
/// </summary>
public DateTime? Time { get; set; }
/// <summary>
/// 操作人
/// </summary>
public string Operator { get; set; }
/// <summary>
/// 内容
/// </summary>
public string Content { get; set; }
/// <summary>
/// 来源
/// </summary>
public string Source { get; set; }
/// <summary>
/// 人力需求单Id
/// </summary>
public long? RequestId { get; set; }
/// <summary>
/// 附件
/// </summary>
public List<Ghrs_Attachment> Attachments { get; set; }
}

@ -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;
/// </summary>
public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, InsertGhrh_ResumeInput, EditGhrh_ResumeInput>, IGhrh_ResumeServices
{
#region 变量定义
private readonly IBaseRepository<Ghrh_Resume> _dal;
private readonly IGhrh_ResumeEduBGServices _ghrh_ResumeEduBGServices;
private readonly IGhrh_ResumeWorkExpServices _ghrh_ResumeWorkExpServices;
@ -92,7 +95,9 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
_converter = converter;
_hostingEnvironment = hostingEnvironment;
}
#endregion
#region 字典映射、全称、单位转换等
/// <summary>
/// 字典映射、全称、单位转换等
/// </summary>
@ -134,6 +139,9 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
x.IsPassLabel = x.IsPass == true ? "通过" : "不通过";
}
}
#endregion
#region 查询
public override async Task<ServicePageResult<Ghrh_ResumeDto>> QueryFilterPage(QueryBody filter, string condition, bool? IsEnable = true)
{
var query = Db.Queryable<Ghrh_Resume>();
@ -424,6 +432,7 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
return list[0];
}
#endregion
#region 获取简历Tabs接口
public ServiceResult<List<ResumeViewTab>> 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<string>.OprateSuccess(path);
}
@ -2919,21 +2941,27 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status";
#endregion
#region 获取评估单表单信息
public async Task<ServiceResult<dynamic>> QueryAssessForm(long id)
public async Task<ServiceResult<dynamic>> QueryAssessForm(long id, long? orderId = null)
{
dynamic result = new ExpandoObject();
var entity = await base.QueryById(id);
if (entity == null)
return ServiceResult<dynamic>.OprateFailed("无效的简历ID!");
var order = new Ghrh_InterviewOrder();
if (orderId is null)
{
var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id);
order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id);
if (order == null)
return ServiceResult<dynamic>.OprateFailed("无效的简历ID!");
}
else
order = await Db.Ado.SqlQuerySingleAsync<Ghrh_InterviewOrder>($"SELECT * from Ghrh_InterviewOrder where Id={orderId} ");
var assessConfigs = new List<Ghrh_AssessConfigDto>();
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<List<Ghrh_AssessConfigDto>>(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<ServiceResult<List<ResumeLog>>> Log(long id)
{
var logs = new List<ResumeLog>();
var sql = $"Select * from Ghrh_InterviewOrder where ResumeId='{id}' Order by CreateTime desc ";
var orders = await Db.Ado.SqlQueryAsync<Ghrh_InterviewOrder>(sql);
for (int i = 0; i < orders.Count; i++)
{
var items = new List<ResumeLogItem>();
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<Ghrs_Attachment>();
switch (interviewLog.Source)
{
case "Recommended":
attachments = await Db.Queryable<Ghrs_Attachment>().Where(x => x.TableName == interviewLog.InterviewOrderId.ObjToString()).ToListAsync();
break;
case "ScheduleInterview":
attachments = await Db.Queryable<Ghrs_Attachment>().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<List<ResumeLog>>.OprateSuccess("查询成功!", logs);
}
#endregion
#region 通用方法
/// <summary>
/// 记录日志

@ -29392,6 +29392,51 @@
取消原因
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLog.FirstRecommendTime">
<summary>
首次推荐时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLog.OrderId">
<summary>
面试单Id
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLog.Items">
<summary>
明细
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Time">
<summary>
操作时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Operator">
<summary>
操作人
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Content">
<summary>
内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Source">
<summary>
来源
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.RequestId">
<summary>
人力需求单Id
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Attachments">
<summary>
附件
</summary>
</member>
<member name="T:Tiobon.Core.Model.ViewModels.GuestbookViewModels">
<summary>
留言信息展示类

@ -1577,7 +1577,22 @@
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghrh_ResumeController.QueryAssessForm(System.Int64)">
<summary>
获取安排面试表单信息
获取评估信息
</summary>
<param name="id">简历ID</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghrh_ResumeController.QueryAssessForm(System.Int64,System.Int64)">
<summary>
获取评估信息
</summary>
<param name="id">简历ID</param>
<param name="orderId">面试单ID</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghrh_ResumeController.Log(System.Int64)">
<summary>
获取面试日志
</summary>
<param name="id">简历ID</param>
<returns></returns>

Loading…
Cancel
Save