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
}
}
}