58 lines
1.8 KiB
PHP
58 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Imports;
|
|
|
|
use App\Models\Goods;
|
|
use App\Models\GoodsSkuLocation;
|
|
use Maatwebsite\Excel\Concerns\SkipsEmptyRows;
|
|
use Maatwebsite\Excel\Concerns\ToArray;
|
|
use Maatwebsite\Excel\Concerns\WithStartRow;
|
|
|
|
class GoodsSkuLocationImport implements ToArray, SkipsEmptyRows, WithStartRow
|
|
{
|
|
public function startRow(): int
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
public function array(array $array)
|
|
{
|
|
$goodsCode = $deleteLocation = [];
|
|
foreach ($array as &$row) {
|
|
$row = array_map(function ($value) {
|
|
return trim($value);
|
|
}, $row);
|
|
$goodsCode[] = $row[2];
|
|
$deleteLocation[] = $row[5];
|
|
}
|
|
GoodsSkuLocation::query()->whereIn('location', $deleteLocation)->delete();
|
|
unset($row);
|
|
$goods = Goods::query()
|
|
->whereIn('goods_code', $goodsCode)
|
|
->get(['id', 'goods_code', 'title']);
|
|
$goodsSkus = [];
|
|
foreach ($goods as $goodsItem) {
|
|
foreach ($goodsItem->skus as $sku){
|
|
$goodsSkus[$goodsItem['goods_code']][$sku->sku_code] = [
|
|
'goods_id' => $goodsItem->id,
|
|
'goods_sku_id' => $sku->id,
|
|
'external_sku_id' => $goodsItem['goods_code'] . '_' . $sku->sku_code,
|
|
'goods_name' => $goodsItem['title'] . '_' . $sku->title,
|
|
];
|
|
}
|
|
}
|
|
$data = [];
|
|
foreach ($array as $row) {
|
|
if (isset($goodsSkus[$row[2]][$row[4]])) {
|
|
$data[] = array_merge($goodsSkus[$row[2]][$row[4]], [
|
|
'date' => date('Y-m-d'),
|
|
'today_init_num' => $row[1],
|
|
'location' => $row[5],
|
|
]);
|
|
}
|
|
}
|
|
$model = new GoodsSkuLocation();
|
|
$model->batchInsert($data);
|
|
}
|
|
}
|