FrmSteelChangeOrderPlan.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. using System.Windows.Forms;
  7. using Core.Mes.Client.Comm.Control;
  8. using Core.Mes.Client.Comm.Tool;
  9. using Core.StlMes.Client.PlnSaleOrd.BaseMethod;
  10. using Core.StlMes.Client.PlnSaleOrd.炼钢计划.entity;
  11. using CoreFS.CA06;
  12. using Infragistics.Win.UltraWinGrid;
  13. using Infragistics.Win.UltraWinToolbars;
  14. namespace Core.StlMes.Client.PlnSaleOrd.炼钢计划
  15. {
  16. public partial class FrmSteelChangeOrderPlan : FrmBase
  17. {
  18. private string _weightPerMeterFormula;
  19. private bool flag1;
  20. private bool flag2;
  21. public FrmSteelChangeOrderPlan()
  22. {
  23. InitializeComponent();
  24. }
  25. public string FurnaceNo { get; set; }
  26. public List<PlnSteelforOrdNewEntity> ListSource
  27. {
  28. get { return plnSteelforOrdNewEntityBindingSource.DataSource as List<PlnSteelforOrdNewEntity>; }
  29. set
  30. {
  31. flag1 = true;
  32. plnSteelforOrdNewEntityBindingSource.DataSource = value;
  33. }
  34. }
  35. public List<PlnOrderCastSEntity> listSource2
  36. {
  37. get { return plnOrderCastSEntityBindingSource.DataSource as List<PlnOrderCastSEntity>; }
  38. set
  39. {
  40. flag2 = true;
  41. plnOrderCastSEntityBindingSource.DataSource = value;
  42. }
  43. }
  44. public List<PlnSteelforfurnaceNewEntity> listSource3
  45. {
  46. get { return plnOrderCastSEntityBindingSource.DataSource as List<PlnSteelforfurnaceNewEntity>; }
  47. set { plnSteelforfurnaceNewEntityBindingSource.DataSource = value; }
  48. }
  49. public string WeightPerMeterFormula
  50. {
  51. get
  52. {
  53. if (string.IsNullOrEmpty(_weightPerMeterFormula))
  54. _weightPerMeterFormula =
  55. SteelHelper.GetData(
  56. "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.GetWeightPerMeterFormula",
  57. null, ob).ToString();
  58. return _weightPerMeterFormula;
  59. }
  60. }
  61. public double? GetPerMeter(string Diameter)
  62. {
  63. double weightPerMeter = 0;
  64. var dt = new DataTable();
  65. if (
  66. double.TryParse(
  67. dt.Compute(WeightPerMeterFormula.Replace("断面", Diameter.Replace("250", "251")), null).ToString(),
  68. out weightPerMeter))
  69. return weightPerMeter;
  70. return null;
  71. }
  72. private void utmMain_ToolClick(object sender, ToolClickEventArgs e)
  73. {
  74. switch (e.Tool.Key)
  75. {
  76. case "Forming": // ButtonTool
  77. object[] para;
  78. var NewJudgeStove = true;
  79. List<string> furnaceno = new List<string>() { FurnaceNo };
  80. if (tabMain.SelectedTab.Index == 0)
  81. {
  82. if (ugStove.ActiveRow == null)
  83. {
  84. MessageUtil.ShowWarning("请选择炉计划!");
  85. return;
  86. }
  87. var row = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity;
  88. using (var FrmSteelChangeOrderDetail = new FrmSteelChangeOrderDetail
  89. {
  90. Furnaceno1 = FurnaceNo,
  91. Furnaceno2 = row.Furnaceno,
  92. ob = ob
  93. })
  94. {
  95. FrmSteelChangeOrderDetail.ShowDialog();
  96. if (FrmSteelChangeOrderDetail.DialogResult != DialogResult.OK) return;
  97. DialogResult = DialogResult.OK;
  98. FrmSteelChangeOrderDetail.Close();
  99. return;
  100. }
  101. }
  102. if (tabMain.SelectedTab.Index == 3)
  103. {
  104. if (ugOrder.ActiveRow == null)
  105. {
  106. MessageUtil.ShowWarning("请需要转入当前炉计划的订单计划!");
  107. return;
  108. }
  109. ugOrder.UpdateData();
  110. int num, cannum;
  111. var row = ugOrder.ActiveRow;
  112. if (!int.TryParse(row.Cells["TotMumM"].Value.ToString(), out cannum))
  113. {
  114. MessageUtil.ShowWarning("选择的订单计划的计划支数不明,无法转入!");
  115. return;
  116. }
  117. if (!int.TryParse(row.Cells["ChangeNum"].Value.ToString(), out num))
  118. {
  119. MessageUtil.ShowWarning("请输入正确的转分切支数!");
  120. return;
  121. }
  122. if (num > cannum)
  123. {
  124. MessageUtil.ShowWarning("输入正确的转分切支数大于当前订单计划的订单数量!");
  125. return;
  126. }
  127. List<PlnSteelforOrdNewEntity> listSource = EntityHelper.GetData<PlnSteelforOrdNewEntity>
  128. ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforOrdEntityByfurnaceno",
  129. new object[] {FurnaceNo}, ob);
  130. if (
  131. listSource.Any(
  132. p =>
  133. (p.GxPlanNo == row.Cells["GxPlanNo"].Value.ToString()) &&
  134. (p.ProPlanId == row.Cells["ProPlanId"].Value.ToString())) &&
  135. (MessageUtil.ShowYesNoAndTips("该订单计划与需转入的订单计划有相同订单编号,是否新生成判断炉号") == DialogResult.No))
  136. NewJudgeStove = false;
  137. para = new object[]
  138. {
  139. "0", row.Cells["Furnaceno"].Value.ToString(), row.Cells["Sequenceno"].Value.ToString(), num,
  140. FurnaceNo, UserInfo.GetUserName(), NewJudgeStove
  141. };
  142. furnaceno.Add(row.Cells["Furnaceno"].Value.ToString());
  143. }
  144. else
  145. {
  146. if (ultraGridCast.ActiveRow == null)
  147. {
  148. MessageUtil.ShowWarning("请需要转入当前炉计划的订单!");
  149. return;
  150. }
  151. ultraGridCast.UpdateData();
  152. int num, cannum;
  153. double Weight;
  154. var row = ultraGridCast.ActiveRow;
  155. if (!int.TryParse(row.Cells["CanNum"].Value.ToString(), out cannum))
  156. {
  157. MessageUtil.ShowWarning("选择的订单的计划可组浇支数不明,无法转入!");
  158. return;
  159. }
  160. if (!int.TryParse(row.Cells["ChangeNum"].Value.ToString(), out num))
  161. {
  162. MessageUtil.ShowWarning("请输入正确的转分切支数!");
  163. return;
  164. }
  165. /* if (!double.TryParse(row.Cells["ChangeWeight"].Value.ToString(), out Weight))
  166. {
  167. MessageUtil.ShowWarning("转分切重量有误!");
  168. return;
  169. }*/
  170. if (num > cannum)
  171. {
  172. MessageUtil.ShowWarning("输入正确的转分切支数大于当前订单的可组浇支数!");
  173. return;
  174. }
  175. List<PlnSteelforOrdNewEntity> listSource = EntityHelper.GetData<PlnSteelforOrdNewEntity>
  176. ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforOrdEntityByfurnaceno",
  177. new object[] {FurnaceNo}, ob);
  178. if (
  179. listSource.Any(
  180. p =>
  181. (p.GxPlanNo == row.Cells["GxPlanNo"].Value.ToString()) &&
  182. (p.ProPlanId == row.Cells["ProPlanId"].Value.ToString())) &&
  183. (MessageUtil.ShowYesNoAndTips("该铸造订单与需转入的订单计划有相同订单编号,是否新生成判断炉号") == DialogResult.No))
  184. NewJudgeStove = false;
  185. para = new object[]
  186. {
  187. "1", row.Cells["ProPlanId"].Value.ToString(), row.Cells["GxPlanNo"].Value.ToString(), num,
  188. FurnaceNo, UserInfo.GetUserName(), NewJudgeStove
  189. };
  190. }
  191. var param =
  192. SteelHelper.SetData(
  193. "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.ChangeOrderPlan", para, ob);
  194. if (param != null)
  195. {
  196. DialogResult = DialogResult.OK;
  197. }
  198. break;
  199. case "Close": // ButtonTool
  200. DialogResult = DialogResult.Cancel;
  201. // Place code here
  202. break;
  203. }
  204. }
  205. private void FrmSteelChangeOrderPlan_Load(object sender, EventArgs e)
  206. {
  207. EntityHelper.ShowGridCaption<PlnSteelforOrdNewEntity>(ugOrder.DisplayLayout.Bands[0]);
  208. BaseHelper.setOtherColumnReadOnly(ugOrder, new[] {"ChangeNum", "ChangeWeight"});
  209. //绑定Valuelist 根据实体类值显示
  210. var list = SteelManagementHelper.GetValuelistLogic();
  211. SteelManagementHelper.SetGridValuelist(ref ugOrder, "IfSurplusAlloted", ref list);
  212. list = SteelManagementHelper.GetStatus();
  213. SteelManagementHelper.SetGridValuelist(ref ugOrder, "Status", ref list);
  214. list = SteelManagementHelper.GetValuelistLogic();
  215. SteelManagementHelper.SetGridValuelist(ref ugOrder, "Surplusflag", ref list);
  216. list = SteelManagementHelper.GetSurplusType();
  217. SteelManagementHelper.SetGridValuelist(ref ugOrder, "SurplusType", ref list);
  218. list = SteelManagementHelper.GetCastingtype();
  219. SteelManagementHelper.SetGridValuelist(ref ugOrder, "Castingtype", ref list);
  220. list = SteelManagementHelper.GetSurplusflag();
  221. SteelManagementHelper.SetGridValuelist(ref ugOrder, "GetSurplusflag", ref list);
  222. GridHelper.RefreshAndAutoSize(ugOrder);
  223. EntityHelper.ShowGridCaption<PlnOrderCastSEntity>(ultraGridCast.DisplayLayout.Bands[0]);
  224. BaseHelper.setOtherColumnReadOnly(ultraGridCast, new[] {"ChangeNum", "ChangeWeight"});
  225. BaseHelper.InitCellPosition(ultraGridCast,
  226. new[]
  227. {
  228. "GxPlanNo", "OrderSeq", "DeliveryNo", "PlanWtS", "PlanNumS", "PlanUsetime", "GxProSeq",
  229. "PlnDivideId", "DiameterLz", "LenGpSingle", "CutNumGp", "CutLoseLen", "LengthLz", "WtCastOne",
  230. "CastNumCalc", "FurnaceNumCalc", "FurnaceWt", "PlanedWt", "PlanedNum", "Finishweight", "FinishNum",
  231. "CastNum", "FurnaceNum", "AddWtBegin", "AddWtEnd", "AddWtAhead", "AddWtNext", "CanWgt", "CanNum",
  232. "GradeSort", "ProcessingCostA", "TotalCostA", "ProcessingCostB", "TotalCostB"
  233. });
  234. BaseHelper.GridColumnSum(ultraGridCast, new[] {"PlanWtS", "CanWgt"});
  235. BaseHelper.GridColumnCount(ultraGridCast, new[] {"PlanNumS", "CanNum"});
  236. BaseHelper.setUltraGridColumnMaxInput(ultraGridCast, new[] {"PlanWtS", "CanWgt"});
  237. BaseHelper.ForbidSort(ultraGridCast);
  238. GridHelper.RefreshAndAutoSize(ultraGridCast);
  239. EntityHelper.ShowGridCaption<PlnSteelforfurnaceNewEntity>(ugStove.DisplayLayout.Bands[0]);
  240. BaseHelper.setOtherColumnReadOnly(ugStove, new[] {"Check"});
  241. //绑定Valuelist 根据实体类值显示
  242. list = SteelManagementHelper.GetValuelistLogic();
  243. SteelManagementHelper.SetGridValuelist(ref ugStove, "IfMonitorLg", ref list);
  244. list = SteelManagementHelper.GetStatus();
  245. SteelManagementHelper.SetGridValuelist(ref ugStove, "Status", ref list);
  246. list = SteelManagementHelper.GetValuelistLogic();
  247. SteelManagementHelper.SetGridValuelist(ref ugStove, "IfConfirm", ref list);
  248. list = SteelManagementHelper.GetBofType();
  249. SteelManagementHelper.SetGridValuelist(ref ugStove, "BofType", ref list);
  250. list = SteelManagementHelper.GetHeatStatus();
  251. SteelManagementHelper.SetGridValuelist(ref ugStove, "HeatState", ref list);
  252. //合并Grid列
  253. BaseHelper.MergedCell(ugStove, new[] {"CastNo", "CastSeq", "Furnaceno"});
  254. GridHelper.RefreshAndAutoSize(ugStove);
  255. }
  256. private void ugOrder_InitializeRow(object sender, InitializeRowEventArgs e)
  257. {
  258. if (flag1)
  259. {
  260. e.Row.Cells["ChangeNum"].Value = 0;
  261. e.Row.Cells["ChangeWeight"].Value =0;
  262. /* try
  263. {
  264. e.Row.Cells["ChangeWeight"].Value = int.Parse(e.Row.Cells["ChangeNum"].Value.ToString()) * double.Parse(e.Row.Cells["WeightM"].Value.ToString());
  265. }
  266. catch (Exception)
  267. {
  268. }*/
  269. }
  270. }
  271. private void ultraGridCast_InitializeRow(object sender, InitializeRowEventArgs e)
  272. {
  273. if (flag2)
  274. {
  275. e.Row.Cells["ChangeNum"].Value = 0;
  276. e.Row.Cells["ChangeWeight"].Value = 0;
  277. /* try
  278. {
  279. var d = (double.Parse(e.Row.Cells["LenGpSingle"].Value.ToString()) *
  280. int.Parse(e.Row.Cells["CutNumGp"].Value.ToString()) + (int.Parse(e.Row.Cells["CutNumGp"].Value.ToString()) - 1) * 10) / 1000 * GetPerMeter(e.Row.Cells["DiameterLz"].Value.ToString());
  281. if (d != null)
  282. e.Row.Cells["ChangeWeight"].Value = (decimal)Math.Round((double)d, 3);
  283. }
  284. catch (Exception)
  285. {
  286. }
  287. */
  288. }
  289. }
  290. private void ugOrder_CellChange(object sender, CellEventArgs e)
  291. {
  292. flag1 = false;
  293. try
  294. {
  295. ugOrder.UpdateData();
  296. if (e.Cell.Column.Key.Equals("ChangeNum"))
  297. if (e.Cell.Value == e.Cell.Row.Cells["TotMumM"])
  298. e.Cell.Row.Cells["ChangeWeight"].Value = e.Cell.Row.Cells["TotWeightM"].Value;
  299. else
  300. e.Cell.Row.Cells["ChangeWeight"].Value = double.Parse(e.Cell.Value.ToString())*
  301. double.Parse(
  302. e.Cell.Row.Cells["WeightM"].Value.ToString());
  303. if (e.Cell.Column.Key.Equals("ChangeWeight"))
  304. if (e.Cell.Value == e.Cell.Row.Cells["TotWeightM"])
  305. e.Cell.Row.Cells["ChangeNum"].Value = e.Cell.Row.Cells["TotMumM"].Value;
  306. else
  307. e.Cell.Row.Cells["ChangeNum"].Value = Math.Ceiling(double.Parse(e.Cell.Value.ToString())/
  308. double.Parse(
  309. e.Cell.Row.Cells["WeightM"].Value
  310. .ToString()));
  311. }
  312. catch (Exception)
  313. {
  314. }
  315. /* ugOrder.UpdateData();
  316. if (string.IsNullOrEmpty(Convert.ToString(e.Cell.Text)))
  317. {
  318. ugOrder.PerformAction(UltraGridAction.ExitEditMode);
  319. ugOrder.PerformAction(UltraGridAction.EnterEditMode);
  320. }
  321. if (ugOrder.ActiveRow != null)
  322. {
  323. try
  324. {
  325. ugOrder.ActiveRow.Cells["ChangeWeight"].Value = int.Parse(ugOrder.ActiveRow.Cells["ChangeNum"].Value.ToString()) * double.Parse(ugOrder.ActiveRow.Cells["WeightM"].Value.ToString());
  326. }
  327. catch (Exception)
  328. {
  329. }
  330. }
  331. ugOrder.Refresh();*/
  332. }
  333. private void ultraGridCast_CellChange(object sender, CellEventArgs e)
  334. {
  335. flag2 = false;
  336. try
  337. {
  338. ultraGridCast.UpdateData();
  339. if (e.Cell.Column.Key.Equals("ChangeNum"))
  340. if (e.Cell.Value == e.Cell.Row.Cells["CanNum"])
  341. e.Cell.Row.Cells["ChangeWeight"].Value = e.Cell.Row.Cells["CanWgt"].Value;
  342. else
  343. e.Cell.Row.Cells["ChangeWeight"].Value = double.Parse(e.Cell.Value.ToString())*
  344. double.Parse(
  345. e.Cell.Row.Cells["WtCastOne"].Value.ToString());
  346. if (e.Cell.Column.Key.Equals("ChangeWeight"))
  347. if (e.Cell.Value == e.Cell.Row.Cells["CanWgt"])
  348. e.Cell.Row.Cells["ChangeNum"].Value = e.Cell.Row.Cells["CanNum"].Value;
  349. else
  350. e.Cell.Row.Cells["ChangeNum"].Value = Math.Ceiling(double.Parse(e.Cell.Value.ToString())/
  351. double.Parse(
  352. e.Cell.Row.Cells["WtCastOne"].Value
  353. .ToString()));
  354. }
  355. catch (Exception)
  356. {
  357. }
  358. /* ultraGridCast.UpdateData();
  359. if (string.IsNullOrEmpty(Convert.ToString(e.Cell.Text)))
  360. {
  361. ultraGridCast.PerformAction(UltraGridAction.ExitEditMode);
  362. ultraGridCast.PerformAction(UltraGridAction.EnterEditMode);
  363. }
  364. if (ultraGridCast.ActiveRow != null)
  365. {
  366. try
  367. {
  368. var d = (double.Parse(ultraGridCast.ActiveRow.Cells["LenGpSingle"].Value.ToString()) *
  369. int.Parse(ultraGridCast.ActiveRow.Cells["CutNumGp"].Value.ToString()) + (int.Parse(ultraGridCast.ActiveRow.Cells["CutNumGp"].Value.ToString()) - 1) * 10) / 1000 * GetPerMeter(ultraGridCast.ActiveRow.Cells["DiameterLz"].Value.ToString());
  370. if (d != null)
  371. ultraGridCast.ActiveRow.Cells["ChangeWeight"].Value = (decimal)Math.Round((double)d, 3);
  372. }
  373. catch (Exception)
  374. {
  375. }
  376. }
  377. ultraGridCast.Refresh();*/
  378. }
  379. }
  380. }