using Newtonsoft.Json.Linq ;
using SunlightCentralizedControlManagement_SCCM_.UserClass ;
using SunlightCentralizedControlManagement_SCCM_.ViewModel ;
using SunlightCentralizedControlManagement_SCCM_.WindowsView ;
using System ;
using System.Collections.Generic ;
using System.Data ;
using System.Linq ;
using System.Text ;
using System.Text.RegularExpressions ;
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.Navigation ;
using System.Windows.Shapes ;
using System.Xml.Linq ;
using TouchSocket.Core ;
using static SunlightCentralizedControlManagement_SCCM_ . UserClass . SqliteHelper ;
using static SunlightCentralizedControlManagement_SCCM_ . WindowsView . ViewStep ;
using static System . Windows . Forms . AxHost ;
namespace SunlightCentralizedControlManagement_SCCM_.View
{
/// <summary>
/// ProductionPlanningEdit.xaml 的交互逻辑
/// </summary>
public partial class ProductionPlanningEdit : UserControl
{
private SQLiteHelper SQLiteHelpers = null ; //定义数据库
private readonly string DBAddress = Environment . CurrentDirectory + "\\DataBase\\SCCM.db" ; //数据库路径
DataTable ProgramName = new DataTable ( ) ;
DataTable dat = new DataTable ( ) ;
public ProductionPlanningEdit ( )
{
InitializeComponent ( ) ;
SQLiteHelpers = new SQLiteHelper ( DBAddress ) ; //数据库连接路径
SQLiteHelpers . Open ( ) ; //打开数据库
ProgramName = SQLiteHelpers . ExecuteDataSet ( "select * from ProgramName order by ProgramID desc" , null ) . Tables [ 0 ] ; //读取计划表写入缓存
SQLiteHelpers . Close ( ) ; //关闭连接
comboBoxMachine . ItemsSource = MainWindowViewModel . Machines . AsEnumerable ( ) . Select ( rowdata = > rowdata . Field < string > ( "name" ) ) . ToList ( ) ; //转换机台
comboBoxProgram . ItemsSource = ProgramName . AsEnumerable ( ) . Select ( rowdata = > rowdata . Field < string > ( "ProgramName" ) ) . ToList ( ) ; //转换工艺代码
}
private void comboBoxMachine_DropDownClosed ( object sender , EventArgs e ) //机台选择
{
string [ ] sArray = Regex . Split ( comboBoxMachine . Text , @"\+" , RegexOptions . IgnoreCase ) ;
if ( sArray . Length < = 1 )
{
comboBoxDyelot . IsEnabled = true ;
SQLiteHelpers = new SQLiteHelper ( DBAddress ) ; //数据库连接路径
SQLiteHelpers . Open ( ) ; //打开数据库
DataTable DatDyelot = SQLiteHelpers . ExecuteDataSet ( "select * from Dyelot where Machine='" + comboBoxMachine . Text + "' order by Dyelot desc" , null ) . Tables [ 0 ] ; //读取计划表写入缓存
SQLiteHelpers . Close ( ) ; //关闭连接
comboBoxDyelot . ItemsSource = DatDyelot . AsEnumerable ( ) . Select ( rowdata = > rowdata . Field < string > ( "Dyelot" ) ) . ToList ( ) ; //转换代码
}
}
private void Multi_Click ( object sender , RoutedEventArgs e ) //机台组
{
MachineSelection machineSelection = new MachineSelection ( ) ;
machineSelection . AddressUpdated + = new MachineSelection . AddressUpdateHandler ( Address_Multi_Click ) ;
//machineSelection.data = "ID";
machineSelection . ShowDialog ( ) ;
}
private void Address_Multi_Click ( object sender , MachineSelection . AddressUpdateEventArgs e ) //机台组返回结果
{
if ( ! string . IsNullOrEmpty ( e . Groups ) ) comboBoxMachine . Text = e . Groups ;
comboBoxDyelot . Text = null ;
comboBoxDyelot . IsEnabled = false ;
}
private void Button_Click ( object sender , RoutedEventArgs e )
{
string [ ] sArray = Regex . Split ( comboBoxMachine . Text , @"\+" , RegexOptions . IgnoreCase ) ;
if ( sArray . Length < = 1 )
{
//单机器信息写入
string sTime ;
string StartTime_ ;
string WorkOrder_ = comboBoxMachine . Text + "_" + DateTime . Now . ToString ( "yyMMddHHmmss" ) ;
string ProgramName_ = comboBoxProgram . Text ;
string ProgramID_ = ProgramName . Select ( "ProgramName='" + ProgramName_ + "'" ) .
First ( ) . Field < object > ( "ProgramID" ) . ToString ( ) ;
string Machines_ = comboBoxMachine . Text ;
string State_ = "100" ;
string Dyelot_ = comboBoxDyelot . Text ;
SQLiteHelpers = new SQLiteHelper ( DBAddress ) ; //数据库连接路径
SQLiteHelpers . Open ( ) ; //打开数据库
try
{
sTime = SQLiteHelpers . ExecuteDataSet (
"select * from WorkOrder where Machines='" + comboBoxMachine . Text + "' order by EndTime desc" , null ) .
Tables [ 0 ] . Select ( ) . First ( ) . Field < object > ( "EndTime" ) . ToString ( ) ; //读取计划表写入缓存
if ( DateTime . Now < DateTime . Parse ( sTime ) )
{
StartTime_ = DateTime . Parse ( sTime ) . AddMinutes ( 1 ) . ToString ( "yy/MM/dd HH:mm:ss" ) ;
}
else
{
StartTime_ = DateTime . Now . AddMinutes ( 1 ) . ToString ( "yy/MM/dd HH:mm:ss" ) ;
}
}
catch ( Exception )
{
StartTime_ = DateTime . Now . AddMinutes ( 1 ) . ToString ( "yy/MM/dd HH:mm:ss" ) ;
}
SQLiteHelpers . Close ( ) ; //关闭连接
string Time_ = DateTime . Parse ( ProgramName . Select ( "ProgramName='" + ProgramName_ + "'" ) .
First ( ) . Field < object > ( "Time" ) . ToString ( ) ) . ToString ( "HH:mm:ss" ) ;
string EndTime_ = ( DateTime . Parse ( StartTime_ ) + DateTime . Parse ( Time_ ) . TimeOfDay ) . ToString ( ) ;
//插入数据信息
Dictionary < string , object > WorkOrder_new = new Dictionary < string , object > ( ) ; //缓存函数
WorkOrder_new . Add ( "StartTime" , StartTime_ ) ;
WorkOrder_new . Add ( "EndTime" , EndTime_ ) ;
WorkOrder_new . Add ( "Time" , Time_ ) ;
WorkOrder_new . Add ( "WorkOrder" , WorkOrder_ ) ;
WorkOrder_new . Add ( "ProgramName" , ProgramName_ ) ;
WorkOrder_new . Add ( "ProgramID" , ProgramID_ ) ;
WorkOrder_new . Add ( "Machines" , Machines_ ) ;
WorkOrder_new . Add ( "State" , State_ ) ;
WorkOrder_new . Add ( "Dyelot" , Dyelot_ ) ;
WorkOrder_new . Add ( "Remark" , null ) ;
WorkOrder_new . Add ( "lock" , 0 ) ;
WorkOrder_new . Add ( "color" , null ) ;
SQLiteHelpers = new SQLiteHelper ( DBAddress ) ; //数据库连接路径
SQLiteHelpers . Open ( ) ; //打开数据库
SQLiteHelpers . InsertData ( "WorkOrder" , WorkOrder_new ) ; // 执行插入
SQLiteHelpers . Close ( ) ; //关闭连接
}
else
{ //多机器载入
for ( int i = 0 ; i < sArray . Length ; i + + )
{
string sTime ;
string StartTime_ ;
string WorkOrder_ = sArray [ i ] + "_" + DateTime . Now . ToString ( "yyMMddHHmmss" ) ;
string ProgramName_ = comboBoxProgram . Text ;
string ProgramID_ = ProgramName . Select ( "ProgramName='" + ProgramName_ + "'" ) .
First ( ) . Field < object > ( "ProgramID" ) . ToString ( ) ;
string Machines_ = sArray [ i ] ;
string State_ = "100" ;
string Dyelot_ = comboBoxDyelot . Text ;
SQLiteHelpers = new SQLiteHelper ( DBAddress ) ; //数据库连接路径
SQLiteHelpers . Open ( ) ; //打开数据库
try
{
sTime = SQLiteHelpers . ExecuteDataSet (
"select * from WorkOrder where Machines='" + sArray [ i ] + "' order by EndTime desc" , null ) .
Tables [ 0 ] . Select ( ) . First ( ) . Field < object > ( "EndTime" ) . ToString ( ) ; //读取计划表写入缓存
if ( DateTime . Now < DateTime . Parse ( sTime ) )
{
StartTime_ = DateTime . Parse ( sTime ) . AddMinutes ( 1 ) . ToString ( "yy/MM/dd HH:mm:ss" ) ;
}
else
{
StartTime_ = DateTime . Now . AddMinutes ( 1 ) . ToString ( "yy/MM/dd HH:mm:ss" ) ;
}
}
catch ( Exception )
{
StartTime_ = DateTime . Now . AddMinutes ( 1 ) . ToString ( "yy/MM/dd HH:mm:ss" ) ;
}
SQLiteHelpers . Close ( ) ; //关闭连接
string Time_ = DateTime . Parse ( ProgramName . Select ( "ProgramName='" + ProgramName_ + "'" ) .
First ( ) . Field < object > ( "Time" ) . ToString ( ) ) . ToString ( "HH:mm:ss" ) ;
string EndTime_ = ( DateTime . Parse ( StartTime_ ) + DateTime . Parse ( Time_ ) . TimeOfDay ) . ToString ( ) ;
//插入数据信息
Dictionary < string , object > WorkOrder_new = new Dictionary < string , object > ( ) ; //缓存函数
WorkOrder_new . Add ( "StartTime" , StartTime_ ) ;
WorkOrder_new . Add ( "EndTime" , EndTime_ ) ;
WorkOrder_new . Add ( "Time" , Time_ ) ;
WorkOrder_new . Add ( "WorkOrder" , WorkOrder_ ) ;
WorkOrder_new . Add ( "ProgramName" , ProgramName_ ) ;
WorkOrder_new . Add ( "ProgramID" , ProgramID_ ) ;
WorkOrder_new . Add ( "Machines" , Machines_ ) ;
WorkOrder_new . Add ( "State" , State_ ) ;
WorkOrder_new . Add ( "Dyelot" , Dyelot_ ) ;
WorkOrder_new . Add ( "Remark" , null ) ;
WorkOrder_new . Add ( "lock" , 0 ) ;
WorkOrder_new . Add ( "color" , null ) ;
SQLiteHelpers = new SQLiteHelper ( DBAddress ) ; //数据库连接路径
SQLiteHelpers . Open ( ) ; //打开数据库
SQLiteHelpers . InsertData ( "WorkOrder" , WorkOrder_new ) ; // 执行插入
SQLiteHelpers . Close ( ) ; //关闭连接
}
}
this . Visibility = Visibility . Collapsed ;
ProductionPlanningView . UI = true ;
}
private void Button_Quit ( object sender , RoutedEventArgs e ) //退出
{
this . Visibility = Visibility . Collapsed ;
}
public void DatSteps ( DataTable db ) //行号刷新
{
int a = db . Rows . Count ;
for ( int i = 0 ; i < a ; i + + )
{
DataRow dr = db . Rows [ i ] ;
dr . BeginEdit ( ) ;
dr [ "Step" ] = i + 1 ;
dr . EndEdit ( ) ;
}
}
private void comboBoxProgram_DropDownClosed ( object sender , EventArgs e ) //工艺选择事件
{
if ( ! string . IsNullOrEmpty ( comboBoxProgram . Text ) )
{
dat . Clear ( ) ;
SQLiteHelpers = new SQLiteHelper ( DBAddress ) ; //数据库连接路径
SQLiteHelpers . Open ( ) ; //打开数据库
dat = SQLiteHelpers . ExecuteDataSet (
"select * from ProgramSteps where Program='" + comboBoxProgram . SelectedValue + "' order by Step asc" , null ) . Tables [ 0 ] ; //读取计划表写入缓存
SQLiteHelpers . Close ( ) ; //关闭连接
DatSteps ( dat ) ;
Grid_data . ItemsSource = dat . DefaultView ;
}
}
private void comboBoxProgram_TextChanged ( object sender , TextChangedEventArgs e )
{
dat . Clear ( ) ;
string text = comboBoxProgram . Text ;
if ( ! string . IsNullOrEmpty ( text ) )
{
try
{
string [ ] sArray = Regex . Split ( text , @"\+" , RegexOptions . IgnoreCase ) ;
SQLiteHelpers = new SQLiteHelper ( DBAddress ) ; //数据库连接路径
SQLiteHelpers . Open ( ) ; //打开数据库
for ( int i = 0 ; i < sArray . Length ; i + + )
{
DataTable temp = SQLiteHelpers . ExecuteDataSet (
"select * from ProgramSteps where Program='" + sArray [ i ] + "' order by Step asc" , null ) . Tables [ 0 ] ; //读取计划表写入缓存
if ( dat . Columns . Count = = 0 ) dat = temp . Clone ( ) ;
foreach ( DataRow dr in temp . Rows )
{
dat . Rows . Add ( dr . ItemArray ) ;
}
//dat = temp.Copy();
}
SQLiteHelpers . Close ( ) ; //关闭连接
DatSteps ( dat ) ;
Grid_data . ItemsSource = dat . DefaultView ;
}
catch ( Exception ) { }
}
}
string ProgramID ;
string ProgramNAME ;
string Numder = null ;
string ID = null ;
string P1 , P2 , P3 , P4 , P5 ;
private void Grid_data_MouseDoubleClick ( object sender , MouseButtonEventArgs e )
{
int rownum = Grid_data . SelectedIndex ; //获取鼠标选中行并定义变量
if ( rownum ! = - 1 ) //判断鼠标定位是否有效
{
ID = ( Grid_data . Columns [ 2 ] . GetCellContent ( Grid_data . Items [ rownum ] ) as TextBlock ) . Text ; //定位第0列,
Numder = ( Grid_data . Columns [ 3 ] . GetCellContent ( Grid_data . Items [ rownum ] ) as TextBlock ) . Text ; //定位第1列,
P1 = ( Grid_data . Columns [ 6 ] . GetCellContent ( Grid_data . Items [ rownum ] ) as TextBlock ) . Text ; //定位第6列,
P2 = ( Grid_data . Columns [ 7 ] . GetCellContent ( Grid_data . Items [ rownum ] ) as TextBlock ) . Text ; //定位第7列,
P3 = ( Grid_data . Columns [ 8 ] . GetCellContent ( Grid_data . Items [ rownum ] ) as TextBlock ) . Text ; //定位第8列,
P4 = ( Grid_data . Columns [ 9 ] . GetCellContent ( Grid_data . Items [ rownum ] ) as TextBlock ) . Text ; //定位第9列,
P5 = ( Grid_data . Columns [ 1 0 ] . GetCellContent ( Grid_data . Items [ rownum ] ) as TextBlock ) . Text ; //定位第10列,
if ( string . IsNullOrEmpty ( Numder ) ) { Numder = null ; P1 = "0" ; P2 = "0" ; P3 = "0" ; P4 = "0" ; P5 = "0" ; }
if ( ID = = null ) ID = dat . Rows . Count . ToString ( ) ;
ViewStep viewstop = new ViewStep ( Numder , P1 , P2 , P3 , P4 , P5 ) ;
viewstop . AddressUpdated + = new ViewStep . AddressUpdateHandler ( Address_ButtonClicked ) ;
viewstop . data = ID ;
viewstop . ShowDialog ( ) ;
}
}
private void Address_ButtonClicked ( object sender , AddressUpdateEventArgs e ) //编辑返回结果
{
int i = dat . Rows . Count ;
int n = StrToInt . To16Convert10 ( ID ) ;
DataRow dr = dat . Rows [ n - 1 ] ;
dr . BeginEdit ( ) ;
dr [ "StepID" ] = e . StepID ;
dr [ "StepName" ] = e . StepNAME ;
dr [ "ParameterName" ] = e . PNAME ;
dr [ "Parameter1" ] = e . P1 ;
dr [ "Parameter2" ] = e . P2 ;
dr [ "Parameter3" ] = e . P3 ;
dr [ "Parameter4" ] = e . P4 ;
dr [ "Parameter5" ] = e . P5 ;
dr . EndEdit ( ) ;
Grid_data . ItemsSource = dat . DefaultView ;
}
}
}