using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Tool; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinEditors; using Infragistics.Win.UltraWinGrid; using ButtonDisplayStyle = Infragistics.Win.UltraWinGrid.ButtonDisplayStyle; namespace Core.StlMes.Client.Mcp.Mch.Report { public partial class FrmReportBase : FrmBase { private string[] _plineCodes = {}; /// /// 子表排序 /// protected List Band2 = new List(); /// /// 是否显示勾选 /// protected bool NeedCheck = false; /// /// 人员字段顺序 /// protected List OperationInfo = new List { "ReportPath", "ProUser", "Responsible", "CreatetUser", "ProShift", "LoadShift", "ProGroup", "LoadGroup", "ProTime", "LoadTime", "ProEndTime", "ColTime", "ColEndTime", "CreateTime" }; /// /// 生产信息区域顺序 /// protected List ProductionInfo = new List { "MachineNo", "ProNum", "ProWt", "QualifiedNum", "QualifiedWt", "HeadCutNum", "FailNum", "FailWt", "ReProNum", "ReProWt", "FinalQualifiedNum", "FinalQualifiedWt" }; /// /// 参数区域字段顺序 /// protected List ResultNoPara = new List(); /// /// 是否显示记录数 /// protected bool ShowRecordCount = true; /// /// 需要显示汇总的字段 /// protected List SumList = new List { "ProNum", "ProWt", "HeadCutNum", "FailNum", "FailWt", "ReProNum", "ReProWt", "QualifiedNum", "QualifiedWt", "UnqualifiedNum", "UnqualifiedWt", "FinalQualifiedNum", "FinalQualifiedWt", "CouplingNum", "CouplingWt", "CheckNum", "CheckWt", "ActCount", "ActWeight" }; /// /// 合同信息 /// protected List ViewList = new List { "ProYearMonthDay", "JudgeStoveNo", "BatchNo", "PlineName", "Producname", "Steelname", "Gradename", "Outdiameter", "Wallthick", "ModelDesc", "OrderNo" }; public FrmReportBase() { InitializeComponent(); IsLoadUserView = true; } protected List QueryShows { get; set; } /// /// 按照区域重新排序 /// private void Resort() { var ColumnSeq = ViewList.Concat(ProductionInfo).Concat(ResultNoPara).Concat(OperationInfo).ToList(); if (NeedCheck) { ColumnSeq = new List { "FrimFlag" }.Concat(ColumnSeq).ToList(); ColumnSeq = new List { "Chk" }.Concat(ColumnSeq).ToList(); CrackDetectGrid.DisplayLayout.Bands[0].Columns.Add("Chk","选择"); } SortBand(ColumnSeq, CrackDetectGrid.DisplayLayout.Bands[0]); if (CrackDetectGrid.DisplayLayout.Bands.Count > 1) SortBand(Band2, CrackDetectGrid.DisplayLayout.Bands[1]); } private void QueryAreaShow() { foreach (System.Windows.Forms.Control clientAreaControl in plQuery.ClientArea.Controls) clientAreaControl.Visible = false; plQuery.ClientArea.Controls.Clear(); for (var i = 0; i < QueryShows.Count; i++) { var show = QueryShows[i]; switch (show) { case QueryShow.Date: plQuery.ClientArea.Controls.Add(chkTim); plQuery.ClientArea.Controls.Add(plDate); chkTim.Visible = true; chkTim.Checked = true; break; case QueryShow.YearMonthDate: plQuery.ClientArea.Controls.Add(chkYear); plQuery.ClientArea.Controls.Add(plnDateYearMonth); chkYear.Visible = true; chkYear.Checked = true; break; case QueryShow.OrderNo: plQuery.ClientArea.Controls.Add(chkOrderNo); plQuery.ClientArea.Controls.Add(txtOrderNo); chkOrderNo.Visible = true; break; case QueryShow.JudgeStove: plQuery.ClientArea.Controls.Add(chkJudgeStove); plQuery.ClientArea.Controls.Add(txtJudgeStove); chkJudgeStove.Visible = true; break; case QueryShow.BatchNo: plQuery.ClientArea.Controls.Add(chkBatchNo); plQuery.ClientArea.Controls.Add(txtBatchNo); chkBatchNo.Visible = true; break; case QueryShow.JudgeStoveJg: plQuery.ClientArea.Controls.Add(chkJgJudgeStove); plQuery.ClientArea.Controls.Add(txtJgJudgeStove); chkJgJudgeStove.Visible = true; break; case QueryShow.BatchNoJg: plQuery.ClientArea.Controls.Add(chkJgBatch); plQuery.ClientArea.Controls.Add(txtJgBatch); chkJgBatch.Visible = true; break; case QueryShow.Shift: plQuery.ClientArea.Controls.Add(chkOrder); plQuery.ClientArea.Controls.Add(cmbOrder); chkOrder.Visible = true; break; case QueryShow.Group: plQuery.ClientArea.Controls.Add(chkGroup); plQuery.ClientArea.Controls.Add(cmbGroup); chkGroup.Visible = true; break; case QueryShow.Plines: plQuery.ClientArea.Controls.Add(chkPlineCode); plQuery.ClientArea.Controls.Add(cboPline); chkPlineCode.Visible = true; break; case QueryShow.Status: plQuery.ClientArea.Controls.Add(osStatus); osStatus.Visible = true; break; } } } /// /// Band重新排序 /// /// /// private void SortBand(List ColumnSeq, UltraGridBand band) { foreach (var Columns in band.Columns) ResetColumns(Columns); var ColumnX = 0; for (var i = 0; i < ColumnSeq.Count; i++) { var Key = ColumnSeq[i]; if (band.Columns.Exists(Key)) { band.Columns[Key].Hidden = false; band.Columns[Key].RowLayoutColumnInfo.OriginX = 2*ColumnX++; band.Columns[Key].RowLayoutColumnInfo.OriginY = 0; } } } /// /// 重置字段属性,或绑定 /// /// protected virtual void ResetColumns(UltraGridColumn Columns) { Columns.Hidden = true; Columns.CellActivation = Activation.ActivateOnly; if (NeedCheck && (Columns.Key == "Chk")) { Columns.CellActivation = Activation.AllowEdit; Columns.Style= Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox; Columns.DataType = typeof(bool); } if ((Columns.Key == "ProShift") || (Columns.Key == "LoadShift")) Columns.EditorComponent = cmbBc; if ((Columns.Key == "ProGroup") || (Columns.Key == "LoadGroup")) Columns.EditorComponent = cmbBz; if ((Columns.Key == "ReportPath") || (Columns.Key == "ReportFull")) { Columns.EditorComponent = uteReport; Columns.ButtonDisplayStyle = ButtonDisplayStyle.Always; } } public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "DoQuery": Query(); break; case "Export": Export(); break; case "DoUpdate": DoUpdate(); break; case "DoClose": Close(); break; case "Send": Send(); break; case "Confirm": Confirm(); break; } } /// /// 更新 /// protected virtual void DoUpdate() { } protected virtual void Send() { } protected virtual void Confirm() { } /// /// 导出 /// protected virtual void Export() { GridHelper.ulGridToExcel(CrackDetectGrid, Text); } /// /// 查询 /// protected void Query() { var Message = ""; var wf = new WaitingForm2("正在查询,请稍候...."); try { Cursor = Cursors.WaitCursor; QuerySinglePlan(); GridHelper.RefreshAndAutoSizeExceptColumns(CrackDetectGrid, "ReportPath"); } catch (Exception ex) { if (ex.Message.ToString2() != "") Message = ex.Message; } finally { wf.Close(); Cursor = Cursors.Default; } if (!string.IsNullOrWhiteSpace(Message)) MessageBox.Show(Message); } /// /// 查询 /// protected virtual void QuerySinglePlan() { } /// /// 获取查询区域参数 /// /// protected virtual object[] GetQueryCondition() { var dic = new Dictionary(); if (QueryShows.Contains(QueryShow.Date) && chkTim.Checked) { if (DateTime.Parse(RegStartTime.Value.ToString()) > DateTime.Parse(RegEndTime.Value.ToString())) throw new Exception("选择时间区间错误,请重新选择!"); dic.Add("start", RegStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss")); dic.Add("end", RegEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss")); } if (QueryShows.Contains(QueryShow.YearMonthDate) && chkYear.Checked) { dic.Add("YearMonthStart", dtpYearStart.Value.ToString("yyyyMM")); dic.Add("YearMonthEnd", dtpYearEnd.Value.ToString("yyyyMM")); } dic.Add("plineCodes", chkPlineCode.Checked && (cboPline.CheckedItems.Count > 0) ? cboPline.CheckedItems.Select(p => p.DataValue.ToString()).ToArray() : _plineCodes); if (QueryShows.Contains(QueryShow.Shift) && chkOrder.Checked && (cmbOrder.Text.Trim() != "")) dic.Add("shift", cmbOrder.Value.ToString()); if (QueryShows.Contains(QueryShow.Group) && chkGroup.Checked && (cmbGroup.Text.Trim() != "")) dic.Add("group", cmbGroup.Value.ToString()); if (QueryShows.Contains(QueryShow.OrderNo) && chkOrderNo.Checked) dic.Add("orderNo", txtOrderNo.Text); if (QueryShows.Contains(QueryShow.JudgeStove) && chkJudgeStove.Checked) dic.Add("judgeStoveNo", txtJudgeStove.Text); if (QueryShows.Contains(QueryShow.BatchNo) && chkBatchNo.Checked) dic.Add("batchNo", txtBatchNo.Text); if (QueryShows.Contains(QueryShow.JudgeStoveJg) && chkJgJudgeStove.Checked) dic.Add("judgeStoveNoJg", txtJgJudgeStove.Text); if (QueryShows.Contains(QueryShow.BatchNoJg) && chkJgBatch.Checked) dic.Add("batchNoJg", txtJgBatch.Text); if (QueryShows.Contains(QueryShow.Status)) dic.Add("status", osStatus.Value.ToString2()); if (!dic.ContainsKey("start") && !dic.ContainsKey("YearMonthStart") && !dic.ContainsKey("orderNo") && !dic.ContainsKey("judgeStoveNo")) if (MessageUtil.ShowYesNoAndQuestion("时间/合同/炉号条件未选择,查询时间可能会超时,请确定是否继续查询?") == DialogResult.No) throw new Exception(""); return new object[]{dic}; } /// /// 加载界面信息 /// protected virtual void LoadView() { } protected override void OnLoad(EventArgs e) { base.OnLoad(e); QueryShows = new List { QueryShow.Date, QueryShow.OrderNo, QueryShow.JudgeStove, QueryShow.BatchNo, QueryShow.Shift, QueryShow.Group, QueryShow.Plines }; LoadView(); QueryAreaShow(); Resort(); SetStaticsInfoSum(ref CrackDetectGrid, SumList, true, ShowRecordCount); if (ShowRecordCount) { //SetStaticsInfoCount(ref CrackDetectGrid); } if (ob == null) return; _plineCodes = comm.InitDropPlineCodePower("G", cboPline, ValidDataPurviewIds, ob); if ((_plineCodes.Length > 1) && ((_plineCodes[1] == "C038") || (_plineCodes[1] == "C039") || (_plineCodes[1] == "C049") || (_plineCodes[1] == "C050") || (_plineCodes[1] == "C051") || (_plineCodes[1] == "C057"))) { RegStartTime.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 20:00")); RegEndTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 19:59")); } else { RegStartTime.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 21:00")); RegEndTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 20:59")); } dtpYearEnd.Value = DateTime.Now; dtpYearStart.Value = DateTime.Now; Query(); } private void chkStarts_CheckedChanged(object sender, EventArgs e) { if (chkTim.Checked) { RegStartTime.Enabled = true; RegEndTime.Enabled = true; plDate.Visible = true; } else { RegStartTime.Enabled = false; RegEndTime.Enabled = false; plDate.Visible = false; } if (chkYear.Checked) { dtpYearStart.Enabled = true; dtpYearEnd.Enabled = true; plnDateYearMonth.Visible = true; } else { dtpYearStart.Enabled = false; dtpYearEnd.Enabled = false; plnDateYearMonth.Visible = false; } cmbOrder.Enabled = chkOrder.Checked; cmbGroup.Enabled = chkGroup.Checked; txtOrderNo.Enabled = chkOrderNo.Checked; txtJudgeStove.Enabled = chkJudgeStove.Checked; txtBatchNo.Enabled = chkBatchNo.Checked; txtJgJudgeStove.Enabled = chkJgJudgeStove.Checked; txtJgBatch.Enabled = chkJgBatch.Checked; cmbOrder.Visible = chkOrder.Checked; cmbGroup.Visible = chkGroup.Checked; txtOrderNo.Visible = chkOrderNo.Checked; txtJudgeStove.Visible = chkJudgeStove.Checked; txtBatchNo.Visible = chkBatchNo.Checked; cboPline.Visible = chkPlineCode.Checked; txtJgJudgeStove.Visible = chkJgJudgeStove.Checked; txtJgBatch.Visible = chkJgBatch.Checked; } /// /// 汇总方法 /// /// /// /// protected void SetStaticsInfoSum(ref UltraGrid myGrid1, List alistColumns, bool clearExists, bool ShowCount) { try { var band = myGrid1.DisplayLayout.Bands[0]; if (clearExists) band.Summaries.Clear(); band.Override.SummaryFooterCaptionVisible = DefaultableBoolean.False; for (var i = 0; i < alistColumns.Count; i++) try { if (!band.Columns.Exists(alistColumns[i])) continue; var summary = band.Summaries.Add(SummaryType.Sum, band.Columns[alistColumns[i]]); summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed; summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn; summary.DisplayFormat = "{0}"; summary.Appearance.TextHAlign = HAlign.Right; summary.Appearance.TextVAlign = VAlign.Middle; summary.Appearance.FontData.Bold = DefaultableBoolean.True; } catch { // ignored } if (ShowCount && (ViewList.Count > 0)) { var summary = band.Summaries.Add(SummaryType.Count, band.Columns[ViewList[0]]); summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed; summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn; summary.DisplayFormat = "共{0}条记录"; summary.Appearance.TextHAlign = HAlign.Left; summary.Appearance.TextVAlign = VAlign.Middle; summary.Appearance.FontData.Bold = DefaultableBoolean.True; } } catch { } } /// /// 报告查询 /// /// /// private void uteReport_EditorButtonClick(object sender, EditorButtonEventArgs e) { var down = new FormFileDown(ob, CrackDetectGrid.ActiveCell.Value.ToString2()); down.CtrlFileDown1.Button3.Visible = false; down.ShowDialog(); } protected enum QueryShow { Date, YearMonthDate, OrderNo, JudgeStove, BatchNo, JudgeStoveJg, BatchNoJg, Shift, Group, Plines, Status } } }