ControlPanelController.php 6.8 KB

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