FacilitatorExternalController.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Components\AsyncResponse;
  4. use App\DischargeTask;
  5. use App\Facilitator;
  6. use App\Filters\FacilitatorExternalFilters;
  7. use App\Services\common\ExportService;
  8. use App\Services\DischargeTaskService;
  9. use App\Services\FacilitatorService;
  10. use Illuminate\Database\Eloquent\Collection;
  11. use Illuminate\Http\Request;
  12. class FacilitatorExternalController extends Controller
  13. {
  14. // 卸货队可访问的页面
  15. use AsyncResponse;
  16. // 查询页面
  17. public function index(Request $request,$id)
  18. {
  19. $facilitator = Facilitator::query()->fromQuery('select * from facilitators where MD5(id) = ?',[$id])->first();
  20. if(!$facilitator)return redirect('exception.404');
  21. $request['id'] = $id;
  22. $filters = new FacilitatorExternalFilters($request);
  23. $facilitatorStatements = DischargeTask::query()
  24. ->selectRaw('sum( discharge_tasks.expenditure_total_cost ) total_cost,' . ' count( 1 ) sum , ' . ' facilitators.name facilitators_name,' . ' facilitators.id id,' . " DATE_FORMAT( discharge_tasks.created_at, '%Y-%m' ) months ")
  25. ->leftJoin('facilitators', 'discharge_tasks.facilitator_id', '=', 'facilitators.id')
  26. ->filter($filters)
  27. ->groupBy('months', 'facilitator_id')
  28. ->orderByDesc('months')
  29. ->paginate($request['paginate'] ?? 50);
  30. return view('personnel.discharge.facilitator.external.index',compact('facilitatorStatements','id'));
  31. }
  32. // 下载
  33. public function export(Request $request,$id)
  34. {
  35. $request['id'] = $id;
  36. $filters = new FacilitatorExternalFilters($request);
  37. /** @var Collection $facilitatorStatements */
  38. $facilitatorStatements = DischargeTask::query()
  39. ->filter($filters)
  40. ->with('facilitator')
  41. ->select(['id', 'facilitator_id', 'expenditure_amount', 'expenditure_unit', 'expenditure_unit_price', 'expenditure_total_cost', 'expenditure_remark', 'created_at'])
  42. ->whereNotNull('facilitator_id')
  43. ->where('facilitator_id', '!=', '0')
  44. ->orderByDesc('id')->get();
  45. $row = ['日期', '装卸队', '数量', '单位', '单价', '总金额合计'];
  46. $json = app('DischargeTaskService')->getFacilitatorStatementsJson($facilitatorStatements);
  47. return app(ExportService::class)->json($row, $json, "卸货结算报表");
  48. }
  49. }