diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceController.cs index 4cd78b4d..a11bd211 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceController.cs @@ -89,6 +89,14 @@ public class GainfoOutsourceController : ControllerBase await _gainfoOutSourceService.AutoResignAsync(); } + [AllowAnonymous] + [HttpPost("recover")] + [IgnoreTenant] + public async Task RecoverAsync() + { + await _gainfoOutSourceService.RecoverAsync(); + } + /// /// 获取外包白名单分页数据 /// diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoOutsourceService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoOutsourceService.cs index 6aaed7a3..a4783362 100644 --- a/Src/Dlhis.Basic/Organization/Services/IGainfoOutsourceService.cs +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoOutsourceService.cs @@ -24,4 +24,6 @@ public interface IGainfoOutsourceService : IScopeDependency /// /// Task AutoResignAsync(); + + Task RecoverAsync(); } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs index d5c35bf8..20303644 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs @@ -4,7 +4,6 @@ using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Basic.Enums; using Dlhis.Entity.Device.Entities; using Kurisu.AspNetCore.Cache; -using Kurisu.AspNetCore.CustomClass; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; using Kurisu.AspNetCore.Utils.Extensions; using Mapster; @@ -211,6 +210,35 @@ public class GainfoOutsourceService : IGainfoOutsourceService } } + + public async Task RecoverAsync() + { + var gainfoLeaves = await _dbContext.Queryable() + .Where(x => x.Type == GainfoUserTypeEnumType.Outsource) + .Where(x => x.Remark == "1000天无通行记录") + .Where(x => SqlFunc.Subqueryable().Where(p => p.No == x.No || p.IdNo == x.IdNo).NotAny()) + .ToListAsync(); + + foreach (var gainfoLeave in gainfoLeaves) + { + await _dbContext.Client.Ado.BeginTranAsync(); + try + { + var gainfo = gainfoLeave.Adapt(); + gainfo.Id = gainfo.IdentityUserId; + await _dbContext.InsertAsync(gainfo); + await _dbContext.DeleteReallyAsync(gainfoLeave); + + await _dbContext.Client.Ado.CommitTranAsync(); + } + catch (Exception ex) + { + _logger.LogError(ex, "恢复外包人员失败:{userNo}", gainfoLeave.No); + await _dbContext.Client.Ado.RollbackTranAsync(); + } + } + } + public List GetDaysUntilToday(DateTime begin) { var start = DateOnly.FromDateTime(begin.Date);