From 61188d58733989baaa363a7b52c67f2cf1bbe658 Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Fri, 3 Jan 2025 17:44:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=9B=E8=81=98=E6=A8=A1=E5=9D=97=E5=A4=9A?= =?UTF-8?q?=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Tiobon.Web.pdm | 16 +- .../HttpContextUser/AspNetUser.cs | 9 + Tiobon.Core.Common/HttpContextUser/IUser.cs | 1 + Tiobon.Core.Services/BASE/BaseServices.cs | 22 +- Tiobon.Core.Services/CommonServices.cs | 10 +- .../Ghrh/Ghrh_ResumeServices.cs | 293 +++++++++++------- .../Ghrh/Ghrh_ResumeTemplateServices.cs | 8 +- .../Ghrs/Ghrs_LangKeyServices.cs | 4 +- 8 files changed, 229 insertions(+), 134 deletions(-) diff --git a/Model/Tiobon.Web.pdm b/Model/Tiobon.Web.pdm index 762e6f27..f06552e8 100644 --- a/Model/Tiobon.Web.pdm +++ b/Model/Tiobon.Web.pdm @@ -1,5 +1,5 @@ - + @@ -10350,7 +10350,7 @@ Shadow=0 1727335554 1727335611 -((-51600,11212), (-40800,12683)) +((-51600,11212), (-40800,12733)) ((-51600,11437),(-40800,11437)) 2 1 @@ -16591,10 +16591,10 @@ LABL 0 Arial Unicode MS,8,N IsView 1723167557 Administrator -1723168036 +1735897045 Administrator 是否查看试卷 -false +'false' bit @@ -24471,11 +24471,10 @@ LABL 0 Arial Unicode MS,8,N RequestData 1720666491 Administrator -1720666529 +1735896392 Administrator 请求内容 -nvarchar(5000) -5000 +nvarchar(max) 23C2A295-B36E-4B12-9CFE-0D1B5EEEF89A @@ -44372,9 +44371,10 @@ Ghra_staff_InsureBase CompanyId 1733497709 Administrator -1733497934 +1735806307 Administrator 公司ID +int 002686EB-7F37-4EE2-AE9D-BBE8CDA645A4 diff --git a/Tiobon.Core.Common/HttpContextUser/AspNetUser.cs b/Tiobon.Core.Common/HttpContextUser/AspNetUser.cs index 136cf653..395f1eb5 100644 --- a/Tiobon.Core.Common/HttpContextUser/AspNetUser.cs +++ b/Tiobon.Core.Common/HttpContextUser/AspNetUser.cs @@ -165,4 +165,13 @@ public class AspNetUser : IUser { return GetClaimValueByType("StaffId").FirstOrDefault().ObjToInt(); } + + public int? GetLangId() + { + var langId = _accessor.HttpContext?.Request?.Headers["Langid"].ObjToInt(); + if (langId.IsNullOrEmpty()) + return 1; + + return langId; + } } \ No newline at end of file diff --git a/Tiobon.Core.Common/HttpContextUser/IUser.cs b/Tiobon.Core.Common/HttpContextUser/IUser.cs index b706e3d0..600eaf26 100644 --- a/Tiobon.Core.Common/HttpContextUser/IUser.cs +++ b/Tiobon.Core.Common/HttpContextUser/IUser.cs @@ -22,4 +22,5 @@ public interface IUser List GetUserInfoFromToken(string ClaimType, string token); ServiceResult MessageModel { get; set; } + int? GetLangId(); } \ No newline at end of file diff --git a/Tiobon.Core.Services/BASE/BaseServices.cs b/Tiobon.Core.Services/BASE/BaseServices.cs index f43c12da..a28de508 100644 --- a/Tiobon.Core.Services/BASE/BaseServices.cs +++ b/Tiobon.Core.Services/BASE/BaseServices.cs @@ -21,6 +21,7 @@ public class BaseServices : IBaseServ public IBaseRepository BaseDal { get; set; } //通过在子类的构造函数中注入,这里是基类,不用构造函数 public ISqlSugarClient Db => BaseDal.Db; + public int? LangId => App.User.GetLangId(); /// /// 根据ID查询实体数据是否存在 @@ -2106,13 +2107,32 @@ ORDER BY SortNo ASC"; #endregion #region 获取多语 - public async Task QueryLangValue(string key, int langId, string defaultValue) + public async Task QueryLangValue(string key, int? langId, string defaultValue) { string sql = $"select [dbo].[FLangKeyToValue]('{key}',{langId},null)"; string value = await Db.Ado.GetStringAsync(sql); if (value.IsNullOrEmpty()) value = defaultValue; return value; } + public async Task QueryLangValue(string key, string defaultValue) + { + return await QueryLangValue(key, LangId, defaultValue); + } + public async Task QueryLangValue(string key, string defaultValue, object arg0) + { + var value = await QueryLangValue(key, LangId, defaultValue); + return string.Format(value, arg0); + } + public async Task QueryLangValue(string key, string defaultValue, object arg0, object arg1) + { + var value = await QueryLangValue(key, LangId, defaultValue); + return string.Format(value, arg0, arg1); + } + public async Task QueryLangValue(string key, string defaultValue, object arg0, object arg1, object arg2) + { + var value = await QueryLangValue(key, LangId, defaultValue); + return string.Format(value, arg0, arg1, arg2); + } #endregion #endregion diff --git a/Tiobon.Core.Services/CommonServices.cs b/Tiobon.Core.Services/CommonServices.cs index f49393c5..ad7e92ee 100644 --- a/Tiobon.Core.Services/CommonServices.cs +++ b/Tiobon.Core.Services/CommonServices.cs @@ -1845,11 +1845,11 @@ public partial class CommonServices : BaseServices>, ICommon List reorderedNumbers = new(); var sort = result.JM_TableColumnT1.TableColumn.Where(x => x.field == "M1").SingleOrDefault()?.SortNo ?? 5; - + var name1 = await QueryLangValue("F_ResumeMaintenance_0216", "预算编制数"); result.JM_TableColumnT1.TableColumn?.ForEach(x => { if (months.Where(o => o == x.label).Any()) - x.GroupName = "预算编制数"; + x.GroupName = name1; if (x.field == "Year") x.searchColumnDefaultValue = curentYear; @@ -4234,12 +4234,16 @@ public partial class CommonServices : BaseServices>, ICommon } #region 获取多语 - public async Task QueryLangValue(string key, int langId, string defaultValue) + public async Task QueryLangValue(string key, int? langId, string defaultValue) { string sql = $"select [dbo].[FLangKeyToValue]('{key}',{langId},null)"; string value = await Db.Ado.GetStringAsync(sql); if (value.IsNullOrEmpty()) value = defaultValue; return value; } + public async Task QueryLangValue(string key, string defaultValue) + { + return await QueryLangValue(key, App.User.GetLangId(), defaultValue); + } #endregion } diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs index 6401b3f9..0b56dfb1 100644 --- a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs +++ b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs @@ -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.OprateFailed("无法登录!"); + return ServiceResult.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.OprateFailed("请输入身份证号码后六位!"); + return ServiceResult.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("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>(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 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().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().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().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>(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().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().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.OprateFailed("无效的简历ID!"); + return ServiceResult.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.OprateFailed("无效的简历ID!"); + return ServiceResult.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().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.OprateFailed("无效的简历ID!"); + return ServiceResult.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); diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeTemplateServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeTemplateServices.cs index d447622d..8640a960 100644 --- a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeTemplateServices.cs +++ b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeTemplateServices.cs @@ -64,7 +64,7 @@ public class Ghrh_ResumeTemplateServices : BaseServices