ControlPanelController.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Owner;
  4. use App\Services\CheckActiveMenuService;
  5. use App\Services\LaborReportsCountingRecordService;
  6. use App\Services\NewOrderCountingRecordService;
  7. use App\Services\RealtimePendingOrdersService;
  8. use App\Services\UserService;
  9. use App\User;
  10. use Carbon\Carbon;
  11. use DebugBar\DataFormatter\DataFormatter;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\Cache;
  14. class ControlPanelController extends Controller
  15. {
  16. /**
  17. * ControlPanelController constructor.
  18. */
  19. public function __construct()
  20. {
  21. $this->middleware('auth');
  22. }
  23. public function index()
  24. {
  25. /**
  26. * @var $orderCountingRecordService NewOrderCountingRecordService
  27. * @var $laborReportsCountingRecordService LaborReportsCountingRecordService
  28. */
  29. $checkActiveMenuService = app(CheckActiveMenuService::class);
  30. $menus = $checkActiveMenuService->activeMenus();
  31. $realtimePendingOrdersService = app(RealtimePendingOrdersService::class);
  32. $warehousesOrders = $realtimePendingOrdersService->warehousesOrders();
  33. $orderCountingRecordService = app(NewOrderCountingRecordService::class);
  34. //默认查询一个月的数据
  35. $start = (new Carbon())->subMonth()->toDateString();
  36. $end = (new Carbon())->toDateString();
  37. $ownerIds = $this->getCountingOwnerIds(null);
  38. $owners=Owner::query()->whereIn('id',$ownerIds)->get();
  39. $unit = '日';
  40. $orderCountingRecords = $orderCountingRecordService->orderCountingRecordsFromCache($start, $end, $unit, $ownerIds);
  41. $logisticsCountingRecords = $orderCountingRecordService->logisticsCountingRecords($start, $end, $ownerIds);
  42. $warehouseCountingRecords = $orderCountingRecordService->warehouseCountingRecords($start, $end, $ownerIds);
  43. $laborReportsCountingRecordService = app(LaborReportsCountingRecordService::class);
  44. $laborReportsCountingRecords = $laborReportsCountingRecordService->get($start, $end, $unit);
  45. $laborReportsUserGroupsCount = $laborReportsCountingRecordService->userGroupsCount($start, $end);
  46. return view('control.panel', compact('owners','menus', 'warehousesOrders', 'orderCountingRecords', 'logisticsCountingRecords', 'warehouseCountingRecords', 'laborReportsCountingRecords', 'laborReportsUserGroupsCount'));
  47. }
  48. public function orderCountingRecordsApi(Request $request)
  49. {
  50. /**
  51. * @var $orderCountingRecordService NewOrderCountingRecordService
  52. */
  53. $orderCountingRecordService = app(NewOrderCountingRecordService::class);
  54. $start = Carbon::parse($request->start)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->start;
  55. $end = Carbon::parse($request->end)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->end;
  56. $ownerIds=$request->owner_ids;
  57. if (!$ownerIds || in_array('all',$ownerIds)) $ownerIds = $this->getCountingOwnerIds(null);
  58. $orderCountingRecords = $orderCountingRecordService->orderCountingRecords($start, $end, $request->unit, $ownerIds);
  59. return compact('orderCountingRecords');
  60. }
  61. public function logisticsCountingRecordsApi(Request $request)
  62. {
  63. /**
  64. * @var $orderCountingRecordService NewOrderCountingRecordService
  65. */
  66. $orderCountingRecordService = app(NewOrderCountingRecordService::class);
  67. $start = Carbon::parse($request->start)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->start;
  68. $end = Carbon::parse($request->end)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->end;
  69. $ownerIds=$request->input('owner_ids');
  70. if (!$ownerIds || in_array('all',$ownerIds)) $ownerIds = $this->getCountingOwnerIds(null);
  71. $logisticsCountingRecords = $orderCountingRecordService->logisticsCountingRecords($start, $end, $ownerIds);
  72. return compact('logisticsCountingRecords');
  73. }
  74. public function warehouseCountingRecordsApi(Request $request)
  75. {
  76. /**
  77. * @var $orderCountingRecordService NewOrderCountingRecordService
  78. */
  79. $orderCountingRecordService = app(NewOrderCountingRecordService::class);
  80. $start = Carbon::parse($request->start)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->start;
  81. $end = Carbon::parse($request->end)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->end;
  82. $ownerIds = $this->getCountingOwnerIds(null);
  83. $warehouseCountingRecords = $orderCountingRecordService->warehouseCountingRecords($start, $end, $ownerIds);
  84. return compact('warehouseCountingRecords');
  85. }
  86. public function laborReportsCountingRecordApi(Request $request)
  87. {
  88. $laborReportsCountingRecordService = app(LaborReportsCountingRecordService::class);
  89. $start = Carbon::parse($request->start)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->start;
  90. $end = Carbon::parse($request->end)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->end;
  91. $unit = $request->unit;
  92. $laborReportsCountingRecords = $laborReportsCountingRecordService->get($start, $end, $unit);
  93. return compact('laborReportsCountingRecords');
  94. }
  95. public function laborReportsUserGroupsCountApi(Request $request)
  96. {
  97. $laborReportsCountingRecordService = app(LaborReportsCountingRecordService::class);
  98. $start = Carbon::parse($request->start)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->start;
  99. $end = Carbon::parse($request->end)->gt(Carbon::now()) ? Carbon::now()->toDateString() : $request->end;
  100. $laborReportsUserGroupsCount = $laborReportsCountingRecordService->userGroupsCount($start, $end);
  101. return compact('laborReportsUserGroupsCount');
  102. }
  103. public function getCountingOwnerIds($ownerIds)
  104. {
  105. $user = auth()->user();
  106. /** @var UserService $userService */
  107. $userService = app('UserService');
  108. $permittingOwnerIds = $userService->getPermittingOwnerIds($user);
  109. if (!$ownerIds) {
  110. return $permittingOwnerIds;
  111. }
  112. return Cache::remember(
  113. 'PermittingOwnerIds' . '_' . auth()->user()->id . '_' . implode('_', $ownerIds),
  114. 600, function () use ($ownerIds, $permittingOwnerIds) {
  115. /** @var User $user */
  116. return array_intersect($ownerIds, $permittingOwnerIds);
  117. });
  118. }
  119. }