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
}