From 823adaff1f6dd3fcd8c5151cea9bacf1c2991842 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 19 Jun 2024 14:38:03 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix=20I=5FALLINFO=3DX=E7=A7=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/Services/Implements/JinkoSapService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoSapService.cs b/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoSapService.cs index f58754a9..ab9959fa 100644 --- a/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoSapService.cs +++ b/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoSapService.cs @@ -74,7 +74,7 @@ public class JinkoSapService : IJinkoSapService var body = new { - I_ALLINFO = "X", + //I_ALLINFO = "X", T_WERKS = new { item = new List @@ -123,7 +123,7 @@ public class JinkoSapService : IJinkoSapService var body = new { - I_ALLINFO = "X", + //I_ALLINFO = "X", T_WERKS = Array.Empty(), T_PERSON = Array.Empty(), T_PNO = new From 78ecf1e11d75afa8ff7465d5c96d6162a20386e7 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 19 Jun 2024 20:13:39 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix=20=E5=B9=B6=E5=8F=91=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Device/Services/Implements/DevicePermissionService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 38dd2a63..2a4e0125 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -212,7 +212,7 @@ public class DevicePermissionService : IDevicePermissionService var devices = await _dbContext.Queryable().Where(x => x.Enable).ToListAsync(); var waitTasks = new List(); - foreach (var userNo in userNos) + Parallel.ForEach(userNos, userNo => { before.TryGetValue(userNo, out var beforeTenantDeviceCodes); beforeTenantDeviceCodes ??= new(); @@ -270,7 +270,7 @@ public class DevicePermissionService : IDevicePermissionService waitTasks.AddRange(toDeleted.Concat(toAdd).ToList()); } - } + }); _logger.LogInformation("任务产生数量{count}", waitTasks.Count); if (waitTasks.Any()) From 813a6c8a1481db998ccc36fbf13a1456d051a7ee Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 20 Jun 2024 12:31:30 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix=20Parallel=E8=AE=A1=E7=AE=97=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E7=9A=84=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Device/Services/Implements/DevicePermissionService.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 2a4e0125..fbf1e68e 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -583,12 +583,12 @@ public class DevicePermissionService : IDevicePermissionService var result = new Dictionary>(gainfos.Count, StringComparer.OrdinalIgnoreCase); - foreach (var gainfo in gainfos) + Parallel.ForEach(gainfos, gainfo => { var codes = GetAssignDeviceCodesInternal(gainfo, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships, registries, devices); result.Add(gainfo.No, codes); - } - + }); + return result; } From 9ad98cdb17ac421dc411b281729f901e35db020b Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 20 Jun 2024 13:07:11 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix=20=E5=88=86=E9=85=8D=E5=88=86=E7=BB=84?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Filters/AssignPermissionLimitAttribute.cs | 2 +- .../Implements/DevicePermissionService.cs | 20 +++++++++---------- .../Controllers/GainfoGroupsController.cs | 6 ++++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Filters/AssignPermissionLimitAttribute.cs b/Src/Dlhis.Basic/Device/Filters/AssignPermissionLimitAttribute.cs index 9d9b6bab..42675f51 100644 --- a/Src/Dlhis.Basic/Device/Filters/AssignPermissionLimitAttribute.cs +++ b/Src/Dlhis.Basic/Device/Filters/AssignPermissionLimitAttribute.cs @@ -17,7 +17,7 @@ public class AssignPermissionLimitAttribute : Attribute, IAsyncActionFilter await using (var handler = await redisCache.LockAsync($"permission:generate:{currentTenantId}")) { - handler.Acquired.ThrowIfFalse("请勿频繁分配设备权限"); + handler.Acquired.ThrowIfFalse("请勿频繁分配"); await next(); } } diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index fbf1e68e..e0a7584a 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -1,4 +1,5 @@ -using Dlhis.Basic.Device.Dtos; +using System.Collections.Concurrent; +using Dlhis.Basic.Device.Dtos; using Dlhis.Basic.Device.Request; using Dlhis.Basic.Organization.Dto; using Dlhis.Entity.Basic.Entity; @@ -210,7 +211,7 @@ public class DevicePermissionService : IDevicePermissionService _logger.LogInformation("任务后置人数{count}", userNos.Count); var devices = await _dbContext.Queryable().Where(x => x.Enable).ToListAsync(); - var waitTasks = new List(); + var waitTasks = new ConcurrentBag(); Parallel.ForEach(userNos, userNo => { @@ -245,7 +246,7 @@ public class DevicePermissionService : IDevicePermissionService addItems = addItems.Where(x => deviceCodes.Contains(x)).ToList(); //下发任务创建 - var toDeleted = deletedItems.Select(x => new DeviceTaskEntity + deletedItems.ForEach(x => waitTasks.Add(new DeviceTaskEntity { DeviceUniqueNo = devices.First(item => item.Code == x).UniqueNo, Status = DeviceTaskStatusEnumType.Wait, @@ -255,9 +256,9 @@ public class DevicePermissionService : IDevicePermissionService UserNo = userNo, Version = 0, TenantId = tenant, - }).ToList(); + })); - var toAdd = addItems.Select(x => new DeviceTaskEntity + addItems.ForEach(x => waitTasks.Add(new DeviceTaskEntity { DeviceUniqueNo = devices.First(item => item.Code == x).UniqueNo, Status = DeviceTaskStatusEnumType.Wait, @@ -266,16 +267,14 @@ public class DevicePermissionService : IDevicePermissionService UserNo = userNo, Version = 0, TenantId = tenant, - }).ToList(); - - waitTasks.AddRange(toDeleted.Concat(toAdd).ToList()); + })); } }); _logger.LogInformation("任务产生数量{count}", waitTasks.Count); if (waitTasks.Any()) { - await _dbContext.InsertAsync(waitTasks); + await _dbContext.InsertAsync(waitTasks.ToList()); } } @@ -582,13 +581,12 @@ public class DevicePermissionService : IDevicePermissionService var deviceRelationships = await _dbContext.Queryable().ToListAsync(); var result = new Dictionary>(gainfos.Count, StringComparer.OrdinalIgnoreCase); - Parallel.ForEach(gainfos, gainfo => { var codes = GetAssignDeviceCodesInternal(gainfo, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships, registries, devices); result.Add(gainfo.No, codes); }); - + return result; } diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs index bbf9205f..89895a9f 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs @@ -1,4 +1,5 @@ -using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Device.Filters; +using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; using Dlhis.Basic.Organization.Services; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; @@ -61,8 +62,9 @@ public class GainfoGroupsController : ControllerBase /// /// [HttpPost("assign")] - [IgnoreTenant] + [AssignPermissionLimit] [Transactional] + [DataPermission] public async Task AssignGainfosAsync(GainfoAssignRequest request) { await _gainfoGroupService.AssignGainfosAsync(request);