diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs
index ece266b7..09e3bfcd 100644
--- a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs
+++ b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs
@@ -165,5 +165,20 @@ public class GainfosController : ControllerBase
{
return await _gainfoService.GetGainfoDetailAsync(request);
}
+
+
+ ///
+ /// 数据迁移
+ ///
+ ///
+ [AllowAnonymous]
+ [HttpPost("migrations")]
+ public async Task MigrationAsync(List requests)
+ {
+ foreach (var request in requests)
+ {
+ await _gainfoService.MigrationAsync(request);
+ }
+ }
}
diff --git a/Src/Dlhis.Basic/Organization/Request/MigrationRequest.cs b/Src/Dlhis.Basic/Organization/Request/MigrationRequest.cs
new file mode 100644
index 00000000..f54285c6
--- /dev/null
+++ b/Src/Dlhis.Basic/Organization/Request/MigrationRequest.cs
@@ -0,0 +1,44 @@
+using System.ComponentModel.DataAnnotations;
+using Kurisu.AspNetCore.Utils.Extensions;
+
+namespace Dlhis.Basic.Organization.Request;
+
+public class MigrationRequest : IValidatableObject
+{
+ ///
+ /// 工号
+ ///
+ [Required(ErrorMessage = "工号不能为空")]
+ public string Code { get; set; }
+
+ ///
+ /// 卡号
+ ///
+ public string CardNo { get; set; }
+
+ ///
+ /// base64
+ ///
+ public string Face { get; set; }
+
+ public IEnumerable Validate(ValidationContext validationContext)
+ {
+ if (Face.IsPresent())
+ {
+ bool v = true;
+ try
+ {
+ Convert.FromBase64String(Face);
+ }
+ catch (Exception)
+ {
+ v = false;
+ }
+
+ if (!v)
+ {
+ yield return new ValidationResult("人脸照片需要为Base64格式", new[] { nameof(Face) });
+ }
+ }
+ }
+}
diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs
index b40f3678..175926aa 100644
--- a/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs
@@ -32,4 +32,7 @@ public interface IGainfoService : IScopeDependency
Task> GetGainfoListAsync(GainfoListRequest request);
Task GetGainfoDetailAsync(GainfoDetailRequest request);
+
+
+ Task MigrationAsync(MigrationRequest request);
}
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs
index b64ad5a7..137700de 100644
--- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs
@@ -640,4 +640,41 @@ public class GainfoService : IGainfoService
return null;
}
}
+
+ public async Task MigrationAsync(MigrationRequest request)
+ {
+ //档案数据
+ var gainfo = await _gainfoStore.Queryable().Where(x => x.Code == request.Code).FirstAsync();
+ if (gainfo == null)
+ {
+ return;
+ }
+
+ //卡号为空则更新
+ if (gainfo.CardNo.IsEmpty())
+ {
+ gainfo.CardNo = request.CardNo;
+ await _gainfoStore.UpdateAsync(gainfo);
+ }
+
+ //外部传入人脸
+ if (request.Face.IsPresent())
+ {
+ var faceDbContext = _dbContext.ChangeDb("face");
+ var exists = await faceDbContext.Queryable().AnyAsync(x => x.UserCode == gainfo.Code);
+ //人脸不存在则写入
+ if (!exists)
+ {
+ await faceDbContext.InsertAsync(new GainfoFaceEntity
+ {
+ CreatedBy = 1,
+ CreateTime = DateTime.Now,
+ ModifiedBy = 1,
+ ModifiedTime = DateTime.Now,
+ UserCode = gainfo.Code,
+ Face = request.Face,
+ });
+ }
+ }
+ }
}