ScreenInterfaceDataController.cs 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057
  1. using log4net;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Ropin.Inspection.Api.Common;
  4. using Ropin.Inspection.Model.ViewModel;
  5. using Ropin.Inspection.Service.LGS.Interface;
  6. using System.Threading.Tasks;
  7. using System;
  8. using Ropin.Inspection.Service;
  9. using Ropin.Inspection.Service.Interface;
  10. using Ropin.Inspection.Model.ViewModel.LGS;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using Ropin.Inspection.Model.SearchModel.LGS;
  14. using Castle.Core.Internal;
  15. using Ropin.Inspection.Model.Common;
  16. using NPOI.SS.Formula.Functions;
  17. using Ropin.Inspection.Service.MTN.Interface;
  18. using Microsoft.EntityFrameworkCore.Metadata.Internal;
  19. namespace Ropin.Inspection.Api.Controllers.LGS
  20. {
  21. public class ScreenInterfaceDataController : BaseController
  22. {
  23. private readonly ILGSLargeScreenService _lGSLargeScreenService;
  24. private readonly ITmtnDevOpsService _TmtnDevOpsService;
  25. private readonly ITmtnRepairOrderService _TmtnRepairOrderService;
  26. private readonly ITispRecordService _tispRecordService;
  27. private readonly ITmtnAlarmOrderService _tmtnAlarmOrderService;
  28. private static readonly ILog log = LogManager.GetLogger(typeof(ScreenInterfaceDataController));
  29. /// <summary>
  30. /// 构造函数
  31. /// </summary>
  32. public ScreenInterfaceDataController(ILGSLargeScreenService lGSLargeScreenService, ITmtnDevOpsService TmtnDevOpsService, ITmtnRepairOrderService tmtnRepairOrderService, ITispRecordService tispRecordService, ITmtnAlarmOrderService tmtnAlarmOrderService)
  33. {
  34. _lGSLargeScreenService = lGSLargeScreenService;
  35. _TmtnDevOpsService = TmtnDevOpsService;
  36. _TmtnRepairOrderService = tmtnRepairOrderService;
  37. _tispRecordService = tispRecordService;
  38. _tmtnAlarmOrderService = tmtnAlarmOrderService;
  39. }
  40. /// <summary>
  41. /// 设备维保-柱状图统计[天]
  42. /// </summary>
  43. /// <param name="search"></param>
  44. /// <returns></returns>
  45. [HttpPost("DevOpsDaysStatisticsBarChart")]
  46. public async Task<ApiResult> DevOpsDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
  47. {
  48. if (search == null || string.IsNullOrEmpty(search.DevCode))
  49. {
  50. return new ApiResult(ReturnCode.GeneralError);
  51. }
  52. try
  53. {
  54. IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.DevOpsDaysStatistics(search.DevCode, search.Days);
  55. if (content != null && content.Count() > 0)
  56. {
  57. List<string> YData= new List<string>();
  58. //normal=4、abnormal=3
  59. //【approval=1;confirm=2;repairOn=3;complete=4;cancel=5;repairRework=6;repairCompleted=7】
  60. switch (search.DataType)
  61. {
  62. case "approval":
  63. case "1":
  64. YData = content.Select(d => d.Status1.ToString()).ToList();break;
  65. case "confirm":
  66. case "2":
  67. YData = content.Select(d => d.Status2.ToString()).ToList(); break;
  68. case "repairOn":
  69. case "abnormal":
  70. case "3":
  71. YData = content.Select(d => d.Status3.ToString()).ToList(); break;
  72. case "complete":
  73. case "normal":
  74. case "4":
  75. YData = content.Select(d => d.Status4.ToString()).ToList(); break;
  76. case "cancel":
  77. case "5":
  78. YData = content.Select(d => d.Status5.ToString()).ToList(); break;
  79. case "repairRework":
  80. case "6":
  81. YData = content.Select(d => d.Status6.ToString()).ToList(); break;
  82. case "repairCompleted":
  83. case "7":
  84. YData = content.Select(d => d.Status7.ToString()).ToList(); break;
  85. default:
  86. YData = content.Select(d => d.StatusTotal.ToString()).ToList(); break;
  87. }
  88. var data = new
  89. {
  90. y = YData,
  91. x = content.Select(d => d.SpecificDay).ToArray()
  92. };
  93. return new ApiResult<object>(data);
  94. }
  95. else
  96. {
  97. DateTime time = DateTime.Now;
  98. List<string> y = new List<string>();
  99. List<string> x = new List<string>();
  100. for (int i = search.Days; i >= 0; i--)
  101. {
  102. x.Add(time.AddDays(-i).ToString("yyyyMMdd"));
  103. y.Add("0");
  104. }
  105. var data = new
  106. {
  107. y = y,
  108. x = x
  109. };
  110. return new ApiResult<object>(data);
  111. }
  112. }
  113. catch (Exception ex)
  114. {
  115. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  116. }
  117. }
  118. /// <summary>
  119. /// 设备维修-柱状图统计[天]
  120. /// </summary>
  121. /// <param name="search"></param>
  122. /// <returns></returns>
  123. [HttpPost("RepairDaysStatisticsBarChart")]
  124. public async Task<ApiResult> RepairDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
  125. {
  126. if (search == null || string.IsNullOrEmpty(search.DevCode))
  127. {
  128. return new ApiResult(ReturnCode.GeneralError);
  129. }
  130. try
  131. {
  132. IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.RepairOrderDaysStatistics(search.DevCode, search.Days);
  133. if (content != null && content.Count() > 0)
  134. {
  135. List<string> YData = new List<string>();
  136. switch (search.DataType)
  137. {
  138. case "approval":
  139. case "1":
  140. YData = content.Select(d => d.Status1.ToString()).ToList(); break;
  141. case "confirm":
  142. case "2":
  143. YData = content.Select(d => d.Status2.ToString()).ToList(); break;
  144. case "repairOn":
  145. case "abnormal":
  146. case "3":
  147. YData = content.Select(d => d.Status3.ToString()).ToList(); break;
  148. case "complete":
  149. case "normal":
  150. case "4":
  151. YData = content.Select(d => d.Status4.ToString()).ToList(); break;
  152. case "cancel":
  153. case "5":
  154. YData = content.Select(d => d.Status5.ToString()).ToList(); break;
  155. case "repairRework":
  156. case "6":
  157. YData = content.Select(d => d.Status6.ToString()).ToList(); break;
  158. case "repairCompleted":
  159. case "7":
  160. YData = content.Select(d => d.Status7.ToString()).ToList(); break;
  161. default:
  162. YData = content.Select(d => d.StatusTotal.ToString()).ToList(); break;
  163. }
  164. var data = new
  165. {
  166. y = YData,
  167. x = content.Select(d => d.SpecificDay).ToArray()
  168. };
  169. return new ApiResult<object>(data);
  170. }
  171. else
  172. {
  173. DateTime time = DateTime.Now;
  174. List<string> y = new List<string>();
  175. List<string> x = new List<string>();
  176. for (int i = search.Days; i >= 0; i--)
  177. {
  178. x.Add(time.AddDays(-i).ToString("yyyyMMdd"));
  179. y.Add("0");
  180. }
  181. var data = new
  182. {
  183. y = y,
  184. x = x
  185. };
  186. return new ApiResult<object>(data);
  187. }
  188. }
  189. catch (Exception ex)
  190. {
  191. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  192. }
  193. }
  194. /// <summary>
  195. /// 设备点检-柱状图统计[天]
  196. /// </summary>
  197. /// <param name="search"></param>
  198. /// <returns></returns>
  199. [HttpPost("ISPDaysStatisticsBarChart")]
  200. public async Task<ApiResult> ISPDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
  201. {
  202. if (search == null || string.IsNullOrEmpty(search.DevCode))
  203. {
  204. return new ApiResult(ReturnCode.GeneralError);
  205. }
  206. try
  207. {
  208. IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.ISPDaysStatistics(search.DevCode, search.Days);
  209. if (content != null && content.Count() > 0)
  210. {
  211. List<string> YData = new List<string>();
  212. switch (search.DataType)
  213. {
  214. case "normal":
  215. case "1":
  216. YData = content.Select(d => d.Status1.ToString()).ToList(); break;
  217. case "abnormal":
  218. case "2":
  219. YData = content.Select(d => d.Status2.ToString()).ToList(); break;
  220. case "3":
  221. YData = content.Select(d => d.Status3.ToString()).ToList(); break;
  222. default:
  223. YData = content.Select(d => d.StatusTotal.ToString()).ToList(); break;
  224. }
  225. var data = new
  226. {
  227. y = YData,
  228. x = content.Select(d => d.SpecificDay).ToArray()
  229. };
  230. return new ApiResult<object>(data);
  231. }
  232. else
  233. {
  234. DateTime time = DateTime.Now;
  235. List<string> y = new List<string>();
  236. List<string> x = new List<string>();
  237. for (int i = search.Days; i >= 0; i--)
  238. {
  239. x.Add(time.AddDays(-i).ToString("yyyyMMdd"));
  240. y.Add("0");
  241. }
  242. var data = new
  243. {
  244. y = y,
  245. x = x
  246. };
  247. return new ApiResult<object>(data);
  248. }
  249. }
  250. catch (Exception ex)
  251. {
  252. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  253. }
  254. }
  255. /// <summary>
  256. /// 设备【维修、维保、点检】条形图统计[天]
  257. /// </summary>
  258. /// <param name="search"></param>
  259. /// <returns></returns>
  260. [HttpPost("DevOpsRepairISPDaysStatisticsBarChart")]
  261. public async Task<ApiResult> DevOpsRepairISPDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
  262. {
  263. if (search==null || string.IsNullOrEmpty(search.DevCode))
  264. {
  265. return new ApiResult(ReturnCode.GeneralError);
  266. }
  267. try
  268. {
  269. IEnumerable<DevOpsRepairISPDaysStatistics> content =null;
  270. switch (search.Days)
  271. {
  272. case 30: content = await _lGSLargeScreenService.DevOpsRepairISP30DaysStatistics(search.DevCode);break;
  273. case 7: content = await _lGSLargeScreenService.DevOpsRepairISP7DaysStatistics(search.DevCode); break;
  274. default:
  275. break;
  276. }
  277. if (content!=null&& content.Count()>0)
  278. {
  279. List<LargeScreenInterfaceBar> bar=new List<LargeScreenInterfaceBar>();
  280. bar.Add(new LargeScreenInterfaceBar
  281. {
  282. name = "维保",
  283. type = "bar",
  284. data = GetChartData(search.DataType, "维保", content)
  285. });
  286. bar.Add(new LargeScreenInterfaceBar
  287. {
  288. name = "维修",
  289. type = "bar",
  290. data = GetChartData(search.DataType, "维修", content)
  291. });
  292. bar.Add(new LargeScreenInterfaceBar
  293. {
  294. name = "点检",
  295. type = "bar",
  296. data = GetChartData(search.DataType, "点检", content)
  297. });
  298. var data = new
  299. {
  300. y= content.Select(d => d.SpecificDay).ToArray(),
  301. x = bar
  302. };
  303. return new ApiResult<object>(data);
  304. }
  305. else
  306. {
  307. DateTime time = DateTime.Now;
  308. List<string> y= new List<string>();
  309. List<string> x= new List<string>();
  310. for (int i = search.Days; i >= 0; i --)
  311. {
  312. y.Add(time.AddDays(-i).ToString("yyyyMMdd"));
  313. x.Add("0");
  314. }
  315. var data = new
  316. {
  317. y =y,
  318. x = new
  319. {
  320. name="未知",
  321. type="bar",
  322. data=x
  323. }
  324. };
  325. return new ApiResult<object>(data);
  326. }
  327. }
  328. catch (Exception ex)
  329. {
  330. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  331. }
  332. }
  333. /// <summary>
  334. /// 设备维保-各个状态的条形图统计[天]
  335. /// </summary>
  336. /// <param name="search"></param>
  337. /// <returns></returns>
  338. [HttpPost("DevOpsStatusDaysStatisticsBarChart")]
  339. public async Task<ApiResult> DevOpsStatusDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
  340. {
  341. if (search == null || string.IsNullOrEmpty(search.DevCode))
  342. {
  343. return new ApiResult(ReturnCode.GeneralError);
  344. }
  345. try
  346. {
  347. IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.DevOpsDaysStatistics(search.DevCode, search.Days);
  348. if (content != null && content.Count() > 0)
  349. {
  350. List<LargeScreenInterfaceBar> bar = new List<LargeScreenInterfaceBar>();
  351. bar.Add(new LargeScreenInterfaceBar
  352. {
  353. name = "维保上报",//Approval
  354. type = "bar",
  355. data = content.Select(x => x.Status1.ToString()).ToList()
  356. });
  357. bar.Add(new LargeScreenInterfaceBar
  358. {
  359. name = "维保确认",//Confirm
  360. type = "bar",
  361. data = content.Select(x => x.Status2.ToString()).ToList()
  362. });
  363. bar.Add(new LargeScreenInterfaceBar
  364. {
  365. name = "正在维保",//RepairOn
  366. type = "bar",
  367. data = content.Select(x => x.Status3.ToString()).ToList()
  368. });
  369. bar.Add(new LargeScreenInterfaceBar
  370. {
  371. name = "维保完成",//Complete
  372. type = "bar",
  373. data = content.Select(x => x.Status4.ToString()).ToList()
  374. });
  375. bar.Add(new LargeScreenInterfaceBar
  376. {
  377. name = "维保取消",//Cancel
  378. type = "bar",
  379. data = content.Select(x => x.Status5.ToString()).ToList()
  380. });
  381. bar.Add(new LargeScreenInterfaceBar
  382. {
  383. name = "维保返工",//RepairRework
  384. type = "bar",
  385. data = content.Select(x => x.Status6.ToString()).ToList()
  386. });
  387. bar.Add(new LargeScreenInterfaceBar
  388. {
  389. name = "维保完成确认",//RepairCompleted
  390. type = "bar",
  391. data = content.Select(x => x.Status7.ToString()).ToList()
  392. });
  393. bar.Add(new LargeScreenInterfaceBar
  394. {
  395. name = "总数",
  396. type = "bar",
  397. data = content.Select(x => x.StatusTotal.ToString()).ToList()
  398. });
  399. var data = new
  400. {
  401. y = content.Select(d => d.SpecificDay).ToArray(),
  402. x = bar
  403. };
  404. return new ApiResult<object>(data);
  405. }
  406. else
  407. {
  408. DateTime time = DateTime.Now;
  409. List<string> y = new List<string>();
  410. List<string> x = new List<string>();
  411. for (int i = search.Days; i >= 0; i--)
  412. {
  413. y.Add(time.AddDays(-i).ToString("yyyyMMdd"));
  414. x.Add("0");
  415. }
  416. var data = new
  417. {
  418. y = y,
  419. x = new
  420. {
  421. name = "未知",
  422. type = "bar",
  423. data = x
  424. }
  425. };
  426. return new ApiResult<object>(data);
  427. }
  428. }
  429. catch (Exception ex)
  430. {
  431. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  432. }
  433. }
  434. /// <summary>
  435. /// 设备【维修、维保、点检】堆叠条形图统计[天]
  436. /// </summary>
  437. /// <param name="search"></param>
  438. /// <returns></returns>
  439. [HttpPost("DevOpsRepairISPDaysStatisticsStackBarChart")]
  440. public async Task<ApiResult> DevOpsRepairISPDaysStatisticsStackBarChart(LargeScreenInterfaceDataSearch search)
  441. {
  442. if (search == null || string.IsNullOrEmpty(search.DevCode))
  443. {
  444. return new ApiResult(ReturnCode.GeneralError);
  445. }
  446. try
  447. {
  448. IEnumerable<DevOpsRepairISPDaysStatistics> content = null;
  449. switch (search.Days)
  450. {
  451. case 30: content = await _lGSLargeScreenService.DevOpsRepairISP30DaysStatistics(search.DevCode); break;
  452. case 7: content = await _lGSLargeScreenService.DevOpsRepairISP7DaysStatistics(search.DevCode); break;
  453. default:
  454. break;
  455. }
  456. if (content != null && content.Count() > 0)
  457. {
  458. List<LargeScreenInterfaceStackBar> bar = new List<LargeScreenInterfaceStackBar>();
  459. bar.Add(new LargeScreenInterfaceStackBar
  460. {
  461. name = "维保",
  462. type = "bar",
  463. stack= "total",
  464. label=new LabelStackBarModel { show= search.LableIsShow },
  465. data = GetChartData(search.DataType, "维保", content)
  466. });
  467. bar.Add(new LargeScreenInterfaceStackBar
  468. {
  469. name = "维修",
  470. type = "bar",
  471. stack = "total",
  472. label = new LabelStackBarModel { show = search.LableIsShow },
  473. data = GetChartData(search.DataType, "维修", content)
  474. });
  475. bar.Add(new LargeScreenInterfaceStackBar
  476. {
  477. name = "点检",
  478. type = "bar",
  479. stack = "total",
  480. label = new LabelStackBarModel { show = search.LableIsShow },
  481. data = GetChartData(search.DataType, "点检", content)
  482. });
  483. var data = new
  484. {
  485. y = content.Select(d => d.SpecificDay).ToArray(),
  486. x = bar
  487. };
  488. return new ApiResult<object>(data);
  489. }
  490. else
  491. {
  492. DateTime time = DateTime.Now;
  493. List<string> y = new List<string>();
  494. List<string> x = new List<string>();
  495. for (int i = search.Days; i >= 0; i--)
  496. {
  497. y.Add(time.AddDays(-i).ToString("yyyyMMdd"));
  498. x.Add("0");
  499. }
  500. var data = new
  501. {
  502. y = y,
  503. x = new
  504. {
  505. name = "未知",
  506. type = "bar",
  507. stack = "total",
  508. label = new LabelStackBarModel { show = true },
  509. data = x
  510. }
  511. };
  512. return new ApiResult<object>(data);
  513. }
  514. }
  515. catch (Exception ex)
  516. {
  517. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  518. }
  519. }
  520. /// <summary>
  521. /// 设备【维修、维保、点检 】折线图统计[天]
  522. /// </summary>
  523. /// <param name="search"></param>
  524. /// <returns></returns>
  525. [HttpPost("DevOpsRepairISPDaysStatisticsLineChart")]
  526. public async Task<ApiResult> DevOpsRepairISPDaysStatisticsLineChart(LargeScreenInterfaceDataSearch search)
  527. {
  528. if (search == null || string.IsNullOrEmpty(search.DevCode))
  529. {
  530. return new ApiResult(ReturnCode.GeneralError);
  531. }
  532. try
  533. {
  534. IEnumerable<DevOpsRepairISPDaysStatistics> content = null;
  535. string type = "line";string stack = "Total";
  536. switch (search.Days)
  537. {
  538. case 30: content = await _lGSLargeScreenService.DevOpsRepairISP30DaysStatistics(search.DevCode); break;
  539. case 7: content = await _lGSLargeScreenService.DevOpsRepairISP7DaysStatistics(search.DevCode); break;
  540. default:
  541. break;
  542. }
  543. if (content != null && content.Count() > 0)
  544. {
  545. List<LargeScreenInterfaceLine> bar = new List<LargeScreenInterfaceLine>();
  546. bar.Add(new LargeScreenInterfaceLine
  547. {
  548. name = "维保",
  549. type = type,
  550. stack = stack,
  551. data = GetChartData(search.DataType, "维保", content)
  552. });
  553. bar.Add(new LargeScreenInterfaceLine
  554. {
  555. name = "维修",
  556. type = type,
  557. stack = stack,
  558. data = GetChartData(search.DataType, "维修", content)
  559. });
  560. bar.Add(new LargeScreenInterfaceLine
  561. {
  562. name = "点检",
  563. type = type,
  564. stack = stack,
  565. data = GetChartData(search.DataType, "点检", content)
  566. });
  567. var data = new
  568. {
  569. y = bar,
  570. x = content.Select(d => d.SpecificDay).ToArray()
  571. };
  572. return new ApiResult<object>(data);
  573. }
  574. else
  575. {
  576. DateTime time = DateTime.Now;
  577. List<string> y = new List<string>();
  578. List<string> x = new List<string>();
  579. for (int i = search.Days; i >= 0; i--)
  580. {
  581. x.Add(time.AddDays(-i).ToString("yyyyMMdd"));
  582. y.Add("0");
  583. }
  584. var data = new
  585. {
  586. y = new
  587. {
  588. name = "未知",
  589. type = type,
  590. stack = stack,
  591. data = y
  592. },
  593. x = x
  594. };
  595. return new ApiResult<object>(data);
  596. }
  597. }
  598. catch (Exception ex)
  599. {
  600. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  601. }
  602. }
  603. /// <summary>
  604. /// 根据数据源,类型、名称获取的数组形式的数据
  605. /// </summary>
  606. /// <param name="type">数据类型</param>
  607. /// <param name="name">数据名称</param>
  608. /// <param name="content">【点检、维保、维修】根据天获取数据统计的数据源</param>
  609. /// <returns></returns>
  610. private List<string> GetChartData(string type,string name, IEnumerable<DevOpsRepairISPDaysStatistics> content)
  611. {
  612. List<string> arrayStr=new List<string>();
  613. if (name=="维保")
  614. {
  615. switch (type)
  616. {
  617. case "complete":
  618. case "normal":
  619. case "4": arrayStr = content.Select(d => d.DevOpsNormal.ToString()).ToList(); break;
  620. case "repairOn":
  621. case "abnormal":
  622. case "3": arrayStr = content.Select(d => d.DevOpsAbnormal.ToString()).ToList(); break;
  623. default: arrayStr = content.Select(d => d.DevOpsTotal.ToString()).ToList(); break;
  624. }
  625. }
  626. else if (name=="维修")
  627. {
  628. switch (type)
  629. {
  630. case "complete":
  631. case "normal":
  632. case "4": arrayStr = content.Select(d => d.RepairOrderNormal.ToString()).ToList(); break;
  633. case "repairOn":
  634. case "abnormal":
  635. case "3": arrayStr = content.Select(d => d.RepairOrderAbnormal.ToString()).ToList(); break;
  636. default: arrayStr = content.Select(d => d.RepairOrderTotal.ToString()).ToList(); break;
  637. }
  638. }
  639. else if (name == "点检")
  640. {
  641. switch (type)
  642. {
  643. case "complete":
  644. case "normal":
  645. case "4": arrayStr = content.Select(d => d.ISPNormal.ToString()).ToList(); break;
  646. case "repairOn":
  647. case "abnormal":
  648. case "3": arrayStr = content.Select(d => d.ISPAbnormal.ToString()).ToList(); break;
  649. default: arrayStr = content.Select(d => d.ISPTotal.ToString()).ToList(); break;
  650. }
  651. }
  652. return arrayStr;
  653. }
  654. /// <summary>
  655. /// 报警工单状态【1、2、3、4、5、6、7】-饼图统计
  656. /// </summary>
  657. /// <param name="search"></param>
  658. /// <returns></returns>
  659. [HttpPost("AlarmOrderStatusStatisticsMonthPieChart")]
  660. public async Task<ApiResult> AlarmOrderStatusStatisticsMonthPieChart(LargeScreenInterfaceDataSearch search)
  661. {
  662. if (search == null || string.IsNullOrEmpty(search.DevCode))
  663. {
  664. return new ApiResult(ReturnCode.GeneralError);
  665. }
  666. try
  667. {
  668. var content = await _tmtnAlarmOrderService.GetAlarmOrderStatisticsAsync(search.DevCode,search.MonthNum);
  669. List<LargeScreenInterfacePie> data = new List<LargeScreenInterfacePie>();
  670. if (content != null)
  671. {
  672. if (search.StatusArray!=null&&search.StatusArray.Count>0)
  673. {
  674. foreach (var item in search.StatusArray)
  675. {
  676. switch (item)
  677. {
  678. case 1: data.Add(new LargeScreenInterfacePie { name = "报警上报", value = content.Approval.ToString(), });break;
  679. case 2: data.Add(new LargeScreenInterfacePie { name = "报警确认", value = content.Confirm.ToString(), }); break;
  680. case 3: data.Add(new LargeScreenInterfacePie { name = "报警处理", value = content.RepairOn.ToString(), });break;
  681. case 4: data.Add(new LargeScreenInterfacePie { name = "报警审批", value = content.Complete.ToString(), }); break;
  682. case 5: data.Add(new LargeScreenInterfacePie { name = "报警取消", value = content.Cancel.ToString(), }); break;
  683. case 6: data.Add(new LargeScreenInterfacePie { name = "报警返工", value = content.RepairRework.ToString(), }); break;
  684. case 7: data.Add(new LargeScreenInterfacePie { name = "报警完成审批", value = content.RepairCompleted.ToString(), }); break;
  685. default: data.Add(new LargeScreenInterfacePie { name = "其它"+ item, value = "0", }); break;
  686. }
  687. }
  688. }
  689. else
  690. {
  691. data.Add(new LargeScreenInterfacePie { name = "报警上报", value = content.Approval.ToString(), });//1上报处理报警
  692. data.Add(new LargeScreenInterfacePie { name = "报警确认", value = content.Confirm.ToString(), });//2报警确认
  693. data.Add(new LargeScreenInterfacePie { name = "报警处理", value = content.RepairOn.ToString(), });//3正在处理报警
  694. data.Add(new LargeScreenInterfacePie { name = "报警审批", value = content.Complete.ToString(), });//4报警处理完成
  695. data.Add(new LargeScreenInterfacePie { name = "报警取消", value = content.Cancel.ToString(), });//5报警取消
  696. data.Add(new LargeScreenInterfacePie { name = "报警返工", value = content.RepairRework.ToString(), });//6报警处理返工
  697. data.Add(new LargeScreenInterfacePie { name = "报警完成审批", value = content.RepairCompleted.ToString(), });//7报警处理完成确认
  698. }
  699. }
  700. else
  701. {
  702. data.Add(new LargeScreenInterfacePie { name = "未知", value = "0" });
  703. }
  704. return new ApiResult<object>(data);
  705. }
  706. catch (Exception ex)
  707. {
  708. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  709. }
  710. }
  711. /// <summary>
  712. /// 维保状态【1、2、3、4、5、6、7】-饼图统计
  713. /// </summary>
  714. /// <param name="search"></param>
  715. /// <returns></returns>
  716. [HttpPost("GeDevOpsStatisticsMonthPieAsync")]
  717. public async Task<ApiResult> GeDevOpsStatisticsMonthPieAsync(LargeScreenInterfaceDataSearch search)
  718. {
  719. if (search == null || string.IsNullOrEmpty(search.DevCode))
  720. {
  721. return new ApiResult(ReturnCode.GeneralError);
  722. }
  723. try
  724. {
  725. var content = await _lGSLargeScreenService.GeDevOpsStatisticsMonthPieAsync(search.DevCode, search.MonthNum);
  726. List<LargeScreenInterfacePie> data = new List<LargeScreenInterfacePie>();
  727. if (content != null)
  728. {
  729. if (search.StatusArray != null && search.StatusArray.Count > 0)
  730. {
  731. foreach (var item in search.StatusArray)
  732. {
  733. switch (item)
  734. {
  735. case 1: data.Add(new LargeScreenInterfacePie { name = "维保上报", value = content.Approval.ToString(), }); break;
  736. case 2: data.Add(new LargeScreenInterfacePie { name = "维保确认", value = content.Confirm.ToString(), }); break;
  737. case 3: data.Add(new LargeScreenInterfacePie { name = "维保处理", value = content.RepairOn.ToString(), }); break;
  738. case 4: data.Add(new LargeScreenInterfacePie { name = "维保审批", value = content.Complete.ToString(), }); break;
  739. case 5: data.Add(new LargeScreenInterfacePie { name = "维保取消", value = content.Cancel.ToString(), }); break;
  740. case 6: data.Add(new LargeScreenInterfacePie { name = "维保返工", value = content.RepairRework.ToString(), }); break;
  741. case 7: data.Add(new LargeScreenInterfacePie { name = "维保完成审批", value = content.RepairCompleted.ToString(), }); break;
  742. default: data.Add(new LargeScreenInterfacePie { name = "其它" + item, value = "0", }); break;
  743. }
  744. }
  745. }
  746. else
  747. {
  748. data.Add(new LargeScreenInterfacePie { name = "维保上报", value = content.Approval.ToString(), });//上报维保(维保上报)
  749. data.Add(new LargeScreenInterfacePie { name = "维保确认", value = content.Confirm.ToString(), });//维保确认
  750. data.Add(new LargeScreenInterfacePie { name = "维保处理", value = content.RepairOn.ToString(), });//正在维保
  751. data.Add(new LargeScreenInterfacePie { name = "维保审批", value = content.Complete.ToString(), });//维保完成
  752. data.Add(new LargeScreenInterfacePie { name = "维保取消", value = content.Cancel.ToString(), });//维保取消
  753. data.Add(new LargeScreenInterfacePie { name = "维保返工", value = content.RepairRework.ToString(), });//维保修复(维保返工)
  754. data.Add(new LargeScreenInterfacePie { name = "维保完成审批", value = content.RepairCompleted.ToString(), });//维保完成确认
  755. }
  756. }
  757. else
  758. {
  759. data.Add(new LargeScreenInterfacePie { name = "未知", value = "0" });
  760. }
  761. return new ApiResult<object>(data);
  762. }
  763. catch (Exception ex)
  764. {
  765. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  766. }
  767. }
  768. /// <summary>
  769. /// 维修状态【1、2、3、4、5、6、7】-饼图统计
  770. /// </summary>
  771. /// <param name="search"></param>
  772. /// <returns></returns>
  773. [HttpPost("GeRepairOrderStatisticsMonthPieAsync")]
  774. public async Task<ApiResult> GeRepairOrderStatisticsMonthPieAsync(LargeScreenInterfaceDataSearch search)
  775. {
  776. if (search == null || string.IsNullOrEmpty(search.DevCode))
  777. {
  778. return new ApiResult(ReturnCode.GeneralError);
  779. }
  780. try
  781. {
  782. var content = await _lGSLargeScreenService.GeRepairOrderStatisticsMonthPieAsync(search.DevCode, search.MonthNum);
  783. List<LargeScreenInterfacePie> data = new List<LargeScreenInterfacePie>();
  784. if (content != null)
  785. {
  786. if (search.StatusArray != null && search.StatusArray.Count > 0)
  787. {
  788. foreach (var item in search.StatusArray)
  789. {
  790. switch (item)
  791. {
  792. case 1: data.Add(new LargeScreenInterfacePie { name = "故障上报", value = content.Approval.ToString(), }); break;
  793. case 2: data.Add(new LargeScreenInterfacePie { name = "维修确认", value = content.Confirm.ToString(), }); break;
  794. case 3: data.Add(new LargeScreenInterfacePie { name = "维修处理", value = content.RepairOn.ToString(), }); break;
  795. case 4: data.Add(new LargeScreenInterfacePie { name = "维修审批", value = content.Complete.ToString(), }); break;
  796. case 5: data.Add(new LargeScreenInterfacePie { name = "维修取消", value = content.Cancel.ToString(), }); break;
  797. case 6: data.Add(new LargeScreenInterfacePie { name = "维修返工", value = content.RepairRework.ToString(), }); break;
  798. case 7: data.Add(new LargeScreenInterfacePie { name = "维修完成审批", value = content.RepairCompleted.ToString(), }); break;
  799. default: data.Add(new LargeScreenInterfacePie { name = "其它" + item, value = "0", }); break;
  800. }
  801. }
  802. }
  803. else
  804. {
  805. data.Add(new LargeScreenInterfacePie { name = "故障上报", value = content.Approval.ToString(), });//报修(故障上报)
  806. data.Add(new LargeScreenInterfacePie { name = "维修确认", value = content.Confirm.ToString(), });//维修确认
  807. data.Add(new LargeScreenInterfacePie { name = "维修处理", value = content.RepairOn.ToString(), });//正在维修
  808. data.Add(new LargeScreenInterfacePie { name = "维修审批", value = content.Complete.ToString(), });//维修完成
  809. data.Add(new LargeScreenInterfacePie { name = "维修取消", value = content.Cancel.ToString(), });//维修取消
  810. data.Add(new LargeScreenInterfacePie { name = "维修返工", value = content.RepairRework.ToString(), });//故障修复(维修返工)
  811. data.Add(new LargeScreenInterfacePie { name = "维修完成审批", value = content.RepairCompleted.ToString(), });//维修完成确认
  812. }
  813. }
  814. else
  815. {
  816. data.Add(new LargeScreenInterfacePie { name = "未知", value = "0" });
  817. }
  818. return new ApiResult<object>(data);
  819. }
  820. catch (Exception ex)
  821. {
  822. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  823. }
  824. }
  825. /// <summary>
  826. /// 设备维保-统计[天]-列表
  827. /// </summary>
  828. /// <param name="search"></param>
  829. /// <returns></returns>
  830. [HttpPost("DevOpsDaysStatisticsList")]
  831. public async Task<ApiResult> DevOpsDaysStatisticsList(LargeScreenInterfaceDataSearch search)
  832. {
  833. if (search == null || string.IsNullOrEmpty(search.DevCode))
  834. {
  835. return new ApiResult(ReturnCode.GeneralError);
  836. }
  837. try
  838. {
  839. IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.DevOpsDaysStatistics(search.DevCode, search.Days);
  840. if (search.Columns == null || search.Columns.Count==0)
  841. {
  842. search.Columns = new List<LargeScreenInterfaceListColumns>();
  843. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "日期", key = "SpecificDay" });
  844. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保上报", key = "Approval" });
  845. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保确认", key = "Confirm" });
  846. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "正在维保", key = "RepairOn" });
  847. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保完成", key = "Complete" });
  848. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保取消", key = "Cancel" });
  849. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保返工", key = "RepairRework" });
  850. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保完成确认", key = "RepairCompleted" });
  851. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "总数", key = "DevOpsTotal" });
  852. }
  853. List<Dictionary<string, string>> datas = new List<Dictionary<string, string>>();
  854. if (content != null && content.Count() > 0)
  855. {
  856. foreach (var item in content)
  857. {
  858. if (item!=null)
  859. {
  860. Dictionary<string, string> rows = new Dictionary<string, string>();
  861. foreach (var index in search.Columns)
  862. {
  863. switch (index.key)
  864. {
  865. case "SpecificDay": rows.Add(index.key, item.SpecificDay); break;
  866. case "Approval": rows.Add(index.key, item.Status1.ToString()); break;
  867. case "Confirm": rows.Add(index.key, item.Status2.ToString()); break;
  868. case "RepairOn": rows.Add(index.key, item.Status3.ToString()); break;
  869. case "Complete": rows.Add(index.key, item.Status4.ToString()); break;
  870. case "Cancel": rows.Add(index.key, item.Status5.ToString()); break;
  871. case "RepairRework": rows.Add(index.key, item.Status6.ToString()); break;
  872. case "RepairCompleted": rows.Add(index.key, item.Status7.ToString()); break;
  873. case "DevOpsTotal": rows.Add(index.key, item.StatusTotal.ToString()); break;
  874. default: rows.Add(index.key,"未知"); break;
  875. }
  876. }
  877. datas.Add(rows);
  878. }
  879. }
  880. }
  881. else
  882. {
  883. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "未知", key = "null" });
  884. Dictionary<string, string> rows = new Dictionary<string, string>();
  885. rows.Add("null", "未知");
  886. datas.Add(rows);
  887. }
  888. var data = new
  889. {
  890. columns = search.Columns,
  891. data = datas
  892. };
  893. return new ApiResult<object>(data);
  894. }
  895. catch (Exception ex)
  896. {
  897. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  898. }
  899. }
  900. /// <summary>
  901. /// 设备维修-统计[天]-列表
  902. /// </summary>
  903. /// <param name="search"></param>
  904. /// <returns></returns>
  905. [HttpPost("RepairOrderDaysStatisticsList")]
  906. public async Task<ApiResult> RepairOrderDaysStatisticsList(LargeScreenInterfaceDataSearch search)
  907. {
  908. if (search == null || string.IsNullOrEmpty(search.DevCode))
  909. {
  910. return new ApiResult(ReturnCode.GeneralError);
  911. }
  912. try
  913. {
  914. IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.RepairOrderDaysStatistics(search.DevCode, search.Days);
  915. if (search.Columns == null || search.Columns.Count == 0)
  916. {
  917. search.Columns = new List<LargeScreenInterfaceListColumns>();
  918. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "日期", key = "SpecificDay" });
  919. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修上报", key = "Approval" });
  920. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修确认", key = "Confirm" });
  921. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "正在维修", key = "RepairOn" });
  922. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修完成", key = "Complete" });
  923. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修取消", key = "Cancel" });
  924. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修返工", key = "RepairRework" });
  925. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修完成确认", key = "RepairCompleted" });
  926. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "总数", key = "Total" });
  927. }
  928. List<Dictionary<string, string>> datas = new List<Dictionary<string, string>>();
  929. if (content != null && content.Count() > 0)
  930. {
  931. foreach (var item in content)
  932. {
  933. if (item != null)
  934. {
  935. Dictionary<string, string> rows = new Dictionary<string, string>();
  936. foreach (var index in search.Columns)
  937. {
  938. switch (index.key)
  939. {
  940. case "SpecificDay": rows.Add(index.key, item.SpecificDay); break;
  941. case "Approval": rows.Add(index.key, item.Status1.ToString()); break;
  942. case "Confirm": rows.Add(index.key, item.Status2.ToString()); break;
  943. case "RepairOn": rows.Add(index.key, item.Status3.ToString()); break;
  944. case "Complete": rows.Add(index.key, item.Status4.ToString()); break;
  945. case "Cancel": rows.Add(index.key, item.Status5.ToString()); break;
  946. case "RepairRework": rows.Add(index.key, item.Status6.ToString()); break;
  947. case "RepairCompleted": rows.Add(index.key, item.Status7.ToString()); break;
  948. case "Total": rows.Add(index.key, item.StatusTotal.ToString()); break;
  949. default: rows.Add(index.key, "未知"); break;
  950. }
  951. }
  952. datas.Add(rows);
  953. }
  954. }
  955. }
  956. else
  957. {
  958. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "未知", key = "null" });
  959. Dictionary<string, string> rows = new Dictionary<string, string>();
  960. rows.Add("null", "未知");
  961. datas.Add(rows);
  962. }
  963. var data = new
  964. {
  965. columns = search.Columns,
  966. data = datas
  967. };
  968. return new ApiResult<object>(data);
  969. }
  970. catch (Exception ex)
  971. {
  972. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  973. }
  974. }
  975. /// <summary>
  976. /// 设备点检-统计[天]-列表
  977. /// </summary>
  978. /// <param name="search"></param>
  979. /// <returns></returns>
  980. [HttpPost("ISPDaysStatisticsList")]
  981. public async Task<ApiResult> ISPDaysStatisticsList(LargeScreenInterfaceDataSearch search)
  982. {
  983. if (search == null || string.IsNullOrEmpty(search.DevCode))
  984. {
  985. return new ApiResult(ReturnCode.GeneralError);
  986. }
  987. try
  988. {
  989. IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.ISPDaysStatistics(search.DevCode, search.Days);
  990. if (search.Columns == null || search.Columns.Count == 0)
  991. {
  992. search.Columns = new List<LargeScreenInterfaceListColumns>();
  993. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "日期", key = "SpecificDay" });
  994. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "正常", key = "Normal" });
  995. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "异常", key = "Abnormal" });
  996. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "确认异常", key = "ConfirmAbnormal" });
  997. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "总数", key = "Total" });
  998. }
  999. List<Dictionary<string, string>> datas = new List<Dictionary<string, string>>();
  1000. if (content != null && content.Count() > 0)
  1001. {
  1002. foreach (var item in content)
  1003. {
  1004. if (item != null)
  1005. {
  1006. Dictionary<string, string> rows = new Dictionary<string, string>();
  1007. foreach (var index in search.Columns)
  1008. {
  1009. switch (index.key)
  1010. {
  1011. case "SpecificDay": rows.Add(index.key, item.SpecificDay); break;
  1012. case "Normal": rows.Add(index.key, item.Status1.ToString()); break;
  1013. case "Abnormal": rows.Add(index.key, item.Status2.ToString()); break;
  1014. case "ConfirmAbnormal": rows.Add(index.key, item.Status3.ToString()); break;
  1015. case "Total": rows.Add(index.key, item.StatusTotal.ToString()); break;
  1016. default: rows.Add(index.key, "未知"); break;
  1017. }
  1018. }
  1019. datas.Add(rows);
  1020. }
  1021. }
  1022. }
  1023. else
  1024. {
  1025. search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "未知", key = "null" });
  1026. Dictionary<string, string> rows = new Dictionary<string, string>();
  1027. rows.Add("null", "未知");
  1028. datas.Add(rows);
  1029. }
  1030. var data = new
  1031. {
  1032. columns = search.Columns,
  1033. data = datas
  1034. };
  1035. return new ApiResult<object>(data);
  1036. }
  1037. catch (Exception ex)
  1038. {
  1039. return new ApiResult(ReturnCode.GeneralError, ex.Message);
  1040. }
  1041. }
  1042. }
  1043. }