diff --git a/Tiobon.Core.Api/Controllers/Ghre/Ghre_OpenClassController.cs b/Tiobon.Core.Api/Controllers/Ghre/Ghre_OpenClassController.cs index 68861557..8530f43a 100644 --- a/Tiobon.Core.Api/Controllers/Ghre/Ghre_OpenClassController.cs +++ b/Tiobon.Core.Api/Controllers/Ghre/Ghre_OpenClassController.cs @@ -33,7 +33,7 @@ public class Ghre_OpenClassController : BaseController开班ID /// [HttpPost, Route("QueryStaff/{Id}")] - public async Task> QueryStaff(long Id) => await _service.QueryStaff(Id); + public async Task>> QueryStaff(long Id) => await _service.QueryStaff(Id); #endregion #region 费用 @@ -43,7 +43,7 @@ public class Ghre_OpenClassController : BaseController开班ID /// [HttpPost, Route("QueryGroupFee/{Id}")] - public async Task> QueryGroupFee(long Id) => await _service.QueryGroupFee(Id); + public async Task>> QueryGroupFee(long Id) => await _service.QueryGroupFee(Id); /// /// 查询个人费用 @@ -51,6 +51,6 @@ public class Ghre_OpenClassController : BaseController开班ID /// [HttpPost, Route("QueryPersonalFee/{Id}")] - public async Task> QueryPersonalFee(long Id) => await _service.QueryPersonalFee(Id); + public async Task>> QueryPersonalFee(long Id) => await _service.QueryPersonalFee(Id); #endregion } \ No newline at end of file diff --git a/Tiobon.Core.Api/Tiobon.Core.Model.xml b/Tiobon.Core.Api/Tiobon.Core.Model.xml index e843571c..6f93837d 100644 --- a/Tiobon.Core.Api/Tiobon.Core.Model.xml +++ b/Tiobon.Core.Api/Tiobon.Core.Model.xml @@ -5115,9 +5115,9 @@ 员工ID - + - 费用项目ID + 费用项目 @@ -19846,9 +19846,9 @@ 员工ID - + - 费用项目ID + 费用项目 @@ -29927,6 +29927,16 @@ 修改信息 + + + 工号 + + + + + 姓名 + + 题目(Dto.View) diff --git a/Tiobon.Core.Api/Tiobon.Core.xml b/Tiobon.Core.Api/Tiobon.Core.xml index d226b27b..55dfdb3c 100644 --- a/Tiobon.Core.Api/Tiobon.Core.xml +++ b/Tiobon.Core.Api/Tiobon.Core.xml @@ -1160,6 +1160,20 @@ 开班ID + + + 查询团体费用 + + 开班ID + + + + + 查询个人费用 + + 开班ID + + 开班费用(Controller) diff --git a/Tiobon.Core.IServices/Ghre/IGhre_OpenClassServices.cs b/Tiobon.Core.IServices/Ghre/IGhre_OpenClassServices.cs index e470dd40..e814af7c 100644 --- a/Tiobon.Core.IServices/Ghre/IGhre_OpenClassServices.cs +++ b/Tiobon.Core.IServices/Ghre/IGhre_OpenClassServices.cs @@ -1,13 +1,15 @@ -namespace Tiobon.Core.IServices; +using Tiobon.Core.Model; + +namespace Tiobon.Core.IServices; /// /// 开班管理(自定义服务接口) /// public interface IGhre_OpenClassServices : IBaseServices { - Task> QueryStaff(long Id); + Task>> QueryStaff(long Id); - Task> QueryGroupFee(long Id); + Task>> QueryGroupFee(long Id); - Task> QueryPersonalFee(long Id); + Task>> QueryPersonalFee(long Id); } \ No newline at end of file diff --git a/Tiobon.Core.Model/Base/Ghre/Ghre_OpenClassFee.Dto.Base.cs b/Tiobon.Core.Model/Base/Ghre/Ghre_OpenClassFee.Dto.Base.cs index ad839781..89ff3b10 100644 --- a/Tiobon.Core.Model/Base/Ghre/Ghre_OpenClassFee.Dto.Base.cs +++ b/Tiobon.Core.Model/Base/Ghre/Ghre_OpenClassFee.Dto.Base.cs @@ -6,7 +6,7 @@ * * Ver 变更日期 负责人 变更内容 * ─────────────────────────────────── -*V0.01 2025/2/8 14:57:45 SimonHsiao 初版 +*V0.01 2025/2/11 13:34:32 SimonHsiao 初版 * * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. *┌──────────────────────────────────┐ @@ -34,9 +34,10 @@ public class Ghre_OpenClassFeeBase public int? StaffId { get; set; } /// - /// 费用项目ID + /// 费用项目 /// - public long? ItemId { get; set; } + [Display(Name = "ItemCode"), Description("费用项目"), MaxLength(32, ErrorMessage = "费用项目 不能超过 32 个字符")] + public string ItemCode { get; set; } /// /// 金额 diff --git a/Tiobon.Core.Model/Models/Ghre/Ghre_OpenClassFee.cs b/Tiobon.Core.Model/Models/Ghre/Ghre_OpenClassFee.cs index d5a3f6e7..5b766557 100644 --- a/Tiobon.Core.Model/Models/Ghre/Ghre_OpenClassFee.cs +++ b/Tiobon.Core.Model/Models/Ghre/Ghre_OpenClassFee.cs @@ -6,7 +6,7 @@ * * Ver 变更日期 负责人 变更内容 * ─────────────────────────────────── -*V0.01 2025/2/8 14:57:45 SimonHsiao 初版 +*V0.01 2025/2/11 13:34:32 SimonHsiao 初版 * * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. *┌──────────────────────────────────┐ @@ -35,9 +35,10 @@ public class Ghre_OpenClassFee : BasePoco public int? StaffId { get; set; } /// - /// 费用项目ID + /// 费用项目 /// - public long? ItemId { get; set; } + [Display(Name = "ItemCode"), Description("费用项目"), MaxLength(32, ErrorMessage = "费用项目 不能超过 32 个字符")] + public string ItemCode { get; set; } /// /// 金额 diff --git a/Tiobon.Core.Model/View/Ghre/Ghre_OpenClassStaff.Dto.View.cs b/Tiobon.Core.Model/View/Ghre/Ghre_OpenClassStaff.Dto.View.cs index 55b482e1..6f685e7e 100644 --- a/Tiobon.Core.Model/View/Ghre/Ghre_OpenClassStaff.Dto.View.cs +++ b/Tiobon.Core.Model/View/Ghre/Ghre_OpenClassStaff.Dto.View.cs @@ -31,4 +31,17 @@ public class Ghre_OpenClassStaffDto : Ghre_OpenClassStaff /// 修改信息 /// public string UpdateDataInfo { get; set; } + /// + /// 工号 + /// + public string StaffNo { get; set; } + + /// + /// 姓名 + /// + public string StaffName { get; set; } + public DateTime? Indate { get; set; } + public string TitleName { get; set; } + public string DeptName { get; set; } + public string Email { get; set; } } diff --git a/Tiobon.Core.Services/Ghre/Ghre_OpenClassFeeServices.cs b/Tiobon.Core.Services/Ghre/Ghre_OpenClassFeeServices.cs index e4ebd9c9..084ea1d2 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_OpenClassFeeServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_OpenClassFeeServices.cs @@ -24,7 +24,7 @@ public class Ghre_OpenClassFeeServices : BaseServices Add(InsertGhre_OpenClassInput entity) { entity.LinkId = entity.LinkType == "Course" ? entity.CourseId : entity.CourseSceneId; - var result = await base.Add(entity); entity.Status = "Temporary"; + + var prefixTemp = string.Empty; + if (entity.LinkType == "Course") + prefixTemp = (await Db.Queryable().FirstAsync(x => x.Id == entity.CourseId))?.CourseNo; + else + prefixTemp = (await Db.Queryable().FirstAsync(x => x.Id == entity.CourseSceneId))?.SceneNo; + + prefixTemp = prefixTemp + "K"; + entity.OpenClassNo = await GenerateContinuousSequence("Ghre_OpenClass", "OpenClassNo", prefixTemp, prefixTemp.Length + 4, 4); + var result = await base.Add(entity); return result; } @@ -112,23 +121,23 @@ public class Ghre_OpenClassServices : BaseServices> QueryStaff(long Id) + public async Task>> QueryStaff(long Id) { var result = await _ghre_OpenClassStaffServices.QueryFilterPage(new QueryBody(), $"OpenClassId='{Id}'"); - return result.result.DT_TableDataT1; + return ServiceResult>.OprateSuccess("查询成功!", result.result.DT_TableDataT1); } #endregion #region 费用 - public async Task> QueryGroupFee(long Id) + public async Task>> QueryGroupFee(long Id) { var result = await _ghre_OpenClassFeeServices.QueryFilterPage(new QueryBody(), $"OpenClassId='{Id}' AND StaffId IS NULL"); - return result.result.DT_TableDataT1; - } - public async Task> QueryPersonalFee(long Id) + return ServiceResult>.OprateSuccess("查询成功!", result.result.DT_TableDataT1); + } + public async Task>> QueryPersonalFee(long Id) { var result = await _ghre_OpenClassFeeServices.QueryFilterPage(new QueryBody(), $"OpenClassId='{Id}' AND StaffId IS NOT NULL"); - return result.result.DT_TableDataT1; + return ServiceResult>.OprateSuccess("查询成功!", result.result.DT_TableDataT1); } #endregion } \ No newline at end of file diff --git a/Tiobon.Core.Services/Ghre/Ghre_OpenClassStaffServices.cs b/Tiobon.Core.Services/Ghre/Ghre_OpenClassStaffServices.cs index 5ff8b6f0..6ecad561 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_OpenClassStaffServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_OpenClassStaffServices.cs @@ -20,13 +20,40 @@ public class Ghre_OpenClassStaffServices : BaseServices x.StaffId).Distinct().ToList(); + var staffs = await Db.Queryable() + .LeftJoin((o, cus) => o.DeptID == cus.DeptID)//多个条件用&& + .LeftJoin((o, cus, oritem) => o.TitleID == oritem.TitleID) + .Where(o => staffIds.Contains(o.StaffID)) + .Select((o, cus, oritem) => new + { + o.StaffID, + o.StaffNo, + o.StaffName, + o.Indate, + o.Email, + oritem.TitleName, + cus.DeptName + }) + .ToListAsync(); + + for (int i = 0; i < result.result.DT_TableDataT1.Count; i++) + { + var DT_TableDataT1 = result.result.DT_TableDataT1[i]; + + DT_TableDataT1.Source = DT_TableDataT1.Source == "Backend" ? "后台新增" : "报名"; + + var staff = staffs.Where(x => x.StaffID == DT_TableDataT1.StaffId).FirstOrDefault(); + DT_TableDataT1.StaffNo = staff?.StaffNo; + DT_TableDataT1.StaffName = staff?.StaffName; + DT_TableDataT1.Indate = staff?.Indate; + DT_TableDataT1.TitleName = staff?.TitleName; + DT_TableDataT1.DeptName = staff?.DeptName; + DT_TableDataT1.DeptName = staff?.Email; + result.result.DT_TableDataT1[i] = DT_TableDataT1; + } } return result; } diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs index 188c8e53..70a18421 100644 --- a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs +++ b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs @@ -4963,7 +4963,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 try { var entity = await base.QueryById(id); - if (entity.IsSyncToStaff == true || await Db.Queryable().Where(x => x.IdCardNo == entity.IdCardNo).AnyAsync()) + if (entity.IsSyncToStaff == true || await Db.Queryable().Where(x => x.IdCardNo == entity.IdCardNo && x.OutDate == null).AnyAsync()) { return false; } @@ -5339,109 +5339,109 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1 #endregion #region 薪资项目同步 - if (companyNo == "ShiHua") - { - if (applyOrder != null && inTime != null && applyOrder.ProbationSalary != null) - if (applyOrder.ProbationSalary > 0) - { - var salaryConfig = await Db.Queryable().Where(x => x.ConfigCode == "ESS_Recruit_Custom_Check_In_Apply_Salary").FirstAsync(); - var TempOrOfficial = salaryConfig?.ConfigValue ?? "Temp"; - - 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(sql); - if (SalaryChangeID.Any()) - { - var sql1 = @$"UPDATE Ghrc_SalaryChange - SET IsEnable = 0, - UpdateBy = {App.User.ID}, - UpdateTime = GETDATE (), - UpdateProg = 'SyncToStaff' - WHERE SalaryChangeID = {SalaryChangeID[0]} AND IsEnable >= 1; - - UPDATE Ghrc_SalaryChangeDetail - SET IsEnable = 0, - UpdateBy = {App.User.ID}, - UpdateTime = GETDATE (), - UpdateProg = 'SyncToStaff' - WHERE SalaryChangeID = {SalaryChangeID[0]} AND IsEnable >= 1;"; - await Db.Ado.ExecuteCommandAsync(sql1); - } - - sql = @$"open symmetric key GHR50AesKey decryption by certificate TiobonGHRCer; - INSERT INTO [dbo].[Ghrc_SalaryChange] - ( StaffID,WorkNo, - ChangeDate, - ChangeTypeID , - ChangeReasonID , ChangeFlag, - ToDoType,WorkState,RemarkSz, - SortNo,IsEnable,IsDefault,OperateLogID, - CreateBy,CreateTime,CreateProg, - TotalAmount - ) - select {staffId},null, - '{inTime.Value.Date}', - 23, -- - 1130, -- - 0,'Todo',1,'', - 1,2,0,0, - {App.User.ID},GETDATE(), 'SyncToStaff', - dbo.FS_EncryptByKey({applyOrder?.ProbationSalary ?? 0}) - Declare @N_SCID int = SCOPE_IDENTITY() - select @N_SCID"; - - var @N_SCID = await Db.Ado.GetIntAsync(sql); - - sql = @"UPDATE A - SET A.Reverse1 = b.SalaryItemNo, - A.UpdateTime = getdate (), - A.UpdateProg = 'SyncToStaff' - FROM Ghrh_OfferApplyOrderSalary A - JOIN Ghrc_SalaryItem b ON A.SalaryItemId = b.SalaryItemID - WHERE A.Reverse1 IS NULL"; - - await Db.Ado.ExecuteCommandAsync(sql); - - var items = await Db.Queryable().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; - - 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} - union all select 'S03',{S03} - union all select 'S04',{S04} - union all select 'S05',{S05} - union all select 'S06',{S06} - union all select 'S21',{S21} - union all select 'S22',{S22} - union all select 'S23',{S23} - union all select 'S66',{S66} - union all select 'S68',{S68} - union all select 'S70',{S70} - insert into ghrc_salaryChangeDetail(SalaryChangeID,StaffID,ChangeDate,SalaryItemID,Amount,CurrencyID,Createby,CreateProg, - Reverse1,IsEnable ) - select {@N_SCID},{staffId},'{inTime.Value.Date}',b.SalaryItemID,dbo.FS_EncryptByKey(a.Amount) Amount,2, - {App.User.ID}, 'SyncToStaff', - null, {IsEnable} IsEnable - 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); - } - } + // if (companyNo == "ShiHua") + // { + // if (applyOrder != null && inTime != null && applyOrder.ProbationSalary != null) + // if (applyOrder.ProbationSalary > 0) + // { + // var salaryConfig = await Db.Queryable().Where(x => x.ConfigCode == "ESS_Recruit_Custom_Check_In_Apply_Salary").FirstAsync(); + // var TempOrOfficial = salaryConfig?.ConfigValue ?? "Temp"; + + // 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(sql); + // if (SalaryChangeID.Any()) + // { + // var sql1 = @$"UPDATE Ghrc_SalaryChange + // SET IsEnable = 0, + // UpdateBy = {App.User.ID}, + // UpdateTime = GETDATE (), + // UpdateProg = 'SyncToStaff' + // WHERE SalaryChangeID = {SalaryChangeID[0]} AND IsEnable >= 1; + + // UPDATE Ghrc_SalaryChangeDetail + // SET IsEnable = 0, + // UpdateBy = {App.User.ID}, + // UpdateTime = GETDATE (), + // UpdateProg = 'SyncToStaff' + // WHERE SalaryChangeID = {SalaryChangeID[0]} AND IsEnable >= 1;"; + // await Db.Ado.ExecuteCommandAsync(sql1); + // } + + // sql = @$"open symmetric key GHR50AesKey decryption by certificate TiobonGHRCer; + // INSERT INTO [dbo].[Ghrc_SalaryChange] + // ( StaffID,WorkNo, + // ChangeDate, + // ChangeTypeID , + // ChangeReasonID , ChangeFlag, + // ToDoType,WorkState,RemarkSz, + // SortNo,IsEnable,IsDefault,OperateLogID, + // CreateBy,CreateTime,CreateProg, + // TotalAmount + // ) + // select {staffId},null, + // '{inTime.Value.Date}', + // 23, -- + // 1130, -- + // 0,'Todo',1,'', + // 1,2,0,0, + // {App.User.ID},GETDATE(), 'SyncToStaff', + // dbo.FS_EncryptByKey({applyOrder?.ProbationSalary ?? 0}) + // Declare @N_SCID int = SCOPE_IDENTITY() + // select @N_SCID"; + + // var @N_SCID = await Db.Ado.GetIntAsync(sql); + + // sql = @"UPDATE A + // SET A.Reverse1 = b.SalaryItemNo, + // A.UpdateTime = getdate (), + // A.UpdateProg = 'SyncToStaff' + // FROM Ghrh_OfferApplyOrderSalary A + // JOIN Ghrc_SalaryItem b ON A.SalaryItemId = b.SalaryItemID + // WHERE A.Reverse1 IS NULL"; + + // await Db.Ado.ExecuteCommandAsync(sql); + + // var items = await Db.Queryable().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; + + // 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} + //union all select 'S03',{S03} + //union all select 'S04',{S04} + //union all select 'S05',{S05} + //union all select 'S06',{S06} + //union all select 'S21',{S21} + //union all select 'S22',{S22} + //union all select 'S23',{S23} + //union all select 'S66',{S66} + //union all select 'S68',{S68} + //union all select 'S70',{S70} + //insert into ghrc_salaryChangeDetail(SalaryChangeID,StaffID,ChangeDate,SalaryItemID,Amount,CurrencyID,Createby,CreateProg, + // Reverse1,IsEnable ) + //select {@N_SCID},{staffId},'{inTime.Value.Date}',b.SalaryItemID,dbo.FS_EncryptByKey(a.Amount) Amount,2, + // {App.User.ID}, 'SyncToStaff', + // null, {IsEnable} IsEnable + //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); + // } + // } #endregion } await Db.Ado.CommitTranAsync(); diff --git a/Tiobon.Core/Tiobon.Core.Model.xml b/Tiobon.Core/Tiobon.Core.Model.xml index e843571c..6f93837d 100644 --- a/Tiobon.Core/Tiobon.Core.Model.xml +++ b/Tiobon.Core/Tiobon.Core.Model.xml @@ -5115,9 +5115,9 @@ 员工ID - + - 费用项目ID + 费用项目 @@ -19846,9 +19846,9 @@ 员工ID - + - 费用项目ID + 费用项目 @@ -29927,6 +29927,16 @@ 修改信息 + + + 工号 + + + + + 姓名 + + 题目(Dto.View) diff --git a/Tiobon.Core/Tiobon.Core.xml b/Tiobon.Core/Tiobon.Core.xml index d226b27b..55dfdb3c 100644 --- a/Tiobon.Core/Tiobon.Core.xml +++ b/Tiobon.Core/Tiobon.Core.xml @@ -1160,6 +1160,20 @@ 开班ID + + + 查询团体费用 + + 开班ID + + + + + 查询个人费用 + + 开班ID + + 开班费用(Controller)