ajun пре 4 година
родитељ
комит
d265fa00cc

+ 29 - 9
app/Services/JDDeliveryService.php

@@ -2,25 +2,45 @@
 
 namespace App\Services;
 
-
+use App\OracleDocOrderDeliveryInfo;
+use App\OracleDOCOrderHeader;
 use App\Services\Interfaces\DeliveryInterface;
 
 class JDDeliveryService implements DeliveryInterface
 {
-    // 自定义京东面单
-
-    function getDelivery($logisticNumber, $params)
+    function getDeliveryInfo($orderCodes, $logisticNumbers)
     {
-        // TODO: Implement getDelivery() method.
+        $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 [
+                'type' => 'JD',
+                'data' => '',
+                'owner_code' => $item->docOrderHeader->custemid ?? '',
+                'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
+                'logistic_number' => $item['trackingno'],
+                'delivery' => $this->getDelivery($item),
+                'base64' => '',
+            ];
+        })->toArray();
     }
 
-    function getDeliveryInfo($logisticNumber, $params)
+    public function getBase64($item)
     {
-        // TODO: Implement getDeliveryInfo() method.
+        // TODO: Implement getBase64() method.
     }
 
-    function getImg($logisticNumber, $params)
+    function getDelivery($item)
     {
-        // TODO: Implement getImg() method.
+        // TODO: Implement getDelivery() method.
+        return null;
     }
 }

+ 32 - 19
app/Services/PDDDeliveryService.php

@@ -2,37 +2,50 @@
 
 namespace App\Services;
 
+use App\OracleDocOrderDeliveryInfo;
+use App\OracleDOCOrderHeader;
 use App\Services\Interfaces\DeliveryInterface;
-use App\Traits\ServiceAppAop;
 
 class PDDDeliveryService implements DeliveryInterface
 {
-    use ServiceAppAop;
+    function getDeliveryInfo($orderCodes, $logisticNumbers): ?array
+    {
+        $orderCodes = OracleDOCOrderHeader::query()->whereIn('orderNo', $orderCodes)->where('consigneeId', 'PDD')->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 [
+                'type' => 'PDD',
+                'component_type' => 'PDD',
+                'owner_code' => $item->docOrderHeader->custemid ?? '',
+                'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
+                'data' => $item->userdefine1,
+                'logistic_number' => $item['trackingno'],
+                'delivery' => $this->getDelivery($item),
+                'base64' => $this->getBase64($item),
+            ];
+        })->toArray();
+    }
 
-    function getDelivery($logisticNumber, $params)
+    public function getDelivery($item)
     {
-        return [
-            'encryptedData' => $params['delivery']['userdefine1']['encryptedData'] ?? '',
-            'signature' =>  $params['delivery']['userdefine1']['signature'] ?? '',
-            'templateURL' => $params['delivery']['userdefine1']['templateURL'] ?? ''
-        ];
+        return null;
     }
 
-    function getDeliveryInfo($logisticNumber, $params)
+    public function getBase64($item)
     {
-        return [
-            'type' => 'PDD',
-            'owner_id' => '',
-            'logistic_id' => '',
-            'logistic_number' => '',
-            'data' => $this->getDelivery($logisticNumber,$params),
-            'base64' => null
-        ];
+        return null;
     }
 
-    function getImg($logisticNumber, $params)
+    function processing($params)
     {
-        // TODO: Implement getImg() method.
+        // TODO: Implement processing() method.
     }
 }

+ 33 - 17
app/Services/SFDeliveryService.php

@@ -2,35 +2,51 @@
 
 namespace App\Services;
 
-
+use App\OracleDocOrderDeliveryInfo;
+use App\OracleDOCOrderHeader;
 use App\Services\Interfaces\DeliveryInterface;
 
 class SFDeliveryService implements DeliveryInterface
 {
-    // SF下发接口通过自定义模板
-    function getDelivery($logisticNumber, $params)
+    function getDeliveryInfo($orderCodes, $logisticNumbers)
     {
-        return [];
+        $orderCodes = OracleDOCOrderHeader::query()->whereIn('orderNo', $orderCodes)->where('consigneeId','SF')->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 [
+                'type' => 'SF',
+                'data' => '',
+                'component_type' => 'SF',
+                'owner_code' => $item->docOrderHeader->custemid ?? '',
+                'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
+                'logistic_number' => $item['trackingno'],
+                'delivery' => $this->getDelivery($item),
+                'base64' => $this->getBase64($item),
+            ];
+        })->toArray();
     }
 
