代码优化

master
xiaochanghai 7 months ago
parent 3af8320e88
commit bbf4267ba1
  1. 435
      Model/Tiobon.Web.pdm
  2. 2
      Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs
  3. 7
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  4. 6
      Tiobon.Core.Model/Consts.cs
  5. 2
      Tiobon.Core.Model/Models/Ghrh/Ghrh_InterviewOrder.cs
  6. 5
      Tiobon.Core.Model/View/Ghrh/Ghrh_Resume.Dto.View.cs
  7. 6
      Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs
  8. 73
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
  9. 7
      Tiobon.Core/Tiobon.Core.Model.xml

File diff suppressed because it is too large Load Diff

@ -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}')";
break;
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}')";
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}')";
break;
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}')";

@ -22464,7 +22464,12 @@
</member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.Fail">
<summary>
不合格
不合适
</summary>
</member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.InterviewFail">
<summary>
面试不合适
</summary>
</member>
<member name="F:Tiobon.Core.Model.AuthorityScopeEnum.NONE">

@ -327,9 +327,13 @@ public class Consts
/// </summary>
public const string End = "End";
/// <summary>
/// 不合
/// 不合
/// </summary>
public const string Fail = "Fail";
/// <summary>
/// 面试不合适
/// </summary>
public const string InterviewFail = "InterviewFail";
}
#endregion
}

@ -79,7 +79,7 @@ public class Ghrh_InterviewOrder : BasePoco
/// <summary>
/// 面试结果
/// </summary>
[Display(Name = "InterviewResult"), Description("面试结果"), MaxLength(256, ErrorMessage = "面试结果 不能超过 2000 个字符")]
[Display(Name = "InterviewResult"), Description("面试结果"), MaxLength(2000, ErrorMessage = "面试结果 不能超过 2000 个字符")]
public string InterviewResult { get; set; }
/// <summary>

@ -46,6 +46,7 @@ public class Ghrh_ResumeDto : Ghrh_Resume
public string UrgentRelationLabel { get; set; }
public List<string> TagList { get; set; }
public List<long> TagIds { get; set; }
public List<Ghrh_ResumeEduBGDto> EduBG { get; set; }
public List<Ghrh_ResumeWorkExpDto> WorkExp { get; set; }
@ -56,7 +57,11 @@ public class Ghrh_ResumeDto : Ghrh_Resume
public int? Round { get; set; }
public bool? IsPass { get; set; }
public string InterviewResult { get; set; }
public string IsPassLabel { get; set; }
public string OrderStatus { get; set; }
public int? StaffId { get; set; }

@ -69,7 +69,7 @@ public class ResumeRecommendForm
/// <summary>
/// 人力需求维护ID
/// </summary>
public long RequestId { get; set; }
public long? RequestId { get; set; }
/// <summary>
/// 简历ID列表
@ -163,6 +163,8 @@ public class ResumeScheduleInterviewResult
/// </summary>
public List<ResumeAttachment> Attachments { get; set; } = new();
public List<Ghra_Staff> Staffs { get; set; }
}
public class ResumeRecommendFormStaff
@ -170,7 +172,7 @@ public class ResumeRecommendFormStaff
/// <summary>
/// 员工ID
/// </summary>
public int StaffId { get; set; }
public int? StaffId { get; set; }
/// <summary>
/// 邮箱

