diff --git a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs index 11eb65ce..124833aa 100644 --- a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs +++ b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs @@ -106,8 +106,8 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService entity.ShiftCode = shift.Code; entity.ShiftCustomCode = shift.CustomCode; - entity.Start = request.TimePeriod.Start!.Value; - entity.End = request.TimePeriod.End!.Value; + entity.Start = request.TimePeriod.Start; + entity.End = request.TimePeriod.End; await _dbContext.InsertAsync(entity); } @@ -119,8 +119,8 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService entity.ThrowIfNull("餐次段不存在"); - entity.Start = request.TimePeriod.Start!.Value; - entity.End = request.TimePeriod.End!.Value; + entity.Start = request.TimePeriod.Start; + entity.End = request.TimePeriod.End; request.Adapt(entity); await _dbContext.UpdateAsync(entity); diff --git a/Src/Dlhis.Basic/Device/Controllers/DeviceGroupsController.cs b/Src/Dlhis.Basic/Device/Controllers/DeviceGroupsController.cs index 7da2fc1d..bf1a96c5 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DeviceGroupsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DeviceGroupsController.cs @@ -69,7 +69,7 @@ public class DeviceGroupsController : ControllerBase /// [HttpPost("assign")] [Transactional] - [DataPermission] + [CrossTenant] public async Task AssignDevicesAsync(DeviceAssignRequest request) { await _deviceGroupService.AssignDevicesAsync(request); diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs index f6ba8c1b..3cd649ae 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs @@ -30,7 +30,7 @@ public class DevicePermissionsController : ControllerBase [HttpPost("assign")] [AssignPermissionLimit] [Transactional] - [DataPermission] + [CrossTenant] public async Task AssignAsync(DevicePermissionSaveRequest request) { await _devicePermissionService.AssignAsync(request); @@ -43,7 +43,7 @@ public class DevicePermissionsController : ControllerBase [HttpPost("assign-unique")] [AssignPermissionLimit] [Transactional] - [DataPermission] + [CrossTenant] public async Task AssignToUniqueAsync(DevicePermissionsAssignToDeviceRequest request) { await _devicePermissionService.AssignToUniqueAsync(request); @@ -54,8 +54,8 @@ public class DevicePermissionsController : ControllerBase /// /// /// - [DataPermission(ignoreTenant: true, includeCustom: true)] [HttpGet("assignments")] + [CrossTenant] public async Task> GetAssignmentsAsync([FromQuery] DeviceGetAssignmentsRequest request) { return await _devicePermissionService.GetAssignmentsAsync(request); diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs index 4d83b350..0b73672c 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs @@ -3,6 +3,7 @@ using Dlhis.Basic.Device.Dtos; using Dlhis.Basic.Device.Request; using Dlhis.Basic.Device.Services; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; +using Kurisu.AspNetCore.UnifyResultAndValidation.Aop; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -28,6 +29,7 @@ public class DevicesConnectController : ControllerBase /// /// /// + [DisableApiLog] [HttpPost("heartbeat")] [IgnoreTenant] public async Task HeartbeatAsync(DeviceHeartbeatRequest request) diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs index 31002554..8a150e07 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs @@ -45,7 +45,6 @@ public class DevicesController : ControllerBase /// /// /// - [Authorize(Roles = "admin")] [HttpPost("template")] public async Task SaveTemplateAsync(DeviceTemplateSaveRequest request) { @@ -85,7 +84,7 @@ public class DevicesController : ControllerBase /// /// [HttpGet("page")] - [DataPermission(ignoreTenant: true, includeCustom: true)] + [DataPermission] public async Task> GetPageAsync([FromQuery] DevicePageRequest request) { return await _deviceService.GetPageAsync(request); @@ -125,26 +124,6 @@ public class DevicesController : ControllerBase await _deviceConnectService.SetRegisterBusinessPlaceAsync(request); } - /// - /// 检查设备是否存在 - /// - /// - [HttpGet("exists")] - public async Task CheckExistsAsync(string deviceUniqueNo) - { - return await _deviceService.CheckExistsAsync(deviceUniqueNo); - } - - /// - /// 获取考勤设备 - /// - /// - [HttpGet("attendances")] - public async Task> GetAttendanceDevicesAsync() - { - return await _deviceService.GetAttendanceDevicesAsync(); - } - /// /// 获取考勤在线/离线设备详情列表 /// diff --git a/Src/Dlhis.Basic/Device/Services/IDeviceService.cs b/Src/Dlhis.Basic/Device/Services/IDeviceService.cs index e0c950e1..ec491a37 100644 --- a/Src/Dlhis.Basic/Device/Services/IDeviceService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDeviceService.cs @@ -10,10 +10,6 @@ public interface IDeviceService : IScopeDependency Task SaveAsync(DeviceSaveRequest request); - Task CheckExistsAsync(string deviceUniqueNo); - - Task> GetAttendanceDevicesAsync(); - Task> GetOnlineStatusPageAsync(DeviceOnlineAndOfflineRequest request); Task ImportAsync(List request); diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs index 2235ace8..8a7fb47e 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs @@ -98,7 +98,7 @@ public class DeviceGroupService : IDeviceGroupService public async Task AssignDevicesAsync(DeviceAssignRequest request) { - var group = await _dbContext.Queryable().Where(x => x.Code == request.GroupCode).FirstAsync(); + var group = await _dbContext.Queryable().Where(x => x.Code == request.GroupCode).SingleAsync(); group.ThrowIfNull("设备分组不存在,无法进行分配"); await CheckNoNextGroupAsync(group.Code); diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs index d05c08a2..1e3f678b 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs @@ -34,13 +34,10 @@ public class DeviceService : IDeviceService public async Task> GetPageAsync(DevicePageRequest request) { - var tenantId = _currentUser.GetStringTenantId(); - var page = await _dbContext.Queryable() .LeftJoin((d, dt) => d.TemplateCode == dt.Code) .LeftJoin((d, dt, dr) => d.UniqueNo == dr.DeviceUniqueNo) .LeftJoin((d, dt, dr, bp) => dr.BusinessPlaceCode == bp.Code) - .Where(d => tenantId == d.TenantId) .Where((d, dt) => d.Type == request.Type) .WhereIF(request.Enable.HasValue, (d, dt) => d.Enable == request.Enable) .WhereIF(request.Search.IsPresent(), d => d.UniqueNo == request.Search || d.DeployPlace.Contains(request.Search)) @@ -65,7 +62,7 @@ public class DeviceService : IDeviceService await CheckUniqueNoExistsAsync(request); await CheckTemplateExistsAsync(request.TemplateCode); await CheckTemplateFieldAsync(request.TemplateCode, request.ConnectionInfo); - + await _deviceTimePeriodService.GenerateDeviceTimePeriodTasksAsync(async () => { DeviceEntity entity; @@ -232,70 +229,36 @@ public class DeviceService : IDeviceService /// private async Task CheckUniqueNoExistsAsync(DeviceSaveRequest request) { - var currentTenantId = _currentUser.GetStringTenantId(); - _dbContext.Client.QueryFilter.ClearAndBackup(); - try - { - //查询设备是否存在 - var device = await _dbContext.Queryable() - .Where(x => x.UniqueNo == request.UniqueNo) - .WhereIF(request.Id.HasValue, x => x.Id != request.Id) - .FirstAsync(); + await _dbContext.IgnoreAsync(async () => + { + var currentTenantId = _currentUser.GetStringTenantId(); - if (device != null) - { - (device.TenantId == currentTenantId).ThrowIfTrue("设备已经存在,请检查"); + //查询设备是否存在 + var device = await _dbContext.Queryable() + .Where(x => x.UniqueNo == request.UniqueNo) + .WhereIF(request.Id.HasValue, x => x.Id != request.Id) + .SingleAsync(); - var factory = device.TenantId; - try - { - var tenantResult = await _tenantApi.GetTenantByCodeAsync(device.TenantId); - factory = tenantResult?.Data?.Name ?? string.Empty; - } - catch (Exception) - { - //ignore - } + if (device != null) + { + (device.TenantId == currentTenantId).ThrowIfTrue("设备已经存在,请检查"); - true.ThrowIfTrue($"设备已添加{factory}厂区"); - } - } - finally - { - _dbContext.Client.QueryFilter.Restore(); - } - } - - - public async Task CheckExistsAsync(string deviceUniqueNo) - { - _dbContext.Client.QueryFilter.ClearAndBackup(); - try - { - return await _dbContext.Queryable() - .Where(x => x.UniqueNo == deviceUniqueNo && x.Enable) - .AnyAsync(); - } - finally - { - _dbContext.Client.QueryFilter.Restore(); - } - } - - - public async Task> GetAttendanceDevicesAsync() - { - var devices = await _dbContext.Queryable() - .Where(x => x.Enable) - .Where(x => x.Type == DeviceTypeEnumType.Attendance || (x.Type == DeviceTypeEnumType.Door && x.AsAttendance)) - .Select(x => new DeviceResponse - { - FuncsStr = x.Funcs.ToString() - }, true) - .ToListAsync(); - - return devices.Where(x => x.Type == DeviceTypeEnumType.Attendance).ToList(); + var factory = device.TenantId; + try + { + var tenantResult = await _tenantApi.GetTenantByCodeAsync(device.TenantId); + factory = tenantResult?.Data?.Name ?? string.Empty; + } + catch (Exception) + { + //ignore + } + + true.ThrowIfTrue($"设备已添加{factory}厂区"); + } + }); } + /// /// 获取离线设备 diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs index 89895a9f..ddcf6acc 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs @@ -64,7 +64,7 @@ public class GainfoGroupsController : ControllerBase [HttpPost("assign")] [AssignPermissionLimit] [Transactional] - [DataPermission] + [CrossTenant] public async Task AssignGainfosAsync(GainfoAssignRequest request) { await _gainfoGroupService.AssignGainfosAsync(request); diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceSettingController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceSettingController.cs index 9af5b180..84676457 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceSettingController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceSettingController.cs @@ -30,7 +30,7 @@ public class GainfoOutsourceSettingController : ControllerBase [HttpPost("save")] [AssignPermissionLimit] [Transactional] - [DataPermission] + [CrossTenant] public async Task SaveAsync(GainfoOutsourceSettingSaveRequest request) { await _gainfoOutSourceService.SaveAsync(request); diff --git a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs index 635b6103..fdc8d006 100644 --- a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs +++ b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs @@ -125,7 +125,8 @@ public class BusinessPlacesController : ControllerBase /// [HttpPost("device/assign")] [AssignPermissionLimit] - [DataPermission] + [Transactional] + [CrossTenant] public async Task Assign(DispositionDeviceRequest request) { await _businessPlaceShiftService.AssignAsync(request); diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index a88c2920..51c5b2e5 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -196,7 +196,7 @@ public class OrderService : BaseOrderService, IOrderService { Start = x.Start, End = x.End - }.IsPresent1(request.CostDateTime)); + }.IsPresent(request.CostDateTime)); var costDate = await GetCostDateAsync(shift, request.CostDateTime); @@ -323,7 +323,7 @@ public class OrderService : BaseOrderService, IOrderService { Start = x.Start, End = x.End - }.IsPresent1(request.CostDateTime)); + }.IsPresent(request.CostDateTime)); shift.ThrowIfNull("非就餐时间,无法消费"); _logs.Add("检验设备和营业点参数:" + _sw.ElapsedMilliseconds); diff --git a/Src/Dlhis.Canteen/Order/TimePeriodExtensions.cs b/Src/Dlhis.Canteen/Order/TimePeriodExtensions.cs deleted file mode 100644 index b4c9df6c..00000000 --- a/Src/Dlhis.Canteen/Order/TimePeriodExtensions.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Kurisu.AspNetCore.CustomClass; - -namespace Dlhis.Canteen.Order; - - -/// -/// 临时的扩展类 todo: 嵌入框架 -/// -public static class TimePeriodExtensions -{ - public static bool IsPresent1(this TimePeriod period, DateTime dateTime) - { - DateTime start; - DateTime end; - - if (period.IsCrossDay()) - { - //period = [22:00:00,03:00:00] - var currentStart = dateTime.Date.Add(period.Start.Value.ToTimeSpan()); - var endOfDay = dateTime.Date.AddDays(1).AddSeconds(-1); - - //assume is left range . then currentStart is 2024-04-16 22:00:00 and endOfDay is 2024-04-16 23:59:59 - if (dateTime >= currentStart && dateTime <= endOfDay) - { - start = currentStart; //2024-04-16 22:00:00 - end = dateTime.Date.AddDays(1).Add(period.End.Value.ToTimeSpan());//2024-04-17 03:00:00 - } - else - { - start = dateTime.Date.AddDays(-1).Add(period.Start.Value.ToTimeSpan()); - end = dateTime.Date.Add(period.End.Value.ToTimeSpan()); - } - } - else - { - start = dateTime.Date.Add(period.Start.Value.ToTimeSpan()); - end = dateTime.Date.Add(period.End.Value.ToTimeSpan()); - } - - return dateTime >= start && dateTime <= end; - } -} diff --git a/Src/Dlhis.Common/ApiLog/Controller/ApiLogController.cs b/Src/Dlhis.Common/ApiLog/Controller/ApiLogController.cs index ca55a64f..33f3f613 100644 --- a/Src/Dlhis.Common/ApiLog/Controller/ApiLogController.cs +++ b/Src/Dlhis.Common/ApiLog/Controller/ApiLogController.cs @@ -2,6 +2,7 @@ using Dlhis.Common.ApiLog.Response; using Dlhis.Common.ApiLog.Services.Implements; using Kurisu.AspNetCore.DataAccess.Dto; +using Kurisu.AspNetCore.UnifyResultAndValidation.Aop; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -26,7 +27,7 @@ public class ApiLogController : ControllerBase /// 获取api日志 /// /// - [Authorize(Roles = "admin")] + [DisableApiLog] [HttpGet("logs")] public async Task> GetLogsAsync([FromQuery] ApiLogRequest request) { diff --git a/Src/Dlhis.Common/EnumSetting/EnumsController.cs b/Src/Dlhis.Common/EnumSetting/EnumsController.cs index 61f33eef..9b9fbac1 100644 --- a/Src/Dlhis.Common/EnumSetting/EnumsController.cs +++ b/Src/Dlhis.Common/EnumSetting/EnumsController.cs @@ -3,6 +3,7 @@ using Dlhis.Common.FileOperation.Response; using Dlhis.Entity.Basic.Entity; using Kurisu.AspNetCore.CustomClass; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; +using Kurisu.AspNetCore.UnifyResultAndValidation.Aop; using Kurisu.AspNetCore.Utils.Extensions; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -29,6 +30,7 @@ public class EnumsController : ControllerBase /// /// code /// + [DisableApiLog] [HttpGet] public List GetEnums(string code) { diff --git a/Src/Dlhis.Entity/Dlhis.Entity.csproj b/Src/Dlhis.Entity/Dlhis.Entity.csproj index 99111288..7ef1fcfc 100644 --- a/Src/Dlhis.Entity/Dlhis.Entity.csproj +++ b/Src/Dlhis.Entity/Dlhis.Entity.csproj @@ -11,7 +11,7 @@ - + diff --git a/Src/Dlhis.Middle/Services/Implements/OrderService.cs b/Src/Dlhis.Middle/Services/Implements/OrderService.cs index 88db86de..98126066 100644 --- a/Src/Dlhis.Middle/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Middle/Services/Implements/OrderService.cs @@ -146,7 +146,7 @@ public class OrderService : IOrderService { Start = TimeOnly.FromDateTime(x.Start), End = TimeOnly.FromDateTime(x.End) - }.IsPresent1(request.CostDateTime)); + }.IsPresent(request.CostDateTime)); shift.ThrowIfNull("非就餐时间,无法消费"); var costDate = await GetCostDateAsync(shift, request.CostDateTime); diff --git a/Src/Dlhis.Middle/TimePeriodExtensions.cs b/Src/Dlhis.Middle/TimePeriodExtensions.cs deleted file mode 100644 index 21a93c43..00000000 --- a/Src/Dlhis.Middle/TimePeriodExtensions.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Kurisu.AspNetCore.CustomClass; - -namespace Dlhis.Middle; - - -/// -/// 临时的扩展类 todo: 嵌入框架 -/// -public static class TimePeriodExtensions -{ - public static bool IsPresent1(this TimePeriod period, DateTime dateTime) - { - DateTime start; - DateTime end; - - if (period.IsCrossDay()) - { - //period = [22:00:00,03:00:00] - var currentStart = dateTime.Date.Add(period.Start.Value.ToTimeSpan()); - var endOfDay = dateTime.Date.AddDays(1).AddSeconds(-1); - - //assume is left range . then currentStart is 2024-04-16 22:00:00 and endOfDay is 2024-04-16 23:59:59 - if (dateTime >= currentStart && dateTime <= endOfDay) - { - start = currentStart; //2024-04-16 22:00:00 - end = dateTime.Date.AddDays(1).Add(period.End.Value.ToTimeSpan());//2024-04-17 03:00:00 - } - else - { - start = dateTime.Date.AddDays(-1).Add(period.Start.Value.ToTimeSpan()); - end = dateTime.Date.Add(period.End.Value.ToTimeSpan()); - } - } - else - { - start = dateTime.Date.Add(period.Start.Value.ToTimeSpan()); - end = dateTime.Date.Add(period.End.Value.ToTimeSpan()); - } - - return dateTime >= start && dateTime <= end; - } -} diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs index 0f20bfe0..61e93e16 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs @@ -2,6 +2,7 @@ using Dlhis.ScheduledTask.TaskAssignment.Response; using Dlhis.ScheduledTask.TaskAssignment.Services; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; +using Kurisu.AspNetCore.UnifyResultAndValidation.Aop; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -26,6 +27,7 @@ public class AssignmentsController : ControllerBase /// 获取设备任务(按设备) /// /// + [DisableApiLog] [IgnoreTenant] [HttpGet("deviceTasks")] public async Task> DeviceGetTasksGetAsync([FromQuery] DeviceTaskGetRequest request) @@ -37,6 +39,7 @@ public class AssignmentsController : ControllerBase /// 获取设备任务(按设备) /// /// + [DisableApiLog] [HttpPost("deviceTasks")] [IgnoreTenant] public async Task> DeviceGetTasksPostAsync(DeviceTaskGetRequest request) @@ -49,7 +52,8 @@ public class AssignmentsController : ControllerBase /// /// /// - [HttpPost("taskstatus")] + [DisableApiLog] + [HttpPost("taskStatus")] [IgnoreTenant] public async Task UpdateDeviceTaskStatusAsync(List requests) { diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/DeviceTaskAssignmentsController.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/DeviceTaskAssignmentsController.cs index 6074357e..1a558741 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/DeviceTaskAssignmentsController.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/DeviceTaskAssignmentsController.cs @@ -28,8 +28,8 @@ public class DeviceTaskAssignmentsController : ControllerBase /// /// /// - [DataPermission] [HttpGet("page")] + [CrossTenant] public async Task> GetPageAsync([FromQuery] DeviceTaskAssignmentRequest request) { return await _deviceTaskAssignmentService.GetPageAsync(request);