using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Security.Policy; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; using WIDESEA_Comm.LogInfo; using WIDESEA_Common; using WIDESEA_Core.EFDbContext; using WIDESEA_Entity.DomainModels; using WIDESEA_Entity.ToAGV; using WIDESEA_WMS.IRepositories; using WIDESEA_WMS.Repositories; namespace WIDESEA_WMS { public partial class ToAGVServer { /// /// 修改任务状态 /// /// /// public static AGVRespone UpdateTaskState(string json) { VOLContext context = new VOLContext(); Idt_agvtaskRepository repository = new dt_agvtaskRepository(context); AGVRespone respone = new AGVRespone(); UpdateTasteInfo tasteInfo = new(); try { if (string.IsNullOrEmpty(json) || json == "null") throw new Exception("未获取到请求参数数据"); tasteInfo = JsonConvert.DeserializeObject(json); if (string.IsNullOrEmpty(tasteInfo.TASK_NO)) throw new Exception("未获取到任务号!"); var task = repository.FindFirst(x => x.agv_tasknum == tasteInfo.TASK_NO); if (task == null) throw new Exception("未找到任务,任务ID:" + tasteInfo.TASK_NO); if (tasteInfo.TASK_State < 1 || tasteInfo.TASK_State > 4) throw new Exception("未定义的任务状态:" + tasteInfo.TASK_State); var StateName = Enum.GetName(typeof(AGVTaskStateEnum), tasteInfo.TASK_State); if (task.agv_taskstate == StateName) { respone.success = 2; throw new Exception(tasteInfo.TASK_NO + ":重复调用,任务状态为:" + tasteInfo.TASK_State); } if (tasteInfo.TASK_State == (int)AGVTaskStateEnum.Executing) task.agv_executingBeginTime = DateTime.Now; else if (tasteInfo.TASK_State == (int)AGVTaskStateEnum.Complete) task.agv_executingEndTime = DateTime.Now; else if (tasteInfo.TASK_State == (int)AGVTaskStateEnum.Executing1) task.agv_completeBeginTime = DateTime.Now; task.agv_taskstate = StateName; var count = repository.Update(task, true); if (count < 1) throw new Exception("任务状态更新失败!任务ID:" + tasteInfo.TASK_NO + ";任务状态:" + tasteInfo.TASK_State); if (tasteInfo.TASK_State == (int)AGVTaskStateEnum.Complete1) { Task.AddHtyTask(task); Task.Updateinventory(task); Task.AutoUpdateHCJState(task); } } catch (Exception ex) { respone.success = 3; respone.Message = ex.Message; } finally { WriteWMSLog.LogAdd(tasteInfo.TASK_NO, respone.success == 1 ? "成功 " : "失败", "WMS", "AGV", json, JsonConvert.SerializeObject(respone), "AGV反馈任务状态", "UpdateTaskState", respone.Message); } return respone; } /// /// 下发AGV任务 /// /// public static void SendAGVTask(dt_agvtask agvtask) { if (agvtask == null) return; VOLContext context = new VOLContext(); Idt_agvtaskRepository repository = new dt_agvtaskRepository(context); AGVRespone respone = new AGVRespone(); RequestTask requestTask = new RequestTask(); string postJson = string.Empty; string report = string.Empty; string url = "http://127.0.0.1/api/TaskCreat/CreatTask"; try { requestTask.TASK_NO = agvtask.agv_tasknum; requestTask.FROM_POSITION = agvtask.agv_fromaddress; requestTask.TO_POSITION = agvtask.agv_toaddress; requestTask.Material = agvtask.agv_materielid; requestTask.Priority = agvtask.agv_grade; requestTask.agv_qty = agvtask.agv_qty; postJson = JsonConvert.SerializeObject(requestTask); report = Request.RequestData(postJson, url); respone = JsonConvert.DeserializeObject(report); if (respone.success != 1) throw new Exception(respone.Message); agvtask.agv_taskstate = AGVTaskStateEnum.SendOut.ToString(); agvtask.agv_realesstime = DateTime.Now; repository.Update(agvtask, true); } catch (Exception ex) { respone.Message = ex.Message; } WriteWMSLog.LogAdd(requestTask.TASK_NO, respone.success == 1 ? "成功 " : "失败", "AGV", "WMS", postJson, report, "下发AGV任务", "SendAGVTask", respone.Message); } } }