using System;
|
using System.Threading;
|
using WIDESEA_Common;
|
using WIDESEA_Common.Tools;
|
using WIDESEA_Entity.DomainModels;
|
using WIDESEA_WCS.WCSClient;
|
|
namespace WIDESEA_WCS.JobsPart.AGV
|
{
|
public partial class AGVServer
|
{
|
/// <summary>
|
/// 取消agv任务
|
/// </summary>
|
public void CanselAgvTask(dt_agvtask task, PLCClient client)
|
{
|
Send(task, client);
|
//等待处理
|
Thread.Sleep(1000);
|
int taskSendRespone = Convert.ToInt32(client.ReadValue(TaskDBName.taskInteractiveR.ToString()));
|
if (taskSendRespone == 1)
|
{
|
//复位
|
client.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
|
freeDB.Add(new dt_agvtask_hty()
|
{
|
hty_pkid = Guid.NewGuid(),
|
agv_id = Guid.Empty,
|
agv_tasknum = task.agv_tasknum,
|
agv_materielid = task.agv_materielid,
|
agv_qty = task.agv_qty,
|
agv_createtime = task.agv_createtime,
|
agv_realesstime = task.agv_realesstime,
|
agv_executingBeginTime = task.agv_executingBeginTime,
|
agv_executingEndTime = task.agv_executingEndTime,
|
agv_completeBeginTime = task.agv_completeBeginTime,
|
agv_finishedtime = DateTime.Now,
|
agv_taskstate = AGVTaskStateEnum.Cancel.ToString(),
|
agv_tasktype = task.agv_tasktype,
|
agv_fromaddress = task.agv_fromaddress,
|
agv_toaddress = task.agv_toaddress,
|
agv_operatetype = string.Empty,
|
agv_compeletor = task.agv_userid,
|
agv_completedate = DateTime.Now,
|
agv_grade = task.agv_grade,
|
agv_userid = task.agv_userid,
|
agv_barcode = task.agv_barcode,
|
agv_code = task.agv_code,
|
agv_worktype = task.agv_worktype
|
});
|
//移入历史
|
freeDB.Remove(task);
|
}
|
else
|
{
|
//任务下发其它错误
|
WriteLog.GetLog().Write($"【异常】任务{task.agv_tasknum},下发取消后反馈异常,反馈值{taskSendRespone}。" + "\n", client.PLCName);
|
|
task.agv_taskstate = AGVTaskStateEnum.CancelAbnormal.ToString();
|
freeDB.Update(task).UpdateColumns(t => new { t.agv_taskstate }).ExecuteAffrows();
|
//复位
|
client.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
|
}
|
}
|
}
|
}
|