diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs
index 39d3405f..e577baaa 100644
--- a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs
+++ b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs
@@ -100,6 +100,17 @@ public class GainfosController : ControllerBase
await _gainfoService.UploadFaceAsync(request);
}
+ ///
+ /// 批量上传人脸照片
+ ///
+ ///
+ ///
+ [HttpPost("faces")]
+ public async Task UploadFaceAsync(List request)
+ {
+ await _gainfoService.UploadFacesAsync(request);
+ }
+
///
/// 通过token获取人脸照片,失效或者找不到返回HttpStatus404状态码
///
diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs
index 7372f48d..768aa36b 100644
--- a/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs
@@ -1,6 +1,5 @@
using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Response;
-using Dlhis.Entity.Basic.Entity;
using Kurisu.Core.DataAccess.Dto;
using Microsoft.AspNetCore.Mvc;
@@ -22,6 +21,8 @@ public interface IGainfoService : IScopeDependency
Task UploadFaceAsync(GainfoUploadFaceRequest request);
+ Task UploadFacesAsync(List request);
+
Task GetFaceAsync(string token);
Task GetFaceByUserCodeAsync(string userCode);
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs
index f21150bd..bfc6e493 100644
--- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs
@@ -255,6 +255,54 @@ public class GainfoService : IGainfoService
});
}
+ public async Task UploadFacesAsync(List requests)
+ {
+ foreach (var request in requests)
+ {
+ var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.Working).Where(x => x.No == request.UserNo).FirstAsync();
+ gainfo ??= await _gainfoStore.Queryable(GainfoStatusEnumType.External).Where(x => x.No == request.UserNo).FirstAsync();
+
+ gainfo.ThrowIfNull("人员档案信息不存在");
+
+ await Scoped.Request.Value.CreateAsync(async (sp) =>
+ {
+ var configuration = sp.GetService();
+ var faceConnectionString = configuration.GetSection("SqlSugarOptions:FaceConnectionString").Value;
+
+ var dbContext = sp.GetService();
+ //todo 切换连接字符串
+ dbContext.Client.CurrentConnectionConfig.ConnectionString = faceConnectionString;
+ var face = await dbContext.Queryable().Where(x => x.UserCode == gainfo.Code).SingleAsync();
+
+ var taskType = face == null ? DeviceTaskEnumType.Add : DeviceTaskEnumType.Update;
+ if (face == null)
+ {
+ face = new GainfoFaceEntity
+ {
+ UserCode = gainfo.Code,
+ Face = request.Face
+ };
+
+ await dbContext.InsertAsync(face);
+ }
+ else
+ {
+ if (face.Face == request.Face)
+ {
+ _logger.LogWarning("相同的人脸照片更新忽略");
+ return;
+ }
+
+ face.Face = request.Face;
+ await dbContext.UpdateAsync(face);
+ }
+
+ //生成任务
+ await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, taskType);
+ });
+ }
+ }
+
public async Task GetFaceByUserCodeAsync(string userCode)