using Mapster; using MathNet.Numerics.Statistics; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using RestSharp; using WMS.BZModels; using WMS.BZModels.Dto.SX.SXQuestDB; using WMS.BZServices.SX.SXQuestDB; using WMS.Info; using WMS.Util; namespace WMS.BZWeb.Areas.SXManager.Controllers { [Area("SXManager")] public class DeviceEffectivesController : MvcControllerBase { private readonly SXDevRunInfoService _SXDevRunInfoService; private readonly Dictionary DeviceEffectiveUrls; private readonly IHttpClientFactory _httpClientFactory; private readonly string _WebUrl = "SXUrls"; public DeviceEffectivesController(SXDevRunInfoService SXDevRunInfoService, Dictionary deviceEffectiveUrls, IHttpClientFactory httpClientFactory) { _SXDevRunInfoService = SXDevRunInfoService; 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 SXDevRunInfoQueryDto(); 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 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 SXDevRunInfoQueryDto(); 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 SXDevRunInfoQueryDto(); 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 SXDevRunInfoQueryDto(); 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; } } #region //public class DeviceEffectivesController : MvcControllerBase //{ // private readonly SXDevAlarmInfoService _sxDevAlarmInfoService; // private readonly SXDevRunInfoService _sxDevRunInfoService; // public DeviceEffectivesController(SXDevAlarmInfoService sxDevAlarmInfoService, SXDevRunInfoService sxDevRunInfoService) // { // _sxDevAlarmInfoService = sxDevAlarmInfoService; // _sxDevRunInfoService = sxDevRunInfoService; // } // #region 视图功能 // public IActionResult Index() // { // return View(); // } // public IActionResult QIndex() // { // ViewBag.BeginTime = DateTime.Now.AddDays(-1).Date; // ViewBag.EndTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 23:59:59"; // return View(); // } // public IActionResult IndexList() // { // ViewBag.BeginTime = DateTime.Now.AddDays(-1).Date; // ViewBag.EndTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 23:59:59"; // return View(); // } // #endregion // public ActionResult GetSrmRateData(string queryJson) // { // var query = new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, Floor = "1", DevType = DevType.SRM }; // if (!string.IsNullOrEmpty(queryJson)) // { // query = JsonConvert.DeserializeObject(queryJson); // } // var list = _sxDevRunInfoService.GetSRMTimeRateList(query ?? new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.SRM }); // return Success(list); // } // public ActionResult GetRobotRateData(string queryJson) // { // var query = new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.Robot }; // if (!string.IsNullOrEmpty(queryJson)) // { // query = JsonConvert.DeserializeObject(queryJson); // } // var list = _sxDevRunInfoService.GetRobotTimeRateList(query ?? new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.Robot }); // return Success(list); // } // public ActionResult GetSRMPageList(string pagination, string queryJson) // { // Pagination paginationobj = InitPagination(pagination); // var query = new SXDevRunInfoQueryDto(); // if (!string.IsNullOrEmpty(queryJson)) // { // query = JsonConvert.DeserializeObject(queryJson); // } // var lists = _sxDevRunInfoService.GetSRMPageList(paginationobj, query ?? new SXDevRunInfoQueryDto() { 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.Result, // total = lists.TotalPage, // page = lists.PageIndex, // records = lists.TotalNum // }; // return Success(jsonData); // } // public ActionResult GetRobotPageList(string pagination, string queryJson) // { // Pagination paginationobj = InitPagination(pagination); // var query = new SXDevRunInfoQueryDto(); // if (!string.IsNullOrEmpty(queryJson)) // { // query = JsonConvert.DeserializeObject(queryJson); // } // var lists = _sxDevRunInfoService.GetRobotPageList(paginationobj, query ?? new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.Robot }); // 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.Result, // total = lists.TotalPage, // page = lists.PageIndex, // records = lists.TotalNum // }; // return Success(jsonData); // } //} #endregion }