using System; using System.Collections.Generic; using System.Linq; using System.Text; using Mesnac.Action.Base; using Mesnac.Controls.Base; using System.Data; using Mesnac.Controls.Default; using Mesnac.Codd.Session; namespace Mesnac.Action.Feeding.Report { #region 获取物料投放数据 public class MaterialCount { /// /// 获取物料投放数据 /// /// /// /// /// /// /// /// public static DataTable GetMaterialCountData(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string Recipecode, string Classcode, string Shiftcode, string StartDate, string EndDate) { StringBuilder sqlsb = new StringBuilder(); sqlsb.Append(@"SELECT PptWeigh.matercode, BasMaterial.MaterialName, SUM(PptWeigh.realweight) AS Tongji, PptWeigh.unitname FROM PptWeigh INNER JOIN BasMaterial ON PptWeigh.matercode = BasMaterial.MaterialCode left join PptPlan on PptWeigh.planid=pptplan.PlanID where 1=1 "); if (!string.IsNullOrWhiteSpace(Recipecode)) { sqlsb.Append(" and PptPlan.recipematerialcode='" + Recipecode + "'"); } if (!string.IsNullOrWhiteSpace(Classcode)) { sqlsb.Append(" and PptPlan.classid='" + Classcode + "'"); } if (!string.IsNullOrWhiteSpace(Shiftcode)) { sqlsb.Append(" and PptPlan.shiftid='" + Classcode + "'"); } if (!string.IsNullOrWhiteSpace(StartDate)) { sqlsb.Append(" AND PptWeigh.weightime between '" + StartDate + "' and '" + EndDate + "'"); } sqlsb.Append(" GROUP BY PptWeigh.matercode, BasMaterial.MaterialName, PptWeigh.unitname"); DatabaseAction action = new DatabaseAction(); DbHelper dbHelper; dbHelper = action.NewDbHelper(dbType); if (dbHelper == null) { action.LogError("获取数据连接失败..."); return new DataTable(); } dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = sqlsb.ToString(); DataTable table = dbHelper.ToDataTable(); return table; } } #endregion #region 物料使用报表初始化 /// /// 物料使用报表初始化 /// public class MaterialCountLoad : FeedingAction, IAction { public void Run(RuntimeParameter runtime) { base.RunIni(runtime); List mcControllist = GetAllDbMCControlsByOption(DbOptionTypes.Query);//获取所有待初始化控件 IBaseControl startdate = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "startdate").FirstOrDefault().BaseControl; IBaseControl starttime = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "starttime").FirstOrDefault().BaseControl; if (startdate != null && starttime != null) { startdate.MCValue = DateTime.Now.AddDays(-1).ToShortDateString(); starttime.MCValue = DateTime.Now; } IBaseControl enddate = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "enddate").FirstOrDefault().BaseControl; IBaseControl endtime = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "endtime").FirstOrDefault().BaseControl; if (enddate != null && endtime != null) { enddate.MCValue = DateTime.Now; endtime.MCValue = DateTime.Now; } DbHelper dbHelper; foreach (DbMCControl c in mcControllist) { if (c.BaseControl.MCKey == null) continue; if (c.DbMCSource != null && c.BaseControl is MCCombobox) { DbMCControl pptlotcontrol = this.GetDbMCControlByBaseControlKey(c.BaseControl.MCKey).FirstOrDefault(); if (pptlotcontrol != null) { dbHelper = NewDbHelper(pptlotcontrol.DesignSource); if (dbHelper == null) { return; } dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; string strsql = "select * from [" + pptlotcontrol.BaseControl.InitDataSource.ToLower().Trim() + "]"; if (pptlotcontrol.BaseControl.InitDataSource.ToLower().Trim().StartsWith("select")) { strsql = pptlotcontrol.BaseControl.InitDataSource.ToLower().Trim(); } string sqlstr = strsql.ToString(); dbHelper.CommandText = sqlstr; DataTable table = dbHelper.ToDataTable(); pptlotcontrol.BaseControl.BindDataSource = table; } } } } } #endregion #region 物料使用保镖查询 /// /// 物料使用保镖查询 /// public class MaterialCountSelect : FeedingAction, IAction { public void Run(RuntimeParameter runtime) { base.RunIni(runtime); DbMCControl mcButton = this.GetDbMCControlByBaseControlKey("mcbuttonSearch").FirstOrDefault(); if (mcButton == null) { base.LogError("{物料使用报表} 缺少key值为mcbuttonSearch查询按钮..."); return; } StringBuilder sqlsb = new StringBuilder(); sqlsb.Append(@"SELECT PptWeigh.matercode, BasMaterial.MaterialName, SUM(PptWeigh.realweight) AS Tongji, PptWeigh.unitname FROM PptWeigh INNER JOIN BasMaterial ON PptWeigh.matercode = BasMaterial.MaterialCode left join PptPlan on PptWeigh.planid=pptplan.PlanID where 1=1 "); List mcControllist = GetAllDbMCControlsByOption(DbOptionTypes.Query);//获取所有待初始化控件 IBaseControl startdate = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "startdate").FirstOrDefault().BaseControl; IBaseControl starttime = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "starttime").FirstOrDefault().BaseControl; if (startdate != null && starttime != null) { sqlsb.AppendLine(@"AND PptWeigh.weightime>='" + Convert.ToDateTime(startdate.MCValue).ToString("yyyy-MM-dd") + " " + Convert.ToDateTime(starttime.MCValue).ToShortTimeString() + "' "); } IBaseControl enddate = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "enddate").FirstOrDefault().BaseControl; IBaseControl endtime = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "endtime").FirstOrDefault().BaseControl; if (enddate != null && endtime != null) { sqlsb.AppendLine(@"AND PptWeigh.weightime<='" + Convert.ToDateTime(enddate.MCValue).ToString("yyyy-MM-dd") + " " + Convert.ToDateTime(endtime.MCValue).ToShortTimeString() + "' "); } foreach (DbMCControl c in mcControllist) { if (c.BaseControl.MCKey == null) continue; if (c.BaseControl.MCKey.ToLower() != "startdate" && c.BaseControl.MCKey.ToLower() != "starttime" && c.BaseControl.MCKey.ToLower() != "enddate" && c.BaseControl.MCKey.ToLower() != "endtime" && c.BaseControl.MCKey.ToLower() != "startserialid" && c.BaseControl.MCKey.ToLower() != "endserialid") { sqlsb.AppendLine(@"AND " + c.BaseControl.MCKey + "='" + c.BaseControl.MCValue.ToString() + "' "); } } sqlsb.Append(" GROUP BY PptWeigh.matercode, BasMaterial.MaterialName, PptWeigh.unitname"); DbHelper dbHelper = NewDbHelper(mcButton.DesignSource); if (dbHelper == null) { return; } dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; string sqlstr = sqlsb.ToString(); dbHelper.CommandText = sqlstr; DataTable table = dbHelper.ToDataTable(); DbMCControl materialcountgrid = this.GetDbMCControlByBaseControlKey("mcdatagridviewList").FirstOrDefault(); if (materialcountgrid == null) { base.LogError("{物料使用报表} 缺少key值为mcdatagridviewList的报表控件..."); return; } materialcountgrid.BaseControl.BindDataSource = table; } } #endregion #region 物料投放明细 public class MaterialCountReport : FeedingAction, IAction { public void Run(RuntimeParameter runtime) { base.RunIni(runtime); List mcControllist = GetAllDbMCControlsByOption(DbOptionTypes.Query);//获取所有待初始化控件 IBaseControl startdate = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "startdate").FirstOrDefault().BaseControl; IBaseControl starttime = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "starttime").FirstOrDefault().BaseControl; string StartDate = ""; if (startdate != null && starttime != null) { StartDate = Convert.ToDateTime(startdate.MCValue).ToString("yyyy-MM-dd") + " " + Convert.ToDateTime(starttime.MCValue).ToShortTimeString(); } IBaseControl enddate = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "enddate").FirstOrDefault().BaseControl; IBaseControl endtime = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "endtime").FirstOrDefault().BaseControl; string EndDate = ""; if (enddate != null && endtime != null) { EndDate = Convert.ToDateTime(enddate.MCValue).ToString("yyyy-MM-dd") + " " + Convert.ToDateTime(endtime.MCValue).ToShortTimeString(); } IBaseControl recipeName = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "pptplan.recipematerialcode").FirstOrDefault().BaseControl; string RecipeName = (recipeName as MCCombobox).Text; IBaseControl className = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "pptplan.classid").FirstOrDefault().BaseControl; string ClassName = (className as MCCombobox).Text; IBaseControl shiftName = mcControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey.ToLower() == "pptplan.shiftid").FirstOrDefault().BaseControl; string ShiftName = (shiftName as MCCombobox).Text; frmMaterialCount mc = new frmMaterialCount(); mc.StartDate = StartDate; mc.EndDate = EndDate; mc.RecipeName = RecipeName; mc.ClassName = ClassName; mc.ShiftName = ShiftName; mc.RecipeCode = recipeName.MCValue.ToString(); mc.ClassID = className.MCValue.ToString(); mc.ShiftID = shiftName.MCValue.ToString(); mc.ReprotStart(); } } #endregion }