|
|
@@ -343,8 +343,23 @@ Class CommodityService
|
|
|
|
|
|
public function getCommoditiesByMap($map)
|
|
|
{
|
|
|
- /** @var OwnerService $ownerService */
|
|
|
+ /**
|
|
|
+ * @var OwnerService $ownerService
|
|
|
+ * @var OracleBasSkuService $oracleBasSkuService
|
|
|
+ */
|
|
|
$ownerService = app('OwnerService');
|
|
|
+ $oracleBasSkuService = app('OracleBasSkuService');
|
|
|
+
|
|
|
+ $commodities_map = (function()use($map){
|
|
|
+ $commodities_map = [];
|
|
|
+ if(count($map)==0)return $commodities_map;
|
|
|
+ Commodity::query()->with("owner")->whereIn('sku',array_unique(data_get($map,'*.sku')))->whereHas('owner',function($query)use($map){
|
|
|
+ $query->whereIn('code',array_unique(data_get($map,'*.owner_code')));
|
|
|
+ })->get()->each(function($commodity)use(&$commodities_map){
|
|
|
+ $commodities_map[json_encode(['owner_code' => $commodity['owner']['code'], 'sku' => $commodity['sku']])] = $commodity;
|
|
|
+ });
|
|
|
+ return $commodities_map;
|
|
|
+ })();
|
|
|
|
|
|
$owner_codes = (function()use($map){
|
|
|
$owner_codes = [];
|
|
|
@@ -367,27 +382,32 @@ Class CommodityService
|
|
|
$collect = collect();
|
|
|
if(count($map) == 0) return $collect;
|
|
|
$unexists = [];$sku = [];$owner_code = [];
|
|
|
+
|
|
|
foreach ($map as $item) {
|
|
|
$owner = Cache::get("owner_code_{$item['owner_code']}_sku_{$item['sku']}");
|
|
|
if($owner){
|
|
|
$collect->push($owner);
|
|
|
continue;
|
|
|
}
|
|
|
- $items = [
|
|
|
- 'owner_code' => $item['owner_code'],
|
|
|
- 'sku' => $item['sku']
|
|
|
- ];
|
|
|
- $unexists[json_encode($items)] = true;
|
|
|
+ $key = json_encode( ['owner_code' => $item['owner_code'], 'sku' => $item['sku']]);
|
|
|
+ if(!empty($commodities_map[json_encode($key)])){
|
|
|
+ $commodities_map[$key];
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $unexists[json_encode($key)] = true;
|
|
|
$sku[] = $item['sku'];
|
|
|
$owner_code[] = $item['owner_code'];
|
|
|
}
|
|
|
+
|
|
|
if(count($unexists) == 0)return $collect;
|
|
|
- $BasSKUs = OracleBasSKU::query()->whereIn('SKU',$sku)->whereIn('CustomerID',$owner_code)->get();
|
|
|
- $BasSKUs = $BasSKUs->filter(function($bas_sku)use($unexists){
|
|
|
+ $BasSKUs = $oracleBasSkuService->get( ['SKU'=>$sku,'CustomerID'=>$owner_code]);
|
|
|
+ $BasSKUs = $BasSKUs->filter(function($bas_sku)use($unexists,$commodities_map){
|
|
|
$arr = [
|
|
|
'owner_code' => $bas_sku['customerid'],
|
|
|
'sku' => $bas_sku['sku']
|
|
|
];
|
|
|
+ $key = json_encode($arr);
|
|
|
+ if(!empty($commodities_map($key)))return false;
|
|
|
return $unexists[json_encode($arr)] ?? false;
|
|
|
});
|
|
|
$inner_params = (function()use($BasSKUs,$owner_map){
|