From 70c49ce94352ea6097b5de48536e81b1b96682e5 Mon Sep 17 00:00:00 2001
From: lu <123456>
Date: 星期一, 13 十月 2025 21:29:26 +0800
Subject: [PATCH] 打印

---
 DevApp/Gs.DevApp/UserControl/UcBtnPrint.cs |  324 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 248 insertions(+), 76 deletions(-)

diff --git a/DevApp/Gs.DevApp/UserControl/UcBtnPrint.cs b/DevApp/Gs.DevApp/UserControl/UcBtnPrint.cs
index 01c25d3..6a658a8 100644
--- a/DevApp/Gs.DevApp/UserControl/UcBtnPrint.cs
+++ b/DevApp/Gs.DevApp/UserControl/UcBtnPrint.cs
@@ -1,19 +1,14 @@
-锘縰sing DevExpress.Utils.VisualEffects;
-using DevExpress.XtraBars;
-using DevExpress.XtraEditors;
-using Gs.DevApp.DevFrm.Rpt;
-using Gs.DevApp.DevFrm.Sys;
+锘縰sing Gs.DevApp.DevFrm.Rpt;
+using Gs.DevApp.Entity;
 using Gs.DevApp.ToolBox;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using System;
-using System.Collections.Generic;
-using System.ComponentModel;
 using System.Data;
 using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.IO;
 using System.Windows.Forms;
