update seeder kjpp dan export kertas kerja

This commit is contained in:
majid
2024-12-12 21:25:06 +07:00
parent bb1ad785a5
commit f7eec3720e
4 changed files with 344 additions and 214 deletions

View File

@@ -21,7 +21,7 @@ class KJPPSeeder extends Seeder
public function run(): void
{
$filePath = __DIR__ . '/LISTsatsa.xlsx';
$filePath = __DIR__ . '/list-update-kjpp.xlsx';
// DB::unprepared(file_get_contents(__DIR__ . '/kjpp.sql'));
if (!file_exists($filePath)) {
@@ -33,31 +33,26 @@ class KJPPSeeder extends Seeder
try {
// Baca excel dan tampilkan raw data
$collection = Excel::toCollection(null, $filePath, null, function($reader) {
$reader->setActiveSheetIndex(1);
})->first();
$collection = Excel::toCollection(null, $filePath)->first();
// Debug: Tampilkan jumlah baris
$this->command->info('Total baris: ' . $collection->count());
// Debug: Tampilkan 3 baris pertama (header)
$this->command->info('Header data:');
foreach($collection->take(3) as $index => $row) {
$this->command->info("Baris $index: " . print_r($row->toArray(), true));
}
// $this->command->info('Header data:');
// foreach($collection->take(3) as $index => $row) {
// $this->command->info("Baris $index: " . print_r($row->toArray(), true));
// }
// Skip 3 baris header
$data = $collection->skip(3);
// Debug: Tampilkan jumlah data setelah skip header
$this->command->info('Total data setelah skip header: ' . $data->count());
// Proses setiap baris
foreach ($data as $index => $row) {
$this->command->info("Memproses baris ke-$index:");
// Debug: Tampilkan data mentah
$this->command->info('Raw data: ' . print_r($row->toArray(), true));
// $this->command->info('Raw data: ' . print_r($row->toArray(), true));
// Skip jika baris kosong
if (empty($row[2])) {
@@ -68,8 +63,20 @@ class KJPPSeeder extends Seeder
$locationData = $this->checkKota($row[5]);
$jenisUsaha = $this->checkJenisUsaha($row[17]);
$jenisAsset = $this->checkJenisAsset($row[18]);
$jenisUsaha = $this->checkJenisUsaha($row[18]);
$jenisAsset = $this->checkJenisAsset($row[19]);
$detail_email_kantor = $this->checkDanJadikanJson($row[8]);
$nama_pic_reviewer = $this->checkDanJadikanJson($row[11]);
$nomor_hp_pic_reviewer = $this->checkDanJadikanJson($row[12]);
$detail_nama_pic_admin = $this->checkDanJadikanJson($row[13]);
$nomor_hp_pic_admin = $this->checkDanJadikanJson($row[14]);
$nama_pic_marketing = $this->checkDanJadikanJson($row[15]);
$nomor_hp_pic_marketing = $this->checkDanJadikanJson($row[16]);
try {
$dataToInsert = [
@@ -81,33 +88,33 @@ class KJPPSeeder extends Seeder
'city_code' => $locationData['city'],
'district_code' => $locationData['district'],
'village_code' => $locationData['village'],
'address' => $row[6],
'address' => $row[7],
'postal_code' => $locationData['postal_code'],
'nomor_telepon_kantor' => $row[7],
'email_kantor' => $row[8],
'detail_email_kantor' => json_encode($row[8]),
'nomor_telepon_kantor' => $row[8],
'email_kantor' => $detail_email_kantor,
'detail_email_kantor' => $detail_email_kantor,
'nama_pimpinan' => $row[9],
'nomor_hp_pimpinan' => $row[10],
'nama_pic_reviewer' => json_encode($row[11]),
'detail_nama_pic_reviewer' => json_encode($row[11]),
'nomor_hp_pic_reviewer' => json_encode($row[12]),
'detail_nomor_hp_pic_reviewer' => json_encode($row[12]),
'nama_pic_admin' => $row[13],
'detail_nama_pic_admin' => json_encode($row[13]),
'nomor_hp_pic_admin' => json_encode($row[14]),
'detail_nomor_hp_pic_admin' => json_encode($row[14]),
'nama_pic_marketing' => json_encode($row[15]),
'detail_nama_pic_marketing' => json_encode($row[15]),
'nomor_hp_pic_marketing' => json_encode($row[16]),
'detail_nomor_hp_pic_marketing' => json_encode($row[16]),
'nama_pic_reviewer' => $nama_pic_reviewer,
'detail_nama_pic_reviewer' => $nama_pic_reviewer,
'nomor_hp_pic_reviewer' => $nomor_hp_pic_reviewer,
'detail_nomor_hp_pic_reviewer' => $nomor_hp_pic_reviewer,
'nama_pic_admin' => $detail_nama_pic_admin,
'detail_nama_pic_admin' => $detail_nama_pic_admin,
'nomor_hp_pic_admin' => $nomor_hp_pic_admin,
'detail_nomor_hp_pic_admin' => $nomor_hp_pic_admin,
'nama_pic_marketing' => $nama_pic_marketing,
'detail_nama_pic_marketing' => $nama_pic_marketing,
'nomor_hp_pic_marketing' => $nomor_hp_pic_marketing[0],
'detail_nomor_hp_pic_marketing' => $nomor_hp_pic_marketing,
'ijin_usaha_id' => json_encode($jenisUsaha),
'jenis_aset_id' => json_encode($jenisAsset),
'attachment' => null,
];
// Debug: Tampilkan data yang akan diinsert
$this->command->info('Data yang akan disimpan: ' . print_r($dataToInsert, true));
// Simpan ke database
KJPP::create($dataToInsert);
@@ -196,22 +203,37 @@ public function checkJenisAsset($data)
// Bersihkan dan ubah ke lowercase
$cleanData = trim(strtolower($data));
// Pisahkan berdasarkan koma
$assets = array_map('trim', explode(',', $cleanData));
// Pisahkan berdasarkan koma, titik koma, dan spasi
$assets = preg_split('/[;,]+|\\s+/', $cleanData);
// Daftar asset yang valid di database
$validAssets = JenisJaminan::pluck('code')->toArray();
$assetIds = [];
foreach ($assets as $asset) {
// Cari di database dengan lowercase
$jenisAsset = JenisJaminan::whereRaw('LOWER(name) = ?', [$asset])->first();
// Hapus spasi di awal dan akhir
$asset = trim($asset);
// Cek jika ada tanda kurung
if (preg_match('/\((.*?)\)/', $asset, $matches)) {
// Ambil isi dalam tanda kurung dan pisahkan
$insideParentheses = explode(',', $matches[1]);
foreach ($insideParentheses as $insideAsset) {
$insideAsset = trim($insideAsset);
// Cari di database
$jenisAsset = JenisJaminan::whereRaw('LOWER(name) = ?', [$insideAsset])->first();
if ($jenisAsset && in_array($jenisAsset->code, $validAssets)) {
$assetIds[] = $jenisAsset->code;
}
}
}
// Cek jenis aset utama (tanpa tanda kurung)
$jenisAsset = JenisJaminan::whereRaw('LOWER(name) = ?', [$asset])->first();
if ($jenisAsset && in_array($jenisAsset->code, $validAssets)) {
$assetIds[] = $jenisAsset->code;
$this->command->info(" ✅ Jenis Asset ditemukan: " . $jenisAsset->name);
}
// Hilangkan warning untuk yang tidak ditemukan
}
// Menghilangkan duplikat jika ada
@@ -237,22 +259,23 @@ public function checkJenisUsaha($data)
// Bersihkan dan ubah ke lowercase
$cleanData = trim(strtolower($data));
// Pisahkan berdasarkan koma jika ada
$usahas = array_map('trim', explode(',', $cleanData));
// Pisahkan berdasarkan koma, titik koma, atau garis miring
$usahas = preg_split('/[\s,;\/]+/', $cleanData);
// Daftar usaha yang valid di database
// Ambil daftar valid usaha dari database
$validUsaha = IjinUsaha::pluck('code')->toArray();
$usahaIds = [];
foreach ($usahas as $usaha) {
// Cari di database dengan lowercase
// Hapus spasi di awal dan akhir
$usaha = trim($usaha);
// Cari jenis usaha di database
$jenisUsaha = IjinUsaha::whereRaw('LOWER(name) = ?', [$usaha])->first();
if ($jenisUsaha && in_array($jenisUsaha->code, $validUsaha)) {
$usahaIds[] = $jenisUsaha->code;
$this->command->info(" ✅ Jenis Usaha ditemukan: " . $jenisUsaha->name);
}
// Hilangkan warning untuk yang tidak ditemukan
}
// Menghilangkan duplikat jika ada
@@ -264,11 +287,32 @@ public function checkJenisUsaha($data)
return $usahaIds;
} catch (\Exception $e) {
$this->command->error(" ❌ Error pada checkJenisUsaha: " . $e->getMessage());
return [];
}
}
// Fungsi untuk memisahkan dan mengonversi data menjadi array JSON
function checkDanJadikanJson($input) {
$input = trim($input);
// memisahkan berdasarkan "/", ";", "dan", atau baris baru ("\n")
$separatedData = preg_split('/\s*\/\s*|\s*;\s*|\s*dan\s*|\s*\n\s*/i', $input);
$cleanedData = array_map(function($item) {
return trim($item);
}, $separatedData);
$cleanedData = array_filter($cleanedData, function($item) {
return !empty($item);
});
return json_encode(array_values($cleanedData));
}
}

Binary file not shown.