using DataEntity.Device;
using DataEntity.Rack;
using DataEntity.Share;
using DataRWDAL.Device;
using DataRWDAL.Rack;
using HandyControl.Data;
using HxEnum;
using Microsoft.Win32;
using NPOI.HSSF.Record.Chart;
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Input;
using XCommon;
using XCommon.Check.Data;
using XCommon.file;
using XCommon.Log;
using XCommon.Tip;
using XHandler.View.Dialog;
namespace XHandler.View.Device
{
///
/// 设备编辑 页面
///
public partial class DeviceAdd : System.Windows.Window
{
#region 参数
///
/// 操作类型(添加、修改)
///
public string OperationType = "";
///
/// 主键ID
///
public string OperationId = "";
///
/// 委托列表数据
///
public delegate void DelegateForm();
///
/// 委托方法名称
///
public event DelegateForm LoadListEveForm;
///
/// 加载控件老数据
///
Dictionary oldDic = new Dictionary();
///
/// 图片路径
///
private string ImgSrc = string.Empty;
#endregion
#region 构造函数
///
/// 构造函数
///
public DeviceAdd()
{
InitializeComponent();
}
#endregion
#region 初始化
///
/// 初始化
///
///
///
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
#region 设备类型
// 获取设备类型列表
List deviceconfigTypeList = DeviceConfigTypeDB.GetAlllList(Shared.SoftwareInformation.software_information_id);
cBoxDeviceType.ItemsSource = deviceconfigTypeList;
cBoxDeviceType.SelectedIndex = 0;
#endregion
#region 通讯方式
// 根据通讯方式枚举值,获取下拉值
cBoxCommunicateType.ItemsSource = ComUtility.GetDropDownList();
cBoxCommunicateType.SelectedIndex = 0;
#endregion
if (OperationType == OperationTypeEnum.OperationType_Enum.EditEnum.ToString())
{
var model = DeviceConfigDB.GetInfodById(OperationId);
if (model != null)
{
tBoxName.Text = model.Name;
cBoxDeviceType.SelectedValue = model.Type;
tBoxEquipmentId.Text = model.EquipmentId;
tBoxEquipmentModel.Text = model.EquipmentModel;
tBoxManufactor.Text = model.Manufactor;
// 禁用设备
cBoxDisableState.IsChecked = model.DisableState == EnumManagement.GetEnumValue(DisableStateEnum.Disable) ? true : false;
// 虚拟设备
cBoxVirtualConnectionState.IsChecked = model.VirtualConnectionState == EnumManagement.GetEnumValue(VirtualConnectionStateEnum.Virtually) ? true : false;
cBoxCommunicateType.SelectedValue = model.CommunicateType;
tBoxRemark.Text = model.Remark;
if (model.CommunicateType == EnumManagement.GetEnumValue(CommunicateTypeEnum.Socket))
{
tBoxIp.Text = model.Ip;
tBoxPort.Text = model.Port;
}
// imgBase64String显示图片
if (!string.IsNullOrWhiteSpace(model.EquipmentImg))
{
UpLogFileViewTxt(model.EquipmentImg);
}
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 选择图片
///
/// 选择图片
///
///
///
private void btnAddDevice_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Multiselect = false;
fileDialog.Title = "请选择文件";
fileDialog.Filter = "JPG类型图片(*jpg*)|*.jpg|PNG类型图片(*png*)|*.png*"; //设置要选择的文件的类型
if (fileDialog.ShowDialog() == true)
{
var tempFilePath = fileDialog.FileName;
// 获取图片Base64字符串
string pic = ImportFile.GetImageByString(tempFilePath);
UpLogFileViewTxt(pic);
}
}
///
/// imgBase64String显示图片
///
///
private void UpLogFileViewTxt(string imgBase64String)
{
srcImage.Source = ImportFile.GetImage(imgBase64String);
ImgSrc = imgBase64String;
}
#endregion
#region 确定
///
/// 确定
///
///
///
private void btnOk_Click(object sender, RoutedEventArgs e)
{
if (!CheckData())
{
return;
}
DeviceConfigModel deviceConfigModel = new DeviceConfigModel();
if (OperationType == OperationTypeEnum.OperationType_Enum.EditEnum.ToString())
{
deviceConfigModel = DeviceConfigDB.GetInfodById(OperationId);
}
deviceConfigModel.Name = tBoxName.Text;
deviceConfigModel.Type = cBoxDeviceType.SelectedValue.ToString();
deviceConfigModel.EquipmentId = tBoxEquipmentId.Text;
deviceConfigModel.EquipmentImg = ImgSrc;
// 禁用设备(1禁用,0不禁用)
deviceConfigModel.DisableState = cBoxDisableState.IsChecked == true ?
EnumManagement.GetEnumValue(DisableStateEnum.Disable) : EnumManagement.GetEnumValue(DisableStateEnum.Enable);
// 虚拟链接状态(1:虚拟,0:真实)
deviceConfigModel.VirtualConnectionState = cBoxVirtualConnectionState.IsChecked == true ?
EnumManagement.GetEnumValue(VirtualConnectionStateEnum.Virtually) : EnumManagement.GetEnumValue(VirtualConnectionStateEnum.Real);
deviceConfigModel.CommunicateType = Convert.ToInt32(cBoxCommunicateType.SelectedValue);
deviceConfigModel.Remark = tBoxRemark.Text;
deviceConfigModel.EquipmentModel = string.Empty;
if (!string.IsNullOrWhiteSpace(tBoxEquipmentModel.Text))
{
deviceConfigModel.EquipmentModel = tBoxEquipmentModel.Text;
}
deviceConfigModel.Manufactor = string.Empty;
if (!string.IsNullOrWhiteSpace(tBoxManufactor.Text))
{
deviceConfigModel.Manufactor = tBoxManufactor.Text;
}
deviceConfigModel.Ip = string.Empty;
deviceConfigModel.PlcHeartbeatAddress = null;
deviceConfigModel.PlcErrorAddress = null;
deviceConfigModel.Port = string.Empty;
deviceConfigModel.PortName = string.Empty;
deviceConfigModel.StopBits = null;
deviceConfigModel.BaudRate = null;
deviceConfigModel.DataBits = null;
deviceConfigModel.Parity = null;
if (deviceConfigModel.CommunicateType == EnumManagement.GetEnumValue(CommunicateTypeEnum.Socket))
{
deviceConfigModel.Ip = tBoxIp.Text;
deviceConfigModel.Port = tBoxPort.Text;
}
int updateCnt = 0;
if (OperationType == OperationTypeEnum.OperationType_Enum.EditEnum.ToString())
{
deviceConfigModel.Id = OperationId;
deviceConfigModel.ModifyTime = DateTime.Now;
deviceConfigModel.ModifyName = Shared.User.username;
updateCnt = DeviceConfigDB.Update(deviceConfigModel);
}
else
{
deviceConfigModel.ProjectId = Shared.SoftwareInformation.software_information_id;
deviceConfigModel.CreateTime = DateTime.Now;
deviceConfigModel.CreatName = Shared.User.username;
deviceConfigModel.Id = Guid.NewGuid().ToString();
updateCnt = DeviceConfigDB.Add(deviceConfigModel);
}
#region 点位
PositionModel positionModel = PositionDB.GetInfoByRelationId(deviceConfigModel.Id);
if (positionModel == null)
{
positionModel = new PositionModel();
positionModel.id = Guid.NewGuid().ToString();
positionModel.type = EnumManagement.GetEnumValue(PositonTypeEnum.Device);
positionModel.name = deviceConfigModel.Name;
positionModel.relation_Id = deviceConfigModel.Id;
positionModel.software_information_id = Shared.SoftwareInformation.software_information_id;
positionModel.creat_name = Shared.User.username;
positionModel.create_time = DateTime.Now;
PositionDB.Add(positionModel);
}
else
{
positionModel.name = deviceConfigModel.Name;
}
#endregion
if (updateCnt > 0)
{
LoadListEveForm();
//new MessageDialog("保存成功").ShowDialog();
ShowTip.ShowNotice("保存成功", InfoType.Success);
this.Close();
}
}
///
/// 检查输入数据
///
///
private bool CheckData()
{
try
{
if (string.IsNullOrWhiteSpace(cBoxDeviceType.SelectedValue.ToString()))
{
//new MessageDialog("请选择设备类型").ShowDialog();
ShowTip.ShowNotice("请选择设备类型", InfoType.Warning);
return false;
}
if (string.IsNullOrWhiteSpace(tBoxEquipmentId.Text))
{
//new MessageDialog("请填写设备ID").ShowDialog();
ShowTip.ShowNotice("请填写设备ID", InfoType.Warning);
tBoxEquipmentId.Focus();
return false;
}
if (string.IsNullOrWhiteSpace(tBoxName.Text))
{
//new MessageDialog("请填写名称").ShowDialog();
ShowTip.ShowNotice("请填写名称", InfoType.Warning);
tBoxName.Focus();
return false;
}
if (cBoxCommunicateType.SelectedValue == null)
{
//new MessageDialog("请选通讯方式").ShowDialog();
ShowTip.ShowNotice("请选通讯方式", InfoType.Warning);
tBoxName.Focus();
cBoxCommunicateType.Focus();
return false;
}
if (string.IsNullOrWhiteSpace(tBoxIp.Text))
{
//new MessageDialog("请填写IP").ShowDialog();
ShowTip.ShowNotice("请填写IP", InfoType.Warning);
tBoxIp.Focus();
return false;
}
if (!ValidateData.IsIp(tBoxIp.Text))
{
//new MessageDialog("请填写正确的IP").ShowDialog();
ShowTip.ShowNotice("请填写正确的IP", InfoType.Warning);
tBoxIp.Focus();
return false;
}
if (string.IsNullOrWhiteSpace(tBoxPort.Text))
{
//new MessageDialog("请填写端口").ShowDialog();
ShowTip.ShowNotice("请填写端口", InfoType.Warning);
tBoxPort.Focus();
return false;
}
if (!ValidateData.IsNumber(tBoxPort.Text))
{
//new MessageDialog("请填写正确的端口").ShowDialog();
ShowTip.ShowNotice("请填写正确的端口", InfoType.Warning);
tBoxPort.Focus();
return false;
}
if (string.IsNullOrWhiteSpace(ImgSrc))
{
//new MessageDialog("请选择图片").ShowDialog();
ShowTip.ShowNotice("请选择图片", InfoType.Warning);
return false;
}
//if (groupBox_serialPort.Visible)
//{
// if (string.IsNullOrWhiteSpace(uiTextBox_PortName.Text))
// {
// ShowWarningTip("请填写端口名称");
// uiTextBox_PortName.Focus();
// return false;
// }
// if (string.IsNullOrWhiteSpace(uiTextBox_BaudRate.Text))
// {
// ShowWarningTip("请填写波特率");
// uiTextBox_BaudRate.Focus();
// return false;
// }
// if (string.IsNullOrWhiteSpace(uiTextBox_DataBits.Text))
// {
// ShowWarningTip("请填写数据位长度");
// uiTextBox_DataBits.Focus();
// return false;
// }
//}
}
catch(Exception ex)
{
LoggerHelper.ErrorLog("CheckData error", ex);
}
return true;
}
#endregion
#region 拖动窗体
///
/// 拖动窗体
///
///
///
private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
this.DragMove();
}
}
#endregion
#region 关闭页面
///
/// 关闭页面
///
///
///
private void btnClose_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
///
/// 取消
///
///
///
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
#endregion
#region ESC关闭画面
///
/// ESC关闭画面
///
///
///
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape)
{
this.Close();
}
}
#endregion
}
}