using Microsoft.Extensions.Logging; using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading; using System.Threading.Tasks; using WIDESEA_DTO.Basic; using WIDESEA_IBasicService; namespace WIDESEA_BasicService { public class ESSApiService : IESSApiService { private readonly IHttpClientFactory _httpClientFactory; private readonly ILogger _logger; public ESSApiService(IHttpClientFactory httpClientFactory, ILogger logger) { _httpClientFactory = httpClientFactory; _logger = logger; } /// /// 容器流动通知 /// public async Task MoveContainerAsync(MoveContainerRequest request) { try { var url = "conveyor/moveContainer"; var result = await PostAsync>(url, request); if (result != null && result.Code == 0) { return true; } return false; } catch (Exception ex) { _logger.LogInformation("容器流动失败: " + ex.Message); return false; } } /// /// 创建任务 /// /// /// public async Task CreateTaskAsync(TaskModel request) { try { _logger.LogInformation("创建任务Request: " + JsonConvert.SerializeObject(request)); var url = "task/create"; var result = await PostAsync>(url, request); if (result != null && result.Code == 0) { return true; } return false; } catch (Exception ex) { _logger.LogInformation("创建任务失败: " + ex.Message); return false; } } private async Task PostAsync(string url, TRequest request) { string json = JsonConvert.SerializeObject(request, new JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() }); var content = new StringContent(json, Encoding.UTF8, "application/json"); var _client = _httpClientFactory.CreateClient("ESSUrl"); _client.DefaultRequestHeaders.Clear(); _client.DefaultRequestHeaders.Add("Accept", "application/json"); using var response = await _client.PostAsync(url, content); string body = await response.Content.ReadAsStringAsync(); _logger.LogInformation($"ESSAPI post : {_client.BaseAddress} {url} {body}"); if (!response.IsSuccessStatusCode) { throw new HttpRequestException(body); } return JsonConvert.DeserializeObject(body); } } }