DeviceEffectivesController.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. using Mapster;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Newtonsoft.Json;
  4. using RestSharp;
  5. using System.Net.Http;
  6. using WMS.BZModels;
  7. using WMS.BZModels.Dto.FJ.FJQuestDB;
  8. using WMS.BZServices.FJ.FJQuestDB;
  9. using WMS.Info;
  10. namespace WMS.BZWeb.Areas.FJManager.Controllers
  11. {
  12. [Area("FJManager")]
  13. public class DeviceEffectivesController : MvcControllerBase
  14. {
  15. private readonly FJDevRunInfoService _fjDevRunInfoService;
  16. private readonly Dictionary<string, string> DeviceEffectiveUrls;
  17. private readonly IHttpClientFactory _httpClientFactory;
  18. private readonly string _WebUrl = "FJUrls";
  19. public DeviceEffectivesController(FJDevRunInfoService fjDevRunInfoService, Dictionary<string, string> deviceEffectiveUrls, IHttpClientFactory httpClientFactory)
  20. {
  21. _fjDevRunInfoService = fjDevRunInfoService;
  22. DeviceEffectiveUrls = deviceEffectiveUrls;
  23. _httpClientFactory = httpClientFactory;
  24. }
  25. #region 视图功能
  26. public IActionResult Index()
  27. {
  28. return View();
  29. }
  30. public async Task< IActionResult> IndexList()
  31. {
  32. DeviceEffectiveUrls.TryGetValue(_WebUrl, out var url);
  33. ViewBag.BeginTime = DateTime.Now.AddDays(-1).Date;
  34. ViewBag.EndTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 23:59:59";
  35. ViewBag.WebApiUrl = url;
  36. return View();
  37. }
  38. #endregion
  39. public async Task<ActionResult> GetSRMPageList(string pagination, string queryJson)
  40. {
  41. Pagination paginationobj = InitPagination(pagination);
  42. var query = new FJDevRunInfoQueryDto();
  43. if (!string.IsNullOrEmpty(queryJson))
  44. {
  45. query = JsonConvert.DeserializeObject<FJDevRunInfoQueryDto>(queryJson);
  46. }
  47. var dto = paginationobj.Adapt<DeviceEffectiveQueryDto>();
  48. dto.type = (int)DevType.SRM;
  49. dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1));
  50. dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now);
  51. //var ret = Task.Run(async () =>
  52. //{
  53. // return await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto) , "/api/Wcs/GetDevRunInfo");
  54. //}).ConfigureAwait(false).GetAwaiter().GetResult();
  55. var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  56. var lists = ret != null ? JsonConvert.DeserializeObject<PagedInfo<RunInfo>>(ret) : null;
  57. //var lists = _fjDevRunInfoService.GetSRMPageList(paginationobj, query ?? new FJDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.SRM });
  58. //lists.Extra.TryGetValue("total", out var total);
  59. //var dectotal = Convert.ToDecimal(total);
  60. //var totalmodel = new RunListModel()
  61. //{
  62. // Code = "合计:",
  63. // OutDepot = lists.Result.Sum(s => s.OutDepot),
  64. // EnterDepot = lists.Result.Sum(s => s.EnterDepot),
  65. // TransferDepot = lists.Result.Sum(s => s.TransferDepot),
  66. // Free = lists.Result.Sum(s => s.Free),
  67. // Manual = lists.Result.Sum(s => s.Manual),
  68. // Automatic = lists.Result.Sum(s => s.Automatic),
  69. // Alarm = lists.Result.Sum(s => s.Alarm),
  70. // Working = lists.Result.Sum(s => s.Working),
  71. //};
  72. //totalmodel.State[0] = dectotal > 0 ? Math.Round((decimal)totalmodel.Free / dectotal * 100, 2) : 0;
  73. //totalmodel.State[1] = dectotal > 0 ? Math.Round((decimal)totalmodel.Manual / dectotal * 100, 2) : 0;
  74. //totalmodel.State[2] = dectotal > 0 ? Math.Round((decimal)totalmodel.Automatic / dectotal * 100, 2) : 0;
  75. //totalmodel.State[3] = dectotal > 0 ? Math.Round((decimal)totalmodel.Alarm / dectotal * 100, 2) : 0;
  76. //totalmodel.State[4] = dectotal > 0 ? Math.Round((decimal)totalmodel.Working / dectotal * 100, 2) : 0;
  77. //lists.Result.Add(totalmodel);
  78. var jsonData = new
  79. {
  80. rows = lists != null && lists.Result.Any() ? lists.Result : new List<RunInfo>(),
  81. total = lists != null && lists.Result.Any() ? lists.TotalPage : 0,
  82. page = lists != null && lists.Result.Any() ? lists.PageIndex : 1,
  83. records = lists != null && lists.Result.Any() ? lists.TotalNum : 0
  84. };
  85. return Success(jsonData);
  86. }
  87. public async Task<ActionResult> GetRobotPageList(string pagination, string queryJson)
  88. {
  89. Pagination paginationobj = InitPagination(pagination);
  90. var query = new FJDevRunInfoQueryDto();
  91. if (!string.IsNullOrEmpty(queryJson))
  92. {
  93. query = JsonConvert.DeserializeObject<FJDevRunInfoQueryDto>(queryJson);
  94. }
  95. var dto = paginationobj.Adapt<DeviceEffectiveQueryDto>();
  96. dto.type = (int)DevType.Robot;
  97. dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1));
  98. dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now);
  99. //var ret = Task.Run(async () =>
  100. //{
  101. // return await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  102. //}).ConfigureAwait(false).GetAwaiter().GetResult();
  103. var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  104. var lists = ret != null ? JsonConvert.DeserializeObject<PagedInfo<RunInfo>>(ret) : null;
  105. var jsonData = new
  106. {
  107. rows = lists != null && lists.Result.Any() ? lists.Result : new List<RunInfo>(),
  108. total = lists != null && lists.Result.Any() ? lists.TotalPage : 0,
  109. page = lists != null && lists.Result.Any() ? lists.PageIndex : 1,
  110. records = lists != null && lists.Result.Any() ? lists.TotalNum : 0
  111. };
  112. return Success(jsonData);
  113. }
  114. public async Task<ActionResult> GetRgvPageList(string pagination, string queryJson)
  115. {
  116. Pagination paginationobj = InitPagination(pagination);
  117. var query = new FJDevRunInfoQueryDto();
  118. if (!string.IsNullOrEmpty(queryJson))
  119. {
  120. query = JsonConvert.DeserializeObject<FJDevRunInfoQueryDto>(queryJson);
  121. }
  122. var dto = paginationobj.Adapt<DeviceEffectiveQueryDto>();
  123. dto.type = (int)DevType.RGV;
  124. dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1));
  125. dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now);
  126. //var ret = Task.Run(async () =>
  127. //{
  128. // return await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  129. //}).ConfigureAwait(false).GetAwaiter().GetResult();
  130. var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  131. var lists = ret != null ? JsonConvert.DeserializeObject<PagedInfo<RunInfo>>(ret) : null;
  132. var jsonData = new
  133. {
  134. rows = lists != null && lists.Result.Any() ? lists.Result : new List<RunInfo>(),
  135. total = lists != null && lists.Result.Any() ? lists.TotalPage : 0,
  136. page = lists != null && lists.Result.Any() ? lists.PageIndex : 1,
  137. records = lists != null && lists.Result.Any() ? lists.TotalNum : 0
  138. };
  139. return Success(jsonData);
  140. }
  141. public async Task<ActionResult> GetHJPageList(string pagination, string queryJson)
  142. {
  143. Pagination paginationobj = InitPagination(pagination);
  144. var query = new FJDevRunInfoQueryDto();
  145. if (!string.IsNullOrEmpty(queryJson))
  146. {
  147. query = JsonConvert.DeserializeObject<FJDevRunInfoQueryDto>(queryJson);
  148. }
  149. var dto = paginationobj.Adapt<DeviceEffectiveQueryDto>();
  150. dto.type = (int)DevType.Truss;
  151. dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1));
  152. dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now);
  153. //var ret = Task.Run(async () =>
  154. //{
  155. // return await GetDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  156. //}).ConfigureAwait(false).GetAwaiter().GetResult();
  157. var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  158. var lists = ret != null ? JsonConvert.DeserializeObject<PagedInfo<RunInfo>>(ret) : null;
  159. var jsonData = new
  160. {
  161. rows = lists != null && lists.Result.Any() ? lists.Result : new List<RunInfo>(),
  162. total = lists != null && lists.Result.Any() ? lists.TotalPage : 0,
  163. page = lists != null && lists.Result.Any() ? lists.PageIndex : 1,
  164. records = lists != null && lists.Result.Any() ? lists.TotalNum : 0
  165. };
  166. return Success(jsonData);
  167. }
  168. public async Task<string> GetDevRunInfoDataAsync(string query, string uri)
  169. {
  170. DeviceEffectiveUrls.TryGetValue(_WebUrl, out var url);
  171. //string uri = url + "/api/Wcs/GetDevRunInfo";
  172. var httpClient = _httpClientFactory.CreateClient(_WebUrl);
  173. var request = new HttpRequestMessage(HttpMethod.Get, url + uri);
  174. var content = new StringContent(query, null, "application/json");
  175. request.Content = content;
  176. var response = await httpClient.SendAsync(request);
  177. response.EnsureSuccessStatusCode();
  178. var result = await response.Content.ReadAsStringAsync();
  179. return result;
  180. }
  181. public async Task<string> GetRestSharpDevRunInfoDataAsync(string query, string uri)
  182. {
  183. DeviceEffectiveUrls.TryGetValue(_WebUrl, out var url);
  184. var options = new RestClientOptions(url)
  185. {
  186. MaxTimeout = -1,
  187. };
  188. var client = new RestClient(options);
  189. var request = new RestRequest(uri, Method.Get);
  190. request.AddHeader("Content-Type", "application/json");
  191. var body = query;
  192. request.AddStringBody(body, DataFormat.Json);
  193. RestResponse response = await client.ExecuteAsync(request);
  194. return response.Content ;
  195. }
  196. }
  197. }