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