Ver Fonte

修改CommodityService的商品策略

ajun há 5 anos atrás
pai
commit
41c8868d56

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

@@ -1295,4 +1295,24 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         ValueStore::query()->where('name','order_last_created_sync_at')->update(['value'=>'2020-12-20 09:00:00']);
         ValueStore::query()->where('name','order_last_updated_sync_at')->update(['value'=>'2020-12-20 09:00:00']);
     }
+
+    public function syncOrderTask()
+    {
+        $start_data = Carbon::parse('2020-12-10 00:00:00');
+        $orderHeaders = OracleDOCOrderHeader::query()->selectRaw(implode(',',OracleDOCOrderHeaderService::$columns))
+            ->with(['oracleBASCustomer'=>function($query){
+                $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
+            },'oracleDOCOrderDetails'=>function($query){
+                $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered,doc_order_details.Location');
+            }, 'actAllocationDetails'=>function($query){
+                $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku,ACT_Allocation_Details.Location');
+            },'oracleBASCode'=>function($query){
+                $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
+            },'orderType'=>function($query){
+                $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
+            }])->where('DOC_Order_Header.AddTime','>',$start_data)
+            ->get();
+        $service = new OrderService();
+        $service->syncOrder($orderHeaders);
+    }
 }

+ 6 - 13
app/Services/OrderCommodityService.php

@@ -58,7 +58,6 @@ Class OrderCommodityService
         if(count($sku_codes) ==0)return;
         $owners = $ownerService->getOwnerByCodes($owner_codes);
         $owner_id_maps = $dataHandlerService->dataHeader(['id'],$owners);
-//        $commodities = $commodityService->get_(data_get($owners,'*.id'),$sku_codes,[],true);
         $commodities = $commodityService->getCommoditiesByMaps($map);
         unset($owner_codes,$sku_codes);
         $commodity_map = [];
@@ -67,11 +66,9 @@ Class OrderCommodityService
             $key = "_owner_code_{$owner['code']}_sku_{$commodity['sku']}";
             $commodity_map[$key] = $commodity;
         }
-
-        $orderCommodities = OrderCommodity::query()->with(['order','commodity'])->whereIn('order_id',function ($query)use($orderNos){
-            $query->from('orders')->select('id')->whereIn('code',$orderNos);
-        })->get();
         $orders = Order::query()->with('packages.commodities')->whereIn('code',$orderNos)->get();
+        if($orders->count()==0)return;
+        $orderCommodities = OrderCommodity::query()->with(['order','commodity'])->whereIn('order_id',data_get($orders,'*.id'))->get();
         $order_code_map = $dataHandlerService->dataHeader(['code'],$orders);
         $ActAllocationDetail_maps =  $this->getRegroupActAllocationDetails($orderHeaders);
         $orderCommodity_maps = $this->getRegroupOrderCommodities($orderCommodities,$owner_id_maps);
@@ -84,13 +81,8 @@ Class OrderCommodityService
         $inner_params = $this->getInnerParamsByParams($create_params,$order_code_map,$commodity_map);
         unset($create_params,$order_code_map,$orders,$commodity_map);
 
-//        $update_params = $this->getUpdateParamsByParamsAndDeleteIds($inner_params,$delete_ids);
-//        if(count($update_params)>0)$this->batchUpdate($update_params);
-//        unset($update_params);
-
         if(count($inner_params)>0){
-            $inner_params = array_chunk($inner_params,4000);
-            foreach ($inner_params as $inner_param) {$this->insert($inner_param);}
+            foreach (array_chunk($inner_params,4000) as $inner_param) {$this->insert($inner_param);}
             unset($inner_params);
         }
 
@@ -147,7 +139,7 @@ Class OrderCommodityService
             if(empty($map[$key]))$map[$key]=[];
             $map[$key][]  =[
                 'id' => $orderCommodity->id,
-                'code' => $orderCommodity->order->code ?? '',
+                'code' => $order->code ?? '',
                 'sku' => $sku,
                 'owner_code' => $owner->code ?? '',
                 'amount' => $orderCommodity->amount,
@@ -206,7 +198,7 @@ Class OrderCommodityService
         return $params;
     }
 
-    public function getInnerParamsByParams(&$create_params,&$order_code_map,&$commodity_map)
+    public function getInnerParamsByParams($create_params,$order_code_map,$commodity_map)
     {
         /** @var DataHandlerService  $dataHandlerService */
         $dataHandlerService = app(DataHandlerService::class);
@@ -214,6 +206,7 @@ Class OrderCommodityService
         $date = (string) Carbon::now();
         foreach ($create_params as $item) {
             $order = $dataHandlerService->getKeyValue(['code'=>$item['code']],$order_code_map);
+            if(!$order)continue;
             $key = "_owner_code_{$item['owner_code']}_sku_{$item['sku']}";
             $commodity = $commodity_map[$key] ?? null;
             $inner_params[] = [

+ 1 - 3
app/Services/OrderService.php

@@ -864,8 +864,8 @@ class OrderService
             collect($created_params)->chunk(3500)->each(function($inner_params){
                 $this->insert($inner_params->toArray());
             });
-            unset($created_params);
         }
+        unset($created_params);
         $update_params = [
             ['id','code','warehouse_id','owner_id','batch_id','shop_id','logistic_id','consignee_name','consignee_phone','province','city','district','address','client_code','wms_status','created_at','updated_at','wms_edittime','order_type']
         ];
@@ -899,7 +899,6 @@ class OrderService
             $order_model = $this->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map,$batch_map,$date);
             $inner_params[] = $order_model;
         }
-        unset($warehouse_map,$owner_map,$logistic_map,$shop_map,$order_map,$batch_map);
         return $inner_params;
     }
 
@@ -927,7 +926,6 @@ class OrderService
                 $collect->push($order);
             }
         }
-        unset($orderHeader_map,$warehouse_map,$owner_map,$logistic_map,$shop_map,$batch_map);
         return $collect;
     }