JDDeliveryService.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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 JDDeliveryService implements DeliveryInterface
  12. {
  13. use DeliveryProcess;
  14. function getDeliveryInfo($logistic_number): array
  15. {
  16. $oracleDocOrderHeaders = OracleDOCOrderHeader::query()
  17. ->with('oracleBASCustomer','oracleDOCWaveDetail')
  18. ->whereIn('deliveryno',$logistic_number)
  19. ->whereIn('consigneeId',['JD','BSZX','BSZFC','BSZXDF','BSZFCDF'])
  20. ->get();
  21. return $oracleDocOrderHeaders->map(function ($item){
  22. return [
  23. 'type' => 'JD',
  24. 'is_process' => true,
  25. 'task_id' => Str::uuid(),
  26. 'data' => '',
  27. 'component_type' => 'JD',
  28. 'owner_code' => $item->customerid ?? '',
  29. 'logistic_code' => $item->userdefine1 ?? '',
  30. 'logistic_number' => $item['deliveryno'],
  31. 'delivery' => null,
  32. 'base64' => $this->getBase64($item),
  33. 'printerName' => '',
  34. ];
  35. })->toArray();
  36. }
  37. public function getBase64($item): string
  38. {
  39. $printTemplate = OwnerLogisticPrintTemplate::query()->with('printTemplate')->where('owner_id', function(Builder $query)use($item){
  40. $query->from("owners")->selectRaw('id')->where("code",$item['customerid']);
  41. })->where('logistic_id', function(Builder $query)use($item){
  42. $query->from("logistics")->selectRaw('id')->where("code",$item['userdefine1']);
  43. })->first();
  44. $delivery = $this->getDelivery($item);
  45. $image = $this->draw($delivery,$printTemplate->printTemplate ?? null,null);
  46. if (!$image) return '';
  47. $path = '';
  48. $this->saveImage($image,$path);
  49. return $this->readImageBase64($path);
  50. }
  51. /*
  52. * 订单号
  53. * 波次号
  54. * 运单号
  55. * 店铺
  56. * 商家联系号
  57. * 商家订单号
  58. * 发货地址,省,市区
  59. *
  60. * 发货分拣中心
  61. * 发货人
  62. * 发货人号码
  63. * 收货地址
  64. * 收货分拣中心
  65. * 收件人
  66. * 商品
  67. * 备注
  68. *
  69. */
  70. function getDelivery($item): array
  71. {
  72. $delivery = $this->getDocOrderInfo($item);
  73. $delivery['b_addresss1'] = $item['MJ-ZP'];
  74. $delivery['d_addresss1'] = $item['BB-Y3-21'];
  75. return $delivery;
  76. }
  77. function processing(&$params)
  78. {
  79. return null;
  80. }
  81. }