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 堆垛机相关
|
/// <summary>
|
/// 循环刷新1号堆垛机信息
|
/// </summary>
|
/// <param name="obj"></param>
|
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;
|
}
|
}
|
}
|
/// <summary>
|
/// 循环刷新2号堆垛机信息
|
/// </summary>
|
/// <param name="obj"></param>
|
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;
|
}
|
}
|
}
|
/// <summary>
|
/// 给前端UI中的SrmLable赋值
|
/// </summary>
|
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;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 设置Srm2的UI
|
/// </summary>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 堆垛机1发送任务
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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();
|
}
|
/// <summary>
|
/// 校验输入的库位ID是否符合格式
|
/// </summary>
|
/// <param name="str">库位号</param>
|
/// <returns></returns>
|
private bool IsNumeric(string str)
|
{
|
try
|
{
|
int place = int.Parse(str);
|
return true;
|
}
|
catch (Exception)
|
{
|
return false;
|
}
|
}
|
/// <summary>
|
/// 1号堆垛机删除任务
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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();
|
|
}
|
|
/// <summary>
|
/// 1 号堆垛机发送移动任务
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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();
|
}
|
/// <summary>
|
/// 1号堆垛机急停
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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();
|
}
|
/// <summary>
|
/// 撤销1号堆垛机报警
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnSrm1RlsAlert_Click(object sender, EventArgs e)
|
{
|
using (var opcClinet = new ControlCenterWcfServiceClient())
|
{
|
opcClinet.SendResolveSrmAlarm(EDevName.Srm1.ToString());
|
}
|
}
|
/// <summary>
|
/// 2号堆垛机发送任务
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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();
|
|
}
|
/// <summary>
|
/// 2号堆垛机发送移动任务
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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();
|
|
}
|
/// <summary>
|
/// 2号堆垛机急停
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnSrm2EStop_Click(object sender, EventArgs e)
|
{
|
using (var opcClinet = new ControlCenterWcfServiceClient())
|
{
|
opcClinet.SendStopSrm(EDevName.Srm2.ToString());
|
}
|
}
|
/// <summary>
|
/// 2号堆垛机解除报警
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnSrm2RlsAlert_Click(object sender, EventArgs e)
|
{
|
using (var opcClinet = new ControlCenterWcfServiceClient())
|
{
|
opcClinet.SendResolveSrmAlarm(EDevName.Srm2.ToString());
|
}
|
}
|
/// <summary>
|
/// 2号堆垛机删除任务
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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相关的
|
/// <summary>
|
/// 获取RGV2的信息
|
/// </summary>
|
/// <param name="obj"></param>
|
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;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 获取RGV1信息
|
/// </summary>
|
/// <param name="obj"></param>
|
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;
|
}
|
}
|
}
|
/// <summary>
|
/// 设置RGV显示线程
|
/// </summary>
|
/// <param name="obj"></param>
|
private void SetRgvLable(object obj)
|
{
|
while (true)
|
{
|
Thread.Sleep(cycleDelay);
|
try
|
{
|
SetRgv1UI();
|
|
SetRgv2UI();
|
}
|
catch (Exception)
|
{
|
continue;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 设置RGV1相关显示
|
/// </summary>
|
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;
|
}
|
}
|
/// <summary>
|
/// 设置RGV2相关显示
|
/// </summary>
|
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 输送线相关
|
/// <summary>
|
/// 获取立库输送机的任务完成情况
|
/// </summary>
|
private void GetSrmConveyorInfo()
|
{
|
while (true)
|
{
|
Thread.Sleep(cycleDelay);
|
try
|
{
|
using (var opcClient = new ControlCenterWcfServiceClient())
|
{
|
string msg = "";
|
srmConveyorInfo = opcClient.GetConveyorInfo("", out msg);
|
}
|
}
|
catch (Exception)
|
{
|
continue;
|
}
|
}
|
}
|
/// <summary>
|
/// 设置立库输送机的UI显示
|
/// </summary>
|
/// <param name="obj"></param>
|
private void SetSrmTransLable(object obj)
|
{
|
while (true)
|
{
|
Thread.Sleep(cycleDelay);
|
try
|
{
|
|
|
}
|
catch (Exception)
|
{
|
continue;
|
}
|
}
|
|
|
}
|
/// <summary>
|
/// 线体任务下发
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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();
|
|
}
|
|
/// <summary>
|
/// 线体下发确认
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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)
|
{
|
|
}
|
|
/// <summary>
|
/// 生成主任务
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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<TaskView> 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<MainTaskView> 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;
|
}
|
}
|
}
|
}
|
}
|
|
/// <summary>
|
/// 整个任务强制完成
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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)
|
{
|
|
}
|
}
|
}
|