From 80aa3f69329de775388a1db846ae92b008af1969 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 12 Mar 2024 12:45:25 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=95=B0=E6=8D=AE=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/GainfosController.cs | 15 +++++++ .../Organization/Request/MigrationRequest.cs | 44 +++++++++++++++++++ .../Organization/Services/IGainfoService.cs | 3 ++ .../Services/Implements/GainfoService.cs | 37 ++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 Src/Dlhis.Basic/Organization/Request/MigrationRequest.cs 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, + }); + } + } + } }