You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
334 lines
15 KiB
334 lines
15 KiB
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
|
|
{
|
|
/// <summary>
|
|
/// ManualDyelot.xaml 的交互逻辑
|
|
/// </summary>
|
|
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<string>("ProductCode"));
|
|
SelectProductName.Add(dyelotdat.Rows[i].Field<string>("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<string, object> Dyelot_DAT = new Dictionary<string, object>();//缓存函数
|
|
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<string> SelectProductCode
|
|
{
|
|
get { return _selectProductCode; }
|
|
set { _selectProductCode = value; }
|
|
}
|
|
private ObservableCollection<string> _selectProductCode = new ObservableCollection<string>();
|
|
public ObservableCollection<string> SelectProductName
|
|
{
|
|
get { return _selectProductName; }
|
|
set { _selectProductName = value; }
|
|
}
|
|
private ObservableCollection<string> _selectProductName = new ObservableCollection<string>();
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|