diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs
index 0177d5c5..91a7c67f 100644
--- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs
+++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs
@@ -53,4 +53,14 @@ public class DevicePermissionManuallyController : ControllerBase
{
await _devicePermissionService.DeleteAsync(id);
}
+
+ ///
+ /// 删除权限
+ ///
+ ///
+ [HttpPost("batchDelete")]
+ public async Task DeleteAsync(List ids)
+ {
+ await _devicePermissionService.DeleteAsync(ids);
+ }
}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs b/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs
index 21851ee5..77273fa1 100644
--- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs
+++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs
@@ -29,4 +29,11 @@ public interface IDevicePermissionManuallyService : IScopeDependency
///
///
Task DeleteAsync(long id);
+
+ ///
+ /// 批量删除
+ ///
+ ///
+ ///
+ Task DeleteAsync(List ids);
}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs
index b6dcc939..218adb8c 100644
--- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs
+++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs
@@ -152,7 +152,6 @@ public class DeviceGroupService : IDeviceGroupService
else
{
//当前组没有tenant级别
-
var currentAssignedToOthers = await _dbContext.Queryable()
.Where(x => x.AssignType != AssignTypeEnumType.Tenant)
.Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group)
@@ -170,7 +169,7 @@ public class DeviceGroupService : IDeviceGroupService
.Where(x => x.AssignType == AssignTypeEnumType.Tenant)
.Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group)
.Where(x => groupCodes.Contains(x.UniqueValue))
- .AnyAsync() && currentAssignedToOthers)
+ .AnyAsync() && currentAssignedToOthers && group.IsBusinessTrip == false)
{
true.ThrowIfTrue("存在设备所在的分组已分配到厂区级别,但当前分组存在其他级别的分配");
}
diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs
index e77899d5..28831e3f 100644
--- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs
+++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs
@@ -1,6 +1,7 @@
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Entity.Basic.Entity;
+using Dlhis.Entity.Basic.Enums;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
@@ -46,7 +47,8 @@ public class DevicePermissionManuallyService : IDevicePermissionManuallyService
var gainfo = await _dbContext.Queryable().Where(x => x.No == request.UserNo).SingleAsync();
gainfo.ThrowIfNull("人员不存在");
-
+ //var types = new List { GainfoUserTypeEnumType.Normal, GainfoUserTypeEnumType.SecurityWhite };
+ //types.Contains(gainfo.Type).ThrowIfFalse($"人员类型为:{gainfo.Type.GetDescription()},无法分配");
await _dbContext.InsertAsync(new DevicePermissionManuallyEntity
{
@@ -73,32 +75,43 @@ public class DevicePermissionManuallyService : IDevicePermissionManuallyService
///
public async Task DeleteAsync(long id)
{
- var data = await _dbContext.Queryable().Where(x => x.Id == id).SingleAsync();
- data.ThrowIfNull("数据不存在");
+ await DeleteAsync(new List { id });
+ }
- var device = await _dbContext.Queryable().Where(x => x.Code == data.DeviceCode).SingleAsync();
- if (device != null)
+ public async Task DeleteAsync(List ids)
+ {
+ var data = await _dbContext.Queryable().Where(x => ids.Contains(x.Id)).ToListAsync();
+ var deviceCodes = data.Select(x => x.DeviceCode).Distinct().ToList();
+ var devices = await _dbContext.Queryable().Where(x => deviceCodes.Contains(x.Code)).ToListAsync();
+
+ foreach (var item in data)
{
- var userNo = await _dbContext.Queryable().Where(x => x.No == data.UserNo).Select(x => x.No).SingleAsync();
- if (userNo.IsPresent())
- {
- await _dbContext.InsertAsync(new DeviceTaskEntity
- {
- Type = DeviceTaskEnumType.Delete,
- DeviceType = device.Type,
- UserId = null,
- UserNo = userNo,
- DeviceUniqueNo = device.UniqueNo,
- Status = DeviceTaskStatusEnumType.Wait,
- Version = 0,
- ResultMessage = null,
- Source = "手动分配额外权限",
- Priority = 0,
- TenantId = device.TenantId
- });
- }
- }
+ var userInfo = await _dbContext.Queryable().Where(x => x.No == item.UserNo).Select(x => new { x.Id, x.No }).SingleAsync()
+ ?? await _dbContext.Queryable().Where(x => x.No == item.UserNo).Select(x => new { Id = (long)x.IdentityUserId, x.No }).SingleAsync();
- await _dbContext.DeleteAsync(data);
+ if (userInfo != null)
+ {
+ var device = devices.FirstOrDefault(x => x.Code == item.DeviceCode);
+ if (device != null)
+ {
+ await _dbContext.InsertAsync(new DeviceTaskEntity
+ {
+ Type = DeviceTaskEnumType.Delete,
+ DeviceType = device.Type,
+ UserId = userInfo.Id,
+ UserNo = userInfo.No,
+ DeviceUniqueNo = device.UniqueNo,
+ Status = DeviceTaskStatusEnumType.Wait,
+ Version = 0,
+ ResultMessage = null,
+ Source = "手动分配额外权限",
+ Priority = 0,
+ TenantId = device.TenantId
+ });
+ }
+ }
+
+ await _dbContext.DeleteAsync(item);
+ }
}
}
\ No newline at end of file