using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data; using Mesnac.Action.Base; using Mesnac.Codd.Session; using System.Reflection; using Mesnac.Controls.Base; using Mesnac.Action.ChemicalWeighing.Entity; namespace Mesnac.Action.ChemicalWeighing.Report.SolventReport { /// /// 生产报表业务 /// public class SelectRowAction : ChemicalWeighingAction,IAction { #region 字段定义 public static bool IsFirstRun = true; //是否首次运行 private RuntimeParameter _runtime; private Control _clientGridControl = null; //多维表控件 private DbMCControl _dgvLRPlan = null; //生产计划 private DbMCControl _weighGridControl = null; //物料详情 private DataTable dataTable = null; #endregion public void Run(RuntimeParameter runtime) { base.RunIni(runtime); this._runtime = runtime; #region 获取界面生产计划控件和称量明细控件 this._dgvLRPlan = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Hw_plan").FirstOrDefault(); if (_dgvLRPlan == null || !(_dgvLRPlan.BaseControl is DataGridView)) { ICSharpCode.Core.LoggingService.Warn("{生产报表} 缺少生产计划DataGridView控件..."); runtime.IsReturn = false; return; } DbMCControl weighGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Hw_weigh").FirstOrDefault(); if (weighGridControl == null || !(weighGridControl.BaseControl is DataGridView)) { ICSharpCode.Core.LoggingService.Warn("{生产报表} 缺少生产计划DataGridView控件..."); runtime.IsReturn = false; return; } Mesnac.Controls.Default.MultiColHeaderDgv clientGrid = (this._clientGridControl as Mesnac.Controls.Default.MultiColHeaderDgv); dataTable = new DataTable("ProductionDT"); #endregion DataGridView lR_planGridView = this._dgvLRPlan.BaseControl as DataGridView; if (lR_planGridView.SelectedRows.Count == 1) { string plan = lR_planGridView.SelectedRows[0].Cells["Plan_ID"].Value as string;//计划号 //string Recipe= lR_planGridView.SelectedRows[0].Cells["Recipe_ID"].Value as string;//配方 string weigh = lR_planGridView.SelectedRows[0].Cells["Dosing_Id"].Value as string;//批次 if (!string.IsNullOrEmpty(plan)&& !string.IsNullOrEmpty(weigh)) { #region 数据源获取及定义 DataTable lR_Weighs = XlDbHelper.GetLRWeighDataTable(plan, weigh); #endregion this._weighGridControl = weighGridControl; if (this._weighGridControl != null && lR_Weighs != null) { _weighGridControl.BaseControl.BindDataSource = null; _weighGridControl.BaseControl.BindDataSource = lR_Weighs; } else { this._weighGridControl.BaseControl.BindDataSource = null; } } } } #region 方法定义 #region 建立表头结构 private void BuildTableHead(TreeView treeView) { dataTable.Columns.Add("物料名称", typeof(System.String)); dataTable.Columns.Add("设定值", typeof(decimal)); dataTable.Columns.Add("实际值", typeof(decimal)); dataTable.Columns.Add("设置误差", typeof(decimal)); dataTable.Columns.Add("实际误差", typeof(decimal)); } #endregion #region DataTable新增最大最小平均合计值行 private void DataTableAdd(int mNum) { if (mNum == 0) return; //最大值行 DataRow drowMax = dataTable.NewRow(); drowMax["Weight_Time"] = "最大值"; for (int i = 0; i < mNum; i++) { drowMax["Set_Weight" + (i + 1).ToString()] = dataTable.Compute("max(Set_Weight" + (i + 1).ToString() + ")", ""); drowMax["Set_Error" + (i + 1).ToString()] = dataTable.Compute("max(Set_Error" + (i + 1).ToString() + ")", ""); drowMax["Waste_Time" + (i + 1).ToString()] = dataTable.Compute("max(Waste_Time" + (i + 1).ToString() + ")", ""); } drowMax["SumSet_Weight"] = dataTable.Compute("max(SumSet_Weight)", ""); drowMax["SumSet_Error"] = dataTable.Compute("max(SumSet_Error)", ""); drowMax["SumWaste_Time"] = dataTable.Compute("max(SumWaste_Time)", ""); drowMax["CheckSet_Weight"] = dataTable.Compute("max(CheckSet_Weight)", ""); drowMax["CheckSet_Error"] = dataTable.Compute("max(CheckSet_Error)", ""); drowMax["CheckWaste_Time"] = dataTable.Compute("max(CheckWaste_Time)", ""); //最小值行 DataRow drowMin = dataTable.NewRow(); drowMin["Weight_Time"] = "最小值"; for (int i = 0; i < mNum; i++) { drowMin["Set_Weight" + (i + 1).ToString()] = dataTable.Compute("min(Set_Weight" + (i + 1).ToString() + ")", ""); drowMin["Set_Error" + (i + 1).ToString()] = dataTable.Compute("min(Set_Error" + (i + 1).ToString() + ")", ""); drowMin["Waste_Time" + (i + 1).ToString()] = dataTable.Compute("min(Waste_Time" + (i + 1).ToString() + ")", ""); } drowMin["SumSet_Weight"] = dataTable.Compute("min(SumSet_Weight)", ""); drowMin["SumSet_Error"] = dataTable.Compute("min(SumSet_Error)", ""); drowMin["SumWaste_Time"] = dataTable.Compute("min(SumWaste_Time)", ""); drowMin["CheckSet_Weight"] = dataTable.Compute("min(CheckSet_Weight)", ""); drowMin["CheckSet_Error"] = dataTable.Compute("min(CheckSet_Error)", ""); drowMin["CheckWaste_Time"] = dataTable.Compute("min(CheckWaste_Time)", ""); //平均值行 DataRow drowAvg = dataTable.NewRow(); drowAvg["Weight_Time"] = "平均值"; for (int i = 0; i < mNum; i++) { drowAvg["Set_Weight" + (i + 1).ToString()] = dataTable.Compute("avg(Set_Weight" + (i + 1).ToString() + ")", ""); drowAvg["Set_Error" + (i + 1).ToString()] = dataTable.Compute("avg(Set_Error" + (i + 1).ToString() + ")", ""); drowAvg["Waste_Time" + (i + 1).ToString()] = dataTable.Compute("avg(Waste_Time" + (i + 1).ToString() + ")", ""); } drowAvg["SumSet_Weight"] = dataTable.Compute("avg(SumSet_Weight)", ""); drowAvg["SumSet_Error"] = dataTable.Compute("avg(SumSet_Error)", ""); drowAvg["SumWaste_Time"] = dataTable.Compute("avg(SumWaste_Time)", ""); drowAvg["CheckSet_Weight"] = dataTable.Compute("avg(CheckSet_Weight)", ""); drowAvg["CheckSet_Error"] = dataTable.Compute("avg(CheckSet_Error)", ""); drowAvg["CheckWaste_Time"] = dataTable.Compute("avg(CheckWaste_Time)", ""); //合计 DataRow drowSum = dataTable.NewRow(); drowSum["Weight_Time"] = "合计"; for (int i = 0; i < mNum; i++) { drowSum["Set_Weight" + (i + 1).ToString()] = dataTable.Compute("sum(Set_Weight" + (i + 1).ToString() + ")", ""); drowSum["Set_Error" + (i + 1).ToString()] = dataTable.Compute("sum(Set_Error" + (i + 1).ToString() + ")", ""); drowSum["Waste_Time" + (i + 1).ToString()] = dataTable.Compute("sum(Waste_Time" + (i + 1).ToString() + ")", ""); } drowSum["SumSet_Weight"] = dataTable.Compute("sum(SumSet_Weight)", ""); drowSum["SumSet_Error"] = dataTable.Compute("sum(SumSet_Error)", ""); drowSum["SumWaste_Time"] = dataTable.Compute("sum(SumWaste_Time)", ""); drowSum["CheckSet_Weight"] = dataTable.Compute("sum(CheckSet_Weight)", ""); drowSum["CheckSet_Error"] = dataTable.Compute("sum(CheckSet_Error)", ""); drowSum["CheckWaste_Time"] = dataTable.Compute("sum(CheckWaste_Time)", ""); dataTable.Rows.Add(drowMax); dataTable.Rows.Add(drowMin); dataTable.Rows.Add(drowAvg); dataTable.Rows.Add(drowSum); } #endregion #endregion } }