PrintController.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Components\AsyncResponse;
  4. use App\Services\DeliveryService;
  5. use App\Terminal;
  6. use App\TerminalPrinter;
  7. use App\TerminalPrinterLogistic;
  8. use Illuminate\Http\Request;
  9. class PrintController extends Controller
  10. {
  11. //
  12. use AsyncResponse;
  13. public function index()
  14. {
  15. return view('maintenance.expressPrinting.print.template');
  16. }
  17. public function getPrintDataApi(Request $request): array
  18. {
  19. if (!$request->has('printStr')) return ['success' => false, 'message' => '为空'];
  20. $results = app(DeliveryService::class)->getDelivery($request['printStr']);
  21. $ip = $request->getClientIp();
  22. $terminalQuery = Terminal::query()->select('id')->where('ip', $ip);
  23. $terminalPrinterQuery = TerminalPrinter::query()->select('id')->whereIn('terminal_id',$terminalQuery);
  24. $terminalPrinterLogistics = TerminalPrinterLogistic::query()->with('terminalPrinter','logistic')->whereIn('terminal_printer_id',$terminalPrinterQuery)->get();
  25. foreach ($terminalPrinterLogistics as &$item) {
  26. $logisticCode = $item['logistic']['code'];
  27. $terminalPrinterName = $item['terminalPrinter']['printer_name'];
  28. $data[$logisticCode] = $terminalPrinterName;
  29. }
  30. foreach ($results as &$result){
  31. $result['printerName'] = $data[$result['logistic_code']] ?? '';
  32. }
  33. return ['success' => true, 'data' => $results];
  34. }
  35. public function uploadPrintDataApi(Request $request, DeliveryService $service): array
  36. {
  37. if (is_string($request['printData']))
  38. $request['printData'] = json_decode($request['printData']);
  39. $item = $service->customProcessing($request['printData']);
  40. return ['success' => true, 'data' => $item];
  41. }
  42. }