fix 功能调整

This commit is contained in:
2024-02-01 17:46:40 +08:00
parent 2f5f6be7d7
commit 28871aa450
23 changed files with 164 additions and 59 deletions

View File

@@ -80,6 +80,7 @@ public class DeviceGroupService : IDeviceGroupService
group.ThrowIfNull("设备组不存在");
await CheckNoNextGroupAsync(group.Code);
await CheckGroupTypeMatchAsync(request, group);
//下发任务
await _devicePermissionService.GenerateDeviceTasksAsync(async () =>
@@ -87,7 +88,7 @@ public class DeviceGroupService : IDeviceGroupService
var relationships = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().Where(x => x.GroupCode == request.GroupCode).ToListAsync();
await _dbContext.DeleteAsync(relationships);
request.DeviceCodes = await _dbContext.Queryable<DeviceEntity>().Where(x => request.DeviceCodes.Contains(x.Code)).Select(x => x.Code).ToListAsync();
var entities = request.DeviceCodes.Select(x => new DeviceGroupRelationshipEntity
{
GroupCode = request.GroupCode,
@@ -115,7 +116,7 @@ public class DeviceGroupService : IDeviceGroupService
/****************************************************** help methods *********************************************************/
/// <summary>
/// 检查
/// 检查父级分组存在设备
/// </summary>
/// <param name="pCode"></param>
/// <returns></returns>
@@ -139,6 +140,25 @@ public class DeviceGroupService : IDeviceGroupService
exists.ThrowIfTrue("存在下级设备分组");
}
/// <summary>
/// 检查分组分类匹配
/// </summary>
/// <param name="request"></param>
/// <param name="group"></param>
/// <returns></returns>
private async Task CheckGroupTypeMatchAsync(DeviceAssignRequest request, DeviceGroupEntity group)
{
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => request.DeviceCodes.Contains(x.Code)).ToListAsync();
//检查分组的分类控制
if (group.Type.HasValue)
{
devices.Any(x => x.Type != group.Type).ThrowIfTrue("存在设备类型有误,无法分配到当前分组");
}
//重新赋值到请求参数中
request.DeviceCodes = devices.Select(x => x.Code).ToList();
}
/// <summary>
/// 递归获取树

View File

@@ -28,11 +28,13 @@ public class DeviceService : IDeviceService
{
var page = await _dbContext.Queryable<DeviceEntity>()
.LeftJoin<DeviceTemplateEntity>((d, dt) => d.TemplateCode == dt.Code)
.WhereIF(request.Type.HasValue, (d, dt) => d.Type == request.Type)
.Select((d, dt) => new DevicePageResponse
{
FuncsStr = d.Funcs.ToString(),
Brand = dt.Brand,
Type = d.Type,
}, true)
.ToPageListAsync(request);
@@ -72,6 +74,18 @@ public class DeviceService : IDeviceService
var entity = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Id == request.Id).FirstAsync();
entity.ThrowIfNull("设备不存在,无法更新");
//分类发生变化,检查是否存在分组
if (request.Type != entity.Type)
{
var existsG = await _dbContext.Queryable<DeviceGroupRelationshipEntity>()
.LeftJoin<DeviceGroupEntity>((dgr, dg) => dgr.GroupCode == dg.Code)
.Where((dgr, dg) => dgr.DeviceCode == entity.Code)
.Where((dgr, dg) => dg.Type != null)
.AnyAsync();
existsG.ThrowIfTrue("存在设备分组,不可修改设备分类");
}
var uniqueNo = entity.UniqueNo;
request.Adapt(entity).UniqueNo = uniqueNo;