FrmReportBase.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows.Forms;
  5. using Core.Mes.Client.Comm.Control;
  6. using Core.Mes.Client.Comm.Tool;
  7. using CoreFS.CA06;
  8. using Infragistics.Win;
  9. using Infragistics.Win.UltraWinEditors;
  10. using Infragistics.Win.UltraWinGrid;
  11. using ButtonDisplayStyle = Infragistics.Win.UltraWinGrid.ButtonDisplayStyle;
  12. namespace Core.StlMes.Client.Mcp.Mch.Report
  13. {
  14. public partial class FrmReportBase : FrmBase
  15. {
  16. private string[] _plineCodes = {};
  17. /// <summary>
  18. /// 子表排序
  19. /// </summary>
  20. protected List<string> Band2 = new List<string>();
  21. /// <summary>
  22. /// 是否显示勾选
  23. /// </summary>
  24. protected bool NeedCheck = false;
  25. /// <summary>
  26. /// 人员字段顺序
  27. /// </summary>
  28. protected List<string> OperationInfo = new List<string>
  29. {
  30. "ReportPath",
  31. "ProUser",
  32. "Responsible",
  33. "CreatetUser",
  34. "ProShift",
  35. "LoadShift",
  36. "ProGroup",
  37. "LoadGroup",
  38. "ProTime",
  39. "LoadTime",
  40. "ProEndTime",
  41. "ColTime",
  42. "ColEndTime",
  43. "CreateTime"
  44. };
  45. /// <summary>
  46. /// 生产信息区域顺序
  47. /// </summary>
  48. protected List<string> ProductionInfo = new List<string>
  49. {
  50. "MachineNo",
  51. "ProNum",
  52. "ProWt",
  53. "QualifiedNum",
  54. "QualifiedWt",
  55. "HeadCutNum",
  56. "FailNum",
  57. "FailWt",
  58. "ReProNum",
  59. "ReProWt",
  60. "FinalQualifiedNum",
  61. "FinalQualifiedWt"
  62. };
  63. /// <summary>
  64. /// 参数区域字段顺序
  65. /// </summary>
  66. protected List<string> ResultNoPara = new List<string>();
  67. /// <summary>
  68. /// 是否显示记录数
  69. /// </summary>
  70. protected bool ShowRecordCount = true;
  71. /// <summary>
  72. /// 需要显示汇总的字段
  73. /// </summary>
  74. protected List<string> SumList = new List<string>
  75. {
  76. "ProNum",
  77. "ProWt",
  78. "HeadCutNum",
  79. "FailNum",
  80. "FailWt",
  81. "ReProNum",
  82. "ReProWt",
  83. "QualifiedNum",
  84. "QualifiedWt",
  85. "UnqualifiedNum",
  86. "UnqualifiedWt",
  87. "FinalQualifiedNum",
  88. "FinalQualifiedWt",
  89. "CouplingNum",
  90. "CouplingWt",
  91. "CheckNum",
  92. "CheckWt",
  93. "ActCount",
  94. "ActWeight"
  95. };
  96. /// <summary>
  97. /// 合同信息
  98. /// </summary>
  99. protected List<string> ViewList = new List<string>
  100. {
  101. "ProYearMonthDay",
  102. "JudgeStoveNo",
  103. "BatchNo",
  104. "PlineName",
  105. "Producname",
  106. "Steelname",
  107. "Gradename",
  108. "Outdiameter",
  109. "Wallthick",
  110. "ModelDesc",
  111. "OrderNo"
  112. };
  113. public FrmReportBase()
  114. {
  115. InitializeComponent();
  116. IsLoadUserView = true;
  117. }
  118. protected List<QueryShow> QueryShows { get; set; }
  119. /// <summary>
  120. /// 按照区域重新排序
  121. /// </summary>
  122. private void Resort()
  123. {
  124. var ColumnSeq = ViewList.Concat(ProductionInfo).Concat(ResultNoPara).Concat(OperationInfo).ToList();
  125. if (NeedCheck)
  126. {
  127. ColumnSeq = new List<string> { "FrimFlag" }.Concat(ColumnSeq).ToList();
  128. ColumnSeq = new List<string> { "Chk" }.Concat(ColumnSeq).ToList();
  129. CrackDetectGrid.DisplayLayout.Bands[0].Columns.Add("Chk","选择");
  130. }
  131. SortBand(ColumnSeq, CrackDetectGrid.DisplayLayout.Bands[0]);
  132. if (CrackDetectGrid.DisplayLayout.Bands.Count > 1)
  133. SortBand(Band2, CrackDetectGrid.DisplayLayout.Bands[1]);
  134. }
  135. private void QueryAreaShow()
  136. {
  137. foreach (System.Windows.Forms.Control clientAreaControl in plQuery.ClientArea.Controls)
  138. clientAreaControl.Visible = false;
  139. plQuery.ClientArea.Controls.Clear();
  140. for (var i = 0; i < QueryShows.Count; i++)
  141. {
  142. var show = QueryShows[i];
  143. switch (show)
  144. {
  145. case QueryShow.Date:
  146. plQuery.ClientArea.Controls.Add(chkTim);
  147. plQuery.ClientArea.Controls.Add(plDate);
  148. chkTim.Visible = true;
  149. chkTim.Checked = true;
  150. break;
  151. case QueryShow.YearMonthDate:
  152. plQuery.ClientArea.Controls.Add(chkYear);
  153. plQuery.ClientArea.Controls.Add(plnDateYearMonth);
  154. chkYear.Visible = true;
  155. chkYear.Checked = true;
  156. break;
  157. case QueryShow.OrderNo:
  158. plQuery.ClientArea.Controls.Add(chkOrderNo);
  159. plQuery.ClientArea.Controls.Add(txtOrderNo);
  160. chkOrderNo.Visible = true;
  161. break;
  162. case QueryShow.JudgeStove:
  163. plQuery.ClientArea.Controls.Add(chkJudgeStove);
  164. plQuery.ClientArea.Controls.Add(txtJudgeStove);
  165. chkJudgeStove.Visible = true;
  166. break;
  167. case QueryShow.BatchNo:
  168. plQuery.ClientArea.Controls.Add(chkBatchNo);
  169. plQuery.ClientArea.Controls.Add(txtBatchNo);
  170. chkBatchNo.Visible = true;
  171. break;
  172. case QueryShow.JudgeStoveJg:
  173. plQuery.ClientArea.Controls.Add(chkJgJudgeStove);
  174. plQuery.ClientArea.Controls.Add(txtJgJudgeStove);
  175. chkJgJudgeStove.Visible = true;
  176. break;
  177. case QueryShow.BatchNoJg:
  178. plQuery.ClientArea.Controls.Add(chkJgBatch);
  179. plQuery.ClientArea.Controls.Add(txtJgBatch);
  180. chkJgBatch.Visible = true;
  181. break;
  182. case QueryShow.Shift:
  183. plQuery.ClientArea.Controls.Add(chkOrder);
  184. plQuery.ClientArea.Controls.Add(cmbOrder);
  185. chkOrder.Visible = true;
  186. break;
  187. case QueryShow.Group:
  188. plQuery.ClientArea.Controls.Add(chkGroup);
  189. plQuery.ClientArea.Controls.Add(cmbGroup);
  190. chkGroup.Visible = true;
  191. break;
  192. case QueryShow.Plines:
  193. plQuery.ClientArea.Controls.Add(chkPlineCode);
  194. plQuery.ClientArea.Controls.Add(cboPline);
  195. chkPlineCode.Visible = true;
  196. break;
  197. case QueryShow.Status:
  198. plQuery.ClientArea.Controls.Add(osStatus);
  199. osStatus.Visible = true;
  200. break;
  201. }
  202. }
  203. }
  204. /// <summary>
  205. /// Band重新排序
  206. /// </summary>
  207. /// <param name="ColumnSeq"></param>
  208. /// <param name="band"></param>
  209. private void SortBand(List<string> ColumnSeq, UltraGridBand band)
  210. {
  211. foreach (var Columns in band.Columns)
  212. ResetColumns(Columns);
  213. var ColumnX = 0;
  214. for (var i = 0; i < ColumnSeq.Count; i++)
  215. {
  216. var Key = ColumnSeq[i];
  217. if (band.Columns.Exists(Key))
  218. {
  219. band.Columns[Key].Hidden = false;
  220. band.Columns[Key].RowLayoutColumnInfo.OriginX = 2*ColumnX++;
  221. band.Columns[Key].RowLayoutColumnInfo.OriginY = 0;
  222. }
  223. }
  224. }
  225. /// <summary>
  226. /// 重置字段属性,或绑定
  227. /// </summary>
  228. /// <param name="Columns"></param>
  229. protected virtual void ResetColumns(UltraGridColumn Columns)
  230. {
  231. Columns.Hidden = true;
  232. Columns.CellActivation = Activation.ActivateOnly;
  233. if (NeedCheck && (Columns.Key == "Chk"))
  234. {
  235. Columns.CellActivation = Activation.AllowEdit;
  236. Columns.Style= Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox;
  237. Columns.DataType = typeof(bool);
  238. }
  239. if ((Columns.Key == "ProShift") || (Columns.Key == "LoadShift"))
  240. Columns.EditorComponent = cmbBc;
  241. if ((Columns.Key == "ProGroup") || (Columns.Key == "LoadGroup"))
  242. Columns.EditorComponent = cmbBz;
  243. if ((Columns.Key == "ReportPath") || (Columns.Key == "ReportFull"))
  244. {
  245. Columns.EditorComponent = uteReport;
  246. Columns.ButtonDisplayStyle = ButtonDisplayStyle.Always;
  247. }
  248. }
  249. public override void ToolBar_Click(object sender, string ToolbarKey)
  250. {
  251. switch (ToolbarKey)
  252. {
  253. case "DoQuery":
  254. Query();
  255. break;
  256. case "Export":
  257. Export();
  258. break;
  259. case "DoUpdate":
  260. DoUpdate();
  261. break;
  262. case "DoClose":
  263. Close();
  264. break;
  265. case "Send":
  266. Send();
  267. break;
  268. case "Confirm":
  269. Confirm();
  270. break;
  271. }
  272. }
  273. /// <summary>
  274. /// 更新
  275. /// </summary>
  276. protected virtual void DoUpdate()
  277. {
  278. }
  279. protected virtual void Send()
  280. {
  281. }
  282. protected virtual void Confirm()
  283. {
  284. }
  285. /// <summary>
  286. /// 导出
  287. /// </summary>
  288. protected virtual void Export()
  289. {
  290. GridHelper.ulGridToExcel(CrackDetectGrid, Text);
  291. }
  292. /// <summary>
  293. /// 查询
  294. /// </summary>
  295. protected void Query()
  296. {
  297. var Message = "";
  298. var wf = new WaitingForm2("正在查询,请稍候....");
  299. try
  300. {
  301. Cursor = Cursors.WaitCursor;
  302. QuerySinglePlan();
  303. GridHelper.RefreshAndAutoSizeExceptColumns(CrackDetectGrid, "ReportPath");
  304. }
  305. catch (Exception ex)
  306. {
  307. if (ex.Message.ToString2() != "")
  308. Message = ex.Message;
  309. }
  310. finally
  311. {
  312. wf.Close();
  313. Cursor = Cursors.Default;
  314. }
  315. if (!string.IsNullOrWhiteSpace(Message))
  316. MessageBox.Show(Message);
  317. }
  318. /// <summary>
  319. /// 查询
  320. /// </summary>
  321. protected virtual void QuerySinglePlan()
  322. {
  323. }
  324. /// <summary>
  325. /// 获取查询区域参数
  326. /// </summary>
  327. /// <returns></returns>
  328. protected virtual object[] GetQueryCondition()
  329. {
  330. var dic = new Dictionary<string, object>();
  331. if (QueryShows.Contains(QueryShow.Date) && chkTim.Checked)
  332. {
  333. if (DateTime.Parse(RegStartTime.Value.ToString()) > DateTime.Parse(RegEndTime.Value.ToString()))
  334. throw new Exception("选择时间区间错误,请重新选择!");
  335. dic.Add("start", RegStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
  336. dic.Add("end", RegEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
  337. }
  338. if (QueryShows.Contains(QueryShow.YearMonthDate) && chkYear.Checked)
  339. {
  340. dic.Add("YearMonthStart", dtpYearStart.Value.ToString("yyyyMM"));
  341. dic.Add("YearMonthEnd", dtpYearEnd.Value.ToString("yyyyMM"));
  342. }
  343. dic.Add("plineCodes", chkPlineCode.Checked && (cboPline.CheckedItems.Count > 0)
  344. ? cboPline.CheckedItems.Select(p => p.DataValue.ToString()).ToArray()
  345. : _plineCodes);
  346. if (QueryShows.Contains(QueryShow.Shift) && chkOrder.Checked && (cmbOrder.Text.Trim() != ""))
  347. dic.Add("shift", cmbOrder.Value.ToString());
  348. if (QueryShows.Contains(QueryShow.Group) && chkGroup.Checked && (cmbGroup.Text.Trim() != ""))
  349. dic.Add("group", cmbGroup.Value.ToString());
  350. if (QueryShows.Contains(QueryShow.OrderNo) && chkOrderNo.Checked)
  351. dic.Add("orderNo", txtOrderNo.Text);
  352. if (QueryShows.Contains(QueryShow.JudgeStove) && chkJudgeStove.Checked)
  353. dic.Add("judgeStoveNo", txtJudgeStove.Text);
  354. if (QueryShows.Contains(QueryShow.BatchNo) && chkBatchNo.Checked)
  355. dic.Add("batchNo", txtBatchNo.Text);
  356. if (QueryShows.Contains(QueryShow.JudgeStoveJg) && chkJgJudgeStove.Checked)
  357. dic.Add("judgeStoveNoJg", txtJgJudgeStove.Text);
  358. if (QueryShows.Contains(QueryShow.BatchNoJg) && chkJgBatch.Checked)
  359. dic.Add("batchNoJg", txtJgBatch.Text);
  360. if (QueryShows.Contains(QueryShow.Status))
  361. dic.Add("status", osStatus.Value.ToString2());
  362. if (!dic.ContainsKey("start") && !dic.ContainsKey("YearMonthStart") && !dic.ContainsKey("orderNo") && !dic.ContainsKey("judgeStoveNo"))
  363. if (MessageUtil.ShowYesNoAndQuestion("时间/合同/炉号条件未选择,查询时间可能会超时,请确定是否继续查询?") == DialogResult.No)
  364. throw new Exception("");
  365. return new object[]{dic};
  366. }
  367. /// <summary>
  368. /// 加载界面信息
  369. /// </summary>
  370. protected virtual void LoadView()
  371. {
  372. }
  373. protected override void OnLoad(EventArgs e)
  374. {
  375. base.OnLoad(e);
  376. QueryShows = new List<QueryShow>
  377. {
  378. QueryShow.Date,
  379. QueryShow.OrderNo,
  380. QueryShow.JudgeStove,
  381. QueryShow.BatchNo,
  382. QueryShow.Shift,
  383. QueryShow.Group,
  384. QueryShow.Plines
  385. };
  386. LoadView();
  387. QueryAreaShow();
  388. Resort();
  389. SetStaticsInfoSum(ref CrackDetectGrid, SumList, true, ShowRecordCount);
  390. if (ShowRecordCount)
  391. {
  392. //SetStaticsInfoCount(ref CrackDetectGrid);
  393. }
  394. if (ob == null) return;
  395. _plineCodes = comm.InitDropPlineCodePower("G", cboPline, ValidDataPurviewIds, ob);
  396. if ((_plineCodes.Length > 1) &&
  397. ((_plineCodes[1] == "C038") || (_plineCodes[1] == "C039") || (_plineCodes[1] == "C049") ||
  398. (_plineCodes[1] == "C050") ||
  399. (_plineCodes[1] == "C051") || (_plineCodes[1] == "C057")))
  400. {
  401. RegStartTime.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 20:00"));
  402. RegEndTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 19:59"));
  403. }
  404. else
  405. {
  406. RegStartTime.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 21:00"));
  407. RegEndTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 20:59"));
  408. }
  409. dtpYearEnd.Value = DateTime.Now;
  410. dtpYearStart.Value = DateTime.Now;
  411. Query();
  412. }
  413. private void chkStarts_CheckedChanged(object sender, EventArgs e)
  414. {
  415. if (chkTim.Checked)
  416. {
  417. RegStartTime.Enabled = true;
  418. RegEndTime.Enabled = true;
  419. plDate.Visible = true;
  420. }
  421. else
  422. {
  423. RegStartTime.Enabled = false;
  424. RegEndTime.Enabled = false;
  425. plDate.Visible = false;
  426. }
  427. if (chkYear.Checked)
  428. {
  429. dtpYearStart.Enabled = true;
  430. dtpYearEnd.Enabled = true;
  431. plnDateYearMonth.Visible = true;
  432. }
  433. else
  434. {
  435. dtpYearStart.Enabled = false;
  436. dtpYearEnd.Enabled = false;
  437. plnDateYearMonth.Visible = false;
  438. }
  439. cmbOrder.Enabled = chkOrder.Checked;
  440. cmbGroup.Enabled = chkGroup.Checked;
  441. txtOrderNo.Enabled = chkOrderNo.Checked;
  442. txtJudgeStove.Enabled = chkJudgeStove.Checked;
  443. txtBatchNo.Enabled = chkBatchNo.Checked;
  444. txtJgJudgeStove.Enabled = chkJgJudgeStove.Checked;
  445. txtJgBatch.Enabled = chkJgBatch.Checked;
  446. cmbOrder.Visible = chkOrder.Checked;
  447. cmbGroup.Visible = chkGroup.Checked;
  448. txtOrderNo.Visible = chkOrderNo.Checked;
  449. txtJudgeStove.Visible = chkJudgeStove.Checked;
  450. txtBatchNo.Visible = chkBatchNo.Checked;
  451. cboPline.Visible = chkPlineCode.Checked;
  452. txtJgJudgeStove.Visible = chkJgJudgeStove.Checked;
  453. txtJgBatch.Visible = chkJgBatch.Checked;
  454. }
  455. /// <summary>
  456. /// 汇总方法
  457. /// </summary>
  458. /// <param name="myGrid1"></param>
  459. /// <param name="alistColumns"></param>
  460. /// <param name="clearExists"></param>
  461. protected void SetStaticsInfoSum(ref UltraGrid myGrid1, List<string> alistColumns, bool clearExists,
  462. bool ShowCount)
  463. {
  464. try
  465. {
  466. var band = myGrid1.DisplayLayout.Bands[0];
  467. if (clearExists)
  468. band.Summaries.Clear();
  469. band.Override.SummaryFooterCaptionVisible = DefaultableBoolean.False;
  470. for (var i = 0; i < alistColumns.Count; i++)
  471. try
  472. {
  473. if (!band.Columns.Exists(alistColumns[i])) continue;
  474. var summary = band.Summaries.Add(SummaryType.Sum, band.Columns[alistColumns[i]]);
  475. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  476. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  477. summary.DisplayFormat = "{0}";
  478. summary.Appearance.TextHAlign = HAlign.Right;
  479. summary.Appearance.TextVAlign = VAlign.Middle;
  480. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  481. }
  482. catch
  483. {
  484. // ignored
  485. }
  486. if (ShowCount && (ViewList.Count > 0))
  487. {
  488. var summary = band.Summaries.Add(SummaryType.Count, band.Columns[ViewList[0]]);
  489. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  490. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  491. summary.DisplayFormat = "共{0}条记录";
  492. summary.Appearance.TextHAlign = HAlign.Left;
  493. summary.Appearance.TextVAlign = VAlign.Middle;
  494. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  495. }
  496. }
  497. catch
  498. {
  499. }
  500. }
  501. /// <summary>
  502. /// 报告查询
  503. /// </summary>
  504. /// <param name="sender"></param>
  505. /// <param name="e"></param>
  506. private void uteReport_EditorButtonClick(object sender, EditorButtonEventArgs e)
  507. {
  508. var down = new FormFileDown(ob, CrackDetectGrid.ActiveCell.Value.ToString2());
  509. down.CtrlFileDown1.Button3.Visible = false;
  510. down.ShowDialog();
  511. }
  512. protected enum QueryShow
  513. {
  514. Date,
  515. YearMonthDate,
  516. OrderNo,
  517. JudgeStove,
  518. BatchNo,
  519. JudgeStoveJg,
  520. BatchNoJg,
  521. Shift,
  522. Group,
  523. Plines,
  524. Status
  525. }
  526. }
  527. }