FrmImportSetMatJg.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  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 System.Collections;
  10. using CoreFS.CA06;
  11. using Core.Mes.Client.Comm.Tool;
  12. using Core.Mes.Client.Comm.Server;
  13. using com.steering.pss.plnsaleord.order.model;
  14. using System.Globalization;
  15. using Core.Mes.Client.Comm;
  16. namespace Core.StlMes.Client.PlnSaleOrd.PopupWindow
  17. {
  18. public partial class FrmImportSetMatJg : FrmBase
  19. {
  20. /// <summary>
  21. /// 模板路径
  22. /// </summary>
  23. string modelPatch = "";
  24. /// <summary>
  25. /// 模板路径
  26. /// </summary>
  27. public string ModelPatch
  28. {
  29. get { return modelPatch; }
  30. set { modelPatch = value; }
  31. }
  32. public FrmImportSetMatJg()
  33. {
  34. InitializeComponent();
  35. }
  36. public FrmImportSetMatJg(OpeBase openbase)
  37. {
  38. this.ob = openbase;
  39. InitializeComponent();
  40. }
  41. private void FrmImportSetOrder_Load(object sender, EventArgs e)
  42. {
  43. Init();
  44. }
  45. /// <summary>
  46. /// 初始化
  47. /// </summary>
  48. private void Init()
  49. {
  50. ultraNumRowStart.Value = 2;
  51. ultraNumRowEnd.Value = 2;
  52. if (!System.IO.File.Exists(ModelPatch))//检察文件是否存在
  53. {
  54. return;
  55. }
  56. try
  57. {
  58. System.IO.File.Move(ModelPatch, ModelPatch);
  59. }
  60. catch
  61. {
  62. MessageUtil.ShowTips("文件已经被打开,请先关闭!");
  63. return;
  64. }
  65. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Open(ModelPatch, true);
  66. this.ultraNumRowEnd.Value = getExcelRowsCount();
  67. }
  68. /// <summary>
  69. /// 获取excl的行数
  70. /// </summary>
  71. private int getExcelRowsCount()
  72. {
  73. //获取行数(上限5000)
  74. int colOrderNo = 0;
  75. int j = 4999;
  76. string[,] arr = null;
  77. string[,] head = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value("A" + 1, "BZ" + 1));
  78. if (head == null)
  79. {
  80. return 1;
  81. }
  82. for (int i = 0; i < head.GetLength(1); i++)
  83. {
  84. if (head[0, i].Trim().Equals("合同号"))
  85. {
  86. colOrderNo = i;
  87. break;
  88. }
  89. }
  90. arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value(
  91. ExcelHelper.SeqToXlsCol[colOrderNo + 1] + 2,
  92. ExcelHelper.SeqToXlsCol[colOrderNo + 1] + 5001));
  93. if (arr == null)
  94. {
  95. return 1;
  96. }
  97. for (j = 4999; j >= 0; j--)
  98. {
  99. if (!arr[j, 0].Equals(""))
  100. {
  101. break;
  102. }
  103. }
  104. return j + 2;
  105. }
  106. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  107. {
  108. switch (e.Tool.Key)
  109. {
  110. case "Save":
  111. doSave();
  112. break;
  113. case "Open":
  114. doOpen();
  115. break;
  116. case "Close":
  117. doClose();
  118. break;
  119. }
  120. }
  121. /// <summary>
  122. /// 保存
  123. /// </summary>
  124. private void doSave()
  125. {
  126. try
  127. {
  128. ArrayList messageErr = new ArrayList();
  129. int startRow = (int)ultraNumRowStart.Value;
  130. int endRow = (int)ultraNumRowEnd.Value;
  131. if (endRow - startRow < 0)
  132. {
  133. MessageUtil.ShowTips("没有任何行数据!");
  134. return;
  135. }
  136. string[,] head = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value("A" + 1, "BZ" + 1));
  137. if (head == null)
  138. {
  139. return;
  140. }
  141. string[] colhead = new string[head.GetLength(1)];
  142. for (int i = 0; i < colhead.Length; i++)
  143. {
  144. colhead[i] = head[0, i];
  145. }
  146. #region 获取合同号等所在列
  147. int colNum = 0;
  148. int colf_in_time = -1;
  149. int colspec_jg_desc = -1;
  150. int colmodel_desc = -1;
  151. int colsteelname = -1;
  152. int colcoat_type = -1;
  153. int coljg_orderno = -1;
  154. int colfinal_user_desc = -1;
  155. int coljudge_stove_no = -1;
  156. int colbatch_no = -1;
  157. int colpro_num = -1;
  158. int colsingleweight = -1;
  159. int colpro_wt = -1;
  160. int colgradename = -1;
  161. int colmin_d = -1;
  162. int colmin_h = -1;
  163. int colsoure_name = -1;
  164. int colmemo = -1;
  165. int coloutdiameter = -1;
  166. int colwallthick = -1;
  167. int coljskbz = -1;
  168. int coljgfl = -1;
  169. int coljsbz = -1;
  170. for (int i = head.GetLength(1) - 1; i >= 0; i--)
  171. {
  172. if (!head[0, i].Equals("") && colNum == 0)
  173. {
  174. colNum = i;
  175. }
  176. if (head[0, i].Trim().Equals("技术科备注"))
  177. {
  178. coljskbz = i;
  179. }
  180. if (head[0, i].Trim().Equals("入库日期"))
  181. {
  182. colf_in_time = i;
  183. }
  184. if (head[0, i].Trim().Equals("对应规格"))
  185. {
  186. colspec_jg_desc = i;
  187. }
  188. if (head[0, i].Trim().Equals("扣型"))
  189. {
  190. colmodel_desc = i;
  191. }
  192. if (head[0, i].Trim().Equals("钢级"))
  193. {
  194. colsteelname = i;
  195. }
  196. if (head[0, i].Trim().Equals("接箍分类"))
  197. {
  198. coljgfl = i;
  199. }
  200. if (head[0, i].Trim().Equals("涂层"))
  201. {
  202. colcoat_type = i;
  203. }
  204. if (head[0, i].Trim().Equals("合同号"))
  205. {
  206. coljg_orderno = i;
  207. }
  208. if (head[0, i].Trim().Equals("合同用户"))
  209. {
  210. colfinal_user_desc = i;
  211. }
  212. if (head[0, i].Trim().Equals("炉号"))
  213. {
  214. coljudge_stove_no = i;
  215. }
  216. if (head[0, i].Trim().Equals("批号"))
  217. {
  218. colbatch_no = i;
  219. }
  220. if (head[0, i].Trim().Equals("库存个数"))
  221. {
  222. colpro_num = i;
  223. }
  224. if (head[0, i].Trim().Equals("单重(KG)"))
  225. {
  226. colsingleweight = i;
  227. }
  228. if (head[0, i].Trim().Equals("库存重量"))
  229. {
  230. colpro_wt = i;
  231. }
  232. if (head[0, i].Trim().Equals("钢种"))
  233. {
  234. colgradename = i;
  235. }
  236. if (head[0, i].Trim().Equals("原料外径"))
  237. {
  238. colmin_d = i;
  239. }
  240. if (head[0, i].Trim().Equals("原料壁厚"))
  241. {
  242. colmin_h = i;
  243. }
  244. if (head[0, i].Trim().Equals("标准"))
  245. {
  246. coljsbz = i;
  247. }
  248. if (head[0, i].Trim().Equals("来源"))
  249. {
  250. colsoure_name = i;
  251. }
  252. if (head[0, i].Trim().Equals("备注"))
  253. {
  254. colmemo = i;
  255. }
  256. if (head[0, i].Trim().Equals("成品外径"))
  257. {
  258. coloutdiameter = i;
  259. }
  260. if (head[0, i].Trim().Equals("成品长度"))
  261. {
  262. colwallthick = i;
  263. }
  264. }
  265. //if (colOrderPk == -1)
  266. //{
  267. // MessageUtil.ShowError("未找到交货编码PK的列");
  268. // return;
  269. //}
  270. #endregion
  271. ArrayList list = new ArrayList();
  272. string[,] arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value(
  273. "A" + startRow, ExcelHelper.SeqToXlsCol[colNum + 1] + endRow));
  274. if (arr == null)
  275. {
  276. return;
  277. }
  278. WaitFromOpen();
  279. for (int i = 0; i < arr.GetLength(0); i++)
  280. {
  281. ArrayList param = new ArrayList();
  282. CouplingMatMEntity entity = new CouplingMatMEntity();
  283. //string orderPk = arr[i, colOrderPk].Trim();
  284. //string ordLnDlyPk = "";
  285. //string plnDivideId = "";
  286. //if (orderPk.Equals(""))
  287. //{
  288. // messageErr.Add("第" + (i + startRow).ToString() + "条数据PK码为空");
  289. // continue;
  290. //}
  291. //if (orderPk.Contains('-'))
  292. //{
  293. // int lenPk = orderPk.LastIndexOf('-');
  294. // ordLnDlyPk = orderPk.Substring(0, lenPk);
  295. // plnDivideId = orderPk.Substring(lenPk + 1, orderPk.Length - lenPk - 1);
  296. //}
  297. //else
  298. //{
  299. // ordLnDlyPk = orderPk;
  300. //}
  301. //if (ordLnDlyPk.Equals(""))
  302. //{
  303. // messageErr.Add("第" + (i + startRow).ToString() + "条数据PK码有误。");
  304. // continue;
  305. //}
  306. //if (colRollMonth != -1)
  307. //{
  308. // DateTime date = new DateTime();
  309. // string rollMonth = arr[i, colRollMonth].ToString();
  310. // if (DateTime.TryParseExact(rollMonth, "yyyyMM", null, DateTimeStyles.None, out date))
  311. // {
  312. // entity.RollMonth = date.ToString("yyyy-MM");
  313. // }
  314. //}
  315. entity.JudgeStoveNo = arr[i, coljudge_stove_no].ToString().Trim();
  316. //entity.JgOrderno = arr[i, coljg_orderno].ToString().Trim();
  317. //string rollMonth = arr[i, colf_in_time].ToString().Trim();
  318. //DateTime date = new DateTime();
  319. //if (DateTime.TryParseExact(rollMonth, "yyyyMM", null, DateTimeStyles.None, out date))
  320. //{
  321. // entity.FInTime = date.ToString("yyyy-MM");
  322. //}
  323. entity.FinTime = DateTime.Parse(arr[i, colf_in_time].ToString().Trim()).ToString("yyyy-MM-dd");
  324. entity.SpecJgDesc = arr[i, colspec_jg_desc].ToString().Trim();
  325. entity.ModelDesc = arr[i, colmodel_desc].ToString().Trim();
  326. entity.Steelname = arr[i, colsteelname].ToString().Trim();
  327. entity.CoatType = arr[i, colcoat_type].ToString().Trim();
  328. entity.BatchNo = arr[i, colbatch_no].ToString().Trim();
  329. entity.FinalUserDesc= arr[i, colfinal_user_desc].ToString().Trim();
  330. entity.ProNum = Convert.ToDecimal(arr[i, colpro_num].ToString().Trim());
  331. entity.Singleweight = Convert.ToDecimal(arr[i, colsingleweight].ToString().Trim());
  332. entity.ProWt = Convert.ToDecimal(arr[i, colpro_wt].ToString().Trim());
  333. entity.Gradename = arr[i, colgradename].ToString().Trim();
  334. entity.MinD = Convert.ToDecimal(arr[i, colmin_d].ToString().Trim());
  335. entity.MinH = Convert.ToDecimal(arr[i, colmin_h].ToString().Trim());
  336. entity.SoureName = arr[i, colsoure_name].ToString().Trim();
  337. entity.JudgeStdName=arr[i, coljsbz].ToString().Trim();
  338. entity.Memo = "技术科备注:" + arr[i, coljskbz].ToString().Trim() + ",接箍分类:" + arr[i, coljgfl].ToString().Trim() + ",合同号:" + arr[i, coljg_orderno].ToString().Trim() + ",合同用户:" + arr[i, colfinal_user_desc].ToString().Trim() + ",备注:" + arr[i, colmemo].ToString().Trim();
  339. entity.Outdiameter = Convert.ToDecimal(arr[i, coloutdiameter].ToString().Trim());
  340. //entity.Wallthick = Convert.ToDecimal(arr[i, colwallthick].ToString().Trim());
  341. entity.Aimlength = Convert.ToDecimal(arr[i, colwallthick].ToString().Trim());
  342. list.Add(Core.Mes.Client.Comm.Format.JSONFormat.Format(entity));
  343. }
  344. CoreClientParam ccp = new CoreClientParam();
  345. ccp.ServerName = "com.steering.pss.plnsaleord.planStove.FrmImportSetMatJg";
  346. ccp.MethodName = "saveOrderSetlog";
  347. ccp.ServerParams = new object[] { list, this.UserInfo.GetUserName() };
  348. ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  349. WaitFromColse();
  350. if (ccp.ReturnCode == -1) return;
  351. //MessageUtil.ShowTips(ccp.ReturnInfo);
  352. if (ccp.ReturnInfo.Equals("成功!"))
  353. {
  354. if (messageErr.Count == 0)
  355. {
  356. MessageUtil.ShowTips("导入成功,共" + list.Count + "条。");
  357. }
  358. else
  359. {
  360. MessageUtil.ShowTips(list.Count + "条导入成功," + messageErr.Count + "条导入失败。\n" + messageErr[0]);
  361. }
  362. }
  363. else
  364. {
  365. MessageUtil.ShowTips("导入失败,共" + list.Count + "条。");
  366. }
  367. }
  368. catch (Exception ex)
  369. {
  370. WaitFromColse();
  371. if (!(ex is MESException))
  372. {
  373. MessageUtil.ShowError(ex.Message);
  374. }
  375. }
  376. }
  377. /// <summary>
  378. /// 打开excel文件
  379. /// </summary>
  380. private void doOpen()
  381. {
  382. try
  383. {
  384. OpenFileDialog dialog = new OpenFileDialog();
  385. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
  386. if (dialog.ShowDialog() == DialogResult.OK)
  387. {
  388. ModelPatch = dialog.FileName;
  389. if (!System.IO.File.Exists(ModelPatch))//检察文件是否存在
  390. {
  391. return;
  392. }
  393. try
  394. {
  395. System.IO.File.Move(ModelPatch, ModelPatch);
  396. }
  397. catch
  398. {
  399. MessageUtil.ShowTips("文件已经被打开,请先关闭!");
  400. return;
  401. }
  402. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Open(ModelPatch, true);
  403. this.ultraNumRowEnd.Value = getExcelRowsCount();
  404. }
  405. }
  406. catch (Exception ex)
  407. {
  408. MessageBox.Show(ex.Message);
  409. }
  410. }
  411. /// <summary>
  412. /// 关闭
  413. /// </summary>
  414. private void doClose()
  415. {
  416. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
  417. }
  418. /// <summary>
  419. /// object二维数组转string二维数组
  420. /// </summary>
  421. /// <param name="obj"></param>
  422. /// <returns></returns>
  423. private string[,] ObjectToString(object[,] obj)
  424. {
  425. int rows = obj.GetLength(0); //获取m_objRangeArrayValue的行数
  426. int columns = obj.GetLength(1); //获取m_objRangeArrayValue的列数
  427. object[,] param = new object[rows, columns]; //转化为起始为0的数组
  428. Array.Copy(obj, param, rows * columns); //临时结果,学习用
  429. string[,] str = new string[param.GetLength(0), param.GetLength(1)];
  430. for (int i = 0; i < str.GetLength(0); i++)
  431. {
  432. for (int j = 0; j < str.GetLength(1); j++)
  433. {
  434. if (param[i, j] == null)
  435. {
  436. str[i, j] = "";
  437. }
  438. else
  439. {
  440. str[i, j] = param[i, j].ToString();
  441. }
  442. }
  443. }
  444. return str;
  445. }
  446. /// <summary>
  447. /// 等待窗口
  448. /// </summary>
  449. private void WaitFromOpen()
  450. {
  451. this.Cursor = Cursors.WaitCursor; //控制鼠标的样式为等待
  452. if (Constant.WaitingForm == null)
  453. {
  454. Constant.WaitingForm = new WaitingForm();
  455. }
  456. Constant.WaitingForm.ShowToUser = true;
  457. Constant.WaitingForm.Show();
  458. Constant.WaitingForm.Update();
  459. }
  460. /// <summary>
  461. /// 关闭等待
  462. /// </summary>
  463. private void WaitFromColse()
  464. {
  465. this.Cursor = Cursors.Default;
  466. Constant.WaitingForm.ShowToUser = false;
  467. Constant.WaitingForm.Close();
  468. Constant.WaitingForm = null;
  469. }
  470. private void FrmImportSetOrder_FormClosed(object sender, FormClosedEventArgs e)
  471. {
  472. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
  473. }
  474. }
  475. }