DeviceEffectivesController.cs 10 KB

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