diff --git a/htdocs/app/Http/Controllers/GudangController.php b/htdocs/app/Http/Controllers/GudangController.php index 2444a0b4..7d033f02 100644 --- a/htdocs/app/Http/Controllers/GudangController.php +++ b/htdocs/app/Http/Controllers/GudangController.php @@ -200,12 +200,12 @@ class GudangController extends Controller 'bulan' => $rdata->bulan, 'tahun' => $rdata->tahun, 'deskripsi' => $deskripsiGabungan, - 'pemasukan' => number_format( $pemasukan , 0 , '.' , ',' ), - 'pengeluaran' => number_format( $pengeluaran , 0 , '.' , ',' ), + 'pemasukan' => $rdata->pemasukan ?? 0, + 'pengeluaran' => $rdata->pengeluaran ?? 0, 'jenis' => $rdata->jenis, 'masa_expired' => $rdata->masa_expired, 'keterangan' => $rdata->keterangan, - 'tgllengkap' => $tgllengkap, + 'tgllengkap' => $rdata->created_at->format('m/d/Y'), 'total' => $total, ); } @@ -270,13 +270,13 @@ class GudangController extends Controller } public function jsonReportbhpPaginated(Request $request) { - $tanggal = $request->input('tanggal'); - $deskripsi = $request->input('deskripsi'); - $kategori = $request->input('kategori'); - $lm = 10; - $limit = ($request->input('limit') == null ? $lm : $request->input('limit')); - $order = ($request->input('order') == null ? 'id desc' : $request->input('order')); - $data = new SIMBHPReport; + $tanggal = $request->input('tanggal'); + $deskripsi = $request->input('deskripsi'); + $kategori = $request->input('kategori'); + $lm = 10; + $limit = ($request->input('limit') == null ? $lm : $request->input('limit')); + $order = ($request->input('order') == null ? 'id desc' : $request->input('order')); + $data = new SIMBHPReport; if ($kategori != null AND $kategori != '') $data = $data->where('jenis', $kategori); if ($tanggal != null AND $tanggal != '') $data = $data->where('created_at', 'LIKE', '%'.$tanggal.'%'); if ($deskripsi != null AND $deskripsi != '') $data = $data->where('deskripsi', 'LIKE', '%'.$deskripsi.'%'); @@ -287,60 +287,54 @@ class GudangController extends Controller $kredit = 0; if (!empty($data)){ foreach($data as $rdata){ - $dd = $rdata->tanggal; - $mm = $rdata->bulan; - $yy = $rdata->tahun; - $pengeluaran = $rdata->pengeluaran; - $pemasukan = $rdata->pemasukan; - $deskripsi = $rdata->deskripsi; - $jenis = $rdata->jenis; - $debet = $debet + $pemasukan; - $kredit = $kredit + $pengeluaran; - $cekjenis = SIMBHPJenis::where('kodejenis', $jenis)->first(); + + $pengeluaran = $rdata->pengeluaran; + $pemasukan = $rdata->pemasukan; + $deskripsi = $rdata->deskripsi; + $jenis = $rdata->jenis; + $debet = $debet + $pemasukan; + $kredit = $kredit + $pengeluaran; + $cekjenis = SIMBHPJenis::where('kodejenis', $jenis)->first(); if (isset($cekjenis->id)){ - $kodejenis = $cekjenis->kodejenis; - $jenis = $cekjenis->jenis; - $satuan = $cekjenis->satuan; + $kodejenis = $cekjenis->kodejenis; + $jenis = $cekjenis->jenis; + $satuan = $cekjenis->satuan; } else { - $kodejenis = $jenis; - $jenis = ''; - $satuan = ''; + $kodejenis = $jenis; + $jenis = ''; + $satuan = ''; } if ($jenis != ''){ $deskripsi = ''.$jenis.'
'.$deskripsi; } - if ($mm < 10){ - $tgllengkap = $yy.'-0'.$mm.'-'.$dd; - } else { - $tgllengkap = $yy.'-'.$mm.'-'.$dd; - } + if ($pengeluaran == '' OR $pengeluaran == 0) { - $total = $pemasukan; - $jentrans = 'PEMASUKAN'; + $total = $pemasukan; + $jentrans = 'PEMASUKAN'; } else { - $total = $pengeluaran; - $jentrans = 'PENGELUARAN'; + $total = $pengeluaran; + $jentrans = 'PENGELUARAN'; } $hasil[] = array( - 'id' => $rdata->id, - 'tanggal' => $rdata->tanggal, - 'bulan' => $rdata->bulan, - 'tahun' => $rdata->tahun, - 'tlsdeskripsi' => $deskripsi, - 'deskripsi' => $rdata->deskripsi, - 'pemasukan' => number_format( $pemasukan , 0 , '.' , ',' ), - 'pengeluaran' => number_format( $pengeluaran , 0 , '.' , ',' ), - 'jenis' => $kodejenis, - 'masa_expired' => $rdata->masa_expired, - 'keterangan' => $rdata->keterangan, - 'tgllengkap' => $tgllengkap, - 'created_at' => $rdata->created_at, - 'nominal' => $total.' '.$satuan, - 'jentrans' => $jentrans, + 'id' => $rdata->id, + 'tanggal' => $rdata->tanggal, + 'bulan' => $rdata->bulan, + 'tahun' => $rdata->tahun, + 'tlsdeskripsi' => $deskripsi, + 'deskripsi' => $rdata->deskripsi, + 'pemasukan' => $rdata->pemasukan ?? 0, + 'pengeluaran' => $rdata->pengeluaran ?? 0, + 'jenis' => $kodejenis, + 'masa_expired' => $rdata->masa_expired, + 'keterangan' => $rdata->keterangan, + 'tgllengkap' => $rdata->created_at->format('m/d/Y'), + 'created_at' => $rdata->created_at, + 'nominal' => $total.' '.$satuan, + 'jentrans' => $jentrans, ); } } diff --git a/htdocs/resources/views/admin/gudang.blade.php b/htdocs/resources/views/admin/gudang.blade.php index 177cc92c..be15a639 100644 --- a/htdocs/resources/views/admin/gudang.blade.php +++ b/htdocs/resources/views/admin/gudang.blade.php @@ -782,7 +782,7 @@ { name: 'jenis',type: 'text'}, { name: 'masa_expired',type: 'text'}, { name: 'keterangan',type: 'text'}, - { name: 'tgllengkap',type: 'text'}, + { name: 'tgllengkap',type: 'date'}, { name: 'total',type: 'text'}, ], type: 'POST', @@ -800,15 +800,17 @@ autoheight: true, theme: "energyblue", source: dataAdapter, + showaggregates: true, + showstatusbar: true, + statusbarheight: 50, + altrows: true, selectionmode: 'multiplecellsextended', columns: [ - { text: 'dd', columngroup: 'tglinput', filtertype: 'checkedlist', datafield: 'tanggal', width: '5%', cellsalign: 'center', align: 'center' }, - { text: 'mm', columngroup: 'tglinput', filtertype: 'checkedlist', datafield: 'bulan', width: '5%', cellsalign: 'center', align: 'center' }, - { text: 'yy', columngroup: 'tglinput', filtertype: 'checkedlist', datafield: 'tahun', width: '5%', cellsalign: 'center', align: 'center' }, + { text: 'Tanggal', cellsformat: 'dd-MMMM-yyyy', filtertype: 'date', datafield: 'tgllengkap', width: '15%', cellsalign: 'center', align: 'center' }, { text: 'Jenis', datafield: 'jenis', filtertype: 'checkedlist', width: '10%', cellsalign: 'center', align: 'center' }, { text: 'Deskripsi', datafield: 'deskripsi', width: '25%', cellsalign: 'left', align: 'center' }, - { text: 'MASUK', datafield: 'pemasukan', width: '10%', cellsalign: 'right', align: 'center' }, - { text: 'KELUAR', datafield: 'pengeluaran', width: '10%', cellsalign: 'right', align: 'center' }, + { text: 'MASUK', cellsformat: 'n2',aggregates: ['sum'], datafield: 'pemasukan', width: '10%', cellsalign: 'right', align: 'center' }, + { text: 'KELUAR', cellsformat: 'n2', aggregates: ['sum'], datafield: 'pengeluaran', width: '10%', cellsalign: 'right', align: 'center' }, { text: 'Masa Expired', datafield: 'masa_expired', width: '12%', cellsalign: 'center', align: 'center' }, { text: 'Keterangan', datafield: 'keterangan', width: '8%', cellsalign: 'right', align: 'center' }, { text: 'Edit', columntype: 'button', width: '10%', cellsrenderer: function () { return "Edit"; diff --git a/htdocs/resources/views/dokter/pemeriksaan.blade.php b/htdocs/resources/views/dokter/pemeriksaan.blade.php index 3502656f..7e8ea544 100644 --- a/htdocs/resources/views/dokter/pemeriksaan.blade.php +++ b/htdocs/resources/views/dokter/pemeriksaan.blade.php @@ -2121,12 +2121,12 @@ @@ -5514,7 +5514,7 @@ { text: 'Service', filtertype: 'checkedlist', datafield: 'tlsreques', width: 150, cellsalign: 'left', align: 'center'}, { text: 'Status', filtertype: 'checkedlist', datafield: 'tlsstatus', width: 150, cellsalign: 'left', align: 'center'}, { text: 'Themeplate', filtertype: 'checkedlist', datafield: 'dlp', width: 75, cellsalign: 'left', align: 'center'}, - { text: 'Jenis', filtertype: 'checkedlist', datafield: 'diagnosa2', width: 75, cellsalign: 'left', align: 'center'}, + { text: 'Kelompok', filtertype: 'checkedlist', datafield: 'kd_spesimen', width: 75, cellsalign: 'left', align: 'center'}, { text: 'Specimen', filtertype: 'checkedlist', datafield: 'nm_spesimen', width: 230, cellsalign: 'left', align: 'center'}, { text: 'Updated_at', datafield: 'updated_at', filtertype: 'date', width: 150, cellsalign: 'left', align: 'center'}, { text: 'Duration', cellsrenderer: tlsdurasi, width: 100, cellsalign: 'left', align: 'center' }, diff --git a/htdocs/resources/views/dokter/ppds.blade.php b/htdocs/resources/views/dokter/ppds.blade.php index 2f1cc34e..a504faf0 100644 --- a/htdocs/resources/views/dokter/ppds.blade.php +++ b/htdocs/resources/views/dokter/ppds.blade.php @@ -5549,7 +5549,7 @@ { text: 'Service', filtertype: 'checkedlist', datafield: 'tlsreques', width: 150, cellsalign: 'left', align: 'center'}, { text: 'Status', filtertype: 'checkedlist', datafield: 'tlsstatus', width: 150, cellsalign: 'left', align: 'center'}, { text: 'Themeplate', filtertype: 'checkedlist', datafield: 'dlp', width: 75, cellsalign: 'left', align: 'center'}, - { text: 'Jenis', filtertype: 'checkedlist', datafield: 'diagnosa2', width: 75, cellsalign: 'left', align: 'center'}, + { text: 'Kelompok', filtertype: 'checkedlist', datafield: 'kd_spesimen', width: 75, cellsalign: 'left', align: 'center'}, { text: 'Specimen', filtertype: 'checkedlist', datafield: 'nm_spesimen', width: 230, cellsalign: 'left', align: 'center'}, { text: 'Updated_at', datafield: 'updated_at', filtertype: 'date', width: 150, cellsalign: 'left', align: 'center'}, { text: 'Duration', cellsrenderer: tlsdurasi, width: 100, cellsalign: 'left', align: 'center' }, diff --git a/htdocs/resources/views/dokter/ppdsdeveloper.blade.php b/htdocs/resources/views/dokter/ppdsdeveloper.blade.php index 2966b468..4223ee1a 100644 --- a/htdocs/resources/views/dokter/ppdsdeveloper.blade.php +++ b/htdocs/resources/views/dokter/ppdsdeveloper.blade.php @@ -5540,7 +5540,7 @@ { text: 'Service', filtertype: 'checkedlist', datafield: 'tlsreques', width: 150, cellsalign: 'left', align: 'center'}, { text: 'Status', filtertype: 'checkedlist', datafield: 'tlsstatus', width: 150, cellsalign: 'left', align: 'center'}, { text: 'Themeplate', filtertype: 'checkedlist', datafield: 'dlp', width: 75, cellsalign: 'left', align: 'center'}, - { text: 'Jenis', filtertype: 'checkedlist', datafield: 'diagnosa2', width: 75, cellsalign: 'left', align: 'center'}, + { text: 'Kelompok', filtertype: 'checkedlist', datafield: 'kd_spesimen', width: 75, cellsalign: 'left', align: 'center'}, { text: 'Specimen', filtertype: 'checkedlist', datafield: 'nm_spesimen', width: 230, cellsalign: 'left', align: 'center'}, { text: 'Updated_at', datafield: 'updated_at', filtertype: 'date', width: 150, cellsalign: 'left', align: 'center'}, { text: 'Duration', cellsrenderer: tlsdurasi, width: 100, cellsalign: 'left', align: 'center' }, diff --git a/listener/app.py b/listener/app.py index 6dcdaec0..cba74866 100644 --- a/listener/app.py +++ b/listener/app.py @@ -30,10 +30,25 @@ log_handler = TimedRotatingFileHandler( ) formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(threadName)s - %(message)s') log_handler.setFormatter(formatter) -logging.basicConfig(level=logging.INFO, handlers=[log_handler]) +log_handler.setLevel(logging.ERROR) +logging.basicConfig(level=logging.ERROR, handlers=[log_handler]) +logging.getLogger().setLevel(logging.ERROR) +logging.getLogger("werkzeug").setLevel(logging.ERROR) THREAD_LOG_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "thread_logs") thread_log_lock = threading.Lock() +ERROR_LOG_KEYWORDS = ( + "critical", + "crash", + "error", + "exception", + "failed", + "failure", + "gagal", + "corrupt", + "ditolak", + "traceback", +) # ========================================== # 1. KONFIGURASI SISTEM @@ -260,6 +275,10 @@ def _sanitize_thread_log_name(thread_name): return safe_name or "main" def _write_thread_log(message): + text = str(message or "") + if not any(keyword in text.lower() for keyword in ERROR_LOG_KEYWORDS): + return + try: os.makedirs(THREAD_LOG_DIR, exist_ok=True) thread_name = threading.current_thread().name