staffIds, string title, string content, string webUrl = null)
+ {
+ string sql = @$"Declare @Json nvarchar(max) = ''
+ set @Json = (select '{title}' title,
+ 'textcard' msgtype,
+ ''+CONVERT(nvarchar(16),getdate(),121)+'
+ {content}
+
' [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
diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_InterviewOrderServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_InterviewOrderServices.cs
index 37878dd7..cfbaf216 100644
--- a/Tiobon.Core.Services/Ghrh/Ghrh_InterviewOrderServices.cs
+++ b/Tiobon.Core.Services/Ghrh/Ghrh_InterviewOrderServices.cs
@@ -47,7 +47,7 @@ public class Ghrh_InterviewOrderServices : BaseServices
{
- 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)
{
diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
index fc7cb3b3..97448b08 100644
--- a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
+++ b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
@@ -269,6 +269,7 @@ public class Ghrh_ResumeServices : BaseServices new { UpdateTime = SqlFunc.Desc(it.UpdateTime), CreateTime = SqlFunc.Desc(it.CreateTime) })
.ToPageListAsync(filter.pageNum, filter.pageSize, total);
var result = new ServicePageResult(filter.pageNum, total, filter.pageSize, Mapper.Map(entitys).ToANew>());
var list = result.result.DT_TableDataT1;
@@ -324,6 +325,7 @@ public class Ghrh_ResumeServices : BaseServices record.PlanInterviewTime1 = form.Times[i]);
+ records.ForEach(record => record.PlanInterviewTime1 = time);
else if (i == 1)
- records.ForEach(record => record.PlanInterviewTime2 = form.Times[i]);
+ records.ForEach(record => record.PlanInterviewTime2 = time);
else if (i == 2)
- records.ForEach(record => record.PlanInterviewTime3 = form.Times[i]);
+ records.ForEach(record => record.PlanInterviewTime3 = time);
}
if (isChangeInterviewTime)
order.WaitInterviewStatus = "HasChangeInterviewTime";
@@ -1716,13 +1725,20 @@ END";
record.InterviewAddress = body.InterviewAddress;
});
- await _ghrh_InterviewRecordServices.Update(records, ["InterviewTime", "InterviewBeginTime", "InterviewEndTime", "Status"]);
- await _ghrh_InterviewOrderServices.Update(order, ["InterviewStepName"]);
+ await _ghrh_InterviewRecordServices.Update(records, ["InterviewTime", "InterviewBeginTime", "InterviewEndTime", "Status", "UpdateTime", "UpdateBy"]);
+ await _ghrh_InterviewOrderServices.Update(order, ["InterviewStepName", "UpdateTime", "UpdateBy"]);
await LogRecord(order.Id, $"安排面试,面试时间:{body.Time}");
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();
@@ -2067,13 +2083,14 @@ END";
var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id);
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())
//{
// var staffs = JsonHelper.JsonToObj>(record.ReceiverIds);
- // await SendMessage(staffs.Select(x => x.StaffId).ToList(), "简历提醒", "您有个简历【待面试】,请及时查看面试时间!");
//}
+ await SendMessage([record.StaffId.Value], "简历提醒", "您有个简历【待面试】,请及时查看面试时间!");
+
await LogRecord(order.Id, "发送待已发offer提醒!");
}
@@ -2107,7 +2124,6 @@ END";
order.Status = DIC_INTERVIEW_ORDER_STATUS.HasOffer;
records.ForEach(record => record.Status = DIC_INTERVIEW_ORDER_STATUS.HasOffer);
-
await SyncToStaff(id);
}
else
@@ -2306,7 +2322,8 @@ END";
C.StaffId,
C.CancelReason,
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
JOIN Ghrh_InterviewOrder B ON A.ID = B.ResumeId
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";
if (string.IsNullOrWhiteSpace(filter.orderBy))
- filter.orderBy = "CreateTime ASC";
+ filter.orderBy = "CreateTime1 ASC";
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)
{
entity.Status = Status;
- await Update(entity, ["Status"]);
+ await Update(entity, ["Status", "UpdateTime", "UpdateBy"]);
}
public async Task UpdateInterviewOrderStatus(Ghrh_InterviewOrder order, string Status)
{
order.Status = Status;
- await _ghrh_InterviewOrderServices.Update(order, ["Status"]);
+ await _ghrh_InterviewOrderServices.Update(order, ["Status", "UpdateTime", "UpdateBy"]);
}
///
/// 修改面试记录状态
@@ -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);
records.ForEach(record => record.Status = Status);
- await _ghrh_InterviewRecordServices.Update(records, ["Status"]);
+ await _ghrh_InterviewRecordServices.Update(records, ["Status", "UpdateTime", "CreateBy"]);
}
///
/// 同步数据进入认识资料
@@ -3288,8 +3305,6 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 AND C.Status = A.Status";
staff.IsEnable = 1;
#endregion
-
-
var applyOrder = await Db.Queryable().Where(x => x.ResumeId == id).FirstAsync();
if (applyOrder != null)
{
diff --git a/Tiobon.Core/Tiobon.Core.Model.xml b/Tiobon.Core/Tiobon.Core.Model.xml
index a3653cca..fe6f3daa 100644
--- a/Tiobon.Core/Tiobon.Core.Model.xml
+++ b/Tiobon.Core/Tiobon.Core.Model.xml
@@ -26252,6 +26252,11 @@
已报到转入人事资料类型,Fast,快速入职;Normal,正常入职