using CentralControl.DBDAO; using CommonFunc; using CommonFunc.Tools; using COSMO.IM.LanJu.Index; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Timers; 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 XGL.Data.DBService; using XGL.Models.Model.FoamingMac; namespace XGL.Views { /// /// LanJu_Operator.xaml 的交互逻辑 /// public partial class LanJu_Operator : UserControl { FormingMachineService formingMachineService = new FormingMachineService(); DBService userDbWareHouse = new DBService(); public static LanJu_Operator lanJu_Operator; Frame frame = new Frame() { Content = new Views.LanJu_InOut()}; string deviceCode = Utils.GetAppSetting("DeviceCode"); Timer timerDeciveState = new Timer(); public enum WindowID { frame } public LanJu_Operator() { InitializeComponent(); WindowChange(WindowID.frame); } public void WindowChange(WindowID windowID) { Window1.Content = frame; } private void InOut_Click(object sender, RoutedEventArgs e) { LanJu_InOut lanJu_InOut = new LanJu_InOut(); Window1.Content = new Frame { Content = lanJu_InOut }; } private void Complete_Click(object sender, RoutedEventArgs e) { LanJu_Complete lanJu_Complete = new LanJu_Complete(); Window1.Content = new Frame { Content = lanJu_Complete }; } private void DeviceItems_Click(object sender, RoutedEventArgs e) { LanJu_DeviceItems lanJu_DeviceItems = new LanJu_DeviceItems(); Window1.Content = new Frame { Content = lanJu_DeviceItems }; } private void Paused_Click(object sender, RoutedEventArgs e) { LanJu_Paused lanJu_Paused = new LanJu_Paused(); Window1.Content= new Frame { Content = lanJu_Paused }; } private void UCOperator_Loaded(object sender, RoutedEventArgs e) { timerDeciveState.Interval = Utils.GetAppSetting("GetDeviceStateInterval") == "" ? 15000 : Convert.ToInt32(Utils.GetAppSetting("GetDeviceStateInterval")); timerDeciveState.Elapsed += TimerDeciveState_Elapsed; timerDeciveState.Start(); GetWorkOrderInfo(); } string isbaiye; string plantime; private void TimerDeciveState_Elapsed(object sender, ElapsedEventArgs e) { try { List orderList = new List(); //modelWareHouse = new List(); userDbWareHouse = new DBService(); DataTable dt = formingMachineService.GetFormingMachineInfo(deviceCode); if (dt == null) return; foreach (DataRow i in dt.Rows) { FoamingMacModel order = new FoamingMacModel(); order.workorder_id = i["workorder_id"].ToString(); order.workorder_code = i["workorder_code"].ToString(); order.product_name = i["product_name"].ToString(); order.product_code = i["product_code"].ToString(); order.car_num = Convert.ToInt32(i["car_num"].ToString()); order.plan_time = Convert.ToDateTime(i["plan_time"].ToString()); plantime=order.plan_time.ToString(); order.status = i["status"].ToString(); order.process_id = i["route_code"].ToString(); order.attr1 = i["attr1"].ToString(); isbaiye= i["shift_id"].ToString(); if (isbaiye=="5") { order.isbai = "白班"; } else if (isbaiye=="2") { order.isbai = "夜班"; } orderList.Add(order); } foreach (var item in orderList) { string bumb = formingMachineService.getnumber(deviceCode, plantime, isbaiye); LogHelper.instance.log.Info($@"当前查询到当前机台{deviceCode}工作数量为{bumb}"); item.totalCount = bumb; } if (orderList != null) { //使用Dispatcher来在UI线程上更新UI this.Dispatcher.Invoke( new Action(() => { this.dgWorkOrderInfo.ItemsSource = null; this.dgWorkOrderInfo.ItemsSource = orderList;//dt.DefaultView; } ), System.Windows.Threading.DispatcherPriority.Render); } } catch (Exception ex) { LogHelper.instance.log.Error("获取工单准备信息时发生异常:" + ex.Message); } } private void GetWorkOrderInfo() { try { List orderList = new List(); //modelWareHouse = new List(); userDbWareHouse = new DBService(); DataTable dt = formingMachineService.GetFormingMachineInfo(deviceCode); if (dt == null) return; foreach (DataRow i in dt.Rows) { FoamingMacModel order = new FoamingMacModel(); order.workorder_id = i["workorder_id"].ToString(); order.workorder_code = i["workorder_code"].ToString(); order.product_name = i["product_name"].ToString(); order.product_code = i["product_code"].ToString(); order.car_num = Convert.ToInt32(i["car_num"].ToString()); order.plan_time = Convert.ToDateTime(i["plan_time"].ToString()); order.status = i["status"].ToString(); order.process_id = i["route_code"].ToString(); order.attr1 = i["attr1"].ToString(); order.totalCount = i["totalCount"].ToString(); orderList.Add(order); } this.dgWorkOrderInfo.ItemsSource = null; this.dgWorkOrderInfo.ItemsSource = orderList;//dt.DefaultView; } catch (Exception ex) { LogHelper.instance.log.Error("获取工单准备信息时发生异常:" + ex.Message); } } private void dgWorkOrderInfo_LoadingRow(object sender, DataGridRowEventArgs e) { e.Row.Header = (e.Row.GetIndex() + 1).ToString(); } private void btnPause_Click(object sender, RoutedEventArgs e) { var selectedRow = dgWorkOrderInfo.SelectedItem as FoamingMacModel; if (selectedRow == null) { MessageBox.Show("请选择你要暂停的工单!", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Warning); return; } MessageBoxResult result = MessageBox.Show("你确定要暂停该工单吗?", "温馨提示", MessageBoxButton.YesNo, MessageBoxImage.Information); if (result == MessageBoxResult.No) return; var workordercode = selectedRow.workorder_code; string currStatus = selectedRow.status; if(currStatus!="w2") { MessageBox.Show("只有活动中的工单才支持暂停!", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Warning); return; } formingMachineService.UpdateWorkOrder(workordercode,"w4"); GetWorkOrderInfo(); } private void btnRecover_Click(object sender, RoutedEventArgs e) { var selectedRow = dgWorkOrderInfo.SelectedItem as FoamingMacModel; if (selectedRow == null) { MessageBox.Show("请选择你要恢复的工单!", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Warning); return; } MessageBoxResult result = MessageBox.Show("你确定要恢复该工单吗?", "温馨提示", MessageBoxButton.YesNo, MessageBoxImage.Information); if (result == MessageBoxResult.No) return; var workordercode = selectedRow.workorder_code; formingMachineService.UpdateWorkOrder(workordercode, "w2"); GetWorkOrderInfo(); } /// /// 查看工艺 /// /// /// private void Flow_Click(object sender, RoutedEventArgs e) { var selectedRow = dgWorkOrderInfo.SelectedItem as FoamingMacModel; if (selectedRow == null) return; var workordercode = selectedRow.workorder_code; DataTable dt = userDbWareHouse.GetFlowInfo(workordercode); FlowInfoWin flowInfoWin = new FlowInfoWin(dt); flowInfoWin.ShowDialog(); } /// /// 查看物料 /// /// /// private void Material_Click(object sender, RoutedEventArgs e) { var selectedRow = dgWorkOrderInfo.SelectedItem as FoamingMacModel; if (selectedRow == null) return; var processid = selectedRow.workorder_code; DataTable dt = userDbWareHouse.GetMaterialInfo(processid); LanJu_Material sopInfoWin = new LanJu_Material(dt); sopInfoWin.ShowDialog(); } /// /// 查看SOP /// /// /// private void Button_Click(object sender, RoutedEventArgs e) { var selectedRow = dgWorkOrderInfo.SelectedItem as FoamingMacModel; if (selectedRow == null) return; var workordercode = selectedRow.workorder_code; DataTable dt = userDbWareHouse.GetSOPInfo(workordercode); SopInfoWin sopInfoWin = new SopInfoWin(dt); sopInfoWin.ShowDialog(); } private void btnRefresh_Click(object sender, RoutedEventArgs e) { GetWorkOrderInfo(); } private void btnComplete_Click(object sender, RoutedEventArgs e) { if (dgWorkOrderInfo.SelectedItems.Count == 0) { CustomMessageBox.Show("请选择要完成的数据", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning); return; } var selectedRow = dgWorkOrderInfo.SelectedItem as FoamingMacModel; ShouPeiWin shouPeiWin = new ShouPeiWin(selectedRow); shouPeiWin.ShowDialog(); } private void btnCheckLog_Click(object sender, RoutedEventArgs e) { ViewLogWin viewLogWin = new ViewLogWin(); viewLogWin.ShowDialog(); } private void btnViewPlcvalue_Click(object sender, RoutedEventArgs e) { ViewPlcInfoWin viewPlcWin = new ViewPlcInfoWin(); viewPlcWin.ShowDialog(); } } }