Преглед на файлове

修改 PDD JD SF SFQHD TB DeliverySErvice

ajun преди 4 години
родител
ревизия
3f8efc3d47

+ 12 - 17
app/Services/JDDeliveryService.php

@@ -8,34 +8,25 @@ use App\Services\Interfaces\DeliveryInterface;
 
 class JDDeliveryService implements DeliveryInterface
 {
-    function getDeliveryInfo($orderCodes, $logisticNumbers)
+    function getDeliveryInfo($logistic_number)
     {
-        $orderCodes = OracleDOCOrderHeader::query()->whereIn('orderNo', $orderCodes)->where('consigneeId','JD')->get()->map(function($item){
-            return $item->orderno;
-        });
-
-        $infos = OracleDocOrderDeliveryInfo::query()->selectRaw('trackingNo')->whereIn('orderNo', $orderCodes)->get()->map(function ($item) {
-            return $item->trackingno;
-        })->toArray();
-
-        $trackingNos = array_unique(array_merge($logisticNumbers, $infos));
-        if (!$trackingNos)return [];
-        return OracleDocOrderDeliveryInfo::query()->with('docOrderHeader')->whereIn('trackingNo', $trackingNos)->get()->map(function ($item) {
+        return OracleDOCOrderHeader::query()->whereIn('deliveryno',$logistic_number)->where('consigneeId',"JD")->where('sostatus', '<>','90')->get()->map(function($item){
             return [
                 'type' => 'JD',
                 'data' => '',
-                'owner_code' => $item->docOrderHeader->custemid ?? '',
-                'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
-                'logistic_number' => $item['trackingno'],
+                'component_type' => 'JD',
+                'owner_code' => $item->customerid ?? '',
+                'logistic_code' => $item->userdefine1 ?? '',
+                'logistic_number' => $item['deliveryno'],
                 'delivery' => $this->getDelivery($item),
-                'base64' => '',
+                'base64' => null,
             ];
         })->toArray();
     }
 
     public function getBase64($item)
     {
-        // TODO: Implement getBase64() method.
+
     }
 
     function getDelivery($item)
@@ -43,4 +34,8 @@ class JDDeliveryService implements DeliveryInterface
         // TODO: Implement getDelivery() method.
         return null;
     }
+
+    function processing(&$params)
+    {
+    }
 }

+ 31 - 18
app/Services/PDDDeliveryService.php

@@ -4,48 +4,61 @@ namespace App\Services;
 
 use App\OracleDocOrderDeliveryInfo;
 use App\OracleDOCOrderHeader;
+use App\PrintPartImage;
 use App\Services\Interfaces\DeliveryInterface;
+use App\Traits\DrawImage;
+use Illuminate\Support\Facades\File;
+use Intervention\Image\Facades\Image;
 
 class PDDDeliveryService implements DeliveryInterface
 {
-    function getDeliveryInfo($orderCodes, $logisticNumbers): ?array
+    use DrawImage;
+
+    function getDeliveryInfo($OracleDocOrderDeliveryInfos): ?array
     {
-        $orderCodes = OracleDOCOrderHeader::query()->whereIn('orderNo', $orderCodes)->where('consigneeId', 'PDD')->get()->map(function ($item) {
-            return $item->orderno;
+        $items = $OracleDocOrderDeliveryInfos->filter(function($item){
+            return $item->docOrderHeader->consigneeid == 'PDD';
         });
 
-        $infos = OracleDocOrderDeliveryInfo::query()->selectRaw('trackingNo')->whereIn('orderNo', $orderCodes)->get()->map(function ($item) {
-            return $item->trackingno;
-        })->toArray();
-
-        $trackingNos = array_unique(array_merge($logisticNumbers, $infos));
-        if (!$trackingNos)return [];
-        return OracleDocOrderDeliveryInfo::query()->with('docOrderHeader')->whereIn('trackingNo', $trackingNos)->get()->map(function ($item) {
+        return $items->map(function($item) {
             return [
                 'type' => 'PDD',
+                'data' => $item['userdefine1'],
                 'component_type' => 'PDD',
-                'owner_code' => $item->docOrderHeader->custemid ?? '',
+                'owner_code' => $item->docOrderHeader->customerid ?? '',
                 'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
-                'data' => $item->userdefine1,
                 'logistic_number' => $item['trackingno'],
                 'delivery' => $this->getDelivery($item),
-                'base64' => $this->getBase64($item),
+                'base64' => null,
             ];
         })->toArray();
     }
 
-    public function getDelivery($item)
+    public function getDelivery($item = null)
     {
         return null;
     }
 
-    public function getBase64($item)
+    public function getBase64($img = null, $item = null): ?string
     {
-        return null;
+        if (!$img) return null;
+        $imgName = 'PDD-' . $item['logistic_code'] . 'png';
+        $path = storage_path(['app/public/files/' . $imgName]);
+        $img->save($path);
+        return File::get($path);
     }
 
-    function processing($params)
+    function processing(&$params)
     {
-        // TODO: Implement processing() method.
+        $data = $params['data'];
+        $image = Image::make($data);
+        $orderDeliveryInfo = OracleDocOrderDeliveryInfo::query()->where('')->with('docOrderHead')->where('trackingNo', $params['trackingNo'])->first();
+        $info = [
+            'ORDERNO' => $orderDeliveryInfo->orderno,
+            'TRACKINGNO' => $orderDeliveryInfo->trackingNo,
+        ];
+        $printPartTemp = PrintPartImage::query()->first();
+        $image = $this->draw($info, $printPartTemp, $image);
+        $params['base64'] = $this->getBase64($image,$params);
     }
 }

+ 7 - 13
app/Services/SFDeliveryService.php

@@ -8,24 +8,18 @@ use App\Services\Interfaces\DeliveryInterface;
 
 class SFDeliveryService implements DeliveryInterface
 {
-    function getDeliveryInfo($orderCodes, $logisticNumbers)
+    function getDeliveryInfo($OracleDocOrderDeliveryInfos): array
     {
-        $orderCodes = OracleDOCOrderHeader::query()->whereIn('orderNo', $orderCodes)->where('consigneeId','SF')->get()->map(function($item){
-            return $item->orderno;
+        $items = $OracleDocOrderDeliveryInfos->filter(function($item){
+            return $item->docOrderHeader->consigneeid == 'SF';
         });
 
-        $infos = OracleDocOrderDeliveryInfo::query()->selectRaw('trackingNo')->whereIn('orderNo', $orderCodes)->get()->map(function ($item) {
-            return $item->trackingno;
-        })->toArray();
-
-        $trackingNos = array_unique(array_merge($logisticNumbers, $infos));
-        if (!$trackingNos)return [];
-        return OracleDocOrderDeliveryInfo::query()->with('docOrderHeader')->whereIn('trackingNo', $trackingNos)->get()->map(function ($item) {
+        return $items->map(function($item) {
             return [
                 'type' => 'SF',
-                'data' => '',
+                'data' => $item->docOrderHeader['user'],
                 'component_type' => 'SF',
-                'owner_code' => $item->docOrderHeader->custemid ?? '',
+                'owner_code' => $item->docOrderHeader->customerid ?? '',
                 'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
                 'logistic_number' => $item['trackingno'],
                 'delivery' => $this->getDelivery($item),
@@ -45,7 +39,7 @@ class SFDeliveryService implements DeliveryInterface
         return null;
     }
 
-    function processing($params)
+    function processing(&$params)
     {
         // TODO: Implement processing() method.
     }

+ 8 - 17
app/Services/SFQHDDeliveryService.php

@@ -9,27 +9,18 @@ use App\Services\Interfaces\DeliveryInterface;
 
 class SFQHDDeliveryService implements DeliveryInterface
 {
-    function getDeliveryInfo($orderCodes, $logisticNumbers): array
+    function getDeliveryInfo($logistic_number): array
     {
-        $orderCodes = OracleDOCOrderHeader::query()->whereIn('orderNo', $orderCodes)->where('consigneeId','SFQHD')->get()->map(function($item){
-            return $item->orderno;
-        });
-
-        $infos = OracleDocOrderDeliveryInfo::query()->selectRaw('trackingNo')->whereIn('orderNo', $orderCodes)->get()->map(function ($item) {
-            return $item->trackingno;
-        })->toArray();
-
-        $trackingNos = array_unique(array_merge($logisticNumbers, $infos));
-        if (!$trackingNos)return [];
-        return OracleDocOrderDeliveryInfo::query()->with('docOrderHeader')->whereIn('trackingNo', $trackingNos)->get()->map(function ($item) {
+        return OracleDOCOrderHeader::query()->whereIn('deliveryno',$logistic_number)->where('consigneeid',"SFQHD")->where('sostatus', '<>','90')->get()->map(function($item){
             return [
                 'type' => 'SFQHD',
                 'data' => '',
-                'owner_code' => $item->docOrderHeader->custemid ?? '',
-                'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
-                'logistic_number' => $item['trackingno'],
+                'component_type' => 'SFQHD',
+                'owner_code' => $item->customerid ?? '',
+                'logistic_code' => $item->userdefine1 ?? '',
+                'logistic_number' => $item['deliveryno'],
                 'delivery' => $this->getDelivery($item),
-                'base64' => $this->getBase64($item),
+                'base64' => null,
             ];
         })->toArray();
     }
@@ -47,7 +38,7 @@ class SFQHDDeliveryService implements DeliveryInterface
         return null;
     }
 
-    function processing($params)
+    function processing(&$params)
     {
         foreach ($params as $param) {
             if($param['type'] != 'SFQHD') continue;

+ 12 - 18
app/Services/TBDeliveryService.php

@@ -9,31 +9,25 @@ use App\OracleDOCOrderHeader;
 use App\Owner;
 use App\OwnerLogisticPrintTemplate;
 use App\Services\Interfaces\DeliveryInterface;
-use function GuzzleHttp\Promise\queue;
 
 class TBDeliveryService implements DeliveryInterface
 {
-    function getDeliveryInfo($orderCodes, $logisticNumbers): array
+    function getDeliveryInfo($OracleDocOrderDeliveryInfos): array
     {
-        $orderCodes = OracleDOCOrderHeader::query()->whereIn('orderNo', $orderCodes)->where('consigneeId','TB')->get()->map(function($item){
-            return $item->orderno;
+        $items = $OracleDocOrderDeliveryInfos->filter(function($item){
+            return $item->docOrderHeader->consigneeid == 'TB';
         });
 
-        $trackingNos = OracleDocOrderDeliveryInfo::query()->selectRaw('trackingNo')->whereIn('orderNo', $orderCodes)->get()->map(function ($item) {
-            return $item->trackingno;
-        })->toArray();
-
-        $trackingNos = array_unique(array_merge($logisticNumbers, $trackingNos));
-        return OracleDocOrderDeliveryInfo::query()->with('docOrderHeader')->whereIn('trackingNo', $trackingNos)->get()->map(function ($item) {
+        return $items->map(function($item) {
             return [
                 'type' => 'TB',
-                'component_type' => 'CAINIAO',
-                'owner_code' => $item->docOrderHeader->custemid ?? '',
+                'data' => $item['userdefine1'],
+                'component_type' => 'TB',
+                'owner_code' => $item->docOrderHeader->customerid ?? '',
                 'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
-                'data' => $item->userdefine1,
                 'logistic_number' => $item['trackingno'],
                 'delivery' => $this->getDelivery($item),
-                'base64' => '',
+                'base64' => null,
             ];
         })->toArray();
     }
@@ -49,11 +43,11 @@ class TBDeliveryService implements DeliveryInterface
         return null;
     }
 
-    function processing($params)
+    function processing(&$params)
     {
-        $owner_query = Owner::query()->selectRaw('id')->where('code',$params['owner_code']);
-        $logistic_query = Logistic::query()->selectRaw('id')->where('code',$params['owner_code']);
-        $item = OwnerLogisticPrintTemplate::query()->with('printTemplate')->where('owner_id',$owner_query)->where('logistic_id',$logistic_query)->first();
+        $owner_query = Owner::query()->selectRaw('id')->where('code', $params['owner_code']);
+        $logistic_query = Logistic::query()->selectRaw('id')->where('code', $params['owner_code']);
+        $item = OwnerLogisticPrintTemplate::query()->with('printTemplate')->where('owner_id', $owner_query)->where('logistic_id', $logistic_query)->first();
         $item->printTemplate;
     }
 }