SFDeliveryService.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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\DrawImage;
  8. use Illuminate\Database\Query\Builder;
  9. use Illuminate\Support\Str;
  10. class SFDeliveryService implements DeliveryInterface
  11. {
  12. use DrawImage;
  13. function getDeliveryInfo($OracleDocOrderDeliveryInfos): array
  14. {
  15. $items = $OracleDocOrderDeliveryInfos->filter(function($item){
  16. $consigned = $item->docOrderHeader->consigneeid;
  17. if (strpos($consigned,'SF') == 0 && !in_array($consigned,['SFSYQHD','SFTHQHD','SFQHD']))
  18. return true;
  19. return false;
  20. });
  21. return $items->map(function($item) {
  22. return [
  23. // TODO 需要动态获取面单获取的组件 TYPE
  24. 'type' => 'SF',
  25. 'task_id' => Str::uuid(),
  26. 'is_process' => true,
  27. 'data' => $item->docOrderHeader['user'],
  28. 'component_type' => 'SF',
  29. 'owner_code' => $item->docOrderHeader->customerid ?? '',
  30. 'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
  31. 'logistic_number' => $item['trackingno'],
  32. 'delivery' => $this->getDelivery($item),
  33. 'base64' => $this->getBase64($item),
  34. ];
  35. })->toArray();
  36. }
  37. public function getBase64($item): string
  38. {
  39. $item = OwnerLogisticPrintTemplate::query()->with('printTemplate')->where('owner_id', function(Builder $query)use($item){
  40. $query->from("owners")->where("code",$item['owner_code']);
  41. })->where('logistic_id', function(Builder $query)use($item){
  42. $query->from("logistic")->where("code",$item['logistic_code']);
  43. })->first();
  44. $image = $this->draw($item['delivery'],$item,null);
  45. $path = '';
  46. $this->saveImage($image,$path);
  47. return $this->readImageBase64($path);
  48. }
  49. function getDelivery($item)
  50. {
  51. return null;
  52. }
  53. }