'Normal' and Mcu_KelainanGroupID not in (1,5) and Mcu_KelainanID not in (63,12) GROUP BY Mcu_KelainanID, Mcu_KelainanGroupName ORDER BY xTotalPerItem DESC"; $qry = $this->db->query($sql, array()); if (!$qry) { // $this->db->trans_rollback(); $this->sys_error_db("Error get raw top 3 kelainan"); exit; } $allKelainan = $qry->result_array(); $group = [2, 3, 16, 22, 17, 18, 19, 20, 28, 29]; $newKelainan = []; $tmpGroupID = []; for ($i = 0; $i < count($allKelainan); $i++) { $data = $allKelainan[$i]; if (in_array(intval($data['Mcu_KelainanGroupID']), $group)) { $groupID = $data['Mcu_KelainanGroupID']; // Jika sudah ada di hasil, tambahkan xTotalPerItem if (in_array($groupID, $tmpGroupID)) { if (count($newKelainan) == 0) { $newKelainan[] = $data; } for ($m = 0; $m < count($newKelainan); $m++) { if ($groupID == $newKelainan[$m]['Mcu_KelainanGroupID']) { $newKelainan[$m]['xTotalPerItem'] = (int)$data['xTotalPerItem'] + (int)$newKelainan[$m]['xTotalPerItem']; } } } else { // Jika belum ada, masukkan data awal $newKelainan[] = [ "xTotalPerItem" => (int)$data['xTotalPerItem'], "Mcu_KelainanGroupName" => $data['Mcu_KelainanGroupName'], "Mcu_KelainanGroupID" => $groupID, "Mcu_KelainanID" => $data['Mcu_KelainanID'], "Mgm_HeaderMgm_McuID" => $data['Mgm_HeaderMgm_McuID'] ]; $tmpGroupID[] = $groupID; } } else { $newKelainan[] = $data; } } usort($newKelainan, function ($a, $b) { return $b['xTotalPerItem'] - $a['xTotalPerItem']; }); // Mendapatkan 3 data teratas $topThree = array_slice($newKelainan, 0, 3); $result = array( 'allKelainan' => $allKelainan, 'newKelainan' => $newKelainan, 'top3Kelainan' => $topThree ); $this->sys_ok($result); } function getTop3Kelainan($mgmMcuID) { $sql = "call sp_etl_top3_kelainan({$mgmMcuID});"; $qry = $this->db->query($sql, array()); $last_qry = $this->db->last_query(); if (!$qry) { // $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error, $this->db); exit; } $result = $qry->result_array(); $this->clean_mysqli_connection($this->db->conn_id); $sql = "UPDATE one_etl.mcu_top3_kelainan SET Mcu_Top3KelainanIsActive = 'N' WHERE Mcu_Top3KelainanMgm_McuID = '{$mgmMcuID}'"; $qry = $this->db->query($sql, array()); $last_qry = $this->db->last_query(); if (!$qry) { // $this->db->trans_rollback(); $this->sys_error_db("Error delete top 3 kelainan"); exit; } for ($i = 0; $i < count($result); $i++) { // { // "xTotalPerItem": "146", // "Mcu_KelainanGroupName": "Gangguan Refraksi", // "Mcu_KelainanGroupID": "3", // "Mcu_KelainanID": "0", // "Mgm_HeaderMgm_McuID": "23", // "Percentage": "80.6600", // "description": "" // } $sql = "SELECT Mcu_Top3KelainanID as id FROM one_etl.mcu_top3_kelainan WHERE Mcu_Top3KelainanMcu_KelainanGroupID = '{$result[$i]['Mcu_KelainanGroupID']}' AND Mcu_Top3KelainanMcuKelainanID = '{$result[$i]['Mcu_KelainanID']}' AND Mcu_Top3KelainanMgm_McuID = '{$result[$i]['Mgm_HeaderMgm_McuID']}' AND Mcu_Top3KelainanIsActive = 'Y'"; $qry = $this->db->query($sql, array()); $last_qry = $this->db->last_query(); if (!$qry) { // $this->db->trans_rollback(); $this->sys_error_db("Error cek top 3 kdelainan"); exit; } $cekID = $qry->result_array(); // if (count($cekID) > 0) { // } $sql = "INSERT INTO one_etl.mcu_top3_kelainan( Mcu_Top3KelainanXTotalPerItem, Mcu_Top3KelainanMcu_KelainangroupName, Mcu_Top3KelainanMcu_KelainanGroupID, Mcu_Top3KelainanMcuKelainanID, Mcu_Top3KelainanMgm_McuID, Mcu_Top3KelainanPercentage, Mcu_Top3KelainanDescription) VALUES( '{$result[$i]['xTotalPerItem']}', '{$result[$i]['Mcu_KelainanGroupName']}', '{$result[$i]['Mcu_KelainanGroupID']}', '{$result[$i]['Mcu_KelainanID']}', '{$result[$i]['Mgm_HeaderMgm_McuID']}', '{$result[$i]['Percentage']}', '{$result[$i]['description']}' ); "; $qry = $this->db->query($sql, array()); $last_qry = $this->db->last_query(); if (!$qry) { // $this->db->trans_rollback(); $this->sys_error_db("Error insert top 3 kdelainan"); exit; } } $this->sys_ok("Success"); } }