|
|
@@ -681,7 +681,7 @@ class OrderService
|
|
|
public function getByWmsOrders($orderHeaders){
|
|
|
if(!$orderHeaders){return null;}
|
|
|
$order_nos = data_get($orderHeaders,'*.orderno');
|
|
|
- return Order::query()->whereIn('code',$order_nos)->get();
|
|
|
+ return Order::query()->with('packages.commodities')->whereIn('code',$order_nos)->get();
|
|
|
}
|
|
|
|
|
|
public function 返回有问题件的订单号($orders)
|
|
|
@@ -774,20 +774,25 @@ class OrderService
|
|
|
return $orders ? $orders->first() : null ;
|
|
|
}
|
|
|
|
|
|
- // TODO
|
|
|
public function syncOrder(&$orderHeaders)
|
|
|
{
|
|
|
/**
|
|
|
* @var OrderPackageService $packageService
|
|
|
+ * @var OrderCommodityService $orderCommodityService
|
|
|
*/
|
|
|
$packageService = app("OrderPackageService");
|
|
|
+ $orderCommodityService = app("OrderCommodityService");
|
|
|
+
|
|
|
$this->syncOrderByWMSOrderHeaders($orderHeaders);
|
|
|
+
|
|
|
+ $orderCommodityService->syncOrderCommodities($orderHeaders);
|
|
|
+
|
|
|
$packageService->syncOrderPackage($orderHeaders);
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function syncOrderByWMSOrderHeaders(&$orderHeaders)
|
|
|
{
|
|
|
- if($orderHeaders->isEmpty())return [];
|
|
|
+ if($orderHeaders->isEmpty())return;
|
|
|
/**
|
|
|
* @var OwnerService $ownerService
|
|
|
* @var LogisticService $logisticService
|
|
|
@@ -798,33 +803,51 @@ class OrderService
|
|
|
$logisticService = app("LogisticService");
|
|
|
$shopService = app('ShopService');
|
|
|
$warehouseService = app('WarehouseService');
|
|
|
+ $owner_codes = [];$logistic_codes = [];$warehouse_codes = [];$shop_names = [];
|
|
|
+ foreach ($orderHeaders as $orderHeader) {
|
|
|
+ if(!empty($orderHeader['customerid']))
|
|
|
+ $owner_codes[$orderHeader['customerid']] = $orderHeader['customerid'];
|
|
|
+ if(!empty($orderHeader['warehouseid']))
|
|
|
+ $warehouse_codes[$orderHeader['warehouseid']] = $orderHeader['warehouseid'];
|
|
|
+ if(!empty($orderHeader['userdefine1']))
|
|
|
+ $logistic_codes[$orderHeader['userdefine1']] = $orderHeader['userdefine1'];
|
|
|
+ if(!empty($orderHeader['issuepartyname']) && !empty($orderHeader['customerid'])){
|
|
|
+ $value = ['owner_code'=>$orderHeader['customerid'],'issuepartyname'=>$orderHeader['issuepartyname']];
|
|
|
+ $key = "owner_code_{$orderHeader['customerid']}_issuepartyname_{$orderHeader['issuepartyname']}";
|
|
|
+ $shop_names[$key] = $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $owners = $ownerService->getOwnerByCodes($owner_codes);
|
|
|
+ $logistics = $logisticService->getLogisticByCodes($logistic_codes);
|
|
|
+ $shops = $shopService->getShopByCodeMap($shop_names);
|
|
|
+ $warehouses = $warehouseService->getWareHouseByCode($warehouse_codes);
|
|
|
|
|
|
- $owners = $ownerService->getByWmsOrders($orderHeaders);
|
|
|
- $logistics = $logisticService->getByWmsOrders($orderHeaders);
|
|
|
- $shops = $shopService->getByWmsOrders($orderHeaders);
|
|
|
- $warehouses = $warehouseService->getByWmsOrders($orderHeaders);
|
|
|
$orders = $this->getByWmsOrders($orderHeaders);
|
|
|
+
|
|
|
$created_params = $this->getCreateOrderModelsByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops); //3s
|
|
|
|
|
|
$update_order = $this->getUpdateOrderModelByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops);
|
|
|
+
|
|
|
+
|
|
|
// 转换插入 3s
|
|
|
if(count($created_params) > 0){
|
|
|
- collect($created_params)->chunk(4000)->each(function($inner_params){
|
|
|
+ collect($created_params)->chunk(3500)->each(function($inner_params){
|
|
|
$this->insert($inner_params->toArray());
|
|
|
});
|
|
|
}
|
|
|
$update_params = [
|
|
|
- ['id','code','warehouse_id','owner_id','shop_id','logistic_id','consignee_name','consignee_phone','province','city','district','address','client_code','wms_status','created_at','updated_at','wms_edittime']
|
|
|
+ ['id','code','warehouse_id','owner_id','shop_id','logistic_id','consignee_name','consignee_phone','province','city','district','address','client_code','wms_status','created_at','updated_at','wms_edittime','order_type']
|
|
|
];
|
|
|
- $update_order->map(function ($item){
|
|
|
- return $item->toArray();
|
|
|
- })->each(function($item)use(&$update_params){
|
|
|
- $update_params[] =$item;
|
|
|
+
|
|
|
+ $update_order->each(function($item)use(&$update_params){
|
|
|
+ $update_params[] = $item->toArray();
|
|
|
});
|
|
|
+ if(count($update_order)==0)return;
|
|
|
+
|
|
|
$this->batchUpdate($update_params);
|
|
|
}
|
|
|
- // TODO
|
|
|
- public function getCreateOrderModelsByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops)
|
|
|
+
|
|
|
+ public function getCreateOrderModelsByWMSOrderHeaders(&$orderHeaders,&$orders,&$warehouses,&$owners,&$logistics,&$shops)
|
|
|
{
|
|
|
/** @var DataHandlerService $dataHandlerService */
|
|
|
$dataHandlerService = app('DataHandlerService');
|
|
|
@@ -835,7 +858,6 @@ class OrderService
|
|
|
$shop_map = $dataHandlerService->dataHeader(['name','owner_id'],$shops);
|
|
|
$order_map = $dataHandlerService->dataHeader(['code'],$orders);
|
|
|
|
|
|
-// $collect = collect();
|
|
|
$inner_params = [];
|
|
|
$date = (string)Carbon::now();
|
|
|
foreach ($orderHeaders as $orderHeader) {
|
|
|
@@ -844,12 +866,11 @@ class OrderService
|
|
|
if(isset($order))continue;
|
|
|
$order_model = $this->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map,$date);
|
|
|
$inner_params[] = $order_model;
|
|
|
-// $collect->push($order_model);
|
|
|
}
|
|
|
return $inner_params;
|
|
|
}
|
|
|
- // TODO
|
|
|
- public function getUpdateOrderModelByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops)
|
|
|
+
|
|
|
+ public function getUpdateOrderModelByWMSOrderHeaders(&$orderHeaders,&$orders,&$warehouses,&$owners,&$logistics,&$shops)
|
|
|
{
|
|
|
/**
|
|
|
* @var DataHandlerService $dataHandlerService
|
|
|
@@ -874,7 +895,7 @@ class OrderService
|
|
|
}
|
|
|
return $collect;
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function getCreateOrderModels(&$orderHeader,&$warehouse_map,&$owner_map,&$logistic_map,&$shop_map,$date)
|
|
|
{
|
|
|
/** @var DataHandlerService $dataHandlerService */
|
|
|
@@ -901,6 +922,7 @@ class OrderService
|
|
|
'client_code' => $orderHeader['soreference1'],
|
|
|
'wms_edittime' => $orderHeader['edittime'],
|
|
|
'wms_status' => $orderHeader->oracleBASCode->codename_c??'',
|
|
|
+ 'order_type' => $orderHeader->orderType->codename_c??'',
|
|
|
'updated_at' => $date,
|
|
|
'created_at' => $orderHeader['addtime']
|
|
|
];
|
|
|
@@ -917,7 +939,7 @@ class OrderService
|
|
|
* @param $updateParams
|
|
|
* @return mixed
|
|
|
*/
|
|
|
- public function UpdateOrderParamBy($shop, $logistic, $owner, $warehouse, $order, $orderHeader, string $updated_at, &$updateParams)
|
|
|
+ public function UpdateOrderParamBy(&$shop, &$logistic, &$owner, &$warehouse, &$order, &$orderHeader, string &$updated_at, &$updateParams)
|
|
|
{
|
|
|
$shop_id = $shop->id ?? null;
|
|
|
$logistic_id = $logistic->id ?? null;
|
|
|
@@ -952,11 +974,11 @@ class OrderService
|
|
|
'updated_at' => $updated_at,
|
|
|
'created_at' => $orderHeader->addtime,
|
|
|
'wms_edittime' => $orderHeader->edittime,
|
|
|
+ 'order_type' => $orderHeader->orderType->codename_c??'',
|
|
|
'warehouse_id' => $warehouse_id];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // TODO
|
|
|
public function createOrFindOrder($orderHeader)
|
|
|
{
|
|
|
$order = Order::query()->where('code',$orderHeader->orderno)->first();
|
|
|
@@ -971,7 +993,7 @@ class OrderService
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function createOrFindOrderInfo($orderHeader)
|
|
|
{
|
|
|
/**
|
|
|
@@ -984,7 +1006,7 @@ class OrderService
|
|
|
$orderHeaders->push($orderHeader);
|
|
|
try {
|
|
|
$this->syncOrderByWMSOrderHeaders($orderHeaders);
|
|
|
- $orderPackageService->syncOrderPackage($orderHeaders);
|
|
|
+ $orderPackageService->syncPackageByOrderHeaders($orderHeaders);
|
|
|
$orderPackageCommoditiesService->syncOrderPackageCommodities($orderHeaders);
|
|
|
return Order::query()->with('packages.commodities')->where('code',$orderHeader->orderno)->first();
|
|
|
} catch (\Exception $e) {
|
|
|
@@ -993,8 +1015,6 @@ class OrderService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- // TODO
|
|
|
public function setOrderSyncAt($key,$date,$bool=true){
|
|
|
if($bool){
|
|
|
ValueStore::query()->where('name',$key)->update(['value'=>Carbon::parse($date)->subSeconds(1)]);
|
|
|
@@ -1002,7 +1022,7 @@ class OrderService
|
|
|
ValueStore::query()->where('name',$key)->update(['value'=>$date]);
|
|
|
}
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function getOrderSyncAt($key,$type='newest'){
|
|
|
$keyValue = ValueStore::query()->where('name',$key)->first();
|
|
|
if($keyValue->value)return $keyValue->value;
|
|
|
@@ -1011,7 +1031,7 @@ class OrderService
|
|
|
if($order)return $order->created_at;
|
|
|
return Carbon::now()->subSeconds(65);
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function pushOrderCache($orderHeaders,$prefixKey,$hasKey,$list_key){
|
|
|
$list = [];
|
|
|
try {
|
|
|
@@ -1028,7 +1048,7 @@ class OrderService
|
|
|
|
|
|
}
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function filterOrderByCache($orderHeaders,$key)
|
|
|
{
|
|
|
/**
|
|
|
@@ -1046,10 +1066,11 @@ class OrderService
|
|
|
return $orderHeaders;
|
|
|
}
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function cancelOrderCache($key,string $prefix)
|
|
|
{
|
|
|
try {
|
|
|
+ Redis::LLEN($key);
|
|
|
$list = Cache::get($key);
|
|
|
collect($list)->each(function ($item)use($prefix) {
|
|
|
Cache::forget($prefix.$item);
|
|
|
@@ -1058,7 +1079,7 @@ class OrderService
|
|
|
} catch (\Exception $e) {
|
|
|
}
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function syncCreatedOrder(){
|
|
|
/**
|
|
|
* @var OracleDOCOrderHeaderService $oracleDOCOrderHeaderService
|
|
|
@@ -1080,12 +1101,12 @@ class OrderService
|
|
|
|
|
|
if(count($orderHeaders)>0 && count($orderHeaders) >0){
|
|
|
$orderService->syncOrder($orderHeaders); // 同步订单
|
|
|
- $orderService->cancelOrderCache($newest_list); // 清除缓存
|
|
|
+ $orderService->cancelOrderCache($newest_list,$prefixKey); // 清除缓存
|
|
|
$orderService->pushOrderCache($renewal_orders,$prefixKey,$hasKey,$newest_list); // 添加缓存
|
|
|
$orderService->setOrderSyncAt($newest,$last_order->addTime,count($orderHeaders)>0); // 更新时间
|
|
|
}
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function syncUpdatedOrder(){
|
|
|
/**
|
|
|
* @var OracleDOCOrderHeaderService $oracleDOCOrderHeaderService
|
|
|
@@ -1107,7 +1128,7 @@ class OrderService
|
|
|
|
|
|
if(count($renewal_orders)>0 && count($orderHeaders)>0){
|
|
|
$orderService->syncOrder($orderHeaders); // 同步订单
|
|
|
- $orderService->cancelOrderCache($renewal_list); // 清除缓存
|
|
|
+ $orderService->cancelOrderCache($renewal_list,$prefixKey); // 清除缓存
|
|
|
$orderService->pushOrderCache($renewal_orders,$prefixKey,$hasKey,$renewal_list); // 添加缓存
|
|
|
$orderService->setOrderSyncAt($renewal,$renewal_order->addTime,count($orderHeaders)>0); // 更新时间
|
|
|
}
|