|
@@ -986,65 +986,106 @@ class OrderService
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// TODO
|
|
// TODO
|
|
|
public function setOrderSyncAt($key,$date,$bool=true){
|
|
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
|
|
// TODO
|
|
|
- public function getOrderSyncAt(string $key ='order_last_created_sync_at'){
|
|
|
|
|
|
|
+ public function getOrderSyncAt($key,$type='newest'){
|
|
|
$keyValue = ValueStore::query()->where('name',$key)->first();
|
|
$keyValue = ValueStore::query()->where('name',$key)->first();
|
|
|
if($keyValue->value)return $keyValue->value;
|
|
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
|
|
// TODO
|
|
|
- public function pushOrderCreatedCache($orderHeaders){
|
|
|
|
|
|
|
+ public function pushOrderCache($orderHeaders,$prefixKey,$hasKey,$list_key){
|
|
|
$list = [];
|
|
$list = [];
|
|
|
- collect($orderHeaders)->each(function($item,&$list){
|
|
|
|
|
|
|
+ collect($orderHeaders)->each(function($item)use(&$list,$prefixKey){
|
|
|
$list[] =$item->orderno;
|
|
$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){
|
|
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
|
|
// TODO
|
|
|
- public function filterOrderByCache($orderHeaders,$key ='order_newest_')
|
|
|
|
|
|
|
+ public function filterOrderByCache($orderHeaders,$key)
|
|
|
{
|
|
{
|
|
|
/**
|
|
/**
|
|
|
* @var OracleDOCOrderHeader $item
|
|
* @var OracleDOCOrderHeader $item
|
|
|
*/
|
|
*/
|
|
|
if(!$orderHeaders)return $orderHeaders;
|
|
if(!$orderHeaders)return $orderHeaders;
|
|
|
|
|
+ if(!$key)return $orderHeaders;
|
|
|
return array_filter($orderHeaders,function($item)use($key){
|
|
return array_filter($orderHeaders,function($item)use($key){
|
|
|
$bool = Cache::get($key.$item->orderno);
|
|
$bool = Cache::get($key.$item->orderno);
|
|
|
- if($bool)Cache::forget($key.$item->orderno);
|
|
|
|
|
return !$bool;
|
|
return !$bool;
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public function cancelOrderCache($key)
|
|
|
|
|
+ {
|
|
|
|
|
+ $list = Cache::get($key);
|
|
|
|
|
+ collect($list)->each(function($item){
|
|
|
|
|
+ Cache::forget($item);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
// TODO
|
|
// TODO
|
|
|
public function syncCreatedOrder(){
|
|
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
|
|
// 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); // 更新时间
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|