新增面试超时逾期处理任务

回收自动删除 新增参数控制天数
master
xiaochanghai 5 months ago
parent 9c1873eb32
commit a900f157cb
  1. 2
      Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs
  2. 55
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
  3. 24
      Tiobon.Core.Tasks/QuartzNet/Jobs/Job_InterviewOrderOverTime_Quartz.cs

@ -92,4 +92,6 @@ public interface IGhrh_ResumeServices : IBaseServices<Ghrh_Resume, Ghrh_ResumeDt
Task<ServicePageResult<Ghrh_ResumeDto>> QueryHireList(QueryBody filter); Task<ServicePageResult<Ghrh_ResumeDto>> QueryHireList(QueryBody filter);
Task<ServiceResult<ExcelData>> ExportHireExcel(QueryExport body); Task<ServiceResult<ExcelData>> ExportHireExcel(QueryExport body);
Task<ServiceResult> InterviewOrderOverTime();
} }

@ -2450,7 +2450,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
#endregion #endregion
#region 处理人力需求单 录用人数 #region 处理人力需求单 录用人数
if (order.RequestId.IsNotEmptyOrNull() ) if (order.RequestId.IsNotEmptyOrNull())
{ {
var sql = $@"UPDATE Ghrh_HumanRequest var sql = $@"UPDATE Ghrh_HumanRequest
SET OfferCount = ISNULL (OfferCount, 0) + 1 SET OfferCount = ISNULL (OfferCount, 0) + 1
@ -3161,19 +3161,58 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
#region 回收站中的简历30天后自动删除 #region 回收站中的简历30天后自动删除
public async Task<ServiceResult> OverTimeDeleteResume() public async Task<ServiceResult> OverTimeDeleteResume()
{ {
var dt = Db.GetDate().AddDays(-30); int day = 30;
var config = await Db.Queryable<Ghrh_Config>().Where(x => x.ConfigCode == "Recruit_Over_Time_Delete_Resume").FirstAsync();
if (config != null)
day = config.ConfigValue.ObjToInt();
var list = await base.Query(x => x.Status == "Recycled" && x.RecycledTime <= dt); var dt = Db.GetDate().AddDays(-day);
var list = await base.Query(x => x.Status == DIC_INTERVIEW_ORDER_STATUS.Recycled && x.RecycledTime <= dt);
var ids = list.Select(x => x.Id).ToList(); var ids = list.Select(x => x.Id).ToList();
if (ids.Any()) if (ids.Any())
await Db.Updateable<Ghrh_Resume>() await Db.Updateable<Ghrh_Resume>()
.SetColumns(it => new Ghrh_Resume() .SetColumns(it => new Ghrh_Resume()
{ {
IsEnable = 0, IsEnable = 0
UpdateBy = App.User.ID, }, true)
UpdateTime = DateTime.Now, .Where(it => ids.Contains(it.Id))
}) .ExecuteCommandAsync();
.Where(it => ids.Contains(it.Id)).ExecuteCommandAsync(); return ServiceResult.OprateSuccess();
}
#endregion
#region 面试超时逾期
public async Task<ServiceResult> InterviewOrderOverTime()
{
int day = 3;
var config = await Db.Queryable<Ghrh_Config>().Where(x => x.ConfigCode == "Recruit_Interview_Order_Over_Time").FirstAsync();
if (config != null)
day = config.ConfigValue.ObjToInt();
var dt = Db.GetDate().AddDays(-day);
var list = await Db.Queryable<Ghrh_InterviewOrder>().Where(x => x.Status == DIC_INTERVIEW_ORDER_STATUS.HasRecommended && x.RecommendTime <= dt).ToListAsync();
var ids = list.Select(x => x.Id).ToList();
var resumeIds = list.Select(x => x.ResumeId).ToList();
if (ids.Any())
await Db.Updateable<Ghrh_InterviewOrder>()
.SetColumns(it => new Ghrh_InterviewOrder()
{
Status = DIC_INTERVIEW_ORDER_STATUS.Expire
}, true)
.Where(it => ids.Contains(it.Id))
.ExecuteCommandAsync();
if (resumeIds.Any())
await Db.Updateable<Ghrh_Resume>()
.SetColumns(it => new Ghrh_Resume()
{
Status = DIC_INTERVIEW_ORDER_STATUS.Expire
}, true)
.Where(it => resumeIds.Contains(it.Id))
.ExecuteCommandAsync();
return ServiceResult.OprateSuccess(); return ServiceResult.OprateSuccess();
} }
#endregion #endregion

@ -0,0 +1,24 @@
/// <summary>
/// 这里要注意下,命名空间和程序集是一样的,不然反射不到
/// </summary>
namespace Tiobon.Core.Tasks;
public class Job_InterviewOrderOverTime_Quartz : JobBase, IJob
{
private readonly IGhrh_ResumeServices _ghrh_ResumeServices;
public Job_InterviewOrderOverTime_Quartz(IGhrh_ResumeServices ghrh_ResumeServices, ITasksQzServices tasksQzServices, ITasksLogServices tasksLogServices)
: base(tasksQzServices, tasksLogServices)
{
_ghrh_ResumeServices = ghrh_ResumeServices;
}
public async Task Execute(IJobExecutionContext context)
{
var executeLog = await ExecuteJob(context, async () => await Run(context));
}
public async Task Run(IJobExecutionContext context)
{
Console.WriteLine($"Job_InterviewOrderOverTime_Quartz 执行 {DateTime.Now.ToShortTimeString()}");
await _ghrh_ResumeServices.InterviewOrderOverTime();
}
}
Loading…
Cancel
Save