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; using Mesnac.Action.ChemicalWeighing.Product.PptPlan; 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); #endregion DataGridView lR_planGridView = this._dgvLRPlan.BaseControl as DataGridView; if (lR_planGridView.SelectedRows.Count == 1) { string plan_Id = lR_planGridView.SelectedRows[0].Cells["Plan_Id"].Value as string; string real_Num =Convert.ToInt32(lR_planGridView.SelectedRows[0].Cells["Real_Num"].Value).ToString(); if (!string.IsNullOrEmpty(plan_Id)) { #region 数据源获取及定义 DataTable lR_Weighs = PlanHelper.GetHwWeighDataTable(plan_Id, real_Num); #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 数据表填充 private void DataTableWrite(List lR_Recipes, List lR_Weighs) { //if(lR_Recipes != null && lR_Recipes.Count > 0) //{ // for(int i = 0; i < lR_Recipes.Count; i++) // { // int sumRealWaste_Time = 0; //加和时间 // DataRow drow = dataTable.NewRow(); // //每车物料数据填入 // List curWeights = lR_Weighs.FindAll(x => x.Plan_id == lR_Recipes[i].Plan_id); // if(curWeights != null && curWeights.Count > 0) // { // for(int j = 0;j< curWeights.Count; j++) // { // drow["Set_Weight" + (j + 1).ToString()] = curWeights[j].Real_Weight; // drow["Set_Error" + (j + 1).ToString()] = curWeights[j].Real_Error; // drow["Waste_Time" + (j + 1).ToString()] = curWeights[j].Waste_Time; // sumRealWaste_Time = sumRealWaste_Time + (int)curWeights[j].Waste_Time; // } // } // dataTable.Rows.Add(drow); // } //} } #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 } }