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);