ajun %!s(int64=5) %!d(string=hai) anos
pai
achega
dcb075fc5c

+ 49 - 26
app/Console/Commands/SyncWMSOrderTask.php

@@ -37,41 +37,64 @@ class SyncWMSOrderTask extends Command
      * Execute the console command.
      */
     public function handle()
+    {
+        $this->syncCreatedOrder();
+        $this->syncUpdatedOrder();
+    }
+
+    public function syncCreatedOrder()
     {
         /**
          * @var OracleDOCOrderHeaderService $oracleDOCOrderHeaderService
          * @var OrderService $orderService
          */
-        $oracleDOCOrderHeaderService = app('OracleDOCOrderHeaderService');
-        $orderService = app('OrderService');
-        $this->syncCreatedOrder($orderService,$oracleDOCOrderHeaderService);
-        $this->syncUpdateOrder($orderService,$oracleDOCOrderHeaderService);
+        $newest         = config('sync.order_sync.cache_prefix.created_at');
+        $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');
 
-    }
+        $last_date = $orderService->getOrderSyncAt($newest,'newest');                              // 获取时间点
 
-    public function syncCreatedOrder(OrderService $orderService,OracleDOCOrderHeaderService $oracleDOCOrderHeaderService)
-    {
-        $key = 'order_last_created_sync_at';
-        $last_date = $orderService->getOrderSyncAt($key);
-        // 这段时间段内的新增
-        $orderHeaders = $oracleDOCOrderHeaderService->getWmsOrderOnStartDateEdit($last_date); // 根据时间获取OrderHeader
-        $last_order = $orderHeaders->first();
-        $last_created_order = $orderHeaders->where('addTime',$last_order->addtime);          // 最后时间插入的数据
-        // 创建
-        $orderService->syncOrder($orderHeaders);
-        $orderService->pushOrderCreatedCache($last_created_order);                       //
+        $orderHeaders = $oracleDOCOrderHeaderService->getWmsOrderOnStartDateEdit($last_date);           // WMS订单
+
+        $last_order = $orderHeaders->first();                                                           // 时间点靠后的
+        $renewal_orders = $orderHeaders->where('addTime',$last_order->addtime);
+
+        $orderHeaders = $orderService->filterOrderByCache($orderHeaders,$newest_list);                  // 对比缓存
+
+        if(count($orderHeaders)>0 && count($orderHeaders) >0){
+            $orderService->syncOrder($orderHeaders);                                                //  同步订单
+            $orderService->cancelOrderCache($newest_list);                                              //  清除缓存
+            $orderService->pushOrderCache($renewal_orders,$prefixKey,$hasKey,$newest_list);             //  添加缓存
+            $orderService->setOrderSyncAt($newest,$last_order->addTime,count($orderHeaders)>0);   //  更新时间
+        }
     }
 
-    public function syncUpdateOrder(OrderService $orderService,OracleDOCOrderHeaderService $oracleDOCOrderHeaderService)
+    public function syncUpdatedOrder()
     {
-        $key = 'order_last_updated_sync_at';
-        $last_date = $orderService->getOrderSyncAt($key);
-        $orderHeaders = $oracleDOCOrderHeaderService->getWMSOrderOnStartDate($last_date);
-        $last_order = $orderHeaders->first();
-        $last_updated_order =  $orderHeaders->where('addTime',$last_order->addtime);
-
-        // 更新
-        $orderService->syncOrder($orderHeaders);
-        $orderService->pushOrderUpdatedCache($last_updated_order);
+        /**
+         * @var OracleDOCOrderHeaderService $oracleDOCOrderHeaderService
+         * @var OrderService $orderService
+         */
+        $renewal        = config('sync.order_sync.cache_prefix.updated_at');
+        $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');
+
+        $last_date = $orderService->getOrderSyncAt($renewal,'renewal');                               // 获取时间点
+
+        $orderHeaders = $oracleDOCOrderHeaderService->getWMSOrderOnStartDate($last_date);                   // WMS订单
+
+        $renewal_order = $orderHeaders->first();                                                            // 时间点靠后的
+        $renewal_orders =  $orderHeaders->where('addTime',$renewal_order->addtime);
+
+        $orderHeaders = $orderService->filterOrderByCache($orderHeaders,$renewal_list);                     // 对比缓存
+
+        if(count($renewal_orders)>0 && count($orderHeaders)>0){
+            $orderService->syncOrder($orderHeaders);                                                    // 同步订单
+            $orderService->cancelOrderCache($renewal_list);                                                 // 清除缓存
+            $orderService->pushOrderCache($renewal_orders,$prefixKey,$hasKey,$renewal_list);                // 添加缓存
+            $orderService->setOrderSyncAt($renewal,$renewal_order->addTime,count($orderHeaders)>0);   // 更新时间
+        }
     }
 }

+ 8 - 2
tests/Services/OrderService/GetOrderSyncAtTest.php

@@ -20,11 +20,17 @@ class GetOrderSyncAtTest extends TestCase
 
     public function testGetOrderSyncAt()
     {
-        $data = $this->service->getOrderSyncAt();
+        $key = config('sync.order_sync.cache_prefix.created_at');
+        $data = $this->service->getOrderSyncAt($key);
         $this->assertNotEmpty($data);
+        $key = config('sync.order_sync.cache_prefix.updated_at');
+        $value = 'renewal';
+        $data = $this->service->getOrderSyncAt($key,$value );
+        $this->assertNotEmpty($data);
+
     }
 
-    /**
+    /**+
      * @test
      */
     public function getCreatedSyncAt()