考试管理支持添加人员并产生对应学习记录

master
xiaochanghai 5 months ago
parent c1e41adc67
commit dde5ab2f3d
  1. 111
      Tiobon.Core.Services/Ghre/Ghre_ExamServices.cs
  2. 89
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs

@ -1131,6 +1131,9 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
await _ghre_ExamStaffServices.Add(insertStaffs);
if (exam.Status == DIC_EXAM_STATUS.RELEASED)
await GenerateStudy(id);
return ServiceResult<long>.OprateSuccess("修改成功!", id);
}
}
@ -1289,57 +1292,7 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
#region 生成学习记录
if (status == Consts.DIC_EXAM_STATUS.RELEASED && entity.Status == Consts.DIC_EXAM_STATUS.DRAFT)
{
var staffs = await _ghre_ExamStaffServices.Query(x => x.ExamId == id && x.Source == Consts.DIC_EXAM_STAFF_SOURCE.MANUAL_REQUIRED);
var inserts = new List<Ghre_StudyRecord>();
var snap = await Db.Queryable<Ghre_CourseSnap>().FirstAsync(x => x.CourseId == entity.CourseId);
var courseTime = Db.GetDate();
var courseEndTime = courseTime.Date.AddMonths(snap?.ValidityPeriod ?? 1);
#region 自动给学习记录匹配考试ID
var studyRecords = await Db.Queryable<Ghre_StudyRecord>()
.WhereIF(!entity.CourseId.IsNull(), x => x.CourseId == entity.CourseId)
.WhereIF(!entity.CourseSceneId.IsNull(), x => x.CourseSceneId == entity.CourseSceneId)
.Where(x => x.ExamId == null).ToListAsync();
studyRecords.ForEach(x => x.ExamId = entity.Id);
await Db.Updateable(studyRecords).UpdateColumns(it => new { it.ExamId }).ExecuteCommandAsync();
#endregion
if (entity.DateType == DicExamDateType.EXAM_DATE)
{
courseEndTime = entity.EndTime.Value.Date.AddDays(1);
courseTime = courseEndTime.AddDays(-(snap?.ValidityPeriod ?? 1));
}
for (int i = 0; i < staffs.Count; i++)
{
var staff = staffs[i];
var exist = await Db.Queryable<Ghre_StudyRecord>()
.WhereIF(!entity.CourseId.IsNull(), x => x.CourseId == entity.CourseId)
.WhereIF(!entity.CourseSceneId.IsNull(), x => x.CourseSceneId == entity.CourseSceneId)
.Where(x => x.ExamId == id && x.StaffId == staff.StaffId).AnyAsync();
if (!exist)
inserts.Add(new Ghre_StudyRecord()
{
StaffId = staff.StaffId,
ExamId = id,
CourseSnapId = snap?.Id,
CourseId = entity.CourseId,
CourseSceneId = entity.CourseSceneId,
JoinTime = courseTime,
CourseBeginTime = courseTime.Date,
CourseEndTime = courseEndTime,
CourseType = DIC_EXAM_STAFF_SOURCE.MANUAL_REQUIRED,
CourseStatus = Consts.DIC_STUDY_RECORD_COURSE_STATUS_IN,
StudyStatus = DIC_STUDY_RECORD_STUDY_STATUS.NO_JOIN
});
}
if (inserts.Any())
await Db.Insertable(inserts).ExecuteReturnSnowflakeIdListAsync();
}
await GenerateStudy(id);
#endregion
if (status == DIC_EXAM_STATUS.RELEASED || status == DIC_EXAM_STATUS.DISABLED || status == DIC_EXAM_STATUS.DRAFT)
@ -1359,6 +1312,62 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
}
#region 生成学习记录
public async Task GenerateStudy(long id)
{
var entity = await BaseDal.QueryById(id);
var staffs = await _ghre_ExamStaffServices.Query(x => x.ExamId == id && x.Source == Consts.DIC_EXAM_STAFF_SOURCE.MANUAL_REQUIRED);
var inserts = new List<Ghre_StudyRecord>();
var snap = await Db.Queryable<Ghre_CourseSnap>().FirstAsync(x => x.CourseId == entity.CourseId);
var courseTime = Db.GetDate();
var courseEndTime = courseTime.Date.AddMonths(snap?.ValidityPeriod ?? 1);
#region 自动给学习记录匹配考试ID
var studyRecords = await Db.Queryable<Ghre_StudyRecord>()
.WhereIF(!entity.CourseId.IsNull(), x => x.CourseId == entity.CourseId)
.WhereIF(!entity.CourseSceneId.IsNull(), x => x.CourseSceneId == entity.CourseSceneId)
.Where(x => x.ExamId == null).ToListAsync();
studyRecords.ForEach(x => x.ExamId = entity.Id);
await Db.Updateable(studyRecords).UpdateColumns(it => new { it.ExamId }).ExecuteCommandAsync();
#endregion
if (entity.DateType == DicExamDateType.EXAM_DATE)
{
courseEndTime = entity.EndTime.Value.Date.AddDays(1);
courseTime = courseEndTime.AddDays(-(snap?.ValidityPeriod ?? 1));
}
for (int i = 0; i < staffs.Count; i++)
{
var staff = staffs[i];
var exist = await Db.Queryable<Ghre_StudyRecord>()
.WhereIF(!entity.CourseId.IsNull(), x => x.CourseId == entity.CourseId)
.WhereIF(!entity.CourseSceneId.IsNull(), x => x.CourseSceneId == entity.CourseSceneId)
.Where(x => x.ExamId == id && x.StaffId == staff.StaffId).AnyAsync();
if (!exist)
inserts.Add(new Ghre_StudyRecord()
{
StaffId = staff.StaffId,
ExamId = id,
CourseSnapId = snap?.Id,
CourseId = entity.CourseId,
CourseSceneId = entity.CourseSceneId,
JoinTime = courseTime,
CourseBeginTime = courseTime.Date,
CourseEndTime = courseEndTime,
CourseType = DIC_EXAM_STAFF_SOURCE.MANUAL_REQUIRED,
CourseStatus = Consts.DIC_STUDY_RECORD_COURSE_STATUS_IN,
StudyStatus = DIC_STUDY_RECORD_STUDY_STATUS.NO_JOIN
});
}
if (inserts.Any())
await Db.Insertable(inserts).ExecuteReturnSnowflakeIdListAsync();
}
#endregion
public async Task<ServiceResult> GetStatus(long id)
{
string sql = $@"SELECT A.RoleId, B.RoleNo, B.RoleName

@ -776,6 +776,11 @@ ORDER BY A.SortNo ASC";
#region 查询简历是否存在
public async Task<ServiceResult<dynamic>> CheckIsExist(EditGhrh_ResumeInput input)
{
if (input.Mobile.IsNullOrEmpty())
return ServiceResult<dynamic>.OprateFailed(await QueryLangValue("F_ResumeMaintenance_0228", "手机号不能为空!"));
if (input.StaffName.IsNullOrEmpty())
return ServiceResult<dynamic>.OprateFailed(await QueryLangValue("F_ResumeMaintenance_0229", "姓名不能为空!"));
dynamic obj = new ExpandoObject();
obj.ApplicationStatus = "Hold";
long id = 0;
@ -793,11 +798,10 @@ ORDER BY A.SortNo ASC";
});
else
{
if (resume.IdCardNo.IsNotEmptyOrNull() && input.IdCardNo.IsNullOrEmpty())
if (input.IdCardNo.IsNullOrEmpty())
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));
resume = await QuerySingle(x => x.Mobile == input.Mobile && x.IdCardNo.Contains(input.IdCardNo));
id = resume.Id;
@ -4884,6 +4888,8 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
int staffId = 0;
var sql = "SELECT Top 1 CompanyNo from Ghro_Company where IsEnable=1";
var companyNo = await Db.Ado.GetStringAsync(sql);
await Db.Ado.BeginTranAsync();
@ -4911,6 +4917,14 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
dict.Add("IsEnable", 1);
#endregion
if (companyNo == "ShiHua")
{
dict.Add("IsCalSalary", 1);
dict.Add("Reverse15", "N");
dict.Add("Reverse13", "Y");
dict.Add("TaxID", 1);
}
DateTime? inTime = null;
long? applyOrderId = null;
var applyOrder = await Db.Queryable<Ghrh_OfferApplyOrder>().Where(x => x.ResumeId == id || x.IdCardNo == entity.IdCardNo).FirstAsync();
@ -4944,7 +4958,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
staffId = await Db.Insertable(dict).AS("Ghra_Staff").ExecuteReturnIdentityAsync();
if (staffId > 0)
{
string sql = $"update Ghra_Staff set Indate='{inTime}' where StaffID={staffId} and Indate is null";
sql = $"update Ghra_Staff set Indate='{inTime}' where StaffID={staffId} and Indate is null";
if (inTime != null)
await Db.Ado.ExecuteCommandAsync(sql);
if (type != "Fast")
@ -5226,19 +5240,21 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
#endregion
#region 薪资项目同步
if (applyOrder != null && inTime != null && applyOrder.ProbationSalary != null)
if (applyOrder.ProbationSalary > 0)
{
var salaryConfig = await Db.Queryable<Ghrh_Config>().Where(x => x.ConfigCode == "ESS_Recruit_Custom_Check_In_Apply_Salary").FirstAsync();
var TempOrOfficial = salaryConfig?.ConfigValue ?? "Temp";
if (companyNo == "ShiHua")
{
if (applyOrder != null && inTime != null && applyOrder.ProbationSalary != null)
if (applyOrder.ProbationSalary > 0)
{
var salaryConfig = await Db.Queryable<Ghrh_Config>().Where(x => x.ConfigCode == "ESS_Recruit_Custom_Check_In_Apply_Salary").FirstAsync();
var TempOrOfficial = salaryConfig?.ConfigValue ?? "Temp";
var IsEnable = 2;
var IsEnable = 2;
sql = $"SELECT SalaryChangeID FROM Ghrc_SalaryChange WHERE IsEnable>=1 and StaffID='{staffId}' and ChangeDate = '{inTime.Value.Date}'";
var SalaryChangeID = await Db.Ado.SqlQueryAsync<string>(sql);
if (SalaryChangeID.Any())
{
var sql1 = @$"UPDATE Ghrc_SalaryChange
sql = $"SELECT SalaryChangeID FROM Ghrc_SalaryChange WHERE IsEnable>=1 and StaffID='{staffId}' and ChangeDate = '{inTime.Value.Date}'";
var SalaryChangeID = await Db.Ado.SqlQueryAsync<string>(sql);
if (SalaryChangeID.Any())
{
var sql1 = @$"UPDATE Ghrc_SalaryChange
SET IsEnable = 0,
UpdateBy = {App.User.ID},
UpdateTime = GETDATE (),
@ -5251,10 +5267,10 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
UpdateTime = GETDATE (),
UpdateProg = 'SyncToStaff'
WHERE SalaryChangeID = {SalaryChangeID[0]} AND IsEnable >= 1;";
await Db.Ado.ExecuteCommandAsync(sql1);
}
await Db.Ado.ExecuteCommandAsync(sql1);
}
sql = @$"open symmetric key GHR50AesKey decryption by certificate TiobonGHRCer;
sql = @$"open symmetric key GHR50AesKey decryption by certificate TiobonGHRCer;
INSERT INTO [dbo].[Ghrc_SalaryChange]
( StaffID,WorkNo,
ChangeDate,
@ -5276,9 +5292,9 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
Declare @N_SCID int = SCOPE_IDENTITY()
select @N_SCID";
var @N_SCID = await Db.Ado.GetIntAsync(sql);
var @N_SCID = await Db.Ado.GetIntAsync(sql);
sql = @"UPDATE A
sql = @"UPDATE A
SET A.Reverse1 = b.SalaryItemNo,
A.UpdateTime = getdate (),
A.UpdateProg = 'SyncToStaff'
@ -5286,23 +5302,23 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
JOIN Ghrc_SalaryItem b ON A.SalaryItemId = b.SalaryItemID
WHERE A.Reverse1 IS NULL";
await Db.Ado.ExecuteCommandAsync(sql);
await Db.Ado.ExecuteCommandAsync(sql);
var items = await Db.Queryable<Ghrh_OfferApplyOrderSalary>().Where(x => x.OrderId == applyOrder.Id).ToListAsync();
var items = await Db.Queryable<Ghrh_OfferApplyOrderSalary>().Where(x => x.OrderId == applyOrder.Id).ToListAsync();
var S02 = items.Where(x => x.Reverse1 == "S02").FirstOrDefault()?.Amount ?? 0;
var S03 = items.Where(x => x.Reverse1 == "S03").FirstOrDefault()?.Amount ?? 0;
var S04 = items.Where(x => x.Reverse1 == "S04").FirstOrDefault()?.Amount ?? 0;
var S05 = items.Where(x => x.Reverse1 == "S05").FirstOrDefault()?.Amount ?? 0;
var S06 = items.Where(x => x.Reverse1 == "S06").FirstOrDefault()?.Amount ?? 0;
var S21 = items.Where(x => x.Reverse1 == "S21").FirstOrDefault()?.Amount ?? 0;
var S22 = items.Where(x => x.Reverse1 == "S22").FirstOrDefault()?.Amount ?? 0;
var S23 = items.Where(x => x.Reverse1 == "S23").FirstOrDefault()?.Amount ?? 0;
var S66 = items.Where(x => x.Reverse1 == "S66").FirstOrDefault()?.Amount ?? 0;
var S68 = items.Where(x => x.Reverse1 == "S68").FirstOrDefault()?.Amount ?? 0;
var S70 = items.Where(x => x.Reverse1 == "S70").FirstOrDefault()?.Amount ?? 0;
var S02 = items.Where(x => x.Reverse1 == "S02").FirstOrDefault()?.Amount ?? 0;
var S03 = items.Where(x => x.Reverse1 == "S03").FirstOrDefault()?.Amount ?? 0;
var S04 = items.Where(x => x.Reverse1 == "S04").FirstOrDefault()?.Amount ?? 0;
var S05 = items.Where(x => x.Reverse1 == "S05").FirstOrDefault()?.Amount ?? 0;
var S06 = items.Where(x => x.Reverse1 == "S06").FirstOrDefault()?.Amount ?? 0;
var S21 = items.Where(x => x.Reverse1 == "S21").FirstOrDefault()?.Amount ?? 0;
var S22 = items.Where(x => x.Reverse1 == "S22").FirstOrDefault()?.Amount ?? 0;
var S23 = items.Where(x => x.Reverse1 == "S23").FirstOrDefault()?.Amount ?? 0;
var S66 = items.Where(x => x.Reverse1 == "S66").FirstOrDefault()?.Amount ?? 0;
var S68 = items.Where(x => x.Reverse1 == "S68").FirstOrDefault()?.Amount ?? 0;
var S70 = items.Where(x => x.Reverse1 == "S70").FirstOrDefault()?.Amount ?? 0;
sql = @$"open symmetric key GHR50AesKey decryption by certificate TiobonGHRCer;
sql = @$"open symmetric key GHR50AesKey decryption by certificate TiobonGHRCer;
Declare @Regular_SalaryDetail table (SalaryItemNo nvarchar(100), Amount Decimal(18,2))
insert into @Regular_SalaryDetail
select 'S02',{S02}
@ -5324,8 +5340,9 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
from @Regular_SalaryDetail a inner join Ghrc_SalaryItem b on a.SalaryItemNo = b.SalaryItemNo
where b.IsEnable = 1
and ISNULL(a.Amount,0) > 0";
await Db.Ado.ExecuteCommandAsync(sql);
}
await Db.Ado.ExecuteCommandAsync(sql);
}
}
#endregion
}
await Db.Ado.CommitTranAsync();

Loading…
Cancel
Save