You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
515 lines
22 KiB
C#
515 lines
22 KiB
C#
using CommonFunc;
|
|
using CommonFunc.Tools;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Timers;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using XGL.Data.DBService;
|
|
using XGL.Dats.DBServiceFinishProd;
|
|
using XGL.Models.Model.FoamingMac;
|
|
using XGL.Models.Model.OrderPrepare;
|
|
|
|
namespace XGLFinishPro.Views
|
|
|
|
{
|
|
/// <summary>
|
|
/// LanJu_Operator.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class LanJu_Operator : UserControl
|
|
{
|
|
FormingMachineService formingMachineService = new FormingMachineService();
|
|
FinishProdDBService userDbWareHouse = new FinishProdDBService();
|
|
public static LanJu_Operator lanJu_Operator;
|
|
Frame frame = new Frame() { Content = new Views.LanJu_InOut() };
|
|
string deviceCode = Utils.GetAppSetting("DeviceCode");
|
|
Timer timerDeciveState = new Timer();
|
|
string _workOrderCode = "";
|
|
|
|
public enum WindowID
|
|
{
|
|
frame
|
|
}
|
|
public LanJu_Operator()
|
|
{
|
|
InitializeComponent();
|
|
WindowChange(WindowID.frame);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void WindowChange(WindowID windowID)
|
|
{
|
|
Window1.Content = frame;
|
|
}
|
|
|
|
List<string> sfcList = null;
|
|
|
|
private void InOut_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
LanJu_InOut lanJu_InOut = new LanJu_InOut(_workOrderCode, deviceCode);
|
|
// 在主界面中的某个位置订阅事件
|
|
lanJu_InOut.ValueSelected += (sender1, args) =>
|
|
{
|
|
// 在这里处理从子窗口传回的值
|
|
sfcList = lanJu_InOut.SFCCodeList;
|
|
// 执行需要的操作
|
|
};
|
|
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)
|
|
{
|
|
if (Utils.isAnyBodyPerating) return;
|
|
try
|
|
{
|
|
List<FoamingMacModel> orderList = new List<FoamingMacModel>();
|
|
|
|
int currHour = DateTime.Now.Hour;
|
|
int currMinute = DateTime.Now.Minute;
|
|
//modelWareHouse = new List<WorkOrder>();
|
|
//userDbWareHouse = new DBService();
|
|
int shiftId = 0;
|
|
DataTable shiftlist = formingMachineService.GetShiftList();
|
|
string endTimeRecord = "";
|
|
string startTimeRecord = "";
|
|
foreach (DataRow shift in shiftlist.Rows)
|
|
{
|
|
string[] timeStart = shift["Shift_Start_Time"].ToString().Split(':');
|
|
string[] timeEnd = shift["Shift_End_Time"].ToString().Split(':');
|
|
|
|
// 创建两个不带日期的时间点
|
|
TimeSpan currTime = new TimeSpan(currHour, currMinute, 0); // 获取当前小时+分钟数
|
|
TimeSpan startTime = new TimeSpan(Convert.ToInt32(timeStart[0]), Convert.ToInt32(timeStart[1]), 0); // 表示9小时45分钟0秒
|
|
TimeSpan endTime = new TimeSpan(Convert.ToInt32(timeEnd[0]), Convert.ToInt32(timeEnd[1]), 0);
|
|
// 比较当前时间点和班次开始的时间点
|
|
int comparisonResultStart = TimeSpan.Compare(currTime, startTime);
|
|
// 比较当前时间点和班次结束的时间点
|
|
int comparisonResultEnd = TimeSpan.Compare(currTime, endTime);
|
|
//if (comparisonResultStart > 0) { Console.WriteLine("time1 大于 time2"); }
|
|
if (comparisonResultStart >= 0 && comparisonResultEnd < 0)
|
|
{
|
|
endTimeRecord = shift["Shift_Start_Time"].ToString();
|
|
startTimeRecord = shift["Shift_End_Time"].ToString();
|
|
shiftId = Convert.ToInt32(shift["shift_id"].ToString());
|
|
break;
|
|
}
|
|
else if (comparisonResultStart >= 0 || comparisonResultEnd < 0)
|
|
{
|
|
endTimeRecord = shift["Shift_Start_Time"].ToString();
|
|
startTimeRecord = shift["Shift_End_Time"].ToString();
|
|
shiftId = Convert.ToInt32(shift["shift_id"].ToString());
|
|
break;
|
|
}
|
|
//if (Convert.ToInt32(timeStart[0]) <= currHourWithDecimal && currHourWithDecimal < Convert.ToInt32(timeEnd[0]))
|
|
//{
|
|
// shiftId = shift.shiftId;
|
|
// break;
|
|
//}
|
|
//else if (currHourWithDecimal >= Convert.ToInt32(timeStart[0]) || currHourWithDecimal < Convert.ToInt32(timeEnd[0]))
|
|
//{
|
|
// shiftId = shift.shiftId;
|
|
// break;
|
|
//}
|
|
}
|
|
|
|
string[] endTimeReally = endTimeRecord.Split(':');
|
|
string[] startTimeReally = startTimeRecord.Split(':');
|
|
DateTime currShiftDate = DateTime.Now.Date;
|
|
TimeSpan currTimeNew = new TimeSpan(currHour, currMinute, 0); // 获取当前小时+分钟数
|
|
TimeSpan startTimeNew = new TimeSpan(Convert.ToInt32(startTimeReally[0]), Convert.ToInt32(startTimeReally[1]), 0); // 表示9小时45分钟0秒
|
|
TimeSpan endTimeNew = new TimeSpan(Convert.ToInt32(endTimeReally[0]), Convert.ToInt32(endTimeReally[1]), 0); // 表示9小时45分钟0秒
|
|
//计算白夜班工作日期用
|
|
int resultstart = TimeSpan.Compare(currTimeNew, startTimeNew);
|
|
// 比较当前时间点和班次结束的时间点
|
|
int resultEnd = TimeSpan.Compare(currTimeNew, endTimeNew);
|
|
|
|
//夜班、
|
|
if (resultstart < 0 && resultEnd < 0)
|
|
{
|
|
currShiftDate = DateTime.Now.Date.AddDays(-1);
|
|
}
|
|
|
|
|
|
|
|
//modelWareHouse = new List<WorkOrder>();
|
|
|
|
DataTable dt = userDbWareHouse.GetWetPlanInfo(deviceCode, currShiftDate.ToString());//formingMachineService.GetFormingMachineInfo(deviceCode, currShiftDate.ToString());
|
|
if (dt == null) return;
|
|
|
|
if (orderList != null)
|
|
{
|
|
//使用Dispatcher来在UI线程上更新UI
|
|
this.Dispatcher.Invoke(
|
|
new Action(() =>
|
|
{
|
|
this.dgWorkOrderInfo.ItemsSource = null;
|
|
this.dgWorkOrderInfo.ItemsSource = dt.DefaultView;
|
|
dgWorkOrderInfo.SelectedIndex = 0;
|
|
}
|
|
),
|
|
System.Windows.Threading.DispatcherPriority.Render);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.instance.log.Error("获取工单准备信息时发生异常:" + ex.Message);
|
|
}
|
|
}
|
|
|
|
private void GetWorkOrderInfo()
|
|
{
|
|
try
|
|
{
|
|
List<FoamingMacModel> orderList = new List<FoamingMacModel>();
|
|
|
|
int currHour = DateTime.Now.Hour;
|
|
int currMinute = DateTime.Now.Minute;
|
|
//modelWareHouse = new List<WorkOrder>();
|
|
//userDbWareHouse = new DBService();
|
|
int shiftId = 0;
|
|
DataTable shiftlist = formingMachineService.GetShiftList();
|
|
string endTimeRecord = "";
|
|
string startTimeRecord = "";
|
|
foreach (DataRow shift in shiftlist.Rows)
|
|
{
|
|
string[] timeStart = shift["Shift_Start_Time"].ToString().Split(':');
|
|
string[] timeEnd = shift["Shift_End_Time"].ToString().Split(':');
|
|
|
|
// 创建两个不带日期的时间点
|
|
TimeSpan currTime = new TimeSpan(currHour, currMinute, 0); // 获取当前小时+分钟数
|
|
TimeSpan startTime = new TimeSpan(Convert.ToInt32(timeStart[0]), Convert.ToInt32(timeStart[1]), 0); // 表示9小时45分钟0秒
|
|
TimeSpan endTime = new TimeSpan(Convert.ToInt32(timeEnd[0]), Convert.ToInt32(timeEnd[1]), 0);
|
|
// 比较当前时间点和班次开始的时间点
|
|
int comparisonResultStart = TimeSpan.Compare(currTime, startTime);
|
|
// 比较当前时间点和班次结束的时间点
|
|
int comparisonResultEnd = TimeSpan.Compare(currTime, endTime);
|
|
//if (comparisonResultStart > 0) { Console.WriteLine("time1 大于 time2"); }
|
|
if (comparisonResultStart >= 0 && comparisonResultEnd < 0)
|
|
{
|
|
endTimeRecord = shift["Shift_Start_Time"].ToString();
|
|
startTimeRecord = shift["Shift_End_Time"].ToString();
|
|
shiftId = Convert.ToInt32(shift["shift_id"].ToString());
|
|
break;
|
|
}
|
|
else if (comparisonResultStart >= 0 || comparisonResultEnd < 0)
|
|
{
|
|
endTimeRecord = shift["Shift_Start_Time"].ToString();
|
|
startTimeRecord = shift["Shift_End_Time"].ToString();
|
|
shiftId = Convert.ToInt32(shift["shift_id"].ToString());
|
|
break;
|
|
}
|
|
//if (Convert.ToInt32(timeStart[0]) <= currHourWithDecimal && currHourWithDecimal < Convert.ToInt32(timeEnd[0]))
|
|
//{
|
|
// shiftId = shift.shiftId;
|
|
// break;
|
|
//}
|
|
//else if (currHourWithDecimal >= Convert.ToInt32(timeStart[0]) || currHourWithDecimal < Convert.ToInt32(timeEnd[0]))
|
|
//{
|
|
// shiftId = shift.shiftId;
|
|
// break;
|
|
//}
|
|
}
|
|
|
|
string[] endTimeReally = endTimeRecord.Split(':');
|
|
string[] startTimeReally = startTimeRecord.Split(':');
|
|
DateTime currShiftDate = DateTime.Now.Date;
|
|
TimeSpan currTimeNew = new TimeSpan(currHour, currMinute, 0); // 获取当前小时+分钟数
|
|
TimeSpan startTimeNew = new TimeSpan(Convert.ToInt32(startTimeReally[0]), Convert.ToInt32(startTimeReally[1]), 0); // 表示9小时45分钟0秒
|
|
TimeSpan endTimeNew = new TimeSpan(Convert.ToInt32(endTimeReally[0]), Convert.ToInt32(endTimeReally[1]), 0); // 表示9小时45分钟0秒
|
|
//计算白夜班工作日期用
|
|
int resultstart = TimeSpan.Compare(currTimeNew, startTimeNew);
|
|
// 比较当前时间点和班次结束的时间点
|
|
int resultEnd = TimeSpan.Compare(currTimeNew, endTimeNew);
|
|
|
|
//夜班、
|
|
if (resultstart < 0 && resultEnd < 0)
|
|
{
|
|
currShiftDate = DateTime.Now.Date.AddDays(-1);
|
|
}
|
|
|
|
|
|
|
|
//modelWareHouse = new List<WorkOrder>();
|
|
|
|
DataTable dt = userDbWareHouse.GetWetPlanInfo(deviceCode, currShiftDate.ToString());
|
|
if (dt == null) return;
|
|
|
|
this.dgWorkOrderInfo.ItemsSource = null;
|
|
this.dgWorkOrderInfo.ItemsSource = 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 DataRowView);
|
|
//var selectedRow = dgWorkOrderInfo.SelectedItem as FoamingMacModel;
|
|
if (selectedRow == null)
|
|
{
|
|
MessageBox.Show("请选择你要暂停的工单!", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
return;
|
|
}
|
|
|
|
var workordercode = selectedRow["workorder_code"].ToString();//.workorder_code;
|
|
string currStatus = selectedRow["status"].ToString();//.status;
|
|
if (currStatus != "w2")
|
|
{
|
|
MessageBox.Show("只有活动中的工单才支持暂停!", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
return;
|
|
}
|
|
|
|
PauseOrderWin pauseOrderWin = new PauseOrderWin();
|
|
if (pauseOrderWin.ShowDialog() == true)
|
|
{
|
|
|
|
|
|
formingMachineService.UpdateWorkOrder(workordercode, "w4", pauseOrderWin.remark, pauseOrderWin.type, deviceCode);
|
|
GetWorkOrderInfo();
|
|
}
|
|
//MessageBoxResult result = MessageBox.Show("你确定要暂停该工单吗?", "温馨提示", MessageBoxButton.YesNo, MessageBoxImage.Information);
|
|
//if (result == MessageBoxResult.No)
|
|
// return;
|
|
|
|
}
|
|
|
|
private void btnRecover_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
//var selectedRow = dgWorkOrderInfo.SelectedItem as FoamingMacModel;
|
|
var selectedRow = (dgWorkOrderInfo.SelectedItem as DataRowView);
|
|
if (selectedRow == null)
|
|
{
|
|
MessageBox.Show("请选择你要恢复的工单!", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
return;
|
|
}
|
|
var workordercode = selectedRow["workorder_code"].ToString();//.workorder_code;
|
|
string currStatus = selectedRow["status"].ToString();//.status;
|
|
if (currStatus != "w4")
|
|
{
|
|
MessageBox.Show("只有暂停中的工单才支持恢复!", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
return;
|
|
}
|
|
//MessageBoxResult result = MessageBox.Show("你确定要恢复该工单吗?", "温馨提示", MessageBoxButton.YesNo, MessageBoxImage.Information);
|
|
//if (result == MessageBoxResult.No)
|
|
// return;
|
|
PauseOrderWin pauseOrderWin = new PauseOrderWin();
|
|
if (pauseOrderWin.ShowDialog() == true)
|
|
{
|
|
formingMachineService.UpdateWorkOrder(workordercode, "w2", pauseOrderWin.remark, pauseOrderWin.type, deviceCode);
|
|
GetWorkOrderInfo();
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查看工艺
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Flow_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var selectedRow = (dgWorkOrderInfo.SelectedItem as DataRowView);//dgWorkOrderInfo.SelectedItem as FoamingMacModel;
|
|
if (selectedRow == null) return;
|
|
var workordercode = selectedRow["workorder_code"].ToString();//.workorder_code;
|
|
DataTable dt = userDbWareHouse.GetFlowInfo(workordercode);
|
|
FlowInfoWin flowInfoWin = new FlowInfoWin(dt);
|
|
flowInfoWin.ShowDialog();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查看物料
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Material_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var selectedRow = (dgWorkOrderInfo.SelectedItem as DataRowView); //dgWorkOrderInfo.SelectedItem as FoamingMacModel;
|
|
if (selectedRow == null) return;
|
|
var processid = selectedRow["workorder_code"].ToString();//.workorder_code;
|
|
DataTable dt = userDbWareHouse.GetMaterialInfo(processid);
|
|
LanJu_Material sopInfoWin = new LanJu_Material(dt);
|
|
sopInfoWin.ShowDialog();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查看SOP
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Button_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var selectedRow = (dgWorkOrderInfo.SelectedItem as DataRowView); //dgWorkOrderInfo.SelectedItem as FoamingMacModel;
|
|
if (selectedRow == null) return;
|
|
var workordercode = selectedRow["route_code"].ToString();//.workorder_code;
|
|
DataTable dt = userDbWareHouse.GetSOPInfo(workordercode);
|
|
SopInfoWin sopInfoWin = new SopInfoWin(dt);
|
|
sopInfoWin.ShowDialog();
|
|
}
|
|
|
|
private void btnRefresh_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
GetWorkOrderInfo();
|
|
LanJu_InOut lanJu_In = new LanJu_InOut(_workOrderCode, deviceCode);
|
|
lanJu_In.GetInOutRecordInfo();
|
|
}
|
|
|
|
private async void btnComplete_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
var selectedRow = (dgWorkOrderInfo.SelectedItem as DataRowView); //dgWorkOrderInfo.SelectedItem as FoamingMacModel;
|
|
if (selectedRow == null)
|
|
{
|
|
MessageBox.Show("请选择你要报工的工单!", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
return;
|
|
}
|
|
if (!selectedRow["status"].ToString().Equals("w2"))
|
|
{
|
|
MessageBox.Show("你选择的工单不能报工!", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
return;
|
|
}
|
|
string newReportCode = "";
|
|
DataTable dtNewReportCode = formingMachineService.GetReportCode();
|
|
if (dtNewReportCode == null || dtNewReportCode.Rows.Count == 0)
|
|
{
|
|
newReportCode = (Convert.ToInt64(dtNewReportCode.Rows[0]["report_code"].ToString()) + 1).ToString();
|
|
}
|
|
|
|
ExecReportWorkWin execReport = new ExecReportWorkWin(selectedRow["workorder_code"].ToString(), selectedRow["quantity_split"].ToString());
|
|
|
|
|
|
|
|
|
|
if (execReport.ShowDialog() == true)
|
|
{
|
|
string workTime = execReport._workTime;
|
|
string costCenter = execReport._costCenter;
|
|
string userCount = execReport._useMan;
|
|
bool issucc = formingMachineService.ExecuteReportWork(selectedRow, newReportCode, workTime, userCount, costCenter, deviceCode);
|
|
if (issucc)
|
|
{
|
|
//调用报工接口
|
|
string apiUrl = formingMachineService.InterfaceUrl("reportWork");
|
|
ReportWork reportWork = new ReportWork();
|
|
reportWork.factoryCode = Utils.GetAppSetting("SiteCode");
|
|
reportWork.reportCode = newReportCode;
|
|
// 将要发送的数据序列化为JSON格式
|
|
var jsonContent = JsonConvert.SerializeObject(reportWork);
|
|
LogHelper.instance.log.Info("开始报工>>" + jsonContent);
|
|
RestHelper restClient = new RestHelper();
|
|
//var response =;
|
|
|
|
Rootobjectresu result = Utils.DeJson<Rootobjectresu>(await restClient.PostAsync(apiUrl, jsonContent));
|
|
|
|
if (result.code == 200)
|
|
{
|
|
GetWorkOrderInfo();
|
|
}
|
|
else
|
|
{
|
|
CustomMessageBox.Show("调用报工接口失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CustomMessageBox.Show("报工失败", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
private void dgWorkOrderInfo_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
if (dgWorkOrderInfo.SelectedItems.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
var selectedRow = (dgWorkOrderInfo.SelectedItem as DataRowView);
|
|
_workOrderCode = selectedRow["workorder_code"].ToString();
|
|
//InOut_Click(null,null);
|
|
//Complete_Click(null,null);
|
|
}
|
|
|
|
private void HFPlcvalue_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
HBLogWin HFPlcWin = new HBLogWin();
|
|
HFPlcWin.ShowDialog();
|
|
}
|
|
}
|
|
public class ReportWork
|
|
{
|
|
public string factoryCode { get; set; }
|
|
public string reportCode { get; set; }
|
|
}
|
|
}
|