<?php
namespace App\Controller\Backend;
use App\Controller\Base\BaseController;
use App\Repository\MPlantRepository;
use App\Repository\TLogRepository;
use App\Repository\TPostingLaporanRepository;
use App\Repository\TRawDataRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Routing\Annotation\Route;
use Kematjaya\Breadcrumb\Lib\Builder as BreacrumbBuilder;
use Kematjaya\Export\Manager\ManagerInterface;
use Kematjaya\Export\Processor\Excel\SpreadsheetFromArrayProcessor;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Security;
class DashboardController extends BaseController
{
/**
* @Route("/dashboard",name="dashboard")
*/
public function index(
Request $request,
BreacrumbBuilder $builder,
Security $security,
TLogRepository $tLogRepo,
TRawDataRepository $tRawDataRepo,
MPlantRepository $mPlantRepo
) {
$builder->add('Dashboard ', "dashboard", array(), " <i class='fa fa-home'></i>");
$user = $security->getUser()->getRoles();
$qb = $tRawDataRepo->createQueryBuilder('t');
$qb->where('t.updated_at IS NOT NULL')
->orderBy('t.updated_at', 'DESC')
->setMaxResults(1);
$latest = $qb->getQuery()->getOneOrNullResult();
$last_update = ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
// dump($this->getUser()->getName());exit;
// print_r($this->getCardDashboard('tahap_pembuatan_paket',true)); exit;
$log = $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
$tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
$tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
$tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
$tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
$bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
$sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
// print_r($this->getGrafikReport($tahun,$bulan)); exit;
//chart realisasi
//
$table = 'v_cleansing_pk_vendor';
$group = 'kategori_plant';
// $periode_tanggal = $this->getDataTerbaruTerlama($table, 'tgl_verifikasi_pr', $kategori_tahap = null, $tahun, $sumber_dana);
// print_r($periode_tanggal); exit;
// $data = $this->getTabelLaporan($table, 'regional', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana, null);
$data = $this->getTabelLaporan($table, $group, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana, null);
$ungroup = $this->getLaporanUnGroup($table, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun);
// print_r($ungroup); exit;
// $data_tabel = $this->getTabelLaporan($table, $group, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
// $data_dashboard = $this->getDashbord('tabel_40', 'regional');
// print_r($data);
// exit;
//creat_pk
// tgl_submit_pk_ke_hps, tgl_sinkron_pr_sap_ke_ips
//hps
// tgl_submit_ke_pengadaan, tgl_submit_pk_ke_hps
//pengadaan
// tgl_approval_sppbj, tgl_submit_ke_pengadaan
// $hari_kerja_create_pk = $this->getJumlahHariKerja($table, 'tgl_sinkron_pr_sap_ke_ips', 'tgl_submit_pk_ke_hps', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
// $hari_kerja_hps = $this->getJumlahHariKerja($table, 'tgl_submit_pk_ke_hps', 'tgl_submit_ke_pengadaan', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
// $hari_kerja_pengadaan = $this->getJumlahHariKerja($table, 'tgl_submit_ke_pengadaan', 'tgl_approval_sppbj', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
// $hari_kerja_metode_pengadaan = $this->getJumlahHariKerja($table, 'tgl_pelaksanaan_pp', 'tgl_approval_sppbj', 'metode_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$jumlah_metode = $this->getJumlahBerdasrkanMetode($table, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$range_nilai_pk = $this->getRangeNilaiPk($table, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$m_plant = $this->getKategoriPlant();
// print_r($range_nilai_pk); exit;
// $hari_kerja_metode_pengadaan = $this->getJumlahHariKerja('tabel_40', 'tgl_submit_ke_pengadaan','tgl_submit_pk_ke_hps','metode_pengadaan');
// $res_metode = [];
// foreach ($hari_kerja_metode_pengadaan as $key => $value) {
// $res_metode[$value['tipe_pengadaan']] = $value['rata_rata_hari_kerja'];
// }
$res_metode_pengadaan = [];
foreach ($jumlah_metode as $key => $value) {
$res_metode_pengadaan[$value['tipe_pengadaan']]['jumlah'] = $value['jumlah'];
$res_metode_pengadaan[$value['tipe_pengadaan']]['total_nilai'] = $value['total_nilai'];
}
// print_r($res_metode_pengadaan); exit;
//dashbord kotak bawah
$jumlah_pk = 0;
$jumlah_pr = 0;
$jumlah_pp = 0;
$jumlah_pemenang = 0;
$total_nilai = 0;
$total_anggaran = 0;
$total_hps = 0;
$total_realisasi = 0;
$saving_terhadap_anggaran = 0;
$saving_terhadap_hps = 0;
$saving_terhadap_anggaran_persen = 0;
$saving_terhadap_hps_persen = 0;
foreach ($data as $key => $value) {
$jumlah_pk += $value['total_pk'];
$jumlah_pr += $value['total_pr'];
$jumlah_pp += $value['total_pp'];
$jumlah_pemenang += $value['total_vendor_pemenang'];
$total_nilai += $value['total_nilai'];
$total_anggaran += $value['total_anggaran'];
$total_hps += $value['total_hps'];
$total_realisasi += $value['total_nilai_akhir'];
}
$saving_terhadap_anggaran = $total_anggaran - $total_realisasi;
$saving_terhadap_hps = $total_hps - $total_realisasi;
$saving_terhadap_anggaran_persen = $total_anggaran > 0 ? ($saving_terhadap_anggaran / $total_anggaran) * 100 : 0;
$saving_terhadap_hps_persen = $total_hps > 0 ? ($saving_terhadap_hps / $total_hps) * 100 : 0;
$res_dash = [
'jumlah_pk' => $jumlah_pk,
'jumlah_pr' => $jumlah_pr,
'jumlah_pp' => $jumlah_pp,
'jumlah_pemenang' => $jumlah_pemenang,
'total_nilai' => $total_nilai,
'total_anggaran' => $total_anggaran,
'total_hps' => $total_hps,
'total_realisasi' => $total_realisasi,
// 'hari_kerja_create_pk' => number_format($hari_kerja_create_pk[0]['rata_rata_hari_kerja'], 0),
// 'hari_kerja_hps' => number_format($hari_kerja_hps[0]['rata_rata_hari_kerja']),
// 'hari_kerja_pengadaan' => number_format($hari_kerja_pengadaan[0]['rata_rata_hari_kerja'], 0),
// 'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
// 'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
'saving_thd_anggaran' => $saving_terhadap_anggaran,
'saving_thd_hps' => $saving_terhadap_hps,
'saving_thd_anggaran_persen' => round($saving_terhadap_anggaran_persen, 1),
'saving_thd_hps_persen' => round($saving_terhadap_hps_persen, 1),
'metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['jumlah'] : 0,
'metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['jumlah'] : 0,
'nilai_metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['total_nilai'] : 0,
'nilai_metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['total_nilai'] : 0,
'range_nilai_pk' => $range_nilai_pk,
'm_plant' => $m_plant
];
// print_r( $this->getGrafikTotalPk('tabel_34','no_pk',$tanggal_awal,$tanggal_akhir));
// exit;
//endrealisasi
// $pengunjung = $tLogRepo->count(['reff_name' => 'homepage']);
// print_r( $this->getCardDashboard('tabel_34', 'tahap_pembuatan_paket', false)); exit;
//tampilan table
$bulan_list = $this->getBulanList();
$template = ($request->get('full') == 1) ? 'dash' : 'index';
return $this->render('backend/dashboard/' . $template . '.html.twig', [
'user' => $user,
'tipe_tahun' => $tipe_tahun,
'tahun' => $tahun,
'sumber_dana' => $sumber_dana,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
'res_dash' => $res_dash,
'ungroup' => $ungroup,
// 'res_kotak_bawah' => $res_kotak_bawah,
// 'res_kotak_tabel' => $res_kotak_tabel,
'group' => $group,
'log' => $log,
'last_update' => $last_update,
'template' => $template,
'module' => 'dashboard',
'bulan_list' => $bulan_list
]);
}
/**
* @Route("/dashboard/dash_progres_paket_pengadaan",name="dash_progres_paket_pengadaan")
*/
public function dash_progres_paket_pengadaan(
Request $request,
BreacrumbBuilder $builder,
Security $security,
TLogRepository $tLogRepo,
TRawDataRepository $tRawDataRepo,
MPlantRepository $mPlantRepo
) {
$builder->add('Dashboard ', "dashboard", array(), " <i class='fa fa-home'></i>");
$builder->add('Progres Paket Pengadaan', "dash_progres_paket_pengadaan");
$user = $security->getUser()->getRoles();
$qb = $tRawDataRepo->createQueryBuilder('t');
$qb->where('t.updated_at IS NOT NULL')
->orderBy('t.updated_at', 'DESC')
->setMaxResults(1);
$latest = $qb->getQuery()->getOneOrNullResult();
$last_update = ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
$log = $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
$tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
$tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
$tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
$tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
$bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
$sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
$group = 'kategori_plant';
$table = 'v_cleansing_pk_vendor';
// $data = $this->getTabelLaporan($table, 'regional', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$data = $this->getLaporanUnGroup($table, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun);
$jumlah_pk = 0;
$jumlah_pr = 0;
$jumlah_pp = 0;
foreach ($data as $key => $value) {
$jumlah_pr += $value['total_pr'];
$jumlah_pk += $value['total_pk'];
$jumlah_pp += $value['total_pp'];
}
return $this->render('backend/dashboard/dash_progres_paket_pengadaan.html.twig', [
// return $this->render('backend/dashboard/dash.html.twig', [
'user' => $user,
'tipe_tahun' => $tipe_tahun,
'tahun' => $tahun,
'sumber_dana' => $sumber_dana,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
'group' => $group,
'jumlah_pr' => $jumlah_pr,
'jumlah_pk' => $jumlah_pk,
'jumlah_pp' => $jumlah_pp,
'last_update' => $last_update,
'module' => 'dash_progres_paket_pengadaan'
]);
}
/**
* @Route("/dashboard/dash_pengajuan_paket",name="dash_pengajuan_paket")
*/
public function dash_pengajuan_paket(
Request $request,
BreacrumbBuilder $builder,
Security $security,
TLogRepository $tLogRepo,
TRawDataRepository $tRawDataRepo,
MPlantRepository $mPlantRepo
) {
$builder->add('Dashboard ', "dashboard", array(), " <i class='fa fa-home'></i>");
$builder->add('Pengajuan Paket', "dash_pengajuan_paket");
$user = $security->getUser()->getRoles();
$qb = $tRawDataRepo->createQueryBuilder('t');
$qb->where('t.updated_at IS NOT NULL')
->orderBy('t.updated_at', 'DESC')
->setMaxResults(1);
$latest = $qb->getQuery()->getOneOrNullResult();
$last_update = ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
$log = $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
$tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
$tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
$tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
$tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
$bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
$sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
$group = 'plant';
return $this->render('backend/dashboard/dash_pengajuan_paket.html.twig', [
// return $this->render('backend/dashboard/dash.html.twig', [
'user' => $user,
'tipe_tahun' => $tipe_tahun,
'tahun' => $tahun,
'sumber_dana' => $sumber_dana,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
'group' => $group,
'last_update' => $last_update,
'module' => 'dash_pengajuan_paket'
]);
}
/**
* @Route("/dashboard/dash_berdasarkan_metode_dan_durasi",name="dash_berdasarkan_metode_dan_durasi")
*/
public function dash_berdasarkan_metode_dan_durasi(
Request $request,
BreacrumbBuilder $builder,
Security $security,
TLogRepository $tLogRepo,
TRawDataRepository $tRawDataRepo,
MPlantRepository $mPlantRepo
) {
$builder->add('Dashboard ', "dashboard", array(), " <i class='fa fa-home'></i>");
$builder->add('Pengadaan Berdasrkan Metode dan Durasi', "dash_pengajuan_paket");
$user = $security->getUser()->getRoles();
$qb = $tRawDataRepo->createQueryBuilder('t');
$qb->where('t.updated_at IS NOT NULL')
->orderBy('t.updated_at', 'DESC')
->setMaxResults(1);
$latest = $qb->getQuery()->getOneOrNullResult();
$last_update = ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
$log = $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
$tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
$tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
$tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
$tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
$bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
$sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
$group = 'plant';
$table = 'v_cleansing_pk_vendor';
$hari_kerja_create_pk = $this->getJumlahHariKerja($table, 'tgl_sinkron_pr_sap_ke_ips', 'tgl_submit_pk_ke_hps', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$hari_kerja_hps = $this->getJumlahHariKerja($table, 'tgl_submit_pk_ke_hps', 'tgl_submit_ke_pengadaan', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$hari_kerja_pengadaan = $this->getJumlahHariKerja($table, 'tgl_submit_ke_pengadaan', 'tgl_approval_sppbj', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$hari_kerja_metode_pengadaan = $this->getJumlahHariKerja($table, 'tgl_pelaksanaan_pp', 'tgl_approval_sppbj', 'metode_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$jumlah_metode = $this->getJumlahBerdasrkanMetode($table, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
// $range_nilai_pk = $this->getRangeNilaiPk($table, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
// $m_plant = $this->getKategoriPlant();
// print_r($jumlah_metode); exit;
// $hari_kerja_metode_pengadaan = $this->getJumlahHariKerja('tabel_40', 'tgl_submit_ke_pengadaan','tgl_submit_pk_ke_hps','metode_pengadaan');
$res_metode = [];
foreach ($hari_kerja_metode_pengadaan as $key => $value) {
$res_metode[$value['tipe_pengadaan']] = $value['rata_rata_hari_kerja'];
}
$res_metode_pengadaan = [];
foreach ($jumlah_metode as $key => $value) {
$res_metode_pengadaan[$value['tipe_pengadaan']]['jumlah'] = $value['jumlah'];
$res_metode_pengadaan[$value['tipe_pengadaan']]['total_nilai'] = $value['total_nilai'];
}
$res = [
'hari_kerja_create_pk' => number_format($hari_kerja_create_pk[0]['rata_rata_hari_kerja'], 0),
'hari_kerja_hps' => number_format($hari_kerja_hps[0]['rata_rata_hari_kerja']),
'hari_kerja_pengadaan' => number_format($hari_kerja_pengadaan[0]['rata_rata_hari_kerja'], 0),
'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
'metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['jumlah'] : 0,
'metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['jumlah'] : 0,
'nilai_metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['total_nilai'] : 0,
'nilai_metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['total_nilai'] : 0,
// 'range_nilai_pk' => $range_nilai_pk
];
return $this->render('backend/dashboard/dash_berdasarkan_metode_dan_durasi.html.twig', [
// return $this->render('backend/dashboard/dash.html.twig', [
'user' => $user,
'tipe_tahun' => $tipe_tahun,
'tahun' => $tahun,
'sumber_dana' => $sumber_dana,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
'group' => $group,
'last_update' => $last_update,
'res' => $res,
'module' => 'dash_berdasarkan_metode_dan_durasi'
]);
}
/**
* @Route("/dashboard/dash_progres_pemilihan_penyedia",name="dash_progres_pemilihan_penyedia")
*/
public function dash_progres_pemilihan_penyedia(
Request $request,
BreacrumbBuilder $builder,
Security $security,
TLogRepository $tLogRepo,
TRawDataRepository $tRawDataRepo,
MPlantRepository $mPlantRepo
) {
$builder->add('Dashboard ', "dashboard", array(), " <i class='fa fa-home'></i>");
$builder->add('Progres Pemilihan Penyedia', "dash_progres_pemilihan_penyedia");
$user = $security->getUser()->getRoles();
$qb = $tRawDataRepo->createQueryBuilder('t');
$qb->where('t.updated_at IS NOT NULL')
->orderBy('t.updated_at', 'DESC')
->setMaxResults(1);
$latest = $qb->getQuery()->getOneOrNullResult();
$last_update = ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
$log = $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
$tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
$tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
$tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
$tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
$bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
$sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
$group = 'plant';
$table = 'v_cleansing_pk_vendor';
//tampilan table
$data_tampilan_table = $this->getTabelLaporan('v_cleansing_pk_vendor', 'kategori_plant', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$result_table = [];
foreach ($data_tampilan_table as $key => $value) {
$result_table[$value['sumber_dana']][$key] = $value;
}
$result_table = array_reverse($result_table);
$res = [
'tahap_pembuatan_paket' => $this->getCardDashboard($table, 'tahap_pembuatan_paket', true, 'tgl_verifikasi_pr', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
'tahap_penyusunan_hps' => $this->getCardDashboard($table, 'tahap_penyusunan_hps', true, 'tgl_submit_pk_ke_hps', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
'tahap_pemilihan_penyedia' => $this->getCardDashboard($table, 'tahap_pemilihan_penyedia', true, 'tgl_submit_ke_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
'tahap_dalam_proses' => $this->getCardDashboard($table, 'dalam_proses', true, 'tgl_submit_ke_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
'tahap_selesai' => $this->getCardDashboard($table, 'selesai', true, 'tgl_submit_ke_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
];
// print_r($res); exit;
return $this->render('backend/dashboard/dash_progres_pemilihan_penyedia.html.twig', [
// return $this->render('backend/dashboard/dash.html.twig', [
'user' => $user,
'tipe_tahun' => $tipe_tahun,
'tahun' => $tahun,
'sumber_dana' => $sumber_dana,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
'group' => $group,
'last_update' => $last_update,
'res' => $res,
'result' => $result_table,
'template' => '',
'module' => 'dash_progres_pemilihan_penyedia'
]);
}
/**
* @Route("/dashboard/dash_nilai_paket_pengadaan",name="dash_nilai_paket_pengadaan")
*/
public function dash_nilai_paket_pengadaan(
Request $request,
BreacrumbBuilder $builder,
Security $security,
TLogRepository $tLogRepo,
TRawDataRepository $tRawDataRepo,
MPlantRepository $mPlantRepo
) {
$builder->add('Dashboard ', "dashboard", array(), " <i class='fa fa-home'></i>");
$builder->add('Nilai Paket Pengadaan', "dash_nilai_paket_pengadaan");
$user = $security->getUser()->getRoles();
$qb = $tRawDataRepo->createQueryBuilder('t');
$qb->where('t.updated_at IS NOT NULL')
->orderBy('t.updated_at', 'DESC')
->setMaxResults(1);
$latest = $qb->getQuery()->getOneOrNullResult();
$last_update = ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
$log = $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
$tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
$tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
$tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
$tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
$bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
$sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
$group = 'plant';
$table = 'v_cleansing_pk_vendor';
$data_tampilan_table = $this->getTabelLaporan('v_cleansing_pk_vendor', 'kategori_plant', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$result_table = [];
foreach ($data_tampilan_table as $key => $value) {
$result_table[$value['sumber_dana']][$key] = $value;
}
$result_table = array_reverse($result_table);
// print_r($result_table); exit;
$nilai_tahap_penyusunan_hps = 0;
$nilai_tahap_pemilihan_penyedia = 0;
foreach ($result_table as $key => $value) {
foreach ($value as $ke => $val) {
$nilai_tahap_penyusunan_hps += $val['nilai_penyusunan_hps'];
$nilai_tahap_pemilihan_penyedia += $val['nilai_pemilihan_penyedia'];
}
}
$res = [
'nilai_tahap_penyusunan_hps' => $nilai_tahap_penyusunan_hps,
'nilai_tahap_pemilihan_penyedia' => $nilai_tahap_pemilihan_penyedia
];
// print_r($res); exit;
return $this->render('backend/dashboard/dash_nilai_paket_pengadaan.html.twig', [
// return $this->render('backend/dashboard/dash.html.twig', [
'user' => $user,
'tipe_tahun' => $tipe_tahun,
'tahun' => $tahun,
'sumber_dana' => $sumber_dana,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
'group' => $group,
'last_update' => $last_update,
'res' => $res,
'result' => $result_table,
'template' => '',
'module' => 'dash_nilai_paket_pengadaan'
]);
}
/**
* @Route("/dashboard/dash_realisasi_dan_saving",name="dash_realisasi_dan_saving")
*/
public function dash_realisasi_dan_saving(
Request $request,
BreacrumbBuilder $builder,
Security $security,
TLogRepository $tLogRepo,
TRawDataRepository $tRawDataRepo,
MPlantRepository $mPlantRepo
) {
$builder->add('Dashboard ', "dashboard", array(), " <i class='fa fa-home'></i>");
$builder->add('Realisasi dan Saving', "dash_realisasi_dan_saving");
$user = $security->getUser()->getRoles();
$qb = $tRawDataRepo->createQueryBuilder('t');
$qb->where('t.updated_at IS NOT NULL')
->orderBy('t.updated_at', 'DESC')
->setMaxResults(1);
$latest = $qb->getQuery()->getOneOrNullResult();
$last_update = ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
$log = $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
$tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
$tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
$tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
$tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
$bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
$sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
$group = 'plant';
$table = 'v_cleansing_pk_vendor';
$data_tampilan_table = $this->getTabelLaporan('v_cleansing_pk_vendor', 'kategori_plant', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$result_table = [];
foreach ($data_tampilan_table as $key => $value) {
$result_table[$value['sumber_dana']][$key] = $value;
}
$result_table = array_reverse($result_table);
// print_r($result_table); exit;
$nilai_tahap_penyusunan_hps = 0;
$nilai_tahap_pemilihan_penyedia = 0;
foreach ($result_table as $key => $value) {
foreach ($value as $ke => $val) {
$nilai_tahap_penyusunan_hps += $val['nilai_penyusunan_hps'];
$nilai_tahap_pemilihan_penyedia += $val['nilai_pemilihan_penyedia'];
}
}
$res = [
'nilai_tahap_penyusunan_hps' => $nilai_tahap_penyusunan_hps,
'nilai_tahap_pemilihan_penyedia' => $nilai_tahap_pemilihan_penyedia
];
//chart realisasi
$hasil_realisasi = [];
$total_anggaran = 0;
$total_hps = 0;
$total_realisasi = 0;
$total_saving_anggaran = 0;
$total_saving_hps = 0;
foreach ($result_table as $sumber_dana => $items) {
$anggaran = 0;
$hps = 0;
$realisasi = 0;
foreach ($items as $item) {
$anggaran += (float)$item['total_anggaran'];
$hps += (float)$item['total_hps'];
$realisasi += (float)$item['total_nilai_akhir'];
}
$saving_anggaran = $anggaran - $realisasi;
$saving_hps = $hps - $realisasi;
$percent_saving_anggaran = $anggaran != 0 ? ($saving_anggaran / $anggaran * 100) : 0;
$percent_saving_hps = $hps != 0 ? ($saving_hps / $hps * 100) : 0;
$hasil_realisasi[$sumber_dana] = [
'total_anggaran' => $anggaran,
'total_hps' => $hps,
'total_nilai_akhir' => $realisasi,
'saving_terhadap_anggaran' => round($percent_saving_anggaran, 1),
'saving_terhadap_hps' => round($percent_saving_hps, 1),
];
$total_anggaran += $anggaran;
$total_hps += $hps;
$total_realisasi += $realisasi;
$total_saving_anggaran += $saving_anggaran;
$total_saving_hps += $saving_hps;
}
// Hitung persentase total
$total_percent_saving_anggaran = $total_anggaran > 0 ? ($total_saving_anggaran / $total_anggaran) * 100 : 0;
$total_percent_saving_hps = $total_hps > 0 ? ($total_saving_hps / $total_hps) * 100 : 0;
$hasil_realisasi['total'] = [
'total_anggaran' => $total_anggaran,
'total_hps' => $total_hps,
'total_nilai_akhir' => $total_realisasi,
'saving_terhadap_anggaran' => round($total_percent_saving_anggaran, 1),
'saving_terhadap_hps' => round($total_percent_saving_hps, 1),
];
//endrealisasi
// print_r($hasil_realisasi); exit;
return $this->render('backend/dashboard/dash_realisasi_dan_saving.html.twig', [
// return $this->render('backend/dashboard/dash.html.twig', [
'user' => $user,
'tipe_tahun' => $tipe_tahun,
'tahun' => $tahun,
'sumber_dana' => $sumber_dana,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
'group' => $group,
'last_update' => $last_update,
'res' => $hasil_realisasi,
'result' => $result_table,
'template' => '',
'module' => 'dash_realisasi_dan_saving'
]);
}
/**
* @Route("/dashboard/dash_realisasi_dan_efisiensi",name="dash_realisasi_dan_efisiensi")
*/
public function dash_realisasi_dan_efisiensi(
Request $request,
BreacrumbBuilder $builder,
Security $security,
TLogRepository $tLogRepo,
TRawDataRepository $tRawDataRepo,
MPlantRepository $mPlantRepo
) {
$builder->add('Dashboard ', "dashboard", array(), " <i class='fa fa-home'></i>");
$builder->add('Realisasi dan Efisiensi', "dash_realisasi_dan_efisiensi");
$user = $security->getUser()->getRoles();
$qb = $tRawDataRepo->createQueryBuilder('t');
$qb->where('t.updated_at IS NOT NULL')
->orderBy('t.updated_at', 'DESC')
->setMaxResults(1);
$latest = $qb->getQuery()->getOneOrNullResult();
$last_update = ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
$log = $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
$tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
$tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
$tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
$tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
$bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
$sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
// $group = 'plant';
// $table = 'v_cleansing_pk_vendor';
return $this->render('backend/dashboard/dash_realisasi_dan_efisiensi.html.twig', [
// return $this->render('backend/dashboard/dash.html.twig', [
'user' => $user,
'tipe_tahun' => $tipe_tahun,
'tahun' => $tahun,
'sumber_dana' => $sumber_dana,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
// 'group' => $group,
'last_update' => $last_update,
// 'res_kotak_bawah' => $res_kotak_bawah,
'template' => '',
'module' => 'dash_realisasi_dan_efisiensi'
]);
}
/**
* @Route("/dashboard/dash_full",name="dashboard_full")
*/
public function dash_full(
Request $request,
BreacrumbBuilder $builder,
Security $security,
TLogRepository $tLogRepo,
TRawDataRepository $tRawDataRepo,
MPlantRepository $mPlantRepo
) {
$builder->add('Dashboard ', "dashboard", array(), " <i class='fa fa-home'></i>");
$user = $security->getUser()->getRoles();
$latestData = $qb = $tRawDataRepo->createQueryBuilder('t');
$qb->where('t.updated_at IS NOT NULL')
->orderBy('t.updated_at', 'DESC')
->setMaxResults(1);
$latest = $qb->getQuery()->getOneOrNullResult();
$last_update = ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
// dump($this->getUser()->getName());exit;
// print_r($this->getCardDashboard('tahap_pembuatan_paket',true)); exit;
$log = $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
$tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
$tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
$tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
$tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
$bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
$sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
// print_r($this->getGrafikReport($tahun,$bulan)); exit;
//chart realisasi
//
$table = 'v_cleansing_pk_vendor';
$group = 'plant';
$data = $this->getTabelLaporan($table, 'regional', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
// print_r($data); exit;
$data_tabel = $this->getTabelLaporan($table, $group, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
// $data_dashboard = $this->getDashbord('tabel_40', 'regional');
// print_r($data);
// exit;
//creat_pk
// tgl_submit_pk_ke_hps, tgl_sinkron_pr_sap_ke_ips
//hps
// tgl_submit_ke_pengadaan, tgl_submit_pk_ke_hps
//pengadaan
// tgl_approval_sppbj, tgl_submit_ke_pengadaan
$hari_kerja_create_pk = $this->getJumlahHariKerja($table, 'tgl_sinkron_pr_sap_ke_ips', 'tgl_submit_pk_ke_hps', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$hari_kerja_hps = $this->getJumlahHariKerja($table, 'tgl_submit_pk_ke_hps', 'tgl_submit_ke_pengadaan', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$hari_kerja_pengadaan = $this->getJumlahHariKerja($table, 'tgl_submit_ke_pengadaan', 'tgl_approval_sppbj', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$hari_kerja_metode_pengadaan = $this->getJumlahHariKerja($table, 'tgl_pelaksanaan_pp', 'tgl_approval_sppbj', 'metode_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$jumlah_metode = $this->getJumlahBerdasrkanMetode($table, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$range_nilai_pk = $this->getRangeNilaiPk($table, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$m_plant = $this->getKategoriPlant();
// print_r($jumlah_metode); exit;
// $hari_kerja_metode_pengadaan = $this->getJumlahHariKerja('tabel_40', 'tgl_submit_ke_pengadaan','tgl_submit_pk_ke_hps','metode_pengadaan');
$res_metode = [];
foreach ($hari_kerja_metode_pengadaan as $key => $value) {
$res_metode[$value['tipe_pengadaan']] = $value['rata_rata_hari_kerja'];
}
$res_metode_pengadaan = [];
foreach ($jumlah_metode as $key => $value) {
$res_metode_pengadaan[$value['tipe_pengadaan']]['jumlah'] = $value['jumlah'];
$res_metode_pengadaan[$value['tipe_pengadaan']]['total_nilai'] = $value['total_nilai'];
}
// print_r($res_metode_pengadaan); exit;
//dashbord kotak bawah
$res_kotak_bawah = [];
$total_hps = 0;
$color = ["HO MKSO" => "#00bcd4", "JATENG" => "#cddc39", "JATIM 1" => "#ffc107", "JATIM 2" => "#a1887f", "JATIM 3" => "#ba68c8", "JATIM 4" => "#81c784", "KANTOR PUSAT PT SGN" => "#ef9a9a", "SULAWESI" => "#77baf0", "SUMATERA 1" => "#90caf9", "SUMATERA 2" => "#81c784"];
foreach ($data as $key => $value) {
$regional = $value['regional'];
if ($value['regional'] == "HO MKSO") {
$regional_label = "MKSO";
} else if ($value['regional'] == "KANTOR PUSAT PT SGN") {
$regional_label = "HO SGN";
} else {
$regional_label = $value['regional'];
}
if (!isset($res_kotak_bawah[$regional])) {
$res_kotak_bawah[$regional] = [
'total_pk' => 0,
'total_nilai' => 0,
'total_nilai_akhir' => 0,
'total_anggaran' => 0,
'total_hps' => 0,
'saving_thd_hps' => 0,
];
}
$res_kotak_bawah[$regional]['regional'] = $regional_label;
$res_kotak_bawah[$regional]['total_pk'] += $value['total_pk'];
$res_kotak_bawah[$regional]['total_nilai'] += $value['total_nilai'];
$total_realisasi = $res_kotak_bawah[$regional]['total_nilai_akhir'] += $value['total_nilai_akhir'];
$res_kotak_bawah[$regional]['total_anggaran'] += $value['total_anggaran'];
$total_hps = $res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
$res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
$saving_terhadap_hps = $total_hps - $total_realisasi;
$res_kotak_bawah[$regional]['saving_thd_hps'] += $saving_terhadap_hps;
$res_kotak_bawah[$regional]['color'] = $color[$regional];
}
//tabel
$res_kotak_tabel = [];
$total_hps = 0;
foreach ($data_tabel as $key => $value) {
$plant = $value[$group];
if (!isset($res_kotak_tabel[$plant])) {
$res_kotak_tabel[$plant] = [
'total_pk' => 0,
'reg' => null,
'total_nilai' => 0,
'total_nilai_akhir' => 0,
'total_anggaran' => 0,
'total_hps' => 0,
'saving_thd_hps' => 0,
'saving_thd_hps_persen' => 0,
];
}
$reg = $mPlantRepo->findOneBy(['nama' => strtoupper($plant)]);
$regio = ($reg) ? $reg->getRegional() : null;
$res_kotak_tabel[$plant][$group] = $plant;
$res_kotak_tabel[$plant]['reg'] = $regio;
$res_kotak_tabel[$plant]['total_pk'] += $value['total_pk'];
$res_kotak_tabel[$plant]['total_nilai'] += $value['total_nilai'];
$res_kotak_tabel[$plant]['total_nilai_akhir'] += $value['total_nilai_akhir'];
$res_kotak_tabel[$plant]['total_anggaran'] += $value['total_anggaran'];
$res_kotak_tabel[$plant]['total_hps'] += $value['total_hps'];
$total_realisasi = $res_kotak_tabel[$plant]['total_nilai_akhir'];
$total_hps = $res_kotak_tabel[$plant]['total_hps'];
$saving_terhadap_hps_tabel = $res_kotak_tabel[$plant]['saving_thd_hps'] = ($total_hps - $total_realisasi);
$saving_terhadap_hps_persen_tabel = $total_hps > 0 ? ($saving_terhadap_hps_tabel / $total_hps) * 100 : 0;
$res_kotak_tabel[$plant]['saving_thd_hps_persen'] = round($saving_terhadap_hps_persen_tabel, 1);
}
$jumlah_pk = 0;
$jumlah_pr = 0;
$jumlah_pp = 0;
$total_nilai = 0;
$total_anggaran = 0;
$total_hps = 0;
$total_realisasi = 0;
$saving_terhadap_anggaran = 0;
$saving_terhadap_hps = 0;
$saving_terhadap_anggaran_persen = 0;
$saving_terhadap_hps_persen = 0;
foreach ($data as $key => $value) {
$jumlah_pk += $value['total_pk'];
$jumlah_pr += $value['total_pr'];
$jumlah_pp += $value['total_pp'];
$total_nilai += $value['total_nilai'];
$total_anggaran += $value['total_anggaran'];
$total_hps += $value['total_hps'];
$total_realisasi += $value['total_nilai_akhir'];
}
$saving_terhadap_anggaran = $total_anggaran - $total_realisasi;
$saving_terhadap_hps = $total_hps - $total_realisasi;
$saving_terhadap_anggaran_persen = $total_anggaran > 0 ? ($saving_terhadap_anggaran / $total_anggaran) * 100 : 0;
$saving_terhadap_hps_persen = $total_hps > 0 ? ($saving_terhadap_hps / $total_hps) * 100 : 0;
$res_dash = [
'jumlah_pk' => $jumlah_pk,
'jumlah_pr' => $jumlah_pr,
'jumlah_pp' => $jumlah_pp,
'total_nilai' => $total_nilai,
'total_anggaran' => $total_anggaran,
'total_hps' => $total_hps,
'total_realisasi' => $total_realisasi,
'hari_kerja_create_pk' => number_format($hari_kerja_create_pk[0]['rata_rata_hari_kerja'], 0),
'hari_kerja_hps' => number_format($hari_kerja_hps[0]['rata_rata_hari_kerja']),
'hari_kerja_pengadaan' => number_format($hari_kerja_pengadaan[0]['rata_rata_hari_kerja'], 0),
'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
'saving_thd_anggaran' => $saving_terhadap_anggaran,
'saving_thd_hps' => $saving_terhadap_hps,
'saving_thd_anggaran_persen' => round($saving_terhadap_anggaran_persen, 1),
'saving_thd_hps_persen' => round($saving_terhadap_hps_persen, 1),
'metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['jumlah'] : 0,
'metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['jumlah'] : 0,
'nilai_metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['total_nilai'] : 0,
'nilai_metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['total_nilai'] : 0,
'range_nilai_pk' => $range_nilai_pk,
'm_plant' => $m_plant
];
// print_r( $this->getGrafikTotalPk('tabel_34','no_pk',$tanggal_awal,$tanggal_akhir));
// exit;
//endrealisasi
// $pengunjung = $tLogRepo->count(['reff_name' => 'homepage']);
// print_r( $this->getCardDashboard('tabel_34', 'tahap_pembuatan_paket', false)); exit;
//tampilan table
$data_tampilan_table = $this->getTabelLaporan('v_cleansing_pk_vendor', 'kategori_plant', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$result_table = [];
foreach ($data_tampilan_table as $key => $value) {
$result_table[$value['sumber_dana']][$key] = $value;
}
$result_table = array_reverse($result_table);
// print_r($result_table); exit;
$nilai_tahap_penyusunan_hps = 0;
$nilai_tahap_pemilihan_penyedia = 0;
foreach ($result_table as $key => $value) {
foreach ($value as $ke => $val) {
$nilai_tahap_penyusunan_hps += $val['nilai_penyusunan_hps'];
$nilai_tahap_pemilihan_penyedia += $val['nilai_pemilihan_penyedia'];
}
}
//chart realisasi
$hasil_realisasi = [];
$total_anggaran = 0;
$total_hps = 0;
$total_realisasi = 0;
$total_saving_anggaran = 0;
$total_saving_hps = 0;
foreach ($result_table as $sumber_dana => $items) {
$anggaran = 0;
$hps = 0;
$realisasi = 0;
foreach ($items as $item) {
$anggaran += (float)$item['total_anggaran'];
$hps += (float)$item['total_hps'];
$realisasi += (float)$item['total_nilai_akhir'];
}
$saving_anggaran = $anggaran - $realisasi;
$saving_hps = $hps - $realisasi;
$percent_saving_anggaran = $anggaran != 0 ? ($saving_anggaran / $anggaran * 100) : 0;
$percent_saving_hps = $hps != 0 ? ($saving_hps / $hps * 100) : 0;
$hasil_realisasi[$sumber_dana] = [
'total_anggaran' => $anggaran,
'total_hps' => $hps,
'total_nilai_akhir' => $realisasi,
'saving_terhadap_anggaran' => round($percent_saving_anggaran, 1),
'saving_terhadap_hps' => round($percent_saving_hps, 1),
];
$total_anggaran += $anggaran;
$total_hps += $hps;
$total_realisasi += $realisasi;
$total_saving_anggaran += $saving_anggaran;
$total_saving_hps += $saving_hps;
}
// Hitung persentase total
$total_percent_saving_anggaran = $total_anggaran > 0 ? ($total_saving_anggaran / $total_anggaran) * 100 : 0;
$total_percent_saving_hps = $total_hps > 0 ? ($total_saving_hps / $total_hps) * 100 : 0;
$hasil_realisasi['total'] = [
'total_anggaran' => $total_anggaran,
'total_hps' => $total_hps,
'total_nilai_akhir' => $total_realisasi,
'saving_terhadap_anggaran' => round($total_percent_saving_anggaran, 1),
'saving_terhadap_hps' => round($total_percent_saving_hps, 1),
];
//endrealisasi
// print_r($this->getGrafikTotalPkPpPr($table, 'no_pr', 'tgl_verifikasi_pr', $tanggal_awal, $tanggal_akhir, 'tahap_pembuatan_paket', $tipe_tahun, $tahun, $sumber_dana)); exit;
$template = 'dash';
return $this->render('backend/dashboard/' . $template . '.html.twig', [
// return $this->render('backend/dashboard/dash.html.twig', [
'user' => $user,
'tahap_pembuatan_paket' => $this->getCardDashboard($table, 'tahap_pembuatan_paket', true, 'tgl_verifikasi_pr', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
'tahap_penyusunan_hps' => $this->getCardDashboard($table, 'tahap_penyusunan_hps', true, 'tgl_submit_pk_ke_hps', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
'tahap_pemilihan_penyedia' => $this->getCardDashboard($table, 'tahap_pemilihan_penyedia', true, 'tgl_submit_ke_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
'tahap_dalam_proses' => $this->getCardDashboard($table, 'dalam_proses', true, 'tgl_submit_ke_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
'tahap_selesai' => $this->getCardDashboard($table, 'selesai', true, 'tgl_submit_ke_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana),
// 'chart_pengajuan' => $this->getGrafikReport($tahun, $bulan_tanggal),
// 'chart_total_pr' => $this->getGrafikTotalPkPpPr($table, 'no_pr', 'tgl_verifikasi_pr', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana),
// 'chart_total_pk' => $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_submit_pk_ke_hps', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana),
// 'chart_total_pp' => $this->getGrafikTotalPkPpPr($table, 'no_pp', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana),
// 'chart_total_pr_tahap_pembuatan_paket' => $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_verifikasi_pr', $tanggal_awal, $tanggal_akhir, 'tahap_pembuatan_paket', $tipe_tahun, $tahun, $sumber_dana),
// 'chart_total_pr_tahap_penyusunan_hps' => $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_submit_pk_ke_hps', $tanggal_awal, $tanggal_akhir, 'tahap_penyusunan_hps', $tipe_tahun, $tahun, $sumber_dana),
// 'chart_total_pr_tahap_pemilihan_penyedia' => $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_submit_ke_pengadaan', $tanggal_awal, $tanggal_akhir, 'tahap_pemilihan_penyedia', $tipe_tahun, $tahun, $sumber_dana),
'tipe_tahun' => $tipe_tahun,
'tahun' => $tahun,
'sumber_dana' => $sumber_dana,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
'res_dash' => $res_dash,
'res_kotak_bawah' => $res_kotak_bawah,
'res_kotak_tabel' => $res_kotak_tabel,
'group' => $group,
'log' => $log,
'last_update' => $last_update,
'result' => $result_table,
'nilai_tahap_penyusunan_hps' => $nilai_tahap_penyusunan_hps,
'nilai_tahap_pemilihan_penyedia' => $nilai_tahap_pemilihan_penyedia,
'chart_realisasi' => $hasil_realisasi,
'template' => $template
]);
}
/**
* @Route("/dashboard/detail_progress",name="dashboard_detail_progress")
*/
public function detail_progress(TPublikasiRepository $tPublikasiRepo, ManagerInterface $managerInterface)
{
return $this->render('backend/dashboard/detail_progress.html.twig', []);
}
/**
* @Route("/dashboard/chart_pr",name="dashboard_chart_pr")
*/
public function chart_pr(Request $request, ManagerInterface $managerInterface)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
// $data = $this->getTabelLaporan($table, 'regional', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
// $jumlah_pk = 0;
// $jumlah_pr = 0;
// $jumlah_pp = 0;
// $total_nilai = 0;
// $total_anggaran = 0;
// $total_hps = 0;
// $total_realisasi = 0;
// $saving_terhadap_anggaran = 0;
// $saving_terhadap_hps = 0;
// $saving_terhadap_anggaran_persen = 0;
// $saving_terhadap_hps_persen = 0;
// foreach ($data as $key => $value) {
// $jumlah_pk += $value['total_pk'];
// $jumlah_pr += $value['total_pr'];
// $jumlah_pp += $value['total_pp'];
// $total_nilai += $value['total_nilai'];
// $total_anggaran += $value['total_anggaran'];
// $total_hps += $value['total_hps'];
// $total_realisasi += $value['total_nilai_akhir'];
// }
// $saving_terhadap_anggaran = $total_anggaran - $total_realisasi;
// $saving_terhadap_hps = $total_hps - $total_realisasi;
// $saving_terhadap_anggaran_persen = $total_anggaran > 0 ? ($saving_terhadap_anggaran / $total_anggaran) * 100 : 0;
// $saving_terhadap_hps_persen = $total_hps > 0 ? ($saving_terhadap_hps / $total_hps) * 100 : 0;
// // print_r($tanggal_akhir); exit;
// $res_dash = [
// 'jumlah_pk' => $jumlah_pk,
// 'jumlah_pr' => $jumlah_pr,
// 'jumlah_pp' => $jumlah_pp,
// 'total_nilai' => $total_nilai,
// 'total_anggaran' => $total_anggaran,
// 'total_hps' => $total_hps,
// 'total_realisasi' => $total_realisasi
// ];
$chart_total_pr = $this->getGrafikTotalPkPpPr($table, 'no_pr', 'tgl_verifikasi_pr', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana);
// print_r($chart_total_pr); exit;
return $this->render('backend/dashboard/_chart_pr.html.twig', [
'chart_total_pr' => $chart_total_pr
]);
}
/**
* @Route("/dashboard/chart_pk",name="dashboard_chart_pk")
*/
public function chart_pk(Request $request, ManagerInterface $managerInterface)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
$chart_total_pk = $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_submit_pk_ke_hps', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana);
return $this->render('backend/dashboard/_chart_pk.html.twig', [
'chart_total_pk' => $chart_total_pk,
]);
}
/**
* @Route("/dashboard/chart_pp",name="dashboard_chart_pp")
*/
public function chart_pp(Request $request, ManagerInterface $managerInterface)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
$chart_total_pp = $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana);
return $this->render('backend/dashboard/_chart_pp.html.twig', [
'chart_total_pp' => $chart_total_pp,
]);
}
/**
* @Route("/dashboard/chart_submit_pengadaan",name="dashboard_chart_submit_pengadaan")
*/
public function chart_submit_pengadaan(Request $request, ManagerInterface $managerInterface)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
$chart_total_submit_pengadaan = $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_submit_ke_pengadaan', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana);
return $this->render('backend/dashboard/_chart_submit_pengadaan.html.twig', [
'chart_total_submit_pengadaan' => $chart_total_submit_pengadaan,
]);
}
/**
* @Route("/dashboard/chart_pengajuan_paket_pertahap", name="dashboard_chart_pengajuan_paket_pertahap", methods={"GET", "POST"})
*/
public function chart_pengajuan_paket_pertahap(Request $request, ManagerInterface $managerInterface)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
// $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
// $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
// $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
// $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
// $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
// $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
$tahap = ['tahap_pembuatan_paket' => 'Tahap Pembuatan Paket', 'tahap_penyusunan_hps' => 'Tahap Penyusunan HPS', 'dalam_proses' => 'Proses Pemilihan Penyedia', 'selesai' => 'Selesai Pemilihan Penyedia'];
$chart_pertahap = [];
$no = 1;
$periode = [1 => 'tgl_verifikasi_pr', 'tgl_submit_pk_ke_hps', 'tgl_submit_ke_pengadaan', 'tgl_submit_ke_pengadaan'];
foreach ($tahap as $key => $value) {
$chart_pertahap[$key]['tahap'] = $value;
// $chart_pertahap[$key]['nilai'] = $this->getGrafikTotalPkPpPr($table, 'no_pk', $periode[$no], $tanggal_awal, $tanggal_akhir, $key, $tipe_tahun, $tahun, $sumber_dana);
$chart_pertahap[$key]['nilai'] = $this->getGrafikPertahap($table, 'no_pk', $periode[$no], $tanggal_awal, $tanggal_akhir, $key, $tipe_tahun, $tahun, $sumber_dana);
$no++;
}
return $this->render('backend/dashboard/_chart_pengajuan_paket_pertahap.html.twig', [
'chart_pertahap' => $chart_pertahap,
]);
}
/**
* @Route("/dashboard/table_realisasi", name="dashboard_table_realisasi", methods={"GET", "POST"})
*/
public function table_realisasi(Request $request, ManagerInterface $managerInterface, MPlantRepository $mPlantRepo)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
$group = 'plant';
$data = $this->getTabelLaporan($table, $group, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana, null, 1);
$res_kotak_tabel = [];
$total_hps = 0;
foreach ($data as $key => $value) {
$plant = $value[$group];
if (!isset($res_kotak_tabel[$plant])) {
$res_kotak_tabel[$plant] = [
'total_pk' => 0,
'reg' => null,
'total_nilai' => 0,
'total_nilai_akhir' => 0,
'total_anggaran' => 0,
'total_hps' => 0,
'saving_thd_hps' => 0,
'saving_thd_hps_persen' => 0,
];
}
$reg = $mPlantRepo->findOneBy(['nama' => strtoupper($plant)]);
$regio = ($reg) ? $reg->getRegional() : null;
$res_kotak_tabel[$plant][$group] = $plant;
$res_kotak_tabel[$plant]['reg'] = $regio;
$res_kotak_tabel[$plant]['total_pk'] += $value['total_pk'];
$res_kotak_tabel[$plant]['total_nilai'] += $value['total_nilai'];
$res_kotak_tabel[$plant]['total_nilai_akhir'] += $value['total_nilai_akhir'];
$res_kotak_tabel[$plant]['total_anggaran'] += $value['total_anggaran'];
$res_kotak_tabel[$plant]['total_hps'] += $value['total_hps'];
$total_realisasi = $res_kotak_tabel[$plant]['total_nilai_akhir'];
$total_hps = $res_kotak_tabel[$plant]['total_hps'];
$saving_terhadap_hps_tabel = $res_kotak_tabel[$plant]['saving_thd_hps'] = ($total_hps - $total_realisasi);
$saving_terhadap_hps_persen_tabel = $total_hps > 0 ? ($saving_terhadap_hps_tabel / $total_hps) * 100 : 0;
$res_kotak_tabel[$plant]['saving_thd_hps_persen'] = round($saving_terhadap_hps_persen_tabel, 1);
}
return $this->render('backend/dashboard/_table.html.twig', [
'res_kotak_tabel' => $res_kotak_tabel,
'group' => $group,
]);
}
/**
* @Route("/dashboard/chart_realisasi_efisiensi_pg", name="dashboard_chart_realisasi_efisiensi_pg", methods={"GET", "POST"})
*/
public function chart_realisasi_efisiensi_pg(Request $request, ManagerInterface $managerInterface, MPlantRepository $mPlantRepo)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
$group = 'plant';
$kategori_plant = "'HO','PG'";
$data = $this->getTabelLaporan($table, $group, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana, $kategori_plant, 1);
$res_kotak_bawah = [];
$total_hps = 0;
// $color = ["HO MKSO" => "#00bcd4", "JATENG" => "#cddc39", "JATIM 1" => "#ffc107", "JATIM 2" => "#a1887f", "JATIM 3" => "#ba68c8", "JATIM 4" => "#81c784", "KANTOR PUSAT PT SGN" => "#ef9a9a", "SULAWESI" => "#77baf0", "SUMATERA 1" => "#90caf9", "SUMATERA 2" => "#81c784"];
foreach ($data as $key => $value) {
$regional = $value[$group];
if ($value[$group] == "HO MKSO") {
$regional_label = "MKSO";
} else if ($value[$group] == "KANTOR PUSAT PT SGN") {
$regional_label = "HO SGN";
} else {
$regional_label = $value[$group];
}
if (!isset($res_kotak_bawah[$regional])) {
$res_kotak_bawah[$regional] = [
'total_pk' => 0,
'total_nilai' => 0,
'total_nilai_akhir' => 0,
'total_anggaran' => 0,
'total_hps' => 0,
'saving_thd_hps' => 0,
];
}
$res_kotak_bawah[$regional][$group] = $regional_label;
$res_kotak_bawah[$regional]['total_pk'] += $value['total_pk'];
$res_kotak_bawah[$regional]['total_nilai'] += $value['total_nilai'];
$total_realisasi = $res_kotak_bawah[$regional]['total_nilai_akhir'] += $value['total_nilai_akhir'];
$res_kotak_bawah[$regional]['total_anggaran'] += $value['total_anggaran'];
$total_hps = $res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
$res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
$saving_terhadap_hps = $total_hps - $total_realisasi;
$res_kotak_bawah[$regional]['saving_thd_hps'] += $saving_terhadap_hps;
// $res_kotak_bawah[$regional]['color'] = $color[$regional];
}
// print_r($res_kotak_bawah); exit;
return $this->render('backend/dashboard/chart_realisasi_efisiensi_pg.html.twig', [
'res_kotak_bawah' => $res_kotak_bawah,
'group' => $group,
]);
}
/**
* @Route("/dashboard/chart_realisasi_efisiensi_mkso", name="dashboard_chart_realisasi_efisiensi_mkso", methods={"GET", "POST"})
*/
public function chart_realisasi_efisiensi_mkso(Request $request, ManagerInterface $managerInterface, MPlantRepository $mPlantRepo)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
$group = 'plant';
$kategori_plant = "'MKSO'";
$data = $this->getTabelLaporan($table, $group, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana, $kategori_plant, 1);
// print_r($data); exit;
$res_kotak_bawah = [];
$total_hps = 0;
// $color = ["HO MKSO" => "#00bcd4", "JATENG" => "#cddc39", "JATIM 1" => "#ffc107", "JATIM 2" => "#a1887f", "JATIM 3" => "#ba68c8", "JATIM 4" => "#81c784", "KANTOR PUSAT PT SGN" => "#ef9a9a", "SULAWESI" => "#77baf0", "SUMATERA 1" => "#90caf9", "SUMATERA 2" => "#81c784"];
foreach ($data as $key => $value) {
$regional = $value[$group];
if ($value[$group] == "HO MKSO") {
$regional_label = "MKSO";
} else if ($value[$group] == "KANTOR PUSAT PT SGN") {
$regional_label = "HO SGN";
} else {
$regional_label = $value[$group];
}
if (!isset($res_kotak_bawah[$regional])) {
$res_kotak_bawah[$regional] = [
'total_pk' => 0,
'total_nilai' => 0,
'total_nilai_akhir' => 0,
'total_anggaran' => 0,
'total_hps' => 0,
'saving_thd_hps' => 0,
];
}
$res_kotak_bawah[$regional][$group] = $regional_label;
$res_kotak_bawah[$regional]['total_pk'] += $value['total_pk'];
$res_kotak_bawah[$regional]['total_nilai'] += $value['total_nilai'];
$total_realisasi = $res_kotak_bawah[$regional]['total_nilai_akhir'] += $value['total_nilai_akhir'];
$res_kotak_bawah[$regional]['total_anggaran'] += $value['total_anggaran'];
$total_hps = $res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
$res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
$saving_terhadap_hps = $total_hps - $total_realisasi;
$res_kotak_bawah[$regional]['saving_thd_hps'] += $saving_terhadap_hps;
// $res_kotak_bawah[$regional]['color'] = $color[$regional];
}
return $this->render('backend/dashboard/chart_realisasi_efisiensi_mkso.html.twig', [
'res_kotak_bawah' => $res_kotak_bawah,
'group' => $group,
]);
}
/**
* @Route("/dashboard/chart_perbandingan", name="dashboard_chart_perbandingan", methods={"GET", "POST"})
*/
public function chart_perbandingan(Request $request, ManagerInterface $managerInterface, MPlantRepository $mPlantRepo)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
$group = 'plant';
$data_tahun_sebelumnya = $this->getTabelLaporan($table, 'regional', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun - 1, $sumber_dana, null);
$jumlah_pk_thn_sebelumnya = 0;
$jumlah_pr_thn_sebelumnya = 0;
$jumlah_pp_thn_sebelumnya = 0;
$jumlah_pemenang_thn_sebelumnya = 0;
$total_nilai_thn_sebelumnya = 0;
$total_anggaran_thn_sebelumnya = 0;
$total_hps_thn_sebelumnya = 0;
$total_realisasi_thn_sebelumnya = 0;
$saving_terhadap_anggaran_thn_sebelumnya = 0;
$saving_terhadap_hps_thn_sebelumnya = 0;
$saving_terhadap_anggaran_persen_thn_sebelumnya = 0;
$saving_terhadap_hps_persen_thn_sebelumnya = 0;
foreach ($data_tahun_sebelumnya as $key => $value) {
$jumlah_pk_thn_sebelumnya += $value['total_pk'];
$jumlah_pr_thn_sebelumnya += $value['total_pr'];
$jumlah_pp_thn_sebelumnya += $value['total_pp'];
$jumlah_pemenang_thn_sebelumnya += $value['total_vendor_pemenang'];
$total_nilai_thn_sebelumnya += $value['total_nilai'];
$total_anggaran_thn_sebelumnya += $value['total_anggaran'];
$total_hps_thn_sebelumnya += $value['total_hps'];
$total_realisasi_thn_sebelumnya += $value['total_nilai_akhir'];
}
$saving_terhadap_anggaran_thn_sebelumnya = $total_anggaran_thn_sebelumnya - $total_realisasi_thn_sebelumnya;
$saving_terhadap_hps_thn_sebelumnya = $total_hps_thn_sebelumnya - $total_realisasi_thn_sebelumnya;
$saving_terhadap_anggaran_persen_thn_sebelumnya = $total_anggaran_thn_sebelumnya > 0 ? ($saving_terhadap_anggaran_thn_sebelumnya / $total_anggaran_thn_sebelumnya) * 100 : 0;
$saving_terhadap_hps_persen = $total_hps_thn_sebelumnya > 0 ? ($saving_terhadap_hps_thn_sebelumnya / $total_hps_thn_sebelumnya) * 100 : 0;
//current
$data = $this->getTabelLaporan($table, 'regional', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana, null);
$jumlah_pk = 0;
$jumlah_pr = 0;
$jumlah_pp = 0;
$jumlah_pemenang = 0;
$total_nilai = 0;
$total_anggaran = 0;
$total_hps = 0;
$total_realisasi = 0;
$saving_terhadap_anggaran = 0;
$saving_terhadap_hps = 0;
$saving_terhadap_anggaran_persen = 0;
$saving_terhadap_hps_persen = 0;
foreach ($data as $key => $value) {
$jumlah_pk += $value['total_pk'];
$jumlah_pr += $value['total_pr'];
$jumlah_pp += $value['total_pp'];
$jumlah_pemenang += $value['total_vendor_pemenang'];
$total_nilai += $value['total_nilai'];
$total_anggaran += $value['total_anggaran'];
$total_hps += $value['total_hps'];
$total_realisasi += $value['total_nilai_akhir'];
}
$saving_terhadap_anggaran = $total_anggaran - $total_realisasi;
$saving_terhadap_hps = $total_hps - $total_realisasi;
$saving_terhadap_anggaran_persen = $total_anggaran > 0 ? ($saving_terhadap_anggaran / $total_anggaran) * 100 : 0;
$saving_terhadap_hps_persen = $total_hps > 0 ? ($saving_terhadap_hps / $total_hps) * 100 : 0;
// $res_dash = [
// 'jumlah_pk' => $jumlah_pk,
// 'jumlah_pr' => $jumlah_pr,
// 'jumlah_pp' => $jumlah_pp,
// 'jumlah_pemenang' => $jumlah_pemenang,
// 'total_nilai' => $total_nilai,
// 'total_anggaran' => $total_anggaran,
// 'total_hps' => $total_hps,
// 'total_realisasi' => $total_realisasi,
// 'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
// 'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
// 'saving_thd_anggaran' => $saving_terhadap_anggaran,
// 'saving_thd_hps' => $saving_terhadap_hps,
// 'saving_thd_anggaran_persen' => round($saving_terhadap_anggaran_persen, 1),
// 'saving_thd_hps_persen' => round($saving_terhadap_hps_persen, 1),
// 'metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['jumlah'] : 0,
// 'metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['jumlah'] : 0,
// 'nilai_metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['total_nilai'] : 0,
// 'nilai_metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['total_nilai'] : 0,
// ];
$res = [
"saving_thd_anggaran" => $saving_terhadap_anggaran,
"saving_thd_anggaran_sebelumnya" => $saving_terhadap_anggaran_thn_sebelumnya,
"saving_thd_hps" => $saving_terhadap_hps,
"saving_thd_hps_sebelumnya" => $saving_terhadap_hps_thn_sebelumnya
];
return $this->json($res);
}
/**
* @Route("/dashboard/card_waktu_proses", name="dashboard_card_waktu_proses", methods={"GET", "POST"})
*/
public function card_waktu_proses(Request $request, ManagerInterface $managerInterface, MPlantRepository $mPlantRepo)
{
$tahun = $request->request->get('tahun');
$tanggal_awal = $request->request->get('tanggal_awal');
$tanggal_akhir = $request->request->get('tanggal_akhir');
$sumber_dana = $request->request->get('sumber_dana');
$tipe_tahun = $request->request->get('tipe_tahun');
$table = 'v_cleansing_pk_vendor';
$group = 'plant';
$hari_kerja_create_pk = $this->getJumlahHariKerja($table, 'tgl_sinkron_pr_sap_ke_ips', 'tgl_submit_pk_ke_hps', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$hari_kerja_hps = $this->getJumlahHariKerja($table, 'tgl_submit_pk_ke_hps', 'tgl_submit_ke_pengadaan', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$hari_kerja_pengadaan = $this->getJumlahHariKerja($table, 'tgl_submit_ke_pengadaan', 'tgl_approval_sppbj', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$hari_kerja_metode_pengadaan = $this->getJumlahHariKerja($table, 'tgl_pelaksanaan_pp', 'tgl_approval_sppbj', 'metode_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
$res_metode = [];
foreach ($hari_kerja_metode_pengadaan as $key => $value) {
$res_metode[$value['tipe_pengadaan']] = $value['rata_rata_hari_kerja'];
}
$res_dash = [
'hari_kerja_create_pk' => number_format($hari_kerja_create_pk[0]['rata_rata_hari_kerja'], 0),
'hari_kerja_hps' => number_format($hari_kerja_hps[0]['rata_rata_hari_kerja']),
'hari_kerja_pengadaan' => number_format($hari_kerja_pengadaan[0]['rata_rata_hari_kerja'], 0),
'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
];
return $this->render('backend/dashboard/_card_waktu_proses.html.twig', [
'res_dash' => $res_dash
]);
}
/**
* @Route("/dashboard/card_ungroup", name="dashboard_card_ungroup", methods={"GET", "POST"})
*/
public function card_ungroup(Request $request, TPostingLaporanRepository $tPostingLaporanRepo, ManagerInterface $managerInterface, MPlantRepository $mPlantRepo)
{
// print_r($tanggal2); exit;
$tahun = ($request->get('tahun_anggaran')) ? $request->get('tahun_anggaran') : date("Y");
// print_r($tahun); exit;
$m_plant = $this->getKategoriPlant();
$tahun = $request->get('tahun_anggaran');
$tipeFilter = $request->get('tipe_filter');
if ($tipeFilter == 1) {
// === MINGGUAN ===
$start1 = new \DateTime($request->get('tanggal_1'));
$end1 = clone $start1;
$start2 = new \DateTime($request->get('tanggal_2'));
$end2 = clone $start2;
} elseif ($tipeFilter == 2) {
// === BULANAN ===
$tahun1 = $request->get('tahun_1');
$bulan1 = $request->get('bulan_1');
$tahun2 = $request->get('tahun_2');
$bulan2 = $request->get('bulan_2');
$start1 = new \DateTime("$tahun1-$bulan1-01");
$end1 = (clone $start1)->modify('last day of this month');
$start2 = new \DateTime("$tahun2-$bulan2-01");
$end2 = (clone $start2)->modify('last day of this month');
} elseif ($tipeFilter == 3) {
// === TAHUNAN ===
$tahun1 = $request->get('tahunan_1');
$tahun2 = $request->get('tahunan_2');
$start1 = new \DateTime("$tahun1-01-01");
$end1 = new \DateTime("$tahun1-12-31");
$start2 = new \DateTime("$tahun2-01-01");
$end2 = new \DateTime("$tahun2-12-31");
}
// === Ambil hasil lewat repository ===
$result1 = $tPostingLaporanRepo->findByPeriode(
$tahun,
$start1->format('Y-m-d'),
$end1->format('Y-m-d')
);
$result2 = $tPostingLaporanRepo->findByPeriode(
$tahun,
$start2->format('Y-m-d'),
$end2->format('Y-m-d')
);
$result1 = ($result1) ? json_decode($result1->getDataUngroup(), true) : [];
$result2 = ($result2) ? json_decode($result2->getDataUngroup(), true) : [];
// print_r($result1);
// print_r($result2); exit;
return $this->render('backend/dashboard/_card_perbandingan.html.twig', [
'm_plant' => $m_plant,
'result1' => $result1,
'result2' => $result2
]);
}
/**
* @Route("/dashboard/getPostingDates", name="dashboard_dates", methods={"GET", "POST"})
*/
public function getPostingDates(Request $request, TPostingLaporanRepository $tPostingLaporanRepo, ManagerInterface $managerInterface, MPlantRepository $mPlantRepo)
{
$dates = $tPostingLaporanRepo->createQueryBuilder('t')
->select('t.tanggal')
->getQuery()
->getArrayResult();
// ubah ke array string misalnya ["2025-10-02","2025-10-06"]
$result = array_map(fn($row) => $row['tanggal']->format('Y-m-d'), $dates);
return new JsonResponse($result);
}
}