FacilitatorExternalController.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. use Oursdreams\Export\Export;
  13. class FacilitatorExternalController extends Controller
  14. {
  15. // 卸货队可访问的页面
  16. use AsyncResponse;
  17. // 查询页面
  18. public function index(Request $request,$id)
  19. {
  20. $facilitator = Facilitator::query()->fromQuery('select * from facilitators where MD5(id) = ?',[$id])->first();
  21. if(!$facilitator)return redirect('exception.404');
  22. $request['id'] = $id;
  23. $filters = new FacilitatorExternalFilters($request);
  24. $facilitatorStatements = DischargeTask::query()
  25. ->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 ")
  26. ->leftJoin('facilitators', 'discharge_tasks.facilitator_id', '=', 'facilitators.id')
  27. ->filter($filters)
  28. ->groupBy('months', 'facilitator_id')
  29. ->orderByDesc('months')
  30. ->paginate($request['paginate'] ?? 50);
  31. return view('personnel.discharge.facilitator.external.index',compact('facilitatorStatements','id'));
  32. }
  33. // 下载
  34. public function export(Request $request,$id)
  35. {
  36. $request['id'] = $id;
  37. $filters = new FacilitatorExternalFilters($request);
  38. /** @var Collection $facilitatorStatements */
  39. $facilitatorStatements = DischargeTask::query()
  40. ->filter($filters)
  41. ->with('facilitator')
  42. ->select(['id', 'facilitator_id', 'expenditure_amount', 'expenditure_unit', 'expenditure_unit_price', 'expenditure_total_cost', 'expenditure_remark', 'created_at'])
  43. ->whereNotNull('facilitator_id')
  44. ->where('facilitator_id', '!=', '0')
  45. ->orderByDesc('id')->get();
  46. $row = ['日期', '装卸队', '数量', '单位', '单价', '总金额合计'];
  47. $json = app('DischargeTaskService')->getFacilitatorStatementsJson($facilitatorStatements);
  48. return Export::make($row, $json, "卸货结算报表");
  49. }
  50. }