|
|
|
@ -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 |
|
|
|
|
} |
|
|
|
|