LaborApplyController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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()
  18. {
  19. $builder = LaborApply::query()
  20. ->with(['warehouse', 'userWorkGroup', 'applyUser']);
  21. if (!(\auth()->user()->isSuperAdmin() || Gate::allows('宝时人事部'))) {
  22. $builder->where('apply_user_id', \auth()->id());
  23. }
  24. $labor_applies = $builder
  25. ->orderByDesc('created_at')
  26. ->paginate();
  27. return view('personnel.laborApply.index', compact('labor_applies'));
  28. }
  29. public function create()
  30. {
  31. $warehouses = Warehouse::all();
  32. $userWorkGroups = UserWorkgroup::all();
  33. /** @var LaborApplyService $service */
  34. $service = app('LaborApplyService');
  35. //获取开放状态
  36. $can_create_status = $service->getCanCreateStatus();
  37. return view('personnel.laborApply.create', compact('userWorkGroups', 'warehouses', 'can_create_status'));
  38. }
  39. public function store(LaborApplyRequest $request, LaborApply $laborApply)
  40. {
  41. $laborApply->fill($request->all());
  42. $laborApply->apply_user_id = Auth::id();
  43. $laborApply->status = '创建';
  44. $laborApply->save();
  45. return redirect(route('laborApply.index'))->with('success', '申请成功!');
  46. }
  47. /**
  48. * Display the specified resource.
  49. *
  50. * @param \App\LaborApply $laborApply
  51. * @return \Illuminate\Http\Response
  52. */
  53. public function show(LaborApply $laborApply)
  54. {
  55. //
  56. }
  57. public function edit(LaborApply $laborApply)
  58. {
  59. $warehouses = Warehouse::all();
  60. $userWorkGroups = UserWorkgroup::all();
  61. return view('personnel.laborApply.edit', compact('laborApply', 'warehouses', 'userWorkGroups'));
  62. }
  63. public function update(Request $request, LaborApply $laborApply)
  64. {
  65. $laborApply->actual_num = $request->input('actual_num');
  66. $laborApply->status = '任务完结';
  67. $laborApply->save();
  68. return redirect(route('laborApply.index'))->with('success', '填写实到人数成功!');
  69. }
  70. /**
  71. * Remove the specified resource from storage.
  72. *
  73. * @param \App\LaborApply $laborApply
  74. * @return \Illuminate\Http\Response
  75. */
  76. public function destroy(LaborApply $laborApply)
  77. {
  78. //
  79. }
  80. /**
  81. * 临时开放按钮
  82. * @return Application|RedirectResponse|Redirector
  83. */
  84. public function temporaryOpen()
  85. {
  86. /** @var LaborApplyService $service */
  87. $service = app('LaborApplyService');
  88. $service->setCanCreateStatus(LaborApply::CAN_CREATE_STATUS_TEMPORARY_OPEN);
  89. $ttl = LaborApplyService::LABOR_APPLY_STATUS_TTL;
  90. //调用定时任务 开放时间过了自动生成报表
  91. LaborApplyRecordJob::dispatch()->delay(now()->addSeconds($ttl));
  92. return redirect(route('laborApply.create'))->with('success', "临时开放成功,有效时间为:{$ttl}S ");
  93. }
  94. /**
  95. *手动生成劳务分配
  96. */
  97. public function createDispatch()
  98. {
  99. /** @var LaborApplyService $laborApplyService */
  100. $laborApplyService = app('LaborApplyService');
  101. $response = $laborApplyService->allocationLaborToLaborCompany();
  102. if ($response['success']) {
  103. return redirect(route('laborApplyDispatch.index'))->with('success', '重新生成劳务派遣数据成功!');
  104. }else{
  105. return redirect(route('laborApplyDispatch.index'))->with('danger', $response['error_message']);
  106. }
  107. }
  108. }