using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using System; using System.Collections.Generic; using System.Linq; using System.Security.Policy; using System.Text; using System.Threading.Tasks; using WIDESEA_Comm.LogInfo; using WIDESEA_Common; using WIDESEA_Core.EFDbContext; using WIDESEA_Core.FreeDB; using WIDESEA_Entity.DomainModels; using WIDESEA_Entity.ToAGV; using WIDESEA_WMS.IRepositories; using WIDESEA_WMS.Repositories; namespace WIDESEA_WMS.Common { public partial class AGVServer { static FreeDB freeDB = new FreeDB(); static Respone respone = new Respone(); static RequestTask requestTask = new RequestTask(); static string postJson = string.Empty; static string report = string.Empty; /// /// 任务下发 /// public static void SendAgvTask() { try { var agv_task = freeDB.Select() .Where(t => t.agv_taskstate == AGVTaskStateEnum.Create.ToString() && (t.agv_tasktype == "TaskType_Outbound" || t.agv_tasktype == "TaskType_Inbound" || t.agv_tasktype == "TaskType_AOutbound") && string.IsNullOrEmpty(t.agv_remark)) .OrderByDescending(t => t.agv_grade) .OrderBy(t => t.agv_createtime) .First(); if (agv_task == null) agv_task = freeDB.Select() .Where(t => t.agv_taskstate == AGVTaskStateEnum.Create.ToString() && (t.agv_tasktype == "TaskType_Outbound" || t.agv_tasktype == "TaskType_Inbound" || t.agv_tasktype == "TaskType_AOutbound") && !string.IsNullOrEmpty(t.agv_remark)) .OrderByDescending(t => t.agv_grade) .OrderBy(t => t.agv_createtime) .First(); if (agv_task != null) { var Materiel = QueryData.QueryMateriel(agv_task.agv_materielid);//查找车轮数据 if (Materiel == null) { agv_task.agv_remark = "未获取到当前任务的车轮数据"; freeDB.Update(agv_task).UpdateColumns(t => new { t.agv_remark }).ExecuteAffrows(); throw new Exception("未查询到当前任务的车轮类型数据,任务ID:" + agv_task.agv_tasknum); } requestTask.TASK_NO = agv_task.agv_tasknum; requestTask.FROM_POSITION = agv_task.agv_fromaddress; requestTask.TO_POSITION = agv_task.agv_toaddress; requestTask.Material = agv_task.agv_materielid; requestTask.Grade = agv_task.agv_grade; requestTask.Quantity = agv_task.agv_qty; requestTask.A = Materiel.a; requestTask.B = Materiel.b; requestTask.C = Materiel.c; requestTask.D = Materiel.d; requestTask.E = Materiel.e; requestTask.F = Materiel.f; requestTask.G = Materiel.g; requestTask.H = Materiel.h; postJson = JsonConvert.SerializeObject(requestTask); report = Request.RequestData(postJson, "http://192.168.12.250:5566/api/TaskCreat/CreatTask"); respone = JsonConvert.DeserializeObject(report); if (respone.Success) { agv_task.agv_taskstate = AGVTaskStateEnum.SendOut.ToString(); agv_task.agv_realesstime = DateTime.Now; freeDB.Update(agv_task).UpdateColumns(t => new { t.agv_realesstime, t.agv_taskstate }).ExecuteAffrows(); } } } catch (Exception ex) { respone.Success = false; respone.Msg = ex.Message; } WriteWMSLog.LogAdd(requestTask.TASK_NO, respone.Success ? "成功 " : "失败", "AGV", "WMS", postJson, report, "下发AGV任务", "SendAGVTask", respone.Msg); } } }