using ComponentFactory.Krypton.Toolkit; using NXWMS.Client.Model.AppModels.Result.Instock; using NXWMS.Client.Model.CoreModels; using NXWMS.Services; 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; namespace NXWMS.Forms.Instock.frmInstockChild { public partial class frmChildPrintMaterialLabelCode : KryptonForm { public frmChildPrintMaterialLabelCode() { InitializeComponent(); } #region 全局变量 /// /// 收货单主键 /// public string ReceiptId { get; set; } /// /// 数据库中的收货单所有数据(包括主、明细表)。 /// 未进行编辑过。 /// private WmsInReceiptResult ReceiptDataNotEdit = new WmsInReceiptResult(); /// /// 模板地址 /// private string _reportFolder = Application.StartupPath + "\\ReportMd\\"; #endregion private void frmChildPrintMaterialLabelCode_Load(object sender, EventArgs e) { try { LoadWmsInReceiptDtlData(); } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } } /// /// 调用服务端接口,请求收货单明细表数据 /// /// private string LoadWmsInReceiptDtlData() { var result = WmsInstockService.wmsInReceiptService.GetWmsInReceiptDtlListForId(new WmsInReceiptResult { RECEIPT_ID = Convert.ToInt32(this.ReceiptId) }); if (result.Status == OperateStatus.Success) { ktb_ArrivalNo.Text = result.Data.RECEIPT_NO; ktb_ArrivalNo.Enabled = false; ktb_Receipter.Text = result.Data.RECEIPTER; ktb_Receipter.Enabled = false; kcmb_ReceiptType.Text = result.Data.RECEIPT_TYPE_NAME; kcmb_ReceiptType.Enabled = false; ktb_Describe.Text = result.Data.DESCRIBE; ktb_Describe.Enabled = false; if (result.Data.RECEIPT_TIME != new DateTime()) { kdtp_ReceiptTime.Value = result.Data.RECEIPT_TIME; kdtp_ReceiptTime.Enabled = false; } ReceiptDataNotEdit = result.Data; kdgv_ReceiptDtlData.Rows.Clear(); foreach (WmsInReceiptDtlResult item in result.Data.WmsInReceiptDtlList) { int index = kdgv_ReceiptDtlData.Rows.Add(); kdgv_ReceiptDtlData.Rows[index].Cells[1].Value = item.RECEIPT_DTL_ID; kdgv_ReceiptDtlData.Rows[index].Cells[2].Value = item.MATERIEL_CODE; kdgv_ReceiptDtlData.Rows[index].Cells[3].Value = item.MATERIEL_NAME; kdgv_ReceiptDtlData.Rows[index].Cells[4].Value = item.MATERIEL_SPEC; kdgv_ReceiptDtlData.Rows[index].Cells[5].Value = item.BATCH_NO; kdgv_ReceiptDtlData.Rows[index].Cells[6].Value = item.RECEIPT_DTL_QTY; kdgv_ReceiptDtlData.Rows[index].Cells[7].Value = item.UNIT_CODE; kdgv_ReceiptDtlData.Rows[index].Cells[8].Value = item.SUPPLIER_NAME; kdgv_ReceiptDtlData.Rows[index].Cells[9].Value = item.PRODUCT_DATE; kdgv_ReceiptDtlData.Rows[index].Cells[10].Value = item.EXP_DATE; } return string.Empty; } else { return result.Message; } } private void kryptonButton1_Click(object sender, EventArgs e) { this.Close(); } private void kbtn_PrintPartialLabel_Click(object sender, EventArgs e) { kbtn_PrintPartialLabel.Enabled = false; kbtn_PrintAllLabel.Enabled = false; try { DataTable dt = new DataTable(); DataColumn dc = new DataColumn("MaterialCode"); dt.Columns.Add(dc); dc = new DataColumn("UnitCode"); dt.Columns.Add(dc); dc = new DataColumn("MaterialName"); dt.Columns.Add(dc); dc = new DataColumn("Specs"); dt.Columns.Add(dc); dc = new DataColumn("BatchNo"); dt.Columns.Add(dc); dc = new DataColumn("Qty"); dt.Columns.Add(dc); dc = new DataColumn("UniqueLabel"); dt.Columns.Add(dc); int rowsSelectedNum = 0; foreach (DataGridViewRow item in kdgv_ReceiptDtlData.Rows) { DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)item.Cells[0]; object obj = checkCell.EditedFormattedValue; if (Convert.ToBoolean(obj)) { rowsSelectedNum++; int receiptDtlId = Convert.ToInt32(item.Cells[1].Value); WmsInReceiptDtlResult receiptDtlMd = ReceiptDataNotEdit.WmsInReceiptDtlList.FirstOrDefault(x => x.RECEIPT_DTL_ID == receiptDtlId); DataRow dr = dt.NewRow(); dr["MaterialCode"] = receiptDtlMd.MATERIEL_CODE; dr["UnitCode"] = receiptDtlMd.UNIT_CODE; dr["MaterialName"] = receiptDtlMd.MATERIEL_NAME; dr["Specs"] = receiptDtlMd.MATERIEL_SPEC; dr["BatchNo"] = receiptDtlMd.BATCH_NO; dr["Qty"] = receiptDtlMd.RECEIPT_DTL_QTY; dr["UniqueLabel"] = receiptDtlMd.MATERIEL_CODE + "_" + receiptDtlMd.RECEIPT_DTL_ID; dt.Rows.Add(dr); } } if (rowsSelectedNum > 0) { DataSet dts = new DataSet(); dts.Tables.Add(dt); FastReport.Report report = new FastReport.Report(); string filename = _reportFolder + "标签数据.frx"; report.Load(filename); report.RegisterData(dts); report.Prepare(); report.PrintSettings.ShowDialog = false; report.Print(); report.Clear(); KryptonMessageBox.Show("打印成功!"); } else { KryptonMessageBox.Show("请勾选需要打印的收货单明细行数据!!"); } } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } kbtn_PrintPartialLabel.Enabled = true; kbtn_PrintAllLabel.Enabled = true; } private void kbtn_PrintAllLabel_Click(object sender, EventArgs e) { kbtn_PrintPartialLabel.Enabled = false; kbtn_PrintAllLabel.Enabled = false; try { DataTable dt = new DataTable(); DataColumn dc = new DataColumn("MaterialCode"); dt.Columns.Add(dc); dc = new DataColumn("UnitCode"); dt.Columns.Add(dc); dc = new DataColumn("MaterialName"); dt.Columns.Add(dc); dc = new DataColumn("Specs"); dt.Columns.Add(dc); dc = new DataColumn("BatchNo"); dt.Columns.Add(dc); dc = new DataColumn("Qty"); dt.Columns.Add(dc); dc = new DataColumn("UniqueLabel"); dt.Columns.Add(dc); foreach (WmsInReceiptDtlResult item in ReceiptDataNotEdit.WmsInReceiptDtlList) { DataRow dr = dt.NewRow(); dr["MaterialCode"] = item.MATERIEL_CODE; dr["UnitCode"] = item.UNIT_CODE; dr["MaterialName"] = item.MATERIEL_NAME; dr["Specs"] = item.MATERIEL_SPEC; dr["BatchNo"] = item.BATCH_NO; dr["Qty"] = item.RECEIPT_DTL_QTY; dr["UniqueLabel"] = item.MATERIEL_CODE + "_" + item.RECEIPT_DTL_ID; dt.Rows.Add(dr); } DataSet dts = new DataSet(); dts.Tables.Add(dt); FastReport.Report report = new FastReport.Report(); string filename = _reportFolder + "标签数据.frx"; report.Load(filename); report.RegisterData(dts); report.Prepare(); #if DEBUG report.Prepare(); //准备 report.ShowPrepared(); //显示 #else report.PrintSettings.ShowDialog = false; report.Print(); report.Clear(); #endif KryptonMessageBox.Show("打印成功!"); } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } kbtn_PrintPartialLabel.Enabled = true; kbtn_PrintAllLabel.Enabled = true; } } }