6 changed files with 203 additions and 7 deletions
@ -0,0 +1,86 @@ |
|||||||
|
<?php |
||||||
|
namespace App\Controllers\Kewilayahan\Sebaran; |
||||||
|
|
||||||
|
use App\Libraries\AldLibrary; |
||||||
|
|
||||||
|
class ZonaPengawasan extends \App\Controllers\Kewilayahan\Kytp |
||||||
|
|
||||||
|
{ |
||||||
|
protected function data($request, $jenis) |
||||||
|
{ |
||||||
|
ini_set('max_input_vars', 3000); |
||||||
|
$Ald = new AldLibrary; |
||||||
|
$username = session('nip'); |
||||||
|
|
||||||
|
$opsiWilZona = $Ald->decryptMe($request->getPost('opsiWilZona'), $username); |
||||||
|
$adm4_pcode = []; |
||||||
|
foreach ($request->getPost('adm4_pcode') ?? [] as $key => $value) { |
||||||
|
$adm4_pcode[] = $Ald->decryptKpdl($value, $username); |
||||||
|
} |
||||||
|
|
||||||
|
$id_poly_zona = []; |
||||||
|
foreach ($request->getPost('id_poly_zona') ?? [] as $key => $value) { |
||||||
|
$id_poly_zona[] = $Ald->decryptMe($value, $username); |
||||||
|
} |
||||||
|
|
||||||
|
$nip_ar_perekam = []; |
||||||
|
foreach ($request->getPost('nip_ar_perekam') ?? [] as $key => $value) { |
||||||
|
$nip_ar_perekam[] = $Ald->decryptMe($value, $username); |
||||||
|
} |
||||||
|
|
||||||
|
$nip_ar_pengampu = []; |
||||||
|
foreach ($request->getPost('nip_ar_pengampu') ?? [] as $key => $value) { |
||||||
|
$nip_ar_pengampu[] = $Ald->decryptMe($value, $username); |
||||||
|
} |
||||||
|
|
||||||
|
$db = \Config\Database::connect(); |
||||||
|
|
||||||
|
$npwp = $db->table('KPDL_MV_LOKASI_SUBJEK')->select("KPPADM_ZONA, NM_KPP_ZONA, count(DISTINCT NPWP) JML", false) |
||||||
|
->groupBy("KPPADM_ZONA, NM_KPP_ZONA")->orderBy("JML", 'desc'); |
||||||
|
|
||||||
|
switch ($jenis) { |
||||||
|
case 'dalamKpp': |
||||||
|
$npwp = $npwp->where("NPWP IS NOT NULL") |
||||||
|
->where("KPPADM_PENGAMPU = KPPADM_ZONA"); |
||||||
|
break; |
||||||
|
case 'luarKpp': |
||||||
|
$npwp = $npwp->where("NPWP IS NOT NULL") |
||||||
|
->where("KPPADM_PENGAMPU != KPPADM_ZONA"); |
||||||
|
break; |
||||||
|
default: |
||||||
|
|
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
if ($opsiWilZona == 'wilayah') { |
||||||
|
$npwp->whereIn('ADM4_PCODE', $adm4_pcode); |
||||||
|
} |
||||||
|
|
||||||
|
if ($opsiWilZona == 'zona') { |
||||||
|
$npwp->whereIn('ID_POLY_ZONA', $id_poly_zona); |
||||||
|
} |
||||||
|
|
||||||
|
if ($opsiWilZona == 'perekam') { |
||||||
|
$npwp = $npwp->whereIn('CREATED_BY', $nip_ar_perekam); |
||||||
|
} |
||||||
|
|
||||||
|
if ($opsiWilZona == 'pengampu') { |
||||||
|
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu); |
||||||
|
} |
||||||
|
|
||||||
|
$data = $npwp->get()->getResult(); |
||||||
|
|
||||||
|
$ret = []; |
||||||
|
|
||||||
|
foreach ($data as $b) { |
||||||
|
|
||||||
|
array_push($ret, ['name' => $b->NM_KPP_ZONA, |
||||||
|
'kode' => $Ald->encryptMe($b->KPPADM_ZONA, $username), |
||||||
|
'y' => floatval($b->JML), |
||||||
|
] |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
return $ret; |
||||||
|
} |
||||||
|
} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,94 @@ |
|||||||
|
import React, { useEffect, useRef, useState } from "react" |
||||||
|
import Highcharts from "highcharts" |
||||||
|
import HighchartsReact from "highcharts-react-official" |
||||||
|
import { Col, Row } from "reactstrap" |
||||||
|
import { format_angka } from "../util" |
||||||
|
import collect from "collect.js" |
||||||
|
import $ from "jquery" |
||||||
|
const ZonaPengawasan = ({ dataSend }) => { |
||||||
|
const base_url = "<?=base_url()?>" |
||||||
|
|
||||||
|
const refChart = useRef(null) |
||||||
|
const refChart2 = useRef(null) |
||||||
|
const [dataZpDalamKpp, setDataZpDalamKpp] = useState(null) |
||||||
|
const [dataZpLuarKpp, setDataZpLuarKpp] = useState(null) |
||||||
|
|
||||||
|
useEffect(() => { |
||||||
|
$.get({ |
||||||
|
url: base_url + "kewilayahan/kytp/sebaranZonaPengawasan", |
||||||
|
dataType: "json", |
||||||
|
type: "POST", |
||||||
|
data: { |
||||||
|
...dataSend |
||||||
|
}, |
||||||
|
success: (data) => { |
||||||
|
setDataZpDalamKpp(data.dalamKpp) |
||||||
|
setDataZpLuarKpp(data.luarKpp) |
||||||
|
} |
||||||
|
}) |
||||||
|
}, [dataSend]) |
||||||
|
|
||||||
|
const optionsChart = (data, title) => { |
||||||
|
const total_wp = collect(data).sum("y") |
||||||
|
return { |
||||||
|
chart: { |
||||||
|
plotBackgroundColor: null, |
||||||
|
plotBorderWidth: null, |
||||||
|
plotShadow: false, |
||||||
|
type: "pie", |
||||||
|
zoomType: "xy", |
||||||
|
height: "300" |
||||||
|
}, |
||||||
|
title: { |
||||||
|
text: title, |
||||||
|
style: { fontSize: "10px" } |
||||||
|
}, |
||||||
|
tooltip: { |
||||||
|
pointFormat: "<b>{point.percentage:.1f}%</b><br>: {point.y} dari " + format_angka(total_wp) + " total NPWP yang ada" |
||||||
|
}, |
||||||
|
accessibility: { |
||||||
|
point: { |
||||||
|
valueSuffix: "%" |
||||||
|
} |
||||||
|
}, |
||||||
|
plotOptions: { |
||||||
|
pie: { |
||||||
|
allowPointSelect: true, |
||||||
|
cursor: "pointer", |
||||||
|
dataLabels: { |
||||||
|
enabled: true, |
||||||
|
style: { fontSize: "10px" }, |
||||||
|
format: "{point.name}: <br> {point.percentage:.1f} %" |
||||||
|
} |
||||||
|
} |
||||||
|
// series: pie_click
|
||||||
|
}, |
||||||
|
series: [ |
||||||
|
{ |
||||||
|
name: "", |
||||||
|
data |
||||||
|
} |
||||||
|
] |
||||||
|
} |
||||||
|
} |
||||||
|
return ( |
||||||
|
<> |
||||||
|
<Row> |
||||||
|
<Col md="6"> |
||||||
|
<HighchartsReact ref={refChart} highcharts={Highcharts} options={optionsChart(dataZpDalamKpp, "Zona Pengawasan KPP Sendiri")} /> |
||||||
|
<div className="center text-center"> |
||||||
|
<span className="text-center">KPP Terdaftar = KPP Zona</span> |
||||||
|
</div> |
||||||
|
</Col> |
||||||
|
<Col md="6"> |
||||||
|
<HighchartsReact ref={refChart} highcharts={Highcharts} options={optionsChart(dataZpLuarKpp, "Zona Pengawasan Luar KPP")} /> |
||||||
|
<div className="center text-center"> |
||||||
|
<span>KPP Terdaftar {"<>"} KPP Zona</span> |
||||||
|
</div> |
||||||
|
</Col> |
||||||
|
</Row> |
||||||
|
</> |
||||||
|
) |
||||||
|
} |
||||||
|
|
||||||
|
export default ZonaPengawasan |
Loading…
Reference in new issue