Forráskód Böngészése

OrderService修改

ajun 5 éve
szülő
commit
526a04fda3
1 módosított fájl, 71 hozzáadás és 30 törlés
  1. 71 30
      app/Services/OrderService.php

+ 71 - 30
app/Services/OrderService.php

@@ -986,65 +986,106 @@ class OrderService
         }
     }
 
+
     // TODO
     public function setOrderSyncAt($key,$date,$bool=true){
-        if($bool) ValueStore::query()->where('name',$key)->update(['value'=>$date]);
-        ValueStore::query()->where('name',$key)->update(['value'=>Carbon::parse($date)->subSeconds(1)]);
+        if($bool) ValueStore::query()->where('name',$key)->update(['value'=>Carbon::parse($date)->subSeconds(1)]);
+        ValueStore::query()->where('name',$key)->update(['value'=>$date]);
     }
     // TODO
-    public function getOrderSyncAt(string $key ='order_last_created_sync_at'){
+    public function getOrderSyncAt($key,$type='newest'){
         $keyValue = ValueStore::query()->where('name',$key)->first();
         if($keyValue->value)return $keyValue->value;
-        if($key ='order_last_created_sync_at') return Order::query()->orderByDesc('created_at')->first()->created_at;
-        return Order::query()->orderByDesc('wms_edittime')->first()->created_at;
+        if($type == 'newest') $order = Order::query()->orderByDesc('Created_At')->first();
+        else $order = Order::query()->orderByDesc('Wms_EditTime')->first();
+        if($order)return $order->created_at;
+        return Carbon::now()->subSeconds(65);
     }
     // TODO
-    public function pushOrderCreatedCache($orderHeaders){
+    public function pushOrderCache($orderHeaders,$prefixKey,$hasKey,$list_key){
         $list = [];
-        collect($orderHeaders)->each(function($item,&$list){
+        collect($orderHeaders)->each(function($item)use(&$list,$prefixKey){
             $list[] =$item->orderno;
-            Cache::put('order_newest_',$item->orderno);
-        });
-        if(count($orderHeaders) > 0){
-            Cache::put('order_newest_cache_keys',$list);
-            Cache::put('order_newest_has_set',true);
-        }
-    }
-    // TODO
-    public function pushOrderUpdatedCache($orderHeaders)
-    {
-        $list = Cache::get('order_newest_update_cache_keys');
-        collect($list)->each(function($item){
-            Cache::forget($item);
-        });
-        $list = collect();
-        collect($orderHeaders)->each(function($item)use($list){
-            $list->push($item->orderno);
-            Cache::put('order_newest_update_'.$item->orderno,true);
+            Cache::put($prefixKey.$item->orderno,true);
         });
         if(count($orderHeaders) > 0){
-            Cache::put('order_newest_update_cache_keys',$list->toArray());
-            Cache::put('order_newest_update_has_set',true);
+            Cache::put($list_key,$list);
+            Cache::put($hasKey,true);
         }
     }
     // TODO
-    public function filterOrderByCache($orderHeaders,$key ='order_newest_')
+    public function filterOrderByCache($orderHeaders,$key)
     {
         /**
          * @var OracleDOCOrderHeader $item
          */
         if(!$orderHeaders)return $orderHeaders;
+        if(!$key)return $orderHeaders;
         return array_filter($orderHeaders,function($item)use($key){
             $bool = Cache::get($key.$item->orderno);
-            if($bool)Cache::forget($key.$item->orderno);
             return !$bool;
         });
     }
+
+    public function cancelOrderCache($key)
+    {
+        $list = Cache::get($key);
+        collect($list)->each(function($item){
+            Cache::forget($item);
+        });
+    }
     // TODO
     public function syncCreatedOrder(){
+        /**
+         * @var OracleDOCOrderHeaderService $oracleDOCOrderHeaderService
+         * @var OrderService $orderService
+         */
+        $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');                              // 获取时间点
+
+        $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);   //  更新时间
+        }
     }
     // TODO
-    public function syncUpdateOrder(){
+    public function syncUpdatedOrder(){
+        /**
+         * @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);   // 更新时间
+        }
     }
 }