|
|
@@ -18,7 +18,7 @@ Class OrderCommodityService
|
|
|
$ownerService = app('OwnerService');
|
|
|
if(count($orderHeaders) == 0)return ;
|
|
|
$order_nos = array_unique(data_get($orderHeaders,'*.orderno'));
|
|
|
- $commodities_map = [];$orderDetails_map = [];$owners_id_maps = [];
|
|
|
+ $commodities_map = [];$owners_id_maps = [];
|
|
|
$owner_code_maps = (function()use(&$ownerService,&$orderHeaders,&$owners_id_maps){
|
|
|
$customer_ids= array_unique(data_get($orderHeaders,'*.customerid'));
|
|
|
$owners = $ownerService->getOwnerByCodes($customer_ids);
|
|
|
@@ -30,19 +30,19 @@ Class OrderCommodityService
|
|
|
}
|
|
|
return $owner_code_maps;
|
|
|
})();
|
|
|
-
|
|
|
- $orderDetails_map = (function()use(&$orderHeaders,&$map,&$orderDetails_map,&$owner_code_maps,&$commodities_map){
|
|
|
+ // 重组OrderDetails
|
|
|
+ $orderDetails_map = (function()use(&$orderHeaders,&$owner_code_maps,&$commodities_map){
|
|
|
$map = [];
|
|
|
if(count($orderHeaders)==0)return $map;
|
|
|
foreach ($orderHeaders as $orderHeader) {
|
|
|
$Order_Details = $orderHeader->oracleDOCOrderDetails;
|
|
|
- $Order_Details->each(function($item)use(&$map,&$orderDetails_map,&$owner_code_maps,&$commodities_map){
|
|
|
+ $Order_Details->each(function($item)use(&$map,&$owner_code_maps,&$commodities_map){
|
|
|
if(!empty($item['customerid']) && !empty($item['sku'])){
|
|
|
$key = "owner_code_{$item['customerid']}_sku_{$item['sku']}";
|
|
|
$commodities_map[$key] = ['owner_code'=>$item['customerid'],'sku'=>$item['sku']];
|
|
|
}
|
|
|
$key = "orderno_{$item['orderno']}_sku{$item['sku']}_each_{$item['qtyordered']}_location_{$item['location']}";
|
|
|
- if(empty($orderDetails_map[$key]))$orderDetails_map[$key]=[];
|
|
|
+ if(empty($map[$key]))$map[$key]=[];
|
|
|
$map[$key][] = [
|
|
|
'code' => $item['orderno'],
|
|
|
'sku' => $item['sku'],
|
|
|
@@ -71,35 +71,18 @@ Class OrderCommodityService
|
|
|
if(count($order_nos)==0)return $map;
|
|
|
$orders = Order::query()->whereIn('code',$order_nos)->get();
|
|
|
$orders->each(function($item)use(&$map,&$order_id_map){
|
|
|
- $map[$item['code']] = [
|
|
|
- 'id'=> $item['id'],
|
|
|
- 'owner_id' => $item['owner_id']
|
|
|
- ];;
|
|
|
- $order_id_map[$item['id']] = [
|
|
|
- 'code'=> $item['code'],
|
|
|
- 'owner_id' => $item['owner_id']
|
|
|
- ];
|
|
|
+ $map[$item['code']] = ['id'=> $item['id'], 'owner_id' => $item['owner_id']];
|
|
|
+ $order_id_map[$item['id']] = ['code'=> $item['code'], 'owner_id' => $item['owner_id']];
|
|
|
});
|
|
|
return $map;
|
|
|
})();
|
|
|
- $order_commodities_maps = (function()use($order_nos,$owner_code_maps,&$owners_id_maps,$orders_map,&$order_id_map){
|
|
|
- $orderCommodities = OrderCommodity::query()->with('commodity','order')->whereHas('order',function($query)use($order_nos){
|
|
|
- $query->whereIn('code',$order_nos);
|
|
|
- })->get();
|
|
|
- $map = [];
|
|
|
- if(count($orderCommodities)==0)return $map;
|
|
|
- foreach ($orderCommodities as $commodity) {
|
|
|
- $order = $order_id_map[$commodity['order_id']];
|
|
|
- $owner_code = $owners_id_maps[$order['owner_id']];
|
|
|
- $key = "owner_code_{$owner_code}_sku_{$commodity['sku']}";
|
|
|
- $map[$key] = $commodity;
|
|
|
- }
|
|
|
- return $map;
|
|
|
- })();
|
|
|
- $orderCommodities_map = $this->regroupOrderCommodities($order_commodities_maps);
|
|
|
+ $orderCommodities = OrderCommodity::query()->with('commodity','order')->whereHas('order',function($query)use($order_nos){
|
|
|
+ $query->whereIn('code',$order_nos);
|
|
|
+ })->get();
|
|
|
+
|
|
|
+ $orderCommodities_map = $this->regroupOrderCommodities($orderCommodities); // 重组orderCommodities
|
|
|
$inner_params = $this->filterInnerParams($orderDetails_map,$orderCommodities_map);
|
|
|
$del_ids = $this->filterDeleteParams($orderDetails_map,$orderCommodities_map);
|
|
|
-
|
|
|
if(count($inner_params)>0){
|
|
|
$inner_arr = array_chunk($inner_params,4000);
|
|
|
foreach ($inner_arr as $item) {
|
|
|
@@ -118,9 +101,9 @@ Class OrderCommodityService
|
|
|
$map = [];
|
|
|
if(count($orderCommodities)==0)return $map;
|
|
|
foreach ($orderCommodities as $orderCommodity) {
|
|
|
- $key = "orderno_{$orderCommodity['order']['orderno']}_sku{$orderCommodity['commodity']['sku']}_each_{$orderCommodity['amount']}_location_{$orderCommodity['location']}";
|
|
|
- if(empty($map[$key]))continue;
|
|
|
- $map[$key] = [
|
|
|
+ $key = "orderno_{$orderCommodity['order']['code']}_sku{$orderCommodity['commodity']['sku']}_each_{$orderCommodity['amount']}_location_{$orderCommodity['location']}";
|
|
|
+ if(empty($map[$key]))$map[$key] =[];
|
|
|
+ $map[$key][] = [
|
|
|
'id' =>$orderCommodity['id'],
|
|
|
'code' => $orderCommodity['order']['orderno'],
|
|
|
'sku' => $orderCommodity['commodity']['sku'],
|
|
|
@@ -157,15 +140,18 @@ Class OrderCommodityService
|
|
|
$del_ids = [];
|
|
|
if(count($orderDetails_map) == 0)return $del_ids;
|
|
|
foreach ($orderCommodities_map as $key=>$map) {
|
|
|
- if(count($map)==count($orderDetails_map[$key]))continue;
|
|
|
if(empty($orderDetails_map[$key])){
|
|
|
foreach ($map as &$item) {
|
|
|
$del_ids[] = $item['id'];
|
|
|
}
|
|
|
}elseif(count($map)>count($orderDetails_map[$key])){
|
|
|
- foreach ($map as &$obj) {
|
|
|
- if(count($orderDetails_map[$key]) == 0)$del_ids[] = array_shift($orderCommodities_map[$map])['id'];
|
|
|
- else array_shift($orderDetails_map[$key]);
|
|
|
+ foreach ($map as $key1=>&$obj) {
|
|
|
+ if(count($orderDetails_map[$key]) == 0){
|
|
|
+ $del_ids [] = $obj['id'];
|
|
|
+ unset($map[$key1]);
|
|
|
+ } else{
|
|
|
+ array_shift($orderDetails_map[$key]);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -174,8 +160,8 @@ Class OrderCommodityService
|
|
|
|
|
|
private function createByInnerParams(&$inner_params,&$orders_map,&$commodities_maps,&$owner_id_maps)
|
|
|
{
|
|
|
- if(count($inner_params) == 0)return;
|
|
|
$created_params = [];
|
|
|
+ if(count($inner_params) == 0)return $created_params;
|
|
|
$data = Carbon::now();
|
|
|
foreach ($inner_params as &$item) {
|
|
|
$order = $orders_map[$item['code']];
|
|
|
@@ -199,7 +185,7 @@ Class OrderCommodityService
|
|
|
{
|
|
|
if(count($orderCommodities) == 0)return true;
|
|
|
try {
|
|
|
- $bool = OrderCommodity::query()->where('id', data_get($orderCommodities, '*.id'))->delete();
|
|
|
+ $bool = OrderCommodity::destroy(data_get($orderCommodities, '*.id'));
|
|
|
if($bool)app('LogService')->log(__METHOD__,__FUNCTION__,'批量删除 OrderCommodities'.' || '.count($orderCommodities).' || '.json_encode($orderCommodities));
|
|
|
else app('LogService')->log(__METHOD__,__FUNCTION__,'批量删除 OrderCommodities FAULT'.' || '.count($orderCommodities).' || '.json_encode($orderCommodities).' || ');
|
|
|
return $bool;
|