【世华】【消息通知】通知消息推送企微

master
xiaochanghai 7 months ago
parent 7fd7584f30
commit a48ea71b42
  1. 5
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  2. 5
      Tiobon.Core.Model/View/Ghrh/Ghrh_Resume.Dto.View.cs
  3. 21
      Tiobon.Core.Services/BASE/BaseServices.cs
  4. 2
      Tiobon.Core.Services/Ghrh/Ghrh_InterviewOrderServices.cs
  5. 47
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
  6. 5
      Tiobon.Core/Tiobon.Core.Model.xml

@ -26252,6 +26252,11 @@
已报到转入人事资料类型,Fast,快速入职;Normal,正常入职 已报到转入人事资料类型,Fast,快速入职;Normal,正常入职
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_ResumeDto.InterviewStepName">
<summary>
面试环节
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBGDto"> <member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBGDto">
<summary> <summary>
教育背景(Dto.View1) 教育背景(Dto.View1)

@ -242,6 +242,9 @@ public class Ghrh_ResumeDto : Ghrh_Resume
/// </summary> /// </summary>
public string TransferStaffType { get; set; } public string TransferStaffType { get; set; }
/// <summary>
/// 面试环节
/// </summary>
public string InterviewStepName { get; set; }
} }

@ -2028,7 +2028,28 @@ ORDER BY SortNo ASC";
} }
await SendQYWechateMessage(staffIds, title, content);
} }
public async Task SendQYWechateMessage(List<int> staffIds, string title, string content, string webUrl = null)
{
string sql = @$"Declare @Json nvarchar(max) = ''
set @Json = (select '{title}' title,
'textcard' msgtype,
'<div class=\""gray\"">'+CONVERT(nvarchar(16),getdate(),121)+'</div>
<div class=\""normal\""> {content}</div>
<div class=\""highlight\""> </div>' [description] ,
'Re'+(select Top 1 ParameterValue from Ghrs_Parameter where ParameterNo='GHRURL')+'/appOauth.html?jumpPage='+'F_APP_message/msgGroupList' url,
'GHR' picurl,
'' htmlStr,
{string.Join(',', staffIds.Select(x => x))} toStaffIDs
for json path)
-- select @Json
exec [dbo].[PS_CreateWorkwxMsg] @Json,'Resume'";
await Db.Ado.ExecuteCommandAsync(sql);
}
#endregion #endregion
#endregion #endregion

