1.变量权限增加"只写"类型

2."只读"类型的权限会在写入请求时拒绝
3.开放了通讯配置的"属性侧"和字段名称修改权限
This commit is contained in:
iioter 2023-05-06 15:20:08 +08:00
parent 1e11ba2ef9
commit 803f35d01c
6 changed files with 17 additions and 10 deletions

View File

@ -20,7 +20,7 @@ namespace IoTGateway.ViewModel.BasicData.DeviceConfigVMs
{
this.MakeStandardAction("DeviceConfig", GridActionStandardTypesEnum.Create, Localizer["Sys.Create"],"BasicData", dialogWidth: 800),
this.MakeStandardAction("DeviceConfig", GridActionStandardTypesEnum.Edit, Localizer["Sys.Edit"], "BasicData", dialogWidth: 800),
//this.MakeStandardAction("DeviceConfig", GridActionStandardTypesEnum.Delete, Localizer["Sys.Delete"], "BasicData", dialogWidth: 800),
this.MakeStandardAction("DeviceConfig", GridActionStandardTypesEnum.Delete, Localizer["Sys.Delete"], "BasicData", dialogWidth: 800),
this.MakeStandardAction("DeviceConfig", GridActionStandardTypesEnum.Details, Localizer["Sys.Details"], "BasicData", dialogWidth: 800),
this.MakeStandardAction("DeviceConfig", GridActionStandardTypesEnum.BatchEdit, Localizer["Sys.BatchEdit"], "BasicData", dialogWidth: 800),
//this.MakeStandardAction("DeviceConfig", GridActionStandardTypesEnum.BatchDelete, Localizer["Sys.BatchDelete"], "BasicData", dialogWidth: 800),

View File

@ -78,7 +78,7 @@ namespace IoTGateway.ViewModel.BasicData.DeviceVariableVMs
}),
this.MakeGridHeader(x => x.Expressions).SetWidth(150),
this.MakeGridHeader(x => x.IsUpload).SetWidth(80),
//this.MakeGridHeader(x => x.ProtectType).SetSort(true),
this.MakeGridHeader(x => x.ProtectType).SetWidth(80).SetSort(true),
this.MakeGridHeader(x => x.DeviceName_view).SetSort(true).SetWidth(90),
this.MakeGridHeader(x => x.Alias).SetSort(true).SetWidth(90),
this.MakeGridHeader(x => x.Timestamp).SetWidth(100).SetFormat((a,b)=>{

View File

@ -10,6 +10,7 @@ using IoTGateway.Model;
using Plugin;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Primitives;
using PluginInterface;
namespace IoTGateway.ViewModel.BasicData.DeviceVariableVMs
{
@ -25,7 +26,11 @@ namespace IoTGateway.ViewModel.BasicData.DeviceVariableVMs
protected override void InitVM()
{
this.Entity.IsUpload = true;
if (this.ControllerName.ToLower().Contains("add"))
{
this.Entity.IsUpload = true;
this.Entity.ProtectType = ProtectTypeEnum.ReadWrite;
}
AllDevices = DC.Set<Device>().AsNoTracking().Where(x => x.DeviceTypeEnum == DeviceTypeEnum.Device)
.OrderBy(x => x.Parent.Index).ThenBy(x => x.Parent.DeviceName)
.OrderBy(x => x.Index).ThenBy(x => x.DeviceName)

View File

@ -3,7 +3,7 @@
<wt:form vm="@Model" height="400">
<wt:row items-per-row="ItemsPerRowEnum.Two">
@*<wt:textbox field="Entity.DeviceConfigName" />*@
<wt:textbox field="Entity.DeviceConfigName" />
@{
if (!string.IsNullOrEmpty(Model.Entity.EnumInfo))
{
@ -15,7 +15,7 @@
}
}
<wt:textbox field="Entity.Description" />
@*<wt:textbox field="Entity.EnumInfo" />*@
<wt:combobox field="Entity.DataSide" />
@*<wt:combobox field="Entity.DeviceId" items="AllDevices" />*@
</wt:row>
<wt:hidden field="Entity.ID" />

View File

@ -74,7 +74,7 @@ namespace Plugin
{
if (driver.IsConnected)
{
foreach (var deviceVariables in Device.DeviceVariables!.GroupBy(x => x.Alias))
foreach (var deviceVariables in Device.DeviceVariables.Where(x=>x.ProtectType!= ProtectTypeEnum.WriteOnly).GroupBy(x => x.Alias))
{
string deviceName = string.IsNullOrWhiteSpace(deviceVariables.Key)
? Device.DeviceName
@ -158,7 +158,7 @@ namespace Plugin
payLoad.TS = (long)(DateTime.UtcNow - _tsStartDt).TotalMilliseconds;
if (deviceVariables.All(x => x.StatusType == VaribaleStatusTypeEnum.Good))
if (deviceVariables.Where(x=>x.IsUpload&&x.ProtectType!=ProtectTypeEnum.WriteOnly).All(x => x.StatusType == VaribaleStatusTypeEnum.Good))
{
payLoad.DeviceStatus = DeviceStatusTypeEnum.Good;
sendModel[deviceName] = new List<PayLoad> { payLoad };
@ -173,7 +173,7 @@ namespace Plugin
}
//只要有读取异常且连接正常就断开
if (Device.DeviceVariables!.Any(x => x.StatusType != VaribaleStatusTypeEnum.Good) && driver.IsConnected)
if (Device.DeviceVariables.Where(x => x.IsUpload && x.ProtectType != ProtectTypeEnum.WriteOnly).Any(x => x.StatusType != VaribaleStatusTypeEnum.Good) && driver.IsConnected)
{
driver.Close();
driver.Dispose();
@ -261,7 +261,7 @@ namespace Plugin
deviceVariable = Device.DeviceVariables.FirstOrDefault(x =>
x.Name == para.Key && x.Alias == e.DeviceName);
if (deviceVariable != null)
if (deviceVariable != null&& deviceVariable.ProtectType!= ProtectTypeEnum.ReadOnly)
{
DriverAddressIoArgModel ioArgModel = new()
{
@ -280,7 +280,7 @@ namespace Plugin
else
{
rpcResponse.IsSuccess = false;
rpcResponse.Description += $"未能找到变量:{para.Key},";
rpcResponse.Description += $"未能找到支持写入的变量:{para.Key},";
}
}

View File

@ -13,5 +13,7 @@ namespace PluginInterface
ReadOnly,
[Display(Name = "读写")]
ReadWrite,
[Display(Name = "只写")]
WriteOnly,
}
}