|
|
|
|
@ -11,19 +11,20 @@
|
|
|
|
|
t.project_name,
|
|
|
|
|
t.project_category,
|
|
|
|
|
t.project_status,
|
|
|
|
|
c.payment_method,
|
|
|
|
|
c.contract_id,
|
|
|
|
|
t.project_progress_status,
|
|
|
|
|
u1.nick_name AS manager_name,
|
|
|
|
|
d.dept_name,
|
|
|
|
|
CONCAT(t2.type_name, '/', t1.type_name) AS type_name,
|
|
|
|
|
<!-- 异常启动信息 -->
|
|
|
|
|
CASE WHEN t.contract_flag = '2' THEN '是' ELSE '否' END AS abnormal_startup,
|
|
|
|
|
CASE WHEN t.contract_flag = '2' THEN '无合同' ELSE NULL END AS abnormal_startup_reason,
|
|
|
|
|
<!-- 合同信息 -->
|
|
|
|
|
c.contract_date,
|
|
|
|
|
c.total_price AS contract_amount,
|
|
|
|
|
cust.customer_name,
|
|
|
|
|
u2.nick_name AS contract_manager_name,
|
|
|
|
|
<!-- 合同信息(多合同聚合) -->
|
|
|
|
|
contracts_agg.contract_date,
|
|
|
|
|
contracts_agg.contract_amount,
|
|
|
|
|
contracts_agg.customer_name,
|
|
|
|
|
contracts_agg.contract_manager_name,
|
|
|
|
|
contracts_agg.payment_method,
|
|
|
|
|
contracts_agg.warranty_period_description,
|
|
|
|
|
<!-- 预算信息 -->
|
|
|
|
|
b.budget_cost,
|
|
|
|
|
b.budget_rate,
|
|
|
|
|
@ -87,14 +88,32 @@
|
|
|
|
|
LEFT JOIN erp_project_type t2 ON t1.parent_id = t2.project_type_id
|
|
|
|
|
LEFT JOIN sys_dept d ON d.dept_id = t.dept_id
|
|
|
|
|
LEFT JOIN sys_user u1 ON u1.user_id = t.manager_id
|
|
|
|
|
<!-- 合同 + 客户 + 客户经理 -->
|
|
|
|
|
LEFT JOIN erp_contract_info c ON c.contract_id = (
|
|
|
|
|
SELECT contract_id FROM erp_project_contracts
|
|
|
|
|
WHERE project_id = t.project_id AND del_flag = '0'
|
|
|
|
|
ORDER BY sort_order ASC LIMIT 1
|
|
|
|
|
) AND c.del_flag = '0'
|
|
|
|
|
LEFT JOIN crm_customer_info cust ON c.one_customer_id = cust.customer_id AND cust.del_flag = '0'
|
|
|
|
|
LEFT JOIN sys_user u2 ON c.contract_manager_id = u2.user_id
|
|
|
|
|
<!-- 合同多条聚合子查询(多合同用换行符\n分隔) -->
|
|
|
|
|
LEFT JOIN (
|
|
|
|
|
SELECT
|
|
|
|
|
pc.project_id,
|
|
|
|
|
GROUP_CONCAT(DATE_FORMAT(c.contract_date, '%Y-%m-%d') ORDER BY pc.sort_order SEPARATOR '\n') AS contract_date,
|
|
|
|
|
GROUP_CONCAT(c.total_price ORDER BY pc.sort_order SEPARATOR '\n') AS contract_amount,
|
|
|
|
|
GROUP_CONCAT(cust.customer_name ORDER BY pc.sort_order SEPARATOR '\n') AS customer_name,
|
|
|
|
|
GROUP_CONCAT(u2.nick_name ORDER BY pc.sort_order SEPARATOR '\n') AS contract_manager_name,
|
|
|
|
|
GROUP_CONCAT(COALESCE(pm_agg.payment_desc, '-') ORDER BY pc.sort_order SEPARATOR '\n') AS payment_method,
|
|
|
|
|
GROUP_CONCAT(c.warranty_period_description ORDER BY pc.sort_order SEPARATOR '\n') AS warranty_period_description
|
|
|
|
|
FROM erp_project_contracts pc
|
|
|
|
|
LEFT JOIN erp_contract_info c ON c.contract_id = pc.contract_id AND c.del_flag = '0'
|
|
|
|
|
LEFT JOIN (
|
|
|
|
|
SELECT
|
|
|
|
|
pm.contract_id,
|
|
|
|
|
GROUP_CONCAT(CONCAT(CAST(pm.payment_percentage AS CHAR), '%', ps.payment_method) ORDER BY pm.sort_order SEPARATOR ',') AS payment_desc
|
|
|
|
|
FROM erp_contract_payment_method pm
|
|
|
|
|
JOIN base_payment_stage ps ON pm.payment_stage_id = ps.payment_stage_id
|
|
|
|
|
WHERE pm.del_flag = '0'
|
|
|
|
|
GROUP BY pm.contract_id
|
|
|
|
|
) pm_agg ON pm_agg.contract_id = pc.contract_id
|
|
|
|
|
LEFT JOIN crm_customer_info cust ON c.one_customer_id = cust.customer_id AND cust.del_flag = '0'
|
|
|
|
|
LEFT JOIN sys_user u2 ON c.contract_manager_id = u2.user_id
|
|
|
|
|
WHERE pc.del_flag = '0'
|
|
|
|
|
GROUP BY pc.project_id
|
|
|
|
|
) contracts_agg ON contracts_agg.project_id = t.project_id
|
|
|
|
|
<!-- 预算(取已审批的) -->
|
|
|
|
|
LEFT JOIN erp_budget_info b ON t.project_id = b.project_id AND b.budget_status = '3' AND b.del_flag = '0'
|
|
|
|
|
<!-- 验收(取已完成审批的) -->
|
|
|
|
|
|