初始化
This commit is contained in:
442
BLV_Studio/Test/GridTest/ReportingScenario.vb
Normal file
442
BLV_Studio/Test/GridTest/ReportingScenario.vb
Normal file
@@ -0,0 +1,442 @@
|
||||
Imports FlexCell
|
||||
Public Class ReportingScenario
|
||||
|
||||
|
||||
|
||||
Sub New(_UserName As String, _HotleID As String, _RoomTypeID As String, filename As String, Version As String, grd As FlexCell.Grid, Devicemodel As Dictionary(Of String, DeviceModel), ActionConfiguration As List(Of TableRowTag))
|
||||
UserName = _UserName
|
||||
RoomTypeID = _RoomTypeID
|
||||
HotleID = _HotleID
|
||||
DevColList = New List(Of MTableSet)
|
||||
' DevRowList = New List(Of MTableSet)
|
||||
ConfigurationName = filename
|
||||
ConfigurationVersion = Version
|
||||
Tgrd = grd
|
||||
TDevicemodel = Devicemodel
|
||||
'Runing(grd, Devicemodel, ActionConfiguration)
|
||||
|
||||
End Sub
|
||||
Sub New(grd As FlexCell.Grid, Devicemodel As Dictionary(Of String, DeviceModel))
|
||||
Tgrd = grd
|
||||
TDevicemodel = Devicemodel
|
||||
End Sub
|
||||
'配置名称
|
||||
Public ConfigurationName As String
|
||||
'配置版本
|
||||
Public ConfigurationVersion As String
|
||||
Public HotleID As String
|
||||
Public RoomTypeID As String
|
||||
Public UserName As String
|
||||
Public Tgrd As FlexCell.Grid
|
||||
Public DevColList As List(Of MTableSet)
|
||||
Public TDevicemodel As Dictionary(Of String, DeviceModel)
|
||||
'列集合
|
||||
'{
|
||||
' 设备名
|
||||
' 设备节点集合
|
||||
' { 节点类型
|
||||
' 节点名
|
||||
' 节点下属回路集合 键值对 k:回路 v : 回路别名
|
||||
|
||||
' }
|
||||
|
||||
''}
|
||||
Public DevRowList As List(Of MTableSet)
|
||||
'行集合
|
||||
'{
|
||||
' 设备名
|
||||
'' 设备节点集合
|
||||
'' { 节点类型
|
||||
'' 节点名
|
||||
'' 节点下属回路集合 键值对 k:回路 v : 回路别名
|
||||
|
||||
'' }
|
||||
'}
|
||||
|
||||
|
||||
|
||||
#Region "数据处理"
|
||||
Public Function getDateDisposeRuning() As List(Of MDevNodeMessage)
|
||||
Return DateDisposeRuning(Tgrd, TDevicemodel)
|
||||
End Function
|
||||
Public Function DateDisposeRuning(_grd As FlexCell.Grid, _Devicemodel As Dictionary(Of String, DeviceModel)) As List(Of MDevNodeMessage)
|
||||
If IsNothing(_grd) Then Return Nothing
|
||||
Dim ACtabRange As CtabRange
|
||||
Dim rt As New RoomTypeConfig(RoomTypeID)
|
||||
Dim ot As String = "1"
|
||||
Dim result As New List(Of MDevNodeMessage)
|
||||
Dim dic As New Dictionary(Of String, MDevNodeMessage)
|
||||
Dim NodeLoopname As String
|
||||
Dim NCtabRange As CtabRange
|
||||
Dim NodeLoop As String = String.Empty
|
||||
For Each Dev In _Devicemodel '遍历设备
|
||||
|
||||
For Each DevNode In Dev.Value.Nodes '遍历设备下属子节点
|
||||
Dim devAddr As String = GetActionDeviceAddr(Dev.Value, DevNode.Name).ToString
|
||||
If DevNode.Interface.Equals("DO") OrElse DevNode.Interface.Equals("LIGHT") Then '判断是否为输出设备
|
||||
If DevNode.DEV_TYPE_DATA.Equals("4") Then '服务设备节点特殊处理
|
||||
|
||||
For ni As Integer = 0 To 14
|
||||
NodeLoopname = DevNode.Nodes.Item(ni).Name
|
||||
NodeLoop = DevNode.Nodes.Item(ni).LoopAddr
|
||||
NodeLoop = $"{DevNode.DEV_TYPE_DATA.PadLeft(3, "0")}{devAddr.PadLeft(3, "0")}{NodeLoop.PadLeft(3, "0")}"
|
||||
If dic.ContainsKey(NodeLoop) Then Continue For
|
||||
ot = Dev.Value.Name
|
||||
ot = ot.Replace(vbLf, "").Replace(vbCr, "").Replace(":", "").Replace("\", "").Replace("/", "").Replace("|", "").Replace("'", "").Replace("'", "").Replace("?", "").Replace("!", "").Replace("`", "")
|
||||
Dim datenode As New MDevNodeMessage(result.Count, NodeLoop, ot, NodeLoopname, DevNode.DEV_TYPE_DATA, rt)
|
||||
dic.Add(NodeLoop, datenode)
|
||||
result.Add(datenode)
|
||||
|
||||
Next
|
||||
|
||||
|
||||
|
||||
For ri As Integer = TableInteraction.TableRowNumber.Max To _grd.Rows - 1 ' 遍历每行找到服务起始行
|
||||
ACtabRange = New CtabRange(_grd, ri, TableInteraction.TableColNumber.DeviceName)
|
||||
If ACtabRange.devname.Equals("HOSTSERVICE") Then '找到服务集合
|
||||
|
||||
For cj As Integer = ACtabRange.fr To ACtabRange.lr
|
||||
NodeLoopname = _grd.Cell(cj, TableInteraction.TableColNumber.KeyName).Text.Replace(vbLf, "").Replace(vbCr, "").Replace(":", "").Replace("\", "").Replace("/", "").Replace("|", "").Replace("'", "").Replace("'", "").Replace("?", "").Replace("!", "").Replace("`", "")
|
||||
|
||||
NodeLoop = _grd.Cell(cj, TableInteraction.TableColNumber.KeyVal).Text
|
||||
NodeLoop = $"{DevNode.DEV_TYPE_DATA.PadLeft(3, "0")}{devAddr.PadLeft(3, "0")}{NodeLoop.PadLeft(3, "0")}"
|
||||
If dic.ContainsKey(NodeLoop) Then Continue For
|
||||
ot = Dev.Value.Name
|
||||
ot = ot.Replace(vbLf, "").Replace(vbCr, "").Replace(":", "").Replace("\", "").Replace("/", "").Replace("|", "").Replace("'", "").Replace("'", "").Replace("?", "").Replace("!", "").Replace("`", "")
|
||||
Dim datenode As New MDevNodeMessage(result.Count, NodeLoop, ot, NodeLoopname, DevNode.DEV_TYPE_DATA, rt)
|
||||
dic.Add(NodeLoop, datenode)
|
||||
result.Add(datenode)
|
||||
Next
|
||||
End If
|
||||
|
||||
Next
|
||||
Exit For '完成遍历退出服务输出的处理
|
||||
Else '正常输出节点
|
||||
For i As Integer = TableInteraction.TableColNumber.InsertColumn To _grd.Cols - 2
|
||||
ACtabRange = New CtabRange(_grd, TableInteraction.TableRowNumber.DeviceName, i)
|
||||
If ACtabRange.devname.Equals(Dev.Key) Then '在表格找到对应设备
|
||||
For j As Integer = ACtabRange.fc To ACtabRange.lc '遍历设备下属节点集合
|
||||
NCtabRange = New CtabRange(_grd, TableInteraction.TableRowNumber.FunctionName, j)
|
||||
If NCtabRange.devname.ToUpper.Equals("LIGHT") Then
|
||||
NCtabRange.devname = "DO"
|
||||
End If
|
||||
If NCtabRange.devname.ToUpper.Equals("DRY_CURTAIN") Then
|
||||
NCtabRange.devname = "CURTAIN"
|
||||
End If
|
||||
If DevNode.Name.ToUpper.Equals(NCtabRange.devname.ToUpper) Then '找到当前设备的当前节点
|
||||
For k = NCtabRange.fc To NCtabRange.lc '遍历当前节点下属回路集合
|
||||
If _grd.Column(k).Visible = True Then '过滤隐藏的回路
|
||||
NodeLoopname = _grd.Cell(TableInteraction.TableRowNumber.FunctionChildNodeAnother, k).Text.Replace(vbLf, "").Replace(vbCr, "").Replace(":", "").Replace("\", "").Replace("/", "").Replace("|", "").Replace("'", "").Replace("'", "").Replace("?", "").Replace("!", "").Replace("`", "")
|
||||
If DevNode.Nodes.Count = 1 Then
|
||||
NodeLoop = 0
|
||||
Else
|
||||
NodeLoop = _grd.Cell(TableInteraction.TableRowNumber.FunctionChildNodeID, k).Text
|
||||
End If
|
||||
|
||||
NodeLoop = $"{DevNode.DEV_TYPE_DATA.PadLeft(3, "0")}{devAddr.PadLeft(3, "0")}{NodeLoop.PadLeft(3, "0")}"
|
||||
If dic.ContainsKey(NodeLoop) Then Continue For
|
||||
ot = Dev.Value.Name
|
||||
ot = ot.Replace(vbLf, "").Replace(vbCr, "").Replace(":", "").Replace("\", "").Replace("/", "").Replace("|", "").Replace("'", "").Replace("'", "").Replace("`", "").Replace("?", "").Replace("!", "").Replace(" ", "")
|
||||
Dim datenode As New MDevNodeMessage(result.Count, NodeLoop, ot, NodeLoopname, DevNode.DEV_TYPE_DATA, rt)
|
||||
dic.Add(NodeLoop, datenode)
|
||||
result.Add(datenode)
|
||||
End If
|
||||
Next
|
||||
Exit For
|
||||
End If
|
||||
j = NCtabRange.lc
|
||||
Next
|
||||
Exit For
|
||||
End If
|
||||
i = ACtabRange.lc
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
Return result
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
'Public Sub Runing(_grd As FlexCell.Grid, _Devicemodel As Dictionary(Of String, DeviceModel), _ActionConfiguration As List(Of TableRowTag))
|
||||
|
||||
' If IsNothing(_grd) Then Return
|
||||
' Dim nodename As String = String.Empty
|
||||
|
||||
' Dim ACtabRange As CtabRange
|
||||
' Dim NCtabRange As CtabRange
|
||||
' Dim CdevMode As DeviceModel
|
||||
' Dim CdevModeNode As DeviceChildNodeClass
|
||||
' Dim AnotherName As String = String.Empty
|
||||
' Dim Result As String = String.Empty
|
||||
' Dim NodeLoop As String = String.Empty
|
||||
' Dim NodeLoopname As String = String.Empty
|
||||
' Dim scene As String = String.Empty
|
||||
' For i As Integer = TableInteraction.TableColNumber.InsertColumn To _grd.Cols - 2
|
||||
' ACtabRange = New CtabRange(_grd, TableInteraction.TableRowNumber.DeviceName, i)
|
||||
' '遍历设备
|
||||
' If Not String.IsNullOrEmpty(ACtabRange.devname) AndAlso _Devicemodel.ContainsKey(ACtabRange.devname) Then
|
||||
' CdevMode = _Devicemodel.Item(ACtabRange.devname)
|
||||
' Dim nMTableSet As New MTableSet(ACtabRange.devname)
|
||||
' DevColList.Add(nMTableSet)
|
||||
' '遍历设备节点
|
||||
' For j As Integer = ACtabRange.fc To ACtabRange.lc
|
||||
' NCtabRange = New CtabRange(_grd, TableInteraction.TableRowNumber.FunctionName, j)
|
||||
' CdevModeNode = Nothing
|
||||
' For Each index In CdevMode.Nodes
|
||||
' If index.Name.Equals(NCtabRange.devname) Then
|
||||
' CdevModeNode = index
|
||||
' Exit For
|
||||
' End If
|
||||
' Next
|
||||
' If Not IsNothing(CdevModeNode) Then
|
||||
' Result = CdevModeNode.DEV_TYPE_DATA.PadLeft(3, "0")
|
||||
|
||||
' Dim Mdnm As New MDevNodeMessage(CdevModeNode.Name, Result)
|
||||
' nMTableSet.DevNode.Add(Mdnm)
|
||||
' '遍历遍历设备节点下属回路
|
||||
' For k = NCtabRange.fc To NCtabRange.lc
|
||||
' If _grd.Column(k).Visible = True Then
|
||||
' Dim dic As New Dictionary(Of String, String)
|
||||
' NodeLoop = _grd.Cell(TableInteraction.TableRowNumber.FunctionChildNodeID, k).Text
|
||||
' NodeLoopname = _grd.Cell(TableInteraction.TableRowNumber.FunctionChildNodeAnother, k).Text
|
||||
' If Mdnm.DevNodeDic.ContainsKey(NodeLoop) Then
|
||||
' Continue For
|
||||
' Else
|
||||
' dic.Add("回路别名", NodeLoopname)
|
||||
' Mdnm.DevNodeDic.Add(NodeLoop, dic)
|
||||
' End If
|
||||
' End If
|
||||
' Next
|
||||
' End If
|
||||
' j = NCtabRange.lc
|
||||
' Next
|
||||
|
||||
' End If
|
||||
' i = ACtabRange.lc
|
||||
' Next
|
||||
' Dim rowtag As TableRowTag
|
||||
' For i As Integer = TableInteraction.TableRowNumber.Max To _grd.Rows - 1
|
||||
' ACtabRange = New CtabRange(_grd, i, TableInteraction.TableColNumber.DeviceName)
|
||||
' If ACtabRange.devname.Equals("HOSTSERVICE") Then
|
||||
' ACtabRange.devname = _Devicemodel.Keys(0)
|
||||
' End If
|
||||
|
||||
' If Not String.IsNullOrEmpty(ACtabRange.devname) AndAlso (_Devicemodel.ContainsKey(ACtabRange.devname)) Then
|
||||
' CdevMode = _Devicemodel.Item(ACtabRange.devname)
|
||||
' Dim nMTableSet As New MTableSet(ACtabRange.devname)
|
||||
' DevRowList.Add(nMTableSet)
|
||||
' '遍历设备
|
||||
' For j As Integer = ACtabRange.fr To ACtabRange.lr
|
||||
|
||||
' If j >= TableInteraction.TableRowNumber.Max AndAlso (i - TableInteraction.TableRowNumber.Max < _ActionConfiguration.Count) Then
|
||||
' rowtag = _ActionConfiguration.Item(j - TableInteraction.TableRowNumber.Max)
|
||||
' CdevModeNode = Nothing
|
||||
' For Each index In CdevMode.Nodes
|
||||
' If index.Name.Equals(rowtag.G_DevNodeName) Then
|
||||
' CdevModeNode = index
|
||||
' Exit For
|
||||
' End If
|
||||
' Next
|
||||
' If Not IsNothing(CdevModeNode) Then
|
||||
' Result = CdevModeNode.DEV_TYPE_DATA.PadLeft(3, "0")
|
||||
' NodeLoop = _grd.Cell(j, TableInteraction.TableColNumber.KeyVal).Text
|
||||
' Dim Tisbol As Boolean = True
|
||||
' For Each Tindex In nMTableSet.DevNode
|
||||
' If Tindex.DevNodeName.Equals(CdevModeNode.Name) AndAlso Tindex.DevNodeDic.ContainsKey(NodeLoop) Then
|
||||
' Tisbol = False
|
||||
' Continue For
|
||||
' End If
|
||||
' Next
|
||||
' If Tisbol = False Then Continue For
|
||||
|
||||
' Dim Mdnm As New MDevNodeMessage(CdevModeNode.Name, Result)
|
||||
' nMTableSet.DevNode.Add(Mdnm)
|
||||
' '遍历遍历设备节点下属回路
|
||||
|
||||
' If _grd.Row(j).Visible = True Then
|
||||
' Dim dic As New Dictionary(Of String, String)
|
||||
|
||||
' NodeLoopname = _grd.Cell(j, TableInteraction.TableColNumber.KeyName).Text
|
||||
' scene = _grd.Cell(j, TableInteraction.TableColNumber.SceneID).Text
|
||||
' If Mdnm.DevNodeDic.ContainsKey(NodeLoop) Then
|
||||
' Continue For
|
||||
' Else
|
||||
' dic.Add("回路别名", NodeLoopname)
|
||||
' dic.Add("场景号", scene)
|
||||
' Mdnm.DevNodeDic.Add(NodeLoop, dic)
|
||||
' End If
|
||||
' End If
|
||||
|
||||
' End If
|
||||
' End If
|
||||
|
||||
' Next
|
||||
|
||||
' End If
|
||||
' i = ACtabRange.lr
|
||||
' Next
|
||||
|
||||
|
||||
'End Sub
|
||||
|
||||
'Public Sub Runing(_grd As FlexCell.Grid, _Devicemodel As Dictionary(Of String, DeviceModel), _ActionConfiguration As List(Of TableRowTag))
|
||||
' If IsNothing(_grd) Then Return
|
||||
' Dim ACtabRange As CtabRange
|
||||
' Dim NCtabRange As CtabRange
|
||||
' Dim NodeLoopname As String
|
||||
' Dim NodeLoop As String = String.Empty
|
||||
' For Each Dev In _Devicemodel '遍历设备
|
||||
' Dim nMTableSet As New MTableSet(Dev.Key)
|
||||
' DevColList.Add(nMTableSet)
|
||||
' For Each DevNode In Dev.Value.Nodes '遍历设备下属子节点
|
||||
' If DevNode.Interface.Equals("DO") Then '判断是否为输出设备
|
||||
' If DevNode.DEV_TYPE_DATA.Equals("4") Then '服务设备节点特殊处理
|
||||
' For ri As Integer = TableInteraction.TableRowNumber.Max To _grd.Rows - 1 ' 遍历每行找到服务起始行
|
||||
' ACtabRange = New CtabRange(_grd, ri, TableInteraction.TableColNumber.DeviceName)
|
||||
' If ACtabRange.devname.Equals("HOSTSERVICE") Then '找到服务集合
|
||||
' Dim devAddr As String = GetActionDeviceAddr(Dev.Value, DevNode.Name).ToString
|
||||
' Dim devnodename As String = TableInteraction.GetAnotherName(DevNode.Name)
|
||||
' Dim MDevNode As New MDevNodeMessage(devAddr, devnodename, DevNode.DEV_TYPE_DATA)
|
||||
' nMTableSet.DevNode.Add(MDevNode)
|
||||
' For cj As Integer = ACtabRange.fr To ACtabRange.lr '遍历服务集合
|
||||
' NodeLoopname = _grd.Cell(cj, TableInteraction.TableColNumber.KeyName).Text
|
||||
' NodeLoop = _grd.Cell(cj, TableInteraction.TableColNumber.KeyVal).Text
|
||||
' If MDevNode.DevNodeDic.ContainsKey(NodeLoop) Then
|
||||
' Continue For
|
||||
' Else
|
||||
' Dim dic As New Dictionary(Of String, String)
|
||||
' dic.Add("回路别名", NodeLoopname)
|
||||
' dic.Add("回路地址", NodeLoop)
|
||||
' MDevNode.DevNodeDic.Add(NodeLoop, dic)
|
||||
' End If
|
||||
|
||||
|
||||
' Next
|
||||
' Exit For '完成遍历退出服务输出的处理
|
||||
' End If
|
||||
' Next
|
||||
' Else '正常输出节点
|
||||
' For i As Integer = TableInteraction.TableColNumber.InsertColumn To _grd.Cols - 2
|
||||
' ACtabRange = New CtabRange(_grd, TableInteraction.TableRowNumber.DeviceName, i)
|
||||
' If ACtabRange.devname.Equals(Dev.Key) Then '在表格找到对应设备
|
||||
' For j As Integer = ACtabRange.fc To ACtabRange.lc '遍历设备下属节点集合
|
||||
' NCtabRange = New CtabRange(_grd, TableInteraction.TableRowNumber.FunctionName, j)
|
||||
' If DevNode.Name.Equals(NCtabRange.devname) Then '找到当前设备的当前节点
|
||||
' Dim devAddr As String = GetActionDeviceAddr(Dev.Value, DevNode.Name).ToString
|
||||
' Dim devnodename As String = TableInteraction.GetAnotherName(DevNode.Name)
|
||||
' Dim MDevNode As New MDevNodeMessage(devAddr, devnodename, DevNode.DEV_TYPE_DATA)
|
||||
' nMTableSet.DevNode.Add(MDevNode)
|
||||
' For k = NCtabRange.fc To NCtabRange.lc '遍历当前节点下属回路集合
|
||||
' NodeLoopname = String.Empty
|
||||
' If _grd.Column(k).Visible = True Then '过滤隐藏的回路
|
||||
' NodeLoopname = _grd.Cell(TableInteraction.TableRowNumber.FunctionChildNodeAnother, k).Text
|
||||
' NodeLoop = _grd.Cell(TableInteraction.TableRowNumber.FunctionChildNodeID, k).Text
|
||||
' Dim dic As New Dictionary(Of String, String)
|
||||
' dic.Add("回路别名", NodeLoopname)
|
||||
' dic.Add("回路地址", NodeLoop)
|
||||
' MDevNode.DevNodeDic.Add(NodeLoop, dic)
|
||||
|
||||
|
||||
' End If
|
||||
' Next
|
||||
|
||||
|
||||
' Exit For
|
||||
' End If
|
||||
' j = NCtabRange.lc
|
||||
' Next
|
||||
' Exit For
|
||||
' End If
|
||||
' i = ACtabRange.lc
|
||||
' Next
|
||||
' End If
|
||||
' End If
|
||||
' Next
|
||||
|
||||
|
||||
|
||||
' Next
|
||||
|
||||
|
||||
|
||||
|
||||
'End Sub
|
||||
|
||||
Private Function GetActionDeviceAddr(Dev As DeviceModel, DevNodeName As String) As Integer
|
||||
|
||||
For Each index In Dev.Config
|
||||
|
||||
If index.Name.Equals($"{DevNodeName }设备组信息") Then
|
||||
For Each node In index.Attributes
|
||||
If node.Name.Equals("DeviceAddr") Then
|
||||
Return CInt(node.DataDefault)
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
If index.Name.Equals($"设备存在") Then
|
||||
For Each node In index.Attributes
|
||||
If node.Name.Equals("拨码地址") Then
|
||||
Return CInt(node.Value)
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
Return -1
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
Public Class MTableSet
|
||||
|
||||
Public Sub New(name As String)
|
||||
DevNode = New List(Of MDevNodeMessage)
|
||||
DevName = name
|
||||
End Sub
|
||||
' 设备名
|
||||
Public DevName As String
|
||||
' 设备下所有输出节点
|
||||
Public DevNode As List(Of MDevNodeMessage)
|
||||
End Class
|
||||
Public Class MDevNodeMessage
|
||||
Public Sub New(addr As String, NodeName As String, NodeType As String)
|
||||
|
||||
End Sub
|
||||
Public Sub New(yid As Integer, Ma As String, ol As String, Nm As String, Ty As String, RTy As RoomTypeConfig)
|
||||
ID = yid
|
||||
ModalAddress = Ma
|
||||
outlet = ol
|
||||
Name = Nm
|
||||
Type = Ty
|
||||
RoomType = RTy
|
||||
End Sub
|
||||
|
||||
'序号
|
||||
Dim ID As Integer
|
||||
' 设备地址
|
||||
Public ModalAddress As String
|
||||
'设备输出节点名
|
||||
Public outlet As String
|
||||
'设备输出节点类型
|
||||
Public Name As String
|
||||
'设备输出节点下所有回路和相关信息
|
||||
Public Type As String
|
||||
Public RoomType As RoomTypeConfig
|
||||
End Class
|
||||
Public Class RoomTypeConfig
|
||||
Sub New(tID As String)
|
||||
ID = tID
|
||||
End Sub
|
||||
Public ID As String
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user