增加无卡取电对应回路关联相应服务功能

This commit is contained in:
2026-03-04 11:11:16 +08:00
parent 2dbe9dda95
commit fe04c79327
17 changed files with 239 additions and 1521 deletions

View File

@@ -53,24 +53,28 @@ Public Class PowerSupply
'改用设置标志位到无卡取电中
End If
'Dim portname, chname As String
'For i = 1 To PortTable.Rows - 1
' portname = PortTable.Cell(i, 2).Text
' chname = PortTable.Cell(i, 0).Text
' If String.IsNullOrEmpty(portname) Then Continue For
' SetG_TableGridService(portname, chname)
'Next
Dim portname, chname As String
For i = 1 To PortTable.Rows - 1
portname = PortTable.Cell(i, 2).Text
chname = PortTable.Cell(i, 0).Text
If String.IsNullOrEmpty(portname) Then Continue For
SetG_TableGridService(portname, chname)
Next
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
Return
End Sub
Public Sub deleteG_TableGridService(intenndoe As DeviceChildNode)
Public Sub deleteG_TableGridService(intenndoe As DeviceChildNode, CardNodestr As String)
Dim portname, chname As String
Dim cbuf As String() = intenndoe.Description.Split(",")
If cbuf.Length > 1 Then
portname = cbuf(1)
If CardNodestr.Contains(portname) Then
Return
End If
Else
Return
End If
@@ -79,36 +83,47 @@ Public Class PowerSupply
chname = intenndoe.Name
If String.IsNullOrEmpty(portname) Then Return
'从名称中提取场景号绑定端口名称格式为 portname = $"{ TableGrid.Cell(i, TableColNumber.KeyName).Text}({TableGrid.Cell(i, TableColNumber.SceneID).Text})"
Dim addserviceData As String
Dim addserviceData, addserviceData1 As String
Dim sceneid As String = portname.Substring(portname.LastIndexOf("(") + 1, portname.LastIndexOf(")") - portname.LastIndexOf("(") - 1)
Dim serviceData As String
'遍历g_TableGrid表找到该场景号对应行
Dim tabrows As Integer = g_TableGrid.Rows - 2
Dim tabrows As Integer = g_TableGrid.Rows - 5
For tabrow = 1 To tabrows
serviceData = g_TableGrid.Cell(tabrow, TableColNumber.SceneID).Text
If g_TableGrid.Cell(tabrow, TableColNumber.SceneID).Text.Equals(sceneid) Then
serviceData = g_TableGrid.Cell(tabrow, TableColNumber.ServerAttribute).Text
If chname.Contains("CH1") Then
addserviceData = "13,1,0,1,"
Return
'addserviceData = "13,1,0,1,"
'addserviceData1 = "13,2,0,1,"
ElseIf chname.Contains("CH2") Then
addserviceData = "32,1,0,1,"
addserviceData1 = "32,2,0,1,"
ElseIf chname.Contains("CH3") Then
addserviceData = "33,1,0,1,"
addserviceData1 = "33,2,0,1,"
ElseIf chname.Contains("CH4") Then
addserviceData = "34,1,0,1,"
addserviceData1 = "34,2,0,1,"
ElseIf chname.Contains("CH5") Then
addserviceData = "35,1,0,1,"
addserviceData1 = "35,2,0,1,"
ElseIf chname.Contains("CH6") Then
addserviceData = "36,1,0,1,"
addserviceData1 = "36,2,0,1,"
ElseIf chname.Contains("CH7") Then
addserviceData = "37,1,0,1,"
addserviceData1 = "37,2,0,1,"
ElseIf chname.Contains("CH8") Then
addserviceData = "38,1,0,1,"
addserviceData1 = "38,2,0,1,"
ElseIf chname.Contains("CH9") Then
addserviceData = "39,1,0,1,"
addserviceData1 = "39,2,0,1,"
ElseIf chname.Contains("CH10") Then
addserviceData = "40,1,0,1,"
addserviceData1 = "40,2,0,1,"
Else
Return
End If
@@ -118,14 +133,45 @@ Public Class PowerSupply
serviceData = serviceData.Replace(addserviceData, "")
'更新g_TableGrid表中的ServerAttribute列
g_TableGrid.Cell(tabrow, TableColNumber.ServerAttribute).Text = serviceData.Trim
End If
Dim cloopkey = g_TableGrid.Cell(tabrow, TableColNumber.KeyVal).Text
deleteG_TableGridService2(tabrow, cloopkey, addserviceData1)
End If
Next
End Sub
Public Sub deleteG_TableGridService2(row As Integer, loopkey As String, scene As String)
Dim cloopkey, cscene, serviceData As String
Dim cscenebuf As String()
Dim cr As CtabRange = New CtabRange(g_TableGrid, row, TableColNumber.DeviceName)
'遍历行
For i = cr.fr To cr.lr
cloopkey = g_TableGrid.Cell(i, TableColNumber.KeyVal).Text
cscene = g_TableGrid.Cell(i, TableColNumber.SceneAttribute).Text
'判断loopkey是否相当于cloopkey
If cloopkey.Equals(loopkey) Then
cscenebuf = cscene.Split(",")
If cscenebuf(0).Equals("2") Then
serviceData = g_TableGrid.Cell(i, TableColNumber.ServerAttribute).Text
If serviceData.Contains(scene) Then
serviceData = serviceData.Replace(scene, "")
g_TableGrid.Cell(i, TableColNumber.ServerAttribute).Text = serviceData.Trim
End If
End If
End If
Next
End Sub
Public Sub SetG_TableGridService(portname As String, chname As String)
Dim serviceData As String
Dim addserviceData As String
Dim serviceData, cloopkey As String
Dim addserviceData, addserviceData1 As String
Dim crow As Integer
''遍历PortTable表
'For i = 1 To PortTable.Rows - 1
' '获取绑定端口名称
@@ -139,34 +185,48 @@ Public Class PowerSupply
For j = 1 To g_TableGrid.Rows - 1
If g_TableGrid.Cell(j, TableColNumber.SceneID).Text.Equals(sceneid) Then
serviceData = g_TableGrid.Cell(j, TableColNumber.ServerAttribute).Text
cloopkey = g_TableGrid.Cell(j, TableColNumber.KeyVal).Text
crow = j
'21,1,0,1,
'21,2,10,2,
If chname.Contains("CH1") Then
addserviceData = "13,1,0,1,"
addserviceData1 = "13,2,0,1,"
ElseIf chname.Contains("CH2") Then
addserviceData = "32,1,0,1,"
addserviceData1 = "32,2,0,1,"
ElseIf chname.Contains("CH3") Then
addserviceData = "33,1,0,1,"
addserviceData1 = "33,2,0,1,"
ElseIf chname.Contains("CH4") Then
addserviceData = "34,1,0,1,"
addserviceData1 = "34,2,0,1,"
ElseIf chname.Contains("CH5") Then
addserviceData = "35,1,0,1,"
addserviceData1 = "35,2,0,1,"
ElseIf chname.Contains("CH6") Then
addserviceData = "36,1,0,1,"
addserviceData1 = "36,2,0,1,"
ElseIf chname.Contains("CH7") Then
addserviceData = "37,1,0,1,"
addserviceData1 = "37,2,0,1,"
ElseIf chname.Contains("CH8") Then
addserviceData = "38,1,0,1,"
addserviceData1 = "38,2,0,1,"
ElseIf chname.Contains("CH9") Then
addserviceData = "39,1,0,1,"
addserviceData1 = "39,2,0,1,"
ElseIf chname.Contains("CH10") Then
addserviceData = "40,1,0,1,"
addserviceData1 = "40,2,0,1,"
Else
Return
Exit For
End If
'判断serviceData是否包含addserviceData
If serviceData.Contains(addserviceData) Then
Return
Exit For
End If
'判断serviceData是否为空
If String.IsNullOrEmpty(serviceData) Then
@@ -179,11 +239,62 @@ Public Class PowerSupply
End If
Next
If Not String.IsNullOrEmpty(addserviceData1) AndAlso Not String.IsNullOrEmpty(cloopkey) Then
SetG_TableGridService2(crow, cloopkey, addserviceData1)
End If
'Next
End Sub
Public Sub SetG_TableGridService2(row As Integer, loopkey As String, scene As String)
Dim cloopkey, cscene, serviceData As String
Dim cscenebuf As String()
Dim cr As CtabRange = New CtabRange(g_TableGrid, row, TableColNumber.DeviceName)
'遍历行
For i = cr.fr To cr.lr
cloopkey = g_TableGrid.Cell(i, TableColNumber.KeyVal).Text
cscene = g_TableGrid.Cell(i, TableColNumber.SceneAttribute).Text
'判断loopkey是否相当于cloopkey
If cloopkey.Equals(loopkey) Then
cscenebuf = cscene.Split(",")
If cscenebuf(0).Equals("2") Then
serviceData = g_TableGrid.Cell(i, TableColNumber.ServerAttribute).Text
If serviceData.Contains(scene) Then
Return
End If
'判断serviceData是否为空
If String.IsNullOrEmpty(serviceData) Then
serviceData = scene
Else
serviceData = $"{scene}{vbLf}{serviceData}"
End If
g_TableGrid.Cell(i, TableColNumber.ServerAttribute).Text = serviceData
Return
End If
End If
Next
G_TableInteraction.grdSetFocus(row, 2)
Console.WriteLine(g_TableGrid.ActiveCell.Row)
ToolStripMenuItem16Click()
ToolStripMenuItem17Click()
g_TableGrid.Cell(row + 1, TableColNumber.ServerAttribute).Text = scene
scene = g_TableGrid.Cell(row + 1, TableColNumber.SceneAttribute).Text
'将scene第一个字符换成2
scene = "2" & scene.Substring(1)
g_TableGrid.Cell(row + 1, TableColNumber.SceneAttribute).Text = scene
End Sub
Private Sub ToolStripMenuItem16Click()
If IsNothingG_TableInteraction Then Return
G_TableInteraction.CopySceneActionData()
End Sub
Private Sub ToolStripMenuItem17Click()
If IsNothingG_TableInteraction Then Return
G_TableInteraction.GlueSceneActionData()
End Sub
Public Sub SetDevDescription()
If IsNothing(UniqueDevice) Then Return
@@ -252,7 +363,9 @@ Public Class PowerSupply
' Continue For
End If
'rstr = rstr.Remove(0, 1)
'deleteG_TableGridService(NoCardNode.Nodes(i - 1))
deleteG_TableGridService(NoCardNode.Nodes(i - 1), rstr)
NoCardNode.Nodes(i - 1).Description = rstr
Next
Else
@@ -271,7 +384,8 @@ Public Class PowerSupply
' Continue For
End If
'rstr = rstr.Remove(0, 1)
'deleteG_TableGridService(NoCardNode.Nodes(i - 1))
deleteG_TableGridService(NoCardNode.Nodes(i - 1), rstr)
NoCardNode.Nodes(i - 1).Description = rstr
Next
End If
@@ -431,6 +545,7 @@ Public Class PowerSupply
'End Sub
Public g_TableGrid As FlexCell.Grid
Public G_ActionConfiguration As List(Of TableRowTag)
Public G_TableInteraction As TableInteraction
Public IsCheckBox5 As Boolean
Public Sub ParseDeviceList(Devicemodel As Dictionary(Of String DeviceModel, TableGrid As FlexCell.Grid)
Dic_Devicemodel = Devicemodel
@@ -611,6 +726,7 @@ Public Class PowerSupply
End If
Return result
End Function
Public isxiugai1 As Boolean = False
@@ -2271,16 +2387,17 @@ Public Class PowerSupply
Return 1
ElseIf keystr.Contains("From fullness to emptiness") Then
Return 2
ElseIf keystr.Contains("Close to Open") OrElse keystr.Contains("Long absence") Then
Return 4
ElseIf keystr.Contains("Open to Close") OrElse keystr.Contains("brief absence") Then
Return 3
ElseIf keystr.Contains("Release") OrElse keystr.Contains("Open") Then
Return 2
ElseIf keystr.Contains("Not judging") Then
Return 0
ElseIf keystr.Contains("trigger") OrElse keystr.Contains("Close") Then
Return 1
ElseIf keystr.Contains("Close to Open") OrElse keystr.Contains("Long absence") Then
Return 4
ElseIf keystr.Contains("Open to Close") OrElse keystr.Contains("brief absence") Then
Return 3
End If
Return 0

View File

@@ -10,7 +10,7 @@ Public Class ServiceAttribute
Public G_input As String
Private g_dicComboBox1 As Dictionary(Of String, String)
Public g_diaplay As Boolean
Public G_result As String
Enum STcolname
<Description("Input number")>
@@ -48,11 +48,16 @@ Public Class ServiceAttribute
Dic_3 = New List(Of String)
'单位
Dic_4 = New List(Of String)
Dim fustr As String = "服务-"
For Each node In G_hostNode.Nodes
fustr = "service-" & node.LoopAddr
'2025 12 29 CZH 增加 判断服务是否是 是在25 到48 且名称符合 "服务-服务号"的格式 符合则不 添加
If node.LoopAddr >= 25 AndAlso node.LoopAddr <= 57 AndAlso fustr.Equals(node.Name) Then '
Continue For
End If
Dic_1.Add($"{node.LoopAddr}:{node.Name }")
Next
Dic_2.AddRange({"2:close", "1:open"})
Dic_2.AddRange({"2:close", "1:open", "3:Reset the initial power-on", "4:Just draw electricity"})
For i = 0 To 255
Dic_3.Add(i)
Next
@@ -65,6 +70,7 @@ Public Class ServiceAttribute
Dim buff() As String = datastr.Split(vbLf)
Dim isok As Boolean
For Each index In buff
If String.IsNullOrEmpty(index) Then Continue For
isok = False
Dim buf() As String = index.Split(",")
@@ -75,7 +81,7 @@ Public Class ServiceAttribute
For Each node In hostNode.Nodes
If node.LoopAddr.Equals(intbuf(0).ToString) Then
isok = True
If intbuf(1) = 2 OrElse intbuf(1) = 1 Then
If intbuf(1) = 2 OrElse intbuf(1) = 1 OrElse intbuf(1) = 3 OrElse intbuf(1) = 4 Then
If intbuf(2) >= 0 OrElse intbuf(2) <= 255 Then
If intbuf(3) >= 1 OrElse intbuf(3) <= 5 Then
Exit For
@@ -111,6 +117,7 @@ Public Class ServiceAttribute
Dim C1, C2, C3, C4 As String
For Each index In buff
If String.IsNullOrEmpty(index) Then Continue For
C1 = String.Empty
C2 = String.Empty
C3 = String.Empty
@@ -185,7 +192,7 @@ Public Class ServiceAttribute
Dim strbuf1() As String = c1.Split(":")
Dim strbuf2 As String = c2.Split(":")
Dim t As String = GetDelayUnit(c4)
reslit = $"{strbuf1(0)},{strbuf2(0)},{c3},{t},{c5}"
reslit = $"{strbuf1(0).Trim},{strbuf2(0).Trim},{c3.Trim},{t.Trim},{c5.Trim}"
Return reslit
End Function
@@ -288,6 +295,22 @@ Public Class ServiceAttribute
Private Sub Table_Grid1_CellChange(Sender As Object, e As Grid.CellChangeEventArgs) Handles Table_Grid1.CellChange
If e.Row > 0 Then
If e.Col = STcolname.服务类型 Then
If Table_Grid1.Cell(e.Row, STcolname.服务类型).Text = "1:Check-in service" Then
If Dic_2.Count = 2 Then
Dic_2.Add("3:Reset the initial power-on")
End If
Else
If Table_Grid1.Cell(e.Row, STcolname.打开方式).Text = "3:Reset the initial power-on" Then
Table_Grid1.Cell(e.Row, STcolname.打开方式).Text = "1 : Open"
End If
If Dic_2.Count = 3 Then
Dic_2.Remove("3:Reset the initial power-on")
End If
End If
End If
If e.Col = STcolname.延时 Then
If String.IsNullOrEmpty(Table_Grid1.Cell(e.Row, e.Col).Text) Then
@@ -370,6 +393,20 @@ Public Class ServiceAttribute
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
If Table_Grid1.ActiveCell.Row > 0 Then
'判断选中服务是否在25 到57区间
Dim tstr As String = Table_Grid1.Cell(Table_Grid1.ActiveCell.Row, STcolname.服务类型).Text.Trim
Dim arr As String() = tstr.Split(":")
Dim LoopAddri As Integer = Integer.Parse(arr(0).Trim)
If LoopAddri >= 25 AndAlso LoopAddri <= 57 Then
'弹框二次删除确认
If MessageBox.Show("This service is a system service. Deleting it may cause system abnormalities. Do you want to proceed with the deletion?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then
Table_Grid1.Row(Table_Grid1.ActiveCell.Row).Delete()
Else
Return
End If
End If
Table_Grid1.Row(Table_Grid1.ActiveCell.Row).Delete()
End If
End Sub
@@ -386,9 +423,39 @@ Public Class ServiceAttribute
Case STcolname.单位
Table_Grid1.ComboBox(e.Col).Items.AddRange(Dic_4.ToArray)
Case STcolname.打开方式
Table_Grid1.ComboBox(e.Col).Items.AddRange(Dic_2.ToArray)
'获取服务类型 判断是否为 1: 入住服务
Dim tstr As String = Table_Grid1.Cell(e.Row, STcolname.服务类型).Text.Trim
If tstr.Equals("1:Check-in service") Then
Table_Grid1.ComboBox(e.Col).Items.AddRange(Dic_2.ToArray)
Else
Table_Grid1.ComboBox(e.Col).Items.Add(Dic_2(0))
Table_Grid1.ComboBox(e.Col).Items.Add(Dic_2(1))
End If
Case STcolname.服务类型
Table_Grid1.ComboBox(e.Col).Items.AddRange(Dic_1.ToArray)
For Each item In Dic_1
'切割字符串(item) 提取LoopAddr
Dim arr As String() = item.Split(":")
'判斷 g_display
If g_diaplay Then
Else
'将arr(0)转为int
Dim LoopAddri As Integer = Integer.Parse(arr(0).Trim)
'過濾掉arr >= 25 AndAlso Node.LoopAddr <= 57
If LoopAddri >= 25 AndAlso LoopAddri <= 57 Then
Continue For
End If
End If
Table_Grid1.ComboBox(e.Col).Items.Add(item)
Next
'Table_Grid1.ComboBox(e.Col).Items.AddRange(Dic_1.ToArray)
Case Else
End Select

View File

@@ -1366,6 +1366,7 @@ Public Class TableInteraction
'Console.WriteLine($"Grid_DoubleClick{_grd.Cell(_grd.ActiveCell.Row, _grd.ActiveCell.Col).Text }")
If _grd.ActiveCell.Row = TableRowNumber.DeviceName AndAlso _grd.ActiveCell.Col = TableColNumber.DeviceName Then
Dim fromshow As New PowerSupply
fromshow.G_TableInteraction=Me
fromshow.G_ActionConfiguration = Dic_ActionConfiguration
fromshow.ParseDeviceList(Dic_Devicemodel, _grd)
@@ -2419,6 +2420,10 @@ Public Class TableInteraction
MsgBox("Non-scene action data cannot be copied!")
End If
End Sub
Public sub grdSetFocus( r As Integer ,c As Integer)
_grd.Cell(r,c).SetFocus
End sub
Public Sub GlueSceneActionData()
If CopyActionData.Count = 0 Then Return
If _grd.ActiveCell.Row > TableRowNumber.Max - 1 Then
@@ -6124,11 +6129,11 @@ Public Class TableInteraction
If IsNothing(result) Then Continue For
resultDatas.AddRange(result.ToArray)
Next
For Each node In VirtualCard
result = Virtual_CardFillDeviceObject(T_SceneID, DeviceModuleDic, node.Name, "Virtual_Card")
If IsNothing(result) Then Continue For
resultDatas.AddRange(result.ToArray)
Next
'For Each node In VirtualCard
' result = Virtual_CardFillDeviceObject(T_SceneID, DeviceModuleDic, node.Name, "Virtual_Card")
' If IsNothing(result) Then Continue For
' resultDatas.AddRange(result.ToArray)
'Next
For Each node In devTempment
result = TempDeviceObject(T_SceneID, DeviceModuleDic, node.Name, "Temp")
If IsNothing(result) Then Continue For