getSingDetails(); } if ($method == 'getSingDetailsAllCount') { header("Content-Type: application/html; charset=UTF-8"); echo $signDetails->getSingDetailsAllCount(); } } class signDetails { public $count = 0; public $now_page = 1; public $end_page = 1; public $per = 10; public $system_name = ''; public $department_id = ''; public $user_id = ''; public $search = ''; public function __construct() { $this->now_page = !empty($_POST['now_page']) ? $_POST['now_page'] : 1; $this->per = !empty($_POST['per']) ? $_POST['per'] : 10; $this->system_name = !empty($_POST['system_name']) ? $_POST['system_name'] : ''; $this->department_id = !empty($_POST['department_id']) ? $_POST['department_id'] : ''; $this->user_id = !empty($_POST['user_id']) ? $_POST['user_id'] : ''; $this->search = !empty($_POST['search']) ? $_POST['search'] : ''; } public function getSingDetailsAllCount() { global $conn; global $connEkp; $system_name = $this->system_name; $department_id = $this->department_id; $user_id = $this->user_id; $search = $this->search; $all_count = 0; $wms_count = 0; $bpm_count = 0; $sql_str = " SELECT sm.system_name, fm.flow_name, f.form_key, sf.current_assigner, a.name AS user_name, d.department_id, d.depart_name AS depart_name, sf.update_date FROM flow AS f LEFT JOIN system_main as sm ON f.system_id = sm.system_id LEFT JOIN flow_main as fm ON f.flow_id = fm.flow_id LEFT JOIN ( SELECT form_key, current_assigner, IF(update_date IS NULL,create_date,update_date) AS update_date, MAX(seq) AS seq FROM subflow WHERE 1 = 1 GROUP BY form_key, current_assigner, update_date ) AS sf ON f.form_key = sf.form_key LEFT JOIN account AS a ON sf.current_assigner = a.accountid LEFT JOIN ( SELECT DISTINCT department_id, name AS depart_name FROM department ) AS d ON a.department_id = d.department_id WHERE 1 =1 AND f.flow_code != 'Z' AND sf.form_key != '' AND sf.form_key IS NOT NULL AND sf.current_assigner != '' AND sf.current_assigner IS NOT NULL "; $sql_str .= !empty($department_id) ? " AND a.department_id = :department_id " : ""; $sql_str .= !empty($user_id) ? " AND sf.current_assigner = :user_id " : ""; if (!empty($search)) { $sql_str .= " AND ( sm.system_name LIKE :search OR fm.flow_name LIKE :search OR f.form_key LIKE :search OR sf.current_assigner LIKE :search OR a.name LIKE :search OR d.department_id LIKE :search OR d.depart_name LIKE :search OR sf.update_date LIKE :search ) "; } $stmt = $conn->prepare($sql_str); !empty($department_id) ? $stmt->bindParam(':department_id', $department_id) : ''; !empty($user_id) ? $stmt->bindParam(':user_id', $user_id) : ''; !empty($search) ? $stmt->bindValue(':search', '%' . $search . '%') : ''; $stmt->execute(); $wms_count = $stmt->rowCount(); $sql_str = " SELECT '藍凌BPM' AS system_name, krt.fd_name AS flow_name, -- 流程名稱 lp.fd_id AS form_key, soe.fd_no AS current_assigner, -- 預計處理人員工編號 soe.fd_name AS user_name, -- 預計處理人名稱 '' AS department_id, soe2.fd_name AS depart_name, -- 部門 lp.fd_create_time AS update_date -- 創建時間 FROM lbpm_process AS lp LEFT JOIN km_review_template AS krt ON lp.fd_template_model_id = krt.fd_id LEFT JOIN lbpm_workitem AS lw ON lp.fd_id = lw.fd_process_id LEFT JOIN sys_org_element AS soe ON lw.fd_expected_id = soe.fd_id LEFT JOIN sys_org_element AS soe2 ON soe2.fd_id = soe.fd_parentid LEFT JOIN lbpm_history_workitem AS lhw ON lp.fd_id = lhw.fd_process_id WHERE 1=1 -- AND lw.fd_status = '20' AND lhw.fd_activity_type = 'reviewWorkitem' AND krt.fd_name != '' AND soe.fd_no != '' "; $sql_str .= !empty($department_id) ? " AND a.department_id = :department_id " : ""; $sql_str .= !empty($user_id) ? " AND sf.current_assigner = :user_id " : ""; if (!empty($search)) { $sql_str .= " AND ( krt.fd_name LIKE :search OR lp.fd_id LIKE :search OR soe.fd_no LIKE :search OR soe.fd_name LIKE :search OR soe2.fd_name LIKE :search OR lp.fd_create_time LIKE :search ) "; } $stmt = $connEkp->prepare($sql_str); !empty($department_id) ? $stmt->bindParam(':department_id', $department_id) : ''; !empty($user_id) ? $stmt->bindParam(':user_id', $user_id) : ''; !empty($search) ? $stmt->bindValue(':search', '%' . $search . '%') : ''; $stmt->execute(); $bpm_count = $stmt->rowCount(); $all_count = $wms_count + $bpm_count; if ($system_name == 'wms') return $wms_count; if ($system_name == 'bpm') return $bpm_count; return $all_count; } public function getNowPage() { return $this->now_page = !empty($_POST['now_page']) ? $_POST['now_page'] : 1; } public function getEndPage() { $count = $this->getSingDetailsAllCount(); return $this->end_page = ceil($count / $this->per); } public function getSingDetails() { global $conn; global $connEkp; $system_name = $this->system_name; $department_id = $this->department_id; $user_id = $this->user_id; $search = $this->search; $per = $this->per; $now_page = $this->now_page; $limit_start = ($now_page - 1) * $per; $data = []; $wms_data = []; $bpm_data = []; $sql_str = " SELECT sm.system_name, fm.flow_name, f.form_key, sf.current_assigner, a.name AS user_name, d.department_id, d.depart_name AS depart_name, sf.update_date, DATEDIFF(NOW(),sf.update_date) AS diff_days FROM flow AS f LEFT JOIN system_main as sm ON f.system_id = sm.system_id LEFT JOIN flow_main as fm ON f.flow_id = fm.flow_id LEFT JOIN ( SELECT form_key, current_assigner, IF(update_date IS NULL,create_date,update_date) AS update_date, MAX(seq) AS seq FROM subflow WHERE 1 = 1 GROUP BY form_key, current_assigner, update_date ) AS sf ON f.form_key = sf.form_key LEFT JOIN account AS a ON sf.current_assigner = a.accountid LEFT JOIN ( SELECT DISTINCT department_id, name AS depart_name FROM department ) AS d ON a.department_id = d.department_id WHERE 1 =1 AND f.flow_code != 'Z' AND sf.form_key != '' AND sf.form_key IS NOT NULL AND sf.current_assigner != '' AND sf.current_assigner IS NOT NULL "; $sql_str .= !empty($department_id) ? " AND a.department_id = :department_id " : ""; $sql_str .= !empty($user_id) ? " AND sf.current_assigner = :user_id " : ""; if (!empty($search)) { $sql_str .= " AND ( sm.system_name LIKE :search OR fm.flow_name LIKE :search OR f.form_key LIKE :search OR sf.current_assigner LIKE :search OR a.name LIKE :search OR d.department_id LIKE :search OR d.depart_name LIKE :search OR sf.update_date LIKE :search ) "; } $sql_str .= " LIMIT :per OFFSET :limit_start"; $stmt = $conn->prepare($sql_str); !empty($department_id) ? $stmt->bindParam(':department_id', $department_id) : ''; !empty($user_id) ? $stmt->bindParam(':user_id', $user_id) : ''; $stmt->bindParam(':limit_start', $limit_start, PDO::PARAM_INT); $stmt->bindParam(':per', $per, PDO::PARAM_INT); !empty($search) ? $stmt->bindValue(':search', '%' . $search . '%') : ''; $stmt->execute(); $wms_data = $stmt->fetchAll(PDO::FETCH_ASSOC); $sql_str = " SELECT '藍凌BPM' AS system_name, krt.fd_name AS flow_name, -- 流程名稱 lp.fd_id AS form_key, soe.fd_no AS current_assigner, -- 預計處理人員工編號 soe.fd_name AS user_name, -- 預計處理人名稱 '' AS department_id, soe2.fd_name AS depart_name, -- 部門 SUBSTR(lp.fd_create_time,1,19) AS update_date, -- 創建時間 DATEDIFF(NOW(),lp.fd_create_time) AS diff_days FROM lbpm_process AS lp LEFT JOIN km_review_template AS krt ON lp.fd_template_model_id = krt.fd_id LEFT JOIN lbpm_workitem AS lw ON lp.fd_id = lw.fd_process_id LEFT JOIN sys_org_element AS soe ON lw.fd_expected_id = soe.fd_id LEFT JOIN sys_org_element AS soe2 ON soe2.fd_id = soe.fd_parentid LEFT JOIN lbpm_history_workitem AS lhw ON lp.fd_id = lhw.fd_process_id WHERE 1=1 -- AND lw.fd_status = '20' AND lhw.fd_activity_type = 'reviewWorkitem' AND krt.fd_name != '' AND soe.fd_no != '' "; $sql_str .= !empty($department_id) ? " AND a.department_id = :department_id " : ""; $sql_str .= !empty($user_id) ? " AND sf.current_assigner = :user_id " : ""; if (!empty($search)) { $sql_str .= " AND ( krt.fd_name LIKE :search OR lp.fd_id LIKE :search OR soe.fd_no LIKE :search OR soe.fd_name LIKE :search OR soe2.fd_name LIKE :search OR lp.fd_create_time LIKE :search ) "; } $sql_str .= " LIMIT :per OFFSET :limit_start"; $stmt = $connEkp->prepare($sql_str); !empty($department_id) ? $stmt->bindParam(':department_id', $department_id) : ''; !empty($user_id) ? $stmt->bindParam(':user_id', $user_id) : ''; $stmt->bindParam(':limit_start', $limit_start, PDO::PARAM_INT); $stmt->bindParam(':per', $per, PDO::PARAM_INT); !empty($search) ? $stmt->bindValue(':search', '%' . $search . '%') : ''; $stmt->execute(); $bpm_data = $stmt->fetchAll(PDO::FETCH_ASSOC); $data = array_merge($wms_data, $bpm_data); if ($system_name == 'wms') return json_encode($wms_data, JSON_UNESCAPED_UNICODE); if ($system_name == 'bpm') return json_encode($bpm_data, JSON_UNESCAPED_UNICODE); return json_encode($data, JSON_UNESCAPED_UNICODE); } }