ajun 5 лет назад
Родитель
Сommit
0cf77547bd
1 измененных файлов с 24 добавлено и 18 удалено
  1. 24 18
      app/Services/OrderPackageCommoditiesService.php

+ 24 - 18
app/Services/OrderPackageCommoditiesService.php

@@ -606,10 +606,12 @@ class OrderPackageCommoditiesService
          * @var DataHandlerService $dataHandService
          * @var CommodityService $commodityService
          * @var OrderPackageService $orderPackageService
+         * @var OwnerService $ownerService
          */
         $dataHandService = app('DataHandlerService');
         $commodityService = app('CommodityService');
         $orderPackageService  = app( 'OrderPackageService');
+        $ownerService  = app( 'OwnerService');
         if(!$orderHeaders)return ;
 
         $map = [];
@@ -628,6 +630,17 @@ class OrderPackageCommoditiesService
         $orderPackages = $orderPackageService->getByWmsOrders($orderHeaders);
         dump((string)Carbon::now().' getByWmsOrder');
         $orderCommodities = $this->getByWmsOrder($orderHeaders);
+        $owner_code_map = [];
+        $owner_id_map = (function()use(&$orderHeaders,&$ownerService,&$owner_code_map){
+            $owner_id_map = [];
+            $owners = $ownerService->getOwnerByCodes(array_unique(data_get($orderHeaders,'*.customerid')));
+            if(count($owners) == 0) return $owner_id_map;
+            foreach ($owners as $owner) {
+                $owner_id_map[$owner['id']] = $owner;
+                $owner_code_map[$owner['code']]  = $owner;
+            }
+            return $owner_id_map;
+        })();
 
         $package_map = $dataHandService->dataHeader(['logistic_number'],$orderPackages);
         dump((string)Carbon::now().' regroupOrderCommodities');
@@ -643,7 +656,7 @@ class OrderPackageCommoditiesService
         $delete_params = $this->filterDeleteParams($orderAllocationDetails,$orderCommodities);                                           // 删除
         dump((string)Carbon::now().' createOrderCommodities');
         if(count($inner_params)>0)
-            $this->createOrderCommodities($inner_params,$package_map,$commodities);  // 创建 3s
+            $this->createOrderCommodities($inner_params,$package_map,$commodities,$owner_id_map);  // 创建 3s
         dump((string)Carbon::now().' updateOrderCommodities');
         if(count($update_params)>0)
             $this->updateOrderCommodities($update_params);              // 更新
@@ -766,26 +779,19 @@ class OrderPackageCommoditiesService
         return $del_params;
     }
     // TODO  根据数据创建
-    public function createOrderCommodities(&$inner_params,&$package_map,&$commodities)
+    public function createOrderCommodities(&$inner_params,&$package_map,&$commodities,&$owner_id_map)
     {
         /** @var DataHandlerService $dataHandlerService */
         $dataHandlerService  = app('DataHandlerService');
-//        $sku = [];$owners = [];
-//        foreach ($inner_params as $inner_param) {
-//            $sku_code = $inner_param['sku'];$owner_code = $inner_param['owner_code'];
-//            if(!isset($sku[$sku_code]))
-//                $sku[$sku_code] = $sku_code;
-//            if(!isset($owner_code[$owner_code]))
-//                $owners[$owner_code] = $owner_code;
-//        }
-//        $commodities = Commodity::query()->with('owner')->whereHas('owner',function ($query)use($owners){
-//            $query->whereIn('code',$owners);
-//        })->whereIn('sku',$sku)->get();
-        $commodity_map = [];
-        foreach ($commodities as $commodity) {
-            $key = ' owner='.$commodity->owner->code.' sku='.$commodity->sku;
-            $commodity_map[$key] = $commodity;
-        }
+        $commodity_map = (function()use(&$commodities,&$owner_id_map){
+            $map = [];
+            foreach ($commodities as $commodity) {
+                $owner = $owner_id_map[$commodity['owner_id']] ;
+                $key = ' owner='.$owner->code.' sku='.$commodity->sku;
+                $map[$key] = $commodity;
+            }
+            return $map;
+        })();
         $create_params =[];
         $date = Carbon::now();
         foreach ($inner_params as $inner_param) {