using Masuit.Tools;
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using WIDESEA_Comm;
using WIDESEA_Comm.WCSInterface.Requst;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_Core.Const;
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
using WIDESEA_Model.Models;
using WIDESEA_StorageTaskRepository;
namespace WIDESEA_StoragIntegrationServices
{
public partial class ToAGVService
{
///
/// 下发AGV任务 --待测试完善
///
///
///
public WebResponseContent genAgvSchedulingTask(RequestTaskDto input)
{
WebResponseContent content = new WebResponseContent();
try
{
if (input.RequestType == "999")
{
int CZInfotli = _task_CZInfoRepository.QueryData(x => x.CurrentStatue == "3").Count();
if (CZInfotli == 0)
{
return content.Error($"没有自动取轴任务,无自动任务");
}
}
if (string.IsNullOrEmpty(input.Position)) { return content.Error($"agv任务下发申请目标地址为空!!!请检查"); }
//查找当前在车轴线末端需要agv搬运的车轴
List CZInfotlist = _task_CZInfoRepository.QueryData(x => x.CurrentStatue == "3" /*|| x.CurrentStatue == "4" || x.CurrentStatue == "5"*/ || x.CurrentStatue == "13");
if (CZInfotlist.Count >= 2) { return content.Error($"已有agv任务正在进行中,下发失败!!!"); }
Dt_CZInfo_mes CZInfot = CZInfotlist.FirstOrDefault(x => x.CurrentStatue == "3" || x.CurrentStatue == "13");
if (CZInfot == null) { return content.Error($"未找到现有输送线完成的车轴信息"); }
CZInfot.CurrentStatue = "4";
//查找车轴对应的车轮信息
List tasks=_taskRepository.QueryData(x => x.task_CZInfo == CZInfot.CZH).ToList();
if (tasks.Count > 0)
{
foreach (var task in tasks)
{
task.Towhereabouts = input.Position;
}
}
string agvtarget = "F1";
if (input.Position == "2033")
{
agvtarget = "F2";
}
//agv参数调取
genAgvSchedulingTask schedulingTask = new genAgvSchedulingTask
{
reqCode = $"{DateTime.Now:yyyyMMddHHmmss}",
clientCode = "WMS",
taskTyp = "BY",
ctnrTyp = "1",
//data = taskinfo.task_barcode,
positionCodePath = new List
{
new position { positionCode = "Q", type = "00" },
new position { positionCode = agvtarget, type = "00" }, //地址待更改为 F1 左边 F2 右边
},
};
CZInfot.AGVaddres = input.Position;
//编写调取agv接口
string ipaddress = AGV_Interface;
var requestBindInfo = schedulingTask.ToDictionary();
var respon = HttpHelper.Post(ipaddress, JsonConvert.SerializeObject(schedulingTask));
var responBase = JsonConvert.DeserializeObject(respon);
if (responBase.code == "0")
{
_task_CZInfoRepository.UpdateData(CZInfot);
if (tasks.Count > 0)
{
_taskRepository.UpdateData(tasks);
}
LogFactory.GetLog("下发AGV任务").Info(true, $"调取agv任务成功,修改了车轴条码:{CZInfot.CZTM}的状态改至:{CZInfot.CurrentStatue}");
content.OK($"agv任务下发成功.");
return content;
}
else
{
LogFactory.GetLog("下发AGV任务").Error(true, $"调取agv任务失败,返回信息:{responBase.message}");
return content.Error($"请求异常:{responBase.message}");
}
}
catch (Exception ex)
{
LogFactory.GetLog("下发AGV任务").Error(true, ex.Message);
return content.Error($"下发任务接口异常:{ex.Message}");
}
}
}
}