PDDDeliveryService.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Services;
  3. use App\OracleDocOrderDeliveryInfo;
  4. use App\OracleDOCOrderHeader;
  5. use App\PrintPartImage;
  6. use App\Services\Interfaces\DeliveryInterface;
  7. use App\Traits\DrawImage;
  8. use Illuminate\Support\Facades\File;
  9. use Illuminate\Support\Str;
  10. use Intervention\Image\Facades\Image;
  11. class PDDDeliveryService implements DeliveryInterface
  12. {
  13. use DrawImage;
  14. function getDeliveryInfo($OracleDocOrderDeliveryInfos): ?array
  15. {
  16. $items = $OracleDocOrderDeliveryInfos->filter(function($item){
  17. return $item->docOrderHeader->consigneeid == 'PDD';
  18. });
  19. return $items->map(function($item) {
  20. return [
  21. // TODO 需要动态获取面单获取的组件 TYPE
  22. 'type' => 'PDD',
  23. 'task_id' => $item['trackingno'],
  24. 'is_process' => false,
  25. 'data' => $item['userdefine1'],
  26. 'component_type' => 'PDD',
  27. 'owner_code' => $item->docOrderHeader->customerid ?? '',
  28. 'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
  29. 'logistic_number' => $item['trackingno'],
  30. 'delivery' => $this->getDelivery($item),
  31. 'base64' => null,
  32. ];
  33. })->toArray();
  34. }
  35. public function getDelivery($item = null)
  36. {
  37. return null;
  38. }
  39. public function getBase64($img = null, $item = null): ?string
  40. {
  41. if (!$img) return null;
  42. $imgName = 'PDD-' . $item['logistic_code'] . 'png';
  43. $path = storage_path(['app/public/files/' . $imgName]);
  44. $img->save($path);
  45. return File::get($path);
  46. }
  47. function processing(&$params)
  48. {
  49. $data = $params['data'];
  50. $image = Image::make($data);
  51. $orderDeliveryInfo = OracleDocOrderDeliveryInfo::query()->where('')->with('docOrderHead')->where('trackingNo', $params['trackingNo'])->first();
  52. $info = [
  53. 'ORDERNO' => $orderDeliveryInfo->orderno,
  54. 'TRACKINGNO' => $orderDeliveryInfo->trackingNo,
  55. ];
  56. $printPartTemp = PrintPartImage::query()->first();
  57. $image = $this->draw($info, $printPartTemp, $image);
  58. $params['base64'] = $this->getBase64($image,$params);
  59. }
  60. }