Merged in afiqhamzah/chore/improve-query-performance-on-kawalanstok (pull request #97)
Afiqhamzah/chore/improve query performance on kawalanstok
This commit is contained in:
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Helper;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Reports\KawalanStokService;
|
||||
use App\Services\Reports\RingkasanHarianService as ReportRingkasanHarianService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
@@ -12,8 +13,15 @@ class RingkasanHarianController extends Controller
|
||||
|
||||
public function getLaporanCawangan(string $kod_cawangan, Request $request)
|
||||
{
|
||||
$reportGadaianService = new ReportRingkasanHarianService($kod_cawangan, $request);
|
||||
return $reportGadaianService->getLaporanCawangan();
|
||||
$reportRingkasanHarianService = new ReportRingkasanHarianService($kod_cawangan, $request);
|
||||
$reportKawalanStokService = new KawalanStokService($kod_cawangan, $request);
|
||||
|
||||
$reports = [
|
||||
'reportRingkasanHarian' => $reportRingkasanHarianService->getLaporanCawangan(),
|
||||
'reportKawalanStok' => $reportKawalanStokService->getLaporanCawangan(),
|
||||
];
|
||||
|
||||
return response()->json($reports);
|
||||
}
|
||||
|
||||
public function getSummaryLaporanRingkasanHarian()
|
||||
|
||||
@@ -50,7 +50,7 @@ class KawalanStokService
|
||||
|
||||
$gadaiini1 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('t_gadai', '=>', $this->startDate)->where('t_gadai', '=<', $this->endDate)
|
||||
->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 1)
|
||||
->where('nilaimarhun', '<=', 400.99)
|
||||
@@ -58,7 +58,7 @@ class KawalanStokService
|
||||
|
||||
$gadaiini2 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate)
|
||||
->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 401)
|
||||
->where('nilaimarhun', '<=', 2000.99)
|
||||
@@ -66,7 +66,7 @@ class KawalanStokService
|
||||
|
||||
$gadaiini3 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate)
|
||||
->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 2001)
|
||||
->where('nilaimarhun', '<=', 1000000)
|
||||
@@ -113,7 +113,7 @@ class KawalanStokService
|
||||
$tebusini1 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('sttebus', 'T')
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 1)
|
||||
->where('nilaimarhun', '<=', 400.99)
|
||||
@@ -122,7 +122,7 @@ class KawalanStokService
|
||||
$tebusini2 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('sttebus', 'T')
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 401)
|
||||
->where('nilaimarhun', '<=', 2000.99)
|
||||
@@ -131,7 +131,7 @@ class KawalanStokService
|
||||
$tebusini3 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('sttebus', 'T')
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 2001)
|
||||
->where('nilaimarhun', '<=', 1000000)
|
||||
@@ -178,7 +178,7 @@ class KawalanStokService
|
||||
$lelongini1 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('sttebus', 'L')
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 1)
|
||||
->where('nilaimarhun', '<=', 400.99)
|
||||
@@ -187,7 +187,7 @@ class KawalanStokService
|
||||
$lelongini2 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('sttebus', 'L')
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 401)
|
||||
->where('nilaimarhun', '<=', 2000.99)
|
||||
@@ -196,7 +196,7 @@ class KawalanStokService
|
||||
$lelongini3 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('sttebus', 'L')
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 2001)
|
||||
->where('nilaimarhun', '<=', 1000000)
|
||||
@@ -204,21 +204,10 @@ class KawalanStokService
|
||||
|
||||
/*ansuran*/
|
||||
|
||||
$ansuran1_data = TransaksiKeuntungan::on('mysql7')
|
||||
->leftJoin('transaction as trans', function ($join) {
|
||||
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
|
||||
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
|
||||
})
|
||||
->where('trans.created_at', '<', $this->startDate)
|
||||
->where('trans.trans_type', '=', 'A')
|
||||
->groupBy('trans.id')
|
||||
->where('trans.kodcaw', $this->kodCawangan)
|
||||
->pluck('trans.norujukan');
|
||||
|
||||
$ansuran1 = [];
|
||||
$nomborRujukanAnsuran = $this->getFilteredNomborRujukanAnsuran();
|
||||
|
||||
$ansuran1 = Gadai::on($cawangan['mysql'])
|
||||
->whereIn('norujukan', $ansuran1_data)
|
||||
->whereIn('norujukan', $nomborRujukanAnsuran)
|
||||
->where([['nilaimarhun', '>=', 1], ['nilaimarhun', '<=', 400.99], ['sttebus', ''], ['hargajualan', '<>', 'null']])
|
||||
->orWhere([['nilaimarhun', '>=', 1], ['nilaimarhun', '<=', 400.99], ['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']])
|
||||
->pluck('norujukan');
|
||||
@@ -230,20 +219,10 @@ class KawalanStokService
|
||||
->where('tarikh_bayaran', '<=', $this->startDate)
|
||||
->get();
|
||||
|
||||
$ansuranharini1_data = TransaksiKeuntungan::on('mysql7')
|
||||
->leftJoin('transaction as trans', function ($join) {
|
||||
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
|
||||
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
|
||||
})
|
||||
->whereDate('trans.created_at', '>=', $this->startDate)
|
||||
->whereDate('trans.created_at', '<=', $this->endDate)
|
||||
->where('trans.trans_type', '=', 'A')
|
||||
->groupBy('trans.id')
|
||||
->where('trans.kodcaw', $this->kodCawangan)
|
||||
->pluck('trans.norujukan');
|
||||
$nomborRujukanAnsuranHariIni = $this->getFilteredNomborRujukanAnsuranHariIni();
|
||||
|
||||
$ansuran1harini = Gadai::on($cawangan['mysql'])
|
||||
->whereIn('norujukan', $ansuranharini1_data)
|
||||
->whereIn('norujukan', $nomborRujukanAnsuranHariIni)
|
||||
->where([['nilaimarhun', '>=', 1], ['nilaimarhun', '<=', 400.99], ['sttebus', ''], ['hargajualan', '<>', 'null']])
|
||||
->pluck('norujukan');
|
||||
|
||||
@@ -255,19 +234,8 @@ class KawalanStokService
|
||||
->where('kodcaw', $this->kodCawangan)
|
||||
->get();
|
||||
|
||||
$ansuran2_data = TransaksiKeuntungan::on('mysql7')
|
||||
->leftJoin('transaction as trans', function ($join) {
|
||||
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
|
||||
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
|
||||
})
|
||||
->where('trans.created_at', '<', $this->startDate)
|
||||
->where('trans.trans_type', '=', 'A')
|
||||
->groupBy('trans.id')
|
||||
->where('trans.kodcaw', $this->kodCawangan)
|
||||
->pluck('trans.norujukan');
|
||||
|
||||
$ansuran2 = Gadai::on($cawangan['mysql'])
|
||||
->whereIn('norujukan', $ansuran2_data)
|
||||
->whereIn('norujukan', $nomborRujukanAnsuran)
|
||||
->where([['nilaimarhun', '>=', 401], ['nilaimarhun', '<=', 2000.99], ['sttebus', ''], ['hargajualan', '<>', 'null']])
|
||||
->orWhere([['nilaimarhun', '>=', 401], ['nilaimarhun', '<=', 2000.99], ['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']])
|
||||
->pluck('norujukan');
|
||||
@@ -279,20 +247,8 @@ class KawalanStokService
|
||||
->where('kodcaw', $this->kodCawangan)
|
||||
->get();
|
||||
|
||||
$ansuranharini2_data = TransaksiKeuntungan::on('mysql7')
|
||||
->leftJoin('transaction as trans', function ($join) {
|
||||
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
|
||||
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
|
||||
})
|
||||
->whereDate('trans.created_at', '>=', $this->startDate)
|
||||
->whereDate('trans.created_at', '<=', $this->endDate)
|
||||
->where('trans.trans_type', '=', 'A')
|
||||
->groupBy('trans.id')
|
||||
->where('trans.kodcaw', $this->kodCawangan)
|
||||
->pluck('trans.norujukan');
|
||||
|
||||
$ansuran2harini = Gadai::on($cawangan['mysql'])
|
||||
->whereIn('norujukan', $ansuranharini2_data)
|
||||
->whereIn('norujukan', $nomborRujukanAnsuranHariIni)
|
||||
->where([['nilaimarhun', '>=', 401], ['nilaimarhun', '<=', 2000.99], ['sttebus', ''], ['hargajualan', '<>', 'null']])
|
||||
->pluck('norujukan');
|
||||
|
||||
@@ -304,19 +260,8 @@ class KawalanStokService
|
||||
->where('kodcaw', $this->kodCawangan)
|
||||
->get();
|
||||
|
||||
$ansuran3_data = TransaksiKeuntungan::on('mysql7')
|
||||
->leftJoin('transaction as trans', function ($join) {
|
||||
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
|
||||
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
|
||||
})
|
||||
->where('trans.created_at', '<', $this->startDate)
|
||||
->where('trans.trans_type', '=', 'A')
|
||||
->groupBy('trans.id')
|
||||
->where('trans.kodcaw', $this->kodCawangan)
|
||||
->pluck('trans.norujukan');
|
||||
|
||||
$ansuran3 = Gadai::on($cawangan['mysql'])
|
||||
->whereIn('norujukan', $ansuran3_data)
|
||||
->whereIn('norujukan', $nomborRujukanAnsuran)
|
||||
->where([['nilaimarhun', '>=', 2001], ['nilaimarhun', '<=', 1000000], ['sttebus', ''], ['hargajualan', '<>', 'null']])
|
||||
->orWhere([['nilaimarhun', '>=', 2001], ['nilaimarhun', '<=', 1000000], ['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']])
|
||||
->pluck('norujukan');
|
||||
@@ -328,20 +273,8 @@ class KawalanStokService
|
||||
->where('kodcaw', $this->kodCawangan)
|
||||
->get();
|
||||
|
||||
$ansuranharini3_data = TransaksiKeuntungan::on('mysql7')
|
||||
->leftJoin('transaction as trans', function ($join) {
|
||||
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
|
||||
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
|
||||
})
|
||||
->whereDate('trans.created_at', '>=', $this->startDate)
|
||||
->whereDate('trans.created_at', '<=', $this->endDate)
|
||||
->where('trans.trans_type', '=', 'A')
|
||||
->groupBy('trans.id')
|
||||
->where('trans.kodcaw', $this->kodCawangan)
|
||||
->pluck('trans.norujukan');
|
||||
|
||||
$ansuran3harini = Gadai::on($cawangan['mysql'])
|
||||
->whereIn('norujukan', $ansuranharini3_data)
|
||||
->whereIn('norujukan', $nomborRujukanAnsuranHariIni)
|
||||
->where([['nilaimarhun', '>=', 2001], ['nilaimarhun', '<=', 1000000], ['sttebus', ''], ['hargajualan', '<>', 'null']])
|
||||
->pluck('norujukan');
|
||||
|
||||
@@ -402,7 +335,7 @@ class KawalanStokService
|
||||
$hapuskiraini1 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('sttebus', 'H')
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 1)
|
||||
->where('nilaimarhun', '<=', 400.99)
|
||||
@@ -411,7 +344,7 @@ class KawalanStokService
|
||||
$hapuskiraini2 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('sttebus', 'H')
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 401)
|
||||
->where('nilaimarhun', '<=', 2000.99)
|
||||
@@ -420,7 +353,7 @@ class KawalanStokService
|
||||
$hapuskiraini3 = Gadai::on($cawangan['mysql'])
|
||||
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
|
||||
->where('sttebus', 'H')
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
|
||||
->where('tagpalsu', 0)
|
||||
->where('nilaimarhun', '>=', 2001)
|
||||
->where('nilaimarhun', '<=', 1000000)
|
||||
@@ -433,6 +366,36 @@ class KawalanStokService
|
||||
array_push($array_kawalanstok, ["ans1" => $arrayans1, "ans2" => $arrayans2, "ans3" => $arrayans3, "ansini1" => $arrayharinians1, "ansini2" => $arrayharinians2, "ansini3" => $arrayharinians3]);
|
||||
return response()->json($array_kawalanstok);
|
||||
|
||||
}
|
||||
|
||||
private function getFilteredNomborRujukanAnsuran()
|
||||
{
|
||||
return TransaksiKeuntungan::on('mysql7')
|
||||
->leftJoin('transaction as trans', function ($join) {
|
||||
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
|
||||
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
|
||||
})
|
||||
->where('trans.created_at', '<', $this->startDate)
|
||||
->where('trans.trans_type', '=', 'A')
|
||||
->groupBy('trans.id')
|
||||
->where('trans.kodcaw', $this->kodCawangan)
|
||||
->pluck('trans.norujukan');
|
||||
|
||||
}
|
||||
|
||||
private function getFilteredNomborRujukanAnsuranHariIni()
|
||||
{
|
||||
return TransaksiKeuntungan::on('mysql7')
|
||||
->leftJoin('transaction as trans', function ($join) {
|
||||
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
|
||||
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
|
||||
})
|
||||
->whereDate('trans.created_at', '>=', $this->startDate)
|
||||
->whereDate('trans.created_at', '<=', $this->endDate)
|
||||
->where('trans.trans_type', '=', 'A')
|
||||
->groupBy('trans.id')
|
||||
->where('trans.kodcaw', $this->kodCawangan)
|
||||
->pluck('trans.norujukan');
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user