You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

233 lines
7.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using POSV.Bean;
using DevComponents.DotNetBar.Controls;
using POSV.Utils;
namespace POSV.Component
{
public partial class EditPrinterForm : BusinessForm
{
private readonly PrinterItem _printerItem = null;
private Entity.Printer entity = null;
public EditPrinterForm(PrinterItem printerItem)
{
InitializeComponent();
this._printerItem = printerItem;
if (this._printerItem != null)
{
this.controlBox.Text = "修改门店打印机";
}
else
{
this.controlBox.Text = "添加门店打印机";
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (this.DesignMode) return;
//打印机品牌
this.cmbMode.DataSource = System.Enum.GetNames(typeof(PrinterBrand));
//打印机纸张
this.cmbPager.DataSource = System.Enum.GetNames(typeof(PrinterPager));
if (this._printerItem != null)
{
//打印机名称
this.txtName.Text = this._printerItem.Name;
//打印类型
if(this._printerItem.Type == 1)
{
this.checkBoxX1.Checked = true;
}
else
{
this.checkBoxX3.Checked = true;
}
//品牌
PrinterBrand mode = PrinterBrand.;
if("北洋打印专用".Equals(this._printerItem.DynamicLibrary))
{
mode = PrinterBrand.;
}
this.cmbMode.SelectedIndex = this.cmbMode.FindString(mode.ToString());
//页宽
PrinterPager pager = PrinterPager.80mm;
if(this._printerItem.PageWidth == 58)
{
pager = PrinterPager.58mm;
}
this.cmbPager.SelectedIndex = this.cmbPager.FindString(pager.ToString());
//端口
foreach (Control ctrl in this.panelPort.Controls)
{
var chk = ctrl as CheckBoxX;
chk.Checked = !string.IsNullOrEmpty(this._printerItem.Port) && this._printerItem.Port.Contains(ctrl.Tag.ToString());
}
//初始化指令
this.txtInitCommand.Text = this._printerItem.InitCommand;
//普通字体
this.txtNormalCommand.Text = this._printerItem.NormalCommand;
//倍宽字体
this.txtDoubleWidthCommand.Text = this._printerItem.DoubleWidthCommand;
//倍高字体
this.txtDoubleHeightCommand.Text = this._printerItem.DoubleHeightCommand;
//倍宽倍高
this.txtDoubleWidthHeightCommand.Text = this._printerItem.DoubleWidthHeightCommand;
//切纸
this.txtCutPageCommand.Text = this._printerItem.CutPageCommand;
//钱箱
this.txtCashboxCommand.Text = this._printerItem.CashboxCommand;
}
else
{
this.cmbMode.SelectedIndex = 1;
this.cmbPager.SelectedIndex = 0;
}
}
private void ButtonSaveClick(object sender , EventArgs e)
{
bool isException = true;
try
{
if (string.IsNullOrEmpty(txtName.Text.Trim()))
{
this.ShowMessage(this.lblInfo, "打印机名称不能为空", true);
txtName.Focus();
return;
}
var port = new List<string>();
foreach(Control ctrl in this.panelPort.Controls)
{
var chk = ctrl as CheckBoxX;
if (chk.Checked)
{
port.Add(chk.Tag.ToString());
}
}
var portString = string.Join(",", port.ToArray());
if (string.IsNullOrEmpty(portString))
{
this.ShowMessage(this.lblInfo, "请选择打印机端口", true);
return;
}
this.entity = new POSV.Entity.Printer();
if(this._printerItem == null)
{
this.entity.Id = IdWorkerUtils.Instance.NextId();
}
else
{
this.entity.Id = this._printerItem.Id;
}
this.entity.TenantId = Global.Instance.Authc.TenantId;
this.entity.Name = this.txtName.Text.Trim();
this.entity.DynamicLibrary = this.cmbMode.SelectedItem.ToString();
this.entity.Port = portString;
var pagerWidth = PrinterPager.80mm;
Enum.TryParse<PrinterPager>(this.cmbPager.SelectedItem.ToString(), out pagerWidth);
this.entity.PageWidth = (int)pagerWidth;
if (checkBoxX1.Checked)
{
this.entity.Type = 1;
}
else
{
this.entity.Type = 2;
}
this.entity.UserDefined = 1;
this.entity.InitCommand = this.txtInitCommand.Text.Trim();
this.entity.NormalCommand = this.txtNormalCommand.Text.Trim();
this.entity.DoubleWidthCommand = this.txtDoubleWidthCommand.Text.Trim();
this.entity.DoubleHeightCommand = this.txtDoubleHeightCommand.Text.Trim();
this.entity.DoubleWidthHeightCommand = this.txtDoubleWidthHeightCommand.Text.Trim();
this.entity.CutPageCommand = this.txtCutPageCommand.Text.Trim();
this.entity.CashboxCommand = this.txtCashboxCommand.Text.Trim();
lock (Global.Instance.SyncLock)
{
using (var db = Global.Instance.OpenDataBase)
{
using (var transaction = db.GetTransaction())
{
db.Save<POSV.Entity.Printer>(this.entity);
transaction.Complete();
}
}
}
isException = false;
}
catch (Exception ex)
{
isException = true;
this.ShowMessage(this.lblInfo , "添加打印机发生异常" , true);
LOGGER.Error(ex , "添加打印机发生异常");
}
finally
{
if (!isException)
{
this.OnAcceptButtonClick(new TransparentEventArgs(TransparentAction.Accept , string.Empty , this.entity));
this.OnCloseClick(this.ButtonClose , EventArgs.Empty);
}
}
}
private void OnCloseClick(object sender , EventArgs e)
{
if (this.Owner != null)
{
this.Owner.Close();
}
this.Close();
}
}
}