From b628c2156ec9faa457ea4f4c75240d467688d7c2 Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Tue, 21 Jan 2025 14:44:11 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=A2=E8=AF=95=E5=AE=98-=E7=AE=80=E5=8E=86?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E9=80=9A=E8=BF=87=E7=8E=87=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ReportController.cs | 24 ++++-- Tiobon.Core.Api/Tiobon.Core.xml | 14 ++- Tiobon.Core.IServices/IReportServices.cs | 4 +- .../Ghrh/Ghrh_ResumeServices.cs | 4 +- Tiobon.Core.Services/ReportServices.cs | 86 ++++++++++++++++++- 5 files changed, 112 insertions(+), 20 deletions(-) diff --git a/Tiobon.Core.Api/Controllers/ReportController.cs b/Tiobon.Core.Api/Controllers/ReportController.cs index 6748f073..22630959 100644 --- a/Tiobon.Core.Api/Controllers/ReportController.cs +++ b/Tiobon.Core.Api/Controllers/ReportController.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 { private readonly ILogger _logger; private readonly IReportServices _services; /// /// 构造函数 - /// - /// - /// - public ReportController(ILogger logger, IReportServices services) + /// + /// + public ReportController(IReportServices service) : base(service) { - _services = services; - _logger = logger; } - #region 获取新入职人员列表 /// /// 获取新入职人员列表 @@ -30,6 +26,16 @@ public class ReportController : BaseApiController /// /// [HttpPost, Route("QueryNewStaff")] - public async Task> QueryNewStaffAsync([FromBody] QueryBody filter, string condition)=> await _services.QueryNewStaffAsync(filter, condition, true); + public async Task> QueryNewStaffAsync([FromBody] QueryBody filter, string condition) => await _service.QueryNewStaffAsync(filter, condition, true); + #endregion + + #region 面试官-简历筛选通过率 + /// + /// 面试官-简历筛选通过率 + /// + /// langId + /// + [HttpPost, Route("QueryESSResumeScreenPassRate/{langId}")] + public async Task> QueryESSResumeScreenPassRate(int langId) => await _service.QueryESSResumeScreenPassRate(langId); #endregion } \ No newline at end of file diff --git a/Tiobon.Core.Api/Tiobon.Core.xml b/Tiobon.Core.Api/Tiobon.Core.xml index 4c913ca6..dce1eeee 100644 --- a/Tiobon.Core.Api/Tiobon.Core.xml +++ b/Tiobon.Core.Api/Tiobon.Core.xml @@ -576,12 +576,11 @@ 公共服务 - + 构造函数 - - - + + @@ -591,6 +590,13 @@ + + + 面试官-简历筛选通过率 + + langId + + 分页获取 diff --git a/Tiobon.Core.IServices/IReportServices.cs b/Tiobon.Core.IServices/IReportServices.cs index bc0d37e3..51df9f43 100644 --- a/Tiobon.Core.IServices/IReportServices.cs +++ b/Tiobon.Core.IServices/IReportServices.cs @@ -8,7 +8,9 @@ namespace Tiobon.Core.IServices; /// /// IReportServices /// -public interface IReportServices : IBaseServices> +public interface IReportServices : IBaseServices { Task> QueryNewStaffAsync(QueryBody filter, string condition, bool? IsEnable = true); + + Task> QueryESSResumeScreenPassRate(int langId = 1); } diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs index f575dc5b..82cad970 100644 --- a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs +++ b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs @@ -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; diff --git a/Tiobon.Core.Services/ReportServices.cs b/Tiobon.Core.Services/ReportServices.cs index d346b482..45435182 100644 --- a/Tiobon.Core.Services/ReportServices.cs +++ b/Tiobon.Core.Services/ReportServices.cs @@ -1,12 +1,12 @@ using Microsoft.Extensions.Logging; +using static Tiobon.Core.Model.Consts; namespace Tiobon.Core.Services; -public partial class ReportServices : BaseServices>, IReportServices +public partial class ReportServices : BaseServices, IReportServices { IHttpContextAccessor _httpContextAccessor; ILogger _logger; - public ICaching _caching; private readonly IGhra_StaffServices _staffServices; public ReportServices(ILogger logger, IHttpContextAccessor httpContextAccessor, ICaching caching = null, IGhra_StaffServices staffServices = null) { @@ -50,6 +50,86 @@ public partial class ReportServices : BaseServices>, IReport return result; } - #endregion + #endregion + #region 面试官-简历筛选通过率 + /// + /// 面试官-简历筛选通过率:筛选通过人数 / 待筛选人数 × 100% + /// + /// + /// + public async Task> QueryESSResumeScreenPassRate(int langId = 1) + { + + dynamic data = new ExpandoObject(); + var series = new JArray(); + var XAxis = new List(); + var date = DateTime.Now.AddMonths(-11); + var data1 = new List(); + var data2 = new List(); + var data3 = new List(); + + 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() + .Where(x => x.StaffId == App.User.StaffId && x.CreateTime >= startDate && x.CreateTime < endDate) + .Select(x => x.OrderId) + .Distinct() + .ToListAsync(); + + var orders = await Db.Queryable().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.OprateSuccess("获取成功", data); + } + #endregion }