fix 优化分配出差组和例外批量删除
This commit is contained in:
@@ -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<GainfoEntity>().Where(x => x.No == request.UserNo).SingleAsync();
|
||||
gainfo.ThrowIfNull("人员不存在");
|
||||
|
||||
//var types = new List<GainfoUserTypeEnumType> { 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
|
||||
/// <inheritdoc />
|
||||
public async Task DeleteAsync(long id)
|
||||
{
|
||||
var data = await _dbContext.Queryable<DevicePermissionManuallyEntity>().Where(x => x.Id == id).SingleAsync();
|
||||
data.ThrowIfNull("数据不存在");
|
||||
await DeleteAsync(new List<long> { id });
|
||||
}
|
||||
|
||||
var device = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Code == data.DeviceCode).SingleAsync();
|
||||
if (device != null)
|
||||
public async Task DeleteAsync(List<long> ids)
|
||||
{
|
||||
var data = await _dbContext.Queryable<DevicePermissionManuallyEntity>().Where(x => ids.Contains(x.Id)).ToListAsync();
|
||||
var deviceCodes = data.Select(x => x.DeviceCode).Distinct().ToList();
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => deviceCodes.Contains(x.Code)).ToListAsync();
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
var userNo = await _dbContext.Queryable<GainfoEntity>().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<GainfoEntity>().Where(x => x.No == item.UserNo).Select(x => new { x.Id, x.No }).SingleAsync()
|
||||
?? await _dbContext.Queryable<GainfoLeaveEntity>().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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user