356 lines
10 KiB
VB.net
356 lines
10 KiB
VB.net
|
|
Imports Newtonsoft.Json
|
|||
|
|
Imports Newtonsoft.Json.Converters
|
|||
|
|
|
|||
|
|
Namespace UTSModule.Service
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 应用程序与服务通讯协议类,可将此类序列化为Json字符串或反序列化Json字符串为此类
|
|||
|
|
'''
|
|||
|
|
''' 更改须知:
|
|||
|
|
''' 当需要增加不参与序列化的共有字段时,
|
|||
|
|
''' 在变量名上一行,参照JsonFilter字段增加JsonIgnore特性.
|
|||
|
|
'''
|
|||
|
|
''' 当需要增加命令名称类型时,
|
|||
|
|
''' 首先在CmdNamesEnum中增加枚举字段,
|
|||
|
|
''' 之后在FilterFiled函数中,增加指定命令名称中需要序列话的字段名数组.
|
|||
|
|
'''
|
|||
|
|
''' 2021-03-26
|
|||
|
|
''' 增加软件与设备通讯命令,用于注册软件 InitApp
|
|||
|
|
'''
|
|||
|
|
''' </summary>
|
|||
|
|
Public Class TaskJsonParam
|
|||
|
|
|
|||
|
|
'发送
|
|||
|
|
''' <summary>
|
|||
|
|
''' 发送控制命令时,通信的用户账号
|
|||
|
|
''' </summary>
|
|||
|
|
Public User As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 发送控制命令时,执行程序名
|
|||
|
|
''' </summary>
|
|||
|
|
Public AppName As String
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 通讯时使用的命令名称
|
|||
|
|
''' </summary>
|
|||
|
|
<JsonConverter(GetType(StringEnumConverter))>
|
|||
|
|
Public CmdName As CmdNamesEnum
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 用户存储服务中任务信息
|
|||
|
|
''' </summary>
|
|||
|
|
Public TasksInfo As List(Of Dictionary(Of String, String))
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 指定需要控制的任务名称集合
|
|||
|
|
''' </summary>
|
|||
|
|
Public TasksName As List(Of String)
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 回复命令时,指示命令执行的状态
|
|||
|
|
''' </summary>
|
|||
|
|
Public CmdStatus As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 回复命令时,指定命令执行后的提示信息
|
|||
|
|
''' </summary>
|
|||
|
|
Public CmdMsg As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 回复命令时,获取当前服务的版本号
|
|||
|
|
''' </summary>
|
|||
|
|
Public ServiceVersion As String
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 发送与恢复时,软件信息
|
|||
|
|
''' </summary>
|
|||
|
|
Public AppInfo As Dictionary(Of String, String)
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 是否为回复数据
|
|||
|
|
''' </summary>
|
|||
|
|
<JsonIgnore>
|
|||
|
|
Public IsReply As Boolean
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 是否启用筛选功能,默认为启用筛选功能
|
|||
|
|
''' 此字段不参与Json序列化
|
|||
|
|
''' </summary>
|
|||
|
|
<JsonIgnore>
|
|||
|
|
Public Shared Property JsonFilter As Boolean
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' Json序列化时的显示格式,分行对齐显示或是单行无格式显示,默认单行显示
|
|||
|
|
''' 此字段不参与Json序列化
|
|||
|
|
''' </summary>
|
|||
|
|
<JsonIgnore>
|
|||
|
|
Public Shared Property JsonFormat As Formatting
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary> 任务命令执行状态列表 </summary>
|
|||
|
|
Enum CmdStatusEnum
|
|||
|
|
Pass
|
|||
|
|
Fail
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary> 任务命令列表 </summary>
|
|||
|
|
Enum CmdNamesEnum
|
|||
|
|
''' <summary>添加任务</summary>
|
|||
|
|
AddTasks
|
|||
|
|
|
|||
|
|
''' <summary>设置任务</summary>
|
|||
|
|
SetTasks
|
|||
|
|
|
|||
|
|
''' <summary>获取任务</summary>
|
|||
|
|
GetTasks
|
|||
|
|
|
|||
|
|
''' <summary>获取所有任务</summary>
|
|||
|
|
GetAllTasks
|
|||
|
|
|
|||
|
|
''' <summary>删除任务</summary>
|
|||
|
|
DeleteTasks
|
|||
|
|
|
|||
|
|
''' <summary>删除所有任务</summary>
|
|||
|
|
DeleteAllTasks
|
|||
|
|
|
|||
|
|
''' <summary>开启任务</summary>
|
|||
|
|
StartTasks
|
|||
|
|
|
|||
|
|
''' <summary>开启所有任务</summary>
|
|||
|
|
StartAllTasks
|
|||
|
|
|
|||
|
|
''' <summary>暂停任务</summary>
|
|||
|
|
StopTasks
|
|||
|
|
|
|||
|
|
''' <summary>暂停所有任务</summary>
|
|||
|
|
StopAllTasks
|
|||
|
|
|
|||
|
|
''' <summary>重启任务</summary>
|
|||
|
|
RestartTasks
|
|||
|
|
|
|||
|
|
''' <summary>重启所有任务</summary>
|
|||
|
|
RestartAllTasks
|
|||
|
|
|
|||
|
|
''' <summary>获取DataService版本信息</summary>
|
|||
|
|
GetServiceVersion
|
|||
|
|
|
|||
|
|
''' <summary>初始化APP,从服务端获取APP运行参数</summary>
|
|||
|
|
InitApp
|
|||
|
|
|
|||
|
|
''' <summary>App上报状态至服务</summary>
|
|||
|
|
AppMsg
|
|||
|
|
|
|||
|
|
''' <summary>服务下发通知App</summary>
|
|||
|
|
ServiceMsg
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' App上报时包含的类型
|
|||
|
|
''' </summary>
|
|||
|
|
Enum AppMsgTypes
|
|||
|
|
''' <summary>
|
|||
|
|
''' APP已启动
|
|||
|
|
''' </summary>
|
|||
|
|
AppStart
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' APP已关闭
|
|||
|
|
''' </summary>
|
|||
|
|
AppClose
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' APP站位切换
|
|||
|
|
''' </summary>
|
|||
|
|
StationChanged
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' APP心跳包
|
|||
|
|
''' </summary>
|
|||
|
|
AppAlive
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' Sn总表发生变化
|
|||
|
|
''' </summary>
|
|||
|
|
SnListChanged
|
|||
|
|
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 服务下发时包含的类型
|
|||
|
|
''' </summary>
|
|||
|
|
Enum ServiceMsgTypes
|
|||
|
|
DbHostChange
|
|||
|
|
FtpHostChange
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
|
|||
|
|
Sub New()
|
|||
|
|
IsReply = False
|
|||
|
|
|
|||
|
|
JsonFilter = True
|
|||
|
|
JsonFormat = Formatting.None
|
|||
|
|
TasksName = New List(Of String)()
|
|||
|
|
TasksInfo = New List(Of Dictionary(Of String, String))
|
|||
|
|
AppInfo = New Dictionary(Of String, String)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Sub New(reply As Boolean)
|
|||
|
|
IsReply = reply
|
|||
|
|
|
|||
|
|
JsonFilter = True
|
|||
|
|
JsonFormat = Formatting.None
|
|||
|
|
TasksName = New List(Of String)()
|
|||
|
|
TasksInfo = New List(Of Dictionary(Of String, String))
|
|||
|
|
AppInfo = New Dictionary(Of String, String)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Sub New(cmd As CmdNamesEnum)
|
|||
|
|
IsReply = False
|
|||
|
|
|
|||
|
|
JsonFilter = True
|
|||
|
|
JsonFormat = Formatting.None
|
|||
|
|
TasksName = New List(Of String)()
|
|||
|
|
TasksInfo = New List(Of Dictionary(Of String, String))
|
|||
|
|
AppInfo = New Dictionary(Of String, String)
|
|||
|
|
|
|||
|
|
CmdName = cmd
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Sub New(cmd As CmdNamesEnum, reply As Boolean)
|
|||
|
|
IsReply = reply
|
|||
|
|
|
|||
|
|
JsonFilter = True
|
|||
|
|
JsonFormat = Formatting.None
|
|||
|
|
TasksName = New List(Of String)()
|
|||
|
|
TasksInfo = New List(Of Dictionary(Of String, String))
|
|||
|
|
AppInfo = New Dictionary(Of String, String)
|
|||
|
|
|
|||
|
|
CmdName = cmd
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Sub New(cmd As CmdNamesEnum, usr As String, app As String)
|
|||
|
|
IsReply = False
|
|||
|
|
|
|||
|
|
JsonFilter = True
|
|||
|
|
JsonFormat = Formatting.None
|
|||
|
|
TasksName = New List(Of String)()
|
|||
|
|
TasksInfo = New List(Of Dictionary(Of String, String))
|
|||
|
|
AppInfo = New Dictionary(Of String, String)
|
|||
|
|
|
|||
|
|
CmdName = cmd
|
|||
|
|
User = usr
|
|||
|
|
AppName = app
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Sub New(cmd As CmdNamesEnum, usr As String, app As String, reply As Boolean)
|
|||
|
|
IsReply = reply
|
|||
|
|
|
|||
|
|
JsonFilter = True
|
|||
|
|
JsonFormat = Formatting.None
|
|||
|
|
TasksName = New List(Of String)()
|
|||
|
|
TasksInfo = New List(Of Dictionary(Of String, String))
|
|||
|
|
AppInfo = New Dictionary(Of String, String)
|
|||
|
|
|
|||
|
|
CmdName = cmd
|
|||
|
|
User = usr
|
|||
|
|
AppName = app
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 序列化类中字段为Json字符串
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Shared Function SerializeToJson(jsonParam As TaskJsonParam) As String
|
|||
|
|
If JsonFilter Then
|
|||
|
|
Dim jSetting As New JsonSerializerSettings
|
|||
|
|
jSetting.ContractResolver = FilterFiled(jsonParam.CmdName, jsonParam.IsReply)
|
|||
|
|
Return JsonConvert.SerializeObject(jsonParam, JsonFormat, jSetting)
|
|||
|
|
Else
|
|||
|
|
Return JsonConvert.SerializeObject(jsonParam, JsonFormat)
|
|||
|
|
End If
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 反序列Json字符串填充当前类中
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Shared Function DeserializeFormJson(jsonString As String) As TaskJsonParam
|
|||
|
|
Return JsonConvert.DeserializeObject(Of TaskJsonParam)(jsonString)
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 根据任务名称,设置参与序列化的字段名称
|
|||
|
|
''' 增加任务名称时,需要更新该函数
|
|||
|
|
''' </summary>
|
|||
|
|
''' <param name="cmd"></param>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Private Shared Function FilterFiled(cmd As CmdNamesEnum, Optional isReply As Boolean = False) As TaskJsonSettings
|
|||
|
|
If isReply Then
|
|||
|
|
Return FilterReplyFiled(cmd)
|
|||
|
|
Else
|
|||
|
|
Return FilterSendFiled(cmd)
|
|||
|
|
End If
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
Private Shared Function FilterSendFiled(cmd As CmdNamesEnum) As TaskJsonSettings
|
|||
|
|
Dim lst As New List(Of String)
|
|||
|
|
lst.Add("User")
|
|||
|
|
lst.Add("AppName")
|
|||
|
|
lst.Add("CmdName")
|
|||
|
|
|
|||
|
|
Select Case cmd
|
|||
|
|
Case CmdNamesEnum.AddTasks,
|
|||
|
|
CmdNamesEnum.SetTasks
|
|||
|
|
|
|||
|
|
lst.Add("TasksInfo")
|
|||
|
|
Case CmdNamesEnum.DeleteTasks,
|
|||
|
|
CmdNamesEnum.GetTasks,
|
|||
|
|
CmdNamesEnum.StartTasks,
|
|||
|
|
CmdNamesEnum.StopTasks,
|
|||
|
|
CmdNamesEnum.RestartTasks
|
|||
|
|
|
|||
|
|
lst.Add("TasksName")
|
|||
|
|
Case CmdNamesEnum.InitApp, CmdNamesEnum.AppMsg, CmdNamesEnum.ServiceMsg
|
|||
|
|
lst.Add("AppInfo")
|
|||
|
|
Case CmdNamesEnum.GetServiceVersion
|
|||
|
|
lst.Add("ServiceVersion")
|
|||
|
|
End Select
|
|||
|
|
|
|||
|
|
Return New TaskJsonSettings(lst.ToArray())
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Shared Function FilterReplyFiled(cmd As CmdNamesEnum) As TaskJsonSettings
|
|||
|
|
Dim lst As New List(Of String)
|
|||
|
|
lst.Add("CmdName")
|
|||
|
|
lst.Add("CmdStatus")
|
|||
|
|
lst.Add("CmdMsg")
|
|||
|
|
|
|||
|
|
Select Case cmd
|
|||
|
|
Case CmdNamesEnum.GetTasks
|
|||
|
|
lst.Add("TasksInfo")
|
|||
|
|
Case CmdNamesEnum.GetAllTasks
|
|||
|
|
lst.Add("TasksInfo")
|
|||
|
|
Case CmdNamesEnum.GetServiceVersion
|
|||
|
|
lst.Add("ServiceVersion")
|
|||
|
|
Case CmdNamesEnum.InitApp, CmdNamesEnum.AppMsg, CmdNamesEnum.ServiceMsg
|
|||
|
|
lst.Add("AppInfo")
|
|||
|
|
End Select
|
|||
|
|
|
|||
|
|
Return New TaskJsonSettings(lst.ToArray())
|
|||
|
|
End Function
|
|||
|
|
End Class
|
|||
|
|
|
|||
|
|
End Namespace
|