using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Mesnac.Action.Base; using Mesnac.Controls.Base; using Mesnac.Controls.Default; using System.Windows.Forms; using Mesnac.Codd.Session; namespace Mesnac.Action.Feeding.Technology { public class SelectedRecipe : FeedingAction, IAction { private DataTable FormatDataTable(DataTable dt) { for (int i = 0; i < dt.Rows.Count; i++) { foreach (DataColumn dc in dt.Columns) { if (dc.DataType == typeof(double?) || dc.DataType == typeof(double) || dc.DataType == typeof(decimal) || dc.DataType == typeof(int)) { if (dt.Rows[i][dc] != null && dt.Rows[i][dc] != DBNull.Value) { double d = 0.0; string ss = dt.Rows[i][dc].ToString(); if (double.TryParse(ss, out d) && d == 0) { dt.Rows[i][dc] = DBNull.Value; } else if (dc.DataType != typeof(int)) { dt.Rows[i][dc] = String.Format("{0:f3}", dt.Rows[i][dc]); } } } } } return dt; } /// /// 初始化称量数据 /// /// /// /// /// private DataTable IniWeightData(DbHelper dbHelper, string recipeid, string weightType) { string sqlstr = "SELECT weight_id as SeqInx,* FROM pmt_weigh WHERE RecipeObjID=" + recipeid + " AND weigh_type=" + weightType + " ORDER BY weight_id"; DbMCSource dbsource = base.GetAllDbMCSources().FirstOrDefault(); dbHelper.CommandType = CommandType.Text; dbHelper.ClearParameter(); dbHelper.CommandText = sqlstr; DataTable weight = dbHelper.ToDataTable(); foreach (DataColumn dc in weight.Columns) { dc.ReadOnly = false; dc.AllowDBNull = true; } FormatDataTable(weight); for (int i = weight.Rows.Count + 1; i <= 10; i++) { DataRow dr = weight.NewRow(); dr["ObjID"] = i; dr["weight_id"] = i; dr["SeqInx"] = i; dr["act_code"] = string.Empty; dr["child_name"] = string.Empty; weight.Rows.Add(dr); } return weight; } /// /// 初始化密炼数据 /// /// /// /// private DataTable IniMixingData(DbHelper dbHelper, string recipeid) { string sqlstr = "SELECT mix_id as SeqInx,* FROM pmt_mix WHERE RecipeObjID=" + recipeid + " ORDER BY mix_id"; DbMCSource dbsource = base.GetAllDbMCSources().FirstOrDefault(); dbHelper.CommandType = CommandType.Text; dbHelper.ClearParameter(); dbHelper.CommandText = sqlstr; DataTable mixing = dbHelper.ToDataTable(); foreach (DataColumn dc in mixing.Columns) { dc.ReadOnly = false; dc.AllowDBNull = true; } FormatDataTable(mixing); for (int i = mixing.Rows.Count + 1; i <= 30; i++) { DataRow dr = mixing.NewRow(); dr["ObjID"] = i; dr["mix_id"] = i; dr["SeqInx"] = i; dr["act_code"] = string.Empty; dr["term_code"] = string.Empty; mixing.Rows.Add(dr); } return mixing; } public void Run(RuntimeParameter runtime) { base.RunIni(runtime); DbMCSource dbsource = base.GetAllDbMCSources().FirstOrDefault(); DbMCControl ObjIDControl = base.GetDbMCControlByKey("[" + dbsource.DesignSource + "].[pmt_recipe].[ObjID]").FirstOrDefault(); if (ObjIDControl == null) { return; } if (ObjIDControl.BaseControl.MCValue == null) { return; } string recipeid = ObjIDControl.BaseControl.MCValue.ToString(); if (string.IsNullOrWhiteSpace(recipeid)) { return; } DbHelper dbHelper = NewDbHelper(dbsource.DesignSource); if (dbHelper == null) { return; } dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = "SELECT * FROM dbo.pmt_recipe WHERE ObjID='" + recipeid + "'"; DataTable dt = dbHelper.ToDataTable(); if (dt.Rows.Count == 0) { return; } foreach (DbMCControl control in GetAllDbMCControls()) { if (!string.IsNullOrWhiteSpace(control.DataTable) && control.DataTable.Equals("pmt_recipe", StringComparison.CurrentCultureIgnoreCase) && !string.IsNullOrWhiteSpace(control.DataField) && (base.DbOptionTypesIsModify(control.BaseControl))) { control.BaseControl.MCValue = dt.Rows[0][control.DataField]; } } List gridList = GetTControls(); foreach (MCDataGridView grid in gridList) { if (grid.MCKey != null && grid.MCKey.ToLower().StartsWith("PmtWeight.".ToLower())) { int iType = 0; if (int.TryParse(grid.MCKey.Substring("PmtWeight.".Length).Trim(), out iType)) { grid.DataSource = IniWeightData(dbHelper, recipeid, iType.ToString()); } } if (grid.MCKey != null && grid.MCKey.ToLower() == "PmtMixing".ToLower()) { grid.DataSource = IniMixingData(dbHelper, recipeid); } } } } }