using SunlightCentralizedControlManagement_SCCM_.UserClass; using SunlightCentralizedControlManagement_SCCM_.ViewModel; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Data; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Collections.ObjectModel; using System.Reflection; using System.Xml.Linq; using DyeingComputer.UserClass; using System.Windows.Forms; using SunlightCentralizedControlManagement_SCCM_.WindowsView; using OpenTK.Graphics.OpenGL; using ScottPlot.TickGenerators.TimeUnits; using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper; namespace SunlightCentralizedControlManagement_SCCM_.EX { /// /// ManualDyelot.xaml 的交互逻辑 /// public partial class ManualDyelot : Window { DataTable dyelotdat = new DataTable(); public static string Machines; DataTable mach = new DataTable(); DataTable RRODUCTdataTable = new DataTable(); //建立RRODUCT缓存 int ID_N = 1; int type_; DateTime time = DateTime.Now; public ManualDyelot() { InitializeComponent(); State.IsEnabled = false; string[] strings = { "0", "1", "2", "3" }; comboBoxtank.ItemsSource = strings; comboBoxtank.Text = "0"; comboBoxTotal.Text = "0"; int mrc = MainWindowViewModel.Machines.Rows.Count; string[] stringsM = new string[mrc]; for (int i = 0; i < mrc; i++) { stringsM[i] = MainWindowViewModel.Machines.Rows[i]["name"].ToString(); } comboBoxMachine.ItemsSource = stringsM; dyelot.Text = "00_" + DateTime.Now.ToString("yyMMddHHmmss"); RRODUCTdataTable.Columns.Add("ID", typeof(int)); RRODUCTdataTable.Columns.Add("DYELOT", typeof(string)); RRODUCTdataTable.Columns.Add("ReDye", typeof(int)); RRODUCTdataTable.Columns.Add("STEP", typeof(int)); RRODUCTdataTable.Columns.Add("ProductType", typeof(int)); RRODUCTdataTable.Columns.Add("Created", typeof(string)); RRODUCTdataTable.Columns.Add("PRODUCT_CODE", typeof(string)); RRODUCTdataTable.Columns.Add("PRODUCT_NAME", typeof(string)); RRODUCTdataTable.Columns.Add("TARGET_WT", typeof(float)); RRODUCTdataTable.Columns.Add("Amount", typeof(string)); RRODUCTdataTable.Columns.Add("UNIT", typeof(string)); DataRow row = RRODUCTdataTable.NewRow(); //ID列 row["ID"] = ID_N; row["DYELOT"] = dyelot.Text; row["ReDye"] = 0; row["STEP"] = "1"; row["ProductType"] = type_; row["Created"] = time; row["UNIT"] = "g"; RRODUCTdataTable.Rows.Add(row); Grid_data.ItemsSource = RRODUCTdataTable.DefaultView; } public void MAC(object Mac,int t) { Machines = Mac.ToString(); type_ = t; /* string Connstr_SC; string sql = "SELECT * FROM [dbo].[Pipes] WHERE Dispenser = '" + Machines + "'"; try { if (MainWindowViewModel.SQMOD == "Windows Authentication") { Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";Trusted_Connection=SSPI"; } else { Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";User ID=" + MainWindowViewModel.SQLUSER + ";Password=" + MainWindowViewModel.SQLPASWORD; } SqlConnection conn_SC = new SqlConnection(Connstr_SC); await conn_SC.OpenAsync(); //连接数据库 new SqlDataAdapter(sql, Connstr_SC).Fill(dyelotdat); // SqlDataAdapter _data = new SqlDataAdapter(sql, Connstr_SC); //查询 conn_SC.Close(); for (int i = 0; i < dyelotdat.Rows.Count; i++) { SelectProductCode.Add(dyelotdat.Rows[i].Field("ProductCode")); SelectProductName.Add(dyelotdat.Rows[i].Field("ProductName")); } } catch (Exception ex) { LogGing.ERRDATA(ex); }*/ } private async void State_Click(object sender, RoutedEventArgs e)//确认按键 { int t = RRODUCTdataTable.Rows.Count; //获取数据行包含空白行 RRODUCTdataTable.Rows[t - 1].Delete(); RRODUCTdataTable.AcceptChanges(); if (string.IsNullOrEmpty(comboBoxMachine.Text)) return;//未输入机台时返回 try { Dictionary Dyelot_DAT = new Dictionary();//缓存函数 for (int x = 0; x < RRODUCTdataTable.Rows.Count; x++) { Dyelot_DAT.Add("WorkOrder", orders.Text); Dyelot_DAT.Add("Dyelot", RRODUCTdataTable.Rows[x]["Dyelot"]); Dyelot_DAT.Add("Redye", RRODUCTdataTable.Rows[x]["Redye"]); Dyelot_DAT.Add("Step", RRODUCTdataTable.Rows[x]["Step"]); Dyelot_DAT.Add("TIME", RRODUCTdataTable.Rows[x]["Created"]); Dyelot_DAT.Add("Tank", comboBoxtank.Text); Dyelot_DAT.Add("State", "201"); Dyelot_DAT.Add("Machine", comboBoxMachine.Text); Dyelot_DAT.Add("ProductCode", RRODUCTdataTable.Rows[x]["PRODUCT_CODE"]); Dyelot_DAT.Add("ProductName", RRODUCTdataTable.Rows[x]["PRODUCT_NAME"]); Dyelot_DAT.Add("ProductType", RRODUCTdataTable.Rows[x]["ProductType"]); Dyelot_DAT.Add("DispenseStartTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); Dyelot_DAT.Add("Grams", RRODUCTdataTable.Rows[x]["TARGET_WT"]); Dyelot_DAT.Add("Amount", RRODUCTdataTable.Rows[x]["Amount"]); MainWindowViewModel.SQLiteHelpers.InsertData("Dyelot", Dyelot_DAT);//行插入 Dyelot_DAT.Clear(); } LogGing.ExchangeDATA("Dyelot=" + dyelot.Text + ";Machine=" + comboBoxMachine.Text + ";Program=------;User=" + MainWindowViewModel.USER_data + ";"); string Connstr_SC; if (MainWindowViewModel.SQMOD == "Windows Authentication") { Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";Trusted_Connection=SSPI"; } else { Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";User ID=" + MainWindowViewModel.SQLUSER + ";Password=" + MainWindowViewModel.SQLPASWORD; } SqlConnection destinationConnection = new SqlConnection(Connstr_SC); //创建一个数据库连接; await destinationConnection.OpenAsync(); //打开连接 //写总览 string dyelots_sql = string.Format("INSERT INTO [dbo].[DYELOTS]([Dyelot] ,[ReDye] , [OrderNo] , [Machine] ,[DispenseMachine] ,[UserAccount] ) " + "VALUES ('" + dyelot.Text + "','0','" + orders.Text + "','" + comboBoxMachine.Text + "','" + comboBoxMachine.Text + "','" + MainWindow.user_ + "')"); SqlCommand INSERT_cmd = new SqlCommand(dyelots_sql, destinationConnection); int dyelots_sqlIN = INSERT_cmd.ExecuteNonQuery(); //执行语句 //写明细 SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection);// 实例化 sqlbulkcopy; bulkCopy.DestinationTableName = "dbo.DyelotsBulkedRecipe";// 目标表名称/ bulkCopy.ColumnMappings.Add("DYELOT", "Dyelot"); bulkCopy.ColumnMappings.Add("ReDye", "ReDye"); bulkCopy.ColumnMappings.Add("STEP", "StepNumber"); bulkCopy.ColumnMappings.Add("PRODUCT_CODE", "ProductCode"); bulkCopy.ColumnMappings.Add("PRODUCT_NAME", "ProductName"); bulkCopy.ColumnMappings.Add("ProductType", "ProductType"); bulkCopy.ColumnMappings.Add("Created", "Created"); bulkCopy.ColumnMappings.Add("Amount", "Amount"); bulkCopy.ColumnMappings.Add("TARGET_WT", "Grams"); bulkCopy.WriteToServer(RRODUCTdataTable); //将传入的数据写到数据库; string mac_sql = string.Format("UPDATE [dbo].[Machines] SET DispenseDyelot='" + dyelot.Text + "',DispenseReDye='0',ChemicalCallOff=1,ChemicalState=201,ChemicalTank='" + comboBoxtank.Text + "' WHERE NAME='" + comboBoxMachine.Text + "'"); SqlCommand UPDATE_mac = new SqlCommand(mac_sql, destinationConnection); int mac_ = UPDATE_mac.ExecuteNonQuery(); //执行语句 if (mac_ == 0) System.Windows.Forms.MessageBox.Show(Properties.Resources.Not_M); destinationConnection.Close(); this.Close();//退出页面 } catch (Exception ex) { LogGing.ERRDATA(ex); System.Windows.Forms.MessageBox.Show(ex.Message.ToString()); } } private void comboBoxMachine_DropDownClosed(object sender, EventArgs e) { if (!string.IsNullOrEmpty(comboBoxMachine.Text)) { string Macht= MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "WorkOrder", "NAME = '" + comboBoxMachine.Text + "'").ToString(); if (Macht != "------") { orders.Text = Macht; } else { orders.Text = dyelot.Text; } } } private void Cancel_Click(object sender, RoutedEventArgs e) { this.Close(); } public ObservableCollection SelectProductCode { get { return _selectProductCode; } set { _selectProductCode = value; } } private ObservableCollection _selectProductCode = new ObservableCollection(); public ObservableCollection SelectProductName { get { return _selectProductName; } set { _selectProductName = value; } } private ObservableCollection _selectProductName = new ObservableCollection(); string Code_; string Name_; private void CP_PRODUCT_CODE_DropDownClosed(object sender, EventArgs e)//代码选择事件 { State.IsEnabled = false; System.Windows.Controls.ComboBox curComboBox = sender as System.Windows.Controls.ComboBox; int grid_row = Grid_data.SelectedIndex; //获取当前行 Code_ = curComboBox.Text.TrimEnd(); DataRow[] r = ManualDyelotModel.STUFFdataTable.Select("ProductCode ='" + Code_ + "'"); //查询判断原料代码是否有效 if (!r.Any()) //检查原料信息 { return; } int ID_ = grid_row + 1; DataRow[] c = RRODUCTdataTable.Select("PRODUCT_CODE ='" + Code_ + "'and ID <> '" + ID_ + "'");//查询判断原料代码是否重复 if (c.Any()) { curComboBox.Text = null; System.Windows.MessageBox.Show(Properties.Resources.RTRM); return; } Name_ = r[0].ItemArray[1].ToString(); if (grid_row == -1) grid_row = 0; DataRow row = RRODUCTdataTable.Rows[grid_row]; //ID列 row.BeginEdit(); row["PRODUCT_CODE"] = Code_; row["PRODUCT_NAME"] = Name_; row.EndEdit(); DataGridHelper.SetRealTimeCommit(Grid_data, true); //实时更新datagrid } private void CP_PRODUCT_NAME_DropDownClosed(object sender, EventArgs e)//选择原料事件 { State.IsEnabled = false; System.Windows.Controls.ComboBox curComboBox = sender as System.Windows.Controls.ComboBox; int grid_row = Grid_data.SelectedIndex; //获取当前行 if (curComboBox.Text != "") { Name_ = curComboBox.Text.TrimEnd(); DataRow[] r = ManualDyelotModel.STUFFdataTable.Select("ProductName ='" + Name_ + "'"); //查询判断原料代码是否有效 DataRow[] c = RRODUCTdataTable.Select("PRODUCT_NAME ='" + Name_ + "'");//查询判断原料代码是否重复 if (c.Any()) { curComboBox.Text = null; System.Windows.MessageBox.Show(Properties.Resources.RTRM); return; } Code_ = r[0].ItemArray[0].ToString(); if (grid_row == -1) grid_row = 0; DataRow row = RRODUCTdataTable.Rows[grid_row]; //ID列 row.BeginEdit(); row["PRODUCT_CODE"] = Code_; row["PRODUCT_NAME"] = Name_; row.EndEdit(); } } private void CP_CONC_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)//输入目标量事件 { System.Windows.Controls.TextBox textBox = sender as System.Windows.Controls.TextBox; int grid_row = Grid_data.SelectedIndex; //获取当前行 if (string.IsNullOrEmpty(textBox.Text)) return; if (e.Key == Key.Enter) { if (grid_row == -1) grid_row = 0; DataRow row = RRODUCTdataTable.Rows[grid_row]; if (string.IsNullOrEmpty(row["PRODUCT_CODE"].ToString())) { textBox.Text = null; return; } row.BeginEdit(); row["Amount"] = textBox.Text + "g"; row["TARGET_WT"] = textBox.Text; row.EndEdit(); ID_N++; DataRow rowadd = RRODUCTdataTable.NewRow(); //ID列 rowadd["ID"] = ID_N; rowadd["DYELOT"] = dyelot.Text; rowadd["ReDye"] = 0; rowadd["STEP"] = "1"; row["ProductType"] = type_; rowadd["Created"] = time; rowadd["UNIT"] = "g"; RRODUCTdataTable.Rows.Add(rowadd); State.IsEnabled = true; } } } }