面试官/HR推荐 - 发OFFER率

master
xiaochanghai 5 months ago
parent a062d568b4
commit 39b91f5de5
  1. 20
      Tiobon.Core.Api/Controllers/ReportController.cs
  2. 14
      Tiobon.Core.Api/Tiobon.Core.xml
  3. 2
      Tiobon.Core.IServices/IReportServices.cs
  4. 85
      Tiobon.Core.Services/ReportServices.cs

@ -58,4 +58,24 @@ public class ReportController : BaseController<IReportServices, Ghrh_Resume, Ghr
[HttpPost("QueryInterviewPassRate/{langId}")]
public async Task<ServiceResult<dynamic>> QueryInterviewPassRate(int langId) => await _service.QueryInterviewPassRate(langId);
#endregion
#region 面试官-发OFFER率
/// <summary>
/// 面试官-简历筛选通过率
/// </summary>
/// <param name="langId">langId</param>
/// <returns></returns>
[HttpPost("QueryESSSendOfferRate/{langId}")]
public async Task<ServiceResult<dynamic>> QueryESSSendOfferRate(int langId) => await _service.QuerySendOfferRate(langId, App.User.StaffId);
#endregion
#region HR推荐-发OFFER率
/// <summary>
/// HR推荐-简历筛选通过率
/// </summary>
/// <param name="langId">langId</param>
/// <returns></returns>
[HttpPost("QuerySendOfferRate/{langId}")]
public async Task<ServiceResult<dynamic>> QuerySendOfferRate(int langId) => await _service.QuerySendOfferRate(langId);
#endregion
}

@ -611,6 +611,20 @@
<param name="langId">langId</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.ReportController.QueryESSSendOfferRate(System.Int32)">
<summary>
面试官-简历筛选通过率
</summary>
<param name="langId">langId</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.ReportController.QuerySendOfferRate(System.Int32)">
<summary>
HR推荐-简历筛选通过率
</summary>
<param name="langId">langId</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.Get(System.Int32,System.String)">
<summary>
分页获取

@ -15,4 +15,6 @@ public interface IReportServices : IBaseServices<Ghrh_Resume, Ghrh_ResumeDto, In
Task<ServiceResult<dynamic>> QueryESSResumeScreenPassRate(int langId = 1);
Task<ServiceResult<dynamic>> QueryInterviewPassRate(int langId = 1, int? staffId = null);
Task<ServiceResult<dynamic>> QuerySendOfferRate(int langId = 1, int? staffId = null);
}

@ -217,4 +217,89 @@ public partial class ReportServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto,
return ServiceResult<dynamic>.OprateSuccess("获取成功", data);
}
#endregion
#region 面试官/HR推荐 - 发OFFER率
/// <summary>
/// 面试官/HR推荐 - 发OFFER率:已发offer人数 / 面试通过人数 × 100%
/// </summary>
/// <param name="langId"></param>
/// <returns></returns>
public async Task<ServiceResult<dynamic>> QuerySendOfferRate(int langId = 1, int? staffId = null)
{
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>()
.WhereIF(staffId != null, x => x.StaffId == staffId)
.Where(x => 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) &&
x.Status == DIC_INTERVIEW_ORDER_STATUS.HasSendOffer ||
x.Status == DIC_INTERVIEW_ORDER_STATUS.HasOffer).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 && x.IsPass == true)
.ToList();
var count = group.Count;
var count1 = group.Where(x => x.IsPass == true).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_0235", "面试通过人数")),
};
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_0236", "已发offer人数")),
};
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_0237", "已发OFFER率")),
};
series.Add(item);
data.XAxis = XAxis;
data.series = series;
return ServiceResult<dynamic>.OprateSuccess("获取成功", data);
}
#endregion
}

Loading…
Cancel
Save