@ -47,7 +47,7 @@ public class Ghrh_InterviewOrderServices : BaseServices<Ghrh_InterviewOrder, Ghr
data.ForEach(x => data.ForEach(x =>
{ {
var record = records.Where(o => x.Round == o.Round).FirstOrDefault(); var record = records.Where(o => x.Round == o.Round && o.OrderId == x.Id).FirstOrDefault();
if (record != null) if (record != null)
{ {

@ -269,6 +269,7 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
var entitys = await query var entitys = await query
.WhereIF(condition.IsNotEmptyOrNull(), condition) .WhereIF(condition.IsNotEmptyOrNull(), condition)
.Where(whereExpression.ToExpression()) .Where(whereExpression.ToExpression())
.OrderBy(it => new { UpdateTime = SqlFunc.Desc(it.UpdateTime), CreateTime = SqlFunc.Desc(it.CreateTime) })
.ToPageListAsync(filter.pageNum, filter.pageSize, total); .ToPageListAsync(filter.pageNum, filter.pageSize, total);
var result = new ServicePageResult<Ghrh_ResumeDto>(filter.pageNum, total, filter.pageSize, Mapper.Map(entitys).ToANew<List<Ghrh_ResumeDto>>()); var result = new ServicePageResult<Ghrh_ResumeDto>(filter.pageNum, total, filter.pageSize, Mapper.Map(entitys).ToANew<List<Ghrh_ResumeDto>>());
var list = result.result.DT_TableDataT1; var list = result.result.DT_TableDataT1;
@ -324,6 +325,7 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
x.InterviewResult = order.InterviewResult; x.InterviewResult = order.InterviewResult;
x.OptionalInterviewTime = order.OptionalInterviewTime; x.OptionalInterviewTime = order.OptionalInterviewTime;
x.InterviewTime = order.InterviewTime; x.InterviewTime = order.InterviewTime;
x.InterviewStepName = order.InterviewStepName;
if (x.Status != DIC_INTERVIEW_ORDER_STATUS.WaitRecommended) if (x.Status != DIC_INTERVIEW_ORDER_STATUS.WaitRecommended)
{ {
x.HireDeptName = order.HireDeptName; x.HireDeptName = order.HireDeptName;
@ -1652,12 +1654,19 @@ END";
for (int i = 0; i < form.Times.Count; i++) for (int i = 0; i < form.Times.Count; i++)
{ {
var time = form.Times[i];
if (time.IsNotEmptyOrNull())
{
var time1 = time.Split('~');
time = DateTimeHelper.ConvertToMiniuteString(time1[0]) + "~" + DateTimeHelper.ConvertToOnlyHourMinuteString(time1[1]);
}
if (i == 0) if (i == 0)
records.ForEach(record => record.PlanInterviewTime1 = form.Times[i]); records.ForEach(record => record.PlanInterviewTime1 = time);
else if (i == 1) else if (i == 1)
records.ForEach(record => record.PlanInterviewTime2 = form.Times[i]); records.ForEach(record => record.PlanInterviewTime2 = time);
else if (i == 2) else if (i == 2)
records.ForEach(record => record.PlanInterviewTime3 = form.Times[i]); records.ForEach(record => record.PlanInterviewTime3 = time);
} }
if (isChangeInterviewTime) if (isChangeInterviewTime)
order.WaitInterviewStatus = "HasChangeInterviewTime"; order.WaitInterviewStatus = "HasChangeInterviewTime";
@ -1716,13 +1725,20 @@ END";
record.InterviewAddress = body.InterviewAddress; record.InterviewAddress = body.InterviewAddress;
}); });
await _ghrh_InterviewRecordServices.Update(records, ["InterviewTime", "InterviewBeginTime", "InterviewEndTime", "Status"]); await _ghrh_InterviewRecordServices.Update(records, ["InterviewTime", "InterviewBeginTime", "InterviewEndTime", "Status", "UpdateTime", "UpdateBy"]);
await _ghrh_InterviewOrderServices.Update(order, ["InterviewStepName"]); await _ghrh_InterviewOrderServices.Update(order, ["InterviewStepName", "UpdateTime", "UpdateBy"]);
await LogRecord(order.Id, $"安排面试,面试时间:{body.Time}"); await LogRecord(order.Id, $"安排面试,面试时间:{body.Time}");
entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview;
await Update(entity, ["Status"]); await Update(entity, ["Status", "UpdateTime", "UpdateBy"]);
for (int i = 0; i < records.Count; i++)
{
await SendMessage([records[i].StaffId.Value], "面试提醒", $"您有个简历待面试,面试时间:{body.Time},请及时查看!", "/M_ESS_Recruit/F_ESS_Candidate");
}
} }
return ServiceResult.OprateSuccess(); return ServiceResult.OprateSuccess();
@ -2067,13 +2083,14 @@ END";
var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id);
if (order != null) if (order != null)
{ {
//var record = await _ghrh_InterviewRecordServices.QuerySingle(x => x.Round == order.Round && x.OrderId == order.Id); var record = await _ghrh_InterviewRecordServices.QuerySingle(x => x.Round == order.Round && x.OrderId == order.Id);
//if (record.ReceiverIds.IsNotEmptyOrNull()) //if (record.ReceiverIds.IsNotEmptyOrNull())
//{ //{
// var staffs = JsonHelper.JsonToObj<List<ResumeRecommendFormStaff>>(record.ReceiverIds); // var staffs = JsonHelper.JsonToObj<List<ResumeRecommendFormStaff>>(record.ReceiverIds);
// await SendMessage(staffs.Select(x => x.StaffId).ToList(), "简历提醒", "您有个简历【待面试】,请及时查看面试时间!");
//} //}
await SendMessage([record.StaffId.Value], "简历提醒", "您有个简历【待面试】,请及时查看面试时间!");
await LogRecord(order.Id, "发送待已发offer提醒!"); await LogRecord(order.Id, "发送待已发offer提醒!");
} }
@ -2107,7 +2124,6 @@ END";
order.Status = DIC_INTERVIEW_ORDER_STATUS.HasOffer; order.Status = DIC_INTERVIEW_ORDER_STATUS.HasOffer;
records.ForEach(record => record.Status = DIC_INTERVIEW_ORDER_STATUS.HasOffer); records.ForEach(record => record.Status = DIC_INTERVIEW_ORDER_STATUS.HasOffer);
await SyncToStaff(id); await SyncToStaff(id);
} }
else else
@ -2306,7 +2322,8 @@ END";
C.StaffId, C.StaffId,
C.CancelReason, C.CancelReason,
CONVERT CONVERT
(BIT, CASE B.[Round] WHEN C.[Round] THEN 'true' ELSE 'false' END) AS IsAllowAssess (BIT, CASE B.[Round] WHEN C.[Round] THEN 'true' ELSE 'false' END) AS IsAllowAssess,
ISNULL(A.UpdateTime, A.CreateTime) CreateTime1
FROM Ghrh_Resume A FROM Ghrh_Resume A
JOIN Ghrh_InterviewOrder B ON A.ID = B.ResumeId JOIN Ghrh_InterviewOrder B ON A.ID = B.ResumeId
JOIN Ghrh_InterviewRecord C JOIN Ghrh_InterviewRecord C
@ -2315,7 +2332,7 @@ FROM Ghrh_Resume A
WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status"; WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status";
if (string.IsNullOrWhiteSpace(filter.orderBy)) if (string.IsNullOrWhiteSpace(filter.orderBy))
filter.orderBy = "CreateTime ASC"; filter.orderBy = "CreateTime1 ASC";
sql += $" AND C.StaffId={staffId}"; sql += $" AND C.StaffId={staffId}";
@ -3200,12 +3217,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status";
public async Task UpdateResumeStatus(Ghrh_Resume entity, string Status) public async Task UpdateResumeStatus(Ghrh_Resume entity, string Status)
{ {
entity.Status = Status; entity.Status = Status;
await Update(entity, ["Status"]); await Update(entity, ["Status", "UpdateTime", "UpdateBy"]);
} }
public async Task UpdateInterviewOrderStatus(Ghrh_InterviewOrder order, string Status) public async Task UpdateInterviewOrderStatus(Ghrh_InterviewOrder order, string Status)
{ {
order.Status = Status; order.Status = Status;
await _ghrh_InterviewOrderServices.Update(order, ["Status"]); await _ghrh_InterviewOrderServices.Update(order, ["Status", "UpdateTime", "UpdateBy"]);
} }
/// <summary> /// <summary>
/// 修改面试记录状态 /// 修改面试记录状态
@ -3217,7 +3234,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status";
{ {
var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id); var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id);
records.ForEach(record => record.Status = Status); records.ForEach(record => record.Status = Status);
await _ghrh_InterviewRecordServices.Update(records, ["Status"]); await _ghrh_InterviewRecordServices.Update(records, ["Status", "UpdateTime", "CreateBy"]);
} }
/// <summary> /// <summary>
/// 同步数据进入认识资料 /// 同步数据进入认识资料
@ -3288,8 +3305,6 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status";
staff.IsEnable = 1; staff.IsEnable = 1;
#endregion #endregion
var applyOrder = await Db.Queryable<Ghrh_OfferApplyOrder>().Where(x => x.ResumeId == id).FirstAsync(); var applyOrder = await Db.Queryable<Ghrh_OfferApplyOrder>().Where(x => x.ResumeId == id).FirstAsync();
if (applyOrder != null) if (applyOrder != null)
{ {

@ -26252,6 +26252,11 @@
已报到转入人事资料类型,Fast,快速入职;Normal,正常入职 已报到转入人事资料类型,Fast,快速入职;Normal,正常入职
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_ResumeDto.InterviewStepName">
<summary>
面试环节
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBGDto"> <member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBGDto">
<summary> <summary>
教育背景(Dto.View1) 教育背景(Dto.View1)

Loading…
Cancel
Save