diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoFingerprintsController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoFingerprintsController.cs
new file mode 100644
index 00000000..7717ef0a
--- /dev/null
+++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoFingerprintsController.cs
@@ -0,0 +1,46 @@
+using Dlhis.Basic.Organization.Request;
+using Dlhis.Basic.Organization.Response;
+using Dlhis.Basic.Organization.Services;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Dlhis.Basic.Organization.Controllers;
+
+///
+/// 用户指纹数据
+///
+[Authorize]
+[Route("api/[controller]")]
+[ApiController]
+public class GainfoFingerprintsController : ControllerBase
+{
+ private readonly IGainfoFingerprintService _gainfoFingerprintService;
+
+ public GainfoFingerprintsController(IGainfoFingerprintService gainfoFingerprintService)
+ {
+ _gainfoFingerprintService = gainfoFingerprintService;
+ }
+
+ ///
+ /// 采集
+ ///
+ ///
+ ///
+ [HttpPost("collect")]
+ public async Task CollectFingerprintAsync(FingerprintCollectRequest request)
+ {
+ await _gainfoFingerprintService.CollectFingerprintAsync(request.UserCode, request.FingerNum, request.Fingerprint);
+ }
+
+ ///
+ /// 获取人员指纹数据
+ ///
+ ///
+ ///
+ ///
+ [HttpGet("fingerprints")]
+ public async Task> GetFingerprintAsync(string userCode, int fingerNum)
+ {
+ return await _gainfoFingerprintService.GetFingerprintAsync(userCode, fingerNum);
+ }
+}
diff --git a/Src/Dlhis.Basic/Organization/Request/FingerprintCollectRequest.cs b/Src/Dlhis.Basic/Organization/Request/FingerprintCollectRequest.cs
new file mode 100644
index 00000000..61de1fc9
--- /dev/null
+++ b/Src/Dlhis.Basic/Organization/Request/FingerprintCollectRequest.cs
@@ -0,0 +1,26 @@
+
+using System.ComponentModel.DataAnnotations;
+
+namespace Dlhis.Basic.Organization.Request
+{
+ public class FingerprintCollectRequest
+ {
+ ///
+ /// 用户工号
+ ///
+ [Required(ErrorMessage = "用户工号不能为空")]
+ public string UserCode { get; set; }
+
+ ///
+ /// 手指编号
+ ///
+ [Range(1, 10, ErrorMessage = "手指编号有误,请输入1到10之间的数字")]
+ public int FingerNum { get; set; }
+
+ ///
+ /// 指纹数据
+ ///
+ [Required(ErrorMessage = "指纹数据不能为空")]
+ public string Fingerprint { get; set; }
+ }
+}
diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoFingerprintResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoFingerprintResponse.cs
new file mode 100644
index 00000000..e88d3dad
--- /dev/null
+++ b/Src/Dlhis.Basic/Organization/Response/GainfoFingerprintResponse.cs
@@ -0,0 +1,34 @@
+namespace Dlhis.Basic.Organization.Response;
+
+public class GainfoFingerprintResponse
+{
+ ///
+ /// 用户工号
+ ///
+ public string UserCode { get; set; }
+
+ ///
+ /// 用户名称
+ ///
+ public string UserName { get; set; }
+
+ ///
+ /// 部门号
+ ///
+ public string DepartmentNo { get; set; }
+
+ ///
+ /// 部门名称
+ ///
+ public string DepartmentName { get; set; }
+
+ ///
+ /// 指纹号
+ ///
+ public int FingerNum { get; set; }
+
+ ///
+ /// 指纹数据
+ ///
+ public string Fingerprint { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoFingerprintService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoFingerprintService.cs
new file mode 100644
index 00000000..6481a874
--- /dev/null
+++ b/Src/Dlhis.Basic/Organization/Services/IGainfoFingerprintService.cs
@@ -0,0 +1,10 @@
+using Dlhis.Basic.Organization.Response;
+
+namespace Dlhis.Basic.Organization.Services;
+
+public interface IGainfoFingerprintService : IScopeDependency
+{
+ Task CollectFingerprintAsync(string userCode, int fingerNum, string fingerprint);
+
+ Task> GetFingerprintAsync(string userCode, int fingerNum);
+}
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFingerprintService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFingerprintService.cs
new file mode 100644
index 00000000..36314a03
--- /dev/null
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFingerprintService.cs
@@ -0,0 +1,52 @@
+using Dlhis.Basic.Organization.Response;
+using Dlhis.Entity.Basic.Entity;
+using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
+
+namespace Dlhis.Basic.Organization.Services.Implements
+{
+ public class GainfoFingerprintService : IGainfoFingerprintService
+ {
+ private readonly IDbContext _dbContext;
+
+ public GainfoFingerprintService(IDbContext dbContext)
+ {
+ _dbContext = dbContext;
+ }
+ public async Task CollectFingerprintAsync(string userCode, int fingerNum, string fingerprint)
+ {
+ var gainfoFingerprint = await _dbContext.Queryable().Where(x => x.UserCode == userCode && x.FingerNum == fingerNum).FirstAsync();
+ if (gainfoFingerprint == null)
+ {
+ gainfoFingerprint = new GainfoFingerprintEntity
+ {
+ UserCode = userCode,
+ FingerNum = fingerNum,
+ Fingerprint = fingerprint
+ };
+ await _dbContext.InsertAsync(gainfoFingerprint);
+ }
+ else
+ {
+ gainfoFingerprint.Fingerprint = fingerprint;
+ await _dbContext.UpdateAsync(gainfoFingerprint);
+ }
+ }
+
+ public async Task> GetFingerprintAsync(string userCode, int fingerNum)
+ {
+ return await _dbContext.Queryable()
+ .LeftJoin((x, ga) => x.UserCode == ga.Code)
+ .LeftJoin((x, ga, dept) => ga.DepartmentNo == dept.No)
+ .Select((x, ga, dept) => new GainfoFingerprintResponse
+ {
+ UserCode = x.UserCode,
+ UserName = ga.Name,
+ DepartmentNo = dept.No,
+ DepartmentName = dept.Name,
+ FingerNum = x.FingerNum,
+ Fingerprint = x.Fingerprint
+ })
+ .ToListAsync();
+ }
+ }
+}
diff --git a/Src/Dlhis.Entity/Basic/Entity/GainfoFingerprintEntity.cs b/Src/Dlhis.Entity/Basic/Entity/GainfoFingerprintEntity.cs
new file mode 100644
index 00000000..6e38bd1b
--- /dev/null
+++ b/Src/Dlhis.Entity/Basic/Entity/GainfoFingerprintEntity.cs
@@ -0,0 +1,34 @@
+using Kurisu.AspNetCore.DataAccess.Entity;
+using Kurisu.AspNetCore.DataAccess.SqlSugar;
+using SqlSugar;
+
+namespace Dlhis.Entity.Basic.Entity;
+
+///
+/// 人员指纹数据
+///
+[SugarTable(TableName = "GainfoFingerprints", TableDescription = "人员指纹数据")]
+public class GainfoFingerprintEntity : SugarBaseEntity, ITenantId
+{
+ ///
+ /// 工号
+ ///
+ [SugarColumn(UniqueGroupNameList = new[] { "idx_GainfoFingerprints_userCode_fingerNum" })]
+ public string UserCode { get; set; }
+
+ ///
+ /// 手指号, 为1-10, 代表左右手的五个手指, 左小指为1, 左无名指为2, 左中指为3, 左食指为4, 左拇指为5, 右拇指为6, 右食指为7, 右中指为8, 右无名指为9, 右小指为10
+ ///
+ [SugarColumn(UniqueGroupNameList = new[] { "idx_GainfoFingerprints_userCode_fingerNum" })]
+ public int FingerNum { get; set; }
+
+ ///
+ /// 指纹数据
+ ///
+ public string Fingerprint { get; set; }
+
+ ///
+ /// 租户ID
+ ///
+ public string TenantId { get; set; }
+}