ajun преди 5 години
родител
ревизия
6c878c06cb

+ 2 - 1
app/Console/Commands/SyncWMSOrderTask.php

@@ -52,7 +52,7 @@ class SyncWMSOrderTask extends Command
         $newest_list    = config('sync.order_sync.cache_prefix.newest_list');
         $hasKey         = config('sync.order_sync.cache_prefix.newest_has');
         $prefixKey      = config('sync.order_sync.cache_prefix.newest');
-
+        ini_set('memory_limit', '512M');
         $orderService = app('OrderService');
         $oracleDOCOrderHeaderService = app('OracleDocOrderHeaderService');
 
@@ -82,6 +82,7 @@ class SyncWMSOrderTask extends Command
         $renewal_list   = config('sync.order_sync.cache_prefix.renewal_list');
         $hasKey         = config('sync.order_sync.cache_prefix.renewal_has');
         $prefixKey      = config('sync.order_sync.cache_prefix.renewal');
+        ini_set('memory_limit', '512M');
 
         $orderService = app('OrderService');
         $oracleDOCOrderHeaderService = app('OracleDocOrderHeaderService');

+ 1 - 1
app/Services/OracleDOCOrderHeaderService.php

@@ -71,7 +71,7 @@ Class OracleDOCOrderHeaderService
             ->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');
+                $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');
             },'oracleBASCode'=>function($query){

+ 26 - 15
app/Services/OrderPackageCommoditiesService.php

@@ -612,7 +612,18 @@ class OrderPackageCommoditiesService
         $orderPackageService  = app( 'OrderPackageService');
         if(!$orderHeaders)return ;
 
-        $commodityService->getByWmsOrders($orderHeaders);   // 预先处理     3s
+        $map = [];
+        foreach ($orderHeaders as $orderHeader) {
+            $Order_Details = $orderHeader->oracleDOCOrderDetails;
+            $Order_Details->each(function($item)use(&$map){
+                if(!empty($item['customerid']) && !empty($item['sku'])){
+                    $key = "owner_code_{$item['customerid']}_sku_{$item['sku']}";
+                    $map[$key] =  ['owner_code'=>$item['customerid'],'sku'=>$item['sku']];
+                }
+            });
+        }
+        $commodities = $commodityService->getCommoditiesByMap($map);   // 预先处理     3s
+
         $orderPackages = $orderPackageService->getByWmsOrders($orderHeaders);
         $orderCommodities = $this->getByWmsOrder($orderHeaders);
 
@@ -623,11 +634,11 @@ class OrderPackageCommoditiesService
         $del_orderCommodities  =[];
 
         $update_params =$this->filterUpdateParams($orderAllocationDetails,$orderCommodities,$del_orderCommodities);                  // 修改
-        $inner_params = $this->filterInnerParams($orderAllocationDetails,$orderCommodities);                              // 创建
+        $inner_params = $this->filterInnerParams($orderAllocationDetails,$orderCommodities);                                            // 创建
         $delete_params = $this->filterDeleteParams($orderAllocationDetails,$orderCommodities);                                           // 删除
 
         if(count($inner_params)>0)
-            $this->createOrderCommodities($inner_params,$package_map);  // 创建 3s
+            $this->createOrderCommodities($inner_params,$package_map,$commodities);  // 创建 3s
 
         if(count($update_params)>0)
             $this->updateOrderCommodities($update_params);              // 更新
@@ -750,21 +761,21 @@ class OrderPackageCommoditiesService
         return $del_params;
     }
     // TODO  根据数据创建
-    public function createOrderCommodities(&$inner_params,&$package_map)
+    public function createOrderCommodities(&$inner_params,&$package_map,&$commodities)
     {
         /** @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();
+//        $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;

+ 24 - 7
app/Services/OrderService.php

@@ -678,7 +678,7 @@ class OrderService
     public function getByWmsOrders($orderHeaders){
         if(!$orderHeaders){return null;}
         $order_nos = data_get($orderHeaders,'*.orderno');
-        return Order::query()->with('packages.commodites')->whereIn('code',$order_nos)->get();
+        return Order::query()->with('packages.commodities')->whereIn('code',$order_nos)->get();
     }
 
     public function 返回有问题件的订单号($orders)
@@ -771,13 +771,16 @@ class OrderService
         return  $orders ? $orders->first() : null ;
     }
 
-     public function syncOrder(&$orderHeaders)
+    public function syncOrder(&$orderHeaders)
     {
         /**
          * @var OrderPackageService $packageService
+         * @var OrderCommodityService $orderCommodityService
          */
         $packageService = app("OrderPackageService");
+        $orderCommodityService = app("OrderCommodityService");
         $this->syncOrderByWMSOrderHeaders($orderHeaders);
+        $orderCommodityService->syncOrderCommodities($orderHeaders);
         $packageService->syncOrderPackage($orderHeaders);
     }
 
@@ -794,11 +797,24 @@ class OrderService
         $logisticService = app("LogisticService");
         $shopService = app('ShopService');
         $warehouseService = app('WarehouseService');
-
-        $owners = $ownerService->getByWmsOrders($orderHeaders);
-        $logistics = $logisticService->getByWmsOrders($orderHeaders);
-        $shops = $shopService->getByWmsOrders($orderHeaders);
-        $warehouses = $warehouseService->getByWmsOrders($orderHeaders);
+        $owner_codes = [];$logistic_codes = [];$warehouse_codes = [];$shop_names = [];
+        foreach ($orderHeaders as $orderHeader) {
+            if(!empty($orderHeader['customerid']))
+                $owner_codes[$orderHeader['customerid']] = $orderHeader['customerid'];
+            if(!empty($orderHeader['warehouseid']))
+                $warehouse_codes[$orderHeader['warehouseid']] = $orderHeader['warehouseid'];
+            if(!empty($orderHeader['userdefine1']))
+                $logistic_codes[$orderHeader['userdefine1']] = $orderHeader['userdefine1'];
+            if(!empty($orderHeader['issuepartyname']) && !empty($orderHeader['customerid'])){
+                $value = ['owner_code'=>$orderHeader['customerid'],'issuepartyname'=>$orderHeader['issuepartyname']];
+                $key = "owner_code_{$orderHeader['customerid']}_issuepartyname_{$orderHeader['issuepartyname']}";
+                $shop_names[$key] = $value;
+            }
+        }
+        $owners = $ownerService->getOwnerByCodes($owner_codes);
+        $logistics = $logisticService->getLogisticByCodes($logistic_codes);
+        $shops = $shopService->getShopByCodeMap($shop_names);
+        $warehouses = $warehouseService->getWareHouseByCode($warehouse_codes);
         $orders = $this->getByWmsOrders($orderHeaders);
         $created_params = $this->getCreateOrderModelsByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops); //3s
 
@@ -832,6 +848,7 @@ class OrderService
         $shop_map = $dataHandlerService->dataHeader(['name','owner_id'],$shops);
         $order_map = $dataHandlerService->dataHeader(['code'],$orders);
 
+
 //        $collect = collect();
         $inner_params  = [];
         $date = (string)Carbon::now();