ajun 5 роки тому
батько
коміт
f90d6097ab

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

@@ -1326,22 +1326,34 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
 
 
     public function syncOrderTask()
     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 = new OrderService();
-        $service->syncOrder($orderHeaders);
+        $start_data = Carbon::parse('2020-12-10 00:00:00');
+        $end_data = Carbon::parse('2020-12-11 00:00:00');
+        $orderNos = OracleDOCOrderHeader::query()->selectRaw('orderno')
+            ->where('addTime', '>=', $start_data)
+            ->where('addTime', '<=', $end_data)
+            ->get()->map(function($orderHeader){
+                return $orderHeader->orderno;
+            });
+        $order_no_list = $orderNos->chunk(3000);
+        foreach ($order_no_list as $order_nos) {
+            $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');
+                }])
+                ->whereIn('DOC_Order_Header.OrderNo', $order_nos)
+                ->get();
+            $service->syncOrder($orderHeaders);
+            unset($orderHeaders);
+        }
     }
     }
     public function cleanOrderIssueRepeat()
     public function cleanOrderIssueRepeat()
     {
     {

+ 10 - 7
app/Imports/OrderIssueImport.php

@@ -9,6 +9,7 @@ use App\OrderIssue;
 use App\OrderIssueProcessLog;
 use App\OrderIssueProcessLog;
 use App\OrderIssueType;
 use App\OrderIssueType;
 use App\OrderPackage;
 use App\OrderPackage;
+use App\Services\OrderService;
 use App\Services\RejectedService;
 use App\Services\RejectedService;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Auth;
@@ -25,6 +26,9 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
 
 
     public function Collection(Collection $collection)
     public function Collection(Collection $collection)
     {
     {
+        /** @var OrderService $orderService */
+        $orderService = app('OrderService');
+
         $endIS = false;
         $endIS = false;
         $headerRow =  $collection->toArray()[0];
         $headerRow =  $collection->toArray()[0];
         if (!isset($headerRow['原始运单号']) || !isset($headerRow['情况说明']) || !isset($headerRow['问题类别'])) {
         if (!isset($headerRow['原始运单号']) || !isset($headerRow['情况说明']) || !isset($headerRow['问题类别'])) {
@@ -34,7 +38,6 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
         }
         }
         $exception = [];
         $exception = [];
         $sum = 2;
         $sum = 2;
-        $orderService = app('OrderService');
         $rejectedService = new RejectedService();
         $rejectedService = new RejectedService();
         if ($endIS) {
         if ($endIS) {
             foreach ($collection as $row) {
             foreach ($collection as $row) {
@@ -75,20 +78,20 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
                         }
                         }
                     }
                     }
                 }
                 }
-                $client_no = null;$order_no = null;
+                $client_no = null;
+                $order_nos = [];
                 if ($count) {
                 if ($count) {
                     $orderHeader = OracleDOCOrderHeader::query()->where('soreference5', $logistic_number)->first();
                     $orderHeader = OracleDOCOrderHeader::query()->where('soreference5', $logistic_number)->first();
                     $client_no = $orderHeader['soreference1'];
                     $client_no = $orderHeader['soreference1'];
-                    $order_no = $orderHeader['orderno'];
+                    $order_nos[] = $orderHeader['orderno'];
                 } else if ($detailCount) {
                 } else if ($detailCount) {
                     $detail = OracleActAllocationDetails::query()->where('picktotraceid', $logistic_number)->first();
                     $detail = OracleActAllocationDetails::query()->where('picktotraceid', $logistic_number)->first();
                     $orderHeader = OracleDOCOrderHeader::query()->where('orderno', $detail['orderno'])->first();
                     $orderHeader = OracleDOCOrderHeader::query()->where('orderno', $detail['orderno'])->first();
                     $client_no = $orderHeader['soreference1'];
                     $client_no = $orderHeader['soreference1'];
-                    $order_no = $orderHeader['orderno'];
+                    $order_nos[] = $orderHeader['orderno'];
                 }
                 }
-                $order = null;
-                if($order_no)$order = Order::query()->where('code',$order_no)->first();
-                if(!$order)$order = $orderService->findOrCreateByClientCode($client_no);
+                $orderService->syncOrderInfoByWmsOrderNos($order_nos);
+                $order = Order::query()->where('code',$order_nos[0])->first();
                 $orderIssue = OrderIssue::query()->where('order_id', $order['id'])->first();
                 $orderIssue = OrderIssue::query()->where('order_id', $order['id'])->first();
                 $rejectedBill = $rejectedService->getRejectedByClientNo($client_no);
                 $rejectedBill = $rejectedService->getRejectedByClientNo($client_no);
                 if ($orderIssue) {
                 if ($orderIssue) {

+ 6 - 8
app/Services/OrderService.php

@@ -358,8 +358,7 @@ class OrderService
     {
     {
         /** @var OrderPackageService $orderPackageService */
         /** @var OrderPackageService $orderPackageService */
         $orderPackageService = app('OrderPackageService');
         $orderPackageService = app('OrderPackageService');
-        $order = Order::with('packages.commodities.commodity')->where('client_code', $clientCode)->first();
-        if($order)return $order;
+        $order = Order::query()->where('client_code', $clientCode)->first();
         $orderHeader = app('OracleDocOrderHeaderService')->first(['SOReference1'=> $clientCode]);
         $orderHeader = app('OracleDocOrderHeaderService')->first(['SOReference1'=> $clientCode]);
         if ($orderHeader == null) {
         if ($orderHeader == null) {
             return null;
             return null;
@@ -857,7 +856,6 @@ class OrderService
         $update_order = $this->getUpdateOrderModelByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops,$batches);
         $update_order = $this->getUpdateOrderModelByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops,$batches);
 
 
         unset($owners,$logistics,$shops,$warehouses,$batches);
         unset($owners,$logistics,$shops,$warehouses,$batches);
-
         // 转换插入 3s
         // 转换插入 3s
         if(count($created_params) > 0){
         if(count($created_params) > 0){
             collect($created_params)->chunk(3500)->each(function($inner_params){
             collect($created_params)->chunk(3500)->each(function($inner_params){
@@ -1215,16 +1213,16 @@ class OrderService
     {
     {
         if(empty($orderNos))return ;
         if(empty($orderNos))return ;
         if(count($orderNos)==0)return;
         if(count($orderNos)==0)return;
-        $orderHeaders = $this->oracleDOCOrderHeaderService->getOrderInfoByOrderNos($orderNos);
+        $orderHeaders = app('OracleDocOrderHeaderService')->getOrderInfoByOrderNos($orderNos);
         $this->syncOrderInfoByWMSOrderHeaders($orderHeaders);
         $this->syncOrderInfoByWMSOrderHeaders($orderHeaders);
     }
     }
 
 
     public function syncOrderInfoByWMSOrderHeaders($orderHeaders){
     public function syncOrderInfoByWMSOrderHeaders($orderHeaders){
-        if(empty($orderNos))return ;
-        if(count($orderNos)==0)return;
+        if(empty($orderHeaders))return ;
+        if(count($orderHeaders)==0)return;
         $this->syncOrderByWMSOrderHeaders($orderHeaders);
         $this->syncOrderByWMSOrderHeaders($orderHeaders);
-        $this->orderCommodityService->syncOrderCommodities($orderHeaders);
-        $this->packageService->syncOrderPackage($orderHeaders);
+        app('OrderPackageService')->syncOrderPackage($orderHeaders);
+        app("OrderPackageCommoditiesService")->syncOrderPackageCommodities($orderHeaders);
     }
     }
 
 
     public function update(array $params, array $values)
     public function update(array $params, array $values)