diff --git a/Src/Dlhis.Basic/Device/Request/DeviceSaveRequest.cs b/Src/Dlhis.Basic/Device/Request/DeviceSaveRequest.cs
index 7dce3210..be1d08ae 100644
--- a/Src/Dlhis.Basic/Device/Request/DeviceSaveRequest.cs
+++ b/Src/Dlhis.Basic/Device/Request/DeviceSaveRequest.cs
@@ -56,9 +56,9 @@ public class DeviceSaveRequest : IValidatableObject
public string DeployPosition { get; set; }
///
- /// 部署方向
+ /// 部署方向 DeviceDeployDirectionEnumType
///
- public string DeployDirection { get; set; }
+ public DeviceDeployDirectionEnumType? DeployDirection { get; set; }
///
/// 连接信息
diff --git a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs
index 88f05f43..20d413df 100644
--- a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs
+++ b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs
@@ -66,7 +66,7 @@ public class DevicePageResponse
///
/// 部署方向
///
- public string DeployDirection { get; set; }
+ public DeviceDeployDirectionEnumType? DeployDirection { get; set; }
///
/// 模板code
diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs
index cf295760..ce4487f4 100644
--- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs
+++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs
@@ -71,7 +71,7 @@ public class DeviceConnectService : IDeviceConnectService
if (request.BusinessPlaceCode.HasValue)
{
var businessPlace = await _dbContext.Queryable().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync();
- businessPlace.ThrowIfNull("营业点不存在,无法设置到设备注册信息中");
+ businessPlace.ThrowIfNull("营业点不存在,无法设置到设备注册信息中");
}
//更新营业点信息
@@ -98,8 +98,8 @@ public class DeviceConnectService : IDeviceConnectService
var ipInfo = request.ConnectionInfo.ToObject();
//超时时间
- var CancellationTokenSource = new CancellationTokenSource(300);
- await new TcpClient().ConnectAsync(IPAddress.Parse(ipInfo.IP), ipInfo.Port, CancellationTokenSource.Token);
+ var cancellationTokenSource = new CancellationTokenSource(300);
+ await new TcpClient().ConnectAsync(IPAddress.Parse(ipInfo.IP), ipInfo.Port, cancellationTokenSource.Token);
return true;
}
@@ -123,8 +123,8 @@ public class DeviceConnectService : IDeviceConnectService
private async Task GetEnableDeviceAsync(string uniqueNo, bool checkExists = true, string deployPlace = "", string tenantId = "")
{
var device = await _dbContext.Queryable()
- .Where(x => x.UniqueNo == uniqueNo)
- .FirstAsync();
+ .Where(x => x.UniqueNo == uniqueNo)
+ .FirstAsync();
if (checkExists)
{
@@ -135,7 +135,7 @@ public class DeviceConnectService : IDeviceConnectService
{
if (device == null)
{
- device = new DeviceEntity()
+ device = new DeviceEntity
{
Code = Guid.NewGuid(),
ConnectionInfo = string.Empty,
@@ -146,7 +146,7 @@ public class DeviceConnectService : IDeviceConnectService
Funcs = new List(),
DeployPlace = deployPlace,
HeartbeatInterval = 0,
- DeployDirection = string.Empty,
+ DeployDirection = null,
Enable = true,
DeployPosition = string.Empty,
CreatedBy = 1,
@@ -161,4 +161,4 @@ public class DeviceConnectService : IDeviceConnectService
return device;
}
-}
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs
index 7a36922d..1599fae0 100644
--- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs
+++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs
@@ -1,13 +1,11 @@
using Dlhis.Basic.Device.Dtos;
using Dlhis.Basic.Device.Request;
-using Dlhis.Basic.Device.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Dlhis.Entity.Sys.Entities;
using Dlhis.Entity.Sys.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
-using Kurisu.Core.DataAccess.Dto;
using Kurisu.Core.DataAccess.Entity;
using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Services;
@@ -26,38 +24,36 @@ public class DevicePermissionService : IDevicePermissionService
_currentUser = currentUser;
}
- public async Task AssignAsync(DevicePermissionSaveReuqest reuqest)
+ public async Task AssignAsync(DevicePermissionSaveReuqest request)
{
+ var tenantId = request.AssignType == AssignTypeEnumType.Department ? request.TenantId : _currentUser.GetStringTenantId();
+
await GenerateDeviceTasksAsync(async () =>
{
- var tenantId = reuqest.AssignType == AssignTypeEnumType.Department ? reuqest.TenantId : _currentUser.GetStringTenantId();
-
//删除当前匹配的基地权限
var p = await _dbContext.Queryable()
- .Where(x => x.AssignType == reuqest.AssignType)
- .Where(x => x.AssignValue == reuqest.AssignValue)
- .Where(x => x.UniqueType == reuqest.UniqueType)
- .Where(x => x.TenantId == tenantId)
- .ToListAsync();
+ .Where(x => x.AssignType == request.AssignType)
+ .Where(x => x.AssignValue == request.AssignValue)
+ .Where(x => x.UniqueType == request.UniqueType)
+ .Where(x => x.TenantId == tenantId)
+ .ToListAsync();
await _dbContext.DeleteReallyAsync(p);
//保存配置的权限
- if (reuqest.Codes.IsPresent())
+ if (request.Codes.IsPresent())
{
- var devicePermissions = reuqest.Codes.Select(code => new DevicePermissionEntity
+ var devicePermissions = request.Codes.Select(code => new DevicePermissionEntity
{
- AssignType = reuqest.AssignType,
- AssignValue = reuqest.AssignValue,
- UniqueType = reuqest.UniqueType,
+ AssignType = request.AssignType,
+ AssignValue = request.AssignValue,
+ UniqueType = request.UniqueType,
UniqueValue = code,
TenantId = tenantId
- })
- .ToList();
+ }).ToList();
await _dbContext.InsertAsync(devicePermissions);
}
-
}, null);
}
@@ -277,8 +273,7 @@ public class DevicePermissionService : IDevicePermissionService
CancellationId = 0,
Version = 0,
TenantId = x.TenantId
- })
- .ToList();
+ }).ToList();
await _dbContext.InsertAsync(tasks);
}
@@ -288,11 +283,11 @@ public class DevicePermissionService : IDevicePermissionService
var all = await GetAssignDeviceCodesAsync(userNo);
return await _dbContext.Queryable()
- .Where(x => x.Enable)
- .Where(x => x.Type == DeviceTypeEnumType.Meal)
- .Where(x => all.Contains(x.Code))
- .Select(x => x.UniqueNo)
- .ToListAsync();
+ .Where(x => x.Enable)
+ .Where(x => x.Type == DeviceTypeEnumType.Meal)
+ .Where(x => all.Contains(x.Code))
+ .Select(x => x.UniqueNo)
+ .ToListAsync();
}
@@ -307,7 +302,7 @@ public class DevicePermissionService : IDevicePermissionService
var deviceRegistries = await _dbContext.Queryable().Where(x => !SqlFunc.IsNullOrEmpty(x.BusinessPlaceCode)).ToListAsync();
var gainfo = await _dbContext.Queryable().Where(x => x.No == userNo).SingleAsync()
- ?? await _dbContext.Queryable().AS("GainfoLeave").Where(x => x.No == userNo).SingleAsync();
+ ?? await _dbContext.Queryable().AS("GainfoLeave").Where(x => x.No == userNo).SingleAsync();
var gainfoGroups = await _dbContext.Queryable().ToListAsync();
var devicePermissions = await _dbContext.Queryable().ToListAsync();
@@ -349,8 +344,8 @@ public class DevicePermissionService : IDevicePermissionService
}
private static List GetAssignCodesInternal(
- List devicePermissions, List deviceGroups,
- DeviceAssignmentTypeEnumType uniqueType, AssignTypeEnumType assignType, string assignValue)
+ List devicePermissions, List deviceGroups,
+ DeviceAssignmentTypeEnumType uniqueType, AssignTypeEnumType assignType, string assignValue)
{
var tenantDevicePermissions = devicePermissions
.Where(x => x.UniqueType == uniqueType)
@@ -365,10 +360,7 @@ public class DevicePermissionService : IDevicePermissionService
{
//开始递归处理
var tops = deviceGroups.Where(x => !x.PCode.HasValue).ToList();
- tops.ForEach(x =>
- {
- RecursionGetNext(x, deviceGroups, tenantDevicePermissions, tenantDevicePermissions.SelectMany(item => item.Codes).Contains(x.Code));
- });
+ tops.ForEach(x => { RecursionGetNext(x, deviceGroups, tenantDevicePermissions, tenantDevicePermissions.SelectMany(item => item.Codes).Contains(x.Code)); });
}
return tenantDevicePermissions.GroupBy(x => x.Tenant).Select(x =>
@@ -391,6 +383,7 @@ public class DevicePermissionService : IDevicePermissionService
{
result.Add(new UserTenantDeviceCodeDto { Tenant = item.TenantId, Codes = new List { item.Code } });
}
+
RecursionGetNext(item, deviceGroups, result, result.SelectMany(x => x.Codes).Contains(item.Code));
}
}
@@ -435,7 +428,7 @@ public class DevicePermissionService : IDevicePermissionService
List deviceGroupRelationships,
List deviceRegistries,
List devices
- )
+ )
{
var userNo = gainfo.No;
var deviceDtos = new List();
@@ -492,18 +485,18 @@ public class DevicePermissionService : IDevicePermissionService
Codes = x.Select(item => item.DeviceCode).Distinct().ToList()
});
- var placeGroup = deviceRegistries.Where(x => businessPlaceCodes.Contains(x.BusinessPlaceCode!.Value)).GroupBy(x => x.TenantId)
- .Select(x =>
- {
- var currentDeviceUniqueNos = x.Select(item => item.DeviceUniqueNo).ToList();
+ var placeGroup = deviceRegistries.Where(x => businessPlaceCodes.Contains(x.BusinessPlaceCode!.Value))
+ .GroupBy(x => x.TenantId)
+ .Select(x =>
+ {
+ var currentDeviceUniqueNos = x.Select(item => item.DeviceUniqueNo).ToList();
- return new UserTenantDeviceCodeDto
- {
- Tenant = x.Key,
- Codes = devices.Where(d => currentDeviceUniqueNos.Contains(d.UniqueNo)).Select(d => d.Code).Distinct().ToList()
- };
- })
- .ToList();
+ return new UserTenantDeviceCodeDto
+ {
+ Tenant = x.Key,
+ Codes = devices.Where(d => currentDeviceUniqueNos.Contains(d.UniqueNo)).Select(d => d.Code).Distinct().ToList()
+ };
+ }).ToList();
deviceDtos.AddRange(deviceCodesByGroup);
deviceDtos.AddRange(placeGroup);
@@ -512,7 +505,6 @@ public class DevicePermissionService : IDevicePermissionService
{
Tenant = x.Key,
Codes = x.SelectMany(item => item.Codes).Distinct().ToList()
-
}).ToList();
}
-}
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Entity/Basic/Entity/DeviceEntity.cs b/Src/Dlhis.Entity/Basic/Entity/DeviceEntity.cs
index ed046e71..92a6dd54 100644
--- a/Src/Dlhis.Entity/Basic/Entity/DeviceEntity.cs
+++ b/Src/Dlhis.Entity/Basic/Entity/DeviceEntity.cs
@@ -65,8 +65,8 @@ public class DeviceEntity : SugarBaseEntity, ITenantId
///
/// 部署方向
///
- [SugarColumn(ColumnDescription = "部署方向")]
- public string DeployDirection { get; set; }
+ [SugarColumn(ColumnDescription = "部署方向", ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
+ public DeviceDeployDirectionEnumType? DeployDirection { get; set; }
///
/// 模板code
diff --git a/Src/Dlhis.Entity/Device/Entities/DeviceTaskEntity.cs b/Src/Dlhis.Entity/Device/Entities/DeviceTaskEntity.cs
index 56af07d6..60b50883 100644
--- a/Src/Dlhis.Entity/Device/Entities/DeviceTaskEntity.cs
+++ b/Src/Dlhis.Entity/Device/Entities/DeviceTaskEntity.cs
@@ -65,6 +65,12 @@ public class DeviceTaskEntity : SugarBaseEntity, ITenantId, IVersion
[SugarColumn(DefaultValue = "0")]
public long CancellationId { get; set; } = 0;
+ ///
+ /// 任务来源
+ ///
+ [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
+ public DeviceTaskSourceEnumType? Source { get; set; }
+
///
/// 优先级
///
@@ -73,4 +79,4 @@ public class DeviceTaskEntity : SugarBaseEntity, ITenantId, IVersion
public string TenantId { get; set; }
-}
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Entity/Device/Enums/DeviceDeployDirectionEnumType.cs b/Src/Dlhis.Entity/Device/Enums/DeviceDeployDirectionEnumType.cs
new file mode 100644
index 00000000..0a26e8c4
--- /dev/null
+++ b/Src/Dlhis.Entity/Device/Enums/DeviceDeployDirectionEnumType.cs
@@ -0,0 +1,22 @@
+using System.ComponentModel;
+
+namespace Dlhis.Entity.Device.Enums;
+
+///
+/// 设备部署方向
+///
+[Description("设备部署方向")]
+public enum DeviceDeployDirectionEnumType
+{
+ ///
+ /// 进
+ ///
+ [Description("进")]
+ Entry = 10,
+
+ ///
+ /// 出
+ ///
+ [Description("出")]
+ Exit = 20
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Entity/Device/Enums/DeviceTaskSourceEnumType.cs b/Src/Dlhis.Entity/Device/Enums/DeviceTaskSourceEnumType.cs
new file mode 100644
index 00000000..58cab179
--- /dev/null
+++ b/Src/Dlhis.Entity/Device/Enums/DeviceTaskSourceEnumType.cs
@@ -0,0 +1,16 @@
+using System.ComponentModel;
+
+namespace Dlhis.Entity.Device.Enums;
+
+///
+/// 设备任务来源
+///
+[Description("设备任务来源")]
+public enum DeviceTaskSourceEnumType
+{
+ ///
+ /// 预约
+ ///
+ [Description("预约")]
+ Appointment = 10,
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Entity/Sys/Enums/AssignTypeEnumType.cs b/Src/Dlhis.Entity/Sys/Enums/AssignTypeEnumType.cs
index c4dcdf1b..5a1c4ffd 100644
--- a/Src/Dlhis.Entity/Sys/Enums/AssignTypeEnumType.cs
+++ b/Src/Dlhis.Entity/Sys/Enums/AssignTypeEnumType.cs
@@ -36,5 +36,5 @@ public enum AssignTypeEnumType
/// 租户/基地
///
[Description("租户/基地")]
- Tenant = 5,
-}
+ Tenant = 5
+}
\ No newline at end of file