@ -1,6 +1,4 @@
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Tiobon.Core.Model.Models;
using static Tiobon.Core.Model.Consts;
using static Tiobon.Core.Model.Consts;
namespace Tiobon.Core.Services;
@ -91,7 +89,7 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
break;
case "HasRecommend":
if (jsonParam.columnValue.ObjToInt() == 1)
whereExpression.And(x => x.Status == DIC_INTERVIEW_ORDER_STATUS.HasRecommended);
whereExpression.And(x => (x.Status == DIC_INTERVIEW_ORDER_STATUS.HasRecommended || x.Status == DIC_INTERVIEW_ORDER_STATUS.Fail));
break;
case "WaitAppointment":
if (jsonParam.columnValue.ObjToInt() == 1)
@ -103,7 +101,7 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
break;
case "HasInterview":
if (jsonParam.columnValue.ObjToInt() == 1)
whereExpression.And(x => x.Status == DIC_INTERVIEW_ORDER_STATUS.HasInterview);
whereExpression.And(x => (x.Status == DIC_INTERVIEW_ORDER_STATUS.HasInterview || x.Status == DIC_INTERVIEW_ORDER_STATUS.InterviewFail));
break;
case "WaitSendOffer":
if (jsonParam.columnValue.ObjToInt() == 1)
@ -228,6 +226,7 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
tagIds.AddRange(JsonHelper.JsonToObj<List<long>>(x.Tags));
});
var orders = await _ghrh_InterviewOrderServices.Query(x => x.ResumeId != null && ids.Contains(x.ResumeId.Value));
tagIds = tagIds.Distinct().ToList();
var tags = await _ghrh_ResumeTagServices.QueryDto(x => tagIds.Contains(x.Id));
list.ForEach(async x =>
@ -249,6 +248,7 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
if (x.Tags.IsNotEmptyOrNull())
{
var tagIds1 = JsonHelper.JsonToObj<List<long>>(x.Tags);
x.TagIds = tagIds1;
x.TagList = tags.Where(o => tagIds1.Contains(o.Id)).Select(o => o.TagName).ToList();
}
@ -263,6 +263,14 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
x.Age = age;
}
#endregion
var order = orders.Where(o => o.ResumeId == x.ResumeId).FirstOrDefault();
if (order != null)
{
x.IsPass = order.IsPass;
x.IsPassLabel = order.IsPass == true ? "通过" : "不通过";
x.InterviewResult = order.InterviewResult;
}
});
return result;
@ -959,6 +967,8 @@ END";
if (entity != null && entity.Status != DIC_INTERVIEW_ORDER_STATUS.WaitRecommended)
resume.Base.Status = entity.Status;
if (resume.Base.Status.IsNullOrEmpty())
resume.Base.Status = DIC_INTERVIEW_ORDER_STATUS.WaitRecommended;
if (resume.Base.PhotoUrls != null && resume.Base.PhotoUrls.Any())
resume.Base.PhotoUrl = resume.Base.PhotoUrls[0].RelativePath;
await base.Update(id, resume.Base);
@ -1260,6 +1270,16 @@ END";
public async Task<ServiceResult> Recommend(ResumeRecommendForm recommend)
{
if (recommend.RequestId.IsNullOrEmpty())
throw new Exception("请先选择用人申请单!");
if (recommend.InterviewStaffs.IsNullOrEmpty())
throw new Exception("请先选择面试者!");
recommend.InterviewStaffs = recommend.InterviewStaffs.Where(x => x.StaffId != null).ToList();
if (!recommend.InterviewStaffs.Any())
throw new Exception("请先选择面试者!");
for (int m = 0; m < recommend.ids.Count; m++)
{
var id = recommend.ids[m];
@ -1273,10 +1293,10 @@ END";
x.Status == DIC_INTERVIEW_ORDER_STATUS.HasInterview)))
continue;
//await Db.Updateable<Ghrh_InterviewOrder>()
// .SetColumns(it => it.IsEnable == 0)
// .Where(it => it.ResumeId == id)
// .ExecuteCommandAsync();
await Db.Updateable<Ghrh_InterviewOrder>()
.SetColumns(it => it.IsEnable == 0)
.Where(it => it.ResumeId == id)
.ExecuteCommandAsync();
var orderId = await _ghrh_InterviewOrderServices.Add(new InsertGhrh_InterviewOrderInput()
{
@ -1584,7 +1604,7 @@ END";
await Update(entity, ["Status"]);
if (input.InterviewStaffs.IsNotEmptyOrNull())
await SendMessage(input.InterviewStaffs.Select(x => x.StaffId).ToList(), "简历提醒", "您有个新的邀约面试,请及时查看!");
await SendMessage(input.InterviewStaffs.Select(x => x.StaffId.Value).ToList(), "简历提醒", "您有个新的邀约面试,请及时查看!");
}
@ -1611,7 +1631,7 @@ END";
});
if (input.InterviewStaffs.IsNotEmptyOrNull())
await SendMessage(input.InterviewStaffs.Select(x => x.StaffId).ToList(), "简历提醒", "您有个新的推荐简历,请及时查看!");
await SendMessage(input.InterviewStaffs.Select(x => x.StaffId.Value).ToList(), "简历提醒", "您有个新的推荐简历,请及时查看!");
}
}
return ServiceResult.OprateSuccess();
@ -1626,7 +1646,7 @@ END";
return ServiceResult.OprateFailed("无效的简历ID!");
var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id);
order.Status = DIC_INTERVIEW_ORDER_STATUS.HasInterview;
order.Status = DIC_INTERVIEW_ORDER_STATUS.InterviewFail;
order.IsPass = input.IsPass;
order.InterviewResult = input.Content;
await _ghrh_InterviewOrderServices.Update(order, ["Status", "IsPass", "InterviewResult"]);
@ -1635,10 +1655,10 @@ END";
record.InterviewResult = input.Content;
record.IsPass = input.IsPass;
record.AssessTime = DateTime.Now;
record.Status = DIC_INTERVIEW_ORDER_STATUS.HasInterview;
record.Status = DIC_INTERVIEW_ORDER_STATUS.InterviewFail;
await _ghrh_InterviewRecordServices.Update(record, ["AssessTime", "Status", "IsPass", "InterviewResult"]);
await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.HasInterview);
await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.InterviewFail);
await LogRecord(order.Id, $"填写了面试评估,轮数:{order.Round},是否通过:{(input.IsPass == true ? "" : "")},内容:{input.Content}!");
return ServiceResult.OprateSuccess();
@ -1811,6 +1831,9 @@ END";
if (entity == null)
return ServiceResult.OprateFailed("无效的简历ID!");
if (entity.Status != DIC_INTERVIEW_ORDER_STATUS.HasInterview)
return ServiceResult.OprateFailed("暂不可发起录用审批!");
await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.WaitSendOffer);
var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id);
@ -1969,7 +1992,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1";
break;
case "HasInterview":
if (jsonParam.columnValue.ObjToInt() == 1)
sql += $" AND C.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasInterview}'";
sql += $" AND (C.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasInterview}' OR C.Status = '{DIC_INTERVIEW_ORDER_STATUS.InterviewFail}')";
break;
case "WaitSendOffer":
if (jsonParam.columnValue.ObjToInt() == 1)
@ -1983,6 +2006,10 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1";
if (jsonParam.columnValue.ObjToInt() == 1)
sql += $" AND C.Status = '{DIC_INTERVIEW_ORDER_STATUS.HasOffer}'";
break;
case "Fail":
if (jsonParam.columnValue.ObjToInt() == 1)
sql += $" AND C.Status = '{DIC_INTERVIEW_ORDER_STATUS.Fail}'";
break;
case "SalaryPeriod":
case "Education":
@ -2132,6 +2159,8 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1";
x.Age = age;
}
#endregion
if (x.IsPass != null)
x.IsPassLabel = x.IsPass == true ? "通过" : "不通过";
});
return new ServicePageResult<Ghrh_ResumeDto>(filter.pageNum, totalCount, filter.pageSize, list);
@ -2145,7 +2174,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1";
var result = new ResumeScheduleInterviewResult();
var entity = base.QueryById(id);
var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id);
var record = await _ghrh_InterviewRecordServices.QuerySingle(x => x.Round == order.Round && x.OrderId == order.Id);
var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id);
var request = await _ghrh_HumanRequestServices.QueryById(order.RequestId);
result.RequestId = order.RequestId;
@ -2156,6 +2185,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1";
result.InterviewCount = request.InterviewCount;
result.OfferCount = request.OfferCount;
result.Times = new List<string>();
result.Staffs = new();
if (records != null && records.Any())
{
var record = records.Where(x => x.PlanInterviewTime1 != null).FirstOrDefault();
if (record != null)
{
if (record.PlanInterviewTime1.IsNotEmptyOrNull())
result.Times.Add(record.PlanInterviewTime1);
@ -2164,8 +2199,10 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1";
if (record.PlanInterviewTime3.IsNotEmptyOrNull())
result.Times.Add(record.PlanInterviewTime3);
}
var staffIds = records.Where(x => x.StaffId != null).Select(x => x.StaffId.Value).ToList();
result.Staffs = await Db.Queryable<Ghra_Staff>().Where(x => staffIds.Contains(x.StaffID)).ToListAsync();
}
return ServiceResult<ResumeScheduleInterviewResult>.OprateSuccess("查询成功", result);
}

@ -22464,7 +22464,12 @@
</member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.Fail">
<summary>
不合格
不合适
</summary>
</member>
<member name="F:Tiobon.Core.Model.Consts.DIC_INTERVIEW_ORDER_STATUS.InterviewFail">
<summary>
面试不合适
</summary>
</member>
<member name="F:Tiobon.Core.Model.AuthorityScopeEnum.NONE">

Loading…
Cancel
Save