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 { /// /// 取消agv任务 /// 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); } } } }