From bebdf04d689ef7b73c2da53df07466599708e0f4 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 9 Mar 2026 17:18:26 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E4=BA=BA=E5=91=98=E6=8C=87=E7=BA=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GainfoFingerprintsController.cs | 46 ++++++++++++++++ .../Request/FingerprintCollectRequest.cs | 26 ++++++++++ .../Response/GainfoFingerprintResponse.cs | 34 ++++++++++++ .../Services/IGainfoFingerprintService.cs | 10 ++++ .../Implements/GainfoFingerprintService.cs | 52 +++++++++++++++++++ .../Basic/Entity/GainfoFingerprintEntity.cs | 34 ++++++++++++ 6 files changed, 202 insertions(+) create mode 100644 Src/Dlhis.Basic/Organization/Controllers/GainfoFingerprintsController.cs create mode 100644 Src/Dlhis.Basic/Organization/Request/FingerprintCollectRequest.cs create mode 100644 Src/Dlhis.Basic/Organization/Response/GainfoFingerprintResponse.cs create mode 100644 Src/Dlhis.Basic/Organization/Services/IGainfoFingerprintService.cs create mode 100644 Src/Dlhis.Basic/Organization/Services/Implements/GainfoFingerprintService.cs create mode 100644 Src/Dlhis.Entity/Basic/Entity/GainfoFingerprintEntity.cs 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; } +}