diff --git a/Src/Dlhis.Basic/Device/Request/DeviceSetResigterBusinessPlaceRequest.cs b/Src/Dlhis.Basic/Device/Request/DeviceSetResigterBusinessPlaceRequest.cs index ef87f679..fb750ea1 100644 --- a/Src/Dlhis.Basic/Device/Request/DeviceSetResigterBusinessPlaceRequest.cs +++ b/Src/Dlhis.Basic/Device/Request/DeviceSetResigterBusinessPlaceRequest.cs @@ -10,6 +10,6 @@ /// /// 营业点 /// - public Guid BusinessPlaceCode { get; set; } + public Guid? BusinessPlaceCode { get; set; } } } diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs index 70cb0034..810c377d 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs @@ -3,9 +3,7 @@ using Dlhis.Basic.Device.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Enums; -using Kurisu.AspNetCore.UnifyResultAndValidation; using Kurisu.AspNetCore.Utils.Extensions; -using Kurisu.SqlSugar.Attributes; using Kurisu.SqlSugar.Services; using Mapster; @@ -20,7 +18,7 @@ public class DeviceConnectService : IDeviceConnectService _dbContext = dbContext; } - + public async Task ResigterAsync(DeviceResigterRequest request) { var businessPlace = await _dbContext.Queryable().Where(x => x.CustomCode == request.BusinessCustomCode).FirstAsync(); @@ -55,7 +53,7 @@ public class DeviceConnectService : IDeviceConnectService public async Task> GetNotSetBusinessPlaceDevicesAsync() { var devices = await _dbContext.Queryable().Where(x => x.Enable).ToListAsync(); - devices = devices.Where(x => x.Funcs.Any(item => item == DeviceFuncEnumType.Meal)).ToList(); + devices = devices.Where(x => x.Type == DeviceTypeEnumType.Meal).ToList(); return devices.Adapt>(); } @@ -63,26 +61,31 @@ public class DeviceConnectService : IDeviceConnectService public async Task SetResigterBusinessPlaceAsync(DeviceSetResigterBusinessPlaceRequest request) { var device = await GetEnableDeviceAsync(request.UniqueNo); - if (device.Funcs?.Any(x => x == DeviceFuncEnumType.Meal) != true) - { - throw new UserFriendlyException("当前设备无用餐功能,无法设置"); - } + (device.Type != DeviceTypeEnumType.Meal).ThrowIfTrue("非就餐类型设备,无法设置"); var registry = await _dbContext.Queryable().Where(x => x.DeviceUniqueNo == request.UniqueNo).FirstAsync(); registry.ThrowIfNull($"{request.UniqueNo}的设备注册信息不存在,无法设置营业点"); - var businessPlace = await _dbContext.Queryable().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync(); - businessPlace.ThrowIfNull("营业点不存在,无法设置到设备注册信息中"); + if (request.BusinessPlaceCode.HasValue) + { + var businessPlace = await _dbContext.Queryable().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync(); + businessPlace.ThrowIfNull("营业点不存在,无法设置到设备注册信息中"); - //更新营业点信息 - registry.BusinessPlaceCode = businessPlace.Code; - registry.BusinessPlaceCustomCode = businessPlace.CustomCode; + //更新营业点信息 + registry.BusinessPlaceCode = businessPlace.Code; + registry.BusinessPlaceCustomCode = businessPlace.CustomCode; + } + else + { + //更新营业点信息 + registry.BusinessPlaceCode = null; + registry.BusinessPlaceCustomCode = null; + } await _dbContext.UpdateAsync(registry); - //todo 通知设备重新获取 } - + public async Task HeartbeatAsync(DeviceHeartbeatRequest request) { var registry = await _dbContext.Queryable().Where(x => x.DeviceUniqueNo == request.UniqueNo).FirstAsync(); diff --git a/Src/Dlhis.Entity/Device/Enums/DeviceFuncEnumType.cs b/Src/Dlhis.Entity/Device/Enums/DeviceFuncEnumType.cs index d8985ae7..b60112f4 100644 --- a/Src/Dlhis.Entity/Device/Enums/DeviceFuncEnumType.cs +++ b/Src/Dlhis.Entity/Device/Enums/DeviceFuncEnumType.cs @@ -8,23 +8,11 @@ namespace Dlhis.Entity.Device.Enums; [Description("设备功能")] public enum DeviceFuncEnumType { - /// - /// 门禁 - /// - [Description("门禁")] - Door = 1, - - /// - /// 就餐 - /// - [Description("就餐")] - Meal, - /// /// 人脸 /// [Description("人脸")] - Face, + Face = 1, /// /// 刷卡 @@ -38,22 +26,9 @@ public enum DeviceFuncEnumType [Description("二维码")] QrCode, - /// /// 布控 /// [Description("布控")] Control, - - /// - /// 考勤 - /// - [Description("考勤")] - Attendance, - - /// - /// 计划 - /// - [Description("计划")] - Schedule } diff --git a/Src/Dlhis.Sys/Identity/Controllers/TenantsController.cs b/Src/Dlhis.Sys/Identity/Controllers/TenantsController.cs index 1a0a605d..f34fb7ab 100644 --- a/Src/Dlhis.Sys/Identity/Controllers/TenantsController.cs +++ b/Src/Dlhis.Sys/Identity/Controllers/TenantsController.cs @@ -61,6 +61,17 @@ public class TenantsController : ControllerBase return await _tenantService.GetTenantByCode(code); } + /// + /// 保存租户 + /// + /// + /// + [HttpPost("save")] + public async Task SaveTenantAsync(TenantSaveRequest request) + { + await _tenantService.SaveTenantAsync(request); + } + /// /// 获取我的管理租户 /// diff --git a/Src/Dlhis.Sys/Identity/Request/TenantSaveRequest.cs b/Src/Dlhis.Sys/Identity/Request/TenantSaveRequest.cs new file mode 100644 index 00000000..a065d331 --- /dev/null +++ b/Src/Dlhis.Sys/Identity/Request/TenantSaveRequest.cs @@ -0,0 +1,20 @@ +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Sys.Identity.Request; + +public class TenantSaveRequest +{ + public int? Id { get; set; } + + /// + /// 代码 + /// + [Required(ErrorMessage = "基地/租户代码不能为空")] + public string Code { get; set; } + + /// + /// 名称 + /// + [Required(ErrorMessage = "基地/租户名称不能为空")] + public string Name { get; set; } +} diff --git a/Src/Dlhis.Sys/Identity/Services/ITenantService.cs b/Src/Dlhis.Sys/Identity/Services/ITenantService.cs index c8a144fb..4c58ad63 100644 --- a/Src/Dlhis.Sys/Identity/Services/ITenantService.cs +++ b/Src/Dlhis.Sys/Identity/Services/ITenantService.cs @@ -13,4 +13,6 @@ public interface ITenantService : IScopeDependency Task GetTenantByCode(string code); Task> GetMyTenantsAsync(); + + Task SaveTenantAsync(TenantSaveRequest request); } diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/TenantService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/TenantService.cs index 441bd744..7dfbbff8 100644 --- a/Src/Dlhis.Sys/Identity/Services/Implements/TenantService.cs +++ b/Src/Dlhis.Sys/Identity/Services/Implements/TenantService.cs @@ -45,6 +45,29 @@ public class TenantService : ITenantService .FirstAsync(); } + + public async Task SaveTenantAsync(TenantSaveRequest request) + { + if (!request.Id.HasValue) + { + await _dbContext.InsertAsync(new TenantEntity + { + Code = request.Code, + Name = request.Name, + }); + } + else + { + var entity = await _dbContext.Queryable().FirstAsync(x => x.Id == request.Id); + entity.ThrowIfNull("基地/租户信息不存在"); + + entity.Code = request.Code; + entity.Name = request.Name; + + await _dbContext.UpdateAsync(entity); + } + } + public async Task> GetMyTenantsAsync() { var userId = _currentUser.GetIntSubjectId();