面试官-简历筛选通过率查询接口

master
xiaochanghai 5 months ago
parent a900f157cb
commit b628c2156e
  1. 24
      Tiobon.Core.Api/Controllers/ReportController.cs
  2. 14
      Tiobon.Core.Api/Tiobon.Core.xml
  3. 4
      Tiobon.Core.IServices/IReportServices.cs
  4. 4
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
  5. 86
      Tiobon.Core.Services/ReportServices.cs

@ -6,22 +6,18 @@
[Produces("application/json")]
[Route("api/Report")]
[Authorize(Permissions.Name), ApiExplorerSettings(GroupName = Grouping.GroupName_System)]
public class ReportController : BaseApiController
public class ReportController : BaseController<IReportServices, Ghrh_Resume, Ghrh_ResumeDto, InsertGhrh_ResumeInput, EditGhrh_ResumeInput>
{
private readonly ILogger<CommonController> _logger;
private readonly IReportServices _services;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="logger"></param>
/// <param name="services"></param>
public ReportController(ILogger<CommonController> logger, IReportServices services)
/// </summary>
/// <param name="service"></param>
public ReportController(IReportServices service) : base(service)
{
_services = services;
_logger = logger;
}
#region 获取新入职人员列表
/// <summary>
/// 获取新入职人员列表
@ -30,6 +26,16 @@ public class ReportController : BaseApiController
/// <param name="condition"></param>
/// <returns></returns>
[HttpPost, Route("QueryNewStaff")]
public async Task<ServicePageResult<Ghra_StaffDto>> QueryNewStaffAsync([FromBody] QueryBody filter, string condition)=> await _services.QueryNewStaffAsync(filter, condition, true);
public async Task<ServicePageResult<Ghra_StaffDto>> QueryNewStaffAsync([FromBody] QueryBody filter, string condition) => await _service.QueryNewStaffAsync(filter, condition, true);
#endregion
#region 面试官-简历筛选通过率
/// <summary>
/// 面试官-简历筛选通过率
/// </summary>
/// <param name="langId">langId</param>
/// <returns></returns>
[HttpPost, Route("QueryESSResumeScreenPassRate/{langId}")]
public async Task<ServiceResult<dynamic>> QueryESSResumeScreenPassRate(int langId) => await _service.QueryESSResumeScreenPassRate(langId);
#endregion
}

@ -576,12 +576,11 @@
公共服务
</summary>
</member>
<member name="M:Tiobon.Core.Controllers.ReportController.#ctor(Microsoft.Extensions.Logging.ILogger{Tiobon.Core.Controllers.CommonController},Tiobon.Core.IServices.IReportServices)">
<member name="M:Tiobon.Core.Controllers.ReportController.#ctor(Tiobon.Core.IServices.IReportServices)">
<summary>
构造函数
</summary>
<param name="logger"></param>
<param name="services"></param>
</summary>
<param name="service"></param>
</member>
<member name="M:Tiobon.Core.Controllers.ReportController.QueryNewStaffAsync(Tiobon.Core.Common.QueryBody,System.String)">
<summary>
@ -591,6 +590,13 @@
<param name="condition"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.ReportController.QueryESSResumeScreenPassRate(System.Int32)">
<summary>
面试官-简历筛选通过率
</summary>
<param name="langId">langId</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.Get(System.Int32,System.String)">
<summary>
分页获取

@ -8,7 +8,9 @@ namespace Tiobon.Core.IServices;
/// <summary>
/// IReportServices
/// </summary>
public interface IReportServices : IBaseServices<RootEntityTkey<int>>
public interface IReportServices : IBaseServices<Ghrh_Resume, Ghrh_ResumeDto, InsertGhrh_ResumeInput, EditGhrh_ResumeInput>
{
Task<ServicePageResult<Ghra_StaffDto>> QueryNewStaffAsync(QueryBody filter, string condition, bool? IsEnable = true);
Task<ServiceResult<dynamic>> QueryESSResumeScreenPassRate(int langId = 1);
}

