SFQHDDeliveryService.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Services;
  3. use App\OracleDocOrderDeliveryInfo;
  4. use App\OracleDOCOrderHeader;
  5. use App\OwnerLogisticPrintTemplate;
  6. use App\Services\Interfaces\DeliveryInterface;
  7. use App\Traits\DeliveryProcess;
  8. use App\Traits\DrawImage;
  9. use Illuminate\Database\Query\Builder;
  10. use Illuminate\Support\Str;
  11. class SFQHDDeliveryService implements DeliveryInterface
  12. {
  13. use DeliveryProcess;
  14. function getDeliveryInfo($logistic_number): array
  15. {
  16. $oracleDocOrderHeaders = OracleDOCOrderHeader::query()
  17. ->whereIn('deliveryNo', $logistic_number)
  18. ->whereIn('ConsigneeId', ["SFQHD",'SFSYQHD','SFTHQHD'])
  19. // ->where('SoStatus', '<>', '90')
  20. ->get();
  21. return$oracleDocOrderHeaders->map(function ($item) {
  22. return [
  23. // TODO 需要动态获取面单获取的组件 TYPE
  24. 'type' => 'SFQHD',
  25. 'task_id' => Str::uuid(),
  26. 'data' => '',
  27. 'component_type' => 'SFQHD',
  28. 'owner_code' => $item->customerid ?? '',
  29. 'logistic_code' => $item->userdefine1 ?? '',
  30. 'logistic_number' => $item['deliveryno'],
  31. 'delivery' => $this->getDelivery($item),
  32. 'base64' => $this->getBase64($item),
  33. ];
  34. })->toArray();
  35. }
  36. public function getBase64($item)
  37. {
  38. $item = OwnerLogisticPrintTemplate::query()->with('printTemplate')->where('owner_id', function (Builder $query) use ($item) {
  39. $query->from("owners")->selectRaw('id')->where("code", $item['customerid']);
  40. })->where('logistic_id', function (Builder $query) use ($item) {
  41. $query->from("logistic")->selectRaw('id')->where("code", $item['userdefine1']);
  42. })->first();
  43. $image = $this->draw($item['delivery'], $item, null);
  44. $path = '';
  45. $this->saveImage($image, $path);
  46. return $this->readImageBase64($path);
  47. }
  48. function getDelivery($item): array
  49. {
  50. return $this->getDocOrderInfo($item);
  51. }
  52. function processing(&$params)
  53. {
  54. }
  55. function construct($param)
  56. {
  57. }
  58. }