Skip to content

Commit

Permalink
#76: Menyediakan proses konversi berkas BIP ke dalam urutan kolom yan…
Browse files Browse the repository at this point in the history
…g diperlukan SID. Menyediakan proses mengimpor berkas BIP langsung ke dalam database SID.
  • Loading branch information
Eddie Ridwan committed Oct 8, 2016
1 parent 1eee183 commit ed64485
Show file tree
Hide file tree
Showing 7 changed files with 642 additions and 0 deletions.
Binary file added assets/import/konversi_bip.xls
Binary file not shown.
19 changes: 19 additions & 0 deletions donjo-app/controllers/database.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,18 @@ function import(){
$this->load->view('footer');
}

function import_bip(){

$nav['act']= 5;
$data['form_action'] = site_url("database/import_data_bip");
$header = $this->header_model->get_data();
$header['modul'] = 12;
$this->load->view('header', $header);
$this->load->view('nav',$nav);
$this->load->view('import/bip',$data);
$this->load->view('footer');
}

function import_ppls(){

$nav['act']= 4;
Expand Down Expand Up @@ -121,6 +133,13 @@ function import_dasar(){
//import_das();
}

function import_data_bip(){
$hapus = isset($_POST['hapus_data']);
$this->import_model->import_bip($hapus);
redirect('database/import_bip/1');
//import_das();
}

function ppls_kuisioner(){
$this->import_model->ppls_kuisioner();
redirect('database/import_ppls/1');
Expand Down
129 changes: 129 additions & 0 deletions donjo-app/helpers/opensid_helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,135 @@
define("LOKASI_DOKUMEN", 'desa/upload/dokumen/');
define("LOKASI_WIDGET", 'desa/widget/');

// Konversi tulisan kode Buku Induk Penduduk ke kode SID
define("KODE_SEX", serialize(array("L" => "1", "P" => "2")));
define("KODE_AGAMA", serialize(array(
strtolower("Islam") => "1",
strtolower("Kristen") => "2",
strtolower("Katholik") => "3",
strtolower("Hindu") => "4",
strtolower("Budha") => "5",
strtolower("Konghuchu") => "6",
strtolower("Aliran Kepercayaan") => "7")));
define("KODE_STATUS", serialize(array(
strtolower("BELUM KAWIN") => "1",
strtolower("KAWIN") => "2",
strtolower("CERAI HIDUP") => "3",
strtolower("CERAI MATI") => "4")));
define("KODE_HUBUNGAN", serialize(array(
strtolower("KEPALA KELUARGA") => "1",
strtolower("SUAMI") => "2",
strtolower("ISTRI") => "3",
strtolower("ANAK") => "4",
strtolower("MENANTU") => "5",
strtolower("CUCU") => "6",
strtolower("ORANG TUA") => "7",
strtolower("MERTUA") => "8",
strtolower("FAMILI LAIN") => "9",
strtolower("PEMBANTU") => "10",
strtolower("LAINNYA") => "11")));
define("KODE_PENDIDIKAN", serialize(array(
strtolower("Tidak/Belum Sekolah") => "1",
strtolower("Belum Tamat SD/Sederajat") => "2",
strtolower("Tamat SD/Sederajat") => "3",
strtolower("SLTP/Sederajat") => "4",
strtolower("SLTA/Sederajat") => "5",
strtolower("Diploma I/II") => "6",
strtolower("Akademi/Diploma III/S. Muda") => "7",
strtolower("Diploma IV/Strata I") => "8",
strtolower("Strata II") => "9",
strtolower("Strata III") => "10")));
define("KODE_PEKERJAAN", serialize(array(
strtolower("BELUM/TIDAK BEKERJA") => "1",
strtolower("MENGURUS RUMAH TANGGA") => "2",
strtolower("PELAJAR/MAHASISWA") => "3",
strtolower("PENSIUNAN") => "4",
strtolower("PEGAWAI NEGERI SIPIL") => "5",
strtolower("TENTARA NASIONAL INDONESIA") => "6",
strtolower("KEPOLISIAN RI") => "7",
strtolower("PERDAGANGAN") => "8",
strtolower("PETANI/PEKEBUN") => "9",
strtolower("PETERNAK") => "10",
strtolower("NELAYAN/PERIKANAN") => "11",
strtolower("INDUSTRI") => "12",
strtolower("KONSTRUKSI") => "13",
strtolower("TRANSPORTASI") => "14",
strtolower("KARYAWAN SWASTA") => "15",
strtolower("KARYAWAN BUMN") => "16",
strtolower("KARYAWAN BUMD") => "17",
strtolower("KARYAWAN HONORER") => "18",
strtolower("BURUH HARIAN LEPAS") => "19",
strtolower("BURUH TANI/PERKEBUNAN") => "20",
strtolower("BURUH NELAYAN/PERIKANAN") => "21",
strtolower("BURUH PETERNAKAN") => "22",
strtolower("PEMBANTU RUMAH TANGGA") => "23",
strtolower("TUKANG CUKUR") => "24",
strtolower("TUKANG LISTRIK") => "25",
strtolower("TUKANG BATU") => "26",
strtolower("TUKANG KAYU") => "27",
strtolower("TUKANG SOL SEPATU") => "28",
strtolower("TUKANG LAS/PANDAI BESI") => "29",
strtolower("TUKANG JAHIT") => "30",
strtolower("TUKANG GIGI") => "31",
strtolower("PENATA RIAS") => "32",
strtolower("PENATA BUSANA") => "33",
strtolower("PENATA RAMBUT") => "34",
strtolower("MEKANIK") => "35",
strtolower("SENIMAN") => "36",
strtolower("TABIB") => "37",
strtolower("PARAJI") => "38",
strtolower("PERANCANG BUSANA") => "39",
strtolower("PENTERJEMAH") => "40",
strtolower("IMAM MESJID") => "41",
strtolower("PENDETA") => "42",
strtolower("PASTOR") => "43",
strtolower("WARTAWAN") => "44",
strtolower("USTADZ/MUBALIGH") => "45",
strtolower("JURU MASAK") => "46",
strtolower("PROMOTOR ACARA") => "47",
strtolower("ANGGOTA DPR-RI") => "48",
strtolower("ANGGOTA DPD") => "49",
strtolower("ANGGOTA BPK") => "50",
strtolower("PRESIDEN") => "51",
strtolower("WAKIL PRESIDEN") => "52",
strtolower("ANGGOTA MAHKAMAH KONSTITUSI") => "53",
strtolower("ANGGOTA KABINET/KEMENTERIAN") => "54",
strtolower("DUTA BESAR") => "55",
strtolower("GUBERNUR") => "56",
strtolower("WAKIL GUBERNUR") => "57",
strtolower("BUPATI") => "58",
strtolower("WAKIL BUPATI") => "59",
strtolower("WALIKOTA") => "60",
strtolower("WAKIL WALIKOTA") => "61",
strtolower("ANGGOTA DPRD PROVINSI") => "62",
strtolower("ANGGOTA DPRD KABUPATEN/KOTA") => "63",
strtolower("DOSEN") => "64",
strtolower("GURU") => "65",
strtolower("PILOT") => "66",
strtolower("PENGACARA") => "67",
strtolower("NOTARIS") => "68",
strtolower("ARSITEK") => "69",
strtolower("AKUNTAN") => "70",
strtolower("KONSULTAN") => "71",
strtolower("DOKTER") => "72",
strtolower("BIDAN") => "73",
strtolower("PERAWAT") => "74",
strtolower("APOTEKER") => "75",
strtolower("PSIKIATER/PSIKOLOG") => "76",
strtolower("PENYIAR TELEVISI") => "77",
strtolower("PENYIAR RADIO") => "78",
strtolower("PELAUT") => "79",
strtolower("PENELITI") => "80",
strtolower("SOPIR") => "81",
strtolower("PIALANG") => "82",
strtolower("PARANORMAL") => "83",
strtolower("PEDAGANG") => "84",
strtolower("PERANGKAT DESA") => "85",
strtolower("KEPALA DESA") => "86",
strtolower("BIARAWATI") => "87",
strtolower("WIRASWASTA") => "88",
strtolower("LAINNYA") => "89")));

/**
* Ambil Versi
*
Expand Down
148 changes: 148 additions & 0 deletions donjo-app/models/import_model.php
Original file line number Diff line number Diff line change
Expand Up @@ -572,6 +572,154 @@ function import_excel($hapus=false) {
====================
*/

/* ==========================
IMPORT BUKU INDUK PENDUDUK
==========================
*/

function cari_bip_kk($data, $baris, $dari=1){
if ($baris <=1 )
return 0;

$baris_kk = 0;
for ($i=$dari; $i<=$baris; $i++){
// Baris dengan kolom[2] = "NO.KK" menunjukkan mulainya data keluarga dan anggotanya
if($data->val($i,2) == 'NO.KK') {
$baris_kk = $i;
break;
}
}
return $baris_kk;
}

function get_bip_keluarga($data, $i){
// Contoh alamat: "DUSUN KERANDANGAN, RT:001, RW:001, Kodepos:83355,-"
// $i = baris judul data keluarga. Data keluarga ada di baris berikutnya
$baris = $i + 1;
$alamat = $data->val($baris,7);
$pos = strpos($alamat, 'DUSUN');
if ($pos !== false){
$pos = $pos + 5;
$data_keluarga['dusun'] = trim(substr($alamat, $pos, strpos($alamat, ',', $pos) - $pos));
} else $data_keluarga['dusun'] = 'LAINNYA';
$pos = strpos($alamat, 'RW:');
if ($pos !== false){
$pos = $pos + 3;
$data_keluarga['rw'] = substr($alamat, $pos, strpos($alamat, ',', $pos) - $pos);
} else $data_keluarga['rw'] = '-';
if ($data_keluarga['rw'] == '') $data_keluarga['rw'] = '-';
$pos = strpos($alamat, 'RT:') + 3;
$data_keluarga['rt'] = substr($alamat, $pos, strpos($alamat, ',', $pos) - $pos);
if ($data_keluarga['rt'] == '') $data_keluarga['rt'] = '-';
$data_keluarga['no_kk'] = $data->val($baris,2);
return $data_keluarga;
}

function get_bip_anggota_keluarga($data, $i, $data_keluarga){
// $i = baris data anggota keluarga
$data_anggota = $data_keluarga;
$data_anggota['nik'] = preg_replace('/[^0-9]/', '', trim($data->val($i, 3)));
$data_anggota['nama'] = trim($data->val($i, 4));
$data_anggota['sex'] = unserialize(KODE_SEX)[trim($data->val($i, 5))];
$data_anggota['tempatlahir'] = trim($data->val($i, 6));
$tanggallahir = trim($data->val($i, 7));
$data_anggota['tanggallahir'] = $this->format_tanggallahir($tanggallahir);
$data_anggota['agama_id'] = unserialize(KODE_AGAMA)[strtolower(trim($data->val($i, 9)))];
$data_anggota['status_kawin'] = unserialize(KODE_STATUS)[strtolower(trim($data->val($i, 10)))];
$data_anggota['kk_level'] = unserialize(KODE_HUBUNGAN)[strtolower(trim($data->val($i, 11)))];
$data_anggota['pendidikan_kk_id'] = unserialize(KODE_PENDIDIKAN)[strtolower(trim($data->val($i, 12)))];
$data_anggota['pekerjaan_id'] = unserialize(KODE_PEKERJAAN)[strtolower(trim($data->val($i, 13)))];
$nama_ibu = trim($data->val($i,14));
if($nama_ibu==""){
$nama_ibu = "-";
}
$data_anggota['nama_ibu'] = $nama_ibu;
$nama_ayah = trim($data->val($i,15));
if($nama_ayah==""){
$nama_ayah = "-";
}
$data_anggota['nama_ayah'] = $nama_ayah;
$data_anggota['akta_lahir'] = trim($data->val($i, 16));

// Isi kolom default
$data_anggota['warganegara_id'] = "1";
$data_anggota['golongan_darah_id'] = "13";
$data_anggota['pendidikan_sedang_id'] = "";
$data_anggota['jamkesmas'] = "";

return $data_anggota;
}

function import_bip($hapus=false){
$_SESSION['error_msg'] = '';
$_SESSION['success'] = 1;
if ($this->file_import_valid() == false) {
return;
}

$data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);

// membaca jumlah baris dari data excel
$baris = $data->rowcount($sheet_index=0);
if ($this->cari_bip_kk($data, $baris, 1) < 1) {
$_SESSION['error_msg'].= " -> Tidak ada data";
$_SESSION['success']=-1;
return;
}

$this->db->query("SET character_set_connection = utf8");
$this->db->query("SET character_set_client = utf8");

// Pengguna bisa menentukan apakah data penduduk yang ada dihapus dulu
// atau tidak sebelum melakukan impor
if ($hapus) { $this->hapus_data_penduduk(); }

$gagal_penduduk = 0;
$baris_gagal = "";
$total_keluarga = 0;
$total_penduduk = 0;
// Import data excel mulai baris pertama
for ($i=1; $i<=$baris; $i++){

// Cari keluarga berikutnya
if ($data->val($i,2) != "NO.KK") continue;
// Proses keluarga
$data_keluarga = $this->get_bip_keluarga($data, $i);
$this->tulis_tweb_wil_clusterdesa($data_keluarga);
$this->tulis_tweb_keluarga($data_keluarga);
$total_keluarga++;
// Pergi ke data anggota keluarga
$i = $i + 3;
// Proses setiap anggota keluarga
while ($data->val($i,2) != "NO.KK" AND $i <= $baris) {
$data_anggota = $this->get_bip_anggota_keluarga($data, $i, $data_keluarga);
if ($this->data_import_valid($data_anggota)) {
$this->tulis_tweb_penduduk($data_anggota);
$total_penduduk++;
}else{
$gagal_penduduk++;
$baris_gagal .=$i.",";
}
$i++;
}
$i = $i - 1;
}

if($gagal_penduduk==0)
$baris_gagal ="tidak ada data yang gagal di import.";
else $_SESSION['success']=-1;

$_SESSION['gagal']=$gagal_penduduk;
$_SESSION['total_keluarga']=$total_keluarga;
$_SESSION['total_penduduk']=$total_penduduk;
$_SESSION['baris']=$baris_gagal;
}

/* ==================================
Selesai IMPORT BUKU INDUK PENDUDUK
==================================
*/

function import_dasar(){

$data = "";
Expand Down

0 comments on commit ed64485

Please sign in to comment.