DeviceEffectivesController.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. using Mapster;
  2. using MathNet.Numerics.Statistics;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Newtonsoft.Json;
  5. using RestSharp;
  6. using WMS.BZModels;
  7. using WMS.BZModels.Dto.SX.SXQuestDB;
  8. using WMS.BZServices.SX.SXQuestDB;
  9. using WMS.Info;
  10. using WMS.Util;
  11. namespace WMS.BZWeb.Areas.SXManager.Controllers
  12. {
  13. [Area("SXManager")]
  14. public class DeviceEffectivesController : MvcControllerBase
  15. {
  16. private readonly SXDevRunInfoService _SXDevRunInfoService;
  17. private readonly Dictionary<string, string> DeviceEffectiveUrls;
  18. private readonly IHttpClientFactory _httpClientFactory;
  19. private readonly string _WebUrl = "SXUrls";
  20. public DeviceEffectivesController(SXDevRunInfoService SXDevRunInfoService, Dictionary<string, string> deviceEffectiveUrls, IHttpClientFactory httpClientFactory)
  21. {
  22. _SXDevRunInfoService = SXDevRunInfoService;
  23. DeviceEffectiveUrls = deviceEffectiveUrls;
  24. _httpClientFactory = httpClientFactory;
  25. }
  26. #region 视图功能
  27. public IActionResult Index()
  28. {
  29. return View();
  30. }
  31. public async Task<IActionResult> IndexList()
  32. {
  33. DeviceEffectiveUrls.TryGetValue(_WebUrl, out var url);
  34. ViewBag.BeginTime = DateTime.Now.AddDays(-1).Date;
  35. ViewBag.EndTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 23:59:59";
  36. ViewBag.WebApiUrl = url;
  37. return View();
  38. }
  39. #endregion
  40. public async Task<ActionResult> GetSRMPageList(string pagination, string queryJson)
  41. {
  42. Pagination paginationobj = InitPagination(pagination);
  43. var query = new SXDevRunInfoQueryDto();
  44. if (!string.IsNullOrEmpty(queryJson))
  45. {
  46. query = JsonConvert.DeserializeObject<SXDevRunInfoQueryDto>(queryJson);
  47. }
  48. var dto = paginationobj.Adapt<DeviceEffectiveQueryDto>();
  49. dto.type = (int)DevType.SRM;
  50. dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1));
  51. dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now);
  52. //var ret = Task.Run(async () =>
  53. //{
  54. // return await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto) , "/api/Wcs/GetDevRunInfo");
  55. //}).ConfigureAwait(false).GetAwaiter().GetResult();
  56. var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  57. var lists = ret != null ? JsonConvert.DeserializeObject<PagedInfo<RunInfo>>(ret) : null;
  58. var jsonData = new
  59. {
  60. rows = lists != null && lists.Result.Any() ? lists.Result : new List<RunInfo>(),
  61. total = lists != null && lists.Result.Any() ? lists.TotalPage : 0,
  62. page = lists != null && lists.Result.Any() ? lists.PageIndex : 1,
  63. records = lists != null && lists.Result.Any() ? lists.TotalNum : 0
  64. };
  65. return Success(jsonData);
  66. }
  67. public async Task<ActionResult> GetRobotPageList(string pagination, string queryJson)
  68. {
  69. Pagination paginationobj = InitPagination(pagination);
  70. var query = new SXDevRunInfoQueryDto();
  71. if (!string.IsNullOrEmpty(queryJson))
  72. {
  73. query = JsonConvert.DeserializeObject<SXDevRunInfoQueryDto>(queryJson);
  74. }
  75. var dto = paginationobj.Adapt<DeviceEffectiveQueryDto>();
  76. dto.type = (int)DevType.Robot;
  77. dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1));
  78. dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now);
  79. //var ret = Task.Run(async () =>
  80. //{
  81. // return await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  82. //}).ConfigureAwait(false).GetAwaiter().GetResult();
  83. var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  84. var lists = ret!=null? JsonConvert.DeserializeObject<PagedInfo<RunInfo>>(ret) :null;
  85. var jsonData = new
  86. {
  87. rows = lists != null && lists.Result.Any() ? lists.Result : new List<RunInfo>(),
  88. total = lists != null && lists.Result.Any() ? lists.TotalPage : 0,
  89. page = lists != null && lists.Result.Any() ? lists.PageIndex : 1,
  90. records = lists != null && lists.Result.Any() ? lists.TotalNum : 0
  91. };
  92. return Success(jsonData);
  93. }
  94. public async Task<ActionResult> GetRgvPageList(string pagination, string queryJson)
  95. {
  96. Pagination paginationobj = InitPagination(pagination);
  97. var query = new SXDevRunInfoQueryDto();
  98. if (!string.IsNullOrEmpty(queryJson))
  99. {
  100. query = JsonConvert.DeserializeObject<SXDevRunInfoQueryDto>(queryJson);
  101. }
  102. var dto = paginationobj.Adapt<DeviceEffectiveQueryDto>();
  103. dto.type = (int)DevType.RGV;
  104. dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1));
  105. dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now);
  106. //var ret = Task.Run(async () =>
  107. //{
  108. // return await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  109. //}).ConfigureAwait(false).GetAwaiter().GetResult();
  110. var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  111. var lists = ret != null ? JsonConvert.DeserializeObject<PagedInfo<RunInfo>>(ret) : null;
  112. var jsonData = new
  113. {
  114. rows = lists != null && lists.Result.Any() ? lists.Result : new List<RunInfo>(),
  115. total = lists != null && lists.Result.Any() ? lists.TotalPage : 0,
  116. page = lists != null && lists.Result.Any() ? lists.PageIndex : 1,
  117. records = lists != null && lists.Result.Any() ? lists.TotalNum : 0
  118. };
  119. return Success(jsonData);
  120. }
  121. public async Task<ActionResult> GetHJPageList(string pagination, string queryJson)
  122. {
  123. Pagination paginationobj = InitPagination(pagination);
  124. var query = new SXDevRunInfoQueryDto();
  125. if (!string.IsNullOrEmpty(queryJson))
  126. {
  127. query = JsonConvert.DeserializeObject<SXDevRunInfoQueryDto>(queryJson);
  128. }
  129. var dto = paginationobj.Adapt<DeviceEffectiveQueryDto>();
  130. dto.type = (int)DevType.Truss;
  131. dto.stateTime = query.BeginTime.GetValueOrDefault(DateTime.Now.AddDays(-1));
  132. dto.endTime = query.EndTime.GetValueOrDefault(DateTime.Now);
  133. //var ret = Task.Run(async () =>
  134. //{
  135. // return await GetDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  136. //}).ConfigureAwait(false).GetAwaiter().GetResult();
  137. var ret = await GetRestSharpDevRunInfoDataAsync(JsonConvert.SerializeObject(dto), "/api/Wcs/GetDevRunInfo");
  138. var lists = ret != null ? JsonConvert.DeserializeObject<PagedInfo<RunInfo>>(ret) : null;
  139. var jsonData = new
  140. {
  141. rows = lists != null && lists.Result.Any() ? lists.Result : new List<RunInfo>(),
  142. total = lists != null && lists.Result.Any() ? lists.TotalPage : 0,
  143. page = lists != null && lists.Result.Any() ? lists.PageIndex : 1,
  144. records = lists != null && lists.Result.Any() ? lists.TotalNum : 0
  145. };
  146. return Success(jsonData);
  147. }
  148. public async Task<string> GetDevRunInfoDataAsync(string query, string uri)
  149. {
  150. DeviceEffectiveUrls.TryGetValue(_WebUrl, out var url);
  151. //string uri = url + "/api/Wcs/GetDevRunInfo";
  152. var httpClient = _httpClientFactory.CreateClient(_WebUrl);
  153. var request = new HttpRequestMessage(HttpMethod.Get, url + uri);
  154. var content = new StringContent(query, null, "application/json");
  155. request.Content = content;
  156. var response = await httpClient.SendAsync(request);
  157. response.EnsureSuccessStatusCode();
  158. var result = await response.Content.ReadAsStringAsync();
  159. return result;
  160. }
  161. public async Task<string> GetRestSharpDevRunInfoDataAsync(string query, string uri)
  162. {
  163. DeviceEffectiveUrls.TryGetValue(_WebUrl, out var url);
  164. var options = new RestClientOptions(url)
  165. {
  166. MaxTimeout = -1,
  167. };
  168. var client = new RestClient(options);
  169. var request = new RestRequest(uri, Method.Get);
  170. request.AddHeader("Content-Type", "application/json");
  171. var body = query;
  172. request.AddStringBody(body, DataFormat.Json);
  173. RestResponse response = await client.ExecuteAsync(request);
  174. return response.Content;
  175. }
  176. }
  177. #region
  178. //public class DeviceEffectivesController : MvcControllerBase
  179. //{
  180. // private readonly SXDevAlarmInfoService _sxDevAlarmInfoService;
  181. // private readonly SXDevRunInfoService _sxDevRunInfoService;
  182. // public DeviceEffectivesController(SXDevAlarmInfoService sxDevAlarmInfoService, SXDevRunInfoService sxDevRunInfoService)
  183. // {
  184. // _sxDevAlarmInfoService = sxDevAlarmInfoService;
  185. // _sxDevRunInfoService = sxDevRunInfoService;
  186. // }
  187. // #region 视图功能
  188. // public IActionResult Index()
  189. // {
  190. // return View();
  191. // }
  192. // public IActionResult QIndex()
  193. // {
  194. // ViewBag.BeginTime = DateTime.Now.AddDays(-1).Date;
  195. // ViewBag.EndTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 23:59:59";
  196. // return View();
  197. // }
  198. // public IActionResult IndexList()
  199. // {
  200. // ViewBag.BeginTime = DateTime.Now.AddDays(-1).Date;
  201. // ViewBag.EndTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 23:59:59";
  202. // return View();
  203. // }
  204. // #endregion
  205. // public ActionResult GetSrmRateData(string queryJson)
  206. // {
  207. // var query = new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, Floor = "1", DevType = DevType.SRM };
  208. // if (!string.IsNullOrEmpty(queryJson))
  209. // {
  210. // query = JsonConvert.DeserializeObject<SXDevRunInfoQueryDto>(queryJson);
  211. // }
  212. // var list = _sxDevRunInfoService.GetSRMTimeRateList(query ?? new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.SRM });
  213. // return Success(list);
  214. // }
  215. // public ActionResult GetRobotRateData(string queryJson)
  216. // {
  217. // var query = new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.Robot };
  218. // if (!string.IsNullOrEmpty(queryJson))
  219. // {
  220. // query = JsonConvert.DeserializeObject<SXDevRunInfoQueryDto>(queryJson);
  221. // }
  222. // var list = _sxDevRunInfoService.GetRobotTimeRateList(query ?? new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.Robot });
  223. // return Success(list);
  224. // }
  225. // public ActionResult GetSRMPageList(string pagination, string queryJson)
  226. // {
  227. // Pagination paginationobj = InitPagination(pagination);
  228. // var query = new SXDevRunInfoQueryDto();
  229. // if (!string.IsNullOrEmpty(queryJson))
  230. // {
  231. // query = JsonConvert.DeserializeObject<SXDevRunInfoQueryDto>(queryJson);
  232. // }
  233. // var lists = _sxDevRunInfoService.GetSRMPageList(paginationobj, query ?? new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.SRM });
  234. // lists.Extra.TryGetValue("total",out var total);
  235. // var dectotal = Convert.ToDecimal(total);
  236. // var totalmodel = new RunListModel()
  237. // {
  238. // Code = "合计:",
  239. // OutDepot = lists.Result.Sum(s => s.OutDepot),
  240. // EnterDepot = lists.Result.Sum(s => s.EnterDepot),
  241. // TransferDepot = lists.Result.Sum(s => s.TransferDepot),
  242. // Free = lists.Result.Sum(s => s.Free),
  243. // Manual = lists.Result.Sum(s => s.Manual),
  244. // Automatic = lists.Result.Sum(s => s.Automatic),
  245. // Alarm = lists.Result.Sum(s => s.Alarm),
  246. // Working = lists.Result.Sum(s => s.Working),
  247. // };
  248. // totalmodel.State[0] = dectotal > 0 ? Math.Round((decimal)totalmodel.Free / dectotal * 100, 2) : 0;
  249. // totalmodel.State[1] = dectotal > 0 ? Math.Round((decimal)totalmodel.Manual / dectotal * 100, 2) : 0;
  250. // totalmodel.State[2] = dectotal > 0 ? Math.Round((decimal)totalmodel.Automatic / dectotal * 100, 2) : 0;
  251. // totalmodel.State[3] = dectotal > 0 ? Math.Round((decimal)totalmodel.Alarm / dectotal * 100, 2) : 0;
  252. // totalmodel.State[4] = dectotal > 0 ? Math.Round((decimal)totalmodel.Working / dectotal * 100, 2) : 0;
  253. // lists.Result.Add(totalmodel);
  254. // var jsonData = new
  255. // {
  256. // rows = lists.Result,
  257. // total = lists.TotalPage,
  258. // page = lists.PageIndex,
  259. // records = lists.TotalNum
  260. // };
  261. // return Success(jsonData);
  262. // }
  263. // public ActionResult GetRobotPageList(string pagination, string queryJson)
  264. // {
  265. // Pagination paginationobj = InitPagination(pagination);
  266. // var query = new SXDevRunInfoQueryDto();
  267. // if (!string.IsNullOrEmpty(queryJson))
  268. // {
  269. // query = JsonConvert.DeserializeObject<SXDevRunInfoQueryDto>(queryJson);
  270. // }
  271. // var lists = _sxDevRunInfoService.GetRobotPageList(paginationobj, query ?? new SXDevRunInfoQueryDto() { BeginTime = DateTime.Now.AddHours(-24), EndTime = DateTime.Now, DevType = DevType.Robot });
  272. // lists.Extra.TryGetValue("total", out var total);
  273. // var dectotal = Convert.ToDecimal(total);
  274. // var totalmodel = new RunListModel()
  275. // {
  276. // Code = "合计:",
  277. // OutDepot = lists.Result.Sum(s => s.OutDepot),
  278. // EnterDepot = lists.Result.Sum(s => s.EnterDepot),
  279. // TransferDepot = lists.Result.Sum(s => s.TransferDepot),
  280. // Free = lists.Result.Sum(s => s.Free),
  281. // Manual = lists.Result.Sum(s => s.Manual),
  282. // Automatic = lists.Result.Sum(s => s.Automatic),
  283. // Alarm = lists.Result.Sum(s => s.Alarm),
  284. // Working = lists.Result.Sum(s => s.Working),
  285. // };
  286. // totalmodel.State[0] = dectotal > 0 ? Math.Round((decimal)totalmodel.Free / dectotal * 100, 2) : 0;
  287. // totalmodel.State[1] = dectotal > 0 ? Math.Round((decimal)totalmodel.Manual / dectotal * 100, 2) : 0;
  288. // totalmodel.State[2] = dectotal > 0 ? Math.Round((decimal)totalmodel.Automatic / dectotal * 100, 2) : 0;
  289. // totalmodel.State[3] = dectotal > 0 ? Math.Round((decimal)totalmodel.Alarm / dectotal * 100, 2) : 0;
  290. // totalmodel.State[4] = dectotal > 0 ? Math.Round((decimal)totalmodel.Working / dectotal * 100, 2) : 0;
  291. // lists.Result.Add(totalmodel);
  292. // var jsonData = new
  293. // {
  294. // rows = lists.Result,
  295. // total = lists.TotalPage,
  296. // page = lists.PageIndex,
  297. // records = lists.TotalNum
  298. // };
  299. // return Success(jsonData);
  300. // }
  301. //}
  302. #endregion
  303. }