using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.APIEnum;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.LocationEnum;
using WIDESEA_Common.OtherEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
using WIDESEA_Core;
using WIDESEA_Core.Helper;
using WIDESEA_DTO.Task;
using WIDESEA_Model.Models;
namespace WIDESEA_TaskInfoService
{
public partial class TaskService
{
///
/// 任务信息推送至WCS
///
///
public WebResponseContent PushTasksToWCSSingle(int taskNum, string agvDescription = "")
{
try
{
Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
if (task == null)
{
return WebResponseContent.Instance.Error($"错误,未找到该任务信息");
}
List taskDTOs = new List { _mapper.Map(task) };
taskDTOs.ForEach(x =>
{
x.AGVArea = agvDescription;
});
string url = AppSettings.Get("WCS");
if (string.IsNullOrEmpty(url))
{
throw new Exception($"未找到WCSAApi地址,请检查配置文件");
}
string response = HttpHelper.Post($"{url}/api/Task/ReceiveTask", taskDTOs.Serialize());
return JsonConvert.DeserializeObject(response) ?? WebResponseContent.Instance.Error("返回错误");
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error(ex.Message);
}
}
///
/// 修改任务状态
///
///
///
public WebResponseContent UpdateTaskInfo(WCSTaskDTO task)
{
try
{
Dt_Task wmsTask = BaseDal.QueryFirst(x=>x.TaskNum == task.TaskNum);
if (wmsTask != null)
{
wmsTask.ContainerNo= task.PalletCode;
wmsTask.RoadwayNo = task.Roadway;
wmsTask.TaskStatus = task.TaskState;
wmsTask.CurrentAddress = task.CurrentAddress;
wmsTask.NextAddress = task.NextAddress;
wmsTask.Dispatchertime = task.Dispatchertime;
wmsTask.TaskType = task.TaskType;
wmsTask.TargetAddress = task.TargetAddress;
BaseDal.UpdateData(wmsTask);
}
return WebResponseContent.Instance.OK();
}
catch(Exception ex)
{
return WebResponseContent.Instance.Error(ex.Message);
}
}
///
/// 回调wcs手动完成任务
///
///
///
public WebResponseContent FeedBackWCSTaskCompleted(int taskNum)
{
try
{
Dt_ApiInfo? url = _basicRepository.ApiInfoRepository.QueryData(x => x.ApiCode == APIEnum.FeedBackWCSTaskCompleted.ToString()).First();
string? apiAddress = url.ApiAddress;
if (string.IsNullOrEmpty(apiAddress))
{
return WebResponseContent.Instance.Error($"{taskNum},未找到WCS任务完成接口,请检查接口配置");
}
string responseStr = HttpHelper.Get(apiAddress + "?taskNum=" + taskNum);
WebResponseContent content = JsonConvert.DeserializeObject(responseStr) ?? WebResponseContent.Instance.Error("未找到任务完成返回值");
return content;
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error(ex.Message);
}
}
}
}