master
xiaochanghai 6 months ago
parent 4c32357f09
commit 0605012fa6
  1. 2
      Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs
  2. 12
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  3. 12
      Tiobon.Core.Model/Consts.cs
  4. 73
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
  5. 2
      Tiobon.Core.Services/Ghrh/Ghrh_YearHumanSettingsServices.cs
  6. 22
      Tiobon.Core/Tiobon.Core.Model.xml

@ -42,7 +42,7 @@ public class Ghrh_ResumeController : BaseController<IGhrh_ResumeServices, Ghrh_R
condition = $"(Status ='{status}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.WaitRecommended}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.HasRecommended}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.Fail}')"; condition = $"(Status ='{status}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.WaitRecommended}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.HasRecommended}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.Fail}')";
break; break;
case "Process": case "Process":
condition = $"(Status ='{status}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.WaitAppointment}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.WaitInterview}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.HasInterview}'OR Status ='{DIC_INTERVIEW_ORDER_STATUS.InterviewFail}')"; condition = $"(Status ='{status}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.WaitAppointment}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.WaitInterview}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.HasInterview}'OR Status ='{DIC_INTERVIEW_ORDER_STATUS.InterviewFail}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.Cancel}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.HasChangeDate}')";
break; break;
case "Hire": case "Hire":
condition = $"(Status ='{status}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.HasSendOffer}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.HasOffer}')"; condition = $"(Status ='{status}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.HasSendOffer}' OR Status ='{DIC_INTERVIEW_ORDER_STATUS.HasOffer}')";

@ -28624,7 +28624,7 @@
</member> </member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.InterviewFail"> <member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.InterviewFail">
<summary> <summary>
面试不合适 面试不通过
</summary> </summary>
</member> </member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.Talent_Pool"> <member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.Talent_Pool">
@ -28642,6 +28642,16 @@
黑名单 黑名单
</summary> </summary>
</member> </member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.HasChangeDate">
<summary>
已改期
</summary>
</member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.Cancel">
<summary>
取消
</summary>
</member>
<member name="F:Tiobon.Core.Model.AuthorityScopeEnum.NONE"> <member name="F:Tiobon.Core.Model.AuthorityScopeEnum.NONE">
<summary> <summary>
无任何权限 无任何权限

@ -384,7 +384,7 @@ public class Consts
/// </summary> /// </summary>
public const string Fail = "Fail"; public const string Fail = "Fail";
/// <summary> /// <summary>
/// 面试不合适 /// 面试不通过
/// </summary> /// </summary>
public const string InterviewFail = "InterviewFail"; public const string InterviewFail = "InterviewFail";
@ -403,6 +403,16 @@ public class Consts
/// </summary> /// </summary>
public const string Blacklist = "Blacklist"; public const string Blacklist = "Blacklist";
/// <summary>
/// 已改期
/// </summary>
public const string HasChangeDate = "HasChangeDate";
/// <summary>
/// 取消
/// </summary>
public const string Cancel = "Cancel";
} }
#endregion #endregion

