mirror of
https://gitee.com/hzchunfen/erp.git
synced 2025-12-01 06:30:49 +00:00
56 lines
1.7 KiB
PHP
56 lines
1.7 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()
|
||
|
|
->with(['skus:id,goods_id,sku_code'])
|
||
|
|
->whereIn('goods_code', $goodsCode)
|
||
|
|
->get(['id', 'goods_code']);
|
||
|
|
$goodsSkus = [];
|
||
|
|
foreach ($goods as $goodsItem) {
|
||
|
|
$goodsSkus[$goodsItem['goods_code']][$goodsItem->skus->sku_code] = [
|
||
|
|
'goods_id' => $goodsItem->id,
|
||
|
|
'goods_sku_id' => $goodsItem->skus->id,
|
||
|
|
'external_sku_id' => $goodsItem['goods_code'] . '_' . $goodsItem->skus->sku_code,
|
||
|
|
];
|
||
|
|
}
|
||
|
|
$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);
|
||
|
|
}
|
||
|
|
}
|