@ -1,6 +1,4 @@
using AgileObjects.AgileMapper.Extensions;
using MathNet.Numerics.Distributions;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Hosting;
using System.IO.Compression;

@ -1,12 +1,12 @@
using Microsoft.Extensions.Logging;
using static Tiobon.Core.Model.Consts;
namespace Tiobon.Core.Services;
public partial class ReportServices : BaseServices<RootEntityTkey<int>>, IReportServices
public partial class ReportServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, InsertGhrh_ResumeInput, EditGhrh_ResumeInput>, IReportServices
{
IHttpContextAccessor _httpContextAccessor;
ILogger<PayServices> _logger;
public ICaching _caching;
private readonly IGhra_StaffServices _staffServices;
public ReportServices(ILogger<PayServices> logger, IHttpContextAccessor httpContextAccessor, ICaching caching = null, IGhra_StaffServices staffServices = null)
{
@ -50,6 +50,86 @@ public partial class ReportServices : BaseServices<RootEntityTkey<int>>, IReport
return result;
}
#endregion
#endregion
#region 面试官-简历筛选通过率
/// <summary>
/// 面试官-简历筛选通过率:筛选通过人数 / 待筛选人数 × 100%
/// </summary>
/// <param name="langId"></param>
/// <returns></returns>
public async Task<ServiceResult<dynamic>> QueryESSResumeScreenPassRate(int langId = 1)
{
dynamic data = new ExpandoObject();
var series = new JArray();
var XAxis = new List<string>();
var date = DateTime.Now.AddMonths(-11);
var data1 = new List<int>();
var data2 = new List<int>();
var data3 = new List<decimal>();
var startDate = DateTime.Now.AddMonths(-11);
var endDate = DateTime.Now.AddMonths(1);
startDate = new DateTime(startDate.Year, startDate.Month, 1);
endDate = new DateTime(endDate.Year, endDate.Month, 1);
var orderIds = await Db.Queryable<Ghrh_InterviewRecord>()
.Where(x => x.StaffId == App.User.StaffId && x.CreateTime >= startDate && x.CreateTime < endDate)
.Select(x => x.OrderId)
.Distinct()
.ToListAsync();
var orders = await Db.Queryable<Ghrh_InterviewOrder>().Where(x => orderIds.Contains(x.Id)).ToListAsync();
for (int i = 1; i <= 12; i++)
{
var date1 = DateTimeHelper.ConvertToMonthString(date);
XAxis.Add(date1);
var group = orders
.Where(x => x.RecommendTime != null && x.RecommendTime.Value.Date.Month == date.Month && x.RecommendTime.Value.Date.Year == date.Year)
.ToList();
var count = group.Count;
var count1 = group.Where(x => x.Status == DIC_INTERVIEW_ORDER_STATUS.Fail).Count();
var count2 = count - count1;
data1.Add(count);
data2.Add(count2);
decimal count3 = 0;
if (count2 > 0 && count > 0)
count3 = ((decimal)count2 / count) * 100;
data3.Add(StringHelper.TrimDecimal(count3, 2));
date = date.AddMonths(1);
}
var item = new JObject
{
new JProperty("color", "rgba(43, 165, 177, 1)"),
new JProperty("data", data1),
new JProperty("name", await QueryLangValue("F_ResumeMaintenance_0231", "待筛选人数")),
};
series.Add(item);
item = new JObject
{
new JProperty("color", "rgba(255, 152, 18, 1)"),
new JProperty("data", data2),
new JProperty("name", await QueryLangValue("F_ResumeMaintenance_0230", "筛选通过人数")),
};
series.Add(item);
item = new JObject
{
new JProperty("color", "rgba(255, 147, 0, 1)"),
new JProperty("data", data3),
new JProperty("name", await QueryLangValue("F_ResumeMaintenance_0232", "简历筛选通过率")),
};
series.Add(item);
data.XAxis = XAxis;
data.series = series;
return ServiceResult<dynamic>.OprateSuccess("获取成功", data);
}
#endregion
}

Loading…
Cancel
Save