FrmSteelMerge.cs 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791
  1. using Core.Mes.Client.Comm.Control;
  2. using Core.Mes.Client.Comm.Format;
  3. using Core.Mes.Client.Comm.Server;
  4. using Core.Mes.Client.Comm.Tool;
  5. using Core.StlMes.Client.PlnSaleOrd.BaseMethod;
  6. using Core.StlMes.Client.PlnSaleOrd.炼钢计划.entity;
  7. using CoreFS.CA06;
  8. using Infragistics.Win.UltraWinGrid;
  9. using Infragistics.Win.UltraWinMaskedEdit;
  10. using System;
  11. using System.Collections;
  12. using System.Collections.Generic;
  13. using System.ComponentModel;
  14. using System.Data;
  15. using System.Drawing;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Windows.Forms;
  19. namespace Core.StlMes.Client.PlnSaleOrd.炼钢计划
  20. {
  21. public partial class FrmSteelMerge : FrmBase
  22. {
  23. public bool Flag = false;
  24. private ArrayList list = null;
  25. private string furnnacNo1 = "";//炉次号1
  26. private string furnnacNo2 = "";//炉次号2
  27. private string furnnacSeq1 = "";//炉次顺序号1
  28. private string furnnacSeq2 = "";//炉次顺序号2
  29. private string gradename1 = "";//
  30. private string gradename2 = "";//
  31. private int quantity1 = 0;
  32. private int quantity2 = 0;
  33. private double weight1 = 0;
  34. private double weight2 = 0;
  35. private string[] arrString = null;
  36. private OpeBase ob;
  37. private int countHb = 0;
  38. public FrmSteelMerge(ArrayList _list,OpeBase _ob,int _countHb)
  39. {
  40. list = _list;
  41. ob = _ob;
  42. countHb = _countHb;
  43. InitializeComponent();
  44. }
  45. private void FrmSteelMerge_Load(object sender, EventArgs e)
  46. {
  47. if (list != null)
  48. {
  49. arrString = (string[])list.ToArray(typeof(string));
  50. if (list.Count > 4)//选择一条数据
  51. {
  52. furnnacNo1 = arrString[0].ToString();
  53. furnnacSeq1 = arrString[4].ToString();
  54. furnnacNo2 = arrString[5].ToString();
  55. furnnacSeq2 = arrString[9].ToString();
  56. gradename1 = arrString[1].ToString();
  57. gradename2 = arrString[6].ToString();
  58. }
  59. else
  60. {
  61. furnnacNo1 = arrString[0].ToString();
  62. //furnnacNo2 = arrString[4].ToString();
  63. gradename1 = arrString[1].ToString();
  64. //gradename2 = arrString[5].ToString();
  65. }
  66. }
  67. EntityHelper.ShowGridCaption<PlnSteelforOrdEntity>(ultraGrid2.DisplayLayout.Bands[0]);
  68. EntityHelper.ShowGridCaption<PlnSteelforOrdEntity>(ultraGrid1.DisplayLayout.Bands[0]);
  69. BaseHelper.setOtherColumnReadOnly(ultraGrid3, new string[] { });
  70. BaseHelper.setOtherColumnReadOnly(ultraGrid2, new string[] { "CHC", "EditWt" });
  71. BaseHelper.setOtherColumnReadOnly(ultraGrid1, new string[] { "CHC", "EditWt" });
  72. BaseHelper.InitCellPosition(ultraGrid2, new string[] { "Sequenceno", "Sequenceincast", "Diameter", "LenGpSingle", "CutNumGp", "LengthM", "WeightGpOne", "WeightM", "TotWeightM", "TotMumM", "EditWt", "EditNum", "CutNum" });
  73. BaseHelper.InitCellPosition(ultraGrid1, new string[] { "Sequenceno", "Sequenceincast", "Diameter", "LenGpSingle", "CutNumGp", "LengthM", "WeightGpOne", "WeightM", "TotWeightM", "TotMumM", "EditWt", "EditNum", "CutNum" });
  74. BaseHelper.GridColumnSum(ultraGrid2, new string[] { "TotWeightM" });
  75. BaseHelper.GridColumnCount(ultraGrid2, new string[] { "TotMumM" });
  76. BaseHelper.GridColumnSum(ultraGrid1, new string[] { "TotWeightM" });
  77. BaseHelper.GridColumnCount(ultraGrid1, new string[] { "TotMumM" });
  78. BaseHelper.setUltraGridColumnMaxInput(ultraGrid1, new string[] { "TotWeightM", "WeightGpOne", "EditWt" });
  79. BaseHelper.setUltraGridColumnMaxInput(ultraGrid2, new string[] { "TotWeightM", "WeightGpOne", "EditWt" });
  80. BaseHelper.setColumnBackColor(ultraGrid2, new string[] { "EditWt" });
  81. BaseHelper.setColumnBackColor(ultraGrid1, new string[] { "EditWt" });
  82. //doGraderCIC();
  83. this.splitContainer1.SplitterDistance = 0;
  84. doRefresh();
  85. }
  86. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  87. {
  88. switch (e.Tool.Key)
  89. {
  90. case "Refresh": // 查询
  91. doRefresh();
  92. break;
  93. case "Modify": //修改
  94. doModify();
  95. break;
  96. case "QueryCicAll": //索引码合并
  97. doQueryCicAll();
  98. break;
  99. case "Close": // 关闭
  100. this.Close();
  101. break;
  102. }
  103. }
  104. /// <summary>
  105. /// 查询
  106. /// </summary>
  107. private void doRefresh()
  108. {
  109. List<PlnSteelforOrdEntity> listSource1 = EntityHelper.GetData<PlnSteelforOrdEntity>
  110. ("com.steering.pss.plnsaleord.steelMarkingPlan.ControlFurNacePlan.getFurnSteelOrder", new object[] { furnnacNo1 }, ob);
  111. plnSteelforOrdEntityBindingSource.DataSource = listSource1;
  112. GridHelper.RefreshAndAutoSize(ultraGrid2);
  113. quantity1 = 0;
  114. weight1 = 0;
  115. double conAmount1 = 0; //合同量
  116. double matAmount1 = 0; //余材量
  117. foreach (UltraGridRow row in ultraGrid2.Rows)
  118. {
  119. quantity1 += int.Parse(row.Cells["TotMumM"].Value.ToString());
  120. weight1 += double.Parse(row.Cells["TotWeightM"].Value.ToString());
  121. if (row.Cells["Surplusflag"].Text.ToString().Equals("订单材"))
  122. {
  123. conAmount1 += double.Parse(row.Cells["TotWeightM"].Text.ToString());
  124. }
  125. else{
  126. if (row.Cells["SurplusType"].Text.ToString().Equals("生产超量"))
  127. {
  128. matAmount1 += double.Parse(row.Cells["TotWeightM"].Text.ToString());
  129. }
  130. }
  131. }
  132. List<PlnSteelforOrdEntity> listSource2 = EntityHelper.GetData<PlnSteelforOrdEntity>
  133. ("com.steering.pss.plnsaleord.steelMarkingPlan.ControlFurNacePlan.getFurnSteelOrder", new object[] { furnnacNo2 }, ob);
  134. plnSteelforOrdEntityBindingSource2.DataSource = listSource2;
  135. GridHelper.RefreshAndAutoSize(ultraGrid1);
  136. quantity2 = 0;
  137. weight2 = 0;
  138. double conAmount2 = 0; //合同量
  139. double matAmount2 = 0; //余材量
  140. foreach (UltraGridRow rows in ultraGrid1.Rows)
  141. {
  142. quantity2 += int.Parse(rows.Cells["TotMumM"].Value.ToString());
  143. weight2 += double.Parse(rows.Cells["TotWeightM"].Value.ToString());
  144. if (rows.Cells["Surplusflag"].Text.ToString().Equals("订单材"))
  145. {
  146. conAmount2 += double.Parse(rows.Cells["TotWeightM"].Text.ToString());
  147. }
  148. else
  149. {
  150. if (rows.Cells["SurplusType"].Text.ToString().Equals("生产超量"))
  151. {
  152. matAmount2 += double.Parse(rows.Cells["TotWeightM"].Text.ToString());
  153. }
  154. }
  155. }
  156. ultraLabel1.Text = " 炉次:" + furnnacNo1 + " 钢种:" + gradename1 + " 炉次计划支:" + quantity1 + " 炉次计划量:" + weight1 + " 冶炼量:" + conAmount1 + " 余材量:" + matAmount1;
  157. ultraLabel2.Text = " 炉次:" + furnnacNo2 + " 钢种:" + gradename2 + " 炉次计划支:" + quantity2 + " 炉次计划量:" + weight2 + " 冶炼量:" + conAmount2 + " 余材量:" + matAmount2;
  158. }
  159. private void doGraderCIC()
  160. {
  161. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMerge.getDoGraderCIC",
  162. new object[] { furnnacNo1, furnnacNo2 }, this.ob);
  163. DataTable dat = GetCrossTable(dt, furnnacNo2);
  164. ultraGrid3.DataSource = dat;
  165. ultraGrid3.DataBind();
  166. GridHelper.RefreshAndAutoSize(ultraGrid3);
  167. if (dat.Rows.Count > 0)
  168. {
  169. this.ultraGrid3.DisplayLayout.Bands[0].Columns["钢种索引码"].MergedCellStyle = MergedCellStyle.Always;
  170. }
  171. foreach (UltraGridRow row in ultraGrid3.Rows)
  172. {
  173. if(row.Cells["上下限"].Text.ToString().Equals("目标值"))
  174. {
  175. row.Activation = Activation.AllowEdit;
  176. //row.MaskDisplayMode = MaskMode.IncludeLiterals;
  177. //row.MaskInput = "{LOC}-n,nnn,nnn.nnn";
  178. row.Cells["钢种索引码"].Activation = Activation.ActivateOnly;
  179. row.Cells["上下限"].Activation = Activation.ActivateOnly;
  180. //foreach (UltraGridColumn ugc in ultraGrid3.DisplayLayout.Bands[0].Columns)
  181. //{
  182. // if ()
  183. // ugc.MaskDisplayMode = MaskMode.IncludeLiterals;
  184. // ugc.MaskInput = "{LOC}n,nnn,nnn.nnn";
  185. //}
  186. }
  187. else
  188. {
  189. row.Activation = Activation.ActivateOnly;
  190. }
  191. }
  192. }
  193. /// 将DataTable的第二列的值转化为列(即将原来的行表,转化成交叉表,没有对应值则默认"0")
  194. /// <param name="dt"></param>
  195. /// <returns></returns>
  196. public static DataTable GetCrossTable(DataTable dt,string falg1)
  197. {
  198. if (dt == null || dt.Columns.Count != 6 || dt.Rows.Count == 0)
  199. {
  200. return dt;
  201. }
  202. else
  203. {
  204. DataTable result = new DataTable();
  205. result.Columns.Add("钢种索引码");
  206. result.Columns.Add("上下限");
  207. DataTable dtColumns = dt.DefaultView.ToTable("dtColumns", true, dt.Columns[1].ColumnName);
  208. for (int i = 0; i < dtColumns.Rows.Count; i++)
  209. {
  210. string colName;
  211. if (dtColumns.Rows[1][0] is DateTime)
  212. {
  213. colName = Convert.ToDateTime(dtColumns.Rows[i][0]).ToString();
  214. }
  215. else
  216. {
  217. colName = dtColumns.Rows[i][0].ToString();
  218. }
  219. result.Columns.Add(colName);
  220. result.Columns[i + 1].DefaultValue = "";
  221. }
  222. DataTable distinct_object = dt.DefaultView.ToTable(true, "CIC");
  223. if (distinct_object.Rows.Count <= 0)
  224. {
  225. return result;
  226. }
  227. for (int i = 0; i < distinct_object.Rows.Count; i++)
  228. {
  229. string cic = distinct_object.Rows[i]["CIC"].ToString();
  230. DataRow[] drs = dt.Select("CIC='" + cic + "'");
  231. DataRow drNew = result.NewRow();
  232. drNew[0] = drs[0][0];
  233. drNew[1] = "下限";
  234. string rowName = drNew[0].ToString();
  235. foreach (DataRow dr in drs)
  236. {
  237. string colName = dr[1].ToString();
  238. string dValue1 = dr[2].ToString();
  239. if (dr[0].ToString().Equals(rowName, StringComparison.CurrentCultureIgnoreCase))
  240. {
  241. drNew[colName] = dValue1.ToString();
  242. }
  243. else
  244. {
  245. result.Rows.Add(drNew);
  246. drNew = result.NewRow();
  247. drNew[0] = dr[0];
  248. rowName = drNew[0].ToString();
  249. drNew[colName] = dValue1.ToString();
  250. }
  251. }
  252. result.Rows.Add(drNew);
  253. drNew = result.NewRow();
  254. drNew[0] = drs[0][0];
  255. drNew[1] = "上限";
  256. foreach (DataRow dr in drs)
  257. {
  258. string colName = dr[1].ToString();
  259. string dValue2 = dr[3].ToString();
  260. if (dr[0].ToString().Equals(rowName, StringComparison.CurrentCultureIgnoreCase))
  261. {
  262. drNew[colName] = dValue2.ToString();
  263. }
  264. else
  265. {
  266. result.Rows.Add(drNew);
  267. drNew = result.NewRow();
  268. drNew[1] = dr[0];
  269. rowName = drNew[1].ToString();
  270. drNew[colName] = dValue2.ToString();
  271. }
  272. }
  273. result.Rows.Add(drNew);
  274. //if (falg1.Equals(""))
  275. //{
  276. // drNew = result.NewRow();
  277. // drNew[0] = drs[0][0];
  278. // drNew[1] = "目标值";
  279. // foreach (DataRow dr in drs)
  280. // {
  281. // string colName = dr[1].ToString();
  282. // string dValue2 = dr[4].ToString();
  283. // if (dr[0].ToString().Equals(rowName, StringComparison.CurrentCultureIgnoreCase))
  284. // {
  285. // drNew[colName] = dValue2.ToString();
  286. // }
  287. // else
  288. // {
  289. // result.Rows.Add(drNew);
  290. // drNew = result.NewRow();
  291. // drNew[1] = dr[0];
  292. // rowName = drNew[1].ToString();
  293. // drNew[colName] = dValue2.ToString();
  294. // }
  295. // }
  296. // result.Rows.Add(drNew);
  297. //}
  298. //else
  299. //{
  300. if (cic.Equals("交集"))
  301. {
  302. drNew = result.NewRow();
  303. drNew[0] = drs[0][0];
  304. drNew[1] = "目标值";
  305. foreach (DataRow dr in drs)
  306. {
  307. string colName = dr[1].ToString();
  308. string dValue2 = dr[4].ToString();
  309. if (dr[0].ToString().Equals(rowName, StringComparison.CurrentCultureIgnoreCase))
  310. {
  311. drNew[colName] = dValue2.ToString();
  312. }
  313. else
  314. {
  315. result.Rows.Add(drNew);
  316. drNew = result.NewRow();
  317. drNew[1] = dr[0];
  318. rowName = drNew[1].ToString();
  319. drNew[colName] = dValue2.ToString();
  320. }
  321. }
  322. result.Rows.Add(drNew);
  323. }
  324. //}
  325. }
  326. return result;
  327. }
  328. }
  329. /// <summary>
  330. /// 修改
  331. /// </summary>
  332. private void doModify()
  333. {
  334. ultraGrid3.UpdateData();
  335. ArrayList list = new ArrayList();
  336. string cic = "";
  337. string cic1 = "";
  338. foreach (UltraGridRow row in ultraGrid3.Rows)
  339. {
  340. if (row.Cells["上下限"].Text.ToString().Equals("目标值"))
  341. {
  342. foreach (UltraGridColumn gvr in ultraGrid3.DisplayLayout.Bands[0].Columns)
  343. {
  344. if (!gvr.Key.Equals("钢种索引码") && !gvr.Key.Equals("上下限"))
  345. {
  346. ArrayList listColumn = new ArrayList();
  347. listColumn.Add(gvr.Key);
  348. listColumn.Add(row.Cells[gvr.Key].Text.ToString());
  349. list.Add(listColumn);
  350. }
  351. }
  352. cic = furnnacNo1 + furnnacNo2;
  353. cic1 = furnnacNo2 + furnnacNo1;
  354. }
  355. }
  356. PlanComm.WaitFromOpen(this.Cursor);
  357. CoreClientParam ccp = new CoreClientParam();
  358. ccp.ServerName = "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMerge";
  359. ccp.MethodName = "doUpdateCic";
  360. ccp.ServerParams = new object[] { list, cic, cic1,this.UserInfo.GetUserName() };
  361. ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  362. PlanComm.WaitFromColse(this.Cursor);
  363. if (ccp.ReturnCode == -1) return;
  364. MessageUtil.ShowTips(ccp.ReturnInfo);
  365. if (ccp.ReturnInfo.Equals("修改成功!"))
  366. {
  367. doRefresh();
  368. }
  369. }
  370. /// <summary>
  371. /// 向下合并
  372. /// </summary>
  373. /// <param name="sender"></param>
  374. /// <param name="e"></param>
  375. private void buttDown_Click(object sender, EventArgs e)
  376. {
  377. UltraGridRow urg = ultraGrid2.ActiveRow;
  378. if (urg == null) return;
  379. if (furnnacNo2.Equals("")) return;
  380. ArrayList list = new ArrayList();
  381. ArrayList entityList = new ArrayList();
  382. IQueryable<UltraGridRow> chcRows = ultraGrid2.Rows.AsQueryable().Where(a => a.GetValue("CHC") == "True");
  383. if (chcRows == null || chcRows.Count() == 0)
  384. {
  385. MessageUtil.ShowWarning("请选择要向下合并的炉次订单信息!");
  386. return;
  387. }
  388. else
  389. {
  390. foreach (UltraGridRow ugr in chcRows)
  391. {
  392. entityList.Add((PlnSteelforOrdEntity)ugr.ListObject);
  393. }
  394. }
  395. string cic = "";
  396. foreach (UltraGridRow ugr in ultraGrid1.Rows)
  397. {
  398. if (cic.Equals(""))
  399. {
  400. cic = ugr.Cells["Cic"].Value.ToString();
  401. }
  402. if (!cic.Equals(ugr.Cells["Cic"].Value.ToString()))
  403. {
  404. cic += "," + ugr.Cells["Cic"].Value.ToString();
  405. }
  406. }
  407. string[] strArray = cic.Split(',').Distinct().ToArray();
  408. cic = string.Join(",", strArray);
  409. ArrayList jsonList = new ArrayList();
  410. //int count = 0;
  411. //foreach (PlnSteelforOrdEntity entity in entityList)
  412. //{
  413. // if (entity.Surplusflag.Equals("余材") && entity.SurplusType.Equals("首炉加量"))
  414. // { count = 1; }
  415. //}
  416. //if()
  417. foreach (PlnSteelforOrdEntity entity in entityList)
  418. {
  419. if (!entity.Status.Equals("编制中"))
  420. {
  421. MessageUtil.ShowWarning("只有编制中状态的炉次订单才能合并!");
  422. return;
  423. }
  424. if (!entity.Surplusflag.Equals("余材") && entity.SurplusType.Equals("生产超量"))
  425. {
  426. MessageUtil.ShowWarning("该炉(" + entity.Furnaceno + ")是余材并且是生产超量的炉次,不能合并!");
  427. return;
  428. }
  429. //if (countHb != 2)
  430. //{
  431. if (entity.Surplusflag.Equals("余材") && entity.SurplusType.Equals("首炉加量"))
  432. {
  433. MessageUtil.ShowWarning("该炉(" + entity.Furnaceno + ")存在首炉加量不能向下合并!");
  434. return;
  435. }
  436. //}
  437. if (entity.EditWt.ToString().Equals("") || entity.EditWt.ToString().Equals("0"))
  438. {
  439. MessageUtil.ShowWarning("可编辑重量不能为零或为空!");
  440. return;
  441. }
  442. if (!cic.Contains(entity.Cic.ToString()))
  443. {
  444. cic += "," + entity.Cic.ToString();
  445. }
  446. string wt = (double.Parse(entity.EditNum.ToString()) * double.Parse(entity.WeightM.ToString())).ToString("f3");
  447. entity.EditWt = Convert.ToDecimal(wt);
  448. if (!entity.MergeNo.Equals(""))
  449. {
  450. MessageUtil.ShowWarning("选中炉已同定尺同去向合并过,不能炉次合并,请转分切!");
  451. return;
  452. }
  453. jsonList.Add(JSONFormat.Format(entity));
  454. }
  455. strArray = cic.Split(',').Distinct().ToArray();
  456. Array.Sort(strArray);
  457. cic = string.Join(",", strArray);
  458. if (cic.Contains(","))
  459. {
  460. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMerge.getQueryCicAll", new object[] { cic }, ob);
  461. if (dt.Rows.Count <= 0)
  462. {
  463. MessageUtil.ShowTips("不存在索引码" + cic + "交集!");
  464. return;
  465. }
  466. }
  467. if (MessageUtil.ShowYesNoAndQuestion("是否向下合并炉次订单?") == DialogResult.No)
  468. {
  469. return;
  470. }
  471. PlanComm.WaitFromOpen(this.Cursor);
  472. CoreClientParam ccp = new CoreClientParam();
  473. ccp.ServerName = "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMerge";
  474. ccp.MethodName = "doUpdateFurnOrd";
  475. ccp.ServerParams = new object[] { jsonList, furnnacNo1, furnnacNo2, weight2.ToString(), arrString[2].ToString(), arrString[3].ToString(), this.UserInfo.GetUserName(), "0", furnnacSeq1, furnnacSeq2, cic, countHb.ToString() };
  476. ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  477. PlanComm.WaitFromColse(this.Cursor);
  478. if (ccp.ReturnCode == -1) return;
  479. MessageUtil.ShowTips(ccp.ReturnInfo);
  480. if (ccp.ReturnInfo.Equals("向下合并成功!"))
  481. {
  482. doRefresh();
  483. Flag = true;
  484. }
  485. }
  486. /// <summary>
  487. /// 向上合并
  488. /// </summary>
  489. /// <param name="sender"></param>
  490. /// <param name="e"></param>
  491. private void buttUp_Click(object sender, EventArgs e)
  492. {
  493. UltraGridRow urg = ultraGrid1.ActiveRow;
  494. if (urg == null) return;
  495. ArrayList list = new ArrayList();
  496. ArrayList entityList = new ArrayList();
  497. IQueryable<UltraGridRow> chcRows = ultraGrid1.Rows.AsQueryable().Where(a => a.GetValue("CHC") == "True");
  498. if (chcRows == null || chcRows.Count() == 0)
  499. {
  500. MessageUtil.ShowWarning("请选择要向上合并的炉次订单信息!");
  501. return;
  502. }
  503. else
  504. {
  505. foreach (UltraGridRow ugr in chcRows)
  506. {
  507. entityList.Add((PlnSteelforOrdEntity)ugr.ListObject);
  508. }
  509. }
  510. string cic = "";
  511. foreach (UltraGridRow ugr in ultraGrid2.Rows)
  512. {
  513. if (cic.Equals(""))
  514. {
  515. cic = ugr.Cells["Cic"].Value.ToString();
  516. }
  517. if (!cic.Equals(ugr.Cells["Cic"].Value.ToString()))
  518. {
  519. cic += "," + ugr.Cells["Cic"].Value.ToString();
  520. }
  521. }
  522. string[] strArray = cic.Split(',').Distinct().ToArray();
  523. cic = string.Join(",", strArray);
  524. ArrayList jsonList = new ArrayList();
  525. foreach (PlnSteelforOrdEntity entity in entityList)
  526. {
  527. if (!entity.Status.Equals("编制中"))
  528. {
  529. MessageUtil.ShowWarning("只有编制中状态的炉次订单才能合并!");
  530. return;
  531. }
  532. //if (!entity.Surplusflag.Equals("订单材"))
  533. //{
  534. // MessageUtil.ShowWarning("只有订单材的炉次订单才能合并!");
  535. // return;
  536. //}
  537. if (entity.EditWt.ToString().Equals("") || entity.EditWt.ToString().Equals("0"))
  538. {
  539. MessageUtil.ShowWarning("可编辑重量不能为零或为空!");
  540. return;
  541. }
  542. if (entity.Surplusflag.Equals("余材") && entity.SurplusType.Equals("生产超量"))
  543. {
  544. MessageUtil.ShowWarning("该炉(" + entity.Furnaceno + ")是余材并且是生产超量的炉次,不能合并!");
  545. return;
  546. }
  547. //if (countHb != 2)
  548. //{
  549. if (entity.Surplusflag.Equals("余材") && entity.SurplusType.Equals("尾炉加量"))
  550. {
  551. MessageUtil.ShowWarning("该炉(" + entity.Furnaceno + ")存在尾炉加量不能向上合并!");
  552. return;
  553. }
  554. //}
  555. if (!cic.Contains(entity.Cic.ToString()))
  556. {
  557. cic +="," + entity.Cic.ToString();
  558. }
  559. string wt = (double.Parse(entity.EditNum.ToString()) * double.Parse(entity.WeightM.ToString())).ToString("f3");
  560. entity.EditWt = Convert.ToDecimal(wt);
  561. if (!entity.MergeNo.Equals(""))
  562. {
  563. MessageUtil.ShowWarning("选中炉已同定尺同去向合并过,不能炉次合并,请转分切!");
  564. return;
  565. }
  566. jsonList.Add(JSONFormat.Format(entity));
  567. }
  568. strArray = cic.Split(',').Distinct().ToArray();
  569. Array.Sort(strArray);
  570. cic = string.Join(",", strArray);
  571. if (cic.Contains(","))
  572. {
  573. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMerge.getQueryCicAll", new object[] { cic }, ob);
  574. if (dt.Rows.Count <= 0)
  575. {
  576. MessageUtil.ShowTips("不存在索引码" + cic + "交集!");
  577. return;
  578. }
  579. }
  580. if (MessageUtil.ShowYesNoAndQuestion("是否向上合并炉次订单?") == DialogResult.No)
  581. {
  582. return;
  583. }
  584. PlanComm.WaitFromOpen(this.Cursor);
  585. CoreClientParam ccp = new CoreClientParam();
  586. ccp.ServerName = "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMerge";
  587. ccp.MethodName = "doUpdateFurnOrd";
  588. ccp.ServerParams = new object[] { jsonList, furnnacNo2, furnnacNo1, weight1.ToString(), arrString[7].ToString(), arrString[8].ToString(), this.UserInfo.GetUserName(), "1", furnnacSeq2, furnnacSeq1, cic ,countHb.ToString()};
  589. ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  590. PlanComm.WaitFromColse(this.Cursor);
  591. if (ccp.ReturnCode == -1) return;
  592. MessageUtil.ShowTips(ccp.ReturnInfo);
  593. if (ccp.ReturnInfo.Equals("向上合并成功!"))
  594. {
  595. doRefresh();
  596. Flag = true;
  597. }
  598. }
  599. /// <summary>
  600. /// 向下合并ultraGrid2事件
  601. /// </summary>
  602. /// <param name="sender"></param>
  603. /// <param name="e"></param>
  604. private void ultraGrid2_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  605. {
  606. UltraGridRow urg = ultraGrid2.ActiveRow;
  607. ultraGrid2.UpdateData();
  608. if (e.Cell.Column.Key.Equals("EditWt"))
  609. {
  610. if (e.Cell.Row.Cells["EditWt"].Value == null)
  611. {
  612. e.Cell.Row.Cells["EditWt"].Value = "0";
  613. e.Cell.Row.Cells["EditNum"].Value = "0";
  614. }
  615. else
  616. {
  617. string actLen = e.Cell.Row.Cells["EditWt"].Value.ToString();
  618. if (!StringUtil.IsFloat(actLen) || actLen == "0")
  619. {
  620. e.Cell.Row.Cells["EditWt"].Value = "0";
  621. e.Cell.Row.Cells["EditNum"].Value = "0";
  622. }
  623. else
  624. {
  625. //比较输入的重量不能大于原重量
  626. if (double.Parse(actLen) > double.Parse(e.Cell.Row.Cells["TotWeightM"].Value.ToString()))
  627. {
  628. e.Cell.Row.Cells["EditWt"].Value = e.Cell.Row.Cells["TotWeightM"].Value.ToString();
  629. e.Cell.Row.Cells["EditNum"].Value = e.Cell.Row.Cells["TotMumM"].Value.ToString();
  630. }
  631. else
  632. {
  633. e.Cell.Row.Cells["EditNum"].Value = ((int)Math.Ceiling(double.Parse(actLen) / double.Parse(e.Cell.Row.Cells["TotWeightM"].Value.ToString()) * double.Parse(e.Cell.Row.Cells["TotMumM"].Value.ToString()))).ToString();
  634. //e.Cell.Row.Cells["EditWt"].Value = (double.Parse(e.Cell.Row.Cells["EditNum"].Value.ToString()) * double.Parse(e.Cell.Row.Cells["WeightGpOne"].Value.ToString())).ToString("f3");
  635. }
  636. }
  637. }
  638. }
  639. }
  640. /// <summary>
  641. /// 向上合并ultraGrid1事件
  642. /// </summary>
  643. /// <param name="sender"></param>
  644. /// <param name="e"></param>
  645. private void ultraGrid1_CellChange(object sender, CellEventArgs e)
  646. {
  647. UltraGridRow urg = ultraGrid1.ActiveRow;
  648. ultraGrid1.UpdateData();
  649. if (e.Cell.Column.Key.Equals("EditWt"))
  650. {
  651. if (e.Cell.Row.Cells["EditWt"].Value == null)
  652. {
  653. e.Cell.Row.Cells["EditWt"].Value = "0";
  654. e.Cell.Row.Cells["EditNum"].Value = "0";
  655. }
  656. else
  657. {
  658. string actLen = e.Cell.Row.Cells["EditWt"].Value.ToString();
  659. if (!StringUtil.IsFloat(actLen) || actLen == "0")
  660. {
  661. e.Cell.Row.Cells["EditWt"].Value = "0";
  662. e.Cell.Row.Cells["EditNum"].Value = "0";
  663. }
  664. else
  665. {//比较输入的重量不能大于原重量
  666. if (double.Parse(actLen) > double.Parse(e.Cell.Row.Cells["TotWeightM"].Value.ToString()))
  667. {
  668. e.Cell.Row.Cells["EditWt"].Value = e.Cell.Row.Cells["TotWeightM"].Value.ToString();
  669. e.Cell.Row.Cells["EditNum"].Value = e.Cell.Row.Cells["TotMumM"].Value.ToString();
  670. }
  671. else
  672. {
  673. e.Cell.Row.Cells["EditNum"].Value = ((int)Math.Ceiling(double.Parse(actLen)/double.Parse(e.Cell.Row.Cells["TotWeightM"].Value.ToString()) * double.Parse(e.Cell.Row.Cells["TotMumM"].Value.ToString()))).ToString();
  674. //e.Cell.Row.Cells["EditWt"].Value = (double.Parse(e.Cell.Row.Cells["EditNum"].Value.ToString()) * double.Parse(e.Cell.Row.Cells["WeightGpOne"].Value.ToString())).ToString("f3");
  675. }
  676. }
  677. }
  678. }
  679. }
  680. private void ultraGrid2_InitializeRow(object sender, InitializeRowEventArgs e)
  681. {
  682. BaseHelper.ControlCellEdit(e.Row);
  683. }
  684. private void ultraGrid1_InitializeRow(object sender, InitializeRowEventArgs e)
  685. {
  686. BaseHelper.ControlCellEdit(e.Row);
  687. }
  688. /// <summary>
  689. /// 索引码合并
  690. /// </summary>
  691. private void doQueryCicAll()
  692. {
  693. List<string> list1 = new List<string>();
  694. string gradeCode = "";
  695. string cic = "";
  696. List<string> list = new List<string>();
  697. ArrayList arrlist = new ArrayList();
  698. foreach (UltraGridRow ugr2 in ultraGrid2.Rows)
  699. {
  700. gradeCode = ugr2.Cells["GradeName"].Text.ToString();
  701. list.Add(ugr2.Cells["Cic"].Text.ToString());
  702. }
  703. foreach (UltraGridRow ugr1 in ultraGrid1.Rows)
  704. {
  705. list.Add(ugr1.Cells["Cic"].Text.ToString());
  706. }
  707. list = list.Distinct().ToList();
  708. //for (int i = 0; i < list.Count; i++)
  709. //{
  710. foreach (UltraGridRow ugr in ultraGrid2.Rows)
  711. {
  712. if (!cic.Contains(ugr.Cells["Cic"].Text.ToString()))
  713. {
  714. //if (ugr.Cells["Cic"].Text.ToString().Equals(list[i]))
  715. //{
  716. if (!ugr.Cells["ProPlanId"].Text.Equals(""))
  717. {
  718. cic += ugr.Cells["Cic"].Text.ToString()+",";
  719. ArrayList listar = new ArrayList();
  720. list1.Add(ugr.Cells["ProPlanId"].Text.ToString());
  721. listar.Add(ugr.Cells["Cic"].Text.ToString());
  722. listar.Add(ugr.Cells["ProPlanId"].Text.ToString());
  723. listar.Add("1");
  724. listar.Add("工艺评审");
  725. arrlist.Add(listar);
  726. //break;
  727. }
  728. }
  729. }
  730. //}
  731. //}
  732. foreach (UltraGridRow ugr in ultraGrid1.Rows)
  733. {
  734. if (!cic.Contains(ugr.Cells["Cic"].Text.ToString()))
  735. {
  736. if (!ugr.Cells["ProPlanId"].Text.Equals(""))
  737. {
  738. cic += ugr.Cells["Cic"].Text.ToString() + ",";
  739. ArrayList listar = new ArrayList();
  740. list1.Add(ugr.Cells["ProPlanId"].Text.ToString());
  741. listar.Add(ugr.Cells["Cic"].Text.ToString());
  742. listar.Add(ugr.Cells["ProPlanId"].Text.ToString());
  743. listar.Add("1");
  744. listar.Add("工艺评审");
  745. arrlist.Add(listar);
  746. }
  747. }
  748. }
  749. ArrayList listar1 = new ArrayList();
  750. listar1.Add("");
  751. listar1.Add("null");
  752. listar1.Add("0");
  753. listar1.Add("基础数据");
  754. arrlist.Add(listar1);
  755. this.Cursor = Cursors.WaitCursor;
  756. AnalysisNkChemPopupLg popup = new AnalysisNkChemPopupLg(list.ToArray(), gradeCode, this.ob, list1.ToArray(), arrlist);
  757. popup.TopMost = true;
  758. popup.Load += ((a, b) =>
  759. {
  760. this.Cursor = Cursors.Default;
  761. });
  762. popup.Show();
  763. }
  764. }
  765. }