-    function getDeliveryInfo($logisticNumber, $params)
+
+    public function getBase64($item)
     {
-        return [
-            'type' => 'PDD',
-            'owner_id' => '',
-            'logistic_id' => '',
-            'logistic_number' => '',
-            'data' => $this->getDelivery($logisticNumber,$params),
-            'base64' => null
-        ];
+        return null;
     }
 
-    function getImg($logisticNumber, $params)
+    function getDelivery($item)
     {
-
+        return null;
     }
 
-    function getPrintTemplate($logisticNumber, $logistic_id = null, $owner_id = null){
-
+    function processing($params)
+    {
+        // TODO: Implement processing() method.
     }
 }

+ 43 - 4
app/Services/SFQHDDeliveryService.php

@@ -3,21 +3,60 @@
 namespace App\Services;
 
 
+use App\OracleDocOrderDeliveryInfo;
+use App\OracleDOCOrderHeader;
 use App\Services\Interfaces\DeliveryInterface;
 
 class SFQHDDeliveryService implements DeliveryInterface
 {
-    // 自定义SF签回单
+    function getDeliveryInfo($orderCodes, $logisticNumbers): 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 [
+                'type' => 'SFQHD',
+                'data' => '',
+                'owner_code' => $item->docOrderHeader->custemid ?? '',
+                'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
+                'logistic_number' => $item['trackingno'],
+                'delivery' => $this->getDelivery($item),
+                'base64' => $this->getBase64($item),
+            ];
+        })->toArray();
+    }
+
+
 
-    function getDelivery($logisticNumber, $params)
+    public function getBase64($item)
     {
+        return null;
     }
 
-    function getDeliveryInfo($logisticNumber, $params)
+
+    function getDelivery($item)
+    {
+        return null;
+    }
+
+    function processing($params)
     {
+        foreach ($params as $param) {
+            if($param['type'] != 'SFQHD') continue;
+
+        }
     }
 
-    function getImg($logisticNumber, $params)
+    function construct($param)
     {
+
     }
 }

+ 41 - 18
app/Services/TBDeliveryService.php

@@ -3,34 +3,57 @@
 namespace App\Services;
 
 
+use App\Logistic;
+use App\OracleDocOrderDeliveryInfo;
+use App\OracleDOCOrderHeader;
+use App\Owner;
+use App\OwnerLogisticPrintTemplate;
 use App\Services\Interfaces\DeliveryInterface;
+use function GuzzleHttp\Promise\queue;
 
-class TBDeliveryService  implements DeliveryInterface
+class TBDeliveryService implements DeliveryInterface
 {
-
-    function getDelivery($logisticNumber, $params)
+    function getDeliveryInfo($orderCodes, $logisticNumbers): array
     {
-        return [
-            'encryptedData' => $params['delivery']['userdefine1']['encryptedData'] ?? '',
-            'signature' =>  $params['delivery']['userdefine1']['signature'] ?? '',
-            'templateURL' => $params['delivery']['userdefine1']['templateURL'] ?? ''
-        ];
+        $orderCodes = OracleDOCOrderHeader::query()->whereIn('orderNo', $orderCodes)->where('consigneeId','TB')->get()->map(function($item){
+            return $item->orderno;
+        });
+
+        $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 [
+                'type' => 'TB',
+                'component_type' => 'CAINIAO',
+                'owner_code' => $item->docOrderHeader->custemid ?? '',
+                'logistic_code' => $item->docOrderHeader->userdefine1 ?? '',
+                'data' => $item->userdefine1,
+                'logistic_number' => $item['trackingno'],
+                'delivery' => $this->getDelivery($item),
+                'base64' => '',
+            ];
+        })->toArray();
     }
 
-    function getDeliveryInfo($logisticNumber, $params)
+    public function getBase64($item)
     {
-        return [
-            'type' => 'CAINIAO',
-            'owner_id' => '',
-            'logistic_id' => '',
-            'logistic_number' => '',
-            'data' => $this->getDelivery($logisticNumber,$params),
-            'base64' => null
-        ];
+
     }
 
-    function getImg($logisticNumber, $params)
+
+    function getDelivery($item)
     {
+        return null;
+    }
 
+    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();
+        $item->printTemplate;
     }
 }