fix excel导入生成权限和任务
This commit is contained in:
@@ -19,6 +19,7 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
|
||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
||||
using Kurisu.AspNetCore.Scope;
|
||||
using Kurisu.AspNetCore.Utils.Extensions;
|
||||
using OfficeOpenXml;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Dlhis.Basic.Device.Services.Implements;
|
||||
@@ -161,10 +162,69 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
|
||||
await _dbContext.InsertAsync(devicePermissions);
|
||||
}
|
||||
|
||||
}, gainfoNos);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task AssignToUniqueImportAsync(IFormFile file)
|
||||
{
|
||||
var deviceNo = Path.GetFileNameWithoutExtension(file.FileName);
|
||||
|
||||
var device = await _dbContext.Queryable<DeviceEntity>().Where(x => x.UniqueNo == deviceNo).SingleAsync();
|
||||
device.ThrowIfNull("设备不存在");
|
||||
|
||||
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
||||
using (var package = new ExcelPackage(file.OpenReadStream()))
|
||||
{
|
||||
ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
|
||||
int rowCount = worksheet.Dimension.Rows; // 获取行数
|
||||
int colCount = worksheet.Dimension.Columns; // 获取列数
|
||||
|
||||
var list = new List<string>();
|
||||
for (int i = 1; i < rowCount; i++)
|
||||
{
|
||||
var userCode = worksheet.Cells[i + 1, 2].GetCellValue<string>();
|
||||
list.Add(userCode);
|
||||
}
|
||||
|
||||
foreach (var items in list.Chunk(500))
|
||||
{
|
||||
var gainfoNos = await _dbContext.Queryable<GainfoEntity>().Where(x => items.Contains(x.Code)).Select(x => x.No).ToListAsync();
|
||||
|
||||
var permissions = gainfoNos.Select(x => new DevicePermissionEntity
|
||||
{
|
||||
AssignType = AssignTypeEnumType.User,
|
||||
AssignValue = x,
|
||||
UniqueType = DeviceAssignmentTypeEnumType.Device,
|
||||
UniqueValue = device.Code,
|
||||
Type = device.Type,
|
||||
TenantId = device.TenantId,
|
||||
IsDeleted = false
|
||||
}).ToList();
|
||||
|
||||
await _dbContext.InsertAsync(permissions);
|
||||
|
||||
var tasks = permissions.Select(x => new DeviceTaskEntity
|
||||
{
|
||||
Type = DeviceTaskEnumType.Add,
|
||||
DeviceType = x.Type,
|
||||
UserId = null,
|
||||
UserNo = x.AssignValue,
|
||||
DeviceUniqueNo = device.UniqueNo,
|
||||
Status = DeviceTaskStatusEnumType.Wait,
|
||||
Version = 0,
|
||||
ResultMessage = null,
|
||||
CancellationId = 0,
|
||||
Source = DeviceTaskSourceEnumType.Manually,
|
||||
Priority = 0,
|
||||
TenantId = device.TenantId,
|
||||
}).ToList();
|
||||
|
||||
await _dbContext.InsertAsync(tasks);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<Guid>> GetAssignmentsAsync(DeviceGetAssignmentsRequest request)
|
||||
{
|
||||
request.AssignValue = request.AssignType == AssignTypeEnumType.Department ? request.TenantId + ":" + request.AssignValue : request.AssignValue;
|
||||
|
||||
Reference in New Issue
Block a user