FrmOrderCraftImport.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  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.Server;
  12. using Core.Mes.Client.Comm;
  13. using Core.Mes.Client.Comm.Tool;
  14. using System.Reflection;
  15. using Microsoft.Office.Interop.Excel;
  16. using com.steering.pss.plnsaleord.order.model;
  17. namespace Core.StlMes.Client.PlnSaleOrd
  18. {
  19. public partial class FrmOrderCraftImport : FrmBase
  20. {
  21. /// <summary>
  22. /// 模板路径
  23. /// </summary>
  24. string modelPatch = "";
  25. public string ModelPatch
  26. {
  27. get { return modelPatch; }
  28. set { modelPatch = value; }
  29. }
  30. public FrmOrderCraftImport()
  31. {
  32. InitializeComponent();
  33. }
  34. private void FrmOrderCraftImport_Load(object sender, EventArgs e)
  35. {
  36. Init();
  37. }
  38. /// <summary>
  39. /// 构造
  40. /// </summary>
  41. /// <param name="ob"></param>
  42. public FrmOrderCraftImport(OpeBase ob)
  43. {
  44. this.ob = ob;
  45. InitializeComponent();
  46. }
  47. /// <summary>
  48. /// 初始化
  49. /// </summary>
  50. private void Init()
  51. {
  52. ultraNumRowStart.Value = 2;
  53. ultraNumRowEnd.Value = 2;
  54. if (!System.IO.File.Exists(ModelPatch))//检察文件是否存在
  55. {
  56. return;
  57. }
  58. try
  59. {
  60. System.IO.File.Move(ModelPatch, ModelPatch);
  61. }
  62. catch
  63. {
  64. MessageUtil.ShowTips("文件已经被打开,请先关闭!");
  65. return;
  66. }
  67. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Open(ModelPatch, true);
  68. this.ultraNumRowEnd.Value = getExcelRowsCount();
  69. }
  70. /// <summary>
  71. /// 获取excl的行数
  72. /// </summary>
  73. private int getExcelRowsCount()
  74. {
  75. //获取行数(上限5000)
  76. int colOrderNo = 0;
  77. int j = 4999;
  78. string[,] arr = null;
  79. string[,] head = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value("A" + 1, "BZ" + 1));
  80. if (head == null)
  81. {
  82. return 1;
  83. }
  84. for (int i = 0; i < head.GetLength(1); i++)
  85. {
  86. if (head[0, i].Trim().Equals("合同号"))
  87. {
  88. colOrderNo = i;
  89. break;
  90. }
  91. }
  92. arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value(
  93. ExcelHelper.SeqToXlsCol[colOrderNo + 1] + 2,
  94. ExcelHelper.SeqToXlsCol[colOrderNo + 1] + 5001));
  95. if (arr == null)
  96. {
  97. return 1;
  98. }
  99. for (j = 4999; j >= 0; j--)
  100. {
  101. if (!arr[j, 0].Equals(""))
  102. {
  103. break;
  104. }
  105. }
  106. return j + 2;
  107. }
  108. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  109. {
  110. switch (e.Tool.Key)
  111. {
  112. case "Save":
  113. doSave();
  114. break;
  115. case "Open":
  116. doOpen();
  117. break;
  118. case "Close":
  119. doClose();
  120. break;
  121. }
  122. }
  123. /// <summary>
  124. /// 打开excel文件
  125. /// </summary>
  126. private void doOpen()
  127. {
  128. try
  129. {
  130. OpenFileDialog dialog = new OpenFileDialog();
  131. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
  132. if (dialog.ShowDialog() == DialogResult.OK)
  133. {
  134. ModelPatch = dialog.FileName;
  135. if (!System.IO.File.Exists(ModelPatch))//检察文件是否存在
  136. {
  137. return;
  138. }
  139. try
  140. {
  141. System.IO.File.Move(ModelPatch, ModelPatch);
  142. }
  143. catch
  144. {
  145. MessageUtil.ShowTips("文件已经被打开,请先关闭!");
  146. return;
  147. }
  148. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Open(ModelPatch, true);
  149. this.ultraNumRowEnd.Value = getExcelRowsCount();
  150. }
  151. }
  152. catch (Exception ex)
  153. {
  154. MessageBox.Show(ex.Message);
  155. }
  156. }
  157. /// <summary>
  158. /// 导入数据到工艺文件表中
  159. /// </summary>
  160. private void doSave()
  161. {
  162. try
  163. {
  164. int startRow = (int)ultraNumRowStart.Value;
  165. int endRow = (int)ultraNumRowEnd.Value;
  166. if (endRow - startRow < 0)
  167. {
  168. MessageUtil.ShowTips("没有任何行数据!");
  169. return;
  170. }
  171. string[,] head = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value("A" + 1, "BZ" + 1));
  172. if (head == null)
  173. {
  174. return;
  175. }
  176. string[] colhead = new string[head.GetLength(1)];
  177. for (int i = 0; i < colhead.Length; i++)
  178. {
  179. colhead[i] = head[0, i];
  180. }
  181. #region 获取合同号、工艺号等所在列
  182. int colNum = 0;
  183. int colOrderNo = -1;
  184. int colCraftFileNo = -1;
  185. int colstdLgNo = -1;
  186. int colstdZgNo = -1;
  187. int colstdGjgNo = -1;
  188. int colcraftFileMan = -1;
  189. int colversionChange = -1;
  190. int colversionDesc = -1;
  191. int colheightNkMin = -1;
  192. int colheightNkMax = -1;
  193. int coliussedId = -1;
  194. if (!((IList)colhead).Contains("合同号"))
  195. {
  196. MessageUtil.ShowWarning("列“合同号”不存在!");
  197. return;
  198. }
  199. if (!((IList)colhead).Contains("工艺号"))
  200. {
  201. MessageUtil.ShowWarning("列“工艺号”不存在!");
  202. return;
  203. }
  204. if (!((IList)colhead).Contains("炼钢标准"))
  205. {
  206. MessageUtil.ShowWarning("列“炼钢标准”不存在!");
  207. return;
  208. }
  209. if (!((IList)colhead).Contains("轧管标准"))
  210. {
  211. MessageUtil.ShowWarning("列“轧管标准”不存在!");
  212. return;
  213. }
  214. if (!((IList)colhead).Contains("加工标准"))
  215. {
  216. MessageUtil.ShowWarning("列“加工标准”不存在!");
  217. return;
  218. }
  219. if (!((IList)colhead).Contains("工艺文件责任人"))
  220. {
  221. MessageUtil.ShowWarning("列“工艺文件责任人”不存在!");
  222. return;
  223. }
  224. if (!((IList)colhead).Contains("壁厚下限"))
  225. {
  226. MessageUtil.ShowWarning("列“壁厚下限”不存在!");
  227. return;
  228. }
  229. if (!((IList)colhead).Contains("壁厚上限"))
  230. {
  231. MessageUtil.ShowWarning("列“壁厚上限”不存在!");
  232. return;
  233. }
  234. if (!((IList)colhead).Contains("下发版次"))
  235. {
  236. MessageUtil.ShowWarning("列“下发版次”不存在!");
  237. return;
  238. }
  239. for (int i = head.GetLength(1) - 1; i >= 0; i--)
  240. {
  241. if (!head[0, i].Equals("") && colNum == 0)
  242. {
  243. colNum = i;
  244. }
  245. if (head[0, i].Trim().Equals("合同号"))
  246. {
  247. colOrderNo = i;
  248. }
  249. if (head[0, i].Trim().Equals("工艺号"))
  250. {
  251. colCraftFileNo = i;
  252. }
  253. if (head[0, i].Trim().Equals("炼钢标准"))
  254. {
  255. colstdLgNo = i;
  256. }
  257. if (head[0, i].Trim().Equals("轧管标准"))
  258. {
  259. colstdZgNo = i;
  260. }
  261. if (head[0, i].Trim().Equals("加工标准"))
  262. {
  263. colstdGjgNo = i;
  264. }
  265. if (head[0, i].Trim().Equals("工艺文件责任人"))
  266. {
  267. colcraftFileMan = i;
  268. }
  269. if (head[0, i].Trim().Equals("工艺变动"))
  270. {
  271. colversionChange = i;
  272. }
  273. if (head[0, i].Trim().Equals("工艺版本描述"))
  274. {
  275. colversionDesc = i;
  276. }
  277. if (head[0, i].Trim().Equals("壁厚下限"))
  278. {
  279. colheightNkMin = i;
  280. }
  281. if (head[0, i].Trim().Equals("壁厚上限"))
  282. {
  283. colheightNkMax = i;
  284. }
  285. if (head[0, i].Trim().Equals("下发版次"))
  286. {
  287. coliussedId = i;
  288. }
  289. }
  290. #endregion
  291. string[,] arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value(
  292. "A" + startRow, ExcelHelper.SeqToXlsCol[colNum + 1] + endRow));
  293. if (arr == null)
  294. {
  295. return;
  296. }
  297. for (int i = 0; i <= endRow -startRow; i++)
  298. {
  299. if (arr[i,colOrderNo].Equals(""))
  300. {
  301. MessageUtil.ShowTips("第" + (i + startRow).ToString() + "行,合同号为空!");
  302. return;
  303. }
  304. }
  305. ArrayList ListCraftFile = new ArrayList();
  306. ArrayList listOrderNo = new ArrayList();
  307. WaitFromOpen();
  308. for (int i = 0; i < arr.GetLength(0); i++)
  309. {
  310. if (!arr[i, colCraftFileNo].Equals("") && !arr[i, coliussedId].Equals("")
  311. && !listOrderNo.Contains(arr[i, colOrderNo].ToString()))
  312. {
  313. PlnOrdCraftFileEntity craftFile = new PlnOrdCraftFileEntity();
  314. string orderNoseq = arr[i, colOrderNo].ToString();
  315. if (!orderNoseq.Contains('/'))
  316. {
  317. WaitFromColse();
  318. MessageUtil.ShowTips("第" + (i + startRow).ToString() + "行,合同行号为空!");
  319. return;
  320. }
  321. string orderNo = orderNoseq.Substring(0, orderNoseq.LastIndexOf('/'));
  322. string orderSeq = orderNoseq.Substring(orderNoseq.LastIndexOf('/') + 1);
  323. double heightnkmin = 0;
  324. double heightnkmax = 0;
  325. listOrderNo.Add(orderNoseq);
  326. #region 取系统数据
  327. System.Data.DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderCraftInfo.getSaleOrderStatus",
  328. new object[] { orderNo, orderSeq }, this.ob);
  329. if (dt != null && dt.Rows.Count > 0)
  330. {
  331. ArrayList param = new ArrayList();
  332. double outdiameter = 0;
  333. double wallthick = 0;
  334. param.Add(dt.Rows[0]["ORD_LN_PK"].ToString());
  335. param.Add(dt.Rows[0]["ORD_LN_PK"].ToString());
  336. param.Add(dt.Rows[0]["INDEX_SEQ"].ToString());
  337. System.Data.DataTable dtPro = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderCraftInfo.getOrderCraftpath",
  338. new object[] { param }, this.ob);
  339. if (dtPro != null && dtPro.Rows.Count > 0)
  340. {
  341. System.Data.DataTable dtPath = null;
  342. dtPro.DefaultView.RowFilter = "PROCESS_CODE= 'D'";
  343. dtPath = dtPro.DefaultView.ToTable();
  344. if (dtPath != null && dtPath.Rows.Count > 0)
  345. {
  346. craftFile.CraftPath = dtPath.Rows[0]["PROCESS_DESC_C"].ToString();
  347. }
  348. dtPro.DefaultView.RowFilter = "PROCESS_CODE= 'F'";
  349. dtPath = dtPro.DefaultView.ToTable();
  350. if (dtPath != null && dtPath.Rows.Count > 0)
  351. {
  352. craftFile.RclInfo = dtPath.Rows[0]["PROCESS_DESC_C"].ToString();
  353. }
  354. }
  355. double.TryParse(dt.Rows[0]["WALLTHICK"].ToString(), out wallthick);
  356. double.TryParse(dt.Rows[0]["OUTDIAMETER"].ToString(), out outdiameter);
  357. craftFile.ProducJx = dt.Rows[0]["PRODUCNAME"].ToString();
  358. craftFile.Steelname = dt.Rows[0]["STEELNAME"].ToString();
  359. craftFile.Steelcode = dt.Rows[0]["STEELCODE"].ToString();
  360. craftFile.Outdiameter = outdiameter.ToString();
  361. craftFile.Wallthick = wallthick.ToString();
  362. craftFile.ModelCode = dt.Rows[0]["MODEL_CODE"].ToString();
  363. craftFile.ModelDesc = dt.Rows[0]["MODEL_DESC"].ToString();
  364. craftFile.LengthExtent = dt.Rows[0]["LENGTHDISC"].ToString();
  365. craftFile.Gradecode = dt.Rows[0]["GRADECODE_ALL"].ToString();
  366. craftFile.BjType = dt.Rows[0]["BJ_TYPE"].ToString();
  367. craftFile.PaydownDpt = dt.Rows[0]["ENDGXNAME"].ToString();
  368. craftFile.MonitorInfo = dt.Rows[0]["MONITORDEMAND"].ToString();
  369. craftFile.SDivD = wallthick / outdiameter;
  370. }
  371. #endregion
  372. craftFile.OrderNo = orderNo;
  373. craftFile.OrderSeq = orderSeq;
  374. craftFile.CraftFileNo = arr[i, colCraftFileNo].ToString();
  375. craftFile.StdLgNo = arr[i, colstdLgNo].ToString();
  376. craftFile.StdZgNo = arr[i, colstdZgNo].ToString();
  377. craftFile.StdGjgNo = arr[i, colstdGjgNo].ToString();
  378. craftFile.CraftFileMan = arr[i, colcraftFileMan].ToString();
  379. double.TryParse(arr[i, colheightNkMin].ToString(), out heightnkmin);
  380. craftFile.HeightNkMin = heightnkmin.ToString();
  381. double.TryParse(arr[i, colheightNkMax].ToString(), out heightnkmax);
  382. craftFile.HeightNkMax = heightnkmax.ToString();
  383. if (colversionChange != -1)
  384. {
  385. if (!arr[i, colversionChange].ToString().Equals(""))
  386. {
  387. craftFile.VersionNo = "True";
  388. }
  389. }
  390. if (colversionDesc != -1)
  391. {
  392. craftFile.VersionDesc = arr[i, colversionDesc].ToString();
  393. }
  394. craftFile.CreateName = UserInfo.GetUserName();
  395. ListCraftFile.Add(craftFile);
  396. }
  397. }
  398. CoreClientParam ccp = new CoreClientParam();
  399. ccp.ServerName = "com.steering.pss.plnsaleord.order.CoreOrderCraftInfo";
  400. ccp.MethodName = "saveCraftInfo";
  401. ccp.ServerParams = new object[] { ListCraftFile, startRow };
  402. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  403. WaitFromColse();
  404. if (ccp.ReturnCode != -1)
  405. {
  406. MessageUtil.ShowTips(ccp.ReturnInfo);
  407. }
  408. else
  409. {
  410. MessageUtil.ShowError("导入失败!" + ccp.ReturnInfo);
  411. }
  412. }
  413. catch (Exception ex)
  414. {
  415. WaitFromColse();
  416. MessageBox.Show(ex.Message);
  417. }
  418. }
  419. /// <summary>
  420. /// 关闭
  421. /// </summary>
  422. private void doClose()
  423. {
  424. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
  425. }
  426. private void FrmOrderCraftImport_FormClosed(object sender, FormClosedEventArgs e)
  427. {
  428. uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
  429. }
  430. private void ultraNumRowStart_ValueChanged(object sender, EventArgs e)
  431. {
  432. ultraNumRowEnd.MinValue = ultraNumRowStart.Value;
  433. }
  434. private void ultraNumRowEnd_ValueChanged(object sender, EventArgs e)
  435. {
  436. ultraNumRowStart.MaxValue = ultraNumRowEnd.Value;
  437. }
  438. /// <summary>
  439. /// object二维数组转string二维数组
  440. /// </summary>
  441. /// <param name="obj"></param>
  442. /// <returns></returns>
  443. private string[,] ObjectToString(object[,] obj)
  444. {
  445. int rows = obj.GetLength(0); //获取m_objRangeArrayValue的行数
  446. int columns = obj.GetLength(1); //获取m_objRangeArrayValue的列数
  447. object[,] param = new object[rows, columns]; //转化为起始为0的数组
  448. Array.Copy(obj, param, rows * columns); //临时结果,学习用
  449. string[,] str = new string[param.GetLength(0), param.GetLength(1)];
  450. for (int i = 0; i < str.GetLength(0); i++)
  451. {
  452. for (int j = 0; j < str.GetLength(1); j++)
  453. {
  454. if (param[i, j] == null)
  455. {
  456. str[i, j] = "";
  457. }
  458. else
  459. {
  460. str[i, j] = param[i, j].ToString();
  461. }
  462. }
  463. }
  464. return str;
  465. }
  466. /// <summary>
  467. /// 等待窗口
  468. /// </summary>
  469. private void WaitFromOpen()
  470. {
  471. this.Cursor = Cursors.WaitCursor; //控制鼠标的样式为等待
  472. if (Constant.WaitingForm == null)
  473. {
  474. Constant.WaitingForm = new WaitingForm();
  475. }
  476. Constant.WaitingForm.ShowToUser = true;
  477. Constant.WaitingForm.Show();
  478. Constant.WaitingForm.Update();
  479. }
  480. /// <summary>
  481. /// 关闭等待
  482. /// </summary>
  483. private void WaitFromColse()
  484. {
  485. this.Cursor = Cursors.Default;
  486. Constant.WaitingForm.ShowToUser = false;
  487. Constant.WaitingForm.Close();
  488. Constant.WaitingForm = null;
  489. }
  490. }
  491. }