Analysis2Controller.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833
  1. using AutoMapper;
  2. using Cksoft.Data;
  3. using Cksoft.Data.Repository;
  4. using DllEapCommon.NPOI;
  5. using DllEapDal;
  6. using DllEapDal.OFILM;
  7. using DllEapEntity;
  8. using DllEapEntity.Dtos;
  9. using DllEapEntity.Mes;
  10. using Microsoft.AspNetCore.Authorization;
  11. using Microsoft.AspNetCore.Mvc;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.IO;
  15. using System.Linq;
  16. using System.Data;
  17. using System.Threading.Tasks;
  18. namespace DllUnityWebApi
  19. {
  20. /// <summary>
  21. /// 数据分析
  22. /// </summary>
  23. [Route("Eap/Api/[controller]/[action]")]
  24. [ApiController]
  25. [Authorize]
  26. public class Analysis2Controller : ControllerBase
  27. {
  28. private IDatabase db;
  29. private IMapper _mapper;
  30. private string commonFilter = $" and EventCode='{DllHsms.StandardCode.CEID_AlarmOccurred}'";
  31. public Analysis2Controller(IMapper mapper)
  32. {
  33. _mapper = mapper;
  34. }
  35. /// <summary>
  36. /// 一段时间内机台报警
  37. /// </summary>
  38. /// <param name="startTime"></param>
  39. /// <param name="endTime"></param>
  40. /// <returns></returns>
  41. [HttpGet]
  42. public ChartDto GetAlarmAnalysis(string mainFilter, string subFilter)
  43. {
  44. using (db = DbFactory.Base("eapslave"))
  45. {
  46. var dal = new McaEventStatisticByDayDal(db);
  47. var dto = dal.CreateCategory(mainFilter + commonFilter, subFilter);
  48. return dto;
  49. }
  50. }
  51. /// <summary>
  52. /// MTBA图表
  53. /// </summary>
  54. /// <param name="mainFilter"></param>
  55. /// <returns></returns>
  56. [HttpGet]
  57. public ChartDto2 GetMtbaAnalysis(DateTime startTime, DateTime endTime, string tablename, string subFilter, string sub)
  58. {
  59. using (db = DbFactory.Base("eapslave"))
  60. {
  61. var dal = new McaEventStatisticByDayDal(db);
  62. var dto = dal.CreateMtbaCategory(startTime, endTime, tablename, subFilter, sub);
  63. return dto;
  64. }
  65. }
  66. /// <summary>
  67. /// 机台报警统计报表数据
  68. /// </summary>
  69. /// <param name="filter"></param>
  70. /// <param name="subFilter"></param>
  71. /// <param name="sortField"></param>
  72. /// <param name="sortOrder"></param>
  73. /// <param name="take"></param>
  74. /// <returns></returns>
  75. [HttpGet]
  76. public IEnumerable<AnalysisDto> GetMachineAlarmDtos(string filter, string subFilter, string sortField = "count", string sortOrder = "ascend", int take = 10)
  77. {
  78. if (sortOrder == "descend")
  79. {
  80. sortOrder = "desc";
  81. }
  82. else
  83. {
  84. sortOrder = "asc";
  85. }
  86. using (db = DbFactory.Base("eapslave"))
  87. {
  88. var dal = new McaEventStatisticByDayDal(db);
  89. var dtos = dal.GetAlarmAnalysis(filter + commonFilter, subFilter, sortField, sortOrder, take);
  90. return dtos;
  91. }
  92. }
  93. /// <summary>
  94. /// 机台报警统计
  95. /// </summary>
  96. /// <param name="filterInfo"></param>
  97. /// <returns></returns>
  98. [HttpPost]
  99. public async Task<IActionResult> ExportMachineAlarmDtos(IDictionary<string, string> filterInfo)
  100. {
  101. string filter = string.Empty, subFilter = string.Empty;
  102. string sortField = "count"; string sortOrder = "ascend"; int take = 10000;
  103. if (filterInfo.ContainsKey("filter"))
  104. {
  105. filter = filterInfo["filter"];
  106. }
  107. if (filterInfo.ContainsKey("subFilter"))
  108. {
  109. subFilter = filterInfo["subFilter"];
  110. }
  111. if (filterInfo.ContainsKey("sortField"))
  112. {
  113. filter = filterInfo["sortField"];
  114. }
  115. if (filterInfo.ContainsKey("sortOrder"))
  116. {
  117. filter = filterInfo["sortOrder"];
  118. }
  119. if (filterInfo.ContainsKey("take"))
  120. {
  121. filter = filterInfo["take"];
  122. }
  123. using (db = DbFactory.Base("eapslave"))
  124. {
  125. var dal = new McaEventStatisticByDayDal(db);
  126. var dtos = dal.GetAlarmAnalysis(filter + commonFilter, subFilter, sortField, sortOrder, take);
  127. var list = _mapper.Map<IEnumerable<ExportMachineAlarmDto>>(dtos).ToList();
  128. var book = DataExportHelper.EntityToExcel(list);
  129. MemoryStream ms = new MemoryStream();
  130. ms.Position = 0;
  131. book.Write(ms);
  132. ms.Dispose();
  133. ms.Close();
  134. await Task.CompletedTask;
  135. return File(ms.ToArray(), "application/octet-stream");
  136. }
  137. }
  138. [HttpGet]
  139. public LayuiModel<AnalysisDto> GetAlarmCodeGrid(string filter, string subFilter, int pageSize = 10, int pageIndex = 1)
  140. {
  141. using (db = DbFactory.Base("eapslave"))
  142. {
  143. var dal = new McaEventStatisticByDayDal(db);
  144. int total;
  145. var dtos = dal.GetAlarmCodeAnalysis(filter + commonFilter, subFilter, pageSize, pageIndex, out total);
  146. return new LayuiModel<AnalysisDto>
  147. {
  148. code = 0,
  149. msg = "ok",
  150. count = total,
  151. data = dtos
  152. };
  153. }
  154. }
  155. /// <summary>
  156. /// 一段时间内报警代码
  157. /// </summary>
  158. /// <param name="startTime">开始时间</param>
  159. /// <param name="endTime">结束时间</param>
  160. /// <param name="macModel">机型编码</param>
  161. /// <param name="pCode">制程</param>
  162. /// <returns></returns>
  163. [HttpGet]
  164. public ChartDto GetAlarmAnalysisByCode(string filter, string subFilter)
  165. {
  166. using (db = DbFactory.Base("eapslave"))
  167. {
  168. var dal = new McaEventStatisticByDayDal(db);
  169. var dto = dal.CreateAlarmCat(filter + commonFilter, subFilter);
  170. return dto;
  171. }
  172. }
  173. /// <summary>
  174. /// 获取所有的机型
  175. /// </summary>
  176. /// <returns></returns>
  177. [HttpGet]
  178. public IEnumerable<SecMacModel> GetMacModels()
  179. {
  180. using (db = DbFactory.Base("eapslave"))
  181. {
  182. var dal = new MacModelDal(db);
  183. var models = dal.Get();
  184. return models;
  185. }
  186. }
  187. /// <summary>
  188. /// 获取所有制程
  189. /// </summary>
  190. /// <returns></returns>
  191. [HttpGet]
  192. public IEnumerable<Process> GetProcesses()
  193. {
  194. using (db = DbFactory.Base("eapslave"))
  195. {
  196. var dal = new TProcessDal(db);
  197. var models = dal.Get();
  198. return models;
  199. }
  200. }
  201. /// <summary>
  202. /// 报警代码统计报表数据
  203. /// </summary>
  204. /// <param name="filter"></param>
  205. /// <param name="subFilter"></param>
  206. /// <param name="pageSize"></param>
  207. /// <param name="pageIndex"></param>
  208. /// <param name="sortField"></param>
  209. /// <param name="sortOrder"></param>
  210. /// <param name="take"></param>
  211. /// <returns></returns>
  212. [HttpGet]
  213. public LayuiModel<AnalysisDto> GetCodeAlarmDtos(string filter, string subFilter, int pageSize, int pageIndex, string sortField = "count", string sortOrder = "descend", int take = 10)
  214. {
  215. if (sortOrder == "descend")
  216. {
  217. sortOrder = "desc";
  218. }
  219. else
  220. {
  221. sortOrder = "asc";
  222. }
  223. using (db = DbFactory.Base("eapslave"))
  224. {
  225. var dal = new McaEventStatisticByDayDal(db);
  226. int total;
  227. var dtos = dal.GetAlarmCodeAnalysis(filter + commonFilter, subFilter, pageSize, pageIndex, out total, sortField, sortOrder);
  228. return new LayuiModel<AnalysisDto>
  229. {
  230. code = 1,
  231. count = total,
  232. msg = string.Empty,
  233. data = dtos
  234. };
  235. }
  236. }
  237. /// <summary>
  238. /// 报警代码统计导出
  239. /// </summary>
  240. /// <param name="filterInfo"></param>
  241. /// <returns></returns>
  242. [HttpPost]
  243. public async Task<IActionResult> ExportCodeAlarmDtos(IDictionary<string, string> filterInfo)
  244. {
  245. string filter = string.Empty, subFilter = string.Empty;
  246. if (filterInfo.ContainsKey("filter"))
  247. {
  248. filter = filterInfo["filter"];
  249. }
  250. if (filterInfo.ContainsKey("subFilter"))
  251. {
  252. subFilter = filterInfo["subFilter"];
  253. }
  254. using (db = DbFactory.Base("eapslave"))
  255. {
  256. var dal = new McaEventStatisticByDayDal(db);
  257. int total;
  258. var dtos = dal.GetAlarmCodeAnalysis(filter + commonFilter, subFilter, 100000, 1, out total, "count", "desc");
  259. var list = _mapper.Map<IEnumerable<ExportAnalysisDto>>(dtos).ToList();
  260. var book = DataExportHelper.EntityToExcel(list);
  261. MemoryStream ms = new MemoryStream();
  262. ms.Position = 0;
  263. book.Write(ms);
  264. ms.Dispose();
  265. ms.Close();
  266. await Task.CompletedTask;
  267. return File(ms.ToArray(), "application/octet-stream");
  268. }
  269. }
  270. /// <summary>
  271. /// 获取LHA数据采集报表数据
  272. /// </summary>
  273. /// <param name="filter"></param>
  274. /// <param name="subFilter"></param>
  275. /// <param name="macCode"></param>
  276. /// <param name="pageSize"></param>
  277. /// <param name="pageIndex"></param>
  278. /// <param name="sortField"></param>
  279. /// <param name="sortOrder"></param>
  280. /// <returns></returns>
  281. [HttpGet]
  282. public LayuiModel<DllEapEntity.OFILM.PostbondviewDto> GetLHADataDtos(string filter, string subFilter, string macCode, int pageSize, int pageIndex, string sortField = "time", string sortOrder = "asc")
  283. {
  284. if (sortOrder == "asc")
  285. {
  286. sortOrder = "asc";
  287. }
  288. else
  289. {
  290. sortOrder = "asc";
  291. }
  292. using (db = DbFactory.Base("eapslave"))
  293. {
  294. var dal = new McaEventStatisticByDayDal(db);
  295. int total;
  296. //var machinedal = new MachineDal(db);
  297. //if (machinedal.GetCount($" and a.FCode='{macCode}'") == 0)
  298. //{
  299. // return new LayuiModel<DllEapEntity.OFILM.PostbondviewDto>
  300. // {
  301. // code = -1,
  302. // count = 0,
  303. // msg = "机台号不存在!",
  304. // data = null
  305. // };
  306. //}
  307. var dtos = dal.GetLHADataAnalysis(filter, subFilter, pageSize, pageIndex, out total, sortField, sortOrder);
  308. return new LayuiModel<DllEapEntity.OFILM.PostbondviewDto>
  309. {
  310. code = 1,
  311. count = total,
  312. msg = string.Empty,
  313. data = dtos
  314. };
  315. }
  316. }
  317. /// <summary>
  318. /// LHA数据采集导出
  319. /// </summary>
  320. /// <param name="filterInfo"></param>
  321. /// <returns></returns>
  322. [HttpPost]
  323. public async Task<IActionResult> ExportLHADataDtos(IDictionary<string, string> filterInfo)
  324. {
  325. string filter = string.Empty, subFilter = string.Empty, macCode = string.Empty, sortField = "time", sortOrder = "asc";
  326. int pageSize = 100000, pageIndex = 1;
  327. if (filterInfo.ContainsKey("filter"))
  328. {
  329. filter = filterInfo["filter"];
  330. }
  331. if (filterInfo.ContainsKey("subFilter"))
  332. {
  333. subFilter = filterInfo["subFilter"];
  334. }
  335. if (filterInfo.ContainsKey("macCode"))
  336. {
  337. macCode = filterInfo["macCode"];
  338. }
  339. if (filterInfo.ContainsKey("sortField"))
  340. {
  341. sortField = filterInfo["sortField"];
  342. }
  343. if (filterInfo.ContainsKey("sortOrder"))
  344. {
  345. sortOrder = filterInfo["sortOrder"];
  346. }
  347. if (filterInfo.ContainsKey("pageSize") && !string.IsNullOrEmpty(filterInfo["pageSize"]))
  348. {
  349. pageSize = Convert.ToInt32(filterInfo["pageSize"]) > 0 ? Convert.ToInt32(filterInfo["pageSize"]) : pageSize;
  350. }
  351. if (filterInfo.ContainsKey("pageIndex") && !string.IsNullOrEmpty(filterInfo["pageIndex"]))
  352. {
  353. pageIndex = Convert.ToInt32(filterInfo["pageIndex"]) > 0 ? Convert.ToInt32(filterInfo["pageIndex"]) : pageIndex;
  354. }
  355. var roles = GetLHADataDtos(filter, subFilter, macCode, pageSize, pageIndex).data;
  356. var list = _mapper.Map<IEnumerable<ExportPostbondviewDtocs>>(roles).ToList();
  357. var book = DataExportHelper.EntityToExcel(list);
  358. MemoryStream ms = new MemoryStream();
  359. ms.Position = 0;
  360. book.Write(ms);
  361. ms.Dispose();
  362. ms.Close();
  363. await Task.CompletedTask;
  364. return File(ms.ToArray(), "application/octet-stream");
  365. }
  366. /// <summary>
  367. /// 机台报警清单报表数据
  368. /// </summary>
  369. /// <param name="filter"></param>
  370. /// <param name="subFilter"></param>
  371. /// <param name="sub"></param>
  372. /// <param name="sort"></param>
  373. /// <param name="pageIndex"></param>
  374. /// <param name="pageSize"></param>
  375. /// <param name="sortField"></param>
  376. /// <param name="sortOrder"></param>
  377. /// <returns></returns>
  378. [HttpGet]
  379. public LayuiModel<AlarmCode> GetAlarmCodeDetail(string filter, string subFilter, string sub, string sort, int pageIndex = 1, int pageSize = 10, string sortField = "ptime", string sortOrder = "descend")
  380. {
  381. if (!string.IsNullOrEmpty(sort))
  382. {
  383. string[] arr = sort.Split(",");
  384. sortField = arr[0];
  385. sortOrder = arr[1];
  386. }
  387. if (sortOrder == "descend")
  388. {
  389. sortOrder = "desc";
  390. }
  391. else
  392. {
  393. sortOrder = "asc";
  394. }
  395. int start, end;
  396. start = (pageIndex - 1) * pageSize + 1;
  397. end = start + pageSize;
  398. using (db = DbFactory.Base("eapslave"))
  399. {
  400. var dal = new McaEventStatisticByDayDal(db);
  401. int count;
  402. var dtos = dal.GetAramCodeDetail(filter + commonFilter, subFilter, sub, start, pageSize, out count, sortField, sortOrder);
  403. // int count = dal.GetAlarmCodeCount(filter + commonFilter);
  404. return new LayuiModel<AlarmCode>()
  405. {
  406. code = 0,
  407. count = count,
  408. data = dtos,
  409. msg = "ok"
  410. };
  411. }
  412. }
  413. /// <summary>
  414. /// 机台报警清单导出
  415. /// </summary>
  416. /// <param name="filterinfo"></param>
  417. /// <returns></returns>
  418. [HttpPost]
  419. public async Task<IActionResult> ExporAlarmCodeDetail(IDictionary<string, string> filterinfo)
  420. {
  421. string sortField = string.Empty, sortOrder = "descend", filter = string.Empty, subFilter = string.Empty, sub = string.Empty;
  422. int pageIndex = 1, pageSize = 100000;
  423. if (filterinfo.ContainsKey("sortField"))
  424. {
  425. sortField = filterinfo["sortField"];
  426. }
  427. if (filterinfo.ContainsKey("sortOrder"))
  428. {
  429. sortOrder = filterinfo["sortOrder"];
  430. }
  431. if (filterinfo.ContainsKey("filter"))
  432. {
  433. filter = filterinfo["filter"];
  434. }
  435. if (filterinfo.ContainsKey("subFilter"))
  436. {
  437. subFilter = filterinfo["subFilter"];
  438. }
  439. if (filterinfo.ContainsKey("sub"))
  440. {
  441. sub = filterinfo["sub"];
  442. }
  443. if (filterinfo.ContainsKey("pageIndex"))
  444. {
  445. pageIndex = Convert.ToInt32(filterinfo["pageIndex"]);
  446. }
  447. if (filterinfo.ContainsKey("pageSize"))
  448. {
  449. pageSize = Convert.ToInt32(filterinfo["pageSize"]);
  450. }
  451. var dto = GetAlarmCodeDetail(filter, subFilter, sub, null, pageIndex, pageSize, null, sortOrder).data;
  452. var list = _mapper.Map<IEnumerable<ExportAlarmCode>>(dto).ToList();
  453. var type = typeof(Nullable<DateTime>);
  454. var book = DataExportHelper.EntityToExcel(list);
  455. MemoryStream ms = new MemoryStream();
  456. ms.Position = 0;
  457. book.Write(ms);
  458. ms.Dispose();
  459. ms.Close();
  460. await Task.CompletedTask;
  461. return File(ms.ToArray(), "application/octet-stream");
  462. }
  463. /// <summary>
  464. ///
  465. /// </summary>
  466. /// <param name="filter"></param>
  467. /// <param name="subFilter"></param>
  468. /// <param name="type"></param>
  469. /// <param name="dateType"></param>
  470. /// <param name="codes"></param>
  471. /// <returns></returns>
  472. [HttpGet]
  473. public EChartsBar GetMtbfs(string filter, string subFilter, string type, DateType dateType, string codes)
  474. {
  475. var arr = codes.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  476. using (db = DbFactory.Base("eapslave"))
  477. {
  478. McaEventStatisticByDayDal dal = new McaEventStatisticByDayDal(db);
  479. return dal.GetMTBFsNew(type, dateType, filter, subFilter, arr);
  480. }
  481. }
  482. /// <summary>
  483. ///
  484. /// </summary>
  485. /// <param name="filter"></param>
  486. /// <param name="subFilter"></param>
  487. /// <param name="type"></param>
  488. /// <param name="isIndex"></param>
  489. /// <returns></returns>
  490. [HttpGet]
  491. public LineDateDto GetAlarmTimes(string filter, string subFilter, string type, int isIndex = -1)
  492. {
  493. using (db = DbFactory.Base("eapslave"))
  494. {
  495. McaEventStatisticByDayDal dal = new McaEventStatisticByDayDal(db);
  496. var entities = dal.GetAlarmTimeDtos(commonFilter + filter, subFilter, type);
  497. if (entities != null)
  498. {
  499. if (isIndex == 1)
  500. {
  501. entities.LineSeries = entities.LineSeries?.OrderBy(c => c.AlarmTimeDtos.Sum(t => t.Count)).Take(3);
  502. }
  503. }
  504. return entities;
  505. }
  506. }
  507. /// <summary>
  508. ///
  509. /// </summary>
  510. /// <param name="filter"></param>
  511. /// <param name="subFilter"></param>
  512. /// <param name="type"></param>
  513. /// <param name="macModel"></param>
  514. /// <param name="pCode"></param>
  515. /// <param name="factoryId"></param>
  516. /// <param name="dateStart"></param>
  517. /// <param name="dateEnd"></param>
  518. /// <returns></returns>
  519. [HttpGet]
  520. public IEnumerable<MachineEfficiency> GetMachineEfficiencies(string filter, string subFilter, string type, string macModel, string pCode, int? factoryId, string dateStart = null, string dateEnd = null)
  521. {
  522. DateTime? start = null, end = null;
  523. if (!string.IsNullOrEmpty(dateStart) && dateStart.ToLower() != "null")
  524. {
  525. start = Convert.ToDateTime(dateStart);
  526. }
  527. if (!string.IsNullOrEmpty(dateEnd) && dateEnd.ToLower() != "null")
  528. {
  529. end = Convert.ToDateTime(dateEnd);
  530. }
  531. using (db = DbFactory.Base("eapslave"))
  532. {
  533. McaEventStatisticByDayDal dal = new McaEventStatisticByDayDal(db);
  534. return dal.GetMachineEfficy(type, filter, subFilter, macModel, pCode, factoryId, start, end);
  535. }
  536. }
  537. /// <summary>
  538. /// 设备状态监控报表数据
  539. /// </summary>
  540. /// <param name="filter"></param>
  541. /// <param name="subFilter"></param>
  542. /// <param name="pageIndex"></param>
  543. /// <param name="pageSize"></param>
  544. /// <param name="sortField"></param>
  545. /// <param name="sortOrder"></param>
  546. /// <param name="startTime"></param>
  547. /// <param name="endTime"></param>
  548. /// <returns></returns>
  549. [HttpGet]
  550. public LayuiModel<MachineEfDto> GetMachineEfficienciesT(string filter, string subFilter, int pageIndex = 1, int pageSize = 10, string sortField = "MacCode", string sortOrder = "ascend",
  551. DateTime? startTime = null, DateTime? endTime = null)
  552. {
  553. string userCode = Request.Headers["usercode"];
  554. DateTime? startt = null, endt = null;
  555. double se = 1;
  556. //string[] startend = filter.Split('\'');
  557. //if (startend.Length > 4)
  558. //{
  559. // startt = Convert.ToDateTime(startend[1]);
  560. // endt = Convert.ToDateTime(startend[3]);
  561. // se = (endt - startt).Value.TotalMinutes;
  562. // se = se == 0 ? 1 : se;
  563. //}
  564. se = ((endTime - startTime).Value.TotalMinutes);
  565. if (sortOrder == "descend")
  566. {
  567. sortOrder = "desc";
  568. }
  569. else
  570. {
  571. sortOrder = "asc";
  572. }
  573. if (sortField == "null")
  574. {
  575. sortField = "MacCode";
  576. }
  577. int start, end;
  578. start = (pageIndex - 1) * pageSize + 1;
  579. end = start + pageSize;
  580. using (IDatabase db = DbFactory.Base("eapslave"))
  581. {
  582. db.BeginTrans();
  583. var dal = new McaEventStatisticByDayDal(db);
  584. var total = 0;
  585. string errorinfo = string.Empty;
  586. IEnumerable<MachineEfDto> roles = dal.GetMachineEfficyMachine(filter, subFilter, start, pageSize, sortField, sortOrder, out total, se);
  587. var extra = dal.GetMachineEfficyMachineTotal(filter, subFilter, start, pageSize, sortField, sortOrder, se);
  588. return new LayuiModel<MachineEfDto>
  589. {
  590. code = 1,
  591. count = total,
  592. data = roles,
  593. msg = "",
  594. extraObject = extra
  595. };
  596. }
  597. }
  598. /// <summary>
  599. /// 设备状态监控导出
  600. /// </summary>
  601. /// <param name="queryData"></param>
  602. /// <returns></returns>
  603. [HttpPost]
  604. public IActionResult ExportMachineEfficiencies([FromBody] dynamic queryData)
  605. {
  606. string filter = Convert.ToString(queryData.filter);
  607. string subFilter = Convert.ToString(queryData.subFilter);
  608. int pageIndex = Convert.ToInt32(queryData.pageIndex);
  609. int pageSize = Convert.ToInt32(queryData.pageSize);
  610. string sortField = Convert.ToString(queryData.sortField);
  611. string sortOrder = Convert.ToString(queryData.sortOrder);
  612. DateTime? startTime = Convert.ToDateTime(queryData.startTime);
  613. DateTime? endTime = Convert.ToDateTime(queryData.endTime);
  614. double se = 1;
  615. se = ((endTime - startTime).Value.TotalMinutes);
  616. string errorinfo = string.Empty;
  617. int start, end;
  618. start = (pageIndex - 1) * pageSize + 1;
  619. end = start + pageSize;
  620. using (IDatabase db = DbFactory.Base("eapslave"))
  621. {
  622. db.BeginTrans();
  623. var dal = new McaEventStatisticByDayDal(db);
  624. var total = 0;
  625. IEnumerable<MachineEfDto> roles = dal.GetMachineEfficyMachine(filter, subFilter, start, pageSize, sortField, sortOrder, out total, se);
  626. var extra = dal.GetMachineEfficyMachineTotal(filter, subFilter, start, pageSize, sortField, sortOrder, se);
  627. if (roles == null)
  628. {
  629. return null;
  630. }
  631. var buffer = DataExportHelper.ExportMachineEfficiencies(roles, extra, total, ref errorinfo);
  632. if (buffer == null)
  633. {
  634. return null;
  635. }
  636. MemoryStream ms = new MemoryStream();
  637. ms.Position = 0;
  638. ms.Write(buffer, 0, buffer.Length);
  639. ms.Dispose();
  640. ms.Close();
  641. return File(buffer, "application/octet-stream");
  642. }
  643. }
  644. [HttpGet]
  645. public IEnumerable<MachineEfDto> GetMachineEfficienciesTExport(string filter, string subFilter, string sortField = "count", string sortOrder = "ascend", int take = 10, DateTime? startTime = null, DateTime? endTime = null)
  646. {
  647. double se = ((endTime - startTime).Value.TotalDays + 1) * 1440;
  648. if (sortOrder == "descend")
  649. {
  650. sortOrder = "desc";
  651. }
  652. else
  653. {
  654. sortOrder = "asc";
  655. }
  656. using (db = DbFactory.Base("eapslave"))
  657. {
  658. var dal = new McaEventStatisticByDayDal(db);
  659. var dtos = dal.GetMachineEfficyMachineExprort(filter, subFilter, sortField, sortOrder, take, se);
  660. return dtos;
  661. }
  662. }
  663. /// <summary>
  664. /// 设备流失总费
  665. /// </summary>
  666. /// <param name="filter"></param>
  667. /// <param name="dateStart"></param>
  668. /// <param name="dateEnd"></param>
  669. /// <returns></returns>
  670. [HttpGet]
  671. public LayuiModel<MachineEfFactoryDto> GetMachineEfficienciesFactory(string filter, string dateStart = null, string dateEnd = null)
  672. {
  673. string userCode = Request.Headers["usercode"];
  674. DateTime? start = null, end = null;
  675. double se = 1;
  676. DateTime dateTime = DateTime.Now;
  677. filter = $@" AND a.STime >= '{dateTime.ToString("yyyy-MM-dd 00:00:00")}'
  678. AND a.STime <= '{dateTime.ToString("yyyy-MM-dd") + " 23:59"}'";
  679. string[] startend = filter.Split('\'');
  680. if (startend.Length > 4)
  681. {
  682. start = Convert.ToDateTime(startend[1]);
  683. end = Convert.ToDateTime(startend[3]);
  684. se = (end - start).Value.TotalMinutes;
  685. se = se == 0 ? 1 : se;
  686. }
  687. using (IDatabase db = DbFactory.Base("eapslave"))
  688. {
  689. db.BeginTrans();
  690. var dal = new McaEventStatisticByDayDal(db);
  691. var total = 0;
  692. string errorinfo = string.Empty;
  693. IEnumerable<MachineEfFactoryDto> roles = dal.GetMachineEfficyFactory(filter, se);
  694. var extra = 100;//dal.GetTotalInfo(filter, subFilter);
  695. return new LayuiModel<MachineEfFactoryDto>
  696. {
  697. code = 1,
  698. count = total,
  699. data = roles,
  700. msg = "",
  701. extraObject = extra
  702. };
  703. }
  704. }
  705. [HttpGet]
  706. public IEnumerable<CascaderDto> GetCasMaModels()
  707. {
  708. using (db = DbFactory.Base("eapslave"))
  709. {
  710. var dal = new MachineDal(db);
  711. return dal.GetCascaders();
  712. }
  713. }
  714. [HttpGet]
  715. [AllowAnonymous]
  716. public StatusTotal GetStatusTotal()
  717. {
  718. Response.Headers.Add("Access-Control-Allow-Origin", "*");
  719. Response.Headers.Add("Access-Control-Allow-Methods", "GET,POST");
  720. var statusShowBll = new DllStatusShowBll.StatusShowBll("eapslave");
  721. return statusShowBll.ReadStatusTotalFromMes();
  722. }
  723. [HttpGet]
  724. public IEnumerable<OutputTree> GetOutputs(string filter, string subFilter)
  725. {
  726. var errorinfo = string.Empty;
  727. using (IDatabase db = DbFactory.Base("eapslave"))
  728. {
  729. var dal = new McaEventStatisticByDayDal(db);
  730. return dal.GetOutputs(filter, subFilter, ref errorinfo);
  731. }
  732. }
  733. [HttpGet]
  734. public LayuiModel<OutputDto> GetOutputsByProgram(string filter, string subFilter, string sort, int pageIndex = 1, int pageSize = 10)
  735. {
  736. string sortOrder = "desc";
  737. string sortField = "uph";
  738. if (!string.IsNullOrEmpty(sort))
  739. {
  740. var array = sort.Split(new char[] { ',' });
  741. sortField = array[0];
  742. sortOrder = array[1] == "ascend" ? "asc" : "desc";
  743. }
  744. int start, end;
  745. start = (pageIndex - 1) * pageSize + 1;
  746. end = start + pageSize;
  747. using (IDatabase db = DbFactory.Base("eapslave"))
  748. {
  749. var dal = new McaEventStatisticByDayDal(db);
  750. var total = dal.GetProgramCountFromMacCount(filter, subFilter);
  751. string errorinfo = string.Empty;
  752. var roles = dal.GetOutputsByProgram(filter, subFilter, start, pageSize, sortField, sortOrder, ref errorinfo);
  753. var extra = dal.GetExtra(filter, subFilter);
  754. if (!string.IsNullOrEmpty(errorinfo))
  755. {
  756. return new LayuiModel<OutputDto>
  757. {
  758. code = -1,
  759. count = 0,
  760. data = null,
  761. msg = errorinfo
  762. };
  763. }
  764. return new LayuiModel<OutputDto>
  765. {
  766. code = 1,
  767. count = total,
  768. data = roles,
  769. extra = extra,
  770. msg = ""
  771. };
  772. }
  773. }
  774. [HttpGet]
  775. public int GetCurrentOutput()
  776. {
  777. var errorinfo = string.Empty;
  778. var filter = $" and a.FDate>='{DateTime.Now.ToString("yyyy-MM-dd 00:00:00.000")}' and a.FDate<='{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}'";
  779. filter += " and f.FCode='WB'";
  780. using (IDatabase db = DbFactory.Base("eapslave"))
  781. {
  782. int count;
  783. int total;
  784. var dal = new McaEventStatisticByDayDal(db);
  785. var outputs = dal.GetMachineOutput(filter, out count, out total, ref errorinfo, 1, 10000);
  786. return outputs?.Sum(c => c.Count) ?? 0;
  787. }
  788. }
  789. [HttpGet]
  790. public LayuiModel<OeeEntity> GetOees(string filter, DateTime dateStart, DateTime dateEnd, int pageIndex = 1, int pageSize = 10)
  791. {
  792. using (IDatabase db = DbFactory.Base("eapslave"))
  793. {
  794. var dal = new McaEventStatisticByDayDal(db);
  795. var entities = dal.GetOeeEntities(filter, dateStart, dateEnd);
  796. var total = entities.Count();
  797. entities = entities.OrderBy(c => c.MacCode).Skip((pageIndex - 1) * pageSize).Take(pageSize);
  798. var layModel = new LayuiModel<OeeEntity>
  799. {
  800. code = 1,
  801. msg = string.Empty,
  802. count = total,
  803. data = entities
  804. };
  805. return layModel;
  806. }
  807. }
  808. }
  809. }