using DevExpress.Utils.DirectXPaint;
using DevExpress.XtraEditors;
using FastReport;
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.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Gs.DevApp.UserControl
{
public partial class UcBtnPrintAll : DevExpress.XtraEditors.XtraUserControl
{
public UcBtnPrintAll()
{
InitializeComponent();
}
///
/// 打印
///
public event EventHandler btnPrintClick;
public string rptType { get; set; }
public List mxList { get; set; }
private void simpleButton1_Click(object sender, EventArgs e)
{
if (btnPrintClick != null)
btnPrintClick(this, e);
else
return;
if (string.IsNullOrEmpty(rptType))
{
return;
}
if (mxList.Count<=0)
{
return;
}
int rowsCount = 0;
foreach (dynamic obj in mxList)
{
string guid = obj.guid.ToString();
string psnQty = obj.kdy.ToString();
if (string.IsNullOrEmpty(psnQty))
{
continue;
}
if (psnQty == "0")
{
continue;
}
string rptParameter = rptType + "{"
+ guid//关联主键
+ "," + ""
+ "," + 0//余数
+ "," + 1//张数
+ "," + psnQty//每张条码数量,目前等于申请量
+ "}";
var _obj = new
{
rptParameter = rptParameter,
guid = guid,
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();
EnvironmentSettings eSet = new EnvironmentSettings();
eSet.ReportSettings.ShowProgress = false;
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(array.ToString());
_zb.TableName = "zb";
//明细表1
var array1 = new JArray();
foreach (var a in _job["rtnData"]["mx1"]) array1.Add(a);
var _mx1 = JsonConvert.DeserializeObject(array1.ToString());
_mx1.TableName = "mx1";
//明细表2
var array2 = new JArray();
foreach (var a in _job["rtnData"]["mx2"]) array2.Add(a);
var _mx2 = JsonConvert.DeserializeObject(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.PrintSettings.ShowDialog = false;
report.Print();
report.PrintSettings.ShowDialog = false;
report.Dispose();
rowsCount++;
}
else
{
}
}
catch (Exception ex)
{
}
Thread.Sleep(50);
}
if (rowsCount > 0)
MsgHelper.ShowInformation("提示:操作成功,共打印" + rowsCount.ToString() + "张!");
else
MsgHelper.ShowError("提示:暂无可打印物料!");
}
}
}