From d4e79296611184ea9b09a50e81e2342aaab5fe9c Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 1 Aug 2024 11:25:56 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=8E=82=E5=8C=BA=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/FactorySettingController.cs | 46 +++++++++++++++ .../Request/FactorySettingSaveRequest.cs | 19 ++++++ .../Response/FactorySettingResponse.cs | 16 +++++ .../Services/IFactorySettingService.cs | 11 ++++ .../Implements/FactorySettingService.cs | 59 +++++++++++++++++++ .../Sys/Entities/FactorySettingEntity.cs | 10 ++-- 6 files changed, 156 insertions(+), 5 deletions(-) create mode 100644 Src/Dlhis.Basic/Organization/Controllers/FactorySettingController.cs create mode 100644 Src/Dlhis.Basic/Organization/Request/FactorySettingSaveRequest.cs create mode 100644 Src/Dlhis.Basic/Organization/Response/FactorySettingResponse.cs create mode 100644 Src/Dlhis.Basic/Organization/Services/IFactorySettingService.cs create mode 100644 Src/Dlhis.Basic/Organization/Services/Implements/FactorySettingService.cs diff --git a/Src/Dlhis.Basic/Organization/Controllers/FactorySettingController.cs b/Src/Dlhis.Basic/Organization/Controllers/FactorySettingController.cs new file mode 100644 index 00000000..e6074b1f --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Controllers/FactorySettingController.cs @@ -0,0 +1,46 @@ +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Response; +using Dlhis.Basic.Organization.Services; +using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Basic.Organization.Controllers; + +/// +/// 厂区配置 +/// +[Authorize] +[Route("api/[controller]")] +[ApiController] +public class FactorySettingController : ControllerBase +{ + private readonly IFactorySettingService _factorySettingService; + + public FactorySettingController(IFactorySettingService factorySettingService) + { + _factorySettingService = factorySettingService; + } + + /// + /// 获取厂区列表 + /// + /// + [HttpGet("list")] + [IgnoreTenant] + public async Task> GetListAsync() + { + return await _factorySettingService.GetListAsync(); + } + + /// + /// 保存配置 + /// + /// + [HttpPost("save")] + [IgnoreTenant] + public async Task SaveAsync(FactorySettingSaveRequest request) + { + await _factorySettingService.SaveAsync(request); + } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Request/FactorySettingSaveRequest.cs b/Src/Dlhis.Basic/Organization/Request/FactorySettingSaveRequest.cs new file mode 100644 index 00000000..b2003fd0 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Request/FactorySettingSaveRequest.cs @@ -0,0 +1,19 @@ +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Basic.Organization.Request; + +public class FactorySettingSaveRequest +{ + [Required] + public string Factory { get; set; } + + /// + /// 外包人员自动下发 + /// + public bool EnableOutsourceDown { get; set; } + + /// + /// 档案二维码过期时间 + /// + public int? UserQrCodeExpiration { get; set; } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Response/FactorySettingResponse.cs b/Src/Dlhis.Basic/Organization/Response/FactorySettingResponse.cs new file mode 100644 index 00000000..fe69447b --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Response/FactorySettingResponse.cs @@ -0,0 +1,16 @@ +namespace Dlhis.Basic.Organization.Response; + +public class FactorySettingResponse +{ + public string Factory { get; set; } + + /// + /// 是否启用外包自动下发 + /// + public bool EnableOutsourceDown { get; set; } + + /// + /// 档案二维码过期时间 + /// + public int? UserQrCodeExpiration { get; set; } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/IFactorySettingService.cs b/Src/Dlhis.Basic/Organization/Services/IFactorySettingService.cs new file mode 100644 index 00000000..0aee4dc4 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Services/IFactorySettingService.cs @@ -0,0 +1,11 @@ +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Response; + +namespace Dlhis.Basic.Organization.Services; + +public interface IFactorySettingService : IScopeDependency +{ + Task> GetListAsync(); + + Task SaveAsync(FactorySettingSaveRequest request); +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/FactorySettingService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/FactorySettingService.cs new file mode 100644 index 00000000..76d4aca5 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Services/Implements/FactorySettingService.cs @@ -0,0 +1,59 @@ +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Response; +using Dlhis.Entity.Sys.Entities; +using Dlhis.Sys.Api; +using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; +using Mapster; + +namespace Dlhis.Basic.Organization.Services.Implements; + +public class FactorySettingService : IFactorySettingService +{ + private readonly IDbContext _dbContext; + private readonly ITenantApi _tenantApi; + + public FactorySettingService(IDbContext dbContext, ITenantApi tenantApi) + { + _dbContext = dbContext; + _tenantApi = tenantApi; + } + + public async Task> GetListAsync() + { + var apiResult = await _tenantApi.GetMyTenantsAsync(); + var factories = apiResult.Data; + + var factoryCodes = factories.Select(x => x.Code).ToList(); + var settings = await _dbContext.Queryable().Where(x => factoryCodes.Contains(x.TenantId)) + .ToListAsync(); + + return factories.Select(item => + { + return new FactorySettingResponse + { + Factory = factories.FirstOrDefault(x => x.Code == item.Code)?.Name, + EnableOutsourceDown = settings.FirstOrDefault(x => x.TenantId == item.Code)?.EnableOutsourceDown ?? false, + UserQrCodeExpiration = settings.FirstOrDefault(x => x.TenantId == item.Code)?.UserQrCodeExpiration, + }; + }).ToList(); + } + + public async Task SaveAsync(FactorySettingSaveRequest request) + { + var setting = await _dbContext.Queryable().Where(x => request.Factory == x.TenantId).SingleAsync(); + if (setting == null) + { + setting = request.Adapt(); + setting.TenantId = request.Factory; + + await _dbContext.InsertAsync(setting); + } + else + { + request.Adapt(setting); + setting.TenantId = request.Factory; + + await _dbContext.UpdateAsync(setting); + } + } +} \ No newline at end of file diff --git a/Src/Dlhis.Entity/Sys/Entities/FactorySettingEntity.cs b/Src/Dlhis.Entity/Sys/Entities/FactorySettingEntity.cs index 2c1cb8e2..2c8abf8e 100644 --- a/Src/Dlhis.Entity/Sys/Entities/FactorySettingEntity.cs +++ b/Src/Dlhis.Entity/Sys/Entities/FactorySettingEntity.cs @@ -13,20 +13,20 @@ public class FactorySettingEntity : SugarBaseEntity, ITenantId /// /// 是否启用外包自动下发 /// - [SugarColumn(ColumnDataType = "bit", ColumnDescription = "是否启用外包自动下发")] + [SugarColumn(ColumnDataType = "bit", ColumnDescription = "是否启用外包自动下发", DefaultValue = "0")] public bool EnableOutsourceDown { get; set; } /// /// 档案二维码过期时间 /// - [SugarColumn(ColumnDescription = "档案二维码过期时间")] - public int UserQrCodeExpiration { get; set; } + [SugarColumn(ColumnDescription = "档案二维码过期时间", IsNullable = true)] + public int? UserQrCodeExpiration { get; set; } /// /// 电子餐券二维码过期时间 /// - [SugarColumn(ColumnDescription = "电子餐券二维码过期时间")] - public int EMealVoucherQrCodeExpiration { get; set; } + [SugarColumn(ColumnDescription = "电子餐券二维码过期时间", IsNullable = true)] + public int? EMealVoucherQrCodeExpiration { get; set; } public string TenantId { get; set; } } \ No newline at end of file