|
|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
|
|
+use App\OracleDOCOrderHeader;
|
|
|
use App\Services\OracleDOCOrderHeaderService;
|
|
|
use App\Services\OrderService;
|
|
|
use App\ValueStore;
|
|
|
@@ -70,24 +71,36 @@ class SyncWMSOrderTask extends Command
|
|
|
public function syncCreatedOrder()
|
|
|
{
|
|
|
/**
|
|
|
- * @var OrderService $orderService
|
|
|
+ * @var OracleDocOrderHeaderService $oracleDOCOrderHeaderService
|
|
|
*/
|
|
|
+ $oracleDOCOrderHeaderService = app('OracleDocOrderHeaderService');
|
|
|
+
|
|
|
$newest_key = config('sync.order_sync.cache_prefix.created_at');
|
|
|
$newest_list_key = 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');
|
|
|
- ini_set('memory_limit', '512M');
|
|
|
- $last_date = $this->service->getOrderSyncAt($newest_key,'newest'); // 获取创建时间点
|
|
|
- $orderHeaders = app('OracleDocOrderHeaderService')->getWMSOrderOnStartDate($last_date); // WMS订单
|
|
|
+ ini_set('memory_limit', '1024M');
|
|
|
+ $last_date = $this->service->getOrderSyncAt($newest_key,'newest'); // 获取创建时间点
|
|
|
+
|
|
|
+ $orderHeaders = OracleDOCOrderHeader::query()
|
|
|
+ ->selectRaw(implode(',',OracleDOCOrderHeaderService::$columns))
|
|
|
+ ->whereColumn('DOC_Order_Header.editTime','=','DOC_Order_Header.addTime')
|
|
|
+ ->where('addTime','>=',$last_date)
|
|
|
+ ->orderByDesc('DOC_Order_Header.addTime')->get();
|
|
|
+
|
|
|
if($orderHeaders->count()==0)return;
|
|
|
- $last_order = $orderHeaders->first(); // 时间点靠后的
|
|
|
- $newest_orders = $orderHeaders->where('addtime',$last_order->addtime);
|
|
|
- $orderHeaders = $this->service->filterOrderByCache($orderHeaders,$newest_list_key); // 对比缓存
|
|
|
- if(count($newest_orders)>0 && count($orderHeaders) >0){
|
|
|
- $this->service->syncOrder($orderHeaders); // 同步订单
|
|
|
- $this->service->cancelOrderCache($newest_list_key,$prefixKey); // 清除缓存
|
|
|
- $this->service->pushOrderCache($newest_orders,$prefixKey,$hasKey,$newest_list_key); // 添加缓存
|
|
|
- $this->service->setOrderSyncAt($newest_key,$last_order->addtime,count($orderHeaders)>0); // 更新时间
|
|
|
+ $orderHeaderList = $orderHeaders->chunk(2000);
|
|
|
+ foreach ($orderHeaderList as $item) {
|
|
|
+ $item = $oracleDOCOrderHeaderService->loadMissing($item);
|
|
|
+ $last_order = $item->first(); // 时间点靠后的
|
|
|
+ $newest_orders = $item->where('addtime',$last_order->addtime);
|
|
|
+ $orderHeaders = $this->service->filterOrderByCache($item,$newest_list_key); // 对比缓存
|
|
|
+ if(count($newest_orders)>0 && count($orderHeaders) >0){
|
|
|
+ $this->service->syncOrder($orderHeaders); // 同步订单
|
|
|
+ $this->service->cancelOrderCache($newest_list_key,$prefixKey); // 清除缓存
|
|
|
+ $this->service->pushOrderCache($newest_orders,$prefixKey,$hasKey,$newest_list_key); // 添加缓存
|
|
|
+ $this->service->setOrderSyncAt($newest_key,$last_order->addtime,count($orderHeaders)>0); // 更新时间
|
|
|
+ }
|
|
|
}
|
|
|
unset($orderHeaders,$newest_orders,$last_order);
|
|
|
}
|
|
|
@@ -96,26 +109,36 @@ class SyncWMSOrderTask extends Command
|
|
|
{
|
|
|
/**
|
|
|
* @var OracleDOCOrderHeaderService $oracleDOCOrderHeaderService
|
|
|
- * @var OrderService $orderService
|
|
|
*/
|
|
|
+ $oracleDOCOrderHeaderService = app('OracleDocOrderHeaderService');
|
|
|
$renewal_key = config('sync.order_sync.cache_prefix.updated_at');
|
|
|
$renewal_list_key = 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');
|
|
|
- ini_set('memory_limit', '512M');
|
|
|
-
|
|
|
+ ini_set('memory_limit', '1024M');
|
|
|
$last_date = $this->service->getOrderSyncAt($renewal_key,'renewal'); // 获取更新时间点
|
|
|
- $orderHeaders = app('OracleDocOrderHeaderService')->getWMSOrderOnEditDate($last_date); // WMS订单
|
|
|
+
|
|
|
+ $orderHeaders = OracleDOCOrderHeader::query()->where('addTime',">=",$last_date)
|
|
|
+ ->selectRaw(implode(',',OracleDOCOrderHeaderService::$columns))
|
|
|
+ ->whereColumn('editTime','!=','addTime')
|
|
|
+ ->orderByDesc('editTime')
|
|
|
+ ->get();
|
|
|
|
|
|
if($orderHeaders->count()==0)return;
|
|
|
- $renewal_order = $orderHeaders->first(); // 时间点靠后的
|
|
|
- $renewal_orders = $orderHeaders->where('edittime',$renewal_order->edittime);
|
|
|
- $orderHeaders = $this->service->filterOrderByCache($orderHeaders,$renewal_list_key); // 对比缓存
|
|
|
- if(count($renewal_orders)>0 && count($orderHeaders)>0){
|
|
|
- $this->service->syncOrder($orderHeaders); // 同步订单
|
|
|
- $this->service->cancelOrderCache($renewal_list_key,$prefixKey); // 清除缓存
|
|
|
- $this->service->pushOrderCache($renewal_orders,$prefixKey,$hasKey,$renewal_list_key); // 添加缓存
|
|
|
- $this->service->setOrderSyncAt($renewal_key,$renewal_order->edittime,count($orderHeaders)>0); // 更新时间
|
|
|
+
|
|
|
+
|
|
|
+ $orderHeaderList = $orderHeaders->chunk(2000);
|
|
|
+ foreach ($orderHeaderList as $item) {
|
|
|
+ $item = $oracleDOCOrderHeaderService->loadMissing($item);
|
|
|
+ $renewal_order = $item->first(); // 时间点靠后的
|
|
|
+ $renewal_orders = $item->where('edittime',$renewal_order->edittime);
|
|
|
+ $orderHeaders = $this->service->filterOrderByCache($orderHeaders,$renewal_list_key); // 对比缓存
|
|
|
+ if(count($renewal_orders)>0 && count($orderHeaders)>0){
|
|
|
+ $this->service->syncOrder($item); // 同步订单
|
|
|
+ $this->service->cancelOrderCache($renewal_list_key,$prefixKey); // 清除缓存
|
|
|
+ $this->service->pushOrderCache($renewal_orders,$prefixKey,$hasKey,$renewal_list_key); // 添加缓存
|
|
|
+ $this->service->setOrderSyncAt($renewal_key,$renewal_order->edittime,count($orderHeaders)>0); // 更新时间
|
|
|
+ }
|
|
|
}
|
|
|
unset($orderHeaders,$renewal_orders,$renewal_order);
|
|
|
}
|