LaborApplyController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\LaborApply\LaborApplyRequest;
  4. use App\Jobs\LaborApplyRecordJob;
  5. use App\LaborApply;
  6. use App\Services\LaborApplyService;
  7. use App\UserWorkgroup;
  8. use App\Warehouse;
  9. use Illuminate\Contracts\Foundation\Application;
  10. use Illuminate\Http\RedirectResponse;
  11. use Illuminate\Http\Request;
  12. use Illuminate\Routing\Redirector;
  13. use Illuminate\Support\Facades\Auth;
  14. use Illuminate\Support\Facades\Gate;
  15. class LaborApplyController extends Controller
  16. {
  17. public function index(Request $request, \App\Filters\LaborApplyFilters $filters)
  18. {
  19. $builder = LaborApply::query()
  20. ->filter($filters)
  21. ->with(['warehouse', 'userWorkGroup', 'applyUser']);
  22. /** @var User $user */
  23. $user = auth()->user();
  24. $auth_user_is_人事主管 = $user->roles()->where('name', '人事主管')->exists();
  25. if (!($user->isSuperAdmin() || $auth_user_is_人事主管)) {
  26. $builder->where('apply_user_id', \auth()->id());
  27. }
  28. $labor_applies = $builder
  29. ->orderByDesc('created_at')
  30. ->paginate();
  31. return view('personnel.laborApply.index', compact('labor_applies'));
  32. }
  33. public function create()
  34. {
  35. $warehouses = Warehouse::all();
  36. $userWorkGroups = UserWorkgroup::all();
  37. /** @var LaborApplyService $service */
  38. $service = app('LaborApplyService');
  39. //获取开放状态
  40. $can_create_status = $service->getCanCreateStatus();
  41. return view('personnel.laborApply.create', compact('userWorkGroups', 'warehouses', 'can_create_status'));
  42. }
  43. public function store(LaborApplyRequest $request, LaborApply $laborApply)
  44. {
  45. $user_workgroup_applied = LaborApply::query()
  46. ->whereDate('created_at', now()->toDateString())
  47. ->where('user_workgroup_id', $request->user_workgroup_id)
  48. ->exists();
  49. if ($user_workgroup_applied) {
  50. return redirect()->back()->with('warning', '该仓库小组今日已申请过,请修改申请人数,不要重复申请!');
  51. }
  52. $laborApply->fill($request->all());
  53. $laborApply->apply_user_id = Auth::id();
  54. $laborApply->status = '创建';
  55. $laborApply->save();
  56. return redirect(route('laborApply.index'))->with('success', '申请成功!');
  57. }
  58. /**
  59. * Display the specified resource.
  60. *
  61. * @param \App\LaborApply $laborApply
  62. * @return \Illuminate\Http\Response
  63. */
  64. public function show(LaborApply $laborApply)
  65. {
  66. //
  67. }
  68. public function edit(LaborApply $laborApply)
  69. {
  70. $warehouses = Warehouse::all();
  71. $userWorkGroups = UserWorkgroup::all();
  72. return view('personnel.laborApply.edit', compact('laborApply', 'warehouses', 'userWorkGroups'));
  73. }
  74. public function update(Request $request, LaborApply $laborApply)
  75. {
  76. $laborApply->update($request->all());
  77. return redirect(route('laborApply.index'))->with('success', '申请更新成功!');
  78. }
  79. public function destroy(LaborApply $laborApply)
  80. {
  81. $laborApply->delete();
  82. return redirect(route('laborApply.index'))->with('success', '删除成功');
  83. }
  84. /**
  85. * 临时开放按钮
  86. * @return Application|RedirectResponse|Redirector
  87. */
  88. public function temporaryOpen()
  89. {
  90. /** @var LaborApplyService $service */
  91. $service = app('LaborApplyService');
  92. $service->setCanCreateStatus(LaborApply::CAN_CREATE_STATUS_TEMPORARY_OPEN);
  93. $ttl = LaborApplyService::LABOR_APPLY_STATUS_TTL;
  94. //调用定时任务 开放时间过了自动生成报表
  95. LaborApplyRecordJob::dispatch()->delay(now()->addSeconds($ttl));
  96. return redirect(route('laborApply.create'))->with('success', "临时开放成功,有效时间为:{$ttl}S ");
  97. }
  98. /**
  99. *手动生成劳务分配
  100. */
  101. public function createDispatch()
  102. {
  103. /** @var LaborApplyService $laborApplyService */
  104. $laborApplyService = app('LaborApplyService');
  105. $response = $laborApplyService->allocationLaborToLaborCompany();
  106. $route = 'laborCompanyDispatch.index';
  107. if ($response['success']) {
  108. return redirect(route('' . $route . ''))->with('success', '重新生成劳务派遣数据成功!');
  109. } else {
  110. return redirect(route($route))->with('danger', $response['error_message']);
  111. }
  112. }
  113. }