@ -1,12 +1,9 @@
using Microsoft.AspNetCore.Hosting ;
using Microsoft.AspNetCore.Mvc ;
using Microsoft.Extensions.Hosting ;
using NPOI.SS.Formula.Functions ;
using System.IO.Compression ;
using WkHtmlToPdfDotNet ;
using WkHtmlToPdfDotNet.Contracts ;
using static NPOI . POIFS . Crypt . CryptoFunctions ;
using static System . Runtime . InteropServices . JavaScript . JSType ;
using static Tiobon . Core . Model . Consts ;
namespace Tiobon.Core.Services ;
@ -783,7 +780,7 @@ ORDER BY A.SortNo ASC";
var resume = await QuerySingle ( x = > x . Mobile = = input . Mobile ) ;
if ( resume ! = null & & resume . Status = = DIC_INTERVIEW_ORDER_STATUS . Blacklist )
return ServiceResult < dynamic > . OprateFailed ( "无法登录!" ) ;
return ServiceResult < dynamic > . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0146" , "无法登录!" ) ) ;
if ( resume = = null )
id = await base . Add ( new InsertGhrh_ResumeInput ( )
@ -795,7 +792,7 @@ ORDER BY A.SortNo ASC";
else
{
if ( resume . IdCardNo . IsNotEmptyOrNull ( ) & & input . IdCardNo . IsNullOrEmpty ( ) )
return ServiceResult < dynamic > . OprateFailed ( "请输入身份证号码后六位!" ) ;
return ServiceResult < dynamic > . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0147" , "请输入身份证号码后六位!" ) ) ;
if ( resume . IdCardNo . IsNotEmptyOrNull ( ) & & input . IdCardNo . IsNotEmptyOrNull ( ) )
resume = await QuerySingle ( x = > x . Mobile = = input . Mobile & & x . IdCardNo . Contains ( input . IdCardNo ) ) ;
@ -1272,8 +1269,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
if ( resume . Base . IdCardNo . IsNotEmptyOrNull ( ) )
if ( await base . AnyAsync ( x = > x . Id ! = id & & x . IdCardNo = = resume . Base . IdCardNo ) )
return ServiceResult . OprateFailed ( $"证件号码【{resume.Base.IdCardNo}】已在系统中存在,请确认填写是否正确" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0148" , "证件号码【{0}】已在系统中存在,请确认填写是否正确!" , resume . Base . IdCardNo ) ) ;
resume . Base . ApplicationStatus = status ;
resume . Base . ApplicationTime = DateTime . Now ;
@ -1384,8 +1380,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
{
dynamic Data = new ExpandoObject ( ) ;
var entity = await QueryById ( id ) ;
if ( entity is null ) throw new Exception ( "无效的ID!" ) ;
if ( entity is null ) throw new Exception ( await QueryLangValue ( "F_ResumeMaintenance_0149" , langId , "无效的ID!" ) ) ;
decimal completionDegree = 0 ;
var groups = await Db . Ado . SqlQueryAsync < ResumeFormColumn > ( "select GroupName tabName, GroupType type from Ghrh_ResumeInfoGroup where IsEnable=1 and GroupType !='Photo' and GroupType !='Attachment'" ) ;
@ -1629,15 +1624,15 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
if ( recommend . RequestId . IsNullOrEmpty ( ) )
{
if ( recommend . DeptId . IsNullOrEmpty ( ) | | recommend . TitleId . IsNullOrEmpty ( ) )
return ServiceResult . OprateFailed ( "请先选择部门或岗位!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0150" , "请先选择部门或岗位!" ) ) ;
}
if ( recommend . InterviewStaffs . IsNullOrEmpty ( ) )
return ServiceResult . OprateFailed ( "请先选择面试者!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0151" , "请先选择面试者!" ) ) ;
recommend . InterviewStaffs = recommend . InterviewStaffs . Where ( x = > x . StaffId ! = null ) . ToList ( ) ;
if ( ! recommend . InterviewStaffs . Any ( ) )
return ServiceResult . OprateFailed ( "至少选择一名面试者!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0152" , "至少选择一名面试者!" ) ) ;
recommend . InterviewStaffs = recommend . InterviewStaffs . Where ( x = > x . StaffId ! = null ) . Distinct ( ) . ToList ( ) ;
@ -1707,14 +1702,15 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
Email = recommend . InterviewStaffs [ i ] . Email ,
IsPrimary = i = = 0 ? true : false ,
} ) ;
await SendMessage ( recommend . InterviewStaffs . Select ( x = > x . StaffId . Value ) . ToList ( ) , "简历提醒" , "您有个简历推荐,请及时查看!" , "/M_ESS_Recruit/F_ESS_Candidate" ) ;
await SendMessage ( recommend . InterviewStaffs . Select ( x = > x . StaffId . Value ) . ToList ( ) , await QueryLangValue ( "F_ResumeMaintenance_0153" , "简历提醒" ) , await QueryLangValue ( "F_ResumeMaintenance_0154" , "您有个简历推荐,请及时查看!" ) , "/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 ) ;
string content = await QueryLangValue ( "F_ResumeMaintenance_0155" , "向【{0}】推荐了简历,推荐理由:{1}" , string . Join ( "、" , interviewer . Select ( o = > o . StaffName ) ) , recommend . RecommendRemark ? ? "无" ) ;
await LogRecord ( orderId , content , id , null , "Recommended" , true ) ;
# endregion
#region 处理附件
@ -1745,10 +1741,10 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
var id = ids [ 0 ] ;
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
if ( entity . Status ! = DIC_INTERVIEW_ORDER_STATUS . HasRecommended )
return ServiceResult . OprateFailed ( "非【已推荐】状态下简历不可发送提醒!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0156" , "非【已推荐】状态下简历不可发送提醒!" ) ) ;
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
if ( order ! = null )
@ -1762,10 +1758,11 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
for ( int i = 0 ; i < records . Count ; i + + )
{
if ( records [ i ] . FirstViewTime . IsNullOrEmpty ( ) )
await SendMessage ( [ records [ i ] . StaffId . Value ] , "简历提醒" , "您有个简历推荐,请及时查看!" , "/M_ESS_Recruit/F_ESS_Candidate" ) ;
await SendMessage ( [ records [ i ] . StaffId . Value ] , await QueryLangValue ( "F_ResumeMaintenance_0153" , "简历提醒" ) , await QueryLangValue ( "F_ResumeMaintenance_0154" , "您有个简历推荐,请及时查看!" ) , "/M_ESS_Recruit/F_ESS_Candidate" ) ;
}
#region 日志
await LogRecord ( order . Id , $"向【{string.Join(" , ", interviewer.Select(o => o.StaffName))}】发送简历推荐提醒!" , id , null , "RemindHasRecommend" ) ;
string content = await QueryLangValue ( "F_ResumeMaintenance_0157" , "向【{0}】发送简历推荐提醒!" , string . Join ( "、" , interviewer . Select ( o = > o . StaffName ) ) ) ;
await LogRecord ( order . Id , content , id , null , "RemindHasRecommend" ) ;
# endregion
}
}
@ -1779,15 +1776,16 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
{
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
//if (entity.Status != DIC_INTERVIEW_ORDER_STATUS.HasRecommended)
// return ServiceResult.OprateFailed("【已推荐】状态下才能约面!");
string content = await QueryLangValue ( "F_ResumeMaintenance_0158" , "传入时间【{0}】无效,请检查格式!" ) ;
form . Times . ForEach ( x = >
{
if ( x . IndexOf ( "~" ) < 0 )
throw new Exception ( $"传入时间【{x}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , x ) ) ;
var array = x . Split ( '~' ) ;
try
{
@ -1796,7 +1794,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
}
catch ( Exception )
{
throw new Exception ( $"传入时间【{x}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , x ) ) ;
}
} ) ;
@ -1846,10 +1844,17 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
#region 日志
if ( ! isChangeInterviewTime )
await LogRecord ( order . Id , $"预约面试,面试时间:{string.Join(" 、 ", form.Times)},约面反馈:{order.AppointmentFeedback ?? " 无 "}" , id , null , "SubscribeInterview" ) ;
{
string content1 = await QueryLangValue ( "F_ResumeMaintenance_0159" , "预约面试,面试时间:{0},约面反馈:{1}" , string . Join ( "、" , form . Times ) , order . AppointmentFeedback ? ? "无" ) ;
await LogRecord ( order . Id , content1 , id , null , "SubscribeInterview" ) ;
}
else
await LogRecord ( order . Id , $"修改面试时间,面试时间:{string.Join(" 、 ", form.Times)},备注:{(form.Remark ?? " 无 ")}" , id , null , "ChangeInterviewDate" ) ;
{
string content1 = await QueryLangValue ( "F_ResumeMaintenance_0160" , "修改面试时间,面试时间:{0},备注:{1}" , string . Join ( "、" , form . Times ) , form . Remark ? ? "无" ) ;
await LogRecord ( order . Id , content1 , id , null , "ChangeInterviewDate" ) ;
}
# endregion
if ( ! isChangeInterviewTime )
@ -1867,13 +1872,14 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
{
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
//if (entity.Status != DIC_INTERVIEW_ORDER_STATUS.WaitAppointment)
// return ServiceResult.OprateFailed("【待预约】状态下才能安排面试!");
string content = await QueryLangValue ( "F_ResumeMaintenance_0158" , "传入时间【{0}】无效,请检查格式!" ) ;
if ( body . Time . IndexOf ( "~" ) < 0 )
throw new Exception ( $"传入时间【{body.Time}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , body . Time ) ) ;
var array = body . Time . Split ( '~' ) ;
try
{
@ -1882,7 +1888,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
}
catch ( Exception )
{
throw new Exception ( $"传入时间【{body.Time}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , body . Time ) ) ;
}
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
if ( order ! = null )
@ -1905,14 +1911,16 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
await _ ghrh_InterviewRecordServices . Update ( records , [ "InterviewTime" , "InterviewBeginTime" , "InterviewEndTime" , "Status" , "InterviewStepName" , "RemarkSz" , "InterviewAddress" , "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 ) ;
string content1 = await QueryLangValue ( "F_ResumeMaintenance_0161" , "安排面试,面试时间:{0},面试地点:{1},面试备注:{2}" , body . Time , body . InterviewAddress , body . Remark ? ? "无" ) ;
await LogRecord ( order . Id , content1 , id , records [ 0 ] . Id , "ScheduleInterview" , true ) ;
entity . Status = DIC_INTERVIEW_ORDER_STATUS . WaitInterview ;
await Update ( entity , [ "Status" , "UpdateTime" , "UpdateBy" ] ) ;
content1 = await QueryLangValue ( "F_ResumeMaintenance_0163" , "您有个简历待面试,面试时间:{0},请及时查看!" , body . Time ) ;
for ( int i = 0 ; i < records . Count ; i + + )
{
await SendMessage ( [ records [ i ] . StaffId . Value ] , "面试提醒" , $"您有个简历待面试,面试时间:{body.Time},请及时查看!" , "/M_ESS_Recruit/F_ESS_Interview" ) ;
await SendMessage ( [ records [ i ] . StaffId . Value ] , await QueryLangValue ( "F_ResumeMaintenance_0162" , "面试提醒" ) , content1 , "/M_ESS_Recruit/F_ESS_Interview" ) ;
}
#region 处理附件
@ -1940,15 +1948,16 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
{
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
if ( entity . Status ! = DIC_INTERVIEW_ORDER_STATUS . HasRecommended )
return ServiceResult . OprateFailed ( "【已推荐】状态下才能约面!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0164" , "【已推荐】状态下才能约面!" ) ) ;
string content = await QueryLangValue ( "F_ResumeMaintenance_0158" , "传入时间【{0}】无效,请检查格式!" ) ;
form . Times . ForEach ( x = >
{
if ( x . IndexOf ( "~" ) < 0 )
throw new Exception ( $"传入时间【{x}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , x ) ) ;
var array = x . Split ( '~' ) ;
try
{
@ -1957,7 +1966,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
}
catch ( Exception )
{
throw new Exception ( $"传入时间【{x}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , x ) ) ;
}
} ) ;
@ -2004,7 +2013,8 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
await _ ghrh_InterviewRecordServices . Update ( records [ 0 ] , [ "PlanInterviewTime1" , "PlanInterviewTime2" , "PlanInterviewTime3" , "Status" ] ) ;
await LogRecord ( order . Id , $"修改面试时间,面试时间:{string.Join(" 、 ", form.Times)},备注:{(form.Remark ?? " 无 ")}" ) ;
string content1 = await QueryLangValue ( "F_ResumeMaintenance_0165" , "修改面试时间,面试时间:{0},备注:{1}" , string . Join ( "、" , form . Times ) , form . Remark ? ? "无" ) ;
await LogRecord ( order . Id , content1 ) ;
await UpdateResumeStatus ( entity , DIC_INTERVIEW_ORDER_STATUS . HasChangeDate ) ;
}
@ -2018,13 +2028,18 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
{
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
if ( entity . Status ! = DIC_INTERVIEW_ORDER_STATUS . WaitInterview )
return ServiceResult . OprateFailed ( "【待面试】状态下才能变更面试时间!" ) ;
{
string content1 = await QueryLangValue ( "F_ResumeMaintenance_0166" , "【待面试】状态下才能变更面试时间!" ) ;
return ServiceResult . OprateFailed ( "" ) ;
}
string content = await QueryLangValue ( "F_ResumeMaintenance_0158" , "传入时间【{0}】无效,请检查格式!" ) ;
if ( time . IndexOf ( "~" ) < 0 )
throw new Exception ( $"传入时间【{time}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , time ) ) ;
var array = time . Split ( '~' ) ;
try
{
@ -2033,7 +2048,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
}
catch ( Exception )
{
throw new Exception ( $"传入时间【{time}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , time ) ) ;
}
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
if ( order ! = null )
@ -2055,9 +2070,10 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
//if (record.ReceiverIds.IsNotEmptyOrNull())
//{
// var staffs = JsonHelper.JsonToObj<List<ResumeRecommendFormStaff>>(record.ReceiverIds);
// await SendMessage(staffs.Select(x => x.StaffId).ToList(), "简历提醒", "您有个简历【待面试】,请及时查看面试时间!");
// await SendMessage(staffs.Select(x => x.StaffId).ToList(), await QueryLangValue("F_ResumeMaintenance_0153", "简历提醒") , "您有个简历【待面试】,请及时查看面试时间!");
//}
await LogRecord ( order . Id , $"变更面试时间,面试时间:{time}" ) ;
string content1 = await QueryLangValue ( "F_ResumeMaintenance_0167" , "变更面试时间,面试时间:{0}" , time ) ;
await LogRecord ( order . Id , content1 ) ;
entity . Status = DIC_INTERVIEW_ORDER_STATUS . WaitInterview ;
await Update ( entity , [ "Status" ] ) ;
@ -2075,22 +2091,28 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
var id = ids [ m ] ;
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
if ( entity . Status ! = DIC_INTERVIEW_ORDER_STATUS . WaitInterview )
return ServiceResult . OprateFailed ( "非【待面试】状态下简历不可发送提醒!" ) ;
{
string content1 = await QueryLangValue ( "F_ResumeMaintenance_0168" , "非【待面试】状态下简历不可发送提醒!" ) ;
return ServiceResult . OprateFailed ( content1 ) ;
}
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 ) ;
string content1 = await QueryLangValue ( "F_ResumeMaintenance_0169" , "您有个简历【待面试】,请及时查看面试时间!" ) ;
for ( int i = 0 ; i < records . Count ; i + + )
{
if ( records [ i ] . FirstViewTime . IsNotEmptyOrNull ( ) )
await SendMessage ( [ records [ i ] . StaffId . Value ] , "简历提醒" , "您有个简历【待面试】,请及时查看面试时间!" , "/M_ESS_Recruit/F_ESS_Interview" ) ;
await SendMessage ( [ records [ i ] . StaffId . Value ] , await QueryLangValue ( "F_ResumeMaintenance_0153" , "简历提醒" ) , content1 , "/M_ESS_Recruit/F_ESS_Interview" ) ;
}
await LogRecord ( order . Id , $"发送待面试提醒" , id , null , "RemindWaitInterview" ) ;
content1 = await QueryLangValue ( "F_ResumeMaintenance_0170" , "发送待面试提醒" ) ;
await LogRecord ( order . Id , $"" , id , null , "RemindWaitInterview" ) ;
}
}
@ -2102,22 +2124,23 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
public async Task < ServiceResult > RescheduleInterview ( long id , ResumeRescheduleInterviewForm input , string type )
{
if ( input . InterviewStaffs is null )
return ServiceResult . OprateFailed ( "面试不能为空!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0152" , "至少选择一名面试者!" ) ) ;
input . InterviewStaffs = input . InterviewStaffs . Where ( x = > x . StaffId ! = null ) . Distinct ( ) . ToList ( ) ;
if ( ! input . InterviewStaffs . Any ( ) )
return ServiceResult . OprateFailed ( "至少选择一名面试者!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0152" , "至少选择一名面试者!" ) ) ;
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
if ( type = = "Reschedule" )
{
//if (entity.Status != DIC_INTERVIEW_ORDER_STATUS.WaitInterview)
// return ServiceResult.OprateFailed("【待】状态下才能安排面试!");
string content = await QueryLangValue ( "F_ResumeMaintenance_0158" , "传入时间【{0}】无效,请检查格式!" ) ;
if ( input . Time . IndexOf ( "~" ) < 0 )
throw new Exception ( $"传入时间【{input.Time}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , input . Time ) ) ;
var array = input . Time . Split ( '~' ) ;
try
{
@ -2128,7 +2151,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
}
catch ( Exception )
{
throw new Exception ( $"传入时间【{input.Time}】无效,请检查格式!" ) ;
throw new Exception ( string . Format ( content , input . Time ) ) ;
}
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
@ -2143,7 +2166,8 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
records [ j ] . Status = DIC_INTERVIEW_ORDER_STATUS . HasInterview ;
var staff = await Db . Queryable < Ghra_Staff > ( ) . Where ( x = > x . StaffID = = records [ j ] . StaffId ) . FirstAsync ( ) ;
await LogRecord ( order . Id , $"因发起一个新面试,【{staff?.StaffName}({staff?.StaffNo})】未及时提交评估,自动转入【已面试】!" , id , records [ j ] . Id , "TransferWaitSendOffer" ) ;
content = await QueryLangValue ( "F_ResumeMaintenance_0171" , "因发起一个新面试,【{0}】未及时提交评估,自动转入【已面试】!" , $"{staff?.StaffName}({staff?.StaffNo})" ) ;
await LogRecord ( order . Id , content , id , records [ j ] . Id , "TransferWaitSendOffer" ) ;
}
await _ ghrh_InterviewRecordServices . Update ( records , [ "Status" , "UpdateTime" , "UpdateBy" ] ) ;
}
@ -2194,13 +2218,14 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
} ) ;
}
await LogRecord ( orderId , $"向【{string.Join(" 、 ", interviewer.Select(o => o.StaffName + $" ( { o . StaffNo } ) "))}】发起一个新的面试,面试时间:{input.Time}" , id , null , "ReRecommended" ) ;
content = await QueryLangValue ( "F_ResumeMaintenance_0172" , "向【{0}】发起一个新的面试,面试时间:{0}" , string . Join ( "、" , interviewer . Select ( o = > o . StaffName + $"({o.StaffNo})" ) ) , input . Time ) ;
await LogRecord ( orderId , content , id , null , "ReRecommended" ) ;
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" ) ;
await SendMessage ( input . InterviewStaffs . Select ( x = > x . StaffId . Value ) . ToList ( ) , await QueryLangValue ( "F_ResumeMaintenance_0153" , "简历提醒" ) , await QueryLangValue ( "F_ResumeMaintenance_0173" , "您有个新的邀约面试,请及时查看!" ) , "/M_ESS_Recruit/F_ESS_Interview" ) ;
}
else
{
@ -2217,7 +2242,8 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
records [ j ] . Status = DIC_INTERVIEW_ORDER_STATUS . HasInterview ;
var staff = await Db . Queryable < Ghra_Staff > ( ) . Where ( x = > x . StaffID = = records [ j ] . StaffId ) . FirstAsync ( ) ;
await LogRecord ( order . Id , $"因发起一个新一轮面试,【{staff?.StaffName}({staff?.StaffNo})】未及时提交评估,自动转入【已面试】!" , id , records [ j ] . Id , "TransferWaitSendOffer" ) ;
var content = await QueryLangValue ( "F_ResumeMaintenance_0171" , "因发起一个新一轮面试,【{staff?.StaffName}({staff?.StaffNo})】未及时提交评估,自动转入【已面试】!" , $"{staff?.StaffName}({staff?.StaffNo})" ) ;
await LogRecord ( order . Id , content , id , records [ j ] . Id , "TransferWaitSendOffer" ) ;
}
await _ ghrh_InterviewRecordServices . Update ( records , [ "Status" , "UpdateTime" , "UpdateBy" ] ) ;
}
@ -2243,10 +2269,11 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
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 + $" ( { o . StaffNo } ) "))}】发起一个新一轮面试,面试时间:{input.Time}" , id , null , "ReScheduleInterview" ) ;
var content1 = await QueryLangValue ( "F_ResumeMaintenance_0174" , "向【{0}】发起一个新一轮面试,面试时间:{1}" , string . Join ( "、" , interviewer . Select ( o = > o . StaffName + $"({o.StaffNo})" ) ) , input . Time ) ;
await LogRecord ( order . Id , content1 , id , null , "ReScheduleInterview" ) ;
if ( input . InterviewStaffs . IsNotEmptyOrNull ( ) )
await SendMessage ( input . InterviewStaffs . Select ( x = > x . StaffId . Value ) . ToList ( ) , "简历提醒" , "您有个新的推荐简历,请及时查看!" , "/M_ESS_Recruit/F_ESS_Candidate" ) ;
await SendMessage ( input . InterviewStaffs . Select ( x = > x . StaffId . Value ) . ToList ( ) , await QueryLangValue ( "F_ResumeMaintenance_0153" , "简历提醒" ) , await QueryLangValue ( "F_ResumeMaintenance_0175" , "您有个新的推荐简历,请及时查看!" ) , "/M_ESS_Recruit/F_ESS_Candidate" ) ;
}
}
return ServiceResult . OprateSuccess ( ) ;
@ -2258,7 +2285,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
{
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历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 ) ;
@ -2272,7 +2299,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
await _ ghrh_InterviewRecordServices . Add ( insertRecord ) ;
}
await LogRecord ( order . Id , "变更状态为:变更面试官!" ) ;
await LogRecord ( order . Id , await QueryLangValue ( "F_ResumeMaintenance_0176" , "变更面试官!" ) ) ;
return ServiceResult . OprateSuccess ( ) ;
}
# endregion
@ -2282,13 +2309,13 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
{
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
var content = ( await _ ghrh_TemplateServices . Preview ( id , templateId , extFields ) ) . Data ;
var offerFileUrl = await GenerateOffer ( entity , content ) ;
await UpdateResumeStatus ( entity , DIC_INTERVIEW_ORDER_STATUS . HasSendOffer ) ;
var content1 = await QueryLangValue ( "F_ResumeMaintenance_0177" , "变更状态为:已发offer!" ) ;
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
if ( order ! = null )
{
@ -2305,7 +2332,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
Reverse1 = offerFileUrl ,
UserId = App . User . ID ,
UserName = App . User . Name ,
RemarkSz = $"变更状态为:已发offer!" ,
RemarkSz = content1
} ) ;
}
else
@ -2319,7 +2346,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
Reverse1 = offerFileUrl ,
UserId = App . User . ID ,
UserName = App . User . Name ,
RemarkSz = $"变更状态为:已发offer!" ,
RemarkSz = content1
} ) ;
return ServiceResult . OprateSuccess ( ) ;
}
@ -2328,10 +2355,10 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
{
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
if ( entity . Email . IsNullOrEmpty ( ) )
return ServiceResult . OprateFailed ( "简历中尚未设置邮箱,暂不可发送!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0178" , "简历中尚未设置邮箱,暂不可发送!" ) ) ;
await UpdateResumeStatus ( entity , DIC_INTERVIEW_ORDER_STATUS . HasSendOffer ) ;
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
@ -2361,7 +2388,8 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
#region 生成Offer PDf
entity . OfferFileUrl = await GenerateOffer ( entity , content ) ;
await Update ( entity , [ "OfferFileUrl" ] ) ;
var ontent1 = await QueryLangValue ( "F_ResumeMaintenance_0179" , "给【{0}】发送Offer!" ) ;
ontent1 = string . Format ( ontent1 , entity . StaffName ) ;
await _ ghrh_InterviewLogServices . Add ( new InsertGhrh_InterviewLogInput ( )
{
InterviewOrderId = order . Id ,
@ -2372,7 +2400,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
Reverse1 = entity . OfferFileUrl ,
UserId = App . User . ID ,
UserName = App . User . Name ,
RemarkSz = $"给【{entity.StaffName}】发送Offer!" ,
RemarkSz = ontent1 ,
} ) ;
# endregion
@ -2440,10 +2468,12 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
var id = ids [ i ] ;
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
if ( entity . Status ! = DIC_INTERVIEW_ORDER_STATUS . HasSendOffer )
return ServiceResult . OprateFailed ( "非【已发offer】状态下简历不可发送提醒!" ) ;
{
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0180" , "非【已发offer】状态下简历不可发送提醒!" ) ) ;
}
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
if ( order ! = null )
@ -2454,9 +2484,9 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
//{
// var staffs = JsonHelper.JsonToObj<List<ResumeRecommendFormStaff>>(record.ReceiverIds);
//}
await SendMessage ( [ record . StaffId . Value ] , "简历提醒" , "您有个简历【待面试】,请及时查看面试时间!" ) ;
await SendMessage ( [ record . StaffId . Value ] , await QueryLangValue ( "F_ResumeMaintenance_0153" , "简历提醒" ) , await QueryLangValue ( "F_ResumeMaintenance_0181" , "您有个简历【待面试】,请及时查看面试时间!" ) ) ;
await LogRecord ( order . Id , "发送待已发offer提醒!" ) ;
await LogRecord ( order . Id , await QueryLangValue ( "F_ResumeMaintenance_0182" , "发送待已发offer提醒!" ) ) ;
}
}
@ -2473,8 +2503,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
var id = ids [ i ] ;
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
//if (entity.Status != DIC_INTERVIEW_ORDER_STATUS.HasSendOffer)
// return ServiceResult.OprateFailed("非【已发offer】状态下简历不可发送提醒!");
@ -2501,7 +2530,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
await Update ( entity , [ "Status" ] ) ;
await _ ghrh_InterviewOrderServices . Update ( order , [ "Status" ] ) ;
//await _ghrh_InterviewRecordServices.Update(records, ["Status"]);
await LogRecord ( order . Id , isOffer = = true ? "标记为已报到!" : "标记为未报到!" , id , null , "CheckIn" ) ;
await LogRecord ( order . Id , isOffer = = true ? await QueryLangValue ( "F_ResumeMaintenance_0183" , "标记为已报到!" ) : await QueryLangValue ( "F_ResumeMaintenance_0184" , "标记为未报到!" ) , id , null , "CheckIn" ) ;
}
else
{
@ -2539,8 +2568,9 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
record . InterviewResult = "不合适" ;
record . FilterFeedback = input . Content ;
} ) ;
var content = await QueryLangValue ( "F_ResumeMaintenance_0185" , "变更状态为:不合适,不合适原因:{0}" , input . Content ? ? "无" ) ;
await _ ghrh_InterviewRecordServices . Update ( records , [ "Status" , "InterviewResult" , "FilterFeedback" , "UpdateTime" ] ) ;
await LogRecord ( order . Id , $"变更状态为:不合适,不合适原因:{input.Content ?? " 无 "}" , id , null , "Fail" ) ;
await LogRecord ( order . Id , content , id , null , "Fail" ) ;
}
return ServiceResult . OprateSuccess ( ) ;
}
@ -2551,8 +2581,7 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
{
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
@ -2565,7 +2594,8 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
order . Status = DIC_INTERVIEW_ORDER_STATUS . Cancel ;
await _ ghrh_InterviewOrderServices . Update ( order , [ "Status" , "UpdateTime" ] ) ;
await LogRecord ( order . Id , $"取消面试,取消原因:{record.CancelReason ?? " 无 "}" , id , null , "Cancel" ) ;
var content = await QueryLangValue ( "F_ResumeMaintenance_0186" , "取消面试,取消原因:{0}" , record . CancelReason ? ? "无" ) ;
await LogRecord ( order . Id , content , id , null , "Cancel" ) ;
await UpdateResumeStatus ( entity , DIC_INTERVIEW_ORDER_STATUS . Cancel ) ;
@ -2581,13 +2611,13 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
var id = ids [ i ] ;
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
//if (entity.Status != DIC_INTERVIEW_ORDER_STATUS.HasInterview || entity.Status != DIC_INTERVIEW_ORDER_STATUS.WaitRecommended)
// return ServiceResult.OprateFailed("只有在【已面试】、【待推荐】状态下,才能转入待发Offer!");
if ( await Db . Queryable < Ghrh_OfferApplyOrder > ( ) . AnyAsync ( x = > x . WorkState = = 0 & & x . ResumeId = = id ) )
return ServiceResult . OprateFailed ( "当前简历录用审批处于审批中,不可转入待发Offer!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0187" , "当前简历录用审批处于审批中,不可转入待发Offer!" ) ) ;
await UpdateResumeStatus ( entity , DIC_INTERVIEW_ORDER_STATUS . WaitSendOffer ) ;
@ -2620,11 +2650,11 @@ A.DataType, A.ColumnType, A.IsRequired, A.DataSourceType, A.DataSource, A.DataSo
records [ j ] . Status = DIC_INTERVIEW_ORDER_STATUS . HasInterview ;
var staff = await Db . Queryable < Ghra_Staff > ( ) . Where ( x = > x . StaffID = = records [ j ] . StaffId ) . FirstAsync ( ) ;
await LogRecord ( order . Id , $"因状态转入待发Offer,【{staff?.StaffName}({staff?.StaffNo})】未及时提交评估,自动转入【已面试】!" , id , records [ j ] . Id , "TransferWaitSendOffer" ) ;
await LogRecord ( order . Id , await QueryLangValue ( "F_ResumeMaintenance_0188" , "因状态转入待发Offer,【0】未及时提交评估,自动转入【已面试】!" , $"{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" ) ;
await LogRecord ( order . Id , await QueryLangValue ( "F_ResumeMaintenance_0189" , "转入待发Offer!" ) , id , null , "TransferWaitSendOffer" ) ;
}
}
@ -3230,13 +3260,13 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult < dynamic > . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult < dynamic > . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
var order = new Ghrh_InterviewOrder ( ) ;
if ( orderId is null )
{
order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
if ( order = = null )
return ServiceResult < dynamic > . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult < dynamic > . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
orderId = order . Id ;
}
@ -3552,11 +3582,11 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
status = 0 ;
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
if ( order = = null )
return ServiceResult . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
//【简历库-录用-已发offer】配置按钮
var config = await Db . Queryable < Ghrh_Config > ( ) . Where ( x = > x . ConfigCode = = "ESS_Recruit_Assess_Mode" ) . FirstAsync ( ) ;
@ -3614,7 +3644,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
if ( records [ j ] . Round = = order . Round & & assessConfigId . ObjToString ( ) = = "EvaluateContent" )
{
evaluateContent = assessContent ;
records [ j ] . InterviewResult = isPass = = records [ j ] . IsPass = = false ? "面试不通过" : "面试通过" ;
records [ j ] . InterviewResult = isPass = = records [ j ] . IsPass = = false ? await QueryLangValue ( "F_ResumeMaintenance_0190" , "面试不通过" ) : await QueryLangValue ( "F_ResumeMaintenance_0191" , "面试通过" ) ;
records [ j ] . InterviewResultRemark = evaluateContent ;
}
records [ j ] . AssessTime = DateTime . Now ;
@ -3639,7 +3669,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
if ( assessMode ! = "OR" & & source = = "ess" )
Status = DIC_INTERVIEW_ORDER_STATUS . WaitInterview ;
string InterviewResult = isPass = = false ? "面试不通过" : "面试通过" ;
string InterviewResult = isPass = = false ? await QueryLangValue ( "F_ResumeMaintenance_0190" , "面试不通过" ) : await QueryLangValue ( "F_ResumeMaintenance_0191" , "面试通过" ) ;
if ( entity . Status = = DIC_INTERVIEW_ORDER_STATUS . WaitInterview )
{
@ -3672,16 +3702,45 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
await UpdateResumeStatus ( entity , Status ) ;
if ( source = = "ess" )
await LogRecord ( order . Id , $"提交了面试评估,轮数:{order.Round},是否通过:{(isPass == true ? " 通 过 " : " 不 通 过 ")},内容:{evaluateContent}!" , id , null , "AssessInterview" ) ;
{
var content = await QueryLangValue ( "F_ResumeMaintenance_0194" ,
"提交了面试评估,轮数:{0},是否通过:{1},内容:{2}!" ,
order . Round ,
isPass = = true ? await QueryLangValue ( "F_ResumeMaintenance_0194" , "通过" ) : await QueryLangValue ( "F_ResumeMaintenance_0193" , "不通过" ) ,
evaluateContent ) ;
await LogRecord ( order . Id , content , id , null , "AssessInterview" ) ;
}
else
await LogRecord ( order . Id , $"【后台】提交了面试评估,轮数:{order.Round},是否通过:{(isPass == true ? " 通 过 " : " 不 通 过 ")},内容:{evaluateContent}!" , id , null , "AssessInterview" ) ;
{
var content = await QueryLangValue ( "F_ResumeMaintenance_0194" ,
"【后台】提交了面试评估,轮数:{0},是否通过:{1},内容:{2}!" ,
order . Round ,
isPass = = true ? await QueryLangValue ( "F_ResumeMaintenance_0195" , "通过" ) : await QueryLangValue ( "F_ResumeMaintenance_0193" , "不通过" ) ,
evaluateContent ) ;
await LogRecord ( order . Id , content , id , null , "AssessInterview" ) ;
}
}
else
{
if ( source = = "ess" )
await LogRecord ( order . Id , $"暂存了面试评估,轮数:{order.Round},是否通过:{(isPass == true ? " 通 过 " : " 不 通 过 ")},内容:{evaluateContent}!" , id , null , "TempAssessInterview" ) ;
{
var content = await QueryLangValue ( "F_ResumeMaintenance_0194" ,
"暂存了面试评估,轮数:{0},是否通过:{1},内容:{2}!" ,
order . Round ,
isPass = = true ? await QueryLangValue ( "F_ResumeMaintenance_0196" , "通过" ) : await QueryLangValue ( "F_ResumeMaintenance_0193" , "不通过" ) ,
evaluateContent ) ;
await LogRecord ( order . Id , content , id , null , "TempAssessInterview" ) ;
}
else
await LogRecord ( order . Id , $"【后台】暂存了面试评估,轮数:{order.Round},是否通过:{(isPass == true ? " 通 过 " : " 不 通 过 ")},内容:{evaluateContent}!" , id , null , "TempAssessInterview" ) ;
{
var content = await QueryLangValue ( "F_ResumeMaintenance_0194" ,
"【后台】暂存了面试评估,轮数:{0},是否通过:{1},内容:{2}!" ,
order . Round ,
isPass = = true ? await QueryLangValue ( "F_ResumeMaintenance_0197" , "通过" ) : await QueryLangValue ( "F_ResumeMaintenance_0193" , "不通过" ) ,
evaluateContent ) ;
await LogRecord ( order . Id , content , id , null , "TempAssessInterview" ) ;
}
}
return ServiceResult . OprateSuccess ( ) ;
@ -3991,7 +4050,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
{
var entity = await base . QueryById ( id ) ;
if ( entity = = null )
return ServiceResult < string > . OprateFailed ( "无效的简历ID!" ) ;
return ServiceResult < string > . OprateFailed ( await QueryLangValue ( "F_ResumeMaintenance_0149" , "无效的简历ID!" ) ) ;
var order = await _ ghrh_InterviewOrderServices . QuerySingle ( x = > x . ResumeId = = id ) ;
var content = ( await _ ghrh_TemplateServices . Preview ( id , templateId , extFields ) ) . Data ;
@ -4009,7 +4068,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Reverse1 = entity . OfferFileUrl ,
UserId = App . User . ID ,
UserName = App . User . Name ,
RemarkSz = $"下载Offer!" ,
RemarkSz = await QueryLangValue ( "F_ResumeMaintenance_0198" , "下载Offer!" ) ,
} ) ;
# endregion
@ -4241,6 +4300,8 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var Detail = new JObject { } ;
var item = new JObject { } ;
string peopleText = await QueryLangValue ( "F_ResumeMaintenance_0199" , "人" ) ;
if ( menuName = = "F_ESS_RecruitmentBoard" )
{
@ -4256,7 +4317,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Detail = new JObject
{
new JProperty ( "Count" , group . Where ( x = > x . Status = = "HasRecommended" ) . FirstOrDefault ( ) ? . Count ? ? 0 ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ESS_Candidate" ) ,
new JProperty ( "TabKey" , "HasRecommended" ) ,
} ;
@ -4270,7 +4331,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112701" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "待筛选" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0200" , "待筛选" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4280,7 +4341,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Detail = new JObject
{
new JProperty ( "Count" , group . Where ( x = > x . Status = = "WaitAppointment" ) . FirstOrDefault ( ) ? . Count ? ? 0 ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ESS_Candidate" ) ,
new JProperty ( "TabKey" , "WaitAppointment" ) ,
} ;
@ -4294,7 +4355,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112702" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "待预约" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0201" , "待预约" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4304,7 +4365,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Detail = new JObject
{
new JProperty ( "Count" , group . Where ( x = > x . Status = = "WaitInterview" ) . FirstOrDefault ( ) ? . Count ? ? 0 ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ESS_Candidate" ) ,
new JProperty ( "TabKey" , "WaitInterview" ) ,
} ;
@ -4318,7 +4379,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112703" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "待面试" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0202" , "待面试" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4329,7 +4390,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Detail = new JObject
{
new JProperty ( "Count" , sum ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ESS_Candidate" ) ,
new JProperty ( "TabKey" , "HasInterview" ) ,
} ;
@ -4343,7 +4404,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112704" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "已面试" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0203" , "已面试" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4358,7 +4419,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
} ) . ToListAsync ( ) ;
Detail = new JObject {
new JProperty ( "Count" , group1 . Where ( x = > x . Status = = "HasOffer" ) . FirstOrDefault ( ) ? . Count ? ? 0 ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ESS_Candidate" ) ,
new JProperty ( "TabKey" , "HasOffer" ) ,
} ;
@ -4372,7 +4433,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112705" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "已录用" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0204" , "已录用" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4391,7 +4452,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Detail = new JObject
{
new JProperty ( "Count" , group . Where ( x = > x . Status = = "HasRecommended" ) . FirstOrDefault ( ) ? . Count ? ? 0 ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ResumeMaintenance" ) ,
new JProperty ( "TabKey" , "HasRecommended" ) ,
} ;
@ -4405,7 +4466,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112701" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "已推荐" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0205" , "已推荐" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4415,7 +4476,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Detail = new JObject
{
new JProperty ( "Count" , group . Where ( x = > x . Status = = "WaitAppointment" ) . FirstOrDefault ( ) ? . Count ? ? 0 ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ResumeMaintenance" ) ,
new JProperty ( "TabKey" , "WaitAppointment" ) ,
} ;
@ -4429,7 +4490,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112702" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "待预约" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0206" , "待预约" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4439,7 +4500,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Detail = new JObject
{
new JProperty ( "Count" , group . Where ( x = > x . Status = = "WaitInterview" ) . FirstOrDefault ( ) ? . Count ? ? 0 ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ResumeMaintenance" ) ,
new JProperty ( "TabKey" , "WaitInterview" ) ,
} ;
@ -4453,7 +4514,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112703" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "待面试" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0202" , "待面试" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4464,7 +4525,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Detail = new JObject
{
new JProperty ( "Count" , sum ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ResumeMaintenance" ) ,
new JProperty ( "TabKey" , "HasInterview" ) ,
} ;
@ -4478,7 +4539,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112704" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "已面试" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0203" , "已面试" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4487,7 +4548,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
#region 已报到
Detail = new JObject {
new JProperty ( "Count" , group . Where ( x = > x . Status = = "HasOffer" ) . FirstOrDefault ( ) ? . Count ? ? 0 ) ,
new JProperty ( "Unit" , "人" ) ,
new JProperty ( "Unit" , peopleText ) ,
new JProperty ( "MenuName" , "F_ResumeMaintenance" ) ,
new JProperty ( "TabKey" , "HasOffer" ) ,
} ;
@ -4501,7 +4562,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112705" ) ,
new JProperty ( "CardType" , "RecruitmentCountCard" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "已报到" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0207" , "已报到" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4522,7 +4583,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112706" ) ,
new JProperty ( "CardType" , "RecruitStatisticsChart" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "招聘统计" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0208" , "招聘统计" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4542,7 +4603,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
new JProperty ( "Id" , "112707" ) ,
new JProperty ( "CardType" , "AverageTimeConsumption" ) ,
new JProperty ( "IsStatic" , "0" ) ,
new JProperty ( "Title" , "招聘平均耗费时长" ) ,
new JProperty ( "Title" , await QueryLangValue ( "F_ResumeMaintenance_0209" , "招聘平均耗费时长" ) ) ,
new JProperty ( "Detail" , Detail ) ,
} ;
columns . Add ( item ) ;
@ -4592,7 +4653,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
{
new JProperty ( "color" , "rgba(84, 112, 198, 1)" ) ,
new JProperty ( "data" , data1 ) ,
new JProperty ( "name" , "面试人数" ) ,
new JProperty ( "name" , await QueryLangValue ( "F_ResumeMaintenance_0210" , "面试人数" ) ) ,
} ;
series . Add ( item ) ;
@ -4600,7 +4661,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
{
new JProperty ( "color" , "rgba(145, 204, 117, 1)" ) ,
new JProperty ( "data" , data2 ) ,
new JProperty ( "name" , "录用人数" ) ,
new JProperty ( "name" , await QueryLangValue ( "F_ResumeMaintenance_0211" , "录用人数" ) ) ,
} ;
series . Add ( item ) ;
@ -4608,7 +4669,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
{
new JProperty ( "color" , "rgba(255, 147, 0, 1)" ) ,
new JProperty ( "data" , data3 ) ,
new JProperty ( "name" , "面试成功率" ) ,
new JProperty ( "name" , await QueryLangValue ( "F_ResumeMaintenance_0212" , "面试成功率" ) ) ,
} ;
series . Add ( item ) ;