lu
2025-10-13 2d532196ab4d2cb7bfda91b00c6076239a945ecc
DevApp/Gs.DevApp/UserControl/UcBtnPrint.cs
@@ -2,9 +2,11 @@
using Gs.DevApp.Entity;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
@@ -15,6 +17,7 @@
        public UcBtnPrint()
        {
            InitializeComponent();
            //预览打印
            this.btnPrint.Click += (s, e) =>
            {
                if (btnPrintClick != null)
@@ -28,7 +31,7 @@
                    MsgHelper.ShowError("没有指定报表参数,请联系技术开发人员!");
                    return;
                }
                #region 如果是客户的
                #region 如果是客户的后盖码
                if (rptParameter.Contains("rpt_hgm"))
                {
                    var _obj = new
@@ -65,16 +68,84 @@
                    { }
                }
                #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;
                }
                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);
                }
            };
        }
        /// <summary>
@@ -103,6 +174,12 @@
        /// 批量操作
        /// </summary>
        public event EventHandler btnAllClick;
        /// <summary>
        /// 直接打印
        /// </summary>
        public event EventHandler btnZhiJieClick;
        private bool _ckRptService()
        {
@@ -154,7 +231,7 @@
        }
        /// <summary>
        ///
        /// 预览打印
        /// </summary>
        private void _print()
        {
@@ -171,12 +248,10 @@
                }
                catch (Exception)
                {
                }
                return;
            }
            MsgHelper.ShowError("没有设计模板,请先设计模板!");
        }
    }
}