using Mapster; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using RestSharp; using WMS.BZModels; using WMS.BZModels.Dto.CP.CPQuestDB; using WMS.Info; namespace WMS.BZWeb.Areas.CPManager.Controllers { [Area("CPManager")] public class DeviceEffectivesController : MvcControllerBase { private readonly Dictionary DeviceEffectiveUrls; private readonly IHttpClientFactory _httpClientFactory; private readonly string _WebUrl = "CPUrls"; public DeviceEffectivesController(Dictionary deviceEffectiveUrls, IHttpClientFactory httpClientFactory) { DeviceEffectiveUrls = deviceEffectiveUrls; _httpClientFactory = httpClientFactory; } #region 视图功能 public IActionResult Index() { return View(); } public async Task IndexList() { DeviceEffectiveUrls.TryGetValue(_WebUrl, out var url); ViewBag.BeginTime = DateTime.Now.AddDays(-1).Date; ViewBag.EndTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 23:59:59"; ViewBag.WebApiUrl = url; return View(); } #endregion public async Task GetSRMPageList(string pagination, string queryJson) { Pagination paginationobj = InitPagination(pagination); var query = new CPDevRunInfoQueryDto(); if (!string.IsNullOrEmpty(queryJson)) { query = JsonConvert.DeserializeObject(queryJson); } var dto = paginationobj.Adapt(); dto.type = (int)DevType.SRM; dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1)); dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now); var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo"); var lists = ret != null ? JsonConvert.DeserializeObject>(ret) : null; var jsonData = new { rows = lists != null && lists.Result.Any() ? lists.Result : new List(), total = lists != null && lists.Result.Any() ? lists.TotalPage : 0, page = lists != null && lists.Result.Any() ? lists.PageIndex : 1, records = lists != null && lists.Result.Any() ? lists.TotalNum : 0 }; return Success(jsonData); } public async Task GetRobotPageList(string pagination, string queryJson) { Pagination paginationobj = InitPagination(pagination); var query = new CPDevRunInfoQueryDto(); if (!string.IsNullOrEmpty(queryJson)) { query = JsonConvert.DeserializeObject(queryJson); } var dto = paginationobj.Adapt(); dto.type = (int)DevType.Robot; dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1)); dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now); //var ret = Task.Run(async () => //{ // return await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo"); //}).ConfigureAwait(false).GetAwaiter().GetResult(); var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo"); var lists = ret != null ? JsonConvert.DeserializeObject>(ret) : null; var jsonData = new { rows = lists != null && lists.Result.Any() ? lists.Result : new List(), total = lists != null && lists.Result.Any() ? lists.TotalPage : 0, page = lists != null && lists.Result.Any() ? lists.PageIndex : 1, records = lists != null && lists.Result.Any() ? lists.TotalNum : 0 }; return Success(jsonData); } public async Task GetRgvPageList(string pagination, string queryJson) { Pagination paginationobj = InitPagination(pagination); var query = new CPDevRunInfoQueryDto(); if (!string.IsNullOrEmpty(queryJson)) { query = JsonConvert.DeserializeObject(queryJson); } var dto = paginationobj.Adapt(); dto.type = (int)DevType.RGV; dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1)); dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now); //var ret = Task.Run(async () => //{ // return await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo"); //}).ConfigureAwait(false).GetAwaiter().GetResult(); var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo"); var lists = ret != null ? JsonConvert.DeserializeObject>(ret) : null; var jsonData = new { rows = lists != null && lists.Result.Any() ? lists.Result : new List(), total = lists != null && lists.Result.Any() ? lists.TotalPage : 0, page = lists != null && lists.Result.Any() ? lists.PageIndex : 1, records = lists != null && lists.Result.Any() ? lists.TotalNum : 0 }; return Success(jsonData); } public async Task GetHJPageList(string pagination, string queryJson) { Pagination paginationobj = InitPagination(pagination); var query = new CPDevRunInfoQueryDto(); if (!string.IsNullOrEmpty(queryJson)) { query = JsonConvert.DeserializeObject(queryJson); } var dto = paginationobj.Adapt(); dto.type = (int)DevType.Truss; dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1)); dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now); //var ret = Task.Run(async () => //{ // return await GetDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo"); //}).ConfigureAwait(false).GetAwaiter().GetResult(); var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo"); var lists = ret != null ? JsonConvert.DeserializeObject>(ret) : null; var jsonData = new { rows = lists != null && lists.Result.Any() ? lists.Result : new List(), total = lists != null && lists.Result.Any() ? lists.TotalPage : 0, page = lists != null && lists.Result.Any() ? lists.PageIndex : 1, records = lists != null && lists.Result.Any() ? lists.TotalNum : 0 }; return Success(jsonData); } public async Task GetDevRunInfoDataAsync(string query, string uri) { DeviceEffectiveUrls.TryGetValue(_WebUrl, out var url); //string uri = url + "/api/Wcs/GetDevRunInfo"; var httpClient = _httpClientFactory.CreateClient(_WebUrl); var request = new HttpRequestMessage(HttpMethod.Get, url + uri); var content = new StringContent(query, null, "application/json"); request.Content = content; var response = await httpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var result = await response.Content.ReadAsStringAsync(); return result; } public async Task GetRestSharpDevRunInfoDataAsync(string query, string uri) { DeviceEffectiveUrls.TryGetValue(_WebUrl, out var url); var options = new RestClientOptions(url) { MaxTimeout = -1, }; var client = new RestClient(options); var request = new RestRequest(uri, Method.Get); request.AddHeader("Content-Type", "application/json"); var body = query; request.AddStringBody(body, DataFormat.Json); RestResponse response = await client.ExecuteAsync(request); return response.Content; } } }