DischargeTaskController.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Components\AsyncResponse;
  4. use App\Facilitator;
  5. use App\DischargeTask;
  6. use App\Filters\DischargeTaskFilters;
  7. use App\Http\Requests\DischargeTask\DischargeTaskRequest;
  8. use App\Imports\CommodityImport;
  9. use App\Imports\DischargeTaskImport;
  10. use App\Services\common\ExportService;
  11. use App\Services\OwnerService;
  12. use App\Warehouse;
  13. use Carbon\Carbon;
  14. use Illuminate\Http\Request;
  15. use Illuminate\Support\Facades\Gate;
  16. use Maatwebsite\Excel\Facades\Excel;
  17. use function Sodium\compare;
  18. class DischargeTaskController extends Controller
  19. {
  20. use AsyncResponse;
  21. public function index(Request $request, DischargeTaskFilters $filters)
  22. {
  23. if (!Gate::allows('人事管理-卸货-查询')) {
  24. return redirect(url('/'));
  25. }
  26. $dischargeTasks = DischargeTask::query()->with(['facilitator', 'owner','warehouse'])->filter($filters)->orderByDesc('id')->paginate($request['paginate'] ?? 50);
  27. $owners = app(OwnerService::class)->getAuthorizedOwners();
  28. $warehouses = Warehouse::query()->select('id','name')->get();
  29. $facilitators = Facilitator::query()->select('name', 'id')->get();
  30. return view('personnel.discharge.task.index', compact('dischargeTasks', 'owners', 'facilitators','warehouses'));
  31. }
  32. // 结算报表
  33. public function statementIndex(Request $request, DischargeTaskFilters $filters)
  34. {
  35. if (!Gate::allows('人事管理-卸货-结算报表-查询')) {
  36. return redirect(url('/'));
  37. }
  38. $dischargeStatements = DischargeTask::query()->with('facilitator')->filter($filters)->orderByDesc('id')->paginate($request['paginate'] ?? 50);
  39. $owners = app(OwnerService::class)->getAuthorizedOwners();
  40. $facilitators = Facilitator::query()->select('name', 'id')->get();
  41. return view('personnel.discharge.statement.index', compact('dischargeStatements', 'owners', 'facilitators'));
  42. }
  43. // async 创建
  44. public function storeApi(DischargeTaskRequest $request)
  45. {
  46. $this->gate('人事管理-卸货-创建');
  47. $result = app('DischargeTaskService')->createTask($request->all());
  48. if ($result['success']) $this->success($result['data']);
  49. $this->error('任务创建异常,刷新当前页面重试');
  50. }
  51. // async 编辑
  52. public function updateApi(DischargeTaskRequest $request)
  53. {
  54. $this->gate('人事管理-卸货-编辑');
  55. $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
  56. $result = app('DischargeTaskService')->updateDischargeTask($dischargeTask, $request->all());
  57. if ($result['success']) $this->success($result['data']);
  58. else $this->error($result['message'] ?? '操作异常,请刷新页面重试');
  59. }
  60. // 修改任务服务商
  61. public function updateTaskFacilitatorApi(DischargeTaskRequest $request)
  62. {
  63. $this->gate('人事管理-卸货-编辑');
  64. /** @var DischargeTask $dischargeTask */
  65. $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
  66. if (!$dischargeTask) $this->error('没有找对应的卸货任务');
  67. $result = app('DischargeTaskService')->updateTaskFacilitator($dischargeTask, $request->all());
  68. if ($result['success']) $this->success($result['data']);
  69. else $this->error($result['message'] ?? '操作异常,请刷新页面重试');
  70. }
  71. // async 删除
  72. public function destroyApi(DischargeTaskRequest $request)
  73. {
  74. $this->gate('人事管理-卸货-删除');
  75. /** @var DischargeTask $dischargeTask */
  76. $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
  77. $result = app('DischargeTaskService')->deleteDischargeTask($dischargeTask);
  78. if ($result['success']) $this->success();
  79. else $this->error($result['message']);
  80. }
  81. // 执行任务
  82. public function executingTaskApi(DischargeTaskRequest $request)
  83. {
  84. $this->gate('人事管理-卸货-编辑');
  85. $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
  86. $result = app('DischargeTaskService')->updateTaskProvider($dischargeTask, $request->all());
  87. if ($result['success']) $this->success($result['data']);
  88. $this->error($result['message'] ?? '操作异常,请刷新页面重试');
  89. }
  90. // 卸货任务下载
  91. public function export(Request $request, DischargeTaskFilters $filters)
  92. {
  93. $this->gate('人事管理-卸货-查询');
  94. $dischargeTasks = DischargeTask::query()->with(['Facilitator', 'owner'])->filter($filters)->orderByDesc('id')->get();
  95. $row = ['日期', '客户名称', '作业名称', '入库单号', '数量', '单位', '单价', '收费', '状态', '备注'];
  96. $json = app('DischargeTaskService')->getJson($dischargeTasks);
  97. return app(ExportService::class)->json($row, $json, "卸货任务");
  98. }
  99. // 结算报表下载
  100. public function exportStatements(Request $request, DischargeTaskFilters $filters)
  101. {
  102. $this->gate('人事管理-卸货-结算报表-查询');
  103. $dischargeTasks = DischargeTask::query()->with(['facilitator', 'owner','warehouse'])->filter($filters)->orderByDesc('id')->get();
  104. $row = ['日期', '客户名称','仓库', '作业名称', '入库单号', '数量', '单位', '收入单价', '收入合计', '装卸队', '数量', '单位', '支出单价', '支出合计', '状态', '收入备注', '支出备注'];
  105. $json = app('DischargeTaskService')->getStatementsJson($dischargeTasks);
  106. return app(ExportService::class)->json($row, $json, "卸货结算报表");
  107. }
  108. // 回执单
  109. public function receipt(Request $request)
  110. {
  111. $task = DischargeTask::query()->with(['facilitator', 'owner','warehouse'])->where('id' , $request['id'])->first();
  112. $task->type = DischargeTask::types[$task->type];
  113. return view('personnel.discharge.task.receipt',compact('task'));
  114. }
  115. public function importApi(Request $request)
  116. {
  117. $extension=$request->file()['file']->getClientOriginalExtension();
  118. $extension[0] = strtoupper($extension[0]);
  119. Excel::import(new DischargeTaskImport(), $request->file()['file']->path(),null,$extension);
  120. }
  121. public function show(DischargeTask $dischargeTask)
  122. {
  123. }
  124. public function edit(DischargeTask $dischargeTask)
  125. {
  126. }
  127. public function update(Request $request, DischargeTask $dischargeTask)
  128. {
  129. }
  130. public function store(Request $request)
  131. {
  132. }
  133. public function create()
  134. {
  135. }
  136. public function destroy(DischargeTask $dischargeTask)
  137. {
  138. }
  139. }