using DataEntity.Device;
|
using DataEntity.Page;
|
using DataEntity.Share;
|
using DataRWDAL.Device;
|
using HandyControl.Data;
|
using HxEnum;
|
using HxSocketImplement.Sockets;
|
using HxSocketImplement.Sockets.HxService;
|
using System;
|
using System.Collections.Generic;
|
using System.Windows;
|
using XCommon;
|
using XCommon.Log;
|
using XCommon.Tip;
|
using XHandler.View.MethodProperty;
|
using XHandler.View.Page;
|
using XImagingXhandler.XDAL;
|
using static HxEnum.StateEnum;
|
using Button = System.Windows.Controls.Button;
|
using Pagination = DataEntity.Page.Pagination;
|
using UserControl = System.Windows.Controls.UserControl;
|
|
namespace XHandler.View.Device
|
{
|
/// <summary>
|
/// 设备管理页面
|
/// </summary>
|
public partial class DeveiceManagement : UserControl
|
{
|
#region 变量
|
/// <summary>
|
/// 分页数据
|
/// </summary>
|
private Pagination m_pagination = new Pagination();
|
private Pagination m_paginationDeviceMethod = new Pagination();
|
|
/// <summary>
|
/// 左侧DataGrid选中的DeviceId
|
/// </summary>
|
private string m_deviceconfigId = string.Empty;
|
#endregion
|
|
#region 构造函数
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
public DeveiceManagement()
|
{
|
InitializeComponent();
|
}
|
#endregion
|
|
#region 初始化
|
/// <summary>
|
/// 初始化
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
// 设备
|
GetData();
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
|
/// <summary>
|
/// 获取设备信息
|
/// </summary>
|
private void GetData()
|
{
|
DataBinding(m_pagination);
|
}
|
|
/// <summary>
|
/// 获取设备方法信息
|
/// </summary>
|
private void GetDataDeviceMethod()
|
{
|
DataBindingDeviceMethod(m_paginationDeviceMethod);
|
}
|
#endregion
|
|
#region 设备相关
|
/// <summary>
|
/// 搜索
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnSearch_Click(object sender, RoutedEventArgs e)
|
{
|
m_deviceconfigId = string.Empty;
|
dgDeviceMethodData.ItemsSource = null;
|
tBoxDeviceName.Text = string.Empty;
|
|
pagerToolsControl_paging.Current = PaginationDefaultParameter.Current;
|
}
|
|
/// <summary>
|
/// 添加设备
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnAddDevice_Click(object sender, RoutedEventArgs e)
|
{
|
DeviceAdd deviceAdd = new DeviceAdd();
|
deviceAdd.Owner = (Window)Shared.Main;
|
deviceAdd.OperationType = OperationTypeEnum.OperationType_Enum.AddEnum.ToString();
|
deviceAdd.LoadListEveForm -= GetData;
|
deviceAdd.LoadListEveForm += GetData;
|
deviceAdd.ShowDialog();
|
}
|
|
/// <summary>
|
/// 分页绑定
|
/// </summary>
|
/// <param name="pagination"></param>
|
private void DataBinding(Pagination pagination)
|
{
|
var result = DeviceConfigDB.GetPageData(pagination, GetSearch(),Shared.SoftwareInformation.software_information_id);
|
|
if (result != null)
|
{
|
for (int i = 0; i < result.Item1.Count; i++)
|
{
|
result.Item1[i].SId = i + 1;
|
result.Item1[i].CommunicateTypeName =
|
EnumManagement.GetEnumDescription(EnumManagement.GetField<CommunicateTypeEnum>(result.Item1[i].CommunicateType));
|
}
|
|
pagerToolsControl_paging.IsTrigger = false;
|
pagerToolsControl_paging.DataCount = result.Item2; // 当前查到数量
|
pagerToolsControl_paging.Current = pagination.Current;
|
pagerToolsControl_paging.IsTrigger = true;
|
dgDeviceData.ItemsSource = result.Item1;
|
}
|
}
|
|
/// <summary>
|
/// 获取搜索参数
|
/// </summary>
|
/// <returns></returns>
|
private DeviceConfigModel GetSearch()
|
{
|
DeviceConfigModel searchModel = new DeviceConfigModel();
|
searchModel.Name = searchDeviceName.Text;
|
return searchModel;
|
}
|
|
#region 操作
|
/// <summary>
|
/// 修改
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnEdit_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
Button btn = (Button)sender;
|
if (btn != null)
|
{
|
string deviceId = (string)btn.Tag;
|
var result = DeviceConfigDB.GetInfodById(deviceId);
|
if (result != null)
|
{
|
DeviceAdd deviceAdd = new DeviceAdd();
|
deviceAdd.Owner = (Window)Shared.Main;
|
deviceAdd.OperationType = OperationTypeEnum.OperationType_Enum.EditEnum.ToString();
|
deviceAdd.OperationId = deviceId;
|
deviceAdd.LoadListEveForm -= GetData;
|
deviceAdd.LoadListEveForm += GetData;
|
deviceAdd.ShowDialog();
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
|
/// <summary>
|
/// 删除
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnDelete_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
Button btn = (Button)sender;
|
if (btn != null)
|
{
|
// 获取所有设备信息
|
string deviceId = (string)btn.Tag;
|
var deviceConfigList = DeviceConfigMethodDB.GetListByDeviceconfigId(deviceId);
|
if (deviceConfigList != null && deviceConfigList.Count > 0)
|
{
|
//new MessageDialog("此设备下有方法,不能删除").ShowDialog();
|
ShowTip.ShowNotice("此设备下有方法,不能删除", InfoType.Warning);
|
return;
|
}
|
|
var result = DeviceConfigDB.GetInfodById(deviceId);
|
if (result != null)
|
{
|
PlsToolTipWin plsToolTipWin = new PlsToolTipWin($"您确定要删除【{result.Name}】吗?");
|
plsToolTipWin.ShowDialog();
|
if (plsToolTipWin.DialogResult == true)
|
{
|
|
DeviceConfigDB.DelById(new DeviceConfigModel { Id = deviceId });
|
GetData();
|
//new MessageDialog("删除成功").ShowDialog();
|
ShowTip.ShowNotice("删除成功", InfoType.Success);
|
}
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
|
/// <summary>
|
/// 方法
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnDeviceMethod_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
Button btn = (Button)sender;
|
if (btn != null)
|
{
|
// 获取所有设备信息
|
m_deviceconfigId = (string)btn.Tag;
|
DeviceConfigModel deviceConfig = DeviceConfigDB.GetInfodById(m_deviceconfigId);
|
tBoxDeviceName.Text = deviceConfig.Name;
|
|
// 设备方法
|
GetDataDeviceMethod();
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
#endregion
|
|
#region 分页事件
|
/// <summary>
|
/// 当前页改变时发生
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void pagerToolsControl_paging_PageCntChanged(object sender, C_EventArgsClass e)
|
{
|
m_pagination.Current = e.CurrentPageNo;
|
DataBinding(m_pagination);
|
}
|
|
/// <summary>
|
/// 每页行数改变时发生
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void pagerToolsControl_paging_OnePageRowCntChanged(object sender, C_EventArgsClass e)
|
{
|
m_pagination.Current = e.CurrentPageNo;
|
m_pagination.PageSize = e.PagerNum;
|
DataBinding(m_pagination);
|
}
|
#endregion
|
|
#endregion
|
|
#region 设备方法相关
|
/// <summary>
|
/// 搜索设备方法名
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnSearchMethodName_Click(object sender, RoutedEventArgs e)
|
{
|
pagerToolsDeviceMethod.Current = PaginationDefaultParameter.Current;
|
}
|
|
/// <summary>
|
/// 添加方法
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnAddDeviceMethod_Click(object sender, RoutedEventArgs e)
|
{
|
if (!string.IsNullOrEmpty(m_deviceconfigId))
|
{
|
DeviceMehtodAdd deviceMehtodAdd = new DeviceMehtodAdd();
|
deviceMehtodAdd.Owner = (Window)Shared.Main;
|
deviceMehtodAdd.OperationType = OperationTypeEnum.OperationType_Enum.AddEnum.ToString();
|
deviceMehtodAdd.LoadListEveForm -= GetDataDeviceMethod;
|
deviceMehtodAdd.LoadListEveForm += GetDataDeviceMethod;
|
deviceMehtodAdd.DeviceconfigId = m_deviceconfigId;
|
deviceMehtodAdd.ShowDialog();
|
}
|
else
|
{
|
ShowTip.ShowNotice("请选择数据再添加方法", InfoType.Warning);
|
}
|
}
|
|
/// <summary>
|
/// 分页绑定
|
/// </summary>
|
/// <param name="pagination"></param>
|
private void DataBindingDeviceMethod(Pagination pagination)
|
{
|
var result = DeviceConfigMethodDB.GetPageData(pagination, GetSearchDeviceMethod());
|
|
if (result != null)
|
{
|
for (int i = 0; i < result.Item1.Count; i++)
|
{
|
result.Item1[i].SId = i + 1;
|
}
|
|
pagerToolsDeviceMethod.IsTrigger = false;
|
pagerToolsDeviceMethod.DataCount = result.Item2; // 当前查到数量
|
pagerToolsDeviceMethod.Current = pagination.Current;
|
pagerToolsDeviceMethod.IsTrigger = true;
|
dgDeviceMethodData.ItemsSource = result.Item1;
|
}
|
}
|
|
/// <summary>
|
/// 获取设备方法搜索参数
|
/// </summary>
|
/// <returns></returns>
|
private DeviceConfigMethodModel GetSearchDeviceMethod()
|
{
|
DeviceConfigMethodModel searchModel = new DeviceConfigMethodModel();
|
searchModel.DeviceconfigId = m_deviceconfigId;
|
searchModel.ParameterName = searchDeviceMethodName.Text;
|
return searchModel;
|
}
|
|
#region 操作
|
/// <summary>
|
/// 修改方法信息
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnMethodEdit_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
Button btn = (Button)sender;
|
if (btn != null)
|
{
|
string deviceMethodId = (string)btn.Tag;
|
var result = DeviceConfigMethodDB.GetInfodById(deviceMethodId);
|
if (result != null)
|
{
|
DeviceMehtodAdd deviceMehtodAdd = new DeviceMehtodAdd();
|
deviceMehtodAdd.Owner = (Window)Shared.Main;
|
deviceMehtodAdd.OperationType = OperationTypeEnum.OperationType_Enum.EditEnum.ToString();
|
deviceMehtodAdd.LoadListEveForm -= GetDataDeviceMethod;
|
deviceMehtodAdd.LoadListEveForm += GetDataDeviceMethod;
|
deviceMehtodAdd.DeviceMethodId = deviceMethodId;
|
deviceMehtodAdd.DeviceconfigId = m_deviceconfigId;
|
deviceMehtodAdd.ShowDialog();
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
|
/// <summary>
|
/// 删除
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnMethodDelete_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
Button btn = (Button)sender;
|
if (btn != null)
|
{
|
string deviceMethodId = (string)btn.Tag;
|
|
// 获取设备方法参数
|
var getInfoByDeviceconfigMethodList = DeviceConfigMethodParametersDB.GetInfoByDeviceconfigMethodId(deviceMethodId);
|
if (getInfoByDeviceconfigMethodList != null && getInfoByDeviceconfigMethodList.Count > 0)
|
{
|
ShowTip.ShowNotice("此方法下有参数,不能删除", InfoType.Warning);
|
return;
|
}
|
|
var result = DeviceConfigMethodDB.GetInfodById(deviceMethodId);
|
if (result != null)
|
{
|
PlsToolTipWin plsToolTipWin = new PlsToolTipWin($"您确定要删除【{result.Name}】吗?");
|
plsToolTipWin.ShowDialog();
|
if (plsToolTipWin.DialogResult == true)
|
{
|
DeviceConfigMethodDB.DelById(new DeviceConfigMethodModel { Id = deviceMethodId });
|
GetDataDeviceMethod();
|
//new MessageDialog("删除成功").ShowDialog();
|
ShowTip.ShowNotice("删除成功", InfoType.Success);
|
}
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
|
/// <summary>
|
/// 调试
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnMethodDebug_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
if (!string.IsNullOrEmpty(m_deviceconfigId))
|
{
|
Button btn = (Button)sender;
|
string deviceMethodId = (string)btn.Tag;
|
|
var deviceMethod = DeviceConfigMethodDB.GetInfodById(deviceMethodId);
|
|
PlsToolTipWin plsToolTipWin = new PlsToolTipWin($"您确定要调试【{deviceMethod.ParameterName + "->" + deviceMethod.Name}】吗?");
|
plsToolTipWin.ShowDialog();
|
if (plsToolTipWin.DialogResult == true)
|
{
|
ShowTip.ShowNotice("执行中,请等待...", InfoType.Info);
|
|
var getDeviceConfigModel = DeviceConfigDB.GetInfodById(m_deviceconfigId); //获取设备
|
if (getDeviceConfigModel != null)
|
{
|
// 获取发送参数
|
Dictionary<string, object> dictionaryList = new Dictionary<string, object>();
|
var getInfoByDeviceconfigMethodList = DeviceConfigMethodParametersDB.GetInfoByDeviceconfigMethodId(deviceMethodId, ParameterTypeEnum.Send);
|
|
foreach (var item in getInfoByDeviceconfigMethodList)
|
{
|
dictionaryList.Add(item.ParameterName, ComUtility.ToTypeConvert(item.Value, item.DataType.ToString()));
|
}
|
|
InstructCommonMethodSendModel sendModel = HxSocketParameterService.GetInstructCommonMethodSendModel(new InstructCommonMethodSendModel()
|
{
|
EquipmentType = getDeviceConfigModel.Type.Trim(),
|
Ip = getDeviceConfigModel.Ip.Trim(),
|
Port = Convert.ToInt32(getDeviceConfigModel.Port.Trim()),
|
EquipmentId = getDeviceConfigModel.EquipmentId.Trim(),
|
VirtualConnectionState = getDeviceConfigModel.VirtualConnectionState,
|
CommunicateType = getDeviceConfigModel.CommunicateType,
|
SendData = new HxSendBase { experiment_id = HxSockServiceExecute.InstrunctionId(), parameters = dictionaryList, method = deviceMethod.ParameterName },
|
});
|
|
var resultModel = ResultHandle.InstructCommonMethod(sendModel, false);
|
|
|
if (resultModel != null && resultModel.status == StateEnum_Equipment.Completed)
|
{
|
ShowTip.ShowNotice("方法:" + deviceMethod.ParameterName + "-》" + resultModel.data.json, InfoType.Success, 5);
|
}
|
else
|
{
|
ShowTip.ShowNotice("调试失败,方法:" + deviceMethod.ParameterName + "-》" + resultModel?.ErrorMsg?.Error_Text, InfoType.Warning);
|
}
|
}
|
else
|
{
|
ShowTip.ShowNotice("设备数据未找到", InfoType.Error);
|
}
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
|
|
|
|
}
|
|
/// <summary>
|
/// 参数
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnMethodParamter_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
if (!string.IsNullOrEmpty(m_deviceconfigId))
|
{
|
Button btn = (Button)sender;
|
string deviceMethodId = (string)btn.Tag;
|
|
// 根据设备Id,获取设备信息
|
DeviceConfigModel deviceConfig = DeviceConfigDB.GetInfodById(m_deviceconfigId);
|
if (deviceConfig.CommunicateType == EnumManagement.GetEnumValue(CommunicateTypeEnum.Socket)) // Socket-TCP标准协议
|
{
|
DeviceMethodParameters frm = new DeviceMethodParameters();
|
frm.Owner = (Window)Shared.Main;
|
frm.DeviceconfigId = m_deviceconfigId;
|
frm.DeviceconfigMethodId = deviceMethodId;
|
frm.ShowDialog();
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
#endregion
|
|
#region 分页事件
|
/// <summary>
|
/// 当前页改变时发生
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void pagerToolsDeviceMethod_PageCntChanged(object sender, C_EventArgsClass e)
|
{
|
m_paginationDeviceMethod.Current = e.CurrentPageNo;
|
DataBindingDeviceMethod(m_paginationDeviceMethod);
|
}
|
|
/// <summary>
|
/// 每页行数改变时发生
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void pagerToolsDeviceMethod_OnePageRowCntChanged(object sender, C_EventArgsClass e)
|
{
|
m_paginationDeviceMethod.Current = e.CurrentPageNo;
|
m_paginationDeviceMethod.PageSize = e.PagerNum;
|
DataBindingDeviceMethod(m_paginationDeviceMethod);
|
}
|
#endregion
|
|
#endregion
|
}
|
}
|