FrmReportBase.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  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.Treatment.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. protected bool ShowStatus = false;
  72. protected bool ShowJg = false;
  73. /// <summary>
  74. /// 需要显示汇总的字段
  75. /// </summary>
  76. protected List<string> SumList = new List<string>
  77. {
  78. "ProNum",
  79. "ProWt",
  80. "HeadCutNum",
  81. "FailNum",
  82. "FailWt",
  83. "ReProNum",
  84. "ReProWt",
  85. "QualifiedNum",
  86. "QualifiedWt",
  87. "UnqualifiedNum",
  88. "UnqualifiedWt",
  89. "FinalQualifiedNum",
  90. "FinalQualifiedWt",
  91. "CouplingNum",
  92. "CouplingWt",
  93. "CheckNum",
  94. "CheckWt"
  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. /// <summary>
  119. /// 按照区域重新排序
  120. /// </summary>
  121. private void Resort()
  122. {
  123. var ColumnSeq = ViewList.Concat(ProductionInfo).Concat(ResultNoPara).Concat(OperationInfo).ToList();
  124. if (NeedCheck)
  125. ColumnSeq = new List<string> {"Chk"}.Concat(ColumnSeq).ToList();
  126. SortBand(ColumnSeq, CrackDetectGrid.DisplayLayout.Bands[0]);
  127. if (CrackDetectGrid.DisplayLayout.Bands.Count > 1)
  128. SortBand(Band2, CrackDetectGrid.DisplayLayout.Bands[1]);
  129. }
  130. /// <summary>
  131. /// Band重新排序
  132. /// </summary>
  133. /// <param name="ColumnSeq"></param>
  134. /// <param name="band"></param>
  135. private void SortBand(List<string> ColumnSeq, UltraGridBand band)
  136. {
  137. foreach (var Columns in band.Columns)
  138. ResetColumns(Columns);
  139. var ColumnX = 0;
  140. for (var i = 0; i < ColumnSeq.Count; i++)
  141. {
  142. var Key = ColumnSeq[i];
  143. if (band.Columns.Exists(Key))
  144. {
  145. band.Columns[Key].Hidden = false;
  146. band.Columns[Key].RowLayoutColumnInfo.OriginX = 2*ColumnX++;
  147. band.Columns[Key].RowLayoutColumnInfo.OriginY = 0;
  148. }
  149. }
  150. }
  151. /// <summary>
  152. /// 重置字段属性,或绑定
  153. /// </summary>
  154. /// <param name="Columns"></param>
  155. protected virtual void ResetColumns(UltraGridColumn Columns)
  156. {
  157. Columns.Hidden = true;
  158. Columns.CellActivation = Activation.ActivateOnly;
  159. if (NeedCheck && (Columns.Key == "Chk")) Columns.CellActivation = Activation.AllowEdit;
  160. if ((Columns.Key == "ProShift") || (Columns.Key == "LoadShift"))
  161. Columns.EditorComponent = cmbBc;
  162. if ((Columns.Key == "ProGroup") || (Columns.Key == "LoadGroup"))
  163. Columns.EditorComponent = cmbBz;
  164. if ((Columns.Key == "ReportPath") || (Columns.Key == "ReportFull"))
  165. {
  166. Columns.EditorComponent = uteReport;
  167. Columns.ButtonDisplayStyle = ButtonDisplayStyle.Always;
  168. }
  169. }
  170. public override void ToolBar_Click(object sender, string ToolbarKey)
  171. {
  172. switch (ToolbarKey)
  173. {
  174. case "DoQuery":
  175. Query();
  176. break;
  177. case "Export":
  178. Export();
  179. break;
  180. case "DoClose":
  181. Close();
  182. break;
  183. }
  184. }
  185. /// <summary>
  186. /// 导出
  187. /// </summary>
  188. protected virtual void Export()
  189. {
  190. GridHelper.ulGridToExcel(CrackDetectGrid, Text);
  191. }
  192. /// <summary>
  193. /// 查询
  194. /// </summary>
  195. protected void Query()
  196. {
  197. var Message = "";
  198. var wf = new WaitingForm2("正在查询,请稍候....");
  199. try
  200. {
  201. Cursor = Cursors.WaitCursor;
  202. QuerySinglePlan();
  203. GridHelper.RefreshAndAutoSizeExceptColumns(CrackDetectGrid, "ReportPath");
  204. }
  205. catch (Exception ex)
  206. {
  207. if (ex.Message.ToString2() != "")
  208. Message = ex.Message;
  209. }
  210. finally
  211. {
  212. wf.Close();
  213. Cursor = Cursors.Default;
  214. }
  215. if (!string.IsNullOrWhiteSpace(Message))
  216. MessageBox.Show(Message);
  217. }
  218. /// <summary>
  219. /// 查询
  220. /// </summary>
  221. protected virtual void QuerySinglePlan()
  222. {
  223. }
  224. /// <summary>
  225. /// 获取查询区域参数
  226. /// </summary>
  227. /// <returns></returns>
  228. protected virtual object[] GetQueryCondition()
  229. {
  230. var startTim = "";
  231. var endTim = "";
  232. var shift = ""; //班次
  233. var group = ""; //班组
  234. var OrderNo = "";
  235. var JudgeStoveNo = "";
  236. var BatchNo = "";
  237. var JgJudgeStoveNo = "";
  238. var JgBatchNo = "";
  239. if (chkOrder.Checked && (cmbOrder.Text.Trim() != ""))
  240. shift = cmbOrder.Value.ToString();
  241. if (chkTim.Checked)
  242. {
  243. if (DateTime.Parse(RegStartTime.Value.ToString()) > DateTime.Parse(RegEndTime.Value.ToString()))
  244. throw new Exception("选择时间区间错误,请重新选择!");
  245. startTim = RegStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  246. endTim = RegEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  247. }
  248. if (chkGroup.Checked && (cmbGroup.Text.Trim() != ""))
  249. group = cmbGroup.Value.ToString();
  250. if (chkOrderNo.Checked)
  251. OrderNo = txtOrderNo.Text;
  252. if (chkJudgeStove.Checked)
  253. JudgeStoveNo = txtJudgeStove.Text;
  254. if (chkBatchNo.Checked)
  255. BatchNo = txtBatchNo.Text;
  256. if (chkJgJudgeStove.Checked)
  257. JgJudgeStoveNo = txtJgJudgeStove.Text;
  258. if (chkBatchNo.Checked)
  259. JgBatchNo = txtJgBatch.Text;
  260. if (string.IsNullOrEmpty(OrderNo) && string.IsNullOrEmpty(JudgeStoveNo) && string.IsNullOrEmpty(startTim))
  261. if (MessageUtil.ShowYesNoAndQuestion("时间/合同/炉号条件未选择,查询时间可能会超时,请确定是否继续查询?") == DialogResult.No)
  262. throw new Exception("");
  263. if (ShowStatus)
  264. {
  265. return new object[]
  266. {
  267. shift,
  268. group,
  269. chkPlineCode.Checked && (cboPline.CheckedItems.Count > 0)
  270. ? cboPline.CheckedItems.Select(p => p.DataValue.ToString()).ToArray()
  271. : _plineCodes,
  272. startTim,
  273. endTim,
  274. OrderNo,
  275. JudgeStoveNo,
  276. BatchNo,
  277. osStatus.Value.ToString2()
  278. };
  279. }
  280. else if (ShowJg)
  281. {
  282. return new object[]
  283. {
  284. shift, group,
  285. chkPlineCode.Checked && (cboPline.CheckedItems.Count > 0)
  286. ? cboPline.CheckedItems.Select(p => p.DataValue.ToString()).ToArray()
  287. : _plineCodes,
  288. startTim, endTim, OrderNo, JudgeStoveNo, BatchNo,JgJudgeStoveNo,JgBatchNo
  289. };
  290. }
  291. else
  292. {
  293. return new object[]
  294. {
  295. shift, group,
  296. chkPlineCode.Checked && (cboPline.CheckedItems.Count > 0)
  297. ? cboPline.CheckedItems.Select(p => p.DataValue.ToString()).ToArray()
  298. : _plineCodes,
  299. startTim, endTim, OrderNo, JudgeStoveNo, BatchNo
  300. };
  301. }
  302. }
  303. /// <summary>
  304. /// 加载界面信息
  305. /// </summary>
  306. protected virtual void LoadView()
  307. {
  308. }
  309. protected override void OnLoad(EventArgs e)
  310. {
  311. base.OnLoad(e);
  312. LoadView();
  313. Resort();
  314. osStatus.Visible = ShowStatus;
  315. chkJgJudgeStove.Visible = ShowJg;
  316. chkJgBatch.Visible = ShowJg;
  317. if ((_plineCodes.Length > 1) &&
  318. ((_plineCodes[1] == "C038") || (_plineCodes[1] == "C039") || (_plineCodes[1] == "C049") ||
  319. (_plineCodes[1] == "C050") ||
  320. (_plineCodes[1] == "C051") || (_plineCodes[1] == "C057")))
  321. {
  322. RegStartTime.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 20:00"));
  323. RegEndTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 19:59"));
  324. }
  325. else
  326. {
  327. RegStartTime.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 21:00"));
  328. RegEndTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 20:59"));
  329. }
  330. SetStaticsInfoSum(ref CrackDetectGrid, SumList, true, ShowRecordCount);
  331. if (ShowRecordCount)
  332. {
  333. //SetStaticsInfoCount(ref CrackDetectGrid);
  334. }
  335. if (ob == null) return;
  336. _plineCodes = comm.InitDropPlineCodePower("F", cboPline, ValidDataPurviewIds, ob);
  337. Query();
  338. }
  339. private void chkStarts_CheckedChanged(object sender, EventArgs e)
  340. {
  341. if (chkTim.Checked)
  342. {
  343. RegStartTime.Enabled = true;
  344. RegEndTime.Enabled = true;
  345. plDate.Visible = true;
  346. }
  347. else
  348. {
  349. RegStartTime.Enabled = false;
  350. RegEndTime.Enabled = false;
  351. plDate.Visible = false;
  352. }
  353. cmbOrder.Enabled = chkOrder.Checked;
  354. cmbGroup.Enabled = chkGroup.Checked;
  355. txtOrderNo.Enabled = chkOrderNo.Checked;
  356. txtJudgeStove.Enabled = chkJudgeStove.Checked;
  357. txtBatchNo.Enabled = chkBatchNo.Checked;
  358. txtJgJudgeStove.Enabled = chkJgJudgeStove.Checked;
  359. txtJgBatch.Enabled = chkJgBatch.Checked;
  360. cmbOrder.Visible = chkOrder.Checked;
  361. cmbGroup.Visible = chkGroup.Checked;
  362. txtOrderNo.Visible = chkOrderNo.Checked;
  363. txtJudgeStove.Visible = chkJudgeStove.Checked;
  364. txtBatchNo.Visible = chkBatchNo.Checked;
  365. cboPline.Visible = chkPlineCode.Checked;
  366. txtJgJudgeStove.Visible = chkJgJudgeStove.Checked;
  367. txtJgBatch.Visible = chkJgBatch.Checked;
  368. }
  369. /// <summary>
  370. /// 汇总方法
  371. /// </summary>
  372. /// <param name="myGrid1"></param>
  373. /// <param name="alistColumns"></param>
  374. /// <param name="clearExists"></param>
  375. protected void SetStaticsInfoSum(ref UltraGrid myGrid1, List<string> alistColumns, bool clearExists,bool ShowCount)
  376. {
  377. try
  378. {
  379. var band = myGrid1.DisplayLayout.Bands[0];
  380. if (clearExists)
  381. band.Summaries.Clear();
  382. band.Override.SummaryFooterCaptionVisible = DefaultableBoolean.False;
  383. for (var i = 0; i < alistColumns.Count; i++)
  384. {
  385. try
  386. {
  387. if (!band.Columns.Exists(alistColumns[i])) continue;
  388. var summary = band.Summaries.Add(SummaryType.Sum, band.Columns[alistColumns[i]]);
  389. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  390. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  391. summary.DisplayFormat = "{0}";
  392. summary.Appearance.TextHAlign = HAlign.Right;
  393. summary.Appearance.TextVAlign = VAlign.Middle;
  394. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  395. }
  396. catch
  397. {
  398. // ignored
  399. }
  400. }
  401. if (ShowCount && ViewList.Count>0)
  402. {
  403. var summary = band.Summaries.Add(SummaryType.Count, band.Columns[ViewList[0]]);
  404. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  405. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  406. summary.DisplayFormat = "共{0}条记录";
  407. summary.Appearance.TextHAlign = HAlign.Left;
  408. summary.Appearance.TextVAlign = VAlign.Middle;
  409. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  410. }
  411. }
  412. catch
  413. {
  414. }
  415. }
  416. /// <summary>
  417. /// 报告查询
  418. /// </summary>
  419. /// <param name="sender"></param>
  420. /// <param name="e"></param>
  421. private void uteReport_EditorButtonClick(object sender, EditorButtonEventArgs e)
  422. {
  423. var down = new FormFileDown(ob, CrackDetectGrid.ActiveCell.Value.ToString2());
  424. down.CtrlFileDown1.Button3.Visible = false;
  425. down.ShowDialog();
  426. }
  427. }
  428. }