You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
320 lines
12 KiB
320 lines
12 KiB
<?php
|
|
|
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
|
require_once('../conn.php');
|
|
|
|
$signDetails = new signDetails();
|
|
$method = !empty($_POST['method']) ? $_POST['method'] : '';
|
|
|
|
if ($method == 'getSingDetails') {
|
|
header("Content-Type: application/json; charset=UTF-8");
|
|
echo $signDetails->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);
|
|
}
|
|
}
|
|
|