|
|
|
@ -1596,7 +1596,10 @@ END"; |
|
|
|
|
recommend.InterviewStaffs = recommend.InterviewStaffs.Where(x => x.StaffId != null).ToList(); |
|
|
|
|
|
|
|
|
|
if (!recommend.InterviewStaffs.Any()) |
|
|
|
|
return ServiceResult.OprateFailed("请先选择面试者!"); |
|
|
|
|
return ServiceResult.OprateFailed("至少选择一名面试者!"); |
|
|
|
|
|
|
|
|
|
recommend.InterviewStaffs = recommend.InterviewStaffs.Where(x => x.StaffId != null).Distinct().ToList(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (recommend.RequestId.IsNotEmptyOrNull()) |
|
|
|
|
{ |
|
|
|
@ -1660,15 +1663,17 @@ END"; |
|
|
|
|
Round = 1, |
|
|
|
|
Status = DIC_INTERVIEW_ORDER_STATUS.HasRecommended, |
|
|
|
|
StaffId = recommend.InterviewStaffs[i].StaffId, |
|
|
|
|
Email = recommend.InterviewStaffs[i].Email, |
|
|
|
|
IsPrimary = i == 0 ? true : false, |
|
|
|
|
}); |
|
|
|
|
await SendMessage(recommend.InterviewStaffs.Where(x => x.StaffId != null).Select(x => x.StaffId.Value).ToList(), "简历提醒", "您有个简历推荐,请及时查看!", "/M_ESS_Recruit/F_ESS_Candidate"); |
|
|
|
|
await SendMessage(recommend.InterviewStaffs.Select(x => x.StaffId.Value).ToList(), "简历提醒", "您有个简历推荐,请及时查看!", "/M_ESS_Recruit/F_ESS_Candidate"); |
|
|
|
|
|
|
|
|
|
var entity = await base.QueryById(id); |
|
|
|
|
entity.Status = DIC_INTERVIEW_ORDER_STATUS.HasRecommended; |
|
|
|
|
await Update(entity, ["Status"]); |
|
|
|
|
|
|
|
|
|
#region 日志 |
|
|
|
|
await LogRecord(orderId, $"向【{string.Join(",", interviewer.Select(o => o.StaffName))}】推荐了简历,推荐理由:{recommend.RecommendRemark ?? "无"}", id, null, "Recommended", true); |
|
|
|
|
await LogRecord(orderId, $"向【{string.Join("、", interviewer.Select(o => o.StaffName))}】推荐了简历,推荐理由:{recommend.RecommendRemark ?? "无"}", id, null, "Recommended", true); |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
#region 处理附件 |
|
|
|
@ -2054,11 +2059,16 @@ END"; |
|
|
|
|
#region 重新安排面试 |
|
|
|
|
public async Task<ServiceResult> RescheduleInterview(long id, ResumeRescheduleInterviewForm input, string type) |
|
|
|
|
{ |
|
|
|
|
if (input.InterviewStaffs is null) |
|
|
|
|
return ServiceResult.OprateFailed("面试不能为空!"); |
|
|
|
|
input.InterviewStaffs = input.InterviewStaffs.Where(x => x.StaffId != null).Distinct().ToList(); |
|
|
|
|
|
|
|
|
|
if (!input.InterviewStaffs.Any()) |
|
|
|
|
return ServiceResult.OprateFailed("至少选择一名面试者!"); |
|
|
|
|
var entity = await base.QueryById(id); |
|
|
|
|
if (entity == null) |
|
|
|
|
return ServiceResult.OprateFailed("无效的简历ID!"); |
|
|
|
|
|
|
|
|
|
var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); |
|
|
|
|
if (type == "Reschedule") |
|
|
|
|
{ |
|
|
|
|
//if (entity.Status != DIC_INTERVIEW_ORDER_STATUS.WaitInterview) |
|
|
|
@ -2076,54 +2086,66 @@ END"; |
|
|
|
|
{ |
|
|
|
|
throw new Exception($"传入时间【{input.Time}】无效,请检查格式!"); |
|
|
|
|
} |
|
|
|
|
if (order != null) |
|
|
|
|
{ |
|
|
|
|
order.Round++; |
|
|
|
|
order.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; |
|
|
|
|
|
|
|
|
|
await _ghrh_InterviewOrderServices.Update(order, ["Status", "Round"]); |
|
|
|
|
await Db.Updateable<Ghrh_InterviewOrder>() |
|
|
|
|
.SetColumns(it => it.IsEnable == 0) |
|
|
|
|
.Where(it => it.ResumeId == id) |
|
|
|
|
.ExecuteCommandAsync(); |
|
|
|
|
|
|
|
|
|
await Db.Updateable<Ghrh_InterviewRecord>() |
|
|
|
|
.SetColumns(it => new Ghrh_InterviewRecord() |
|
|
|
|
{ |
|
|
|
|
Status = DIC_INTERVIEW_ORDER_STATUS.SystemCancelInterview, |
|
|
|
|
UpdateTime = DateTime.Now |
|
|
|
|
}) |
|
|
|
|
.Where(it => it.Status == DIC_INTERVIEW_ORDER_STATUS.WaitInterview && it.OrderId == order.Id) |
|
|
|
|
.ExecuteCommandAsync(); |
|
|
|
|
var interviewIds = input.InterviewStaffs.Select(o => o.StaffId.Value).ToList(); |
|
|
|
|
var interviewer = await Db.Queryable<Ghra_Staff>().Where(o => interviewIds.Contains(o.StaffID)).ToListAsync(); |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < input.InterviewStaffs.Count; i++) |
|
|
|
|
var orderId = await _ghrh_InterviewOrderServices.Add(new InsertGhrh_InterviewOrderInput() |
|
|
|
|
{ |
|
|
|
|
ResumeId = id, |
|
|
|
|
RecommendTime = DateTime.Now, |
|
|
|
|
RecommendId = App.User.ID, |
|
|
|
|
Round = 1, |
|
|
|
|
OrderNo = await GenerateContinuousSequence("Ghrh_InterviewOrder", "OrderNo", "V"), |
|
|
|
|
Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview, |
|
|
|
|
RecommendRemark = null, |
|
|
|
|
InterviewIds = JsonHelper.ObjToJson(interviewIds), |
|
|
|
|
Interviewer = string.Join(",", interviewer.Select(o => o.StaffName)) |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
//await Db.Updateable<Ghrh_InterviewRecord>() |
|
|
|
|
// .SetColumns(it => new Ghrh_InterviewRecord() |
|
|
|
|
// { |
|
|
|
|
// Status = DIC_INTERVIEW_ORDER_STATUS.SystemCancelInterview, |
|
|
|
|
// UpdateTime = DateTime.Now |
|
|
|
|
// }) |
|
|
|
|
// .Where(it => it.Status == DIC_INTERVIEW_ORDER_STATUS.WaitInterview && it.OrderId == order.Id) |
|
|
|
|
// .ExecuteCommandAsync(); |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < input.InterviewStaffs.Count; i++) |
|
|
|
|
{ |
|
|
|
|
await _ghrh_InterviewRecordServices.Add(new InsertGhrh_InterviewRecordInput() |
|
|
|
|
{ |
|
|
|
|
OrderId = orderId, |
|
|
|
|
Round = 1, |
|
|
|
|
StaffId = input.InterviewStaffs[i].StaffId, |
|
|
|
|
Email = input.InterviewStaffs[i].Email, |
|
|
|
|
InterviewTime = input.Time, |
|
|
|
|
PlanInterviewTime1 = input.Time, |
|
|
|
|
InterviewBeginTime = Convert.ToDateTime(array[0]), |
|
|
|
|
InterviewEndTime = Convert.ToDateTime(array[1]), |
|
|
|
|
Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview, |
|
|
|
|
IsPrimary = i == 0 ? true : false |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
await _ghrh_InterviewRecordServices.Add(new InsertGhrh_InterviewRecordInput() |
|
|
|
|
{ |
|
|
|
|
OrderId = order.Id, |
|
|
|
|
Round = order.Round, |
|
|
|
|
StaffId = input.InterviewStaffs[i].StaffId, |
|
|
|
|
InterviewTime = input.Time, |
|
|
|
|
PlanInterviewTime1 = input.Time, |
|
|
|
|
InterviewBeginTime = Convert.ToDateTime(array[0]), |
|
|
|
|
InterviewEndTime = Convert.ToDateTime(array[1]), |
|
|
|
|
Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
var interviewIds = input.InterviewStaffs.Where(o => o.StaffId != null) |
|
|
|
|
.Select(o => o.StaffId.Value).ToList(); |
|
|
|
|
|
|
|
|
|
var interviewer = await Db.Queryable<Ghra_Staff>().Where(o => interviewIds.Contains(o.StaffID)).ToListAsync(); |
|
|
|
|
await LogRecord(order.Id, $"向【{string.Join(",", interviewer.Select(o => o.StaffName))}】发起一个新一轮面试,面试时间:{input.Time}", id, null, "ReScheduleInterview"); |
|
|
|
|
|
|
|
|
|
entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; |
|
|
|
|
await Update(entity, ["Status"]); |
|
|
|
|
|
|
|
|
|
if (input.InterviewStaffs.IsNotEmptyOrNull()) |
|
|
|
|
await SendMessage(input.InterviewStaffs.Select(x => x.StaffId.Value).ToList(), "简历提醒", "您有个新的邀约面试,请及时查看!", "/M_ESS_Recruit/F_ESS_Interview"); |
|
|
|
|
await LogRecord(orderId, $"向【{string.Join("、", interviewer.Select(o => o.StaffName))}】发起一个新的面试,面试时间:{input.Time}", id, null, "ReScheduleInterview"); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; |
|
|
|
|
await Update(entity, ["Status", "UpdateTime", "UpdateBy"]); |
|
|
|
|
|
|
|
|
|
if (input.InterviewStaffs.IsNotEmptyOrNull()) |
|
|
|
|
await SendMessage(input.InterviewStaffs.Select(x => x.StaffId.Value).ToList(), "简历提醒", "您有个新的邀约面试,请及时查看!", "/M_ESS_Recruit/F_ESS_Interview"); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); |
|
|
|
|
|
|
|
|
|
if (order != null) |
|
|
|
|
{ |
|
|
|
|
order.Round++; |
|
|
|
@ -2132,7 +2154,7 @@ END"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
entity.Status = DIC_INTERVIEW_ORDER_STATUS.HasRecommended; |
|
|
|
|
await Update(entity, ["Status"]); |
|
|
|
|
await Update(entity, ["Status", "UpdateTime", "UpdateBy"]); |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < input.InterviewStaffs.Count; i++) |
|
|
|
|
await _ghrh_InterviewRecordServices.Add(new InsertGhrh_InterviewRecordInput() |
|
|
|
@ -2140,13 +2162,14 @@ END"; |
|
|
|
|
OrderId = order.Id, |
|
|
|
|
Round = order.Round, |
|
|
|
|
Status = DIC_INTERVIEW_ORDER_STATUS.HasRecommended, |
|
|
|
|
Email = input.InterviewStaffs[i].Email, |
|
|
|
|
StaffId = input.InterviewStaffs[i].StaffId, |
|
|
|
|
IsPrimary = i == 0 ? true : false |
|
|
|
|
}); |
|
|
|
|
var interviewIds = input.InterviewStaffs.Where(o => o.StaffId != null) |
|
|
|
|
.Select(o => o.StaffId.Value).ToList(); |
|
|
|
|
var interviewIds = input.InterviewStaffs.Select(o => o.StaffId.Value).ToList(); |
|
|
|
|
|
|
|
|
|
var interviewer = await Db.Queryable<Ghra_Staff>().Where(o => interviewIds.Contains(o.StaffID)).ToListAsync(); |
|
|
|
|
await LogRecord(order.Id, $"向【{string.Join(",", interviewer.Select(o => o.StaffName))}】发起一个新的面试,面试时间:{input.Time}", id, null, "ReRecommended"); |
|
|
|
|
await LogRecord(order.Id, $"向【{string.Join("、", interviewer.Select(o => o.StaffName))}】发起一个新一轮面试,面试时间:{input.Time}", id, null, "ReRecommended"); |
|
|
|
|
|
|
|
|
|
if (input.InterviewStaffs.IsNotEmptyOrNull()) |
|
|
|
|
await SendMessage(input.InterviewStaffs.Select(x => x.StaffId.Value).ToList(), "简历提醒", "您有个新的推荐简历,请及时查看!", "/M_ESS_Recruit/F_ESS_Candidate"); |
|
|
|
@ -3817,7 +3840,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status"; |
|
|
|
|
{ |
|
|
|
|
var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id); |
|
|
|
|
records.ForEach(record => record.Status = Status); |
|
|
|
|
await _ghrh_InterviewRecordServices.Update(records, ["Status", "UpdateTime", "CreateBy"]); |
|
|
|
|
await _ghrh_InterviewRecordServices.Update(records, ["Status", "UpdateTime", "UpdateBy"]); |
|
|
|
|
} |
|
|
|
|
/// <summary> |
|
|
|
|
/// 同步数据进入认识资料 |
|
|
|
|