fix excel导入生成权限和任务
This commit is contained in:
@@ -50,6 +50,15 @@ public class DevicePermissionsController : ControllerBase
|
|||||||
await _devicePermissionService.AssignToUniqueAsync(request);
|
await _devicePermissionService.AssignToUniqueAsync(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[AllowAnonymous]
|
||||||
|
[HttpPost("assign-unique-import")]
|
||||||
|
[Transactional]
|
||||||
|
[IgnoreTenant]
|
||||||
|
public async Task AssignToUniqueImportAsync(IFormFile file)
|
||||||
|
{
|
||||||
|
await _devicePermissionService.AssignToUniqueImportAsync(file);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 当前类型的权限分配
|
/// 当前类型的权限分配
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ public interface IDevicePermissionService : IScopeDependency
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task AssignToUniqueAsync(DevicePermissionsAssignToDeviceRequest request);
|
Task AssignToUniqueAsync(DevicePermissionsAssignToDeviceRequest request);
|
||||||
|
|
||||||
|
|
||||||
|
Task AssignToUniqueImportAsync(IFormFile file);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取分配的权限
|
/// 获取分配的权限
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
|
|||||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
||||||
using Kurisu.AspNetCore.Scope;
|
using Kurisu.AspNetCore.Scope;
|
||||||
using Kurisu.AspNetCore.Utils.Extensions;
|
using Kurisu.AspNetCore.Utils.Extensions;
|
||||||
|
using OfficeOpenXml;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
|
||||||
namespace Dlhis.Basic.Device.Services.Implements;
|
namespace Dlhis.Basic.Device.Services.Implements;
|
||||||
@@ -161,10 +162,69 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
|
|
||||||
await _dbContext.InsertAsync(devicePermissions);
|
await _dbContext.InsertAsync(devicePermissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
}, gainfoNos);
|
}, 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)
|
public async Task<List<Guid>> GetAssignmentsAsync(DeviceGetAssignmentsRequest request)
|
||||||
{
|
{
|
||||||
request.AssignValue = request.AssignType == AssignTypeEnumType.Department ? request.TenantId + ":" + request.AssignValue : request.AssignValue;
|
request.AssignValue = request.AssignType == AssignTypeEnumType.Department ? request.TenantId + ":" + request.AssignValue : request.AssignValue;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="EPPlus" Version="7.5.1" />
|
||||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />
|
||||||
<PackageReference Include="Minio" Version="6.0.3" />
|
<PackageReference Include="Minio" Version="6.0.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user