diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs index 49c22cf2..9516ef5a 100644 --- a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs +++ b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs @@ -2103,11 +2103,27 @@ END"; throw new Exception($"传入时间【{input.Time}】无效,请检查格式!"); } - await Db.Updateable() + var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); + + if (order != null) + { + var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id && x.Status == DIC_INTERVIEW_ORDER_STATUS.WaitInterview); + if (records != null && records.Any()) + { + for (int j = 0; j < records.Count; j++) + { + records[j].Status = DIC_INTERVIEW_ORDER_STATUS.HasInterview; + + var staff = await Db.Queryable().Where(x => x.StaffID == records[j].StaffId).FirstAsync(); + await LogRecord(order.Id, $"因发起一个新面试,【{staff?.StaffName}({staff?.StaffNo})】未及时提交评估,自动转入【已面试】!", id, records[j].Id, "TransferWaitSendOffer"); + } + await _ghrh_InterviewRecordServices.Update(records, ["Status", "UpdateTime", "UpdateBy"]); + } + await Db.Updateable() .SetColumns(it => it.IsEnable == 0) .Where(it => it.ResumeId == id) .ExecuteCommandAsync(); - + } var interviewIds = input.InterviewStaffs.Select(o => o.StaffId.Value).ToList(); var interviewer = await Db.Queryable().Where(o => interviewIds.Contains(o.StaffID)).ToListAsync(); @@ -2150,7 +2166,7 @@ END"; }); } - await LogRecord(orderId, $"向【{string.Join("、", interviewer.Select(o => o.StaffName))}】发起一个新的面试,面试时间:{input.Time}", id, null, "ReRecommended"); + await LogRecord(orderId, $"向【{string.Join("、", interviewer.Select(o => o.StaffName + $"({o.StaffNo})"))}】发起一个新的面试,面试时间:{input.Time}", id, null, "ReRecommended"); entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; await Update(entity, ["Status", "UpdateTime", "UpdateBy"]); @@ -2164,12 +2180,26 @@ END"; if (order != null) { + + var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id && x.Status == DIC_INTERVIEW_ORDER_STATUS.WaitInterview); + if (records != null && records.Any()) + { + for (int j = 0; j < records.Count; j++) + { + records[j].Status = DIC_INTERVIEW_ORDER_STATUS.HasInterview; + + var staff = await Db.Queryable().Where(x => x.StaffID == records[j].StaffId).FirstAsync(); + await LogRecord(order.Id, $"因发起一个新一轮面试,【{staff?.StaffName}({staff?.StaffNo})】未及时提交评估,自动转入【已面试】!", id, records[j].Id, "TransferWaitSendOffer"); + } + await _ghrh_InterviewRecordServices.Update(records, ["Status", "UpdateTime", "UpdateBy"]); + } + order.Round++; - order.Status = DIC_INTERVIEW_ORDER_STATUS.HasRecommended; + order.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; await _ghrh_InterviewOrderServices.Update(order, ["Status", "Round"]); - entity.Status = DIC_INTERVIEW_ORDER_STATUS.HasRecommended; + entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; await Update(entity, ["Status", "UpdateTime", "UpdateBy"]); for (int i = 0; i < input.InterviewStaffs.Count; i++) @@ -2177,7 +2207,7 @@ END"; { OrderId = order.Id, Round = order.Round, - Status = DIC_INTERVIEW_ORDER_STATUS.HasRecommended, + Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview, Email = input.InterviewStaffs[i].Email, StaffId = input.InterviewStaffs[i].StaffId, IsPrimary = i == 0 ? true : false @@ -2185,7 +2215,7 @@ END"; var interviewIds = input.InterviewStaffs.Select(o => o.StaffId.Value).ToList(); var interviewer = await Db.Queryable().Where(o => interviewIds.Contains(o.StaffID)).ToListAsync(); - await LogRecord(order.Id, $"向【{string.Join("、", interviewer.Select(o => o.StaffName))}】发起一个新一轮面试,面试时间:{input.Time}", id, null, "ReScheduleInterview"); + await LogRecord(order.Id, $"向【{string.Join("、", interviewer.Select(o => o.StaffName + $"({o.StaffNo})"))}】发起一个新一轮面试,面试时间:{input.Time}", id, null, "ReScheduleInterview"); if (input.InterviewStaffs.IsNotEmptyOrNull()) await SendMessage(input.InterviewStaffs.Select(x => x.StaffId.Value).ToList(), "简历提醒", "您有个新的推荐简历,请及时查看!", "/M_ESS_Recruit/F_ESS_Candidate"); @@ -2546,7 +2576,7 @@ END"; OrderNo = await GenerateContinuousSequence("Ghrh_InterviewOrder", "OrderNo", "V"), Status = DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer, }); - await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); + order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); } if (order != null) @@ -2554,6 +2584,18 @@ END"; await UpdateInterviewOrderStatus(order, DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer); //await UpdateInterviewRecordStatus(order, DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer); + + var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id && x.Status == DIC_INTERVIEW_ORDER_STATUS.WaitInterview); + + for (int j = 0; j < records.Count; j++) + { + records[j].Status = DIC_INTERVIEW_ORDER_STATUS.HasInterview; + + var staff = await Db.Queryable().Where(x => x.StaffID == records[j].StaffId).FirstAsync(); + await LogRecord(order.Id, $"因状态转入待发Offer,【{staff?.StaffName}({staff?.StaffNo})】未及时提交评估,自动转入【已面试】!", id, records[j].Id, "TransferWaitSendOffer"); + } + await _ghrh_InterviewRecordServices.Update(records, ["Status", "UpdateTime", "UpdateBy"]); + await LogRecord(order.Id, "转入待发Offer!", id, null, "TransferWaitSendOffer"); } } @@ -2707,13 +2749,19 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 break; case "WaitInterview": if (jsonParam.columnValue.ObjToInt() == 1) - sql += $" AND B.Status = '{DIC_INTERVIEW_ORDER_STATUS.WaitInterview}'"; + { + sql += $" AND C.Status = '{DIC_INTERVIEW_ORDER_STATUS.WaitInterview}'"; + //sql += $" AND B.Status = '{DIC_INTERVIEW_ORDER_STATUS.WaitInterview}'"; + //sql += $" AND (B.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasInterview}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.InterviewFail}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasSendOffer}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasOffer}')"; + + } break; case "HasInterview": if (jsonParam.columnValue.ObjToInt() == 1) { - sql += $" AND (B.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasInterview}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.InterviewFail}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasSendOffer}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasOffer}')"; - sql += $" AND (C.Status = '{DIC_INTERVIEW_ORDER_STATUS.WaitInterview}' OR C.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasInterview}' OR C.Status = '{DIC_INTERVIEW_ORDER_STATUS.InterviewFail}')"; + sql += $" AND C.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasInterview}'"; + //sql += $" AND (B.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasInterview}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.InterviewFail}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasSendOffer}' OR B.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasOffer}')"; + //sql += $" AND (C.Status = '{DIC_INTERVIEW_ORDER_STATUS.WaitInterview}' OR C.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasInterview}' OR C.Status = '{DIC_INTERVIEW_ORDER_STATUS.InterviewFail}')"; } break; case "WaitSendOffer":