using Mapster; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using RestSharp; using System.Net.Http; using WMS.BZModels; using WMS.BZModels.Dto.FJ.FJQuestDB; using WMS.BZServices.FJ.FJQuestDB; using WMS.Info; namespace WMS.BZWeb.Areas.FJManager.Controllers { [Area("FJManager")] public class DeviceEffectivesController : MvcControllerBase { private readonly FJDevRunInfoService _fjDevRunInfoService; private readonly Dictionary DeviceEffectiveUrls; private readonly IHttpClientFactory _httpClientFactory; private readonly string _WebUrl = "FJUrls"; public DeviceEffectivesController(FJDevRunInfoService fjDevRunInfoService, Dictionary deviceEffectiveUrls, IHttpClientFactory httpClientFactory) { _fjDevRunInfoService = fjDevRunInfoService; DeviceEffectiveUrls = deviceEffectiveUrls; _httpClientFactory = httpClientFactory; } #region 视图功能 public IActionResult Index() { return View(); } public async Task< IActionResult> 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 FJDevRunInfoQueryDto(); 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 = 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 lists = _fjDevRunInfoService.GetSRMPageList(paginationobj, query ?? new FJDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.SRM }); //lists.Extra.TryGetValue("total", out var total); //var dectotal = Convert.ToDecimal(total); //var totalmodel = new RunListModel() //{ // Code = "合计:", // OutDepot = lists.Result.Sum(s => s.OutDepot), // EnterDepot = lists.Result.Sum(s => s.EnterDepot), // TransferDepot = lists.Result.Sum(s => s.TransferDepot), // Free = lists.Result.Sum(s => s.Free), // Manual = lists.Result.Sum(s => s.Manual), // Automatic = lists.Result.Sum(s => s.Automatic), // Alarm = lists.Result.Sum(s => s.Alarm), // Working = lists.Result.Sum(s => s.Working), //}; //totalmodel.State[0] = dectotal > 0 ? Math.Round((decimal)totalmodel.Free / dectotal * 100, 2) : 0; //totalmodel.State[1] = dectotal > 0 ? Math.Round((decimal)totalmodel.Manual / dectotal * 100, 2) : 0; //totalmodel.State[2] = dectotal > 0 ? Math.Round((decimal)totalmodel.Automatic / dectotal * 100, 2) : 0; //totalmodel.State[3] = dectotal > 0 ? Math.Round((decimal)totalmodel.Alarm / dectotal * 100, 2) : 0; //totalmodel.State[4] = dectotal > 0 ? Math.Round((decimal)totalmodel.Working / dectotal * 100, 2) : 0; //lists.Result.Add(totalmodel); 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 FJDevRunInfoQueryDto(); 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 FJDevRunInfoQueryDto(); 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 FJDevRunInfoQueryDto(); 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 ; } } }