Dashboard.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace app\admin\controller\equipment;
  3. use app\common\controller\Backend;
  4. /**
  5. * 看板中心
  6. *
  7. * @icon fa fa-circle-o
  8. */
  9. class Dashboard extends Backend
  10. {
  11. protected $model = null;
  12. public function _initialize()
  13. {
  14. parent::_initialize();
  15. }
  16. /**
  17. * 查看
  18. */
  19. public function index()
  20. {
  21. $archiveModel = new \app\admin\model\equipment\Archive();
  22. $equipmentModel = new \app\admin\model\equipment\Equipment();
  23. $planModel = new \app\admin\model\equipment\Plan();
  24. $planTaskModel = new \app\admin\model\equipment\PlanTask();
  25. $repairModel = new \app\admin\model\equipment\Repair();
  26. $archiveCount = $archiveModel->count();
  27. $equipmentCount = $equipmentModel->count();
  28. $equipmentNormalCount = $equipmentModel->where(['work_status' => 'normal'])->count();
  29. $equipmentSicknessCount = $equipmentModel->where(['work_status' => 'sickness'])->count();
  30. $equipmentRepairingCount = $equipmentModel->where(['work_status' => 'repairing'])->count();
  31. $equipmentScrappedCount = $equipmentModel->where(['work_status' => 'scrapped'])->count();
  32. $inspectionCount = $planModel->where(['type' => 'inspection'])->count();
  33. $maintenanceCount = $planModel->where(['type' => 'maintenance'])->count();
  34. // 今日巡检/保养
  35. $todayBegin = date('Y-m-d 00:00:00', time());
  36. $todayEnd = date('Y-m-d 23:59:59', time());
  37. $inspectionTodayIds = $planModel->where(['type' => 'inspection'])->whereTime('last_duetime', '>=', $todayEnd)->column('id');
  38. $maintenanceTodayIds = $planModel->where(['type' => 'maintenance'])->whereTime('last_duetime', '>=', $todayEnd)->column('id');
  39. $inspectionTodayPending = $planTaskModel->whereIn('plan_id', $inspectionTodayIds)->where(['status' => 'pending'])->whereTime('starttime', '<=', $todayBegin)->whereTime('duetime', '>=', $todayEnd)->count();
  40. $inspectionTodayFinish = $planTaskModel->whereIn('plan_id', $inspectionTodayIds)->where(['status' => 'finish'])->whereTime('updatetime', 'today')->count();
  41. $maintenanceTodayPending = $planTaskModel->whereIn('plan_id', $maintenanceTodayIds)->where(['status' => 'pending'])->whereTime('starttime', '<=', $todayBegin)->whereTime('duetime', '>=', $todayEnd)->count();
  42. $maintenanceTodayFinish = $planTaskModel->whereIn('plan_id', $maintenanceTodayIds)->where(['status' => 'finish'])->whereTime('updatetime', 'today')->count();
  43. // 维修工单
  44. $repairRegisteredCount = $repairModel->where(['status' => 'registered'])->count();
  45. $repairMonthCount = $repairModel->where(['status' => 'registered'])->whereTime('createtime', 'month')->count();
  46. // 近7天统计数据
  47. $days = [];
  48. $showDays = [];
  49. for ($i = 6; $i >= 0; $i--) {
  50. $days[] = date('Y-m-d', strtotime(' -' . $i . 'day'));
  51. $showDays[] = date('m/d', strtotime(' -' . $i . 'day'));
  52. }
  53. $repairWeekCreate = [];
  54. $inspectionWeekFinish = [];
  55. $maintenanceWeekFinish = [];
  56. $inspectionWeekIds = $planModel->where(['type' => 'inspection'])->whereTime('last_duetime', '>=', $todayEnd)->column('id');
  57. $maintenanceWeekIds = $planModel->where(['type' => 'maintenance'])->whereTime('last_duetime', '>=', $todayEnd)->column('id');
  58. foreach ($days as $day) {
  59. $beginTime = $day . ' 00:00:00';
  60. $endTime = $day . ' 23:59:59';
  61. $repairWeekCreate[$day] = $repairModel->whereTime('createtime', 'between', [$beginTime, $endTime])->count();
  62. $inspectionWeekFinish[$day] = $planTaskModel->whereIn('plan_id', $inspectionWeekIds)->where(['status' => 'finish'])->whereTime('updatetime', 'between', [$beginTime, $endTime])->count();
  63. $maintenanceWeekFinish[$day] = $planTaskModel->whereIn('plan_id', $maintenanceWeekIds)->where(['status' => 'finish'])->whereTime('updatetime', 'between', [$beginTime, $endTime])->count();
  64. }
  65. // 本月故障原因统计
  66. $failureCauseCount = $repairModel->whereIn('status', ['repaired', 'scrapped'])->whereTime('createtime', 'month')->group('failure_cause_id')->column('failure_cause_id, count(*)');
  67. $failureCauseModel = new \app\admin\model\equipment\FailureCause();
  68. $failureCauseList = $failureCauseModel->whereIn('id', array_keys($failureCauseCount))->column('id, name');
  69. $failureCause = [];
  70. $failureCauseNames = [];
  71. foreach ($failureCauseCount as $failureCauseId => $count) {
  72. if ($failureCauseId == 0) continue;
  73. $failureCauseName = $failureCauseList[$failureCauseId];
  74. $failureCauseNames[] = $failureCauseName;
  75. $failureCause[] = [
  76. 'value' => $count,
  77. 'name' => $failureCauseName
  78. ];
  79. }
  80. $statisticChart = [
  81. 'weekDate' => $showDays,
  82. 'repairWeekData' => array_values($repairWeekCreate),
  83. 'inspectionWeekData' => array_values($inspectionWeekFinish),
  84. 'maintenanceWeekData' => array_values($maintenanceWeekFinish),
  85. 'failureCauseNames' => $failureCauseNames,
  86. 'failureCause' => $failureCause,
  87. ];
  88. $statisticCount = [
  89. 'archiveCount' => $archiveCount,
  90. 'equipmentCount' => $equipmentCount,
  91. 'equipmentNormalCount' => $equipmentNormalCount,
  92. 'equipmentSicknessCount' => $equipmentSicknessCount,
  93. 'equipmentRepairingCount' => $equipmentRepairingCount,
  94. 'equipmentScrappedCount' => $equipmentScrappedCount,
  95. 'inspectionCount' => $inspectionCount,
  96. 'maintenanceCount' => $maintenanceCount,
  97. 'inspectionTodayPending' => $inspectionTodayPending,
  98. 'inspectionTodayFinish' => $inspectionTodayFinish,
  99. 'maintenanceTodayPending' => $maintenanceTodayPending,
  100. 'maintenanceTodayFinish' => $maintenanceTodayFinish,
  101. 'repairRegisteredCount' => $repairRegisteredCount,
  102. 'repairMonthCount' => $repairMonthCount,
  103. ];
  104. $this->view->assign('statisticCount', $statisticCount);
  105. $this->assignconfig('statisticChart', $statisticChart);
  106. return $this->view->fetch();
  107. }
  108. }