| | |
| | | using MapsterMapper; |
| | | using Microsoft.Extensions.Configuration; |
| | | using Newtonsoft.Json; |
| | | using Serilog; |
| | | using SqlSugar; |
| | | using System.Diagnostics; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using WIDESEA_Core; |
| | | using WIDESEAWCS_Common.HttpEnum; |
| | |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_Tasks; |
| | | |
| | | namespace WIDESEAWCS_TaskInfoService |
| | | { |
| | |
| | | private readonly IMapper _mapper; |
| | | private readonly HttpClientHelper _httpClientHelper; |
| | | private readonly ITaskExecuteDetailService _taskExecuteDetailService; |
| | | private readonly ILogger _logger; |
| | | |
| | | private Dictionary<string, OrderByType> _taskOrderBy = new() |
| | | { |
| | |
| | | |
| | | public List<int> TaskRobotTypes => typeof(TaskOtherTypeEnum).GetEnumIndexList(); |
| | | |
| | | public RobotTaskService(IRobotTaskRepository BaseDal, IMapper mapper, HttpClientHelper httpClientHelper, ITaskExecuteDetailService taskExecuteDetailService) : base(BaseDal) |
| | | public RobotTaskService(IRobotTaskRepository BaseDal, IMapper mapper, HttpClientHelper httpClientHelper, ITaskExecuteDetailService taskExecuteDetailService, ILogger logger) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | _httpClientHelper = httpClientHelper; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | | _logger = logger; |
| | | } |
| | | |
| | | public WebResponseContent ReceiveWMSTask([NotNull] WMSTaskDTO taskDTO, StockDTO stockDTO) |
| | |
| | | Dt_RobotTask task = new Dt_RobotTask |
| | | { |
| | | RobotTaskNum = taskDTO.TaskNum, |
| | | RobotSourceAddressLineCode = stockDTO.SourceLineNo, |
| | | RobotTargetAddressLineCode = stockDTO.TargetLineNo, |
| | | RobotRoadway = stockDTO.Roadway, |
| | | RobotSourceAddressLineCode = stockDTO?.SourceLineNo ?? string.Empty, |
| | | RobotTargetAddressLineCode = stockDTO?.TargetLineNo ?? string.Empty, |
| | | RobotRoadway = stockDTO?.Roadway ?? string.Empty, |
| | | RobotSourceAddress = taskDTO.SourceAddress, |
| | | RobotTargetAddress = taskDTO.TargetAddress, |
| | | RobotSourceAddressPalletCode = stockDTO.SourcePalletNo, |
| | | RobotTargetAddressPalletCode = stockDTO.TargetPalletNo, |
| | | RobotSourceAddressPalletCode = stockDTO?.SourcePalletNo ?? string.Empty, |
| | | RobotTargetAddressPalletCode = stockDTO?.TargetPalletNo ?? string.Empty, |
| | | RobotTaskType = taskDTO.TaskType, |
| | | RobotTaskState = taskDTO.TaskStatus, |
| | | RobotGrade = taskDTO.Grade, |
| | |
| | | { |
| | | string configKey = ResolveRobotTaskConfigKey(task.TargetAddress); |
| | | StockDTO stock = BuildRobotTaskStock(task, configKey); |
| | | string requestParam = stock.ToJson(); |
| | | var stopwatch = Stopwatch.StartNew(); |
| | | |
| | | var result = _httpClientHelper.Post<WebResponseContent>(configKey, stock.ToJson()); |
| | | |
| | | var result = _httpClientHelper.Post<WebResponseContent>(configKey, requestParam); |
| | | stopwatch.Stop(); |
| | | if (!result.IsSuccess || !result.Data.Status) |
| | | { |
| | | QuartzLogHelper.LogError(_logger, $"调用WMS接口失败,接口:【{configKey}】,请求参数:【{requestParam}】,错误信息:【{result.Data?.Message}】", "RobotTaskService"); |
| | | return WebResponseContent.Instance.Error($"获取WMS系统机械手任务失败,任务号:【{task.TaskNum}】,托盘号:【{task.PalletCode}】,目标地址:【{task.TargetAddress}】,接口:【{configKey}】,错误信息:【{result.Data?.Message}】"); |
| | | } |
| | | |
| | | var wMSTask = JsonConvert.DeserializeObject<WMSTaskDTO>(result.Data.Data?.ToString() ?? string.Empty); |
| | | QuartzLogHelper.LogInfo(_logger, $"调用WMS接口成功,接口:【{configKey}】,响应数据:【{result.Data?.Data}】,耗时:{stopwatch.ElapsedMilliseconds}ms", "RobotTaskService"); |
| | | |
| | | var wMSTask = JsonConvert.DeserializeObject<WMSTaskDTO>(result?.Data?.Data?.ToString() ?? string.Empty); |
| | | if (wMSTask == null) |
| | | return WebResponseContent.Instance.Error($"获取WMS系统机械手任务失败,任务号:【{task.TaskNum}】,托盘号:【{task.PalletCode}】,错误信息:【WMS未返回有效任务数据】"); |
| | | |