'' THEN x.content_tm ELSE x.watch_tm END)/3600),2,'0'),'시간 ', // LPAD(FLOOR((SUM(CASE WHEN x.completed_at IS NOT NULL AND x.completed_at <> '' THEN x.content_tm ELSE x.watch_tm END)%3600)/60),2,'0'),'분') AS formatted_tm // FROM edu_learning_histories x JOIN edu_contents y ON x.content_id = y.content_id // WHERE y.category_code = 'CA10003' AND YEAR(x.first_viewed_at) = ? // GROUP BY x.sys_comp_code, x.member_id // ) b ON a.member_id = b.member_id AND a.sys_comp_code = b.sys_comp_code // WHERE (a.end_date IS NULL OR a.end_date = '' OR (a.end_date > '1000-01-01' AND YEAR(a.end_date) >= ?)) // AND (? = '' OR a.belong_comp = ?) // AND a.dept_name LIKE CONCAT('%', ?, '%') // AND a.name LIKE CONCAT('%', ?, '%')"; $sql_inner = "SELECT a.sys_comp_code, a.belong_comp , (SELECT code_name FROM edu_codes c WHERE c.group_code = 'CO100' AND c.code = a.belong_comp LIMIT 1) AS comp_name , a.name, a.member_id , a.dept_name , IFNULL(b.formatted_tm, '00시간 00분') AS all_tm , CASE WHEN a.member_id IN ( SELECT u2.member_id FROM edu_users u2 WHERE NOT EXISTS ( SELECT 1 FROM edu_contents c2 WHERE c2.category_code = 'CA10003' AND c2.base_year = ? AND c2.is_active = '1' AND NOT EXISTS (SELECT 1 FROM edu_learning_histories h2 WHERE h2.content_id = c2.content_id AND h2.member_id = u2.member_id AND h2.sys_comp_code = u2.sys_comp_code AND h2.completed_at IS NOT NULL AND h2.completed_at != '') ) ) THEN '수료' ELSE '미수료' END AS completion_status , fn_get_progress_rate(a.sys_comp_code, ?, a.member_id, 'CA10003', '') AS progress_rate -- 진행율 , fn_get_completion_date(a.sys_comp_code, ?, a.member_id, 'CA10003', '') AS completion_date -- 학습완료일 FROM edu_users a LEFT JOIN ( SELECT z.sys_comp_code, x.member_id, CONCAT(LPAD(FLOOR(SUM(CASE WHEN x.completed_at IS NOT NULL AND x.completed_at <> '' THEN x.content_tm ELSE x.watch_tm END)/3600),2,'0'),'시간 ', LPAD(FLOOR((SUM(CASE WHEN x.completed_at IS NOT NULL AND x.completed_at <> '' THEN x.content_tm ELSE x.watch_tm END)%3600)/60),2,'0'),'분') AS formatted_tm FROM edu_learning_histories x JOIN edu_contents y ON x.content_id = y.content_id JOIN edu_users z ON x.sys_comp_code = z.working_comp AND x.member_id = z.member_id WHERE y.category_code = 'CA10003' AND YEAR(x.first_viewed_at) = ? GROUP BY x.sys_comp_code, x.member_id ) b ON a.member_id = b.member_id AND a.sys_comp_code = b.sys_comp_code WHERE (a.end_date IS NULL OR a.end_date = '' OR (a.end_date > '1000-01-01' AND YEAR(a.end_date) >= ?)) and a.sys_comp_code = a.belong_comp AND (? = '' OR a.belong_comp = ?) AND a.dept_name LIKE CONCAT('%', ?, '%') AND a.name LIKE CONCAT('%', ?, '%')"; if ($search_comp_status === 'Y') { $sql = "SELECT * FROM ($sql_inner) t WHERE completion_status = '수료'"; } elseif ($search_comp_status === 'N') { $sql = "SELECT * FROM ($sql_inner) t WHERE completion_status = '미수료'"; } else { $sql = "SELECT * FROM ($sql_inner) t"; } $stmt = $pdo->prepare($sql); $stmt->execute([$search_year, $search_year, $search_year, $search_year, $search_year, $search_comp, $search_comp, $search_dept, $search_name]); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) { die("DB Error"); } header("Content-Type: application/vnd.ms-excel; charset=utf-8"); header("Content-Disposition: attachment; filename=legal_edu_result_" . date('Ymd') . ".xls"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Pragma: public"); echo '
'; echo '| NO | '; echo '소속법인 | '; echo '성명 | '; echo '사번 | '; echo '부서 | '; echo '학습시간 | '; echo '진도율 | '; echo '교육이수일 | '; echo '수료구분 | '; echo '
|---|---|---|---|---|---|---|---|---|
| ' . $idx++ . ' | '; echo '' . htmlspecialchars($row['comp_name'] ?? '') . ' | '; echo '' . htmlspecialchars($row['name'] ?? '') . ' | '; echo '' . htmlspecialchars($row['member_id'] ?? '') . ' | '; echo '' . htmlspecialchars($row['dept_name'] ?? '') . ' | '; echo '' . htmlspecialchars($row['all_tm'] ?? '') . ' | '; // 진행율 처리 $progress = $row['progress_rate'] ?? '0%'; $progress_value = is_numeric($progress) ? (int) $progress : (int) preg_replace('/[^0-9]/', '', $progress); echo '' . $progress_value . '% | '; echo '' . htmlspecialchars($row['completion_date'] ?? '-') . ' | '; echo '' . htmlspecialchars($row['completion_status']) . ' | '; echo '