ucNewResBase.cs 46 KB

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