ucStoveQuery.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.Linq;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. using System.Windows.Forms;
  9. using Core.Mes.Client.Comm.Tool;
  10. using Core.StlMes.Client.LgClassModel;
  11. using CoreFS.CA06;
  12. using Infragistics.Win;
  13. using Infragistics.Win.UltraWinEditors;
  14. using Infragistics.Win.UltraWinGrid;
  15. namespace Core.StlMes.Client.LgCommon
  16. {
  17. /// <summary>
  18. /// 实绩管理响应炉号选中事件
  19. /// </summary>
  20. public delegate void GetStoveResultDelegate(PlnSteelforfurnaceEntity PlnSteelforfurnaceEntity,bool Refresh);
  21. public partial class ucStoveQuery : UserControl
  22. {
  23. public event GetStoveResultDelegate GetStoveResultDelegate;
  24. private OpeBase Ob;
  25. private List<string> _plines;
  26. private string Stove;
  27. private volatile bool refresh;
  28. private Task rereshTast;
  29. private DateTime LastQuery = DateTime.Now;
  30. private bool Run = true;
  31. private LG_PROCESS _process;
  32. private object lockHelper = new object();
  33. public Func<bool> GiveUp =null;
  34. private bool AskGiveUp = false;
  35. private UltraGridRow ugActiveRow;
  36. public ucStoveQuery()
  37. {
  38. InitializeComponent();
  39. }
  40. private bool _orderByPline = true;
  41. public bool OrderByPline
  42. {
  43. get { return _orderByPline; }
  44. set
  45. {
  46. _orderByPline = value;
  47. ugPlan.DisplayLayout.Bands[0].Columns["CastNo"].Hidden = _orderByPline;
  48. }
  49. }
  50. public string uceStatusText
  51. {
  52. get
  53. {
  54. return uceStatus.Text;
  55. }
  56. set { uceStatus.Text = value; }
  57. }
  58. public void Init(OpeBase Ob,List<string> Plines,LG_PROCESS process)
  59. {
  60. this.Ob = Ob;
  61. _plines = Plines;
  62. _process = process;
  63. InitDropDowList();
  64. dtpStart.Value = DateTime.Now.AddDays(-1);
  65. dtpEnd.Value = DateTime.Now.AddDays(1);
  66. QueryStovePlan();
  67. ClsControlPack.RefreshAndAutoSize(ugPlan);
  68. GoNext();
  69. rereshTast = new Task(RereshTask);
  70. rereshTast.Start();
  71. }
  72. public void RereshTask()
  73. {
  74. while (Run)
  75. {
  76. try
  77. {
  78. Thread.Sleep(2000);
  79. if (cbx_AutoRefresh==null) break;
  80. if (!cbx_AutoRefresh.Checked) continue;
  81. TimeSpan timeSpan = DateTime.Now - LastQuery;
  82. if(timeSpan.Seconds<10) continue;
  83. if (AskGiveUp) continue;
  84. QueryStovePlan();
  85. }
  86. catch (Exception)
  87. {
  88. }
  89. }
  90. }
  91. // 刷新炉次信息
  92. /// <summary>
  93. /// 刷新炉次信息
  94. /// </summary>
  95. public void QueryStovePlan()
  96. {
  97. /*lock (lockHelper)
  98. {*/
  99. try{
  100. LastQuery = DateTime.Now;
  101. var status = uceStatus.CheckedItems.Select(p => p.DataValue.ToString()).ToList();
  102. if (!chbStatus.Checked || !status.Any()) status = new List<string>(){"10","20","30","40"};
  103. var datas =
  104. EntityHelper.GetData<PlnSteelforfurnaceEntity>(
  105. "Core.LgMes.Server.LgDeviceManager.PerformanceManage.SelectPlnSteelforfurnaceEntity",
  106. new[]
  107. {
  108. chbStove.Checked?Edt_StoveNo.Text:"",
  109. _plines,
  110. !chbGrade.Checked || cbEdt_Steel.SelectedItem==null?"": cbEdt_Steel.SelectedItem.DataValue,
  111. status,
  112. _process,
  113. chbStart.Checked? dtpStart.Value.ToString("yyyyMMdd"):"",
  114. chbEnd.Checked? dtpEnd.Value.ToString("yyyyMMdd"):"",
  115. OrderByPline
  116. }, Ob);
  117. ClsControlPack.SaftRefreshUI(ugPlan, () =>
  118. {
  119. plnSteelforfurnaceEntityBindingSource.DataSource = datas;
  120. });
  121. }
  122. catch (Exception ex)
  123. {
  124. // ignored
  125. }
  126. /* }*/
  127. }
  128. #region 初始化
  129. public void InitDropDowList()
  130. {
  131. var vlistGradeCode = ClsBusinessPack.GetValuelistSteel(Ob);
  132. cbEdt_Steel.ValueList = vlistGradeCode;
  133. var list = ClsBusinessPack.GetStatus();
  134. ClsControlPack.SetGridValuelist(ref ugPlan, "Status", ref list);
  135. }
  136. #endregion
  137. #region 事件
  138. private void btnQuery_Click(object sender, EventArgs e)
  139. {
  140. QueryStovePlan();
  141. }
  142. public void GoNext()
  143. {
  144. Stove = "";
  145. ugPlan.ActiveRow = ugPlan.Rows.AsEnumerable().Where(p =>
  146. {
  147. var row = p.ListObject as PlnSteelforfurnaceEntity;
  148. if (row != null)
  149. {
  150. int HeatState = 0;
  151. int CurrentState = ClsBusinessPack.GetHeatState(_process);
  152. int.TryParse(row.HeatState, out HeatState);
  153. if ((HeatState <= CurrentState) || row.Status == "10")
  154. return true;
  155. }
  156. return false;
  157. }).FirstOrDefault();
  158. if (ugPlan.ActiveRow!=null) ugPlan.Rows[ugPlan.ActiveRow.Index].Activate();
  159. ugPlan_AfterRowActivate(null, null);
  160. }
  161. private void cbx_AutoRefresh_CheckedChanged(object sender, EventArgs e)
  162. {
  163. try
  164. {
  165. btnQuery.Enabled = !cbx_AutoRefresh.Checked;
  166. cbEdt_Steel.Enabled = Edt_StoveNo.Enabled = !cbx_AutoRefresh.Checked;
  167. uceStatus.Enabled = Edt_StoveNo.Enabled = !cbx_AutoRefresh.Checked;
  168. dtpStart.Enabled = Edt_StoveNo.Enabled = !cbx_AutoRefresh.Checked;
  169. dtpEnd.Enabled = Edt_StoveNo.Enabled = !cbx_AutoRefresh.Checked;
  170. }
  171. catch
  172. {
  173. // ignored
  174. }
  175. }
  176. private void Edt_HeatNo_EditorButtonClick(object sender, EditorButtonEventArgs e)
  177. {
  178. try
  179. {
  180. if (cbx_AutoRefresh.Checked) return;
  181. if (e.Button.Key.ToUpper().Equals("CLEAR".ToUpper()))
  182. {
  183. if (!string.IsNullOrEmpty(Edt_StoveNo.Text.Trim()))
  184. {
  185. Edt_StoveNo.Tag = Edt_StoveNo.Text.Trim();
  186. Edt_StoveNo.Clear();
  187. }
  188. else if (Edt_StoveNo.Tag != null) Edt_StoveNo.Text = Convert.ToString(Edt_StoveNo.Tag);
  189. }
  190. else if (e.Button.Key.ToUpper().Equals("EDIT".ToUpper()))
  191. {
  192. var frm = new frmHeatNoEditor {InputText = Edt_StoveNo.Text.Trim()};
  193. frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size);
  194. if (frm.ShowDialog() == DialogResult.OK)
  195. Edt_StoveNo.Text = frm.InputText;
  196. }
  197. }
  198. catch
  199. {
  200. // ignored
  201. }
  202. }
  203. #endregion
  204. private void ucStoveQuery_Load(object sender, EventArgs e)
  205. {
  206. ClsControlPack.SetReadOnly(ugPlan);
  207. EntityHelper.ShowGridCaption<PlnSteelforfurnaceEntity>(ugPlan.DisplayLayout.Bands[0]);
  208. ValueList vlist = ClsBusinessPack.GetHeatStatus();
  209. ClsControlPack.SetGridValuelist(ref ugPlan, "HEATSTATE", ref vlist);
  210. ugPlan.DisplayLayout.Bands[0].Columns["CastNo"].MergedCellStyle = MergedCellStyle.Always;
  211. }
  212. private void ugPlan_AfterRowActivate(object sender, EventArgs e)
  213. {
  214. // if (Activing) return;
  215. /* if (bGiveUp)
  216. {
  217. ugPlan.ActiveRow = ugActiveRow;
  218. bGiveUp = false;
  219. // Activing = false;
  220. return;
  221. }*/
  222. if (refresh) return;
  223. if (GetStoveResultDelegate != null && ugPlan.ActiveRow != null)
  224. {
  225. var plnSteelforfurnaceEntity = ugPlan.ActiveRow.ListObject as PlnSteelforfurnaceEntity;
  226. if (plnSteelforfurnaceEntity != null )
  227. {
  228. if ( plnSteelforfurnaceEntity.StoveNo!=Stove && Stove != "" && GiveUp != null )
  229. {
  230. //询问是否放弃编辑的时候 不刷新界面
  231. AskGiveUp = true;
  232. if (!GiveUp())
  233. {
  234. //放弃更改炉计划 则聚焦原炉计划
  235. ugPlan.ActiveRow = ugPlan.Rows.AsEnumerable().Where(p =>
  236. {
  237. var row = p.ListObject as PlnSteelforfurnaceEntity;
  238. if (row != null && row.StoveNo == Stove)
  239. {
  240. return true;
  241. }
  242. return false;
  243. }).FirstOrDefault();
  244. AskGiveUp = false;
  245. return;
  246. }
  247. }
  248. GetStoveResultDelegate(plnSteelforfurnaceEntity, plnSteelforfurnaceEntity.StoveNo == Stove);
  249. Stove = plnSteelforfurnaceEntity.StoveNo;
  250. AskGiveUp = false;
  251. }
  252. }
  253. //Activing = false;
  254. }
  255. private void ugPlan_InitializeRow(object sender, InitializeRowEventArgs e)
  256. {
  257. PlnSteelforfurnaceEntity plnSteelforfurnaceEntity = e.Row.ListObject as PlnSteelforfurnaceEntity;
  258. if (plnSteelforfurnaceEntity==null) return;
  259. switch (_process)
  260. {
  261. case LG_PROCESS.EAF:
  262. if (plnSteelforfurnaceEntity.BofStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.BofStarttime) )
  263. {
  264. e.Row.Appearance.ResetBackColor();
  265. }
  266. else if (plnSteelforfurnaceEntity.BofEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.BofEndtime))
  267. {
  268. e.Row.Appearance.BackColor = Color.LightGreen;
  269. }
  270. else
  271. {
  272. e.Row.Appearance.BackColor = Color.Yellow;
  273. }
  274. break;
  275. case LG_PROCESS.LF:
  276. if (plnSteelforfurnaceEntity.LfsStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.LfsStarttime))
  277. {
  278. e.Row.Appearance.ResetBackColor();
  279. }
  280. else if (plnSteelforfurnaceEntity.LfsEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.LfsEndtime))
  281. {
  282. e.Row.Appearance.BackColor = Color.LightGreen;
  283. }
  284. else
  285. {
  286. e.Row.Appearance.BackColor = Color.Yellow;
  287. }
  288. break;
  289. case LG_PROCESS.VD:
  290. if (plnSteelforfurnaceEntity.VdStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.VdStarttime))
  291. {
  292. e.Row.Appearance.ResetBackColor();
  293. }
  294. else if (plnSteelforfurnaceEntity.VdEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.VdEndtime))
  295. {
  296. e.Row.Appearance.BackColor = Color.LightGreen;
  297. }
  298. else
  299. {
  300. e.Row.Appearance.BackColor = Color.Yellow;
  301. }
  302. break;
  303. case LG_PROCESS.RH:
  304. if (plnSteelforfurnaceEntity.RhStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.RhStarttime))
  305. {
  306. e.Row.Appearance.ResetBackColor();
  307. }
  308. else if (plnSteelforfurnaceEntity.RhEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.RhEndtime))
  309. {
  310. e.Row.Appearance.BackColor = Color.LightGreen;
  311. }
  312. else
  313. {
  314. e.Row.Appearance.BackColor = Color.Yellow;
  315. }
  316. break;
  317. case LG_PROCESS.CCM:
  318. if (plnSteelforfurnaceEntity.CcmStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.CcmStarttime))
  319. {
  320. e.Row.Appearance.ResetBackColor();
  321. }
  322. else if (plnSteelforfurnaceEntity.CcmEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.CcmEndtime))
  323. {
  324. e.Row.Appearance.BackColor = Color.LightGreen;
  325. }
  326. else
  327. {
  328. e.Row.Appearance.BackColor = Color.Yellow;
  329. }
  330. break;
  331. }
  332. }
  333. }
  334. }