Pārlūkot izejas kodu

Merge branch 'zengjun' of ssh://was.baoshi56.com:10022/var/git/bswas

LD 5 gadi atpakaļ
vecāks
revīzija
7d36f7524c

+ 27 - 0
app/Http/Controllers/TestController.php

@@ -1199,4 +1199,31 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         if(count($update_params) == 0)return ;
         $orderTrackingService->batchUpdate($update_params);
     }
+
+    public function editOrderTracking(){
+        $orderTrackingService  = new OrderTrackingService();
+        $dataHandlerService  = new DataHandlerService();
+        $orderTrackings = OrderTracking::query()->with('commodities.package')->where('client','like','天猫%')->get();
+        $orderTracking_arr = $orderTrackings->chunk(100);
+        foreach ($orderTracking_arr as $items) {
+            $update_params = [['id','order_client_code']];
+            $order_nos =  array_unique(data_get($items,'*.commodities.package.order.code'));
+            $orderHeaders = OracleDOCOrderHeader::query()
+                ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode','oracleBASCustomer'])
+                ->whereIn('DOC_Order_Header.OrderNo',$order_nos)->get();
+            $orderHeader_map = $dataHandlerService->dataHeader(['orderno'],$orderHeaders);
+            foreach ($items as $orderTracking) {
+                $commodities = $orderTracking->commodities;
+                $orderHeader = $dataHandlerService->getKeyValue(['orderno'=>$commodities->package->order->code],$orderHeader_map);
+                $order_client_code = $orderTrackingService->get_d_edit_03($orderHeader,$commodities);
+                $update_params[] = [
+                    'id' => $orderTracking->id,
+                    'order_client_code' => $order_client_code
+                ];
+            }
+            $orderTrackingService->batchUpdate($update_params);
+            unset($update_params,$orderHeaders,$orderHeader_map);
+        }
+        unset($orderTrackings,$orderTracking_arr);
+    }
 }

+ 51 - 12
app/Services/OrderTrackingService.php

@@ -230,11 +230,15 @@ class OrderTrackingService
         $BasSKUs = app(OracleBasSkuService::class)->获取BasSKu_通过WMSOrderHeaders($orderHeaders);
         $BasSKUs_code_sku_map = $dataService->dataHeader(['customerid','sku'],$BasSKUs);
         $order_nos = data_get($orderHeaders,'*.orderno');
-        $order_package_commodities  = OrderPackageCommodities::query()
-            ->with('package.order')
-            ->whereHas('package.order',function($query) use ($order_nos){
-                $query->whereIn('code',$order_nos);
-            })->get();
+
+        $order_package_commodities = OrderPackageCommodities::query()->with(['package.order','commodity'])
+            ->whereIn('order_package_id',function($query)use($order_nos){
+                $query->from('order_packages')->select('id')->whereIn('order_id',function($query)use($order_nos){
+                    $query->from('orders')->select('id')->whereIn('code',$order_nos);
+                });
+            })
+            ->get();
+
         $order_package_commodities_ids = data_get($order_package_commodities,'*.id');
         $order_trackings = OrderTracking::query()->whereIn('order_package_commodity_id',$order_package_commodities_ids)->get();
         $is_exist_ids = data_get($order_trackings,'*.order_package_commodity_id');
@@ -268,10 +272,16 @@ class OrderTrackingService
             $basSkU = $dataService->getKeyValue(['customerid'=>$owner->code,'sku'=>$item->commodity->sku],$BasSKUs_code_sku_map);
             $gross_weight = round($basSkU->grossweight * $item->amount, 2);
             $bulk = round($basSkU->cube * $item->amount, 2);
+
+            $order_client_code = $order->client_code;
+            if($param['client']=='天猫'){
+                $order_client_code = $this->get_d_edit_03($order_header,$item) ;
+            }
+
             $params[] =[
                 'order_package_commodity_id' => $item->id,
                 'owner_id' => $order->owner_id,
-                'order_client_code' =>$order->client_code,
+                'order_client_code' =>$order_client_code,
                 'sale' => $param['sale'],
                 'client' => $param['client'],
                 'created_at' => $order->created_at,
@@ -294,6 +304,25 @@ class OrderTrackingService
         }
     }
 
+    public function get_d_edit_03($orderHeader,$orderPackageCommodity){
+        $sku_line_no = null;
+        foreach ($orderHeader->actAllocationDetails as $actAllocationDetail) {
+            if($actAllocationDetail->picktotraceid == $orderPackageCommodity->package->logistic_number
+                && $orderPackageCommodity->commodity->sku ==  $actAllocationDetail->sku){
+                $sku_line_no = $actAllocationDetail->skulineno;
+                break;
+            }
+        }
+        if($sku_line_no==null)return null;
+        foreach ($orderHeader->oracleDOCOrderDetails as $oracleDOCOrderDetail) {
+            if($oracleDOCOrderDetail->orderlineno == $sku_line_no) {
+                return $oracleDOCOrderDetail['d_edi_03'];
+            }
+        }
+        return null;
+    }
+
+
     public function updateByWmsOrderHeaders($orderHeaders)
     {
         if(!$orderHeaders){return ;}
@@ -301,11 +330,15 @@ class OrderTrackingService
         $dataService = app(DataHandlerService::class);
         $order_nos = data_get($orderHeaders,'*.orderno');
 
-        $order_package_commodities = OrderPackageCommodities::query()->with('package.order')
-            ->whereHas('package.order',function($query) use ($order_nos){
-                $query->whereIn('code',$order_nos);
+        $order_package_commodities = OrderPackageCommodities::query()
+            ->with(['package.order','commodity'])
+            ->whereIn('order_package_id',function($query)use($order_nos){
+                $query->from('order_packages')->select('id')->whereIn('order_id',function($query)use($order_nos){
+                    $query->from('orders')->select('id')->whereIn('code',$order_nos);
+                });
             })->get();
 
+
         $orderTrackings = OrderTracking::query()->whereIn('order_package_commodity_id',data_get($order_package_commodities,'*.id'))->get();
 
         $order_tracking_id_map = [];
@@ -458,9 +491,14 @@ class OrderTrackingService
     {
         if($orderHeaders->count() == 0){return  collect();}
         $orderNos = data_get($orderHeaders,'*.orderno');
-        return OrderTracking::query()->with('commodities.package.order')
-            ->whereHas('commodities.package.order',function($query)use($orderNos){
-                $query->whereIn('code',$orderNos);
+        return OrderPackageCommodities::query()
+            ->with('commodities.package.order')
+            ->whereIn('order_package_commodity_id',function($query)use($orderNos){
+                $query->from('order_package_commodities')->select('id')->whereIn('order_package_id',function($query)use($orderNos) {
+                    $query->from('order_packages')->select('id')->whereIn('order_id', function ($query) use ($orderNos) {
+                        $query->from('orders')->select('id')->whereIn('code', $orderNos);
+                    });
+                });
             })->get();
     }
 
@@ -528,4 +566,5 @@ class OrderTrackingService
         }
     }
 
+
 }