@ -1,6 +1,7 @@
using Amazon.Auth.AccessControlPolicy; using Amazon.Auth.AccessControlPolicy;
using DinkToPdf; using DinkToPdf;
using DinkToPdf.Contracts; using DinkToPdf.Contracts;
using DnsClient.Protocol;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using NPOI.HSSF.Record; using NPOI.HSSF.Record;
@ -193,6 +194,14 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
if (jsonParam.columnValue.ObjToInt() == 1) if (jsonParam.columnValue.ObjToInt() == 1)
whereExpression.And(x => x.Status == DIC_INTERVIEW_ORDER_STATUS.HasOffer); whereExpression.And(x => x.Status == DIC_INTERVIEW_ORDER_STATUS.HasOffer);
break; break;
case "Cancel":
if (jsonParam.columnValue.ObjToInt() == 1)
whereExpression.And(x => x.Status == DIC_INTERVIEW_ORDER_STATUS.Cancel);
break;
case "HasChangeDate":
if (jsonParam.columnValue.ObjToInt() == 1)
whereExpression.And(x => x.Status == DIC_INTERVIEW_ORDER_STATUS.HasChangeDate);
break;
case "SalaryPeriod": case "SalaryPeriod":
case "EduDegree": case "EduDegree":
@ -467,6 +476,11 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
""Key"": ""WaitAppointment"", ""Key"": ""WaitAppointment"",
""Count"": 0 ""Count"": 0
}, },
{
""ItemName"": """",
""Key"": ""HasChangeDate"",
""Count"": 0
},
{ {
""ItemName"": """", ""ItemName"": """",
""Key"": ""WaitInterview"", ""Key"": ""WaitInterview"",
@ -476,6 +490,11 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
""ItemName"": """", ""ItemName"": """",
""Key"": ""HasInterview"", ""Key"": ""HasInterview"",
""Count"": 0 ""Count"": 0
},
{
""ItemName"": """",
""Key"": ""Cancel"",
""Count"": 0
} }
] ]
}, },
@ -1729,7 +1748,7 @@ END";
if (record.PlanInterviewTime1.IsNotEmptyOrNull() || record.PlanInterviewTime2.IsNotEmptyOrNull() || record.PlanInterviewTime3.IsNotEmptyOrNull()) if (record.PlanInterviewTime1.IsNotEmptyOrNull() || record.PlanInterviewTime2.IsNotEmptyOrNull() || record.PlanInterviewTime3.IsNotEmptyOrNull())
isChangeInterviewTime = true; isChangeInterviewTime = true;
if (isChangeInterviewTime) if (isChangeInterviewTime)
record.WaitInterviewStatus = "HasChangeInterviewTime"; record.Status = DIC_INTERVIEW_ORDER_STATUS.HasChangeDate;
}); });
@ -1751,20 +1770,27 @@ END";
else if (i == 2) else if (i == 2)
records.ForEach(record => record.PlanInterviewTime3 = time); records.ForEach(record => record.PlanInterviewTime3 = time);
} }
order.Status = DIC_INTERVIEW_ORDER_STATUS.WaitAppointment;
if (isChangeInterviewTime) if (isChangeInterviewTime)
order.WaitInterviewStatus = "HasChangeInterviewTime"; order.Status = DIC_INTERVIEW_ORDER_STATUS.HasChangeDate;
order.Status = DIC_INTERVIEW_ORDER_STATUS.WaitAppointment;
order.AppointmentFeedback = form.Remark; order.AppointmentFeedback = form.Remark;
await _ghrh_InterviewOrderServices.Update(order, ["Status", "AppointmentFeedback"]); await _ghrh_InterviewOrderServices.Update(order, ["Status", "AppointmentFeedback"]);
await _ghrh_InterviewRecordServices.Update(records[0], ["PlanInterviewTime1", "PlanInterviewTime2", "PlanInterviewTime3", "Status"]); await _ghrh_InterviewRecordServices.Update(records[0], ["PlanInterviewTime1", "PlanInterviewTime2", "PlanInterviewTime3", "Status"]);
#region 日志 #region 日志
if (!isChangeInterviewTime)
await LogRecord(order.Id, $"预约面试,面试时间:{string.Join("", form.Times)},约面反馈:{order.AppointmentFeedback ?? ""}", id, null, "SubscribeInterview"); await LogRecord(order.Id, $"预约面试,面试时间:{string.Join("", form.Times)},约面反馈:{order.AppointmentFeedback ?? ""}", id, null, "SubscribeInterview");
else
await LogRecord(order.Id, $"修改面试时间,面试时间:{string.Join("", form.Times)},备注:{(form.Remark ?? "")}", id, null, "ChangeInterviewDate");
#endregion #endregion
if (!isChangeInterviewTime)
await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.WaitAppointment); await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.WaitAppointment);
else
await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.HasChangeDate);
} }
return ServiceResult.OprateSuccess(); return ServiceResult.OprateSuccess();
@ -1813,7 +1839,7 @@ END";
await _ghrh_InterviewRecordServices.Update(records, ["InterviewTime", "InterviewBeginTime", "InterviewEndTime", "Status", "UpdateTime", "UpdateBy"]); await _ghrh_InterviewRecordServices.Update(records, ["InterviewTime", "InterviewBeginTime", "InterviewEndTime", "Status", "UpdateTime", "UpdateBy"]);
await _ghrh_InterviewOrderServices.Update(order, ["InterviewStepName", "UpdateTime", "UpdateBy"]); await _ghrh_InterviewOrderServices.Update(order, ["InterviewStepName", "UpdateTime", "UpdateBy"]);
await LogRecord(order.Id, $"安排面试,面试时间:{body.Time},面试地点:{body.InterviewAddress},面试备注:{body.Remark ?? ""}", id, records[0].Id, "ScheduleInterview", true); await LogRecord(order.Id, $"安排面试,面试时间:{body.Time},面试地点:{body.InterviewAddress}面试备注:{body.Remark ?? ""}", id, records[0].Id, "ScheduleInterview", true);
entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview;
await Update(entity, ["Status", "UpdateTime", "UpdateBy"]); await Update(entity, ["Status", "UpdateTime", "UpdateBy"]);
@ -1878,7 +1904,7 @@ END";
var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id); var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id);
records.ForEach(record => records.ForEach(record =>
{ {
record.Status = DIC_INTERVIEW_ORDER_STATUS.WaitAppointment; record.Status = DIC_INTERVIEW_ORDER_STATUS.HasChangeDate;
record.RemarkSz = form.Remark; record.RemarkSz = form.Remark;
if (record.PlanInterviewTime1.IsNotEmptyOrNull() || record.PlanInterviewTime2.IsNotEmptyOrNull() || record.PlanInterviewTime3.IsNotEmptyOrNull()) if (record.PlanInterviewTime1.IsNotEmptyOrNull() || record.PlanInterviewTime2.IsNotEmptyOrNull() || record.PlanInterviewTime3.IsNotEmptyOrNull())
isChangeInterviewTime = true; isChangeInterviewTime = true;
@ -1889,25 +1915,32 @@ END";
for (int i = 0; i < form.Times.Count; i++) for (int i = 0; i < form.Times.Count; i++)
{ {
var time = form.Times[i];
if (time.IsNotEmptyOrNull())
{
var time1 = time.Split('~');
time = DateTimeHelper.ConvertToMiniuteString(time1[0]) + "~" + DateTimeHelper.ConvertToOnlyHourMinuteString(time1[1]);
}
if (i == 0) if (i == 0)
records.ForEach(record => record.PlanInterviewTime1 = form.Times[i]); records.ForEach(record => record.PlanInterviewTime1 = time);
else if (i == 1) else if (i == 1)
records.ForEach(record => record.PlanInterviewTime2 = form.Times[i]); records.ForEach(record => record.PlanInterviewTime2 = time);
else if (i == 2) else if (i == 2)
records.ForEach(record => record.PlanInterviewTime3 = form.Times[i]); records.ForEach(record => record.PlanInterviewTime3 = time);
} }
if (isChangeInterviewTime) if (isChangeInterviewTime)
order.WaitInterviewStatus = "HasChangeInterviewTime"; order.WaitInterviewStatus = "HasChangeInterviewTime";
order.Status = DIC_INTERVIEW_ORDER_STATUS.WaitAppointment; order.Status = DIC_INTERVIEW_ORDER_STATUS.HasChangeDate;
order.AppointmentFeedback = form.Remark; order.AppointmentFeedback = form.Remark;
await _ghrh_InterviewOrderServices.Update(order, ["Status", "AppointmentFeedback"]); await _ghrh_InterviewOrderServices.Update(order, ["Status", "AppointmentFeedback"]);
await _ghrh_InterviewRecordServices.Update(records[0], ["PlanInterviewTime1", "PlanInterviewTime2", "PlanInterviewTime3", "Status"]); await _ghrh_InterviewRecordServices.Update(records[0], ["PlanInterviewTime1", "PlanInterviewTime2", "PlanInterviewTime3", "Status"]);
await LogRecord(order.Id, $"预约面试,面试时间:{string.Join("", form.Times)}"); await LogRecord(order.Id, $"修改面试时间,面试时间:{string.Join("", form.Times)},备注:{(form.Remark ?? "")}");
await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.WaitAppointment); await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.HasChangeDate);
} }
return ServiceResult.OprateSuccess(); return ServiceResult.OprateSuccess();
@ -1991,7 +2024,7 @@ END";
if (records[i].FirstViewTime.IsNotEmptyOrNull()) if (records[i].FirstViewTime.IsNotEmptyOrNull())
await SendMessage([records[i].StaffId.Value], "简历提醒", "您有个简历【待面试】,请及时查看面试时间!", "/M_ESS_Recruit/F_ESS_Interview"); await SendMessage([records[i].StaffId.Value], "简历提醒", "您有个简历【待面试】,请及时查看面试时间!", "/M_ESS_Recruit/F_ESS_Interview");
} }
await LogRecord(order.Id, $"发送待面试提醒"); await LogRecord(order.Id, $"发送待面试提醒", id, null, "RemindWaitInterview");
} }
} }
@ -2331,7 +2364,7 @@ END";
order.Status = DIC_INTERVIEW_ORDER_STATUS.Fail; order.Status = DIC_INTERVIEW_ORDER_STATUS.Fail;
order.InterviewResult = "不合适"; order.InterviewResult = "不合适";
order.FilterFeedback = input.Content; order.FilterFeedback = input.Content;
await _ghrh_InterviewOrderServices.Update(order, ["Status", "InterviewResult", "FilterFeedback"]); await _ghrh_InterviewOrderServices.Update(order, ["Status", "InterviewResult", "FilterFeedback", "UpdateTime"]);
var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id); var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id);
records.ForEach(record => records.ForEach(record =>
@ -2340,8 +2373,8 @@ END";
record.InterviewResult = "不合适"; record.InterviewResult = "不合适";
record.FilterFeedback = input.Content; record.FilterFeedback = input.Content;
}); });
await _ghrh_InterviewRecordServices.Update(records, ["Status", "InterviewResult", "FilterFeedback"]); await _ghrh_InterviewRecordServices.Update(records, ["Status", "InterviewResult", "FilterFeedback", "UpdateTime"]);
await LogRecord(order.Id, "变更状态为:不合适!"); await LogRecord(order.Id, $"变更状态为:不合适,不合适原因:{input.Content ?? ""}", id, null, "Fail");
} }
return ServiceResult.OprateSuccess(); return ServiceResult.OprateSuccess();
} }
@ -2359,10 +2392,16 @@ END";
var record = await _ghrh_InterviewRecordServices.QuerySingle(x => x.Round == order.Round && x.OrderId == order.Id && x.StaffId == GetStaffId()); var record = await _ghrh_InterviewRecordServices.QuerySingle(x => x.Round == order.Round && x.OrderId == order.Id && x.StaffId == GetStaffId());
record.WaitInterviewStatus = "Cancel"; record.Status = DIC_INTERVIEW_ORDER_STATUS.Cancel;
record.CancelReason = input.CancelReason; record.CancelReason = input.CancelReason;
await _ghrh_InterviewRecordServices.Update(record, ["Status", "CancelReason", "UpdateTime"]);
order.Status = DIC_INTERVIEW_ORDER_STATUS.Cancel;
await _ghrh_InterviewOrderServices.Update(order, ["Status", "UpdateTime"]);
await LogRecord(order.Id, $"取消面试,取消原因:{record.CancelReason ?? ""}", id, null, "Cancel");
await LogRecord(order.Id, "取消面试!"); await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.Cancel);
return ServiceResult.OprateSuccess(); return ServiceResult.OprateSuccess();
} }

