FrmImportOrder.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Data.OleDb;
  7. using System.Drawing;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading;
  12. using System.Windows.Forms;
  13. using com.hnshituo.pur.vo;
  14. using Core.Mes.Client.Comm.Control;
  15. using Core.Mes.Client.Comm.Tool;
  16. using Infragistics.Win;
  17. using Infragistics.Win.UltraWinGrid;
  18. using NPOI.HSSF.UserModel;
  19. using NPOI.SS.UserModel;
  20. using NPOI.XSSF.UserModel;
  21. using Pur.Entity;
  22. using Pur.Entity.configureEntity;
  23. using Pur.Entity.pur_orderEntiy;
  24. using Pur.Entity.require_planEntiy;
  25. using Pur.Entity.pur_planEntity;
  26. using Pur.pur_plan;
  27. namespace Pur.order
  28. {
  29. public partial class FrmImportOrder : FrmPmsBase
  30. {
  31. public FrmImportOrder()
  32. {
  33. InitializeComponent();
  34. }
  35. HSSFWorkbook hssfworkbook; //Office 2003
  36. XSSFWorkbook xssfworkbook; //Office 2007 2010
  37. ISheet sheet = null;
  38. private void FrmImportOrder_Load(object sender, EventArgs e)
  39. {
  40. getInportData();
  41. ultraTabControl1.SelectedTab = ultraTabControl1.Tabs[0];
  42. //ultraGrid1.DisplayLayout.Bands[0].Override.AllowUpdate = DefaultableBoolean.False;
  43. //ultraGrid2.DisplayLayout.Bands[0].Override.AllowUpdate = DefaultableBoolean.False;
  44. GridHelper.SetExcludeColumnsActive(ultraGrid2.DisplayLayout.Bands[0],new string[]{"CHK"});
  45. ultraGrid3.DisplayLayout.Bands[0].Override.AllowUpdate = DefaultableBoolean.False;
  46. ultraGrid4.DisplayLayout.Bands[0].Override.AllowUpdate = DefaultableBoolean.False;
  47. ultraGrid5.DisplayLayout.Bands[0].Override.AllowUpdate = DefaultableBoolean.False;
  48. }
  49. private void FrmImportOrder_Shown(object sender, EventArgs e)
  50. {
  51. this.ToolBarItemEnable(this, "doImport", true);
  52. this.ToolBarItemEnable(this, "doSure", true);
  53. this.ToolBarItemEnable(this, "doClear", true);
  54. this.ToolBarItemEnable(this, "doDelete", false);
  55. }
  56. //查询导入的记录
  57. private void getInportData()
  58. {
  59. try
  60. {
  61. this.Cursor = Cursors.WaitCursor;
  62. dataSet1.Clear();
  63. dataSet2.Clear();
  64. dataSet3.Clear();
  65. OrderM Odm = new OrderM();
  66. Odm.Validflag = "1";
  67. Odm.Remark3 = "1";//查询旧合同
  68. Odm.ValidDataPurviewIds = this.ValidDataPurviewIds;
  69. Odm.BpmUserId = UserInfo.GetUserID();
  70. DataTable dt = this.execute<DataTable>("com.hnshituo.pur.order.service.OrderMService", "find_OrderM", new object[] { Odm, 0, 0 });
  71. GridHelper.CopyDataToDatatable(dt, dataTable1, true);
  72. GridHelper.RefreshAndAutoSize(ultraGrid2);
  73. }
  74. catch (Exception ex)
  75. {
  76. MessageUtil.ShowTips("查询导入历史数据数据失败:" + ex);
  77. }
  78. finally
  79. {
  80. this.Cursor = Cursors.Default;
  81. }
  82. }
  83. /// <summary>
  84. /// 使用系统软件打开模板
  85. /// </summary>
  86. /// <param name="sender"></param>
  87. /// <param name="e"></param>
  88. private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
  89. {
  90. string path = "";
  91. try
  92. {
  93. path = System.Windows.Forms.Application.StartupPath + "\\OrderTemplate\\OrderTemplate.xls";
  94. System.Diagnostics.Process.Start(path);
  95. }
  96. catch (Exception ex)
  97. {
  98. MessageUtil.ShowWarning("没有可用的模板!");
  99. }
  100. }
  101. #region toolbar工具栏
  102. public override void ToolBar_Click(object sender, string ToolbarKey)// toolbar菜单
  103. {
  104. switch (ToolbarKey)
  105. {
  106. case "doImport": // ButtonTool
  107. ImportExcel();
  108. break;
  109. case "doSure": // ButtonTool
  110. ConfirmData();
  111. break;
  112. case "doDelete": // ButtonTool
  113. doDelete();
  114. break;
  115. case "doClose": // ButtonTool
  116. this.Close();
  117. break;
  118. case "doClear": // ButtonTool
  119. doClear();
  120. break;
  121. }
  122. }
  123. //清空
  124. private void doClear()
  125. {
  126. if (MessageUtil.ShowYesNoAndQuestion("确定清空?") != DialogResult.Yes)
  127. { return; }
  128. for (int i = this.ultraGrid1.Rows.Count-1; i >=0 ; i--)
  129. {
  130. this.ultraGrid1.Rows[i].Delete();
  131. }
  132. }
  133. //删除
  134. private void doDelete()
  135. {
  136. ultraGrid2.UpdateData();
  137. ArrayList list = new ArrayList();
  138. foreach (UltraGridRow row in ultraGrid2.Rows)
  139. {
  140. if (Convert.ToBoolean(row.GetCellValue("CHK")) == true)
  141. {
  142. OrderM inp = new OrderM();
  143. String orderId = row.GetCellValue("OrderId").ToString().Trim();
  144. if (String.IsNullOrEmpty(orderId))
  145. {
  146. MessageUtil.ShowTips("未获取到合同号");
  147. return;
  148. }
  149. inp.OrderId = orderId;
  150. inp.DeleteName = UserInfo.GetUserName();
  151. inp.DeleteUserid = UserInfo.GetUserID();
  152. inp.DeleteTime = DateTime.Now;
  153. list.Add(inp);
  154. }
  155. }
  156. if (list.Count <= 0)
  157. {
  158. MessageUtil.ShowTips("请选择需撤销导入的合同");
  159. }
  160. if (MessageUtil.ShowYesNoAndQuestion("确认撤销勾选的" + list.Count + "条数据?") != DialogResult.Yes) return;
  161. CoreResult rt = this.execute<CoreResult>("com.hnshituo.pur.order.service.OrderMService", "doDeleteOldOrder", new object[] { list });
  162. if (rt.Resultcode == 0)
  163. {
  164. MessageUtil.ShowTips("操作成功");
  165. ultraGrid1.Refresh();
  166. getInportData();
  167. }
  168. else
  169. {
  170. MessageUtil.ShowTips("操作失败:" + rt.Resultmsg);
  171. }
  172. }
  173. private void ImportExcel()
  174. {
  175. OpenFileDialog ofd = new OpenFileDialog();
  176. ofd.Filter = "所有文件|*.xls;*.xlsx|xls文件(*.xls)|*.xls|xlsx文件(*.xlsx)|*.xlsx";
  177. ofd.Multiselect = false;
  178. if (ofd.ShowDialog() == DialogResult.OK)
  179. {
  180. this.Cursor = Cursors.WaitCursor;
  181. string filePath = ofd.FileName;
  182. InitializeWorkbook(filePath);
  183. //ConvertToDataTable();
  184. Thread t = new Thread(new ThreadStart(ConvertToDataTable));
  185. t.Start();
  186. }
  187. }
  188. /// <summary>
  189. /// 确定提交
  190. /// </summary>
  191. private void ConfirmData()
  192. {
  193. try
  194. {
  195. string model = "";
  196. this.Cursor = Cursors.WaitCursor;
  197. List<OrderC> listc = new List<OrderC>();
  198. ultraGrid1.UpdateData();
  199. foreach (UltraGridRow row in ultraGrid1.Rows)
  200. {
  201. if (row.Cells["选择"].Value.ToString().ToUpper() == "TRUE")
  202. {
  203. string orderNo = row.Cells[1].Value.ToString().Trim();
  204. string orderType = row.Cells[2].Value.ToString().Trim();
  205. string suppCode = row.Cells[3].Value.ToString().Trim();
  206. string orderLineSqe = row.Cells[4].Value.ToString().Trim();
  207. string itemCode = row.Cells[5].Value.ToString().Trim();
  208. string qty = row.Cells[6].Value.ToString().Trim();
  209. string qtyInStock = row.Cells[7].Value.ToString().Trim();
  210. string itemUomId = row.Cells[8].Value.ToString().Trim();
  211. string priceWithoutTax = row.Cells[9].Value.ToString().Trim();
  212. String receiveType = row.Cells[10].Value.ToString().Trim();
  213. string BuyerName = row.Cells[11].Value.ToString().Trim();
  214. string createName = row.Cells[12].Value.ToString().Trim();
  215. string createTime = row.Cells[13].Value.ToString().Trim();
  216. string modelId = row.Cells[14].Value.ToString().Trim();
  217. string ordertitleId = row.Cells[15].Value.ToString().Trim();//合同抬头编号
  218. if (String.IsNullOrEmpty(orderNo))
  219. {
  220. MessageUtil.ShowWarning("合同号不能为空!");
  221. return;
  222. }
  223. if (String.IsNullOrEmpty(orderType))
  224. {
  225. MessageUtil.ShowWarning("合同类型不能为空!");
  226. return;
  227. }
  228. if (String.IsNullOrEmpty(suppCode))
  229. {
  230. MessageUtil.ShowWarning("供应商编号不能为空!");
  231. return;
  232. }
  233. if (String.IsNullOrEmpty(orderLineSqe))
  234. {
  235. MessageUtil.ShowWarning("合同行号不能为空!");
  236. return;
  237. }
  238. if (String.IsNullOrEmpty(itemCode))
  239. {
  240. MessageUtil.ShowWarning("物料编号不能为空!");
  241. return;
  242. }
  243. //if (String.IsNullOrEmpty(itemName))
  244. //{
  245. // MessageUtil.ShowWarning("物料名称不能为空!");
  246. // return;
  247. //}
  248. if (String.IsNullOrEmpty(qty))
  249. {
  250. MessageUtil.ShowWarning("采购总量不能为空!");
  251. return;
  252. }
  253. if (!StringUtil.IsNumber(qtyInStock))
  254. {
  255. MessageUtil.ShowWarning("采购入库量不是数字!");
  256. return;
  257. }
  258. if (String.IsNullOrEmpty(itemUomId))
  259. {
  260. MessageUtil.ShowWarning("计量单位(采购单位)不能为空!");
  261. return;
  262. }
  263. if (String.IsNullOrEmpty(priceWithoutTax))
  264. {
  265. MessageUtil.ShowWarning("含税单价不能为空!");
  266. return;
  267. }
  268. if (String.IsNullOrEmpty(BuyerName))
  269. {
  270. MessageUtil.ShowWarning("业务员不能为空!");
  271. return;
  272. }
  273. if (String.IsNullOrEmpty(createName))
  274. {
  275. MessageUtil.ShowWarning("创建人能为空!");
  276. return;
  277. }
  278. if (String.IsNullOrEmpty(createTime))
  279. {
  280. MessageUtil.ShowWarning("创建时间不能为空!");
  281. return;
  282. }
  283. if (String.IsNullOrEmpty(receiveType))
  284. {
  285. MessageUtil.ShowWarning("接收类型不能为空!");
  286. return;
  287. }
  288. OrderC orderC = new OrderC();
  289. orderC.PackageType = orderType;//合同类别
  290. orderC.OrderId = orderNo;
  291. orderC.SuppCode = suppCode;
  292. orderC.OrderLineSqe = orderLineSqe;
  293. orderC.ItemCode = itemCode;
  294. orderC.Qty = Convert.ToDouble(qty);
  295. orderC.ReceivedQty = Convert.ToDouble(qtyInStock);
  296. orderC.ItemUomId = itemUomId;
  297. orderC.PriceWithoutTax = Convert.ToDouble(priceWithoutTax);
  298. orderC.CreateTime = Convert.ToDateTime(createTime);
  299. orderC.CreateUserid = createName;
  300. orderC.CreateName = createName;
  301. orderC.BuyerName = BuyerName;
  302. orderC.ReceiveType = receiveType;
  303. orderC.ModelId = modelId;
  304. orderC.OrdertitleId = ordertitleId;
  305. listc.Add(orderC);
  306. }
  307. }
  308. if (listc.Count <= 0)
  309. {
  310. MessageUtil.ShowWarning("请勾选您要确认导入的合同数据!");
  311. return;
  312. }
  313. if (MessageUtil.ShowYesNoAndQuestion("确认导入勾选的" + listc.Count + "条数据?") != DialogResult.Yes) return;
  314. CoreResult rt = this.execute<CoreResult>("com.hnshituo.pur.order.service.OrderCService", "insertOldOrderNew", new object[] { listc });
  315. if (rt.Resultcode == 0)
  316. {
  317. MessageUtil.ShowTips("操作成功");
  318. ultraGrid1.Refresh();
  319. getInportData();
  320. for (int i = this.ultraGrid1.Rows.Count - 1; i >= 0; i--)
  321. {
  322. if (ultraGrid1.Rows[i].Cells["选择"].Value.ToString().ToUpper() == "TRUE")
  323. {
  324. this.ultraGrid1.Rows[i].Delete();
  325. }
  326. }
  327. }
  328. else
  329. {
  330. MessageUtil.ShowTips("操作失败:" + rt.Resultmsg);
  331. }
  332. }
  333. finally
  334. {
  335. this.Cursor = Cursors.Default;
  336. }
  337. }
  338. #endregion
  339. /// 获取查询条件
  340. /// </summary>
  341. /// <returns></returns>
  342. private PurTaskMEntity getEnSelContion()
  343. {
  344. PurTaskMEntity entity = new PurTaskMEntity();
  345. entity.ValidDataPurviewIds = this.ValidDataPurviewIds;
  346. //判断当前拥有此页面功能的角色是否启用数据权限,//0未启用
  347. string QstrDataFlag = this.execute<string>("com.hnshituo.pur.utils.service.UtilsService", "getRoleDataFlag", new object[] { UserInfo.GetUserID(), "Pur.pur_plan.frmTaskMana_MC" });
  348. entity.Validflag = "1";
  349. return entity;
  350. }
  351. /// <summary>
  352. /// 查询任务主表
  353. /// </summary>
  354. public void GetTaskM(PurTaskMEntity M_PurTaskM)
  355. {
  356. dataTable2.Rows.Clear();
  357. dataTable3.Rows.Clear();
  358. dataTable4.Rows.Clear();
  359. DataTable dt = this.execute<DataTable>("com.hnshituo.pur.purplan.service.TaskMService", "getTaskM", new object[] { M_PurTaskM });
  360. //按创建时间降序
  361. if (dt.Rows.Count > 0)
  362. {
  363. dt.DefaultView.Sort = "CREATETIME DESC";
  364. dt = dt.DefaultView.ToTable();
  365. }
  366. GridHelper.CopyDataToDatatable(ref dt, ref dataTable1, true);//绑定物料分类表
  367. ultraGrid1.DisplayLayout.Bands[0].PerformAutoResizeColumns(true, PerformAutoSizeType.AllRowsInBand);
  368. }
  369. /// <summary>
  370. /// 打开选择的Excel
  371. /// </summary>
  372. /// <param name="path"></param>
  373. private void InitializeWorkbook(string path)
  374. {
  375. try
  376. {
  377. using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
  378. {
  379. hssfworkbook = new HSSFWorkbook(file);
  380. sheet = hssfworkbook.GetSheetAt(0);
  381. }
  382. }
  383. catch
  384. {
  385. using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
  386. {
  387. xssfworkbook = new XSSFWorkbook(file);
  388. sheet = xssfworkbook.GetSheetAt(0);
  389. }
  390. }
  391. }
  392. /// <summary>
  393. /// 将Excel内容转化为DataTable
  394. /// </summary>
  395. private void ConvertToDataTable()
  396. {
  397. //ISheet sheet = hssfworkbook.GetSheetAt(0);
  398. System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
  399. IRow iRow = sheet.GetRow(0);
  400. short count = iRow.LastCellNum;
  401. if (count < 15)
  402. {
  403. MessageUtil.ShowWarning("导入的Excel列数与模板列数不符!");
  404. return;
  405. }
  406. DataTable dt = new DataTable();
  407. for (int j = 0; j < 15 + 1; j++)
  408. {
  409. if (j == 0) //加一列选择框
  410. {
  411. dt.Columns.Add("选择");
  412. }
  413. else
  414. {
  415. dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());
  416. }
  417. }
  418. dt.Columns[0].DefaultValue = "False";
  419. dt.Columns[0].DataType = typeof(Boolean);
  420. while (rows.MoveNext())
  421. {
  422. IRow row = null;
  423. try
  424. {
  425. row = (HSSFRow)rows.Current;
  426. }
  427. catch
  428. {
  429. row = (XSSFRow)rows.Current;
  430. }
  431. DataRow dr = dt.NewRow();
  432. int k = 0;
  433. for (int i = 1; i < row.LastCellNum + 1; i++)
  434. {
  435. ICell cell = row.GetCell(i - 1);
  436. if (cell == null)
  437. {
  438. dr[i] = null;
  439. }
  440. else
  441. {
  442. dr[i] = cell.ToString();
  443. if (!String.IsNullOrEmpty(cell.ToString()))
  444. {
  445. k = k + 1;
  446. }
  447. }
  448. }
  449. if (k > 0)
  450. {
  451. dt.Rows.Add(dr);
  452. }
  453. }
  454. SetGrid(dt);
  455. }
  456. delegate void SetGridCallBack(DataTable dt);
  457. private void SetGrid(DataTable dt)
  458. {
  459. if (ultraGrid1.InvokeRequired)
  460. {
  461. SetGridCallBack sg = new SetGridCallBack(SetGrid);
  462. this.Invoke(sg, new object[] { dt });
  463. }
  464. else
  465. {
  466. ultraGrid1.DataSource = dt;
  467. ultraGrid1.DisplayLayout.Bands[0].Columns["选择"].Header.CheckBoxVisibility = Infragistics.Win.UltraWinGrid.HeaderCheckBoxVisibility.WhenUsingCheckEditor;
  468. ultraGrid1.DisplayLayout.Bands[0].Columns[1].Width = 135;
  469. GridHelper.RefreshAndAutoSize(ultraGrid1);
  470. this.Cursor = Cursors.Default;
  471. }
  472. }
  473. private void ultraTabControl1_SelectedTabChanged(object sender, Infragistics.Win.UltraWinTabControl.SelectedTabChangedEventArgs e)
  474. {
  475. if (ultraTabControl1.SelectedTab == ultraTabControl1.Tabs[0])
  476. {
  477. this.ToolBarItemEnable(this, "doImport", true);
  478. this.ToolBarItemEnable(this, "doSure", true);
  479. this.ToolBarItemEnable(this, "doDelete", false);
  480. this.ToolBarItemEnable(this, "doClear", true);
  481. }
  482. else
  483. {
  484. this.ToolBarItemEnable(this, "doImport", false);
  485. this.ToolBarItemEnable(this, "doSure", false);
  486. this.ToolBarItemEnable(this, "doDelete", true);
  487. this.ToolBarItemEnable(this, "doClear", false);
  488. }
  489. }
  490. private void ultraGrid2_AfterRowActivate(object sender, EventArgs e)
  491. {
  492. dataTable2.Clear();
  493. dataTable3.Clear();
  494. dataTable4.Clear();
  495. UltraGridRow uge = ultraGrid2.ActiveRow;
  496. if (uge == null)
  497. { return; }
  498. String orderId = uge.GetCellValue("OrderId").ToString().Trim();
  499. String purLineId = uge.GetCellValue("remark3").ToString().Trim();
  500. if (!String.IsNullOrEmpty(orderId))
  501. {
  502. OrderC odC = new OrderC();
  503. odC.OrderId = orderId;
  504. odC.Validflag = "1";
  505. DataTable dt = this.execute<DataTable>("com.hnshituo.pur.order.service.OrderCService", "doQueryOrderC", new object[] { odC, 0, 0 });
  506. GridHelper.CopyDataToDatatable(dt, dataTable2, true);
  507. GridHelper.RefreshAndAutoSize(ultraGrid3);
  508. }
  509. if (!String.IsNullOrEmpty(purLineId))
  510. {
  511. EntityPurPlanD PurPlanDEntity = new EntityPurPlanD();
  512. PurPlanDEntity.MrId = purLineId;
  513. PurPlanDEntity.Validflag = "1";
  514. DataTable dt1 = this.execute<DataTable>("com.hnshituo.pur.purplan.service.PurPlanDService", "getPlanD", new object[] { PurPlanDEntity });
  515. GridHelper.CopyDataToDatatable(dt1, dataTable4, true);
  516. GridHelper.RefreshAndAutoSize(ultraGrid4);
  517. }
  518. }
  519. }
  520. }