|
|
@@ -25,8 +25,17 @@ class OrderService
|
|
|
return app(BatchUpdateService::class)->batchUpdate('orders',$params);
|
|
|
}
|
|
|
|
|
|
- public function insert($params){
|
|
|
- return Order::query()->insert($params);
|
|
|
+ public function insert(array $params){
|
|
|
+ if(!$params)return true;
|
|
|
+ if(count($params)==0) return true;
|
|
|
+ try {
|
|
|
+ $bool= Order::query()->insert($params);
|
|
|
+ app('LogService')->log(__METHOD__, __FUNCTION__, '批量创建 Order' . json_encode($params));
|
|
|
+ return $bool;
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ app('LogService')->log(__METHOD__, __FUNCTION__, '批量创建 Order error' . json_encode($params).json_encode($e->getMessage()).json_encode($e->getTraceAsString()));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private function preciseQuery(array $params,$sql){
|
|
|
@@ -194,7 +203,7 @@ class OrderService
|
|
|
$ordernos = app('OracleActAllocationDetailService')
|
|
|
->getOrderno(['checktime_start'=>$checktime_start,'checktime_end'=>$checktime_end,
|
|
|
'paginate'=>$paginate,'page'=>$page]);
|
|
|
- $params['ordernos'] = $ordernos;
|
|
|
+ if ($ordernos)$params['ordernos'] = $ordernos;
|
|
|
}
|
|
|
$sql="select ACT_ALLOCATION_DETAILS.CHECKTIME,DOC_ORDER_HEADER.addtime,DOC_ORDER_HEADER.C_PROVINCE,DOC_ORDER_HEADER.C_CITY,DOC_ORDER_HEADER.C_DISTRICT,DOC_ORDER_HEADER.C_CONTACT,DOC_ORDER_HEADER.OrderNo,DOC_ORDER_HEADER.SOStatus,DOC_ORDER_HEADER.WAREHOUSEID,DOC_ORDER_HEADER.CustomerID
|
|
|
,DOC_ORDER_HEADER.C_Tel2,DOC_ORDER_HEADER.C_Tel1,DOC_ORDER_HEADER.CarrierName,DOC_ORDER_HEADER.IssuePartyName,DOC_ORDER_HEADER.EDIREMARKS2,
|
|
|
@@ -376,6 +385,7 @@ class OrderService
|
|
|
'client_code' => $orderHeadAttr['soreference1'],
|
|
|
];
|
|
|
$order = Order::query()->create($arr);
|
|
|
+ app('LogService')->log(__METHOD__,__FUNCTION__,'创建 Order '.json_encode($order));
|
|
|
unset($arr,$orderHeadAttr,$owner);
|
|
|
}else{
|
|
|
$this->updateOrderByOrderHeader($order,$orderHeader);
|
|
|
@@ -459,7 +469,8 @@ class OrderService
|
|
|
['code' => $orderHeader->userdefine1, 'name' => $orderHeader->carriername]);
|
|
|
$wareHouse = Warehouse::query()->firstOrCreate(['code'=>$orderHeader->warehouseid],
|
|
|
['name'=>$orderHeader->warehouseid,'code'=>$orderHeader->warehouseid]);
|
|
|
- return Order::query()->create([
|
|
|
+
|
|
|
+ $order = Order::query()->create([
|
|
|
'warehouse_id'=> $wareHouse->id ?? '',
|
|
|
'code' => $orderHeader->orderno,
|
|
|
'owner_id' => $owner ? $owner->id : null,
|
|
|
@@ -475,6 +486,8 @@ class OrderService
|
|
|
'address' => $orderHeader->c_address1,
|
|
|
'client_code' => $orderHeader->soreference1,
|
|
|
]);
|
|
|
+ app('LogService')->log(__METHOD__,__FUNCTION__,'创建 Order '.json_encode($order));
|
|
|
+ return $order;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -524,10 +537,13 @@ class OrderService
|
|
|
}
|
|
|
|
|
|
$insert_params = $this->getParamsByOrderHeader($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map);
|
|
|
-
|
|
|
+ $update_params = $this->getUpdateParams($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map);
|
|
|
if(count($insert_params)> 0){
|
|
|
$this->create($insert_params);
|
|
|
}
|
|
|
+ if(count($update_params)>1){
|
|
|
+ $this->batchUpdate($update_params);
|
|
|
+ }
|
|
|
$orderPackageService->createByWmsOrder($orderHeaders);
|
|
|
$order_nos = data_get($orderHeaders,'*.orderno');
|
|
|
unset($orderHeaders_map,$orders_code_map,$shop_name_map,$logistics_code_map,$owners_code_map);
|
|
|
@@ -543,7 +559,7 @@ class OrderService
|
|
|
$order_code_map[$order->code]= $order;
|
|
|
}
|
|
|
foreach ($orderHeaders_map as $orderHeader) {
|
|
|
- if($order_code_map[$orderHeader->orderno] ?? false)continue;
|
|
|
+ if($order_code_map[$orderHeader->orderno] ?? false)continue;
|
|
|
$owner = $owners_code_map[$orderHeader->customerid] ?? null;
|
|
|
$logistic = $logistics_code_map[$orderHeader->userdefine1] ?? null;
|
|
|
$warehouse=$warehouses_code_map[$orderHeader->warehouseid] ?? null;
|
|
|
@@ -570,11 +586,36 @@ class OrderService
|
|
|
return $params;
|
|
|
}
|
|
|
|
|
|
+ public function getUpdateParams($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map)
|
|
|
+ {
|
|
|
+ if(!$orderHeaders){[];}
|
|
|
+ $orders = Order::query()->whereIn('code',data_get($orderHeaders,'*.orderno'))->get();
|
|
|
+ $update_params = [[
|
|
|
+ 'id','owner_id','wms_status','logistic_id','shop_id','consignee_name','consignee_phone','province','city','district','address','client_code','updated_at','wms_edittime','warehouse_id'
|
|
|
+ ]];
|
|
|
+ $orderHeaders_map = [];
|
|
|
+ foreach ($orderHeaders as $orderHeader) {
|
|
|
+ $orderHeaders_map[$orderHeader->orderno] = $orderHeader;
|
|
|
+ }
|
|
|
+ $updated_at = Carbon::now()->toDateTimeString();
|
|
|
+ $orders->each(function($order)use($orderHeaders_map,&$owners_code_map,&$logistics_code_map,&$shop_name_map,&$warehouses_code_map,&$update_params,$updated_at){
|
|
|
+ $order_header = $orderHeaders_map[$order->code] ?? null;
|
|
|
+ if(isset($order_header)){
|
|
|
+ $owner = $owners_code_map[$order_header->customerid] ?? null;
|
|
|
+ $logistic = $logistics_code_map[$order_header->userdefine1] ?? null;
|
|
|
+ $warehouse=$warehouses_code_map[$order_header->warehouseid] ?? null;
|
|
|
+ $key = ' owner_code='.$order_header->customerid.' name='.$order_header->issuepartyname ?? null;
|
|
|
+ $shop = $shop_name_map[$key] ?? null;
|
|
|
+ $this->UpdateOrderParamBy($shop, $logistic, $owner, $warehouse, $order, $order_header, $updated_at, $update_params);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return $update_params;
|
|
|
+ }
|
|
|
+
|
|
|
public function create(array $params){
|
|
|
if(count($params) == 0) return [];
|
|
|
try {
|
|
|
$this->insert($params);
|
|
|
- app('LogService')->log(__METHOD__,__FUNCTION__,'批量创建 order '.count($params).json_encode($params));
|
|
|
} catch (\Exception $e) {
|
|
|
app('LogService')->log(__METHOD__,__FUNCTION__,'批量创建 order '.json_encode($params).'||'.$e->getMessage().'||'.$e->getTraceAsString());
|
|
|
} finally{
|
|
|
@@ -609,45 +650,12 @@ class OrderService
|
|
|
$updated_at = Carbon::now()->toDateTimeString();
|
|
|
foreach ($orderHeaders as $orderHeader) {
|
|
|
$order =$dataHandlerService->getKeyValue(['code'=>$orderHeader->orderno],$orders_code_map);
|
|
|
- if(!$order){continue;}
|
|
|
+ if(!$order)continue;
|
|
|
$logistic = $dataHandlerService->getKeyValue(['code'=>$orderHeader->userdefine1] ,$logistics_code_map);
|
|
|
$owner = $dataHandlerService->getKeyValue(['code'=>$orderHeader->customerid] ,$owner_code_map);
|
|
|
$shop = $dataHandlerService->getKeyValue(['owner_id'=>$owner->id ?? '','name'=> $orderHeader->issuepartyname] ,$shops_map);
|
|
|
$warehouse=$dataHandlerService->getKeyValue(['code'=>$orderHeader->warehouseid],$warehouses_map);
|
|
|
- $shop_id = $shop->id ?? null;
|
|
|
- $logistic_id = $logistic->id ?? null;
|
|
|
- $owner_id = $owner->id ?? null;
|
|
|
- $warehouse_id=$warehouse->id??null;
|
|
|
- if($order->wms_status != $orderHeader->oracleBASCode_codename_c ||
|
|
|
- $order->logistic_id != $logistic_id ||
|
|
|
- $order->shop_id != $shop_id ||
|
|
|
- $order->owner_id != $owner_id ||
|
|
|
- $order->consignee_name != $orderHeader->c_contact ||
|
|
|
- $order->consignee_phone != empty($orderHeader->c_tel2)?$orderHeader->c_tel1:$orderHeader->c_tel2 ||
|
|
|
- $order->province != $orderHeader->c_province ||
|
|
|
- $order->city != $orderHeader->c_city ||
|
|
|
- $order->district != $orderHeader->c_district ||
|
|
|
- $order->address != $orderHeader->c_address1 ||
|
|
|
- $order->client_code != $orderHeader->soreference1 ||
|
|
|
- $order->wms_edittime != $orderHeader->edittime||
|
|
|
- $order->warehouse_id!=$warehouse_id){
|
|
|
- $updateParams[] = [
|
|
|
- 'id'=>$order->id,
|
|
|
- 'owner_id' => $owner_id,
|
|
|
- 'wms_status' => $orderHeader->oracleBASCode_codename_c ?? '',
|
|
|
- 'logistic_id' => $logistic_id,
|
|
|
- 'shop_id' => $shop_id,
|
|
|
- 'consignee_name' => $orderHeader->c_contact,
|
|
|
- 'consignee_phone' => empty($orderHeader->c_tel2)?$orderHeader->c_tel1:$orderHeader->c_tel2,
|
|
|
- 'province' => $orderHeader->c_province,
|
|
|
- 'city' => $orderHeader->c_city,
|
|
|
- 'district' => $orderHeader->c_district,
|
|
|
- 'address' => $orderHeader->c_address1,
|
|
|
- 'client_code' => $orderHeader->soreference1,
|
|
|
- 'updated_at' =>$updated_at,
|
|
|
- 'wms_edittime' =>$orderHeader->edittime,
|
|
|
- 'warehouse_id'=>$warehouse_id];
|
|
|
- }
|
|
|
+ $this->UpdateOrderParamBy($shop, $logistic, $owner, $warehouse, $order, $orderHeader, $updated_at, $updateParams);
|
|
|
}
|
|
|
if(count($updateParams) > 1){
|
|
|
$this->batchUpdate($updateParams);
|
|
|
@@ -754,18 +762,18 @@ class OrderService
|
|
|
}
|
|
|
|
|
|
// TODO
|
|
|
- public function createOrderInfo($orderHeaders)
|
|
|
+ public function syncOrder(&$orderHeaders)
|
|
|
{
|
|
|
/** @var OrderPackageService $packageService */
|
|
|
$packageService = app("OrderPackageService");
|
|
|
- $order_models = $this->createOrderByWMSOrderHeaders($orderHeaders);
|
|
|
-// $packageService->createPackageInfo($orderHeaders);
|
|
|
- return $order_models;
|
|
|
+ var_dump('syncOrderByWMSOrderHeaders',new Carbon());
|
|
|
+ $this->syncOrderByWMSOrderHeaders($orderHeaders);
|
|
|
+ $packageService->syncOrderPackage($orderHeaders);
|
|
|
}
|
|
|
// TODO
|
|
|
- public function createOrderByWMSOrderHeaders($orderHeaders)
|
|
|
+ public function syncOrderByWMSOrderHeaders(&$orderHeaders)
|
|
|
{
|
|
|
- if($orderHeaders->isEmpty())return;
|
|
|
+ if($orderHeaders->isEmpty())return [];
|
|
|
/**
|
|
|
* @var OwnerService $ownerService
|
|
|
* @var LogisticService $logisticService
|
|
|
@@ -782,13 +790,20 @@ class OrderService
|
|
|
$shops = $shopService->getByWmsOrders($orderHeaders);
|
|
|
$warehouses = $warehouseService->getByWmsOrders($orderHeaders);
|
|
|
$orders = $this->getByWmsOrders($orderHeaders);
|
|
|
- $created_order = $this->getCreateOrderModelsByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops);
|
|
|
+ $created_params = $this->getCreateOrderModelsByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops); //3s
|
|
|
$update_order = $this->getUpdateOrderModelByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops);
|
|
|
- $this->insert($created_order->map(function($item){
|
|
|
- $array = $item->toArray();
|
|
|
- unset($array['logisticNumbers'],$array['packages'],$array['commodityPackages'],$array['amount']);
|
|
|
- return $array;
|
|
|
- })->toArray());
|
|
|
+ // 转换插入 3s
|
|
|
+ if(count($created_params) > 0){
|
|
|
+ collect($created_params)->chunk(4000)->each(function($inner_params){
|
|
|
+ $this->insert($inner_params->toArray());
|
|
|
+ });
|
|
|
+ }
|
|
|
+// $this->insert($created_params);
|
|
|
+// $this->insert($created_order->map(function($item){
|
|
|
+// $array = $item->toArray();
|
|
|
+// unset($array['logisticNumbers'],$array['packages'],$array['commodityPackages'],$array['amount']);
|
|
|
+// return $array;
|
|
|
+// })->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']
|
|
|
@@ -799,28 +814,31 @@ class OrderService
|
|
|
$update_params[] =$item;
|
|
|
});
|
|
|
$this->batchUpdate($update_params);
|
|
|
- return $created_order->concat($update_order);
|
|
|
}
|
|
|
// TODO
|
|
|
public function getCreateOrderModelsByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops)
|
|
|
{
|
|
|
/** @var DataHandlerService $dataHandlerService */
|
|
|
$dataHandlerService = app('DataHandlerService');
|
|
|
+
|
|
|
$warehouse_map = $dataHandlerService->dataHeader(['code'],$warehouses);
|
|
|
$owner_map = $dataHandlerService->dataHeader(['code'],$owners);
|
|
|
$logistic_map = $dataHandlerService->dataHeader(['code'],$logistics);
|
|
|
$shop_map = $dataHandlerService->dataHeader(['name','owner_id'],$shops);
|
|
|
$order_map = $dataHandlerService->dataHeader(['code'],$orders);
|
|
|
|
|
|
- $collect = collect();
|
|
|
+// $collect = collect();
|
|
|
+ $inner_params = [];
|
|
|
+ $date = (string)Carbon::now();
|
|
|
foreach ($orderHeaders as $orderHeader) {
|
|
|
$order_no = $orderHeader->orderno;
|
|
|
$order = $dataHandlerService->getKeyValue(['code'=>$order_no],$order_map);
|
|
|
if(isset($order))continue;
|
|
|
- $order_model = $this->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map);
|
|
|
- $collect->push($order_model);
|
|
|
+ $order_model = $this->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map,$date);
|
|
|
+ $inner_params[] = $order_model;
|
|
|
+// $collect->push($order_model);
|
|
|
}
|
|
|
- return $collect;
|
|
|
+ return $inner_params;
|
|
|
}
|
|
|
// TODO
|
|
|
public function getUpdateOrderModelByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops)
|
|
|
@@ -836,10 +854,11 @@ class OrderService
|
|
|
$logistic_map = $dataHandlerService->dataHeader(['code'],$logistics);
|
|
|
$shop_map = $dataHandlerService->dataHeader(['name','owner_id'],$shops);
|
|
|
$collect = collect();
|
|
|
+ $date = (string)Carbon::now();
|
|
|
foreach ($orders as $order) {
|
|
|
$orderHeader = $dataHandlerService->getKeyValue(['orderno'=>$order->code],$orderHeader_map);
|
|
|
if(!$orderHeader)continue;
|
|
|
- $order_model = $this->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map);
|
|
|
+ $order_model = $this->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map,$date);
|
|
|
if(!$order->isEquals($order_model)){
|
|
|
$order->assignValueByOrder($order_model);
|
|
|
$collect->push($order);
|
|
|
@@ -848,7 +867,7 @@ class OrderService
|
|
|
return $collect;
|
|
|
}
|
|
|
// TODO
|
|
|
- public function getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map)
|
|
|
+ public function getCreateOrderModels(&$orderHeader,&$warehouse_map,&$owner_map,&$logistic_map,&$shop_map,$date)
|
|
|
{
|
|
|
/** @var DataHandlerService $dataHandlerService */
|
|
|
$dataHandlerService = app('DataHandlerService');
|
|
|
@@ -856,25 +875,149 @@ class OrderService
|
|
|
$owner = $dataHandlerService->getKeyValue(['code'=>$orderHeader->customerid],$owner_map);
|
|
|
$logistic = $dataHandlerService->getKeyValue(['code'=>$orderHeader->userdefine1],$logistic_map);
|
|
|
$shop = $dataHandlerService->getKeyValue(['name'=>$orderHeader->issuepartyname,'owner_id'=>$owner->id??null],$shop_map);
|
|
|
- $date = Carbon::now();
|
|
|
- return new Order( [
|
|
|
- 'code'=>$orderHeader->orderno,
|
|
|
- 'warehouse_id' => $warehouse->id ?? null,
|
|
|
- 'owner_id' => $owner->id ?? null,
|
|
|
- 'shop_id' => $shop->id ?? null,
|
|
|
- 'logistic_id' =>$logistic->id ?? null,
|
|
|
- 'consignee_name' => $orderHeader->c_contact,
|
|
|
- 'consignee_phone' => empty($orderHeader->c_tel2)?$orderHeader->c_tel1:$orderHeader->c_tel2,
|
|
|
- 'province' => $orderHeader->c_province,
|
|
|
- 'city' => $orderHeader->c_city,
|
|
|
- 'district' => $orderHeader->c_district,
|
|
|
- 'address' => $orderHeader->c_address1,
|
|
|
- 'client_code' => $orderHeader->soreference1,
|
|
|
- 'wms_edittime' => $orderHeader->edittime,
|
|
|
- 'wms_status' => $orderHeader->oracleBASCode_codename_c ?? '',
|
|
|
+ return [
|
|
|
+ 'code'=>$orderHeader['orderno'],
|
|
|
+ 'warehouse_id' => $warehouse['id'] ?? null,
|
|
|
+ 'owner_id' => $owner['id'] ?? null,
|
|
|
+ 'shop_id' => $shop['id'] ?? null,
|
|
|
+ 'logistic_id' =>$logistic['id'] ?? null,
|
|
|
+ 'consignee_name' => $orderHeader['c_contact'],
|
|
|
+ 'consignee_phone' => $orderHeader['c_tel2'] ?? $orderHeader['c_tel1'],
|
|
|
+ 'province' => $orderHeader['c_province'],
|
|
|
+ 'city' => $orderHeader['c_city'],
|
|
|
+ 'district' => $orderHeader['c_district'],
|
|
|
+ 'address' => $orderHeader['c_address1'],
|
|
|
+ 'client_code' => $orderHeader['soreference1'],
|
|
|
+ 'wms_edittime' => $orderHeader['edittime'],
|
|
|
+ 'wms_status' => $orderHeader->oracleBASCode->codename_c??'',
|
|
|
'updated_at' => $date,
|
|
|
- 'created_at' => $orderHeader->addtime,
|
|
|
- ]);
|
|
|
+ 'created_at' => $orderHeader['addtime']
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param $shop
|
|
|
+ * @param $logistic
|
|
|
+ * @param $owner
|
|
|
+ * @param $warehouse
|
|
|
+ * @param $order
|
|
|
+ * @param $orderHeader
|
|
|
+ * @param string $updated_at
|
|
|
+ * @param $updateParams
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function UpdateOrderParamBy($shop, $logistic, $owner, $warehouse, $order, $orderHeader, string $updated_at, &$updateParams)
|
|
|
+ {
|
|
|
+ $shop_id = $shop->id ?? null;
|
|
|
+ $logistic_id = $logistic->id ?? null;
|
|
|
+ $owner_id = $owner->id ?? null;
|
|
|
+ $warehouse_id = $warehouse->id ?? null;
|
|
|
+
|
|
|
+ if (($order->wms_status !== $orderHeader->oracleBASCode_codename_c) ||
|
|
|
+ ($order->logistic_id !== $logistic_id) ||
|
|
|
+ ($order->shop_id !== $shop_id) ||
|
|
|
+ ($order->owner_id !== $owner_id) ||
|
|
|
+ ($order->consignee_name !== $orderHeader->c_contact) ||
|
|
|
+ $order->consignee_phone !==( empty($orderHeader->c_tel2) ? $orderHeader->c_tel1 : $orderHeader->c_tel2) ||
|
|
|
+ $order->province !== ($orderHeader->c_province) ||
|
|
|
+ $order->city !== ($orderHeader->c_city) ||
|
|
|
+ $order->district !== ($orderHeader->c_district) ||
|
|
|
+ $order->address !== ($orderHeader->c_address1) ||
|
|
|
+ $order->client_code !== ($orderHeader->soreference1) ||
|
|
|
+ ($order->wms_edittime !== $orderHeader->edittime) ||
|
|
|
+ ($order->warehouse_id !== $warehouse_id)) {
|
|
|
+ $updateParams[] = ['id' => $order->id,
|
|
|
+ 'owner_id' => $owner_id,
|
|
|
+ 'wms_status' => $orderHeader->oracleBASCode_codename_c ?? '',
|
|
|
+ 'logistic_id' => $logistic_id,
|
|
|
+ 'shop_id' => $shop_id,
|
|
|
+ 'consignee_name' => $orderHeader->c_contact,
|
|
|
+ 'consignee_phone' => empty($orderHeader->c_tel2) ? $orderHeader->c_tel1 : $orderHeader->c_tel2,
|
|
|
+ 'province' => $orderHeader->c_province,
|
|
|
+ 'city' => $orderHeader->c_city,
|
|
|
+ 'district' => $orderHeader->c_district,
|
|
|
+ 'address' => $orderHeader->c_address1,
|
|
|
+ 'client_code' => $orderHeader->soreference1,
|
|
|
+ 'updated_at' => $updated_at,
|
|
|
+ 'wms_edittime' => $orderHeader->edittime,
|
|
|
+ 'warehouse_id' => $warehouse_id];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function batchDeleteUnnecessaryOrder(){
|
|
|
+ $start_id = 0;
|
|
|
+ $step = 1000;
|
|
|
+ while(true){
|
|
|
+ $order_map = [];
|
|
|
+
|
|
|
+ $package_del = []; $orderCommodities = []; $bin = []; $batch = []; $order = [];
|
|
|
+ $package_update= []; $orderCommodities_update= []; $bin_update= []; $batch_update= []; $order_update = [];
|
|
|
+ $orders = Order::query()->with('packages.commodities','orderCommodities','bin','batch')->where('id','>',$start_id)->where('id','<',$start_id+$step)->get();
|
|
|
+ $this->getOrderMap($orders,$order_map);
|
|
|
+
|
|
|
+ if(count($order_map) == 0)continue;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // OrderPackages
|
|
|
+ public function batchDeleteUnnecessaryOrderPackages($order_map)
|
|
|
+ {
|
|
|
+ $packages = collect();
|
|
|
+ $del_packages= collect();
|
|
|
+ $update_packages = collect();
|
|
|
+ foreach ($order_map as $key =>$items) {
|
|
|
+ $orderPackage = null;
|
|
|
+ $items->packages->each(function($packages){
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Batch
|
|
|
+ public function batchDeleteUnnecessaryBatch($order_map,&$batch_order_no_map)
|
|
|
+ {
|
|
|
+ foreach ($order_map as $items) {
|
|
|
+ collect($items)->each(function($order)use(&$batch_order_no_map){
|
|
|
+ $bin = $order->batch;
|
|
|
+ if($bin ?? false){
|
|
|
+ $batch_order_no_map[$order->code][] = $bin;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // OrderCommodities
|
|
|
+ public function batchDeleteUnnecessaryOrderCommodities($order_map,&$orderCommodities_map)
|
|
|
+ {
|
|
|
+ foreach ($order_map as $items) {
|
|
|
+ collect($items)->each(function($order)use(&$orderCommodities_map){
|
|
|
+ $orderCommodities = $order->orderCommodities;
|
|
|
+ if($bin ?? false){
|
|
|
+ $orderCommodities_map[$order->code][] = $orderCommodities;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Bin
|
|
|
+ public function batchDeleteUnnecessaryBin($order_map,&$bin_order_no_map)
|
|
|
+ {
|
|
|
+ foreach ($order_map as $items) {
|
|
|
+ collect($items)->each(function($order)use(&$bin_order_no_map){
|
|
|
+ $bin = $order->bin;
|
|
|
+ if($bin ?? false){
|
|
|
+ $bin_order_no_map[$order->code][] = $bin;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getOrderMap($orders,&$orderMap)
|
|
|
+ {
|
|
|
+ $orders->each(function($items,$key)use(&$orderMap){
|
|
|
+ // $items $order集合
|
|
|
+ if($items->count()>1){
|
|
|
+ $order_map[$key] = $items; // 保留超过2个orders
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
}
|