LaborCompanyDispatchController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Filters\LaborCompanyDispatchFilters;
  4. use App\LaborApply;
  5. use App\LaborCompany;
  6. use App\LaborCompanyDispatch;
  7. use App\Services\LaborCompanyDispatchDetailService;
  8. use App\User;
  9. use App\Warehouse;
  10. use Illuminate\Database\Eloquent\Builder;
  11. use Illuminate\Http\Request;
  12. use Illuminate\Support\Carbon;
  13. use Illuminate\Support\Facades\Gate;
  14. class LaborCompanyDispatchController extends Controller
  15. {
  16. public function index(Request $request, LaborCompanyDispatchFilters $filters)
  17. {
  18. //按照分配日期倒序
  19. /** @var Builder $builder */
  20. $builder = LaborCompanyDispatch::query()
  21. ->filter($filters)
  22. ->with(['laborCompany', 'laborCompanyDispatchDetails','warehouse','checkUser']);
  23. /** @var User $user */
  24. $user = auth()->user();
  25. $auth_user_is_人事主管 = $user->roles()->where('name', '人事主管')->exists();
  26. if (!($user->isSuperAdmin() || $auth_user_is_人事主管 || Gate::allows('临时工申请协调-劳务派遣明细-可见全部'))) {
  27. //获取用户的劳务角色 劳务角色名 与 劳务所名称相同
  28. $laborCompanyNames = $user->roles()->where('name', 'LIKE', '%劳务%')->pluck('name');
  29. //根据劳务所名称相同 查询劳务所Id
  30. $laborCompanyIds = LaborCompany::query()->whereIn('name', $laborCompanyNames)->pluck('id');
  31. $builder->whereIn('labor_company_id', $laborCompanyIds);
  32. }
  33. $labor_company_dispatches = $builder
  34. ->orderByDesc('id')
  35. ->simplePaginate();
  36. $warehouses = Warehouse::all();
  37. $labor_companies = LaborCompany::all();
  38. return view('personnel.laborApply.dispatch.index', compact('labor_company_dispatches', 'warehouses', 'labor_companies'));
  39. }
  40. public function edit(LaborCompanyDispatch $laborCompanyDispatch)
  41. {
  42. return view('personnel.laborApply.dispatch.edit', compact('laborCompanyDispatch'));
  43. }
  44. public function update(LaborCompanyDispatch $laborCompanyDispatch, Request $request)
  45. {
  46. $laborCompanyDispatch->update($request->all());
  47. return redirect(route('laborCompanyDispatch.index'))->with('success', '更新成功!');
  48. }
  49. public function createDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  50. {
  51. return view('personnel.laborApply.dispatch.detail.create', compact('laborCompanyDispatch'));
  52. }
  53. public function editDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  54. {
  55. $laborCompanyDispatch->loadMissing('laborCompanyDispatchDetails');
  56. return view('personnel.laborApply.dispatch.detail.edit', compact('laborCompanyDispatch'));
  57. }
  58. public function storeDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  59. {
  60. $laborCompanyDispatch->laborCompanyDispatchDetails()->delete();
  61. $laborCompanyDispatch->laborCompanyDispatchDetails()->createMany(
  62. $request->input('users')
  63. );
  64. app(LaborCompanyDispatchDetailService::class)->allocation($laborCompanyDispatch);
  65. return redirect(route('laborCompanyDispatch.index'))->with('success', '添加临时工详情成功!');
  66. }
  67. /**
  68. * 劳务接单
  69. * @param LaborCompanyDispatch $laborCompanyDispatch
  70. * @param Request $request
  71. * @return \Illuminate\Http\RedirectResponse
  72. */
  73. public function laborCompanyReceivingOrder(LaborCompanyDispatch $laborCompanyDispatch, Request $request)
  74. {
  75. /** @var Carbon $dispatch_date */
  76. $dispatch_date = $laborCompanyDispatch->dispatch_date;
  77. //更新创建日期为 分配日期前一天的全部申请状态为 劳务接单
  78. LaborApply::query()
  79. ->whereDate('created_at', $dispatch_date->subDay()->toDateString())
  80. ->where('warehouse_id', $laborCompanyDispatch->laborCompany->warehouse_id)
  81. ->update([
  82. 'status' => $request->status, //劳务接单
  83. ]);
  84. $laborCompanyDispatch->status = '劳务接单';
  85. $laborCompanyDispatch->save();
  86. return redirect()->back()->with('success', '接单成功!');
  87. }
  88. public function personnelCheck(LaborCompanyDispatch $laborCompanyDispatch, Request $request)
  89. {
  90. $laborCompanyDispatch->status = $request->status;
  91. $laborCompanyDispatch->check_user_id = auth()->id();
  92. $laborCompanyDispatch->save();
  93. return redirect()->back()->with('success', '人事确认成功!');
  94. }
  95. }