@ -130,7 +130,7 @@ public class Ghrh_YearHumanSettingsServices : BaseServices<Ghrh_YearHumanSetting
{ {
int month = x.field.Replace("M", null).Replace("_F", null).ObjToInt(); int month = x.field.Replace("M", null).Replace("_F", null).ObjToInt();
x.label = year + "-" + x.field.Replace("M", null).Replace("_F", null); x.label = year + "-" + (month < 10 ? "0" + month : month);
if (month == 12) if (month == 12)
year++; year++;
} }

@ -28624,7 +28624,7 @@
</member> </member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.InterviewFail"> <member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.InterviewFail">
<summary> <summary>
面试不合适 面试不通过
</summary> </summary>
</member> </member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.Talent_Pool"> <member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.Talent_Pool">
@ -28642,6 +28642,16 @@
黑名单 黑名单
</summary> </summary>
</member> </member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.HasChangeDate">
<summary>
已改期
</summary>
</member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.Cancel">
<summary>
取消
</summary>
</member>
<member name="F:Tiobon.Core.Model.AuthorityScopeEnum.NONE"> <member name="F:Tiobon.Core.Model.AuthorityScopeEnum.NONE">
<summary> <summary>
无任何权限 无任何权限
@ -29432,6 +29442,16 @@
人力需求单Id 人力需求单Id
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.FlowSignID">
<summary>
FlowSignID
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.WorkId">
<summary>
workId
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Attachments"> <member name="P:Tiobon.Core.Model.ViewModels.Extend.ResumeLogItem.Attachments">
<summary> <summary>
附件 附件

Loading…
Cancel
Save