using IWareCommon.Enum.Chaidie; using IWareCommon.Enum.Common; using IWareCommon.Enum.Rgv; using IWareCommon.Enum.Srm; using IWareCommon.Help; using SiemensWCS.ControlCenterService; using SiemensWCS.ORM; using SiemensWCS.Properties; using SiemensWCSs; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace SiemensWCS { public partial class WCSFrom : Form { AutoSizeFormClass asc_dgvPartTask = new AutoSizeFormClass(); AutoSizeFormClass asc_tabPage_dgvPartTaskHistory = new AutoSizeFormClass(); AutoSizeFormClass asc_tabPage_MainTask = new AutoSizeFormClass(); #region 线程 const int cycleDelay = 1010;//各个线程的延迟毫秒数 Thread tskGetSrm1Info;//获取堆垛机1信息的线程 Thread tskGetSrm2Info;//获取堆垛机2信息的线程 Thread tskSetSrmLable;//各种堆垛机工作状态的显示的控制线程 Thread tskGetSrmConveyorInfo;//获取立库输送线的任务完成等信息的线程 Thread tskSetSrmTransLable;//各种立库输送机工作状态的显示的控制线程 Thread tskGetRgv1Info;//获取Rgv1信息的线程 Thread tskGetRgv2Info;//获取Rgv2信息的线程 Thread tskSetRgvLable;//各种Rgv工作状态的显示的控制线程 Thread tskGetChaiDie1Info;//获取拆叠机1信息的线程 Thread tskGetChaiDie2Info;//获取拆叠机2信息的线程 Thread tskGetChaiDie3Info;//获取拆叠机3信息的线程 Thread tskGetChaiDie4Info;//获取拆叠机4信息的线程 Thread tskSetChaiDieLable;//各种拆叠机工作状态的显示的控制线程 ControlCenterWcfServiceClient ccclient; #endregion #region 设备变量 public static SrmInfoEntity srm1Info, srm2Info; public static ConveyorInfoEntity srmConveyorInfo; public static RgvInfoEntity rgv1, rgv2; public static ChaiDieInfoEntity chaidie1, chaidie2, chaidie3, chaidie4; #endregion public WCSFrom() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; srm1Info = new SrmInfoEntity(); srm2Info = new SrmInfoEntity(); rgv1 = new RgvInfoEntity(); rgv2 = new RgvInfoEntity(); chaidie1 = new ChaiDieInfoEntity(); chaidie2 = new ChaiDieInfoEntity(); chaidie3 = new ChaiDieInfoEntity(); chaidie4 = new ChaiDieInfoEntity(); srmConveyorInfo = new ConveyorInfoEntity(); //各种工作状态的显示的控制 tskSetSrmLable = new Thread(SrmRead_Label); tskSetSrmLable.Start(); tskGetSrm1Info = new Thread(GetSrm1Info); tskGetSrm1Info.Start(); tskGetSrm2Info = new Thread(GetSrm2Info); tskGetSrm2Info.Start(); tskGetSrmConveyorInfo = new Thread(GetSrmConveyorInfo); tskGetSrmConveyorInfo.Start(); tskSetSrmTransLable = new Thread(SetSrmTransLable); tskSetSrmTransLable.Start(); tskGetRgv1Info = new Thread(GetRgvInfo1); tskGetRgv1Info.Start(); tskGetRgv2Info = new Thread(GetRgvInfo2); tskGetRgv2Info.Start(); tskSetRgvLable = new Thread(SetRgvLable); tskSetRgvLable.Start(); tskGetChaiDie1Info = new Thread(GetChaiDie1Info); tskGetChaiDie1Info.Start(); tskGetChaiDie2Info = new Thread(GetChaiDie2Info); tskGetChaiDie2Info.Start(); tskGetChaiDie3Info = new Thread(GetChaiDie3Info); tskGetChaiDie3Info.Start(); tskGetChaiDie4Info = new Thread(GetChaiDie4Info); tskGetChaiDie4Info.Start(); tskSetChaiDieLable = new Thread(SetChaiDieLable); tskSetChaiDieLable.Start(); } #region 堆垛机相关 /// /// 循环刷新1号堆垛机信息 /// /// private void GetSrm1Info(object obj) { while (true) { Thread.Sleep(cycleDelay); try { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.Open(); string msg = ""; srm1Info = opcClinet.GetStackInfo("Srm1", out msg); } Thread.Sleep(1010); } catch (Exception) { continue; } } } /// /// 循环刷新2号堆垛机信息 /// /// private void GetSrm2Info(object obj) { while (true) { Thread.Sleep(cycleDelay); try { using (var opcClinet = new ControlCenterWcfServiceClient()) { string msg = ""; srm2Info = opcClinet.GetStackInfo("Srm2", out msg); } Thread.Sleep(1010); } catch (Exception) { continue; } } } /// /// 给前端UI中的SrmLable赋值 /// private void SrmRead_Label() { while (true) { Thread.Sleep(1010); try { SetSrm1UI(); SetSrm2UI(); } catch (Exception ex) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "SrmRead_Label:{0}", ex.ToString()); continue; } } } /// /// 设置Srm2的UI /// private void SetSrm2UI() { lbSrm2Col.Text = "当前列:" + srm2Info.PosX; lbSrm2Layer.Text = "当前层:" + srm2Info.PosY; lbSrm2WorkMode.Text = "设备模式:" + (srm2Info.Mode); if (srm2Info.State != "7") lbSrm2WorkState.Text = "工作状态:" + srm2Info.State; else lbSrm2WorkState.Text = "工作状态:报警空间但有货"; //lbSrm2SourcePlace.Text = "起始位: " + srm2Info.WSourcePosX + srm2Info.WSourcePosY + srm2Info.WSourcePosZ; //lbSrm2SourcePlace.Text = "起始位: " + srm2Info.PosZmm + srm2Info.PosYmm + srm2Info.PosXmm; //lbSrm2ToPlace.Text = "目标位: " + srm2Info.WDestinationPosX + srm2Info.WDestinationPosY + srm2Info.WDestinationPosZ; lbSrm2SourcePlace.Text = "起始位: " + srm2Info.WSourcePosZ + "-" + srm2Info.WSourcePosX + "-" + srm2Info.WSourcePosY; lbSrm2ToPlace.Text = "目标位: " + srm2Info.WDestinationPosZ + "-" + srm2Info.WDestinationPosX + "-" + srm2Info.WDestinationPosY; lbSrm2TaskId.Text = "任务号: " + srm2Info.TaskNo; lab2TaskFinsh.Text = "任务是否完成: " + srm2Info.TaskFinish; lab2Ack.Text = "任务是否接收成功: " + srm2Info.WAck; labSrm2Alerm.Text = "报警:" + srm2Info.Alarm; labSrm2Heart.Text = "心跳:" + srm2Info.HandShake; labSrm2IsOnLine.Text = "在线:" + srm2Info.IsOnline; if (!srm2Info.Alarm && srm2Info.IsOnline)//正常状态 { lbSrm2Alert.Text = string.Empty; lbSrm2Alert.ForeColor = Color.SkyBlue; lbSrm2Alert.BackColor = Color.Transparent; lbSrm2State.ForeColor = Color.Maroon; lbSrm2State.BackColor = Control.DefaultBackColor; } //处于报警状态下 if (srm2Info.Alarm || !srm2Info.IsOnline) { lbSrm2Alert.Text = srm2Info.AlarmNumber; lbSrm2Alert.ForeColor = Color.White; lbSrm2Alert.BackColor = Color.Red; lbSrm2State.ForeColor = Color.White; lbSrm2State.BackColor = Color.Red; } } private void SetSrm1UI() { lbSrm1Col.Text = "当前列:" + srm1Info.PosX; lbSrm1Layer.Text = "当前层:" + srm1Info.PosY; lbSrm1WorkMode.Text = "设备模式:" + (srm1Info.Mode); if (srm1Info.State != "7") lbSrm1WorkState.Text = "工作状态:" + srm1Info.State; else lbSrm1WorkState.Text = "工作状态:报警空间但有货"; //lbSrm1SourcePlace.Text = "起始位: " + srm1Info.PosZmm + srm1Info.PosYmm + srm1Info.PosXmm; ////lbSrm1SourcePlace.Text = "起始位: " + srm1Info.WSourcePosX + srm1Info.WSourcePosY + srm1Info.WSourcePosZ; //lbSrm1ToPlace.Text = "目标位: " + srm1Info.WDestinationPosX + srm1Info.WDestinationPosY + srm1Info.WDestinationPosZ; lbSrm1SourcePlace.Text = "起始位: " + srm1Info.WSourcePosZ + "-" + srm1Info.WSourcePosX + "-" + srm1Info.WSourcePosY; lbSrm1ToPlace.Text = "目标位: " + srm1Info.WDestinationPosZ + "-" + srm1Info.WDestinationPosX + "-" + srm1Info.WDestinationPosY; lbSrm1TaskId.Text = "任务号: " + srm1Info.TaskNo; lab1TaskFinsh.Text = "任务是否完成: " + srm1Info.TaskFinish; lab1Ack.Text = "任务是否接收成功: " + srm1Info.WAck; labSrm1Alerm.Text = "报警:" + srm1Info.Alarm; labSrm1Heart.Text = "心跳:" + srm1Info.HandShake; labSrm1IsOnLine.Text = "在线:" + srm1Info.IsOnline; if (!srm1Info.Alarm && srm1Info.IsOnline) { lbSrm1Alert.Text = string.Empty; lbSrm1Alert.ForeColor = Color.SkyBlue; lbSrm1Alert.BackColor = Color.Transparent; lbSrm1State.ForeColor = Color.Maroon; lbSrm1State.BackColor = Control.DefaultBackColor; } //处于报警状态下 if (srm1Info.Alarm || !srm1Info.IsOnline) { lbSrm1Alert.Text = srm1Info.AlarmNumber; lbSrm1Alert.ForeColor = Color.White; lbSrm1Alert.BackColor = Color.Red; lbSrm1State.ForeColor = Color.White; lbSrm1State.BackColor = Color.Red; } } /// /// 堆垛机1发送任务 /// /// /// private void btnSrm1Send_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { using (var opcClinet = new ControlCenterWcfServiceClient()) { var sourcePlce = tB_Srm1SourcePlace.Text.Trim(); var toPlace = tB_Srm1ToPlace.Text.Trim(); if (!IsNumeric(tbSrm1TaskId.Text.Trim())) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); return; } int palltype = 1; if (cmb1PallTYpe.Text == "大托盘") { palltype = 2; } int height = 1; switch (cb1Height.Text) { case "一档": height = 1; break; case "二档": height = 2; break; case "三档": height = 1; break; case "四档": height = 1; break; } bool returnVal = opcClinet.SendManualSrmTask(EDevName.Srm1.ToString(), sourcePlce, toPlace, 1, int.Parse(tbSrm1TaskId.Text.Trim()), palltype, height); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); tB_Srm1SourcePlace.Clear(); tB_Srm1ToPlace.Clear(); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); } } tB_Srm1SourcePlace.Focus(); tB_Srm1SourcePlace.SelectAll(); })); pc.Show(); } /// /// 校验输入的库位ID是否符合格式 /// /// 库位号 /// private bool IsNumeric(string str) { try { int place = int.Parse(str); return true; } catch (Exception) { return false; } } /// /// 1号堆垛机删除任务 /// /// /// private void btnSrm1Delete_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendDeleteSrmTask(EDevName.Srm1.ToString(), int.Parse(tbSrm1TaskId.Text.Trim())); } })); pc.Show(); } /// /// 1 号堆垛机发送移动任务 /// /// /// private void btnSrm1Move_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { using (var opcClinet = new ControlCenterWcfServiceClient()) { if (!IsNumeric(tbSrm1TaskId.Text.Trim())) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); return; } bool returnVal = opcClinet.SendManualMoveSrmTask(EDevName.Srm1.ToString(), int.Parse(tbSrm1TaskId.Text.Trim()), tB_Srm1SourcePlace.Text.Trim(), tB_Srm1ToPlace.Text.Trim()); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码:" + returnVal); } } })); pc.Show(); } /// /// 1号堆垛机急停 /// /// /// private void btnSrm1EStop_Click(object sender, EventArgs e) { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendStopSrm(EDevName.Srm1.ToString()); } } private void tB_Srm1SourcePlace_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) tB_Srm1ToPlace.Focus(); } /// /// 撤销1号堆垛机报警 /// /// /// private void btnSrm1RlsAlert_Click(object sender, EventArgs e) { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendResolveSrmAlarm(EDevName.Srm1.ToString()); } } /// /// 2号堆垛机发送任务 /// /// /// private void btnSrm2Send_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { var sourcePlce = tB_Srm2SourcePlace.Text.Trim(); var toPlace = tB_Srm2ToPlace.Text.Trim(); if (!IsNumeric(tbSrm2TaskId.Text.Trim())) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); return; } int palltype = 1; if (cb2PallType.Text == "大托盘") { palltype = 2; } int height = 1; switch (cb2Height.Text) { case "一档": height = 1; break; case "二档": height = 2; break; case "三档": height = 3; break; case "四档": height = 4; break; } bool returnVal = opcClinet.SendManualSrmTask(EDevName.Srm2.ToString(), sourcePlce, toPlace, 1, int.Parse(tbSrm2TaskId.Text.Trim()), palltype, height); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); tB_Srm2SourcePlace.Clear(); tB_Srm2ToPlace.Clear(); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码:" + returnVal); } } tB_Srm2SourcePlace.Focus(); tB_Srm2SourcePlace.SelectAll(); #endregion })); pc.Show(); } /// /// 2号堆垛机发送移动任务 /// /// /// private void btnSrm2Move_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { if (!IsNumeric(tbSrm2TaskId.Text.Trim())) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误"); return; } int palltype = 1; if (cb2PallType.Text == "大托盘") { palltype = 2; } int height = 1; switch (cb2Height.Text) { case "一档": height = 1; break; case "二档": height = 1; break; case "三档": height = 1; break; case "四档": height = 1; break; } bool returnVal = opcClinet.SendManualMoveSrmTask(EDevName.Srm2.ToString(), int.Parse(tbSrm2TaskId.Text.Trim()), tB_Srm2SourcePlace.Text.Trim(), tB_Srm2ToPlace.Text.Trim()); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal.ToString()); } } #endregion })); pc.Show(); } /// /// 2号堆垛机急停 /// /// /// private void btnSrm2EStop_Click(object sender, EventArgs e) { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendStopSrm(EDevName.Srm2.ToString()); } } /// /// 2号堆垛机解除报警 /// /// /// private void btnSrm2RlsAlert_Click(object sender, EventArgs e) { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendResolveSrmAlarm(EDevName.Srm2.ToString()); } } /// /// 2号堆垛机删除任务 /// /// /// private void btnSrm2Delete_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { bool b1 = opcClinet.SendDeleteSrmTask(EDevName.Srm2.ToString(), int.Parse(tbSrm2TaskId.Text.Trim())); } #endregion })); pc.Show(); } private void tB_Srm2SourcePlace_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) tB_Srm2ToPlace.Focus(); } private void btnSrm1Confirm_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { try { if (new ControlCenterWcfServiceClient().ConfirmSrmTaskFinish (EDevName.Srm1.ToString())) { tbSrm1TaskId.Clear(); } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } })); pc.Show(); } private void btnSrm2Confirm_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmSrmTaskFinish (EDevName.Srm2.ToString())) { tbSrm2TaskId.Clear(); } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } #endregion #region RGV相关的 /// /// 获取RGV2的信息 /// /// private void GetRgvInfo2(object obj) { while (true) { Thread.Sleep(cycleDelay); try { using (var opcClinet = new ControlCenterWcfServiceClient()) { string msg = ""; rgv2 = opcClinet.GetRGVInfo(EDevName.Rgv2.ToString(), out msg); } } catch (Exception) { continue; } } } /// /// 获取RGV1信息 /// /// private void GetRgvInfo1(object obj) { while (true) { Thread.Sleep(cycleDelay); try { using (var opcClinet = new ControlCenterWcfServiceClient()) { string msg = ""; rgv1 = opcClinet.GetRGVInfo(EDevName.Rgv1.ToString(), out msg); } } catch (Exception) { continue; } } } /// /// 设置RGV显示线程 /// /// private void SetRgvLable(object obj) { while (true) { Thread.Sleep(cycleDelay); try { SetRgv1UI(); SetRgv2UI(); } catch (Exception) { continue; } } } /// /// 设置RGV1相关显示 /// private void SetRgv1UI() { lbRgv1_Y.Text = "当前行走位置: " + rgv1.RgvPosition; lbRgv1_X.Text = "当前区域位置: " + rgv1.SPos; lbRgv1WorkState.Text = "工作状态: " + rgv1.State; lbRgv1TaskId.Text = "任务号: " + rgv1.TaskNo; lbRgv1Alert.Text = rgv1.Alarm; lbRgv1Barcode.Text = "是否有货:" + rgv1.AlarmCode; lbRgv1Mode.Text = "模 式:" + rgv1.Mode; lbRgv1TaskFinish.Text = "任务完成:" + rgv1.TaskFinish; labRGV1Heaert.Text = "心跳:" + rgv1.HandShake; labRgv1Isonline.Text = "在线:" + rgv1.IsOnline; labRgv1Alerm.Text = "报警:" + rgv1.Alarm; if (rgv1.Alarm == "正常" && rgv1.IsOnline == "在线") { lbRgv1Alert.Text = string.Empty; lbRgv1Alert.ForeColor = Color.SkyBlue; lbRgv1Alert.BackColor = Color.Transparent; label3.ForeColor = Color.Maroon; label3.BackColor = Control.DefaultBackColor; } //处于报警状态下 if (rgv1.Alarm == "告警" || rgv1.IsOnline == "离线") { lbRgv1Alert.Text = srm1Info.AlarmNumber; lbRgv1Alert.ForeColor = Color.White; lbRgv1Alert.BackColor = Color.Red; label3.ForeColor = Color.White; label3.BackColor = Color.Red; } } /// /// 设置RGV2相关显示 /// private void SetRgv2UI() { lbRgv2_Y.Text = "当前行走位置: " + rgv2.RgvPosition; lbRgv2_X.Text = "当前区域位置: " + rgv2.SPos; lbRgv2WorkState.Text = "工作状态: " + rgv2.State; lbRgv2TaskId.Text = "任务号: " + rgv2.TaskNo; lbRgv2Alert.Text = rgv2.Alarm; lbRgv2Barcode.Text = "是否有货:" + rgv2.AlarmCode; lbRgv2Mode.Text = "模 式:" + rgv2.Mode; lbRgv2TaskFinish.Text = "任务完成:" + rgv2.TaskFinish; labRGV2Heaert.Text = "心跳:" + rgv2.HandShake; labRgv2Isonline.Text = "在线:" + rgv2.IsOnline; labRgv2Alerm.Text = "报警:" + rgv2.Alarm; if (rgv2.Alarm == "正常" && rgv2.IsOnline == "在线") { lbRgv2Alert.Text = string.Empty; lbRgv2Alert.ForeColor = Color.SkyBlue; lbRgv2Alert.BackColor = Color.Transparent; label16.ForeColor = Color.Maroon; label16.BackColor = Control.DefaultBackColor; } //处于报警状态下 if (rgv2.Alarm == "告警" || rgv2.IsOnline == "离线") { lbRgv2Alert.Text = srm1Info.AlarmNumber; lbRgv2Alert.ForeColor = Color.White; lbRgv2Alert.BackColor = Color.Red; label16.ForeColor = Color.White; label16.BackColor = Color.Red; } } private void btnRgv1TaskSend_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { var sourcePlce = tbRgv1SourcePlace.Text.Trim(); var toPlace = tbRgv1ToPlace.Text.Trim(); string type = cmb1PallTYpe.Text; int palltype = 1; if (type == "小托盘") { palltype = 1; } else { palltype = 2; } if (!IsNumeric(tbRgv1TaskNo.Text.Trim())) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); return; } bool returnVal = opcClinet.SendRGVTask(EDevName.Rgv1.ToString(), int.Parse(tbRgv1TaskNo.Text.Trim()), sourcePlce, toPlace, palltype); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); tbRgv1SourcePlace.Clear(); tbRgv1ToPlace.Clear(); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); } } tbRgv1SourcePlace.Focus(); tbRgv1SourcePlace.SelectAll(); #endregion })); pc.Show(); } private void btnRgv1TaskConfirm_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmRGVTaskFinish (EDevName.Rgv1.ToString())) { tbRgv1TaskNo.Clear(); tbRgv1TaskId.Clear(); } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void btnRgv1RelAlerm_Click(object sender, EventArgs e) { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendResolveRGVAlarm(EDevName.Rgv1.ToString()); } } private void btnRgv1TaskDelete_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendDeleteRGVTask(EDevName.Rgv1.ToString(), int.Parse(tbRgv1TaskId.Text.Trim())); } #endregion })); pc.Show(); } private void btnRgv1Stop_Click(object sender, EventArgs e) { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendStopRGV(EDevName.Rgv1.ToString()); } } private void btnRgv2TaskSend_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { var sourcePlce = tbRgv2SourcePlace.Text.Trim(); var toPlace = tbRgv2ToPlace.Text.Trim(); string type = cmd2PallType.Text; int palltype = 1; if (type == "小托盘") { palltype = 1; } else { palltype = 2; } if (!IsNumeric(tbRgv2TaskNo.Text.Trim())) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); return; } bool returnVal = opcClinet.SendRGVTask(EDevName.Rgv2.ToString(), int.Parse(tbRgv2TaskNo.Text.Trim()), sourcePlce, toPlace, palltype); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); tbRgv2SourcePlace.Clear(); tbRgv2ToPlace.Clear(); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); } } tbRgv2SourcePlace.Focus(); tbRgv2SourcePlace.SelectAll(); #endregion })); pc.Show(); } private void btnRgv2TaskConfirm_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmRGVTaskFinish (EDevName.Rgv2.ToString())) { tbRgv2TaskNo.Clear(); tbRgv2TaskId.Clear(); } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void btnRgv2RelAlerm_Click(object sender, EventArgs e) { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendResolveRGVAlarm(EDevName.Rgv2.ToString()); } } private void btnRgv2TaskDelete_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendDeleteRGVTask(EDevName.Rgv2.ToString(), int.Parse(tbRgv2TaskId.Text.Trim())); } #endregion })); pc.Show(); } private void btnRgv2Stop_Click(object sender, EventArgs e) { using (var opcClinet = new ControlCenterWcfServiceClient()) { opcClinet.SendStopRGV(EDevName.Rgv2.ToString()); } } #endregion #region 拆叠机相关的 private void GetChaiDie4Info(object obj) { while (true) { Thread.Sleep(cycleDelay); try { using (var opcClinet = new ControlCenterWcfServiceClient()) { string msg = ""; chaidie4 = opcClinet.GetChaiDieInfo(EDevName.ChaiDei4.ToString(), out msg); } } catch (Exception) { continue; } } } private void GetChaiDie3Info(object obj) { while (true) { Thread.Sleep(cycleDelay); try { using (var opcClinet = new ControlCenterWcfServiceClient()) { string msg = ""; chaidie3 = opcClinet.GetChaiDieInfo(EDevName.ChaiDei3.ToString(), out msg); } } catch (Exception) { continue; } } } private void GetChaiDie2Info(object obj) { while (true) { Thread.Sleep(cycleDelay); try { using (var opcClinet = new ControlCenterWcfServiceClient()) { string msg = ""; chaidie2 = opcClinet.GetChaiDieInfo(EDevName.ChaiDei2.ToString(), out msg); } } catch (Exception) { continue; } } } private void GetChaiDie1Info(object obj) { while (true) { Thread.Sleep(cycleDelay); try { using (var opcClinet = new ControlCenterWcfServiceClient()) { string msg = ""; chaidie1 = opcClinet.GetChaiDieInfo(EDevName.ChaiDei1.ToString(), out msg); } } catch (Exception) { continue; } } } private void SetChaiDieLable(object obj) { while (true) { Thread.Sleep(cycleDelay); try { SetChaiDie1UI(); SetChaiDie2UI(); SetChaiDie3UI(); SetChaiDie4UI(); } catch (Exception) { continue; } } } private void SetChaiDie4UI() { lbChaiDie4Statu.Text = "设备状态: " + chaidie4.State; lbChaiDie4Mode.Text = "设备模式: : " + chaidie4.Mode; lbChaiDie4Alerm.Text = "是否有报警: " + chaidie4.Alarm; lbChaiDie4AlermCode.Text = "报警代码: " + chaidie4.RAlarmCode; lbChaiDie4IsFull.Text = "是否满盘: " + chaidie4.EmptyStatus; } private void SetChaiDie3UI() { lbChaiDie3Statu.Text = "设备状态: " + chaidie3.State; lbChaiDie3Mode.Text = "设备模式: : " + chaidie3.Mode; lbChaiDie3Alerm.Text = "是否有报警: " + chaidie3.Alarm; lbChaiDie3AlermCode.Text = "报警代码: " + chaidie3.RAlarmCode; lbChaiDie3IsFull.Text = "是否满盘: " + chaidie3.EmptyStatus; } private void SetChaiDie2UI() { lbChaiDie2Statu.Text = "设备状态: " + chaidie2.State; lbChaiDie2Mode.Text = "设备模式: : " + chaidie2.Mode; lbChaiDie2Alerm.Text = "是否有报警: " + chaidie2.Alarm; lbChaiDie2AlermCode.Text = "报警代码: " + chaidie2.RAlarmCode; lbChaiDie2IsEmpty.Text = "是否空盘: " + chaidie2.EmptyStatus; lbAck2.Text = "是否收到: " + chaidie2.ACK; } private void SetChaiDie1UI() { lbChaiDie1Statu.Text = "设备状态: " + chaidie1.State; lbChaiDie1Mode.Text = "设备模式: : " + chaidie1.Mode; lbChaiDie1Alerm.Text = "是否有报警: " + chaidie1.Alarm; lbChaiDie1AlermCode.Text = "报警代码: " + chaidie1.RAlarmCode; lbChaiDie1IsEmpty.Text = "是否空盘: " + chaidie1.EmptyStatus; lbAck1.Text = "是否收到: " + chaidie1.ACK; } private void btnChaiDie1TaskSend_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { bool returnVal = opcClinet.SendChaiDieTask(EDevName.ChaiDei1.ToString()); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); } } #endregion })); pc.Show(); } private void btnChaiDie1TaskConfirm_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmChaiDieStp (EDevName.ChaiDei1.ToString())) { } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void btnChaiDie2TaskSend_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { bool returnVal = opcClinet.SendChaiDieTask(EDevName.ChaiDei2.ToString()); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); } } #endregion })); pc.Show(); } private void btnChaiDie2TaskConfirm_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmChaiDieStp (EDevName.ChaiDei2.ToString())) { } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void btnChaiDie3TaskSend_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { bool returnVal = opcClinet.SendChaiDieTask(EDevName.ChaiDei3.ToString()); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); } } #endregion })); pc.Show(); } private void btnChaiDie3TaskConfirm_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmChaiDieStp (EDevName.ChaiDei3.ToString())) { } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void btnChaiDie4TaskSend_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { bool returnVal = opcClinet.SendChaiDieTask(EDevName.ChaiDei4.ToString()); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); } } #endregion })); pc.Show(); } private void btnChaiDie4TaskConfirm_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmChaiDieStp (EDevName.ChaiDei4.ToString())) { } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } #endregion #region 输送线相关 /// /// 获取立库输送机的任务完成情况 /// private void GetSrmConveyorInfo() { while (true) { Thread.Sleep(cycleDelay); try { using (var opcClient = new ControlCenterWcfServiceClient()) { string msg = ""; srmConveyorInfo = opcClient.GetConveyorInfo("", out msg); } } catch (Exception) { continue; } } } /// /// 设置立库输送机的UI显示 /// /// private void SetSrmTransLable(object obj) { while (true) { Thread.Sleep(cycleDelay); try { } catch (Exception) { continue; } } } /// /// 线体任务下发 /// /// /// private void btnSrmTransSend_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 using (var opcClinet = new ControlCenterWcfServiceClient()) { var toPlace = tBSrmTransToPlace.Text.Trim(); string conname = "Line" + tBLineNum.Text.Trim(); int palltype = 1; string type = cmb1PallTYpe.Text; if (type == "小托盘") { palltype = 1; } else { palltype = 2; } if (!IsNumeric(tBSrmTransTskId.Text.Trim())) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "任务号格式错误!"); return; } bool returnVal = opcClinet.SendConveyorTask(conname, (int)EDevName.Line4, int.Parse(tBSrmTransTskId.Text.Trim()), toPlace, palltype); if (returnVal) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送成功!"); tBSrmTransToPlace.Clear(); tBSrmTransTskId.Clear(); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "发送失败!返回代码=" + returnVal); } } tBSrmTransToPlace.Focus(); #endregion })); pc.Show(); } /// /// 线体下发确认 /// /// /// private void btnSrmTransFinishConfirm_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { string conname = "Line" + tBLineNum.Text.Trim(); if (new ControlCenterWcfServiceClient().ConfirmConveyorStp (conname)) { tbSrm1TaskId.Clear(); } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void btnSrmTransDelCrntTask_Click(object sender, EventArgs e) { } #endregion private void WCSFrom_FormClosed(object sender, FormClosedEventArgs e) { Environment.Exit(0); } private void WCSFrom_Load(object sender, EventArgs e) { asc_dgvPartTask.controllInitializeSize(this.tabPage_PartTask); asc_tabPage_dgvPartTaskHistory.controllInitializeSize(this.tabPage_dgvPartTaskHistory); asc_tabPage_MainTask.controllInitializeSize(this.tabPage_MainTask); } private void btnSrm2CtnDelete_Click(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { } private void btn1StpConfim_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmSrmACK (EDevName.Srm1.ToString())) { tbSrm1TaskId.Clear(); } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void btn2StpConfim_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmSrmACK (EDevName.Srm2.ToString())) { tbSrm2TaskId.Clear(); } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void btn1CStp_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmRGVStp (EDevName.Rgv1.ToString())) { } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void btn2CStp_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (new ControlCenterWcfServiceClient().ConfirmRGVStp (EDevName.Rgv2.ToString())) { } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); } private void tbSrm2TaskId_TextChanged(object sender, EventArgs e) { } private void lbSourcePlaceOrder_Click(object sender, EventArgs e) { } private void tB_Srm1SourcePlace_TextChanged(object sender, EventArgs e) { } private void lbToPlaceOrder_Click(object sender, EventArgs e) { } private void tB_Srm1ToPlace_TextChanged(object sender, EventArgs e) { } private void label47_Click(object sender, EventArgs e) { } private void tbSrm1TaskId_TextChanged(object sender, EventArgs e) { } /// /// 生成主任务 /// /// /// private void btnCreateMainTask_Click(object sender, EventArgs e) { MessageBox.Show("功能不可用!"); /* PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { if (string.IsNullOrEmpty(tbTaskNo.Text))//ControlCenterService { MessageBox.Show("任务号不能为空!"); return; } if (new ControlCenterWcfServiceClient().SendTask(int.Parse(tbTaskNo.Text), tbSourPlace.Text, tbToPlace.Text, cbTaskType.SelectedIndex, (cbContainerNo.SelectedIndex + 1), (cbSortType.SelectedIndex + 1), (cbHeight.SelectedIndex + 1), "")) { MessageBox.Show("下发成功!"); } else { MessageBox.Show("下发失败!"); } } catch (Exception) { LogTextHelper.WriteLine(Resources.LogDir + @"/WCS", "请检查任务号格式是否正确!"); } #endregion })); pc.Show(); //*/ } private void dgvPartTask_CellContentClick(object sender, DataGridViewCellEventArgs e) { } public void BindData() { using (DbModel db = new DbModel()) { dgvPartTask.ClearSelection(); //可消除所有选择的行 dgvPartTask.CurrentCell = null; //可消除选择行的行头箭头 string tno = tbserch.Text; // var taskList = db.TaskViews.Where(x => (x.isreleased == 0 || x.isfinished == 0) && x.taskno.Contains(tno)).ToList(); if (taskList != null && taskList.Count > 0) { SetTaskView(taskList); dgvPartTask.DataSource = null; dgvPartTask.DataSource = taskList; } else { if (dgvPartTask.Rows.Count > 0) { int i = dgvPartTask.Rows[0].Cells.Count; var cells = dgvPartTask.Rows[0].Cells; for (int j = 0; j < i; j++) { cells[j].Value = null; } } } } } private void SetTaskView(List taskList) { foreach (var item in taskList) { item.containertypeText = Enum.GetName(typeof(EContainerType), item.containertype); item.nexthandelText = Enum.GetName(typeof(ENextHandelTask), item.nexthandel); } } private void btnFind_Click(object sender, EventArgs e) { dgvPartTask.AutoGenerateColumns = false; BindData(); } private void btnDelete_Click(object sender, EventArgs e) { //禁用删除功能 【EditBy shaocx,2022-10-21】 //PassConfirm pc = new PassConfirm(new Action(delegate //{ // try // { // using (DbModel db = new DbModel()) // { // var row = dgvPartTask.SelectedRows; // if (row.Count > 0) // { // var cell = row[0].Cells; // int id = int.Parse(cell[0].Value.ToString()); // var task = db.PartTasks.FirstOrDefault(x => x.id == id); // if (task != null) // { // db.PartTasks.Remove(task); // db.SaveChanges(); // LogTextHelper.WriteLine(Resources.LogDir + @"/WCS/任务删除", "子任务号:{0},起始位置:{1},目标位置:{2}", task.id, task.sourceplace, task.toplace); // MessageBox.Show("删除成功!"); // BindData(); // } // else // { // MessageBox.Show("未找到该任务!"); // } // } // else // { // MessageBox.Show("请先选中要执行的行!"); // } // } // } // catch (Exception) // { // BindData(); // } //})); //pc.Show(); } private void btnFinish_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 MessageBoxButtons messButton = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show("确定要强制完成本次单个设备任务吗?请先确认好现场是否满足强制完成条件,谨慎操作", "确认", messButton); if (dr == DialogResult.OK)//如果点击“确定”按钮 { try { using (DbModel db = new DbModel()) { var row = dgvPartTask.SelectedRows; if (row.Count > 0) { var cell = row[0].Cells; int id = int.Parse(cell[0].Value.ToString()); var part_task = db.PartTasks.FirstOrDefault(x => x.id == id); if (part_task != null) { var maintask = db.MainTasks.OrderByDescending(x => x.id).FirstOrDefault(x => x.id == part_task.maintaskid); if (maintask == null) { MessageBox.Show("根据子任务没有找到主任务!"); return; } //增加校验 [EditBy shaocx,2022-09-10] if (part_task.nexthandel == (int)ENextHandelTask.入库处入库输送线任务) { //如果该子任务下一个执行的子任务类型是 入库处入库输送线任务,那么必须要校验光电检测结果,检测不通过,不允许强制完成任务 if (string.IsNullOrEmpty(maintask.toplace) || maintask.toplace == "0") { MessageBox.Show("入库主任务的目标位置为空或0,不允许强制完成!"); return; } } if (part_task.nexthandel == 27) { maintask.finishstatus = 1; } part_task.isfinished = 1; part_task.isreleased = 1; part_task.status = (int)EPartTaskStatus.已完成; //增加人工处理标记 【EditBy shaocx,2022-08-23】 part_task.isPersonHandler = 1;//是否人工处理 part_task.finishTime = DateTime.Now; part_task.filereason = "人工强制点击[强制单个设备任务完成]"; part_task.updatetime = DateTime.Now; db.SaveChanges(); LogTextHelper.WriteLine(Resources.LogDir + @"/WCS/强制完成", "子任务号:{0},起始位置:{1},目标位置:{2}", part_task.id, part_task.sourceplace, part_task.toplace); MessageBox.Show("强制完成成功!"); BindData(); } else { MessageBox.Show("未找到该任务!"); } } else { MessageBox.Show("请先选中要执行的行!"); } } } catch (Exception ex) { MessageBox.Show("出现异常:" + ex.Message); BindData(); } } else//如果点击“取消”按钮 { } #endregion })); pc.Show(); } private void btnReset_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 try { using (DbModel db = new DbModel()) { var row = dgvPartTask.SelectedRows; if (row.Count > 0) { var cell = row[0].Cells; int id = int.Parse(cell[0].Value.ToString()); var task = db.PartTasks.FirstOrDefault(x => x.id == id); if (task != null) { task.isfinished = 0; task.isreleased = 0; //增加人工处理标记 【EditBy shaocx,2022-08-23】 task.isPersonHandler = 1;//是否人工处理 task.filereason = "人工强制点击按钮任务重发"; task.updatetime = DateTime.Now; db.SaveChanges(); LogTextHelper.WriteLine(Resources.LogDir + @"/WCS/任务重置", "子任务号:{0},起始位置:{1},目标位置:{2}", task.id, task.sourceplace, task.toplace); MessageBox.Show("重置成功!"); BindData(); } else { MessageBox.Show("未找到该任务!"); } } else { MessageBox.Show("请先选中要执行的行!"); } } } catch (Exception ex) { MessageBox.Show("出现异常:" + ex.Message); BindData(); } #endregion })); pc.Show(); } private void btnSrm1CtnDelete_Click(object sender, EventArgs e) { } private void button6_Click(object sender, EventArgs e) { dgvPartTaskHistory.AutoGenerateColumns = false; BindData_dgvPartTaskHistory(); } public void BindData_dgvPartTaskHistory() { using (DbModel db = new DbModel()) { dgvPartTaskHistory.ClearSelection(); //可消除所有选择的行 dgvPartTaskHistory.CurrentCell = null; //可消除选择行的行头箭头 string tno = tb_wmsTaskNo.Text; var continerNo = tb_ContinerNo.Text; var eqNo = tb_EqNo_dgvPartTaskHistory.Text; var taskList = db.TaskViews.AsNoTracking().ToList(); if (!string.IsNullOrEmpty(tno)) { taskList = taskList.Where(x => x.taskno == tno).ToList(); } if (!string.IsNullOrEmpty(continerNo)) { taskList = taskList.Where(x => x.containername == continerNo).ToList(); } if (!string.IsNullOrEmpty(eqNo)) { taskList = taskList.Where(x => x.taskcode == eqNo).ToList(); } //if (!string.IsNullOrEmpty(tno) && string.IsNullOrEmpty(tb_ContinerNo2.Text)) //{ // taskList = db.MainTaskViews.Where(x => x.taskno == tno).OrderBy(x => x.sendtime).Take(20).ToList(); //} //else if (!string.IsNullOrEmpty(tb_ContinerNo2.Text) && string.IsNullOrEmpty(tno)) //{ // taskList = db.MainTaskViews.Where(x => x.containername == continerNo).OrderBy(x => x.sendtime).Take(20).ToList(); //} //else //{ // taskList = db.MainTaskViews.Where(x => x.taskno == tno && x.containername == continerNo).OrderBy(x => x.sendtime).Take(20).ToList(); //} taskList = taskList.OrderBy(x => x.sendtime).Take(20).ToList(); if (taskList != null && taskList.Count > 0) { SetTaskView(taskList); dgvPartTaskHistory.DataSource = null; dgvPartTaskHistory.DataSource = taskList; } else { if (dgvPartTaskHistory.Rows.Count > 0) { int i = dgvPartTaskHistory.Rows[0].Cells.Count; var cells = dgvPartTaskHistory.Rows[0].Cells; for (int j = 0; j < i; j++) { cells[j].Value = null; } } } } } private void WCSFrom_SizeChanged(object sender, EventArgs e) { asc_dgvPartTask.controlAutoSize(this.tabPage_PartTask); asc_tabPage_dgvPartTaskHistory.controlAutoSize(this.tabPage_dgvPartTaskHistory); asc_tabPage_MainTask.controlAutoSize(this.tabPage_MainTask); } private void SetMainTask(List taskList) { foreach (var item in taskList) { item.containertypeText = Enum.GetName(typeof(EContainerType), item.containertype); item.tasktypeText = Enum.GetName(typeof(EMainTaskType), item.tasktype); item.statusText = Enum.GetName(typeof(EMainTaskStatus), item.status); item.isfinishedText = Enum.GetName(typeof(EMainTaskFinishstatus), item.finishstatus); } } //查询历史主任务 private void button1_Click(object sender, EventArgs e) { dgvMainTaskHistory.AutoGenerateColumns = false; BindData_dgvMainTaskHistory(); } public void BindData_dgvMainTaskHistory() { using (DbModel db = new DbModel()) { dgvMainTaskHistory.ClearSelection(); //可消除所有选择的行 dgvMainTaskHistory.CurrentCell = null; //可消除选择行的行头箭头 string tno = tb_wmsTaskNo2.Text; var continerNo = tb_ContinerNo2.Text; var eqNo = tb_eqNo_dgvMainTaskHistory.Text; var taskList = db.MainTaskViews.AsNoTracking().ToList(); if (!string.IsNullOrEmpty(tno)) { taskList = taskList.Where(x => x.taskno == tno).ToList(); } if (!string.IsNullOrEmpty(continerNo)) { taskList = taskList.Where(x => x.containername == continerNo).ToList(); } if (!string.IsNullOrEmpty(eqNo)) { taskList = taskList.Where(x => x.taskcode == eqNo).ToList(); } //if (!string.IsNullOrEmpty(tno) && string.IsNullOrEmpty(tb_ContinerNo2.Text)) //{ // taskList = db.MainTaskViews.Where(x => x.taskno == tno).OrderBy(x => x.sendtime).Take(20).ToList(); //} //else if (!string.IsNullOrEmpty(tb_ContinerNo2.Text) && string.IsNullOrEmpty(tno)) //{ // taskList = db.MainTaskViews.Where(x => x.containername == continerNo).OrderBy(x => x.sendtime).Take(20).ToList(); //} //else //{ // taskList = db.MainTaskViews.Where(x => x.taskno == tno && x.containername == continerNo).OrderBy(x => x.sendtime).Take(20).ToList(); //} taskList = taskList.OrderBy(x => x.sendtime).Take(20).ToList(); if (taskList != null && taskList.Count > 0) { SetMainTask(taskList); dgvMainTaskHistory.DataSource = null; dgvMainTaskHistory.DataSource = taskList; } else { if (dgvMainTaskHistory.Rows.Count > 0) { int i = dgvMainTaskHistory.Rows[0].Cells.Count; var cells = dgvMainTaskHistory.Rows[0].Cells; for (int j = 0; j < i; j++) { cells[j].Value = null; } } } } } /// /// 整个任务强制完成 /// /// /// private void btnAllFinish_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 MessageBoxButtons messButton = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show("确定要强制完成本次全部设备的任务吗?请先确认好现场是否满足强制完成条件,谨慎操作", "确认", messButton); if (dr == DialogResult.OK)//如果点击“确定”按钮 { try { using (DbModel db = new DbModel()) { var row = dgvPartTask.SelectedRows; if (row.Count > 0) { var cell = row[0].Cells; int id = int.Parse(cell[0].Value.ToString()); var part_task = db.PartTasks.FirstOrDefault(x => x.id == id); if (part_task != null) { var maintask = db.MainTasks.OrderByDescending(x => x.id).FirstOrDefault(x => x.id == part_task.maintaskid); if (maintask == null) { MessageBox.Show("根据子任务没有找到主任务!"); return; } maintask.status = (int)EMainTaskStatus.已分解; maintask.finishstatus = 1;//主任务全部完成 part_task.isfinished = 1; part_task.isreleased = 1; part_task.ishandled = 1;//表示该任务已经被WCS处理过 ,注意:只有任务全部完成后,才会处理这个 ishandled part_task.status = (int)EPartTaskStatus.已完成; //增加人工处理标记 【EditBy shaocx,2022-08-23】 part_task.isPersonHandler = 1;//是否人工处理 part_task.finishTime = DateTime.Now; part_task.filereason = "人工强制点击[整个任务强制完成]"; part_task.updatetime = DateTime.Now; part_task.nexthandel = (int)ENextHandelTask.已全部完成; db.SaveChanges(); LogTextHelper.WriteLine(Resources.LogDir + @"/WCS/强制完成", "子任务号:{0},起始位置:{1},目标位置:{2}", part_task.id, part_task.sourceplace, part_task.toplace); MessageBox.Show("整个任务强制完成 成功!"); BindData(); } else { MessageBox.Show("未找到该任务!"); } } else { MessageBox.Show("请先选中要执行的行!"); } } } catch (Exception ex) { MessageBox.Show("出现异常:" + ex.Message); //LogTextHelper.WriteLine(Resources.LogDir + @"/WCS/强制完成", "出现异常:"+ex.Message+",子任务号:{0},", JsonConvert); BindData(); } } else//如果点击“取消”按钮 { } #endregion })); pc.Show(); } private void btnAllFinish2_Click(object sender, EventArgs e) { PassConfirm pc = new PassConfirm(new Action(delegate { #region 业务操作 MessageBoxButtons messButton = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show("确定要强制完成本次全部设备的任务吗?请先确认好现场是否满足强制完成条件,谨慎操作", "确认", messButton); if (dr == DialogResult.OK)//如果点击“确定”按钮 { try { using (DbModel db = new DbModel()) { var row = dgvMainTaskHistory.SelectedRows; if (row.Count > 0) { var cell = row[0].Cells; int id = int.Parse(cell[0].Value.ToString()); var maintask = db.MainTasks.OrderByDescending(x => x.id).FirstOrDefault(x => x.id == id); if (maintask != null) { maintask.status = (int)EMainTaskStatus.已分解; maintask.finishstatus = 1;//主任务全部完成 db.SaveChanges(); //LogTextHelper.WriteLine(Resources.LogDir + @"/WCS/强制完成", "子任务号:{0},起始位置:{1},目标位置:{2}", part_task.id, part_task.sourceplace, part_task.toplace); MessageBox.Show("整个任务强制完成 成功!"); BindData_dgvMainTaskHistory(); } else { MessageBox.Show("未找到该任务!"); } } else { MessageBox.Show("请先选中要执行的行!"); } } } catch (Exception) { BindData_dgvMainTaskHistory(); } } else//如果点击“取消”按钮 { } #endregion })); pc.Show(); } private void btnSrmTransPot6_Click(object sender, EventArgs e) { } private void label27_Click(object sender, EventArgs e) { } private void tb_ContinerNo2_TextChanged(object sender, EventArgs e) { } private void label28_Click(object sender, EventArgs e) { } } }