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)
{
}
}
}