+
 
 namespace Gs.DevApp.UserControl
 {
@@ -22,90 +17,154 @@
         public UcBtnPrint()
         {
             InitializeComponent();
-            btnReport.Click += BtnReport_ItemClick;
-            btnDesign.Click += BtnDesign_ItemClick;
-
-          
+            //棰勮鎵撳嵃
+            this.btnPrint.Click += (s, e) =>
+            {
+                if (btnPrintClick != null)
+                    btnPrintClick(this, e);
+                else
+                    return;
+                if (rptParameter == "return false")
+                    return;
+                if (string.IsNullOrEmpty(rptParameter))
+                {
+                    MsgHelper.ShowError("娌℃湁鎸囧畾鎶ヨ〃鍙傛暟锛岃鑱旂郴鎶�鏈紑鍙戜汉鍛橈紒");
+                    return;
+                }
+                #region 濡傛灉鏄鎴风殑鍚庣洊鐮�
+                if (rptParameter.Contains("rpt_hgm"))
+                {
+                    var _obj = new
+                    {
+                        keyType = "瀹㈡埛妯℃澘"
+                    };
+                    var json = JsonConvert.SerializeObject(_obj);
+                    try
+                    {
+                        var strReturn =
+                            UtilityHelper.HttpPost("", "Report/GetTemplateList", json);
+                        ReturnModel<DataTable> dd = UtilityHelper.ReturnToList(strReturn);
+                        DataTable dt = dd.rtnData;
+                        if (dd.rtnCode > 0)
+                        {
+                            // 鍒涘缓鎴栬幏鍙栦竴涓狢ontextMenu瀵硅薄锛堜緥濡備娇鐢–ontextMenuStrip锛�
+                            ContextMenu contextMenu = new ContextMenu();
+                            foreach (DataRow dr in dt.Rows)
+                            {
+                                MenuItem menuItem1 = new MenuItem(dr["reportType"].ToString() + "銆�" + dr["reportName"].ToString() + "銆�");
+                                menuItem1.Click += (ss, ee) =>
+                                {
+                                    rptParameter = rptParameter.Replace("rpt_hgm", dr["reportType"].ToString());
+                                    _print();
+                                };
+                                contextMenu.MenuItems.Add(menuItem1);
+                            }
+                            // 鏄剧ず鑿滃崟鍦ㄦ寜閽殑浣嶇疆
+                            contextMenu.Show(btnPrint, new Point(0, btnPrint.Height)); // 璋冩暣绗簩涓弬鏁颁互璋冩暣鑿滃崟鐨勬樉绀轰綅缃�
+                            return;
+                        }
+                    }
+                    catch (Exception ex)
+                    { }
+                }
+                #endregion
+                _print();
+            };
+            //鎵归噺鎿嶄綔
+            this.btnAll.Click += (s, e) =>
+            {
+                if (btnAllClick != null)
+                    btnAllClick(this, e);
+                else
+                    return;
+            };
+            //鐩存帴鎵撳嵃
+            this.btnZhiJie.Click += (s, e) =>
+            {
+                if (btnZhiJieClick != null)
+                    btnZhiJieClick(this, e);
+                else
+                    return;
+                if (rptParameter == "return false")
+                    return;
+                if (string.IsNullOrEmpty(rptParameter))
+                {
+                    MsgHelper.ShowError("娌℃湁鎸囧畾鎶ヨ〃鍙傛暟锛岃鑱旂郴鎶�鏈紑鍙戜汉鍛橈紒");
+                    return;
+                }
+                #region 濡傛灉鏄鎴风殑鍚庣洊鐮�
+                if (rptParameter.Contains("rpt_hgm"))
+                {
+                    var _obj = new
+                    {
+                        keyType = "瀹㈡埛妯℃澘"
+                    };
+                    var json = JsonConvert.SerializeObject(_obj);
+                    try
+                    {
+                        var strReturn =
+                            UtilityHelper.HttpPost("", "Report/GetTemplateList", json);
+                        ReturnModel<DataTable> dd = UtilityHelper.ReturnToList(strReturn);
+                        DataTable dt = dd.rtnData;
+                        if (dd.rtnCode > 0)
+                        {
+                            // 鍒涘缓鎴栬幏鍙栦竴涓狢ontextMenu瀵硅薄锛堜緥濡備娇鐢–ontextMenuStrip锛�
+                            ContextMenu contextMenu = new ContextMenu();
+                            foreach (DataRow dr in dt.Rows)
+                            {
+                                MenuItem menuItem1 = new MenuItem(dr["reportType"].ToString() + "銆�" + dr["reportName"].ToString() + "銆�");
+                                menuItem1.Click += (ss, ee) =>
+                                {
+                                    rptParameter = rptParameter.Replace("rpt_hgm", dr["reportType"].ToString());
+                                    _printZhiJie();
+                                };
+                                contextMenu.MenuItems.Add(menuItem1);
+                            }
+                            // 鏄剧ず鑿滃崟鍦ㄦ寜閽殑浣嶇疆
+                            contextMenu.Show(btnPrint, new Point(0, btnPrint.Height)); // 璋冩暣绗簩涓弬鏁颁互璋冩暣鑿滃崟鐨勬樉绀轰綅缃�
+                            return;
+                        }
+                    }
+                    catch (Exception ex)
+                    { }
+                }
+                #endregion
+                _printZhiJie();
+            };
         }
         /// <summary>
         ///     鍏抽敭瀛楋紝涓�鑸槸涓婚敭
         /// </summary>
         public string guidKey { get; set; }
+
+
+        /// <summary>
+        /// 鎵归噺鎿嶄綔鏃剁殑鍏抽敭瀛楋細鎵樻澘鐮�
+        /// </summary>
+        public string allClickKey { get; set; }
+
+
         /// <summary>
         ///     鎶ヨ〃锛屽湪鏁版嵁搴撲腑瑕佸敮涓�,濡傦細瀛樺偍杩囩▼鍚峽鍏ュ弬1鍚峾鍏ュ弬鍊�,鍏ュ弬2鍚峾鍏ュ弬鍊紏
         /// </summary>
         public string rptParameter { get; set; }
 
+        /// <summary>
+        /// 鎵撳嵃
+        /// </summary>
+        public event EventHandler btnPrintClick;
 
         /// <summary>
-        /// 璁剧疆鎶ヨ〃
+        /// 鎵归噺鎿嶄綔
         /// </summary>
-        public event EventHandler btnDesignClick;
+        public event EventHandler btnAllClick;
 
         /// <summary>
-        /// 鎶ヨ〃
+        /// 鐩存帴鎵撳嵃
         /// </summary>
-        public event EventHandler btnReportClick;
+        public event EventHandler btnZhiJieClick;
 
-        private void BtnReport_ItemClick(object sender, EventArgs e)
-        {
-            if (btnReportClick != null)
-                btnReportClick(this, e);
-            else
-                return;
 
-            if (rptParameter == "return false")
-                return;
-            if (string.IsNullOrEmpty(rptParameter))
-            {
-                MsgHelper.ShowError("娌℃湁鎸囧畾鎶ヨ〃鍙傛暟锛岃鑱旂郴鎶�鏈紑鍙戜汉鍛橈紒");
-                return;
-            }
-            var _bl = false;
-            _bl = _ckRptService();
-            if (_bl)
-            {
-                try
-                {
-                    using (Form frm = new RptPreview(guidKey, rptParameter))
-                    {
-                        frm.ShowDialog();
-                    }
-                }
-                catch (Exception)
-                {
-                }
-                return;
-            }
-
-            MsgHelper.ShowError("娌℃湁璁捐妯℃澘锛岃鍏堣璁℃ā鏉匡紒");
-        }
-
-        private void BtnDesign_ItemClick(object sender, EventArgs e)
-        {
-            if (btnDesignClick != null)
-                btnDesignClick(this, e);
-            else
-                return;
-
-            if (string.IsNullOrEmpty(rptParameter))
-            {
-                MsgHelper.ShowError("娌℃湁鎸囧畾鎶ヨ〃鍙傛暟锛岃鑱旂郴鎶�鏈紑鍙戜汉鍛橈紒");
-                return;
-            }
-            var _bl = false;
-            _bl = _ckRptService();
-            //濡傛灉宸茬粡鏈夋ā鏉夸簡锛岀洿鎺ユ墦寮�璁剧疆妯℃澘
-            if (_bl)
-            {
-                var frm = new EasyRptDesign(guidKey, rptParameter);
-                frm.ShowDialog();
-                return;
-            }
-            //鍚﹀垯鍚戝璁捐妯℃澘
-            var rptWizard = new ShowRptWizard(guidKey, rptParameter);
-            rptWizard.ShowDialog();
-        }
         private bool _ckRptService()
         {
             try
@@ -130,5 +189,118 @@
             return false;
         }
 
+
+        /// <summary>
+        /// 璁剧疆鎵归噺鎸夐挳鍙鎬�
+        /// </summary>
+        /// <param name="blPiLiang"></param>
+        public void SetPlButton(bool blPiLiang)
+        {
+            if (blPiLiang == true)
+                this.lay3.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
+            else
+                this.lay3.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
+        }
+
+        /// <summary>
+        /// 璁剧疆纭畾鎸夐挳鍙鎬�
+        /// </summary>
+        /// <param name="blPiLiang"></param>
+        public void SetPrintButton(bool blPiLiang)
+        {
+            if (blPiLiang == true)
+            {
+                this.lay1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
+                this.lay2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
+            }
+            else
+            {
+                this.lay1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
+                this.lay2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
+            }
+        }
+
+        /// <summary>
+        /// 棰勮鎵撳嵃
+        /// </summary>
+        private void _print()
+        {
+            var _bl = false;
+            _bl = _ckRptService();
+            if (_bl)
+            {
+                try
+                {
+                    using (Form frm = new RptPreview(guidKey, rptParameter))
+                    {
+                        frm.ShowDialog();
+                    }
+                }
+                catch (Exception)
+                {
+                }
+                return;
+            }
+            MsgHelper.ShowError("娌℃湁璁捐妯℃澘锛岃鍏堣璁℃ā鏉匡紒");
+        }
+        /// <summary>
+        /// 鐩存帴鎵撳嵃
+        /// </summary>
+        private void _printZhiJie() {
+            var _obj = new
+            {
+                rptParameter = rptParameter,
+                guid = guidKey,
+                isDesign = 0
+            };
+            try
+            {
+                var strJson = UtilityHelper.HttpPost("", "Report/GetRptData",
+                    JsonConvert.SerializeObject(_obj));
+                var _job = JObject.Parse(strJson);
+                var rtnCode = _job["rtnCode"].ToString();
+                if (int.Parse(rtnCode) > 0)
+                {
+                    //妯℃澘
+                    var report = new FastReport.Report();
+                    var buffer = (byte[])_job["rtnData"]["reportTemplateData"];
+                    using (var Stream = new MemoryStream(buffer))
+                    {
+                        report.Load(Stream);
+                    }
+                    //涓昏〃
+                    var array = new JArray();
+                    foreach (var a in _job["rtnData"]["zb"]) array.Add(a);
+                    var _zb = JsonConvert.DeserializeObject<DataTable>(array.ToString());
+                    _zb.TableName = "zb";
+                    //鏄庣粏琛�1
+                    var array1 = new JArray();
+                    foreach (var a in _job["rtnData"]["mx1"]) array1.Add(a);
+                    var _mx1 = JsonConvert.DeserializeObject<DataTable>(array1.ToString());
+                    _mx1.TableName = "mx1";
+                    //鏄庣粏琛�2
+                    var array2 = new JArray();
+                    foreach (var a in _job["rtnData"]["mx2"]) array2.Add(a);
+                    var _mx2 = JsonConvert.DeserializeObject<DataTable>(array2.ToString());
+                    _mx2.TableName = "mx2";
+                    //鍔犲埌鏁版嵁闆嗕腑
+                    var ds = new DataSet();
+                    ds.Tables.Add(_zb);
+                    ds.Tables.Add(_mx1);
+                    ds.Tables.Add(_mx2);
+                    report.RegisterData(ds);
+                    report.Print();
+                    // report.ShowPrepared();
+                }
+                else
+                {
+                    MsgHelper.ShowError("鎻愮ず锛�" + _job["rtnMsg"]);
+                }
+            }
+            catch (Exception ex)
+            {
+                MsgHelper.ShowError("鎻愮ず锛�" + ex.Message);
+            }
+        }
     }
 }

--
Gitblit v1.9.3