frmChildPrintMaterialLabelCode.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. using ComponentFactory.Krypton.Toolkit;
  2. using NXWMS.Client.Model.AppModels.Result.Instock;
  3. using NXWMS.Client.Model.CoreModels;
  4. using NXWMS.Services;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.ComponentModel;
  8. using System.Data;
  9. using System.Drawing;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Windows.Forms;
  13. namespace NXWMS.Forms.Instock.frmInstockChild
  14. {
  15. public partial class frmChildPrintMaterialLabelCode : KryptonForm
  16. {
  17. public frmChildPrintMaterialLabelCode()
  18. {
  19. InitializeComponent();
  20. }
  21. #region 全局变量
  22. /// <summary>
  23. /// 收货单主键
  24. /// </summary>
  25. public string ReceiptId { get; set; }
  26. /// <summary>
  27. /// 数据库中的收货单所有数据(包括主、明细表)。
  28. /// 未进行编辑过。
  29. /// </summary>
  30. private WmsInReceiptResult ReceiptDataNotEdit = new WmsInReceiptResult();
  31. /// <summary>
  32. /// 模板地址
  33. /// </summary>
  34. private string _reportFolder = Application.StartupPath + "\\ReportMd\\";
  35. #endregion
  36. private void frmChildPrintMaterialLabelCode_Load(object sender, EventArgs e)
  37. {
  38. try
  39. {
  40. LoadWmsInReceiptDtlData();
  41. }
  42. catch (Exception ex)
  43. {
  44. KryptonMessageBox.Show(ex.Message);
  45. }
  46. }
  47. /// <summary>
  48. /// 调用服务端接口,请求收货单明细表数据
  49. /// </summary>
  50. /// <returns></returns>
  51. private string LoadWmsInReceiptDtlData()
  52. {
  53. var result = WmsInstockService.wmsInReceiptService.GetWmsInReceiptDtlListForId(new WmsInReceiptResult { RECEIPT_ID = Convert.ToInt32(this.ReceiptId) });
  54. if (result.Status == OperateStatus.Success)
  55. {
  56. ktb_ArrivalNo.Text = result.Data.RECEIPT_NO;
  57. ktb_ArrivalNo.Enabled = false;
  58. ktb_Receipter.Text = result.Data.RECEIPTER;
  59. ktb_Receipter.Enabled = false;
  60. kcmb_ReceiptType.Text = result.Data.RECEIPT_TYPE_NAME;
  61. kcmb_ReceiptType.Enabled = false;
  62. ktb_Describe.Text = result.Data.DESCRIBE;
  63. ktb_Describe.Enabled = false;
  64. if (result.Data.RECEIPT_TIME != new DateTime())
  65. {
  66. kdtp_ReceiptTime.Value = result.Data.RECEIPT_TIME;
  67. kdtp_ReceiptTime.Enabled = false;
  68. }
  69. ReceiptDataNotEdit = result.Data;
  70. kdgv_ReceiptDtlData.Rows.Clear();
  71. foreach (WmsInReceiptDtlResult item in result.Data.WmsInReceiptDtlList)
  72. {
  73. int index = kdgv_ReceiptDtlData.Rows.Add();
  74. kdgv_ReceiptDtlData.Rows[index].Cells[1].Value = item.RECEIPT_DTL_ID;
  75. kdgv_ReceiptDtlData.Rows[index].Cells[2].Value = item.MATERIEL_CODE;
  76. kdgv_ReceiptDtlData.Rows[index].Cells[3].Value = item.MATERIEL_NAME;
  77. kdgv_ReceiptDtlData.Rows[index].Cells[4].Value = item.MATERIEL_SPEC;
  78. kdgv_ReceiptDtlData.Rows[index].Cells[5].Value = item.BATCH_NO;
  79. kdgv_ReceiptDtlData.Rows[index].Cells[6].Value = item.RECEIPT_DTL_QTY;
  80. kdgv_ReceiptDtlData.Rows[index].Cells[7].Value = item.UNIT_CODE;
  81. kdgv_ReceiptDtlData.Rows[index].Cells[8].Value = item.SUPPLIER_NAME;
  82. kdgv_ReceiptDtlData.Rows[index].Cells[9].Value = item.PRODUCT_DATE;
  83. kdgv_ReceiptDtlData.Rows[index].Cells[10].Value = item.EXP_DATE;
  84. }
  85. return string.Empty;
  86. }
  87. else
  88. {
  89. return result.Message;
  90. }
  91. }
  92. private void kryptonButton1_Click(object sender, EventArgs e)
  93. {
  94. this.Close();
  95. }
  96. private void kbtn_PrintPartialLabel_Click(object sender, EventArgs e)
  97. {
  98. kbtn_PrintPartialLabel.Enabled = false;
  99. kbtn_PrintAllLabel.Enabled = false;
  100. try
  101. {
  102. DataTable dt = new DataTable();
  103. DataColumn dc = new DataColumn("MaterialCode");
  104. dt.Columns.Add(dc);
  105. dc = new DataColumn("UnitCode");
  106. dt.Columns.Add(dc);
  107. dc = new DataColumn("MaterialName");
  108. dt.Columns.Add(dc);
  109. dc = new DataColumn("Specs");
  110. dt.Columns.Add(dc);
  111. dc = new DataColumn("BatchNo");
  112. dt.Columns.Add(dc);
  113. dc = new DataColumn("Qty");
  114. dt.Columns.Add(dc);
  115. dc = new DataColumn("UniqueLabel");
  116. dt.Columns.Add(dc);
  117. int rowsSelectedNum = 0;
  118. foreach (DataGridViewRow item in kdgv_ReceiptDtlData.Rows)
  119. {
  120. DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)item.Cells[0];
  121. object obj = checkCell.EditedFormattedValue;
  122. if (Convert.ToBoolean(obj))
  123. {
  124. rowsSelectedNum++;
  125. int receiptDtlId = Convert.ToInt32(item.Cells[1].Value);
  126. WmsInReceiptDtlResult receiptDtlMd = ReceiptDataNotEdit.WmsInReceiptDtlList.FirstOrDefault(x => x.RECEIPT_DTL_ID == receiptDtlId);
  127. DataRow dr = dt.NewRow();
  128. dr["MaterialCode"] = receiptDtlMd.MATERIEL_CODE;
  129. dr["UnitCode"] = receiptDtlMd.UNIT_CODE;
  130. dr["MaterialName"] = receiptDtlMd.MATERIEL_NAME;
  131. dr["Specs"] = receiptDtlMd.MATERIEL_SPEC;
  132. dr["BatchNo"] = receiptDtlMd.BATCH_NO;
  133. dr["Qty"] = receiptDtlMd.RECEIPT_DTL_QTY;
  134. dr["UniqueLabel"] = receiptDtlMd.MATERIEL_CODE + "_" + receiptDtlMd.RECEIPT_DTL_ID;
  135. dt.Rows.Add(dr);
  136. }
  137. }
  138. if (rowsSelectedNum > 0)
  139. {
  140. DataSet dts = new DataSet();
  141. dts.Tables.Add(dt);
  142. FastReport.Report report = new FastReport.Report();
  143. string filename = _reportFolder + "标签数据.frx";
  144. report.Load(filename);
  145. report.RegisterData(dts);
  146. report.Prepare();
  147. report.PrintSettings.ShowDialog = false;
  148. report.Print();
  149. report.Clear();
  150. KryptonMessageBox.Show("打印成功!");
  151. }
  152. else
  153. {
  154. KryptonMessageBox.Show("请勾选需要打印的收货单明细行数据!!");
  155. }
  156. }
  157. catch (Exception ex)
  158. {
  159. KryptonMessageBox.Show(ex.Message);
  160. }
  161. kbtn_PrintPartialLabel.Enabled = true;
  162. kbtn_PrintAllLabel.Enabled = true;
  163. }
  164. private void kbtn_PrintAllLabel_Click(object sender, EventArgs e)
  165. {
  166. kbtn_PrintPartialLabel.Enabled = false;
  167. kbtn_PrintAllLabel.Enabled = false;
  168. try
  169. {
  170. DataTable dt = new DataTable();
  171. DataColumn dc = new DataColumn("MaterialCode");
  172. dt.Columns.Add(dc);
  173. dc = new DataColumn("UnitCode");
  174. dt.Columns.Add(dc);
  175. dc = new DataColumn("MaterialName");
  176. dt.Columns.Add(dc);
  177. dc = new DataColumn("Specs");
  178. dt.Columns.Add(dc);
  179. dc = new DataColumn("BatchNo");
  180. dt.Columns.Add(dc);
  181. dc = new DataColumn("Qty");
  182. dt.Columns.Add(dc);
  183. dc = new DataColumn("UniqueLabel");
  184. dt.Columns.Add(dc);
  185. foreach (WmsInReceiptDtlResult item in ReceiptDataNotEdit.WmsInReceiptDtlList)
  186. {
  187. DataRow dr = dt.NewRow();
  188. dr["MaterialCode"] = item.MATERIEL_CODE;
  189. dr["UnitCode"] = item.UNIT_CODE;
  190. dr["MaterialName"] = item.MATERIEL_NAME;
  191. dr["Specs"] = item.MATERIEL_SPEC;
  192. dr["BatchNo"] = item.BATCH_NO;
  193. dr["Qty"] = item.RECEIPT_DTL_QTY;
  194. dr["UniqueLabel"] = item.MATERIEL_CODE + "_" + item.RECEIPT_DTL_ID;
  195. dt.Rows.Add(dr);
  196. }
  197. DataSet dts = new DataSet();
  198. dts.Tables.Add(dt);
  199. FastReport.Report report = new FastReport.Report();
  200. string filename = _reportFolder + "标签数据.frx";
  201. report.Load(filename);
  202. report.RegisterData(dts);
  203. report.Prepare();
  204. #if DEBUG
  205. report.Prepare(); //准备
  206. report.ShowPrepared(); //显示
  207. #else
  208. report.PrintSettings.ShowDialog = false;
  209. report.Print();
  210. report.Clear();
  211. #endif
  212. KryptonMessageBox.Show("打印成功!");
  213. }
  214. catch (Exception ex)
  215. {
  216. KryptonMessageBox.Show(ex.Message);
  217. }
  218. kbtn_PrintPartialLabel.Enabled = true;
  219. kbtn_PrintAllLabel.Enabled = true;
  220. }
  221. }
  222. }