226 lines
9.4 KiB
PHP
226 lines
9.4 KiB
PHP
<?php
|
|
|
|
/*******************************************************************
|
|
|
|
Module : /apps/php/api/dalev.php
|
|
Created By : Siau Pheng ([email protected]).
|
|
Created Date : January 31st, 2026.
|
|
|
|
(c) 2026, 3FONIA Software; WWW.3FONIA.COM.
|
|
|
|
*******************************************************************/
|
|
|
|
require_once(__DIR__."/../../../../../vendor/autoload.php");
|
|
require_once(__DIR__."/../func.sippd.php");
|
|
|
|
use siaupheng\fonia3\Web\Param;
|
|
|
|
/* DALEV SUB KEGIATAN */
|
|
|
|
function sinkron_dalev_subkeg($db = null) {//oke
|
|
$aret = ['status' => "success", 'message' => 'Berhasil singkron data!'];
|
|
|
|
$adata = json_decode(stripslashes(html_entity_decode($_POST['subkeg'])), true);
|
|
|
|
foreach ($adata as $_key1 => $subkeg) {
|
|
fastInsert("dpa_dalev_sub", $subkeg);
|
|
}
|
|
$db->Query("UPDATE dpa_dalev_sub A,para90_opd B SET A.OPDID=B.OPDID WHERE A.K_OPD=B.K_OPD");
|
|
return $aret;
|
|
}
|
|
|
|
function ambil_dalev_subkeg($db = null) {//oke
|
|
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
|
|
$aopd = [];
|
|
|
|
$twulan = 1;//todo: auto from config !
|
|
$tahun = Param::Get("tahun", 0);
|
|
$kode_skpd = Param::Get("kode_skpd", "");
|
|
if ($kode_skpd <> "") {
|
|
$db->Query("SELECT * FROM para90_opd WHERE K_OPD='".$kode_skpd."' LIMIT 1");
|
|
if ($db->Next()) $aopd = $db->AllRow();
|
|
}
|
|
|
|
$data_subkeg = [];
|
|
$tsql = (count($aopd)==0) ? "" : " AND OPDID='".$aopd['OPDID']."'";
|
|
$db->Query("SELECT * FROM (SELECT OPDID,SubID,K_Sub,RealK_TW1,RealK_TW2,RealK_TW3,RealK_TW4 FROM dpa_sub WHERE Tahun='".$tahun."'".$tsql.") S LEFT JOIN (SELECT OPDID,SubID,Satuan_Output Satuan,Real_TW1 RealF_TW1,Real_TW2 RealF_TW2,Real_TW3 RealF_TW3,Real_TW4 RealF_TW4 FROM dpa_sub_output WHERE Tahun='".$tahun."'".$tsql.") O ON (O.OPDID=S.OPDID AND O.SubID=S.SubID) LEFT JOIN (SELECT * FROM dpa_dalev_sub WHERE Tahun='".$tahun."'".$tsql.") D ON (D.OPDID=S.OPDID AND D.K_Sub=S.K_Sub) WHERE D.SIPD_OUTCOME IS NOT NULL ORDER BY S.K_Sub");
|
|
while ($db->Next()) {
|
|
$_tri_kin = []; $_tri_keu = []; $_thn_kin = 0; $_thn_keu = 0;
|
|
for ($_tri = 1; $_tri <= 4; $_tri++) {
|
|
$_tri_kin['triwulan_kinerja_'.$_tri] = ($_tri <= $twulan) ? $db->Row("RealF_TW".$_tri) : "";
|
|
$_tri_keu['triwulan_keuangan_'.$_tri] = ($_tri <= $twulan) ? (float)$db->Row("RealK_TW".$_tri) : 0;
|
|
$_thn_kin += ($_tri <= $twulan) ? (float)$db->Row("RealF_TW".$_tri) : 0;
|
|
$_thn_keu += ($_tri <= $twulan) ? (float)$db->Row("RealK_TW".$_tri) : 0;
|
|
}
|
|
//komulatif / positif / negatif / rata-rata
|
|
switch ($db->Row("Status", "komulatif")) {
|
|
case "komulatif":
|
|
break;
|
|
case "rata-rata":
|
|
$_thn_kin = $_thn_kin / $twulan;
|
|
break;
|
|
default:
|
|
$_thn_kin = (float)$db->Row("RealK_TW".$twulan);
|
|
}
|
|
$data_subkeg[] = [
|
|
'tahun' => $tahun,
|
|
'kodeskpd' => $db->Row("K_OPD"),
|
|
'kodebidang' => $db->Row("K_Bidu"),
|
|
'kodeprogram' => $db->Row("K_Prog"),
|
|
'kodekegiatan' => $db->Row("K_Keg"),
|
|
'kodesubkegiatan' => $db->Row("K_Sub"),
|
|
'satuan' => $db->Row("Satuan"),
|
|
'formula' => $db->Row("Status"), //#info-status-kinerja
|
|
'status' => $db->Row("Status"), //#info-status-kinerja
|
|
'status_rkpd' => $db->Row("Status"), //#info-status-kinerja
|
|
//'status_renstra' => "komulatif", //#info-status-renstra
|
|
//'target_realisasi_kinerja' => $targetRealisasiKinerjaData,
|
|
//'target_realisasi_keuangan' => $targetRealisasiKeuanganData,
|
|
'triwulan_kinerja' => $_tri_kin,
|
|
'triwulan_keuangan' => $_tri_keu,
|
|
'realisasi_kinerja_tahunan' => $_thn_kin,
|
|
'realisasi_keuangan_tahunan' => $_thn_keu,
|
|
'idoutcome' => $db->Row("SIPD_OUTCOME"),
|
|
'idoutput' => $db->Row("SIPD_OUTPUT"),
|
|
'kodesubkegiatan_indikator' => $db->Row("SIPD_SUBKEG_INDI"),
|
|
'uraisubkegiatan_indikator' => "",
|
|
];
|
|
}
|
|
|
|
if (!empty($data_subkeg)) {
|
|
$aret['data'] = $data_subkeg;
|
|
}
|
|
|
|
return $aret;
|
|
}
|
|
|
|
/* DALEV PROGRAM */
|
|
|
|
function sinkron_dalev_prog($db = null) {
|
|
$aret = ['status' => "success", 'message' => 'Berhasil singkron data!'];
|
|
|
|
$adata = json_decode(stripslashes(html_entity_decode($_POST['prog'])), true);
|
|
|
|
foreach ($adata as $_key1 => $prog) {
|
|
fastInsert("dpa_dalev_prog", $prog);
|
|
}
|
|
$db->Query("UPDATE dpa_dalev_prog A,para90_opd B SET A.OPDID=B.OPDID WHERE A.K_OPD=B.K_OPD");
|
|
return $aret;
|
|
}
|
|
|
|
function ambil_dalev_prog($db = null) {
|
|
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
|
|
$aopd = ['OPDID' => "0"];
|
|
|
|
$twulan = 1;//todo: auto from config !
|
|
$tahun = Param::Get("tahun", 0);
|
|
$daftar_skpd = json_decode(stripslashes(Param::Get("daftar_skpd", "[]")), true);
|
|
if (count($daftar_skpd) > 0) {
|
|
$db->Query("SELECT GROUP_CONCAT(OPDID) OPDID FROM para90_opd WHERE K_OPD IN ('".join("','", $daftar_skpd)."')");
|
|
if ($db->Next()) $aopd = $db->AllRow();
|
|
}
|
|
|
|
$data_prog = [];
|
|
$tsql = " AND OPDID IN (".$aopd['OPDID'].")";
|
|
$db->Query("SELECT P.*,D.*,IFNULL(RPI.Indi_Status,'') Status_Renstra FROM (SELECT TipeDataID,Status_Indi Status_Renja,Real_TW1,Real_TW2,Real_TW3,Real_TW4,SIPD_PROG_INDI FROM dpa_prog_indi WHERE Tahun='".$tahun."'".$tsql.") P LEFT JOIN (SELECT * FROM dpa_dalev_prog WHERE Tahun='".$tahun."'".$tsql.") D ON (D.SIPD_PROG_INDI=P.SIPD_PROG_INDI) LEFT JOIN renstra_prog_indi RPI ON (RPI.SIPD_UNIK=P.SIPD_PROG_INDI) WHERE D.SIPD_PROG_INDI IS NOT NULL ORDER BY D.K_Prog");
|
|
while ($db->Next()) {
|
|
$atriw = [];
|
|
//for ($_tri = 1; $_tri <= 4; $_tri++) {
|
|
$atriw['triwulan_1'] = $db->Row("Real_TW1");
|
|
//}
|
|
$real_thn = $db->Row("Real_TW1");//todo: hitung utk tw berikutnya
|
|
$tipe_data = ($db->Row("TipeDataID")==0 ? "numeric" : ($db->Row("TipeDataID")==2 ? "rasio" : "enumv2"));
|
|
|
|
$atahun = [0 => 2025, 1 => 2026, 2 => 2027, 3 => 2028, 4 => 2029, 5 => 2030]; //todo: bisa automatis
|
|
$atarget = [];
|
|
foreach ($atahun as $idx => $thn) {
|
|
$atarget['target_'.$idx] = $db->Row("Target_".$idx);
|
|
$atarget['target_'.$thn] = $db->Row("Target_".$idx);
|
|
$atarget['realisasi_'.$thn] = ($thn == 2026 ? $real_thn : "");
|
|
}
|
|
|
|
$data_prog[] = [
|
|
'tahun' => $tahun,
|
|
'kodeskpd' => $db->Row("K_OPD"),
|
|
'kodebidang' => $db->Row("K_Bidu"),
|
|
'kodeprogram' => $db->Row("K_Prog"),
|
|
'idoutcome' => $db->Row("SIPD_OUTCOME"),
|
|
'formula' => $db->Row("Status"), //#info-status-kinerja
|
|
'status' => $db->Row("Status"), //#info-status-kinerja
|
|
'status_rkpd' => $db->Row("Status"), //#info-status-kinerja
|
|
'status_renstra' => ($db->Row("Status_Renstra")=="negatif" ? "negatif" : $db->Row("Status")), //#info-status-renstra
|
|
'baseline' => $db->Row("Baseline"),
|
|
'satuan' => $db->Row("Satuan"),
|
|
'tipe_data' => $tipe_data,
|
|
'target_realisasi' => $atarget,
|
|
'triwulan' => $atriw,
|
|
'realisasi_tahunan' => $real_thn,
|
|
'kodeprogram_indikator' => $db->Row("SIPD_PROG_INDI"),
|
|
'uraiprogram_indikator' => $db->Row("Indikator"),
|
|
];
|
|
}
|
|
|
|
if (!empty($data_prog)) {
|
|
$aret['data'] = $data_prog;
|
|
}
|
|
|
|
return $aret;
|
|
}
|
|
|
|
/* DALEV FAKTOR PENDUKUNG */
|
|
|
|
/*function sinkron_dalev_dukung($db = null) {//not yet
|
|
$aret = ['status' => "success", 'message' => 'Berhasil singkron data!'];
|
|
|
|
$adata = json_decode(stripslashes(html_entity_decode($_POST['prog'])), true);
|
|
|
|
foreach ($adata as $_key1 => $prog) {
|
|
fastInsert("dpa_dalev_prog", $prog);
|
|
}
|
|
$db->Query("UPDATE dpa_dalev_prog A,para90_opd B SET A.OPDID=B.OPDID WHERE A.K_OPD=B.K_OPD");
|
|
return $aret;
|
|
}*/
|
|
|
|
function ambil_dalev_dukung($db = null) {
|
|
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
|
|
$aopd = ['OPDID' => "0"];
|
|
|
|
$tahun = Param::Get("tahun", 0);
|
|
$daftar_skpd = json_decode(stripslashes(Param::Get("daftar_skpd", "[]")), true);
|
|
if (count($daftar_skpd) > 0) {
|
|
$db->Query("SELECT GROUP_CONCAT(OPDID) OPDID FROM para90_opd WHERE K_OPD IN ('".join("','", $daftar_skpd)."')");
|
|
if ($db->Next()) $aopd = $db->AllRow();
|
|
}
|
|
|
|
$data_dukung = [];
|
|
$tsql = " AND OPDID IN (".$aopd['OPDID'].")";
|
|
$db->Query("SELECT * FROM dpa_dalev_renja WHERE Tahun='".$tahun."'".$tsql);
|
|
while ($db->Next()) {
|
|
$afaktor = [];
|
|
for ($_tri = 1; $_tri <= 4; $_tri++) {
|
|
$afaktor[$_tri] = [
|
|
'faktor_pendorong' => $db->Row("Pendorong_TW".$_tri),
|
|
'faktor_penghambat' => $db->Row("Penghambat_TW".$_tri),
|
|
'tindaklanjut' => $db->Row("Lanjut_TW".$_tri),
|
|
'tindaklanjut_rkpd' => $db->Row("Lanjut_RKPD_TW".$_tri),
|
|
];
|
|
}
|
|
|
|
$data_dukung[] = [
|
|
'tahun' => $tahun,
|
|
'kodeskpd' => $db->Row("K_OPD"),//jika rkpd tidak ada isi
|
|
'kodeprogram' => "",
|
|
'id_topik_psn' => 0,
|
|
'faktor' => $afaktor,
|
|
];
|
|
}
|
|
|
|
if (!empty($data_dukung)) {
|
|
$aret['data'] = $data_dukung;
|
|
}
|
|
|
|
return $aret;
|
|
}
|
|
|
|
?>
|