using DevExpress.Office.Utils; using DevExpress.Utils.Drawing.Helpers; using DevExpress.XtraGauges.Core.Model; using ICSharpCode.Core; using Mesnac.Action.Base; using Mesnac.Action.ChemicalWeighing.Entity; using Mesnac.Codd.Session; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Mesnac.Action.ChemicalWeighing.Warehouse { public class ImportAction : ChemicalWeighingAction, IAction { private string caption = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_Caption")); //提示 private DbMCControl _clientGridControl = null; private RuntimeParameter _runtime; public static event EventHandler OnSubRefresh; public void Run(RuntimeParameter runtime) { base.RunIni(runtime); this._runtime = runtime; DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Hw_WareHouse").FirstOrDefault(); if (clientGridControl == null || !(clientGridControl.BaseControl is DataGridView)) { ICSharpCode.Core.LoggingService.Error("{投料管理—添加物料}缺少管理控件..."); return; } this._clientGridControl = clientGridControl; DataGridView gridView = this._clientGridControl.BaseControl as DataGridView; if (gridView.SelectedRows.Count != 1) { string msg1_1 = StringParser.Parse("请选择一行要釜信息"); MessageBox.Show(msg1_1, Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information); this._runtime.IsReturn = true; return; } //string msg = "导入操作会覆盖当前所有信息!是否继续?"; //导入操作会覆盖当前所有信息!是否继续? //if (MessageBox.Show(msg, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) //{ // return; //} base.RunIni(runtime); //必须要调用的 ICSharpCode.Core.LoggingService.Debug("投料参数-导入..."); DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local); if (dbHelper == null) { ICSharpCode.Core.LoggingService.Error("获取本地数据连接失败..."); return; } OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "xls files(*.xls)|*.xls"; ofd.AddExtension = true; DialogResult result = ofd.ShowDialog(); if (result == DialogResult.OK) { try { string fileName = ofd.FileName; if (!String.IsNullOrEmpty(fileName)) { DataSet ds = Mesnac.Basic.DataToFileHandler.Instance.FromExcel(fileName); //判断导入Excel表格式的合法性 if (!ds.Tables[0].Columns.Contains("PId") || !ds.Tables[0].Columns.Contains("ProductName") || !ds.Tables[0].Columns.Contains("BinId") ||!ds.Tables[0].Columns.Contains("Material_Code") || !ds.Tables[0].Columns.Contains("MaterialName") ||!ds.Tables[0].Columns.Contains("MaterialType") || !ds.Tables[0].Columns.Contains("SetWeight") ||!ds.Tables[0].Columns.Contains("SetError") || !ds.Tables[0].Columns.Contains("Difference") ||!ds.Tables[0].Columns.Contains("Fixed") || !ds.Tables[0].Columns.Contains("FixedRatio") || !ds.Tables[0].Columns.Contains("PumpCode") || !ds.Tables[0].Columns.Contains("Weighbridge") || !ds.Tables[0].Columns.Contains("Recipe")) { string msg4 = "导入的Excel表格式不正确!请检查后重试!"; //导入的Excel表格式不正确!请检查后重试! MessageBox.Show(msg4); return; } var selectId = gridView.SelectedRows[0].Cells["ID"].Value.ToString(); if (string.IsNullOrEmpty(selectId)) { string msg4 = "请选择反应釜!"; //导入的Excel表格式不正确!请检查后重试! MessageBox.Show(msg4); return; } int Id = int.Parse(selectId); if (ds != null && ds.Tables.Count > 0) { //List list= DataTableHelper.DataTableToList(ds.Tables[0]); // if (list.Count==0) // { // string msg2 = "未查询到计划,或者检查计划是否正确!"; // MessageBox.Show(String.Format(msg2), Mesnac.Basic.LanguageHelper.WarnCaption, MessageBoxButtons.OK, MessageBoxIcon.Warning); // } DataTable dt = ds.Tables[0]; RjHelper.DownRjPlan(dt, Id); RjHelper.DownZBPlan(dt, Id); XLHelper.DownXlPlan(dt, Id); string msg2 = "任务下发完成!"; MessageBox.Show(String.Format(msg2), Mesnac.Basic.LanguageHelper.WarnCaption, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { string msg2 = StringParser.Parse(ResourceService.GetString("Mesnac_Action_ChemicalWeighing_Alarm_PmtAlarm_ImportAction_msg2")); //从Excel中导入报警参数数据失败:Excel中没有数据! ICSharpCode.Core.LoggingService.Warn(msg2); #region 记录操作日志 base.DBLog(msg2); #endregion MessageBox.Show(String.Format(msg2), Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } if (OnSubRefresh != null) { OnSubRefresh(this._runtime.BaseControl.MCRoot, System.EventArgs.Empty); } } catch (Exception ex) { string msg3 = "从Excel导入物料数据失败:{0}!"; //从Excel导入报警参数数据失败:{0}! msg3 = String.Format(msg3, ex.Message); ICSharpCode.Core.LoggingService.Error(msg3); #region 记录操作日志 base.DBLog(msg3); #endregion MessageBox.Show(msg3, Mesnac.Basic.LanguageHelper.WarnCaption, MessageBoxButtons.OK, MessageBoxIcon.Warning); } //刷新DataGridView数据 DbMCControl dgPmtAlarmInfo = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Pmt_Alarm").FirstOrDefault(); if (dgPmtAlarmInfo == null || !(dgPmtAlarmInfo.BaseControl is DataGridView)) { ICSharpCode.Core.LoggingService.Warn("报警参数-导入-缺少报警参数DataGridView控件..."); runtime.IsReturn = false; return; } DataTable table = dbHelper.GetDataTableBySql(dgPmtAlarmInfo.BaseControl.ActionDataSource); dgPmtAlarmInfo.BaseControl.BindDataSource = table; } } } }