using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Reflection; using System.Windows.Forms; using Curtain.Framework.Json; using Dongke.IBOSS.PRD.Client.CommonModule; using Dongke.IBOSS.PRD.WCF.DataModels; using Dongke.IBOSS.PRD.WCF.DataModels.BarcodeBatchSet; using Dongke.IBOSS.PRD.WCF.Proxys; namespace Dongke.IBOSS.PRD.Client.Controls { public partial class F_SET_014002 : DKFormBase { /// /// 模板ID /// public int LayoutID { get; set; } private BarcodeBatchConfig _setData_old; private BarcodeBatchConfig _setData; private BarcodeBatchConfig_BC _setDataBC; private Dictionary _setDataTXTS; private DataSet _DataSet = null; private DataTable _DataItem = null; private DataRow _DataRow = null; public F_SET_014002() { InitializeComponent(); } private void F_SET_014002_Load(object sender, EventArgs e) { try { // 调试用 pnlPanel1.Visible = false; dgvTXT_EGS.AutoGenerateColumns = false; this.txtBC_EG.Visible = false; string usercode = ProxySettings.LoginUserInfo.UserCode + ""; if (usercode.StartsWith("DONGKECXY")) { pnlPanel1.Visible = true; dgvTXT_EGS.AutoGenerateColumns = true; this.txtBC_EG.Visible = true; } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void F_SET_014002_Shown(object sender, EventArgs e) { try { ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_SET_014001"; cre.Name = "GetBarCodeBatchLayout"; cre.Properties["LayoutID"] = LayoutID; ServiceResultEntity sre = SystemModuleProxy.Service.DoBarCodePrint(cre); if (sre != null && sre.Data != null && sre.Data.Tables.Count > 0) { _DataSet = sre.Data; _DataItem = sre.Data.Tables[1]; } else { this.Close(); return; } if (LayoutID > 0) { _DataRow = _DataSet.Tables[0].Rows[0]; txtLayoutName.Text = _DataRow["LayoutName"]+""; numDisplayNo.Value = Convert.ToDecimal(_DataRow["DisplayNo"]); chkValueFlag.Checked = (_DataRow["ValueFlag"] + "" == "1" ? true : false); txtRemarks.Text = _DataRow["Remarks"] + ""; byte[] bytes = _DataRow["LayoutData"] as byte[]; //byte[] bytes = System.Text.Encoding.UTF8.GetBytes(str); string ss_dd = System.Text.Encoding.UTF8.GetString(bytes); _setData_old = JsonHelper.ToObject(ss_dd); GetLayoutData(_setData_old); } else { _DataRow = _DataSet.Tables[0].NewRow(); _DataSet.Tables[0].Rows.Add(_DataRow); for (int i = 1; i < 3; i++) { BarcodeBatchConfig_TXT tt = SetDataTXT1(null); tt.ID = i; tt.Name = "文本" + i; lisTXTS.Items.Add(tt); } for (int i = 3; i < 5; i++) { BarcodeBatchConfig_TXT tt = SetDataTXT1(null); tt.ID = i; tt.Name = "文本" + i; tt.IsShow = false; lisTXTS.Items.Add(tt); } } // 显示第一个文本 lisTXTS.SelectedIndex = 0; //SetDataTXT1(); SetLayoutData(); dgvTXT_EGS.DataSource = _DataItem; } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void btnTXT_Font_Click(object sender, EventArgs e) { try { string name = (sender as Control)?.Name; TextBox ttt = null; if (name == "btnTXT1_Font") { ttt = txtTXT1_EG; } if (name == "btnBC_Font") { ttt = txtBC_EG; } //if (name == "btnTXT2_Font") //{ // ttt = txtTXT2_EG; //} //if (name == "btnTXT3_Font") //{ // ttt = txtTXT3_EG; //} //if (name == "btnTXT4_Font") //{ // ttt = txtTXT4_EG; //} dlgFont.Font = ttt.Font; if (dlgFont.ShowDialog() == DialogResult.OK) { ttt.Font = dlgFont.Font; } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void SetLayoutData() { // 画布 _setData = new BarcodeBatchConfig(); _setData.HB_W = (float)txtHB_W.Value; _setData.HB_H = (float)txtHB_H.Value; _setData.FlipH = chkFlipH.Checked; // Page _setData.PageW = (float)txtPageW.Value; _setData.PageH = (float)txtPageH.Value; _setData.PageRowNum = (int)txtPageRowNum.Value; _setData.PageColNum = (int)txtPageColNum.Value; _setData.ShowGrid = chkShowGrid.Checked; _setData.DpiX = (int)txtDpiX.Value; _setData.DpiY = (int)txtDpiY.Value; // 条码 _setDataBC = new BarcodeBatchConfig_BC(); _setData.BC = _setDataBC; _setDataBC.Type = cmbBC_Type.Text; _setDataBC.Format = cmbBC_Format.Text; _setDataBC.Level = cmbBC_Level.Text; _setDataBC.EG = txtBC_EG.Text; _setDataBC.Range = new RectangleF(); _setDataBC.Range.X = (float)txtBC_X.Value; _setDataBC.Range.Y = (float)txtBC_Y.Value; _setDataBC.Range.Width = (float)txtBC_W.Value; _setDataBC.Range.Height = (float)txtBC_H.Value; _setDataBC.TxtFont = new BarcodeBatchConfig_Font(); _setDataBC.TxtFont.FamilyName = txtBC_EG.Font.Name; _setDataBC.TxtFont.Size = txtBC_EG.Font.Size; _setDataBC.TxtFont.Style = txtBC_EG.Font.Style; _setDataBC.TxtFont.Gunit = txtBC_EG.Font.Unit; // 文本 _setDataTXTS = new Dictionary(); _setData.TXT_S = _setDataTXTS; // 文本1 //_setDataTXT1 = SetDataTXT1(); //_setDataTXTS.Add(1, _setDataTXT1); int i = 1; foreach (BarcodeBatchConfig_TXT item in lisTXTS.Items) { if (item != null) { //_setDataTXTS.Add(i, item); _setDataTXTS.Add(item.ID, item); i++; } } } private BarcodeBatchConfig_TXT SetDataTXT1SelectedItem() { BarcodeBatchConfig_TXT setDataTXT = (lisTXTS.SelectedItem as BarcodeBatchConfig_TXT); if (setDataTXT == null) { return null; } return SetDataTXT1(setDataTXT); } private BarcodeBatchConfig_TXT SetDataTXT1(BarcodeBatchConfig_TXT setDataTXT) { //BarcodeBatchConfig_TXT setDataTXT = (lisTXTS.SelectedItem as BarcodeBatchConfig_TXT); if (setDataTXT == null) { setDataTXT = new BarcodeBatchConfig_TXT(); } setDataTXT.AH = cmbTXT1_AH.Text; setDataTXT.AV = cmbTXT1_AV.Text; setDataTXT.Angle = cmbTXT1_Angle.Text; setDataTXT.EG = txtTXT1_EG.Text; setDataTXT.P_TXT = txtTXT1_EG.Text + ""; setDataTXT.Clip = chkTXT1_Clip.Checked; setDataTXT.Wrap = chkTXT1_Wrap.Checked; setDataTXT.Range = new RectangleF(); setDataTXT.Range.X = (float)txtTXT1_X.Value; setDataTXT.Range.Y = (float)txtTXT1_Y.Value; setDataTXT.Range.Width = (float)txtTXT1_W.Value; setDataTXT.Range.Height = (float)txtTXT1_H.Value; setDataTXT.TxtFont = new BarcodeBatchConfig_Font(); setDataTXT.TxtFont.FamilyName = txtTXT1_EG.Font.Name; setDataTXT.TxtFont.Size = txtTXT1_EG.Font.Size; setDataTXT.TxtFont.Style = txtTXT1_EG.Font.Style; setDataTXT.TxtFont.Gunit = txtTXT1_EG.Font.Unit; setDataTXT.Name = txtTXTName.Text; setDataTXT.IsShow = chkTXTIsShow.Checked; return setDataTXT; } private void GetLayoutData(BarcodeBatchConfig setData) { if (setData == null) { return; } // 画布 txtHB_W.Value = (decimal)setData.HB_W; txtHB_H.Value = (decimal)setData.HB_H; chkFlipH.Checked = setData.FlipH; // Page txtPageW.Value = (decimal)setData.PageW; txtPageH.Value = (decimal)setData.PageH; txtPageRowNum.Value = (decimal)setData.PageRowNum; txtPageColNum.Value = (decimal)setData.PageColNum; txtDpiX.Value = (decimal)setData.DpiX; txtDpiY.Value = (decimal)setData.DpiY; chkShowGrid.Checked = setData.ShowGrid; // 条码 BarcodeBatchConfig_BC setDataBC = setData.BC; if (setDataBC != null) { cmbBC_Type.Text = setDataBC.Type; cmbBC_Format.Text = setDataBC.Format; cmbBC_Level.Text = setDataBC.Level; txtBC_EG.Text = setDataBC.EG; if (setDataBC.Range != null) { txtBC_X.Value = (decimal)setDataBC.Range.X; txtBC_Y.Value = (decimal)setDataBC.Range.Y; txtBC_W.Value = (decimal)setDataBC.Range.Width; txtBC_H.Value = (decimal)setDataBC.Range.Height; } if (setDataBC.TxtFont != null) { txtBC_EG.Font = BarcodeBatchPrint.DoToFont(setDataBC.TxtFont); } else { txtBC_EG.Font = btnBC_Font.Font; } } // 文本 Dictionary setDataTXTS = setData.TXT_S; if (setDataTXTS != null) { // 文本1 //if (setDataTXTS.Count > 0) //{ // GetDataTXT1(setDataTXTS[1]); //} foreach (BarcodeBatchConfig_TXT item in setDataTXTS.Values) { lisTXTS.Items.Add(item); } } } private void GetDataTXT1() { BarcodeBatchConfig_TXT setDataTXT = (lisTXTS.SelectedItem as BarcodeBatchConfig_TXT); if (setDataTXT == null) { return; } txtTXTName.Text = setDataTXT.Name; chkTXTIsShow.Checked = setDataTXT.IsShow; cmbTXT1_AH.Text = setDataTXT.AH; cmbTXT1_AV.Text = setDataTXT.AV; cmbTXT1_Angle.Text = setDataTXT.Angle; txtTXT1_EG.Text = setDataTXT.EG; chkTXT1_Clip.Checked = setDataTXT.Clip; chkTXT1_Wrap.Checked = setDataTXT.Wrap; if (setDataTXT.Range != null) { txtTXT1_X.Value = (decimal)setDataTXT.Range.X; txtTXT1_Y.Value = (decimal)setDataTXT.Range.Y; txtTXT1_W.Value = (decimal)setDataTXT.Range.Width; txtTXT1_H.Value = (decimal)setDataTXT.Range.Height; } if (setDataTXT.TxtFont != null) { txtTXT1_EG.Font = BarcodeBatchPrint.DoToFont(setDataTXT.TxtFont); } else { txtTXT1_EG.Font = btnTXT1_Font.Font; } } private void btnHB_Show_Click(object sender, EventArgs e) { try { SetDataTXT1SelectedItem(); SetLayoutData(); Graphics g = picHB.CreateGraphics(); _setData.DpiX = g.DpiX; _setData.DpiY = g.DpiY; // 设置文本 _DataItem.AcceptChanges(); foreach (BarcodeBatchConfig_TXT txt in _setData.TXT_S.Values) { txt.P_TXT = txt.EG+""; } foreach (DataRow item in _DataItem.Rows) { string item_code = item["ITEMCODE"] + ""; string item_value = item["ITEMSAMPLE"] + ""; if (item_code == "{#产品条码#}") { _setData.BC.P_TXT = item_value; } foreach (BarcodeBatchConfig_TXT txt in _setData.TXT_S.Values) { txt.P_TXT = txt.P_TXT.Replace(item_code, item_value); } } BarcodeBatchPrint.DoToPixel(_setData); Image image = BarcodeBatchPrint.CreateImageHB(_setData, _DataItem, null); picHB.SetImage(image, _setData.RangePixel.X, _setData.RangePixel.Y); } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void btnOut_Click(object sender, EventArgs e) { try { SetDataTXT1SelectedItem(); SetLayoutData(); string tj = Curtain.Framework.Json.JsonHelper.FromObject(_setData); txtJsonData.Text = tj; } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void btnIn_Click(object sender, EventArgs e) { try { //SetLayoutData(); TXTS_SelectedItem = null; lisTXTS.Items.Clear(); string tj = txtJsonData.Text; BarcodeBatchConfig bbc = Curtain.Framework.Json.JsonHelper.ToObject(tj); GetLayoutData(bbc); SetLayoutData(); //lisTXTS.DisplayMember = "KEY"; //foreach (var item in bbc.TXT_S.Values) //{ // lisTXTS.Items.Add(item); //} } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void btnPage_Show_Click(object sender, EventArgs e) { try { decimal hb_w = this.txtHB_W.Value; decimal hb_h = this.txtHB_H.Value; decimal page_w = this.txtPageW.Value; decimal page_h = this.txtPageH.Value; decimal col = txtPageColNum.Value; decimal row = txtPageRowNum.Value; decimal w = page_w - hb_w * col; decimal h = page_h - hb_h * row; if (w < 0 || h < 0) { MessageBox.Show("纸张尺寸不够。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } SetDataTXT1SelectedItem(); SetLayoutData(); Graphics g = picHB.CreateGraphics(); _setData.DpiX = g.DpiX; _setData.DpiY = g.DpiY; // 设置文本 _DataItem.AcceptChanges(); foreach (BarcodeBatchConfig_TXT txt in _setData.TXT_S.Values) { txt.P_TXT = txt.EG + ""; } foreach (DataRow item in _DataItem.Rows) { string item_code = item["ITEMCODE"] + ""; string item_value = item["ITEMSAMPLE"] + ""; if (item_code == "{#产品条码#}") { _setData.BC.P_TXT = item_value; } foreach (BarcodeBatchConfig_TXT txt in _setData.TXT_S.Values) { txt.P_TXT = txt.P_TXT.Replace(item_code, item_value); } } BarcodeBatchPrint.DoToPixel(_setData); Image image = BarcodeBatchPrint.ShowImagePage(_setData); picPage.SetImage(image, _setData.RangePixel.Width, _setData.RangePixel.Height); } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void btnTXTOK_Click(object sender, EventArgs e) { try { SetDataTXT1SelectedItem(); } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private object TXTS_SelectedItem = null; private void lisTXTS_SelectedIndexChanged(object sender, EventArgs e) { try { if (TXTS_SelectedItem != null) { SetDataTXT1(TXTS_SelectedItem as BarcodeBatchConfig_TXT); } TXTS_SelectedItem = lisTXTS.SelectedItem; GetDataTXT1(); } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void btnTXTS_ADD_Click(object sender, EventArgs e) { try { BarcodeBatchConfig_TXT txt = new BarcodeBatchConfig_TXT(); lisTXTS.Items.Add(txt); } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void btnTXTS_DEL_Click(object sender, EventArgs e) { try { if (lisTXTS.SelectedIndex >= 0) { lisTXTS.Items.RemoveAt(lisTXTS.SelectedIndex); } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void btnCancel_Click(object sender, EventArgs e) { try { this.Close(); } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private void btnSave_Click(object sender, EventArgs e) { try { decimal hb_w = this.txtHB_W.Value; decimal hb_h = this.txtHB_H.Value; decimal page_w = this.txtPageW.Value; decimal page_h = this.txtPageH.Value; decimal col = txtPageColNum.Value; decimal row = txtPageRowNum.Value; decimal w = page_w - hb_w * col; decimal h = page_h - hb_h * row; if (w < 0 || h < 0) { MessageBox.Show("纸张尺寸不够。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } _DataRow["LayoutName"] = txtLayoutName.Text.Trim(); _DataRow["DisplayNo"] = (int)numDisplayNo.Value; _DataRow["ValueFlag"] = (chkValueFlag.Checked ? "1" : "0"); _DataRow["Remarks"] = txtRemarks.Text; SetDataTXT1SelectedItem(); SetLayoutData(); _DataRow["WIDTH"] = _setData.PageW; _DataRow["HEIGHT"] = _setData.PageH; string ss_jj = JsonHelper.FromObject(_setData); byte[] bytes = System.Text.Encoding.UTF8.GetBytes(ss_jj); _DataRow["LayoutData"] = bytes; _DataSet.AcceptChanges(); // 新建票据的情况 if (LayoutID == 0) { ServiceResultEntity result = this.DoAsync(() => { return this.SaveAddLayoutData(); }); int invoiceLayoutID = Convert.ToInt32(result.Result); if (invoiceLayoutID > 0) { MessageBox.Show("保存操作成功完成了。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); // 新建成功后,将画面修改成编辑状态 this.LayoutID = invoiceLayoutID; this.Text = F_SET_014001.TITLE_F_SET_014001_EDIT + "-" + this.txtLayoutName.Text.Trim(); } else { MessageBox.Show("保存操作没有更新任何数据,请确认该数据是否存在。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { ServiceResultEntity result = this.DoAsync(() => { return this.SaveEditLayoutData(); }); int returnAffectRows = Convert.ToInt32(result.Result); if (returnAffectRows > 0) { MessageBox.Show("保存操作成功完成了。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("保存操作没有更新任何数据,请确认该数据是否存在。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private ServiceResultEntity SaveAddLayoutData() { try { ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_SET_014001"; cre.Name = "SaveAddBarCodeBatchLayout"; cre.Data = _DataSet; return SystemModuleProxy.Service.DoBarCodePrint(cre); } catch (Exception ex) { throw ex; } } /// /// 保存编辑票据数据 /// /// 更新数据时影响的行数 private ServiceResultEntity SaveEditLayoutData() { try { ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_SET_014001"; cre.Name = "SaveEditBarCodeBatchLayout"; cre.Data = _DataSet; return SystemModuleProxy.Service.DoBarCodePrint(cre); } catch (Exception ex) { throw ex; } } private void btnPrint_Click(object sender, EventArgs e) { try { decimal hb_w = this.txtHB_W.Value; decimal hb_h = this.txtHB_H.Value; decimal page_w = this.txtPageW.Value; decimal page_h = this.txtPageH.Value; decimal col = txtPageColNum.Value; decimal row = txtPageRowNum.Value; decimal w = page_w - hb_w * col; decimal h = page_h - hb_h * row; if (w < 0 || h < 0) { MessageBox.Show("纸张尺寸不够。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } SetDataTXT1SelectedItem(); SetLayoutData(); Graphics g = picHB.CreateGraphics(); _setData.DpiX = g.DpiX; _setData.DpiY = g.DpiY; //_setData.DpiX = 600; //_setData.DpiY = 600; /*List bbd = new List(); for (int i = 0; i < 36; i++) { BarcodeBatchData bb = new BarcodeBatchData(); bb.Barcode = (12345678901 + i)+""; bb.TXT_S = new Dictionary(); bb.TXT_S.Add(1, bb.Barcode); bbd.Add(bb); }*/ List bbd = new List(); DataTable ddtt = new DataTable(); ddtt.Columns.Add("BarCode"); ddtt.Columns.Add("GroutingDate", typeof(DateTime)); ddtt.Columns.Add("GroutingBatchNo", typeof(int)); ddtt.Columns.Add("GroutingLineCode"); ddtt.Columns.Add("GroutingMouldCode"); ddtt.Columns.Add("GoodsCode"); for (int i = 0; i < 36; i++) { DataRow bb = ddtt.NewRow(); bb["BarCode"] = (12345678901 + i) + ""; bb["GroutingDate"] = DateTime.Now; bb["GroutingBatchNo"] = i; bb["GroutingLineCode"] = "C01C" + i; bb["GroutingMouldCode"] = "C01C" + i + "-00"+ i; bb["GoodsCode"] = "H0" + i; ddtt.Rows.Add(bb); bbd.Add(bb); } BarcodeBatchPrint.DoToPixel(_setData); //int index = 0; int nextIndex = 0; while (nextIndex > -1 && nextIndex < bbd.Count) { Image image = BarcodeBatchPrint.CreateImagePage(_setData, _DataItem, bbd, nextIndex, out nextIndex); picPage.SetImage(image, _setData.RangePixel.Width, _setData.RangePixel.Height); //image.Save("D://p" + nextIndex + ".png"); MessageBox.Show(nextIndex+""); } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), MethodBase.GetCurrentMethod().Name, this.Text, ex); } } } }