ajun 5 лет назад
Родитель
Сommit
fd955e8c5f
2 измененных файлов с 20 добавлено и 40 удалено
  1. 2 22
      app/Http/Controllers/TestController.php
  2. 18 18
      app/Services/OrderPackageService.php

+ 2 - 22
app/Http/Controllers/TestController.php

@@ -1480,7 +1480,8 @@ TEXT;
             '73228304758416','73228442802297','75432924540039','75432988921246','EA470967879CN','EA470967896CN','SF1801569733319','SF1889450021688','YT3153735030684'
         ];
 
-        $orderPackages = OrderPackage::query()->selectRaw('count(1) counts,logistic_number')->whereIn('logistic_number',$logistic_numbers)->groupBy('logistic_number')->having('counts','>','1')->get();
+        $orderPackages = OrderPackage::query()->selectRaw('count(1) counts,logistic_number')->where('created_at','>=','2021-01-01')->groupBy('logistic_number')->having('counts','>','1')->get();
+
         foreach ($orderPackages as $orderPackage) {
             $items = OrderPackage::query()->where('logistic_number',$orderPackage['logistic_number'])->with('order')->get();
             if($order = Order::query()->whereIn('id',data_get($items,'*.id'))->where('wms_status','!=','订单取消')->first()){
@@ -1518,26 +1519,5 @@ TEXT;
         }
     }
 
-    public function syncOrderPackages()
-    {
-        /** @var OracleDOCOrderHeaderService $docOrderHeaderService */
-        $docOrderHeaderService = app(OracleDOCOrderHeaderService::class);
-        /** @var OrderService $orderService */
-        $orderService = app(OrderService::class);
-        $orderPackages = OrderPackage::query()->whereNotNull('weight')->whereIn('order_id',function($query){
-            /** @var Builder $query */
-            $query->from((new Order())->getTable())->selectRaw('id')->where('wms_status','订单取消');
-        })->get();
-        foreach ($orderPackages as $orderPackage) {
-            $actAllocationDetails = OracleActAllocationDetails::query()->selectRaw('orderno')->where('PickToTraceID',$orderPackage['logistic_number'])->get();
-            $docOrderHeaders = $docOrderHeaderService->getQuery()->whereIn('DOC_Order_Header.OrderNo',data_get($actAllocationDetails,data_get($actAllocationDetails,'*.orderno')));
-            $orderService->syncOrder($docOrderHeaders);
-        }
-    }
 
-    public function endStationTask()
-    {
-        $stationTask = StationTask::query()->where('id',711)->first();
-        $stationTask->update(['status'=>'完成']);
-    }
 }

+ 18 - 18
app/Services/OrderPackageService.php

@@ -25,6 +25,8 @@ class OrderPackageService
         return app(BatchUpdateService::class)->batchUpdate('order_packages',$params);
     }
 
+    /** @var OrderTrackingService $orderTrackingService */
+    public $orderTrackingService;
 
     /**
      * @param string $logistic_number
@@ -115,7 +117,7 @@ class OrderPackageService
         $orderService = app('OrderService');
         if(!$orderHeaders)return;
         $orders = $orderService->getByWmsOrders($orderHeaders);
-        $this->processCancelOrderPackages($orderHeaders);                           // 取消订单操作 及 过滤
+       // $this->processCancelOrderPackages($orderHeaders);                           // 取消订单操作 及 过滤
         $packages = $this->getByOrderNos(data_get($orderHeaders,'*.orderno'));          // 已有
         $this->createOrderPackage($orderHeaders,$orders,$packages);                     // 创建package
         $this->updatePackage($orderHeaders,$packages);
@@ -306,36 +308,34 @@ class OrderPackageService
         return $map;
     }
 
+    /**
+     * 删除取消的订单
+     * @param $orderHeaders
+     */
     public function processCancelOrderPackages(&$orderHeaders)
     {
+        $this->instant($this->orderTrackingService,'OrderTrackingService');
+
         $cancelOrder = $orderHeaders->filter(function($orderHeader){
             return $orderHeader->wms_status == '订单取消';
         });
 
         $orderPackages = OrderPackage::query()->whereIn('order_id',function($query)use($cancelOrder){
             /** @var Builder $query */
-            $query->from((new Order())->getTable())->where('code',data_get($cancelOrder,'*.orderno'));
+            $query->from((new Order())->getTable())->selectRaw('id')->whereIn('code',data_get($cancelOrder,'*.orderno'));
         })->get();
 
         if($orderPackages->count() == 0)return ;
 
-        $updateParams = [['id','logistic_number']];
-        foreach ($orderPackages as $orderPackage) {
-            if(strstr($orderPackage['logistic_number'],'cancel'))continue;
-            $updateParams[] = ['id'=>$orderPackage['id'],'logistic_number' => $orderPackage['logistic_number'].'_cancel'];
+        $orderPackage_list = $orderPackages->chunk(200);
+        foreach ($orderPackage_list as $orderPackageSet){
+            OrderPackage::query()->whereIn('id',data_get($orderPackageSet,'*.id'))->delete();
+            $items = OrderTracking::query()->whereIn('order_package_commodity_id',function($query)use($orderPackages){
+                /** @var Builder $query */
+                $query->from((new OrderPackageCommodities)->getTable())->selectRaw('id')->whereIn('order_package_id',data_get($orderPackages,'*.id'));
+            })->get();
+            $this->orderTrackingService->deleteOrderTracings($items);
         }
 
-        if(count($updateParams)>0)$this->batchUpdate($updateParams);
-
-        $orderHeaders = $orderHeaders->filter(function($orderHeader){
-            return $orderHeader->wms_status != '订单取消';
-        });
-
-        $items = OrderTracking::query()->whereIn('order_package_commodity_id',function($query)use($orderPackages){
-            /** @var Builder $query */
-            $query->from((new OrderPackageCommodities)->getTable())->selectRaw('id')->whereIn('order_package_id',data_get($orderPackages,'*.id'));
-        })->get();
-
-        app(OrderTrackingService::class)->deleteOrderTracings($items);
     }
 }