StorageStandbyWGJ.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using CoreFS.CA06;
  10. using System.Collections;
  11. using System.Reflection;
  12. using Excel1 = Microsoft.Office.Interop.Excel;
  13. using Infragistics.Win.UltraWinGrid;
  14. using System.Runtime.InteropServices;
  15. namespace Core.LZMes.Client.UIK
  16. {
  17. public partial class StorageStandbyWGJ : FrmBase
  18. {
  19. //记录前一次入库垛位
  20. internal string before_yard = "1-01A-01";
  21. public StorageStandbyWGJ()
  22. {
  23. InitializeComponent();
  24. }
  25. public override void ToolBar_Click(object sender, string ToolbarKey)
  26. {
  27. switch (ToolbarKey)
  28. {
  29. case "Query":
  30. this.DoQuery();
  31. break;
  32. case "Export":
  33. this.DoExport();
  34. break;
  35. }
  36. }
  37. private void DoQuery()
  38. {
  39. try
  40. {
  41. string starttiem = this.ultraDateTimeEditor5.Value != null ? this.ultraDateTimeEditor5.DateTime.ToString("yyyyMMdd") : "";//出库时间
  42. string endtime = this.ultraDateTimeEditor4.Value != null ? this.ultraDateTimeEditor4.DateTime.ToString("yyyyMMdd") : "";//出库时间
  43. bool flag = false;
  44. this.dataSet1.Tables[0].Clear();
  45. CoreClientParam ccp = new CoreClientParam();
  46. ccp.ServerName = "UIB.COM.ComDBQuery";
  47. ccp.MethodName = "doSimpleQuery";
  48. ArrayList paramArray = new ArrayList();
  49. paramArray.Add("UIK050010_06.SELECT");
  50. paramArray.Add(starttiem);
  51. paramArray.Add(endtime);
  52. ccp.ServerParams = new object[] { paramArray };
  53. ccp.SourceDataTable = this.dataSet1.Tables[0];
  54. this.ExecuteQueryToDataTable(ccp, CoreInvokeType.Internal);
  55. System.Diagnostics.Debug.WriteLine(this.dataSet1.Tables[0].ToString());
  56. DataRowCollection drs1 = dataSet1.Tables[0].Rows;
  57. if (drs1.Count <= 0)
  58. {
  59. MessageBox.Show("该时间内没有入库待机钢卷");
  60. }
  61. }
  62. catch (Exception EX)
  63. {
  64. MessageBox.Show(EX.ToString());
  65. }
  66. }
  67. /// <summary>
  68. /// 导出
  69. /// </summary>
  70. private void DoExport()
  71. {
  72. try
  73. {
  74. //if (this.saveFileDialog1.ShowDialog(this) == DialogResult.OK)
  75. //{
  76. // string fileName = this.saveFileDialog1.FileName;
  77. // ultraGridExcelExporter1.Export(ultraGrid1, fileName);
  78. // System.Diagnostics.Process.Start(fileName);
  79. //}
  80. this.DataTabletoExcelULTRA(ultraGrid1);
  81. }
  82. catch (Exception ex)
  83. {
  84. MessageBox.Show(ex.ToString());
  85. }
  86. }
  87. private void StorageStandbyWGJ_Load(object sender, EventArgs e)
  88. {
  89. this.ultraCheckEditor1.Checked = true;
  90. this.ultraCheckEditor1.Checked = false ;
  91. }
  92. private void ultraCheckEditor1_CheckedChanged(object sender, EventArgs e)
  93. {
  94. /*if (this.ultraCheckEditor1.Checked == true)
  95. {
  96. this.ultraCalendarSTRATTIME.Enabled = false;
  97. this.ultraCalendarENDTIME.Enabled = false;
  98. }*/
  99. /*if (this.ultraCheckEditor1.Checked == false)
  100. {
  101. this.ultraCalendarENDTIME.Enabled = true;
  102. this.ultraCalendarSTRATTIME.Enabled = true;
  103. }*/
  104. }
  105. private void ultraGrid1_DoubleClickRow(object sender, Infragistics.Win.UltraWinGrid.DoubleClickRowEventArgs e)
  106. {
  107. Infragistics.Win.UltraWinGrid.UltraGridRow uRow = ultraGrid1.ActiveRow;
  108. String coilNo = uRow.Cells["OLD_SAMPL_NO"].Value.ToString();
  109. String curProgCd = "PRC";
  110. this.textBox1.Text = coilNo;
  111. string entryShift = this.UserInfo.GetUserOrder();//入库班次
  112. string entryGroup = this.UserInfo.GetUserGroup();//入库班组
  113. string entryDtime = this.ultraDateTimeEditor1.DateTime.ToString("yyyyMMddHHmmss");//入库时间
  114. string reg_id = this.UserInfo.GetUserID();//操作人
  115. StorageStandby_Sub dlg = new StorageStandby_Sub(this, 1);
  116. if (DialogResult.OK == dlg.ShowDialog(this))
  117. {
  118. //string yardAddr = this.textBox3.Text.ToString().Trim();//垛位
  119. //if (yardAddr == "" && yardAddr.Length != 13)
  120. //{
  121. // MessageBox.Show("垛位输入有误!");
  122. // return;
  123. //}
  124. //string[] tmpArray = yardAddr.Split('-');
  125. string yardAddr = dlg.YARD_ADDR.ToUpper();//垛位
  126. string[] tmpArray = yardAddr.Split('-');
  127. try
  128. {
  129. if (tmpArray[1].Length < 3)
  130. {
  131. tmpArray[1] = "0" + tmpArray[1];
  132. }
  133. if (tmpArray[2].Length < 2)
  134. {
  135. tmpArray[2] = "0" + tmpArray[2];
  136. }
  137. if (Convert.ToInt32(tmpArray[0]) != 1)
  138. {
  139. MessageBox.Show("垛位输入有误,请重新输入!");
  140. return;
  141. }
  142. //if (tmpArray[1] > "17A")
  143. //{
  144. // MessageBox.Show("垛位输入有误,请重新输入!");
  145. // return;
  146. //}
  147. if (Convert.ToInt32(tmpArray[2]) > 69)
  148. {
  149. MessageBox.Show("垛位行数不能超过69,请重新输入!");
  150. return;
  151. }
  152. if (Convert.ToInt32(tmpArray[1].Substring(0, 2)) > 17)
  153. {
  154. MessageBox.Show("垛位列数不能超过17,请重新输入!");
  155. return;
  156. }
  157. if ((tmpArray[1].Substring(2, 1)) != "A")
  158. {
  159. MessageBox.Show("垛位格式不对,请重新输入!");
  160. return;
  161. }
  162. yardAddr = tmpArray[0] + "-" + tmpArray[1] + "-" + tmpArray[2];
  163. }
  164. catch (Exception ex)
  165. {
  166. MessageBox.Show("垛位信息错误!");
  167. return;
  168. }
  169. DataTable dt = new DataTable();
  170. CoreClientParam ccpx = new CoreClientParam();
  171. ccpx.ServerName = "UIM.UIM010040";
  172. ccpx.MethodName = "SelectCoilYard";
  173. ccpx.ServerParams = new object[] { yardAddr };
  174. ccpx.SourceDataTable = dt;
  175. this.ExecuteQueryToDataTable(ccpx, CoreInvokeType.Internal);
  176. if (dt.Rows.Count <= 0)
  177. {
  178. CoreClientParam ccp = new CoreClientParam();
  179. ccp.ServerName = "UIM.UIM010040";
  180. ccp.MethodName = "saveCoilYard";
  181. ccp.ServerParams = new object[] { coilNo, yardAddr, entryShift, entryGroup, entryDtime, reg_id, curProgCd };
  182. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  183. if (ccp.ReturnCode != 0)
  184. {
  185. return;
  186. }
  187. else
  188. {
  189. MessageBox.Show("入库成功!");
  190. }
  191. this.DoQuery();
  192. }
  193. else
  194. {
  195. MessageBox.Show("该位置上已经有了钢卷,请重新输入!");
  196. return;
  197. }
  198. }
  199. else
  200. {
  201. return;
  202. }
  203. }
  204. /// <summary>
  205. /// 查询区域中一行的垛位信息
  206. /// </summary>
  207. /// <param name="areayType"></param>
  208. /// <param name="areayNo"></param>
  209. /// <param name="yardCol"></param>
  210. internal void queryYardRows(int areaType, int areaNo, string yardCol)
  211. {
  212. this.dataSet3.Tables[0].Clear();
  213. CoreClientParam ccp = new CoreClientParam();
  214. ccp.ServerName = "UIM.UIM010070";
  215. ccp.MethodName = "queryYardRows";
  216. ccp.ServerParams = new object[] { areaType, areaNo, yardCol };
  217. ccp.SourceDataTable = this.dataSet3.Tables[0];
  218. this.ExecuteQueryToDataTable(ccp, CoreInvokeType.Internal);
  219. }
  220. /// <summary>
  221. /// 查询区域中一行的垛位中钢卷信息
  222. /// </summary>
  223. /// <param name="areayType"></param>
  224. /// <param name="areayNo"></param>
  225. /// <param name="yardCol"></param>
  226. internal void queryYardRowCoils(int areaType, int areaNo, string yardCol)
  227. {
  228. this.dataSet2.Tables[0].Clear();
  229. CoreClientParam ccp = new CoreClientParam();
  230. ccp.ServerName = "UIM.UIM010070";
  231. ccp.MethodName = "queryYardRowCoils";
  232. ccp.ServerParams = new object[] { areaType, areaNo, yardCol };
  233. ccp.SourceDataTable = this.dataSet2.Tables[0];
  234. this.ExecuteQueryToDataTable(ccp, CoreInvokeType.Internal);
  235. }
  236. internal int queryMinYardRow(int areaType, int areaNo, string yardCol)
  237. {
  238. int minRow = 1;
  239. CoreClientParam ccp = new CoreClientParam();
  240. ccp.ServerName = "UIM.UIM010070";
  241. ccp.MethodName = "queryMinYardRow";
  242. ccp.ServerParams = new object[] { areaType, areaNo, yardCol };
  243. ccp = this.ExecuteQuery(ccp, CoreInvokeType.Internal);
  244. if (ccp.ReturnObject != null)
  245. {
  246. minRow = int.Parse(ccp.ReturnObject.ToString());
  247. }
  248. return minRow;
  249. }
  250. /// <summary>
  251. /// 查询库存区域
  252. /// </summary>
  253. /// <param name="areaType"></param>
  254. /// <returns></returns>
  255. internal ArrayList queryYardAreas(int areaType)
  256. {
  257. CoreClientParam ccp = new CoreClientParam();
  258. ccp.ServerName = "UIM.UIM010040";
  259. ccp.MethodName = "queryYardAreas";
  260. ccp.ServerParams = new object[] { areaType };
  261. ccp = this.ExecuteQuery(ccp, CoreInvokeType.Internal);
  262. ArrayList retList = (ArrayList)ccp.ReturnObject;
  263. return retList;
  264. }
  265. /// <summary>
  266. /// 查询库存区分
  267. /// </summary>
  268. /// <param name="areaNo"></param>
  269. /// <returns></returns>
  270. internal ArrayList queryYardColsByArea(int areaNo)
  271. {
  272. CoreClientParam ccp = new CoreClientParam();
  273. ccp.ServerName = "UIM.UIM010040";
  274. ccp.MethodName = "queryYardColsByArea";
  275. ccp.ServerParams = new object[] { areaNo };
  276. ccp = this.ExecuteQuery(ccp, CoreInvokeType.Internal);
  277. ArrayList retList = (ArrayList)ccp.ReturnObject;
  278. return retList;
  279. }
  280. public void DataTabletoExcelULTRA(UltraGrid tmpDataTable)
  281. {
  282. string fileName = saveFileDialog1.FileName;
  283. string FileName;
  284. saveFileDialog1.FileName = "入库待机钢卷";
  285. saveFileDialog1.DefaultExt = ".xls";
  286. saveFileDialog1.Filter = "excel文件(*.xls)|*.xls|所有文件(*.*)|*.*";
  287. if (this.saveFileDialog1.ShowDialog(this) == DialogResult.OK)
  288. {
  289. fileName = saveFileDialog1.FileName;
  290. FileName = fileName;
  291. }
  292. else
  293. {
  294. return;
  295. }
  296. string FilePath = saveFileDialog1.FileName;
  297. int rowNum = tmpDataTable.Rows.Count;
  298. //页面显示的列数
  299. int columnNum = tmpDataTable.DisplayLayout.Bands[0].Columns.BoundColumnsCount;
  300. int rowIndex = 1;
  301. int columnIndex = 0;
  302. Excel1.Application xlApp = new Excel1.ApplicationClass();
  303. //Microsoft.Office.Interop.Excel.Application xlApp;
  304. //xlApp = new Microsoft.Office.Interop.Excel.Application();
  305. xlApp.DefaultFilePath = "";
  306. xlApp.DisplayAlerts = false;
  307. xlApp.SheetsInNewWorkbook = 1;
  308. Excel1._Workbook xlBook = (Excel1._Workbook)(xlApp.Workbooks.Add(Missing.Value));//添加新工作簿
  309. Excel1.Worksheet ws = (Excel1.Worksheet)xlBook.Worksheets[1];
  310. //int colnum = tmpDataTable.DisplayLayout.Bands[0].Columns.Count;
  311. Excel1.Range r = ws.get_Range("A1", NumToExeclRowStr(columnNum) + "1");
  312. // Excel1.Range r = ws.get_Range("A1", "AA1");
  313. object[] objHeader = new object[columnNum];
  314. //将DataTable的列名导入Excel表第一行
  315. foreach (UltraGridColumn dc in tmpDataTable.DisplayLayout.Bands[0].Columns)
  316. {
  317. objHeader[columnIndex] = dc.Header.Caption;
  318. columnIndex++;
  319. if (columnIndex == columnNum) break;
  320. }
  321. r.Value2 = objHeader;
  322. //设置第一行表头格式
  323. //r = xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, columnNum]);
  324. //设置 域 Range 的颜色
  325. r.Interior.ColorIndex = 17;
  326. r.Font.Size = 9;
  327. // r.get_Characters(0, s1.Length).Font.Size = 20;
  328. r.RowHeight = 30;
  329. r.HorizontalAlignment = Excel1.XlHAlign.xlHAlignCenter;
  330. //r.Font.Name = "隶书";
  331. //r.Font.Color = clBlue;
  332. //r.Font.Bold = true;
  333. r.Borders.LineStyle = Excel1.XlLineStyle.xlContinuous;
  334. //r.Font.UnderLine = True;
  335. //将DataTable中的数据导入Excel中
  336. for (int i = 0; i < rowNum; i++)
  337. {
  338. rowIndex++;
  339. columnIndex = 0;
  340. for (int j = 0; j < columnNum; j++)
  341. {
  342. //若为订单号 加个单引号转换数据为文本格式
  343. if (columnIndex == 3 || columnIndex == 4)
  344. {
  345. objHeader[columnIndex] = "'" + tmpDataTable.Rows[i].Cells[j].Text.ToString();
  346. }
  347. else
  348. {
  349. objHeader[columnIndex] = tmpDataTable.Rows[i].Cells[j].Text.ToString();
  350. }
  351. columnIndex++;
  352. }
  353. r = ws.get_Range("A" + (i + 2), NumToExeclRowStr(columnNum) + (i + 2));
  354. r.Value2 = objHeader;
  355. r.Borders.LineStyle = Excel1.XlLineStyle.xlContinuous;
  356. r.Font.Size = 9;
  357. }
  358. //将合同号的数据转换为excel中的数字格式,否则为科学计数法格式
  359. //Excel1.Range RMXNEW;
  360. //string Inf0 = "";
  361. //Inf0 = "Z1:" + "Z2";
  362. //RMXNEW = ws.get_Range(Inf0, Type.Missing);
  363. //RMXNEW.EntireColumn.HorizontalAlignment = Excel1.XlHAlign.xlHAlignCenter;
  364. ////格式化表格数据0为纯数字,@为文本 "yyyy-mm-dd" General
  365. //RMXNEW.EntireColumn.NumberFormat = "@";
  366. //Excel1.Range RMXNEW1;
  367. //string Inf1 = "";
  368. //Inf1 = "Y1:" + "Y2";
  369. //RMXNEW1 = ws.get_Range(Inf1, Type.Missing);
  370. //RMXNEW1.EntireColumn.HorizontalAlignment = Excel1.XlHAlign.xlHAlignCenter;
  371. //RMXNEW1.EntireColumn.NumberFormat = "yyyy-mm-dd";
  372. ////导出到EXCEL中 只需要某些列,下面删除多余的列(已经在datatable中按字段排好序)
  373. //Excel1.Range RMX1;
  374. //string Inf1 = "";
  375. //Inf1 = "A1:" + "W1";
  376. //RMX1 = ws.get_Range(Inf1, Type.Missing);
  377. //RMX1.EntireColumn.Delete(0);
  378. r.EntireColumn.AutoFit(); //自适应宽度
  379. //Excel1.Borders pborders = r.Borders;
  380. //设置边框
  381. //r.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlMedium, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
  382. //r.Borders.get_Item(XlBordersIndex.xlEdgeBottom).Weight = XlBorderWeight.xlMedium;
  383. //r.WrapText = true;
  384. xlBook.SaveCopyAs(FilePath);
  385. this.KillSpecialExcel(xlApp);
  386. MessageBox.Show("数据已经成功导出到:" + saveFileDialog1.FileName.ToString(),
  387. "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
  388. System.Diagnostics.Process.Start(fileName);
  389. }
  390. private string NumTochr(int Num)
  391. {
  392. int n = 64 + Num;
  393. return "" + (Char)n;
  394. }
  395. private string NumToExeclRowStr(int Num)
  396. {
  397. int X, Y;
  398. if (Num < 27)
  399. {
  400. return NumTochr(Num);
  401. }
  402. X = Num / 26;
  403. Y = Num - X * 26;
  404. return NumTochr(X) + NumTochr(Y);
  405. }
  406. #region 结束EXCEL.EXE进程的方法
  407. /// <summary>
  408. /// 结束EXCEL.EXE进程的方法
  409. /// </summary>
  410. /// <param name="m_objExcel">EXCEL对象</param>
  411. [DllImport("user32.dll", SetLastError = true)]
  412. static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
  413. public void KillSpecialExcel(Microsoft.Office.Interop.Excel.Application m_objExcel)
  414. {
  415. try
  416. {
  417. if (m_objExcel != null)
  418. {
  419. int lpdwProcessId;
  420. GetWindowThreadProcessId(new IntPtr(m_objExcel.Hwnd), out lpdwProcessId);
  421. System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
  422. }
  423. }
  424. catch (Exception ex)
  425. {
  426. MessageBox.Show(ex.Message);
  427. }
  428. }
  429. #endregion
  430. }
  431. }