ucNewResBase.cs 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Drawing;
  6. using System.Data;
  7. using System.Globalization;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Runtime.Serialization;
  11. using System.Runtime.Serialization.Formatters.Binary;
  12. using System.Text;
  13. using System.Windows.Forms;
  14. using Core.Mes.Client.Comm.Server;
  15. using Core.Mes.Client.Comm.Tool;
  16. using Core.StlMes.Client.LgClassModel;
  17. using CoreFS.CA06;
  18. using Infragistics.Win;
  19. using Infragistics.Win.UltraWinGrid;
  20. using Core.StlMes.Client.LgCommon;
  21. namespace Core.StlMes.Client.PnCost
  22. {
  23. /// <summary>
  24. /// 实绩管理响应炉号选中事件
  25. /// </summary>
  26. public delegate void OperationOver();
  27. public delegate void OperationBegin();
  28. public partial class ucNewResBase : UserControl
  29. {
  30. public ucNewResBase()
  31. {
  32. InitializeComponent();
  33. ClsControlPack.SetUltraGridStyle(ugData, 1);
  34. }
  35. public event OperationOver OperationOver;
  36. public event OperationBegin OperationBegin;
  37. public bool bOperationOver;
  38. // protected OpeBase Ob;
  39. protected string _operator = "";
  40. protected string _shiftCode = "";
  41. protected string _stove = "";
  42. protected string _station = "";
  43. protected LG_PROCESS _process;
  44. private List<bool> allowSave = new List<bool>() { true, true, true, true }; //是否允许修改实绩
  45. public bool AllowSave
  46. {
  47. get { return allowSave.All(p=>p); }
  48. }
  49. private object _htValueInitial = null; //初始值
  50. private Hashtable _htValueChanged = null; //修改后的值
  51. private Hashtable _htDatatypeChanged = null; //修改字段数据类型
  52. private Hashtable _htCaptionChanged = null; //修改字段中文名
  53. //public void SetBase(OpeBase ob, string Operator, string ShifCode, LG_PROCESS Process)
  54. //{
  55. // Ob = ob;
  56. // _operator = Operator;
  57. // _shiftCode = ShifCode;
  58. // _process = Process;
  59. //}
  60. /// <summary>
  61. /// 初始值
  62. /// </summary>
  63. public object htValueInitial
  64. {
  65. get { return _htValueInitial; }
  66. }
  67. /// <summary>
  68. /// 值发生变化列表
  69. /// </summary>
  70. public Hashtable htValueChanged
  71. {
  72. get
  73. {
  74. ugData.UpdateData();
  75. return _htValueChanged;
  76. }
  77. }
  78. /// <summary>
  79. /// 修改字段数据类型
  80. /// </summary>
  81. public Hashtable htDatatypeChanged
  82. {
  83. get
  84. {
  85. ugData.UpdateData();
  86. return _htDatatypeChanged;
  87. }
  88. }
  89. /// <summary>
  90. /// 值发生变化的字段名
  91. /// </summary>
  92. public Hashtable htCaptionChanged
  93. {
  94. get
  95. {
  96. ugData.UpdateData();
  97. return _htCaptionChanged;
  98. }
  99. }
  100. /// <summary>
  101. /// 有值发生变化
  102. /// </summary>
  103. public bool HasChanged
  104. {
  105. get
  106. {
  107. ugData.UpdateData();
  108. return (_htValueChanged != null && _htValueChanged.Count > 0);
  109. }
  110. }
  111. protected override void OnLoad(EventArgs e)
  112. {
  113. base.OnLoad(e);
  114. // SetControlDelegate();
  115. InitValuelist();
  116. ResetData();
  117. }
  118. protected virtual void InitValuelist()
  119. {
  120. try
  121. {
  122. if (ClsControlPack.GridContainsColumn(ugData, "SHIFTCODE"))
  123. {
  124. ValueList vlist = ClsBusinessPack.GetValuelistShift();
  125. ClsControlPack.SetGridValuelist(ref ugData, "SHIFTCODE", ref vlist);
  126. }
  127. if (ClsControlPack.GridContainsColumn(ugData, "POTDISTINCTION"))
  128. {
  129. ValueList vlist1 = ClsBusinessPack.GetValuelistPotLevel();
  130. ClsControlPack.SetGridValuelist(ref ugData, "POTDISTINCTION", ref vlist1);
  131. }
  132. if (ClsControlPack.GridContainsColumn(ugData, "POTWRAPSTATE"))
  133. {
  134. ValueList vlist2 = ClsBusinessPack.GetValuelistPotStatus();
  135. ClsControlPack.SetGridValuelist(ref ugData, "POTWRAPSTATE", ref vlist2);
  136. }
  137. if (ClsControlPack.GridContainsColumn(ugData, "BILLETSECTION"))
  138. {
  139. ValueList vlist3 = ClsBusinessPack.GetValuelistBilletSection();
  140. ClsControlPack.SetGridValuelist(ref ugData, "BILLETSECTION", ref vlist3);
  141. }
  142. if (ClsControlPack.GridContainsColumn(ugData, "MOLIRNTYPE"))
  143. {
  144. ValueList vlist3 = ClsBusinessPack.GetValuelistIronSourceForBOF();
  145. ClsControlPack.SetGridValuelist(ref ugData, "MOLIRNTYPE", ref vlist3);
  146. }
  147. }
  148. catch { }
  149. }
  150. public void SetValuelistSteel(OpeBase ob)
  151. {
  152. try
  153. {
  154. ValueList vlist = ClsBusinessPack.GetValuelistSteel(ob);
  155. ClsControlPack.SetGridValuelist(ref ugData, "GRADECODE", ref vlist);
  156. }
  157. catch { }
  158. }
  159. private void ugData_CellDataError(object sender, CellDataErrorEventArgs e)
  160. {
  161. e.RestoreOriginalValue = true;
  162. e.RaiseErrorEvent = false;
  163. }
  164. private void ugData_KeyPress(object sender, KeyPressEventArgs e)
  165. {
  166. if(this.ugData.ActiveCell==null) return;
  167. string strKey = this.ugData.ActiveCell.Column.ToString();
  168. if (strKey == "POTNO" || strKey == "POTAGE")
  169. {
  170. if (!(Char.IsNumber(e.KeyChar) && ugData.ActiveRow.Cells[strKey].Value.ToString().Length <= 3) && e.KeyChar != '\b')
  171. {
  172. e.Handled = true;
  173. }
  174. }
  175. if (strKey == "OGGNUMID" || strKey == "GAGE" || strKey == "SAGE" ||
  176. strKey == "BLOWO2TIMES" || strKey == "EMOLSTLTIME" || strKey == "IRONPOTID")
  177. {
  178. if (!(Char.IsNumber(e.KeyChar) && ugData.ActiveRow.Cells[strKey].Value.ToString().Length <= 6) && e.KeyChar != '\b')
  179. {
  180. e.Handled = true;
  181. }
  182. }
  183. if (strKey == "RSSTOVENO")
  184. {
  185. if (!(Char.IsNumber(e.KeyChar) && ugData.ActiveRow.Cells[strKey].Value.ToString().Length <= 8) && e.KeyChar != '\b')
  186. {
  187. e.Handled = true;
  188. }
  189. }
  190. if (strKey == "IRONPOTWGT" || strKey == "IRONTEMPERATURE" || strKey == "WSTEELWGT" ||
  191. strKey == "PIGIRONWGT" || strKey == "O2CONSUME" || strKey == "TOPN2CONSUME" ||
  192. strKey == "TERMINUSC" || strKey == "TERMINUSO2" || strKey == "TERMINUSTEPT" ||
  193. strKey == "RSWGT")
  194. {
  195. if (!(e.KeyChar == '\b') && ugData.ActiveRow.Cells[strKey].Value.ToString().Length >= 6)
  196. {
  197. e.Handled = true;
  198. }
  199. if (!(Char.IsNumber(e.KeyChar) || e.KeyChar == '\b' || e.KeyChar == '.'))
  200. {
  201. e.Handled = true;
  202. }
  203. if (e.KeyChar == '.')
  204. {
  205. char[] arrary = ugData.ActiveRow.Cells[strKey].Text.ToCharArray();
  206. if (arrary.Length == 0)
  207. {
  208. ugData.ActiveRow.Cells[strKey].Value = "0.";
  209. ugData.ActiveRow.Cells[strKey].SelStart = ugData.ActiveRow.Cells[strKey].Value.ToString().Length;
  210. e.Handled = true;
  211. }
  212. else
  213. {
  214. for (int i = 0; i < arrary.Length; i++)
  215. {
  216. if (arrary[i] == '.')
  217. e.Handled = true;
  218. }
  219. }
  220. }
  221. }
  222. if (strKey == "MEMO")
  223. {
  224. char[] arrary = ugData.ActiveRow.Cells[strKey].Text.ToCharArray();
  225. if (!(e.KeyChar == '\b') && arrary.Length >= 40)
  226. {
  227. // MessageBox.Show("生产记事不能超过40个字!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  228. e.Handled = true;
  229. }
  230. }
  231. if (strKey == "PROTECTDTEG")
  232. {
  233. char[] arrary = ugData.ActiveRow.Cells[strKey].Text.ToCharArray();
  234. if (!(e.KeyChar == '\b') && arrary.Length >= 10)
  235. {
  236. // MessageBox.Show("保护渣名称不能超过10个字!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  237. e.Handled = true;
  238. }
  239. }
  240. }
  241. protected virtual void ugData_ClickCellButton(object sender, CellEventArgs e)
  242. {
  243. try
  244. {
  245. if (e.Cell.Column.DataType == typeof(DateTime) || e.Cell.Column.DataType == typeof(DateTime?) )
  246. {
  247. ///* frmSetTime frm = new frmSetTime(e.Cell.Value);
  248. // frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size);
  249. // if (frm.ShowDialog() == DialogResult.OK)
  250. // {
  251. // e.Cell.Value = frm.SelectDate;
  252. // ugData.UpdateData();
  253. // }*/
  254. // //e.Cell.Value = DateTime.Now;
  255. // DateTime dataValue = ClsBusinessPack.GetServerDateTime(Ob);
  256. // if (ugData.Rows[0].Cells.Exists("OPTDATE"))
  257. // {
  258. // var vaule = ugData.Rows[0].Cells["OPTDATE"].Value;
  259. // DateTime? OpdateDate = null;
  260. // if (vaule != null)
  261. // {
  262. // OpdateDate = (DateTime?) vaule;
  263. // }
  264. // if (OpdateDate != null)
  265. // {
  266. // dataValue =
  267. // DateTime.ParseExact(
  268. // ((DateTime) OpdateDate).ToString("yyyy-MM-dd ") + dataValue.ToString("HH:mm:ss"),
  269. // "yyyy-MM-dd HH:mm:ss", null);
  270. // }
  271. // }
  272. // e.Cell.Value = dataValue;
  273. }
  274. else if (e.Cell.Column.DataType == typeof(Decimal) || e.Cell.Column.DataType == typeof(Decimal?))
  275. {
  276. frmInputDecimal frm = new frmInputDecimal(Convert.ToString(e.Cell.Text));
  277. frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size);
  278. if (frm.ShowDialog() == DialogResult.OK)
  279. {
  280. if (!frm.ValueChanged) return;
  281. e.Cell.Value = frm.Value;
  282. ugData.UpdateData();
  283. }
  284. }
  285. else if (e.Cell.Column.Key.Equals("Potno", StringComparison.OrdinalIgnoreCase) || e.Cell.Column.Key.Equals("Vacgrooveid", StringComparison.OrdinalIgnoreCase)
  286. ||e.Cell.Column.Key.Equals("Basketetno1", StringComparison.OrdinalIgnoreCase)
  287. ||e.Cell.Column.Key.Equals("Basketetno2", StringComparison.OrdinalIgnoreCase)
  288. ||e.Cell.Column.Key.Equals("Basketetno3", StringComparison.OrdinalIgnoreCase)
  289. || e.Cell.Column.Key.Equals("Basketetno4", StringComparison.OrdinalIgnoreCase)
  290. || e.Cell.Column.Key.Equals("BasketetNum", StringComparison.OrdinalIgnoreCase)
  291. || e.Cell.Column.Key.Equals("PotNum", StringComparison.OrdinalIgnoreCase)
  292. || e.Cell.Column.Key.Equals("Pot1Wgt", StringComparison.OrdinalIgnoreCase)
  293. || e.Cell.Column.Key.Equals("Pot2Wgt", StringComparison.OrdinalIgnoreCase)
  294. || e.Cell.Column.Key.Equals("Pot3Wgt", StringComparison.OrdinalIgnoreCase)
  295. )
  296. {
  297. frmHeatNoEditor frm = new frmHeatNoEditor();
  298. frm.InputText = Convert.ToString(e.Cell.Text);
  299. frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size);
  300. if (frm.ShowDialog() == DialogResult.OK)
  301. {
  302. e.Cell.Value = frm.InputText;
  303. ugData.UpdateData();
  304. }
  305. }
  306. }
  307. catch { }
  308. }
  309. protected virtual void ugData_CellChange(object sender, CellEventArgs e)
  310. {
  311. try
  312. {
  313. if (!e.Cell.Column.Hidden && e.Cell.Column.CellActivation == Activation.AllowEdit)
  314. {
  315. if (e.Cell.Column.DataType == typeof(DateTime) ||
  316. e.Cell.Column.DataType == typeof(DateTime?) && Convert.ToString(e.Cell.Text).Contains("_"))
  317. {
  318. return;
  319. }
  320. ugData.UpdateData();
  321. if (e.Cell.Column.Key.ToUpper() == "REPOSEBEGINTIME" && ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value != null)
  322. {
  323. /* DateTime now = ClsBusinessPack.GetServerDateTime(Ob);
  324. DateTime dt1 = (DateTime)ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value;
  325. if (dt1.Hour >= 20 && now.Hour <= 9)
  326. {
  327. now= now.AddDays(-1);
  328. ugData.Rows[0].Cells["OPTDATE"].Value = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second);
  329. ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value = new DateTime(now.Year, now.Month, now.Day, dt1.Hour, dt1.Minute, dt1.Second);
  330. }*/
  331. }
  332. if (e.Cell.Column.Key.ToUpper() == "OPTDATE")
  333. {
  334. try
  335. {
  336. if (ugData.Rows[0].Cells.Exists("REPOSEBEGINTIME") &&
  337. ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value != null)
  338. {
  339. DateTime opdt = (DateTime) ugData.Rows[0].Cells["OPTDATE"].Value;
  340. DateTime dt1 = (DateTime)ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value;
  341. ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value = new DateTime(opdt.Year,opdt.Month,opdt.Day, dt1.Hour,dt1.Minute,dt1.Second);
  342. }
  343. }
  344. catch (Exception)
  345. {
  346. }
  347. try
  348. {
  349. if (ugData.Rows[0].Cells.Exists("REPOSEENDTIME") &&
  350. ugData.Rows[0].Cells["REPOSEENDTIME"].Value != null)
  351. {
  352. DateTime opdt = (DateTime)ugData.Rows[0].Cells["OPTDATE"].Value;
  353. DateTime dt1 = (DateTime)ugData.Rows[0].Cells["REPOSEENDTIME"].Value;
  354. ugData.Rows[0].Cells["REPOSEENDTIME"].Value = new DateTime(opdt.Year, opdt.Month, opdt.Day, dt1.Hour, dt1.Minute, dt1.Second);
  355. }
  356. }
  357. catch (Exception)
  358. {
  359. }
  360. ugData.UpdateData();
  361. }
  362. /* try
  363. {
  364. if (ugData.Rows[0].Cells.Exists("REPOSEBEGINTIME") &&
  365. ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value != null && ugData.Rows[0].Cells.Exists("REPOSEENDTIME") &&
  366. ugData.Rows[0].Cells["REPOSEENDTIME"].Value != null)
  367. {
  368. DateTime dt1 = (DateTime)ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value;
  369. DateTime dt2 = (DateTime)ugData.Rows[0].Cells["REPOSEENDTIME"].Value;
  370. if (DateTime.Compare(dt1, dt2) > 0) dt2= dt2.AddDays(1);
  371. ugData.Rows[0].Cells["REPOSEENDTIME"].Value = dt2;
  372. ugData.UpdateData();
  373. }
  374. }
  375. catch (Exception)
  376. {
  377. }*/
  378. if (string.IsNullOrEmpty(Convert.ToString(e.Cell.Text)))
  379. {
  380. ugData.PerformAction(UltraGridAction.ExitEditMode);
  381. ugData.PerformAction(UltraGridAction.EnterEditMode);
  382. }
  383. }
  384. }
  385. catch { }
  386. }
  387. protected virtual void ugData_KeyDown(object sender, KeyEventArgs e)
  388. {
  389. try
  390. {
  391. UltraGridCell cell = ugData.ActiveCell;
  392. if (e.KeyCode != Keys.Enter || cell.Column.CellActivation != Activation.AllowEdit) return;
  393. ugData.UpdateData();
  394. }
  395. catch { }
  396. }
  397. protected virtual void ugData_CellListSelect(object sender, CellEventArgs e)
  398. {
  399. try
  400. {
  401. if (!e.Cell.Column.Hidden && e.Cell.Column.CellActivation == Activation.AllowEdit)
  402. ugData.UpdateData();
  403. }
  404. catch { }
  405. }
  406. protected void SetUltraGridActiveCell(string ColumnName)
  407. {
  408. try
  409. {
  410. if (ugData.Rows.Count > 0)
  411. {
  412. ugData.Rows[0].Cells[ColumnName].Activated = true;
  413. ugData.PerformAction(UltraGridAction.EnterEditMode);
  414. }
  415. }
  416. catch { }
  417. }
  418. public virtual void ResetData()
  419. {
  420. this.Refresh();
  421. //DatabindingSource.Clear();
  422. //try
  423. //{
  424. // //string strKey = "";
  425. // //object Value = null;
  426. // //for (int i = 0; i < ugData.DisplayLayout.Bands[0].Columns.Count; i++)
  427. // //{
  428. // // try
  429. // // {
  430. // // ugData.Rows[0].Cells[strKey].Appearance.ResetBackColor();
  431. // // }
  432. // // catch { }
  433. // //}
  434. //}
  435. //catch { }
  436. //finally
  437. //{
  438. // if (_htValueChanged != null) _htValueChanged.Clear();
  439. // if (_htDatatypeChanged != null) _htDatatypeChanged.Clear();
  440. // if (_htCaptionChanged != null) _htCaptionChanged.Clear();
  441. //}
  442. }
  443. public virtual void SetData(List<object> ar)
  444. {
  445. try
  446. {
  447. for (int i = 0; i < allowSave.Count; i++)
  448. {
  449. allowSave[i] = true;
  450. }
  451. if (ar == null || ar.Count == 0)
  452. {
  453. ResetData();
  454. return;
  455. }
  456. string strKey = "";
  457. _htValueInitial = Clone(ar[0]); //.Clone();
  458. ClsControlPack.SaftRefreshUI(ugData, () =>
  459. {
  460. DatabindingSource.DataSource = ar;
  461. });
  462. //for (int i = 0; i < ugData.DisplayLayout.Bands[0].Columns.Count; i++)
  463. //{
  464. //strKey = this.ugData.DisplayLayout.Bands[0].Columns[i].Key;
  465. //try
  466. //{
  467. // if (!_htValueInitial.Contains(strKey)) _htValueInitial.Add(strKey, "");
  468. // if (ar[0].GetType().GetProperties() .Contains(strKey))
  469. // {
  470. // Value = ar[strKey];
  471. // if (strKey == "FACT_ROUTE")
  472. // Value = ClsBusinessPack.analysPath(Convert.ToString(Value));
  473. // if (strKey == "OPTDATE")
  474. // Value = Convert.ToDateTime(Value).ToString("yyyy-MM-dd HH:mm:ss");
  475. // if (strKey == "SUPPLYOXYGENTIME")
  476. // {
  477. // if (Value != "")
  478. // {
  479. // TimeSpan ts = new TimeSpan(0, 0, Convert.ToInt32(Value));
  480. // string tsMin = ts.Minutes.ToString();
  481. // string tsSen = ts.Seconds.ToString();
  482. // Value = tsMin + "′" + tsSen + "″";
  483. // }
  484. // else
  485. // {
  486. // Value =ClsDataAccessPack.GetTimeSpan(Convert.ToDateTime(ar["OPENOXYGENTIME"]), Convert.ToDateTime(ar["STOPOXYGENTIME"]));
  487. // }
  488. // }
  489. // ugData.Rows[0].Cells[i].Value = Value;
  490. // }
  491. // else
  492. // {
  493. // ugData.Rows[0].Cells[i].Value = DBNull.Value;
  494. // }
  495. //}
  496. //catch { }
  497. // try
  498. // {
  499. // ugData.Rows[0].Cells[strKey].Appearance.ResetBackColor();
  500. // }
  501. // catch { }
  502. //}
  503. try
  504. {
  505. if (_htValueChanged != null)
  506. {
  507. _htValueChanged.Clear();
  508. foreach (var VARIABLE in ugData.Rows[0].Cells)
  509. {
  510. VARIABLE.Appearance.ResetBackColor();
  511. }
  512. }
  513. if (_htDatatypeChanged != null) _htDatatypeChanged.Clear();
  514. if (_htCaptionChanged != null) _htCaptionChanged.Clear();
  515. }
  516. catch { }
  517. }
  518. catch { }
  519. }
  520. private object Clone(object ob)
  521. {
  522. using (MemoryStream ms = new MemoryStream(1000))
  523. {
  524. object CloneObject;
  525. BinaryFormatter bf = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
  526. bf.Serialize(ms, ob);
  527. ms.Seek(0, SeekOrigin.Begin);
  528. // 反序列化至另一个对象(即创建了一个原对象的深表副本)
  529. CloneObject = bf.Deserialize(ms);
  530. // 关闭流
  531. ms.Close();
  532. return CloneObject;
  533. }
  534. }
  535. protected void InitHashtable(ref Hashtable htbl)
  536. {
  537. if (htbl == null) htbl = new Hashtable();
  538. }
  539. protected virtual void Refresh()
  540. {
  541. }
  542. // public bool saveDate()
  543. // {
  544. // if (!(_htValueChanged != null && _htValueChanged.Count > 0)) return true;
  545. // if (ugData.Rows[0].Cells.Exists("MOULDBALEWGT") && ugData.Rows[0].Cells["MOULDBALEWGT"].Value == null &&
  546. // ugData.Rows[0].Cells.Exists("BALELEAVETIME") &&
  547. // ugData.Rows[0].Cells["BALELEAVETIME"].Value != null)
  548. // {
  549. // MessageBox.Show(@"请维护钢水量");
  550. // return false;
  551. // }
  552. // else
  553. // {
  554. // if (ugData.Rows[0].Cells.Exists("MOULDBALEWGT") && ugData.Rows[0].Cells["MOULDBALEWGT"].Value != null &&
  555. // double.Parse(ugData.Rows[0].Cells["MOULDBALEWGT"].Value.ToString()) > 160)
  556. // {
  557. // MessageBox.Show(@"钢水量不能超过160吨");
  558. // return false;
  559. // }
  560. // }
  561. // if (ugData.Rows[0].Cells.Exists("TAPPINGWGT") && ugData.Rows[0].Cells["TAPPINGWGT"].Value == null &&
  562. //ugData.Rows[0].Cells.Exists("REPOSEENDTIME") &&
  563. //ugData.Rows[0].Cells["REPOSEENDTIME"].Value != null)
  564. // {
  565. // MessageBox.Show(@"请维护出钢量");
  566. // return false;
  567. // }
  568. // if (ugData.Rows[0].Cells.Exists("REPOSEBEGINTIME") && !ugData.DisplayLayout.Bands[0].Columns["REPOSEBEGINTIME"].Hidden && ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value == null)
  569. // {
  570. // if (MessageBox.Show(@"没有处理开始时间,是否删除该实绩", @"提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  571. // try
  572. // {
  573. // //ServerHelper.SetData("Core.LgMes.Server.LgDeviceManager.PerformanceManage.DeletePerformance", new object[] { _process, _stove }, Ob);
  574. // Refresh();
  575. // return true;
  576. // }
  577. // catch (Exception ex)
  578. // {
  579. // return false;
  580. // }
  581. // return false;
  582. // }
  583. // if (ugData.Rows[0].Cells.Exists("BALEPFTIME") && !ugData.DisplayLayout.Bands[0].Columns["BALEPFTIME"].Hidden && ugData.Rows[0].Cells["BALEPFTIME"].Value == null)
  584. // {
  585. // if (MessageBox.Show(@"没有到站时间,是否删除该实绩", @"提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  586. // try
  587. // {
  588. // ServerHelper.SetData("Core.LgMes.Server.LgDeviceManager.PerformanceManage.DeletePerformance", new object[] { _process, _stove }, Ob);
  589. // Refresh();
  590. // return true;
  591. // }
  592. // catch (Exception ex)
  593. // {
  594. // return false;
  595. // }
  596. // return false;
  597. // }
  598. // DateTime dataValue = ClsBusinessPack.GetServerDateTime(Ob);
  599. // if (ugData.Rows[0].Cells.Exists("REPOSEBEGINTIME") && !ugData.DisplayLayout.Bands[0].Columns["REPOSEBEGINTIME"].Hidden && ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value != null)
  600. // {
  601. // DateTime dt1 = DateTime.Parse(ugData.Rows[0].Cells["REPOSEBEGINTIME"].Value.ToString2());
  602. // if (dt1.Year != dataValue.Year)
  603. // {
  604. // if (
  605. // MessageBox.Show("处理开始时间的年份与当前系统时间年份不一致,是否继续保存数据", @"提示", MessageBoxButtons.YesNo,
  606. // MessageBoxIcon.Question) != DialogResult.Yes)
  607. // return false;
  608. // }
  609. // else
  610. // {
  611. // TimeSpan d3 = dataValue.Subtract(dt1);
  612. // if (d3.Days > 1 || d3.Days < -1)
  613. // {
  614. // if (
  615. // MessageBox.Show("处理开始时间与当前时间相差" + Math.Abs(d3.Days) + "天,是否继续保存数据", @"提示", MessageBoxButtons.YesNo,
  616. // MessageBoxIcon.Question) != DialogResult.Yes)
  617. // return false;
  618. // }
  619. // }
  620. // }
  621. // if (ugData.Rows[0].Cells.Exists("REPOSEENDTIME") && !ugData.DisplayLayout.Bands[0].Columns["REPOSEENDTIME"].Hidden && ugData.Rows[0].Cells["REPOSEENDTIME"].Value != null)
  622. // {
  623. // DateTime dt1 = DateTime.Parse(ugData.Rows[0].Cells["REPOSEENDTIME"].Value.ToString2());
  624. // if (dt1.Year != dataValue.Year)
  625. // {
  626. // if (
  627. // MessageBox.Show("处理结束时间的年份与当前系统时间年份不一致,是否继续保存数据", @"提示", MessageBoxButtons.YesNo,
  628. // MessageBoxIcon.Question) != DialogResult.Yes)
  629. // return false;
  630. // }
  631. // else
  632. // {
  633. // TimeSpan d3 = dataValue.Subtract(dt1);
  634. // if (d3.Days > 1 || d3.Days < -1)
  635. // {
  636. // if (
  637. // MessageBox.Show("处理结束时间与当前时间相差" + Math.Abs(d3.Days) + "天,是否继续保存数据", @"提示", MessageBoxButtons.YesNo,
  638. // MessageBoxIcon.Question) != DialogResult.Yes)
  639. // return false;
  640. // }
  641. // }
  642. // }
  643. // if (ugData.Rows[0].Cells.Exists("BALESTARTTIME") && !ugData.DisplayLayout.Bands[0].Columns["BALESTARTTIME"].Hidden && ugData.Rows[0].Cells["BALESTARTTIME"].Value != null)
  644. // {
  645. // DateTime dt1 = DateTime.Parse(ugData.Rows[0].Cells["BALESTARTTIME"].Value.ToString2());
  646. // if (dt1.Year != dataValue.Year)
  647. // {
  648. // if (
  649. // MessageBox.Show("大包开浇时间的年份与当前系统时间年份不一致,是否继续保存数据", @"提示", MessageBoxButtons.YesNo,
  650. // MessageBoxIcon.Question) != DialogResult.Yes)
  651. // return false;
  652. // }
  653. // else
  654. // {
  655. // TimeSpan d3 = dataValue.Subtract(dt1);
  656. // if (d3.Days > 1 || d3.Days < -1)
  657. // {
  658. // if (
  659. // MessageBox.Show("大包开浇时间与当前时间相差" + Math.Abs(d3.Days) + "天,是否继续保存数据", @"提示", MessageBoxButtons.YesNo,
  660. // MessageBoxIcon.Question) != DialogResult.Yes)
  661. // return false;
  662. // }
  663. // }
  664. // }
  665. // if (ugData.Rows[0].Cells.Exists("BALELEAVETIME") && !ugData.DisplayLayout.Bands[0].Columns["BALELEAVETIME"].Hidden && ugData.Rows[0].Cells["BALELEAVETIME"].Value != null)
  666. // {
  667. // DateTime dt1 = DateTime.Parse(ugData.Rows[0].Cells["BALELEAVETIME"].Value.ToString2());
  668. // if (dt1.Year != dataValue.Year)
  669. // {
  670. // if (
  671. // MessageBox.Show("大包停浇时间的年份与当前系统时间年份不一致,是否继续保存数据", @"提示", MessageBoxButtons.YesNo,
  672. // MessageBoxIcon.Question) != DialogResult.Yes)
  673. // return false;
  674. // }
  675. // else
  676. // {
  677. // TimeSpan d3 = dataValue.Subtract(dt1);
  678. // if (d3.Days > 1 || d3.Days < -1)
  679. // {
  680. // if (
  681. // MessageBox.Show("大包停浇时间与当前时间相差" + Math.Abs(d3.Days) + "天,是否继续保存数据", @"提示", MessageBoxButtons.YesNo,
  682. // MessageBoxIcon.Question) != DialogResult.Yes)
  683. // return false;
  684. // }
  685. // }
  686. // }
  687. // var Args =
  688. // new List<object> { _process, _stove, _station, "01" }.Concat(GetDataChanged())
  689. // .ToArray();
  690. // int iRet = 0;
  691. // string strMsg = "";
  692. // try
  693. // {
  694. // ServerHelper.SetData("Core.LgMes.Server.LgDeviceManager.PerformanceManage.SavePerformance", Args, Ob);
  695. // Refresh();
  696. // return true;
  697. // }
  698. // catch (Exception ex)
  699. // {
  700. // return false;
  701. // }
  702. // }
  703. public List<object> GetDataChanged()
  704. {
  705. List<string> alColumns = new DataSourceList<string>();
  706. List<string> alDataTypes = new DataSourceList<string>();
  707. List<string> alValueCur = new DataSourceList<string>();
  708. List<string> alValuePre = new DataSourceList<string>();
  709. List<string> alChinese = new DataSourceList<string>();
  710. try
  711. {
  712. var keys = new ArrayList();
  713. if ((htValueChanged != null) && (htValueChanged.Count > 0))
  714. keys = new ArrayList(htValueChanged.Keys);
  715. object valueCur = null;
  716. foreach (var t1 in keys)
  717. {
  718. var strKey = Convert.ToString(t1);
  719. var datatype = (Type) htDatatypeChanged[strKey];
  720. var strChinese = Convert.ToString(htCaptionChanged[strKey]);
  721. if (htValueChanged != null) valueCur = htValueChanged[strKey];
  722. object valuePre = DBNull.Value;
  723. var vaule = htValueInitial.GetType().GetProperties().Where(p => p.Name.ToUpper() == strKey).ToList();
  724. if (vaule.Any())
  725. {
  726. var firstOrDefault = vaule.FirstOrDefault();
  727. if (firstOrDefault != null)
  728. valuePre = firstOrDefault.GetValue(htValueInitial, null);
  729. }
  730. var strValueCur = "";
  731. if (valueCur == DBNull.Value || valueCur==null)
  732. strValueCur = "";
  733. else
  734. {
  735. if (valueCur != null)
  736. strValueCur = (datatype != typeof(DateTime) && datatype != typeof(DateTime?))
  737. ? Convert.ToString(valueCur)
  738. : valueCur == null ? "" : ((DateTime)valueCur).ToString("yyyy-MM-dd HH:mm:ss");
  739. }
  740. string strValuePre;
  741. if (valuePre == DBNull.Value|| valueCur==null)
  742. strValuePre = "";
  743. else
  744. strValuePre = (datatype != typeof(DateTime) && datatype!=typeof(DateTime?))
  745. ? Convert.ToString(valuePre)
  746. : valuePre==null?"": ((DateTime) valuePre).ToString("yyyy-MM-dd HH:mm:ss");
  747. if (strKey == "SHIFTCODE")
  748. {
  749. _shiftCode = strValueCur;
  750. }
  751. else
  752. {
  753. alColumns.Add(strKey);
  754. alDataTypes.Add(datatype.FullName);
  755. alValueCur.Add(strValueCur);
  756. alValuePre.Add(strValuePre);
  757. alChinese.Add(strChinese);
  758. }
  759. }
  760. }
  761. catch
  762. {
  763. // ignored
  764. }
  765. return new List<object>() { alColumns, alDataTypes, alValueCur, alValuePre, alChinese, _operator,_shiftCode };
  766. }
  767. }
  768. }