Dedup group result details

This commit is contained in:
sas.fajri
2026-05-25 11:06:42 +07:00
parent 7007e8d9cf
commit 34b9f3fac2
3 changed files with 474 additions and 60 deletions

View File

@@ -1202,12 +1202,214 @@ class Resultentry extends MY_Controller
$this->sys_error_db("worklist count", $this->db_onedev);
exit();
}
//echo $this->db_onedev->last_query();
return true;
}
function saveresult()
{
//echo $this->db_onedev->last_query();
return true;
}
function get_group_result_by_orderdetail($orderdetail_id)
{
$first_row = [];
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
FROM t_orderheader_group_result_details
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
return false;
}
$row_dt_group = $query->result_array();
if (count($row_dt_group) > 0) {
$first_row = $row_dt_group[0];
}
$sql = "SELECT T_OrderDetailT_OrderHeaderID, T_OrderDetailT_TestID
FROM t_orderdetail
WHERE T_OrderDetailID = ? AND T_OrderDetailIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
if (count($rows) <= 0) {
return [];
}
$orderheader_id = $rows[0]['T_OrderDetailT_OrderHeaderID'];
$test_id = $rows[0]['T_OrderDetailT_TestID'];
$sql = "SELECT
gr.Group_ResultID,
gr.Group_ResultName,
gr.Group_ResultFlagPerTest
FROM group_resultdetail grd
JOIN group_result gr
ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
AND gr.Group_ResultIsActive = 'Y'
WHERE
grd.Group_ResultDetailT_TestID = ? AND
grd.Group_ResultDetailIsActive = 'Y'
ORDER BY gr.Group_ResultID ASC
LIMIT 1";
$query = $this->db_onedev->query($sql, [$test_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
if (count($rows) <= 0) {
return [];
}
$target_group_result_id = $rows[0]['Group_ResultID'];
$target_group_result_name = $rows[0]['Group_ResultName'];
$target_group_flag_per_test = isset($rows[0]['Group_ResultFlagPerTest']) ? $rows[0]['Group_ResultFlagPerTest'] : 'Y';
$target_group_test_id = $target_group_flag_per_test === 'Y' ? intval($test_id) : 0;
$sql = "SELECT
T_OrderHeaderGroupResultID,
T_OrderHeaderGroupResultDetails
FROM t_orderheader_group_result
WHERE
T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultGroup_ResultID = ? AND
T_OrderHeaderGroupResultT_TestID = ? AND
T_OrderHeaderGroupResultIsActive = 'Y'
ORDER BY T_OrderHeaderGroupResultID ASC
LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderheader_id, $target_group_result_id, $target_group_test_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
$group_result_id = 0;
$group_result_details = '';
if (count($rows) > 0) {
$group_result_id = $rows[0]['T_OrderHeaderGroupResultID'];
$group_result_details = trim((string)$rows[0]['T_OrderHeaderGroupResultDetails']);
} else {
$sql = "INSERT INTO t_orderheader_group_result (
T_OrderHeaderGroupResultT_OrderHeaderID,
T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultGroup_ResultName,
T_OrderHeaderGroupResultT_TestID,
T_OrderHeaderGroupResultDetails,
T_OrderHeaderGroupResultCreated
) VALUES (?, ?, ?, ?, ?, NOW())";
$query = $this->db_onedev->query($sql, [
$orderheader_id,
$target_group_result_id,
$target_group_result_name,
$target_group_test_id,
(string)$orderdetail_id
]);
if (!$query) {
return false;
}
$group_result_id = intval($this->db_onedev->insert_id());
$group_result_details = (string)$orderdetail_id;
}
$details_list = $group_result_details === '' ? [] : explode(',', str_replace(' ', '', $group_result_details));
if (!in_array((string)$orderdetail_id, $details_list, true)) {
$details_list[] = (string)$orderdetail_id;
$new_details = implode(',', $details_list);
$sql = "UPDATE t_orderheader_group_result
SET T_OrderHeaderGroupResultDetails = ?
WHERE T_OrderHeaderGroupResultID = ?";
$query = $this->db_onedev->query($sql, [$new_details, $group_result_id]);
if (!$query) {
return false;
}
}
$sql = "INSERT INTO t_orderheader_group_result_details(
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID,
T_OrderHeaderGroupResultDetailsT_OrderDetailID,
T_OrderHeaderGroupResultDetailsIsActive,
T_OrderHeaderGroupResultDetailsCreated,
T_OrderHeaderGroupResultDetailsLastUpdated
)
SELECT ?, ?, ?, 'Y', NOW(), '0000-00-00 00:00:00'
FROM dual
WHERE NOT EXISTS(
SELECT 1
FROM t_orderheader_group_result_details
WHERE
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
)";
$query = $this->db_onedev->query($sql, [
$group_result_id,
$orderheader_id,
$orderdetail_id,
$group_result_id,
$orderheader_id,
$orderdetail_id
]);
if (!$query) {
return false;
}
$sql = "UPDATE t_orderheader_group_result_details
SET
T_OrderHeaderGroupResultDetailsIsActive = 'N',
T_OrderHeaderGroupResultDetailsLastUpdated = NOW()
WHERE
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' AND
T_OrderHeaderGroupResultDetailsID <> (
SELECT keep_id FROM (
SELECT MIN(T_OrderHeaderGroupResultDetailsID) AS keep_id
FROM t_orderheader_group_result_details
WHERE
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
) dedup
)";
$query = $this->db_onedev->query($sql, [
$group_result_id,
$orderheader_id,
$orderdetail_id,
$group_result_id,
$orderheader_id,
$orderdetail_id
]);
if (!$query) {
return false;
}
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
FROM t_orderheader_group_result_details
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
return false;
}
$row_dt_group = $query->result_array();
if (count($row_dt_group) > 0) {
$first_row = $row_dt_group[0];
}
return $first_row;
}
function saveresult()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
@@ -1638,29 +1840,18 @@ class Resultentry extends MY_Controller
exit;
}
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
FROM t_orderheader_group_result_details
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
$this->sys_error_db("single verification select group result", $this->db_onedev);
exit();
}
$row_dt_group = $query->result_array();
//echo $this->db_onedev->last_query();
if (count($row_dt_group) > 0) {
$ohid = $row_dt_group[0]["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
$gid = $row_dt_group[0]["T_OrderHeaderGroupResultGroup_ResultID"];
$this->verification_by_group($ohid, $gid);
} else {
$this->sys_error_db("group result tidak ditemukan", $this->db_onedev);
$row_dt_group = $this->get_group_result_by_orderdetail($orderdetail_id);
if ($row_dt_group === false) {
$this->sys_error_db("single verification select group result", $this->db_onedev);
exit();
}
if (count($row_dt_group) > 0) {
$ohid = $row_dt_group["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
$gid = $row_dt_group["T_OrderHeaderGroupResultGroup_ResultID"];
$this->verification_by_group($ohid, $gid);
} else {
$this->sys_error_db("group result tidak ditemukan", $this->db_onedev);
exit();
}
}

View File

@@ -4781,6 +4781,38 @@ class Resultentry extends MY_Controller
return false;
}
$sql = "UPDATE t_orderheader_group_result_details
SET
T_OrderHeaderGroupResultDetailsIsActive = 'N',
T_OrderHeaderGroupResultDetailsLastUpdated = NOW()
WHERE
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' AND
T_OrderHeaderGroupResultDetailsID <> (
SELECT keep_id FROM (
SELECT MIN(T_OrderHeaderGroupResultDetailsID) AS keep_id
FROM t_orderheader_group_result_details
WHERE
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
) dedup
)";
$query = $this->db_onedev->query($sql, [
$group_result_id,
$orderheader_id,
$orderdetail_id,
$group_result_id,
$orderheader_id,
$orderdetail_id
]);
if (!$query) {
return false;
}
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
FROM t_orderheader_group_result_details

View File

@@ -1059,29 +1059,18 @@ class Resultentry extends MY_Controller
exit;
}
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
FROM t_orderheader_group_result_details
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
$this->sys_error_db("single verification select group result", $this->db_onedev);
exit();
}
$row_dt_group = $query->result_array();
//echo $this->db_onedev->last_query();
if (count($row_dt_group) > 0) {
$ohid = $row_dt_group[0]["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
$gid = $row_dt_group[0]["T_OrderHeaderGroupResultGroup_ResultID"];
$this->verification_by_group($ohid, $gid);
} else {
$this->sys_error_db("group result tidak ditemukan", $this->db_onedev);
$row_dt_group = $this->get_group_result_by_orderdetail($orderdetail_id);
if ($row_dt_group === false) {
$this->sys_error_db("single verification select group result", $this->db_onedev);
exit();
}
if (count($row_dt_group) > 0) {
$ohid = $row_dt_group["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
$gid = $row_dt_group["T_OrderHeaderGroupResultGroup_ResultID"];
$this->verification_by_group($ohid, $gid);
} else {
$this->sys_error_db("group result tidak ditemukan", $this->db_onedev);
exit();
}
}
@@ -1410,14 +1399,216 @@ class Resultentry extends MY_Controller
$this->sys_error_db("worklist count", $this->db_onedev);
exit();
}
//echo $this->db_onedev->last_query();
return true;
}
function deletetrx()
//echo $this->db_onedev->last_query();
return true;
}
function get_group_result_by_orderdetail($orderdetail_id)
{
$first_row = [];
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
FROM t_orderheader_group_result_details
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
return false;
}
$row_dt_group = $query->result_array();
if (count($row_dt_group) > 0) {
$first_row = $row_dt_group[0];
}
$sql = "SELECT T_OrderDetailT_OrderHeaderID, T_OrderDetailT_TestID
FROM t_orderdetail
WHERE T_OrderDetailID = ? AND T_OrderDetailIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
if (count($rows) <= 0) {
return [];
}
$orderheader_id = $rows[0]['T_OrderDetailT_OrderHeaderID'];
$test_id = $rows[0]['T_OrderDetailT_TestID'];
$sql = "SELECT
gr.Group_ResultID,
gr.Group_ResultName,
gr.Group_ResultFlagPerTest
FROM group_resultdetail grd
JOIN group_result gr
ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
AND gr.Group_ResultIsActive = 'Y'
WHERE
grd.Group_ResultDetailT_TestID = ? AND
grd.Group_ResultDetailIsActive = 'Y'
ORDER BY gr.Group_ResultID ASC
LIMIT 1";
$query = $this->db_onedev->query($sql, [$test_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
if (count($rows) <= 0) {
return [];
}
$target_group_result_id = $rows[0]['Group_ResultID'];
$target_group_result_name = $rows[0]['Group_ResultName'];
$target_group_flag_per_test = isset($rows[0]['Group_ResultFlagPerTest']) ? $rows[0]['Group_ResultFlagPerTest'] : 'Y';
$target_group_test_id = $target_group_flag_per_test === 'Y' ? intval($test_id) : 0;
$sql = "SELECT
T_OrderHeaderGroupResultID,
T_OrderHeaderGroupResultDetails
FROM t_orderheader_group_result
WHERE
T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultGroup_ResultID = ? AND
T_OrderHeaderGroupResultT_TestID = ? AND
T_OrderHeaderGroupResultIsActive = 'Y'
ORDER BY T_OrderHeaderGroupResultID ASC
LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderheader_id, $target_group_result_id, $target_group_test_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
$group_result_id = 0;
$group_result_details = '';
if (count($rows) > 0) {
$group_result_id = $rows[0]['T_OrderHeaderGroupResultID'];
$group_result_details = trim((string)$rows[0]['T_OrderHeaderGroupResultDetails']);
} else {
$sql = "INSERT INTO t_orderheader_group_result (
T_OrderHeaderGroupResultT_OrderHeaderID,
T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultGroup_ResultName,
T_OrderHeaderGroupResultT_TestID,
T_OrderHeaderGroupResultDetails,
T_OrderHeaderGroupResultCreated
) VALUES (?, ?, ?, ?, ?, NOW())";
$query = $this->db_onedev->query($sql, [
$orderheader_id,
$target_group_result_id,
$target_group_result_name,
$target_group_test_id,
(string)$orderdetail_id
]);
if (!$query) {
return false;
}
$group_result_id = intval($this->db_onedev->insert_id());
$group_result_details = (string)$orderdetail_id;
}
$details_list = $group_result_details === '' ? [] : explode(',', str_replace(' ', '', $group_result_details));
if (!in_array((string)$orderdetail_id, $details_list, true)) {
$details_list[] = (string)$orderdetail_id;
$new_details = implode(',', $details_list);
$sql = "UPDATE t_orderheader_group_result
SET T_OrderHeaderGroupResultDetails = ?
WHERE T_OrderHeaderGroupResultID = ?";
$query = $this->db_onedev->query($sql, [$new_details, $group_result_id]);
if (!$query) {
return false;
}
}
$sql = "INSERT INTO t_orderheader_group_result_details(
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID,
T_OrderHeaderGroupResultDetailsT_OrderDetailID,
T_OrderHeaderGroupResultDetailsIsActive,
T_OrderHeaderGroupResultDetailsCreated,
T_OrderHeaderGroupResultDetailsLastUpdated
)
SELECT ?, ?, ?, 'Y', NOW(), '0000-00-00 00:00:00'
FROM dual
WHERE NOT EXISTS(
SELECT 1
FROM t_orderheader_group_result_details
WHERE
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
)";
$query = $this->db_onedev->query($sql, [
$group_result_id,
$orderheader_id,
$orderdetail_id,
$group_result_id,
$orderheader_id,
$orderdetail_id
]);
if (!$query) {
return false;
}
$sql = "UPDATE t_orderheader_group_result_details
SET
T_OrderHeaderGroupResultDetailsIsActive = 'N',
T_OrderHeaderGroupResultDetailsLastUpdated = NOW()
WHERE
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' AND
T_OrderHeaderGroupResultDetailsID <> (
SELECT keep_id FROM (
SELECT MIN(T_OrderHeaderGroupResultDetailsID) AS keep_id
FROM t_orderheader_group_result_details
WHERE
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
) dedup
)";
$query = $this->db_onedev->query($sql, [
$group_result_id,
$orderheader_id,
$orderdetail_id,
$group_result_id,
$orderheader_id,
$orderdetail_id
]);
if (!$query) {
return false;
}
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
FROM t_orderheader_group_result_details
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
return false;
}
$row_dt_group = $query->result_array();
if (count($row_dt_group) > 0) {
$first_row = $row_dt_group[0];
}
return $first_row;
}
function deletetrx()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");