diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ProjectLedgerReportVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ProjectLedgerReportVo.java index e24ea9ff..c699cdbf 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ProjectLedgerReportVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ProjectLedgerReportVo.java @@ -36,8 +36,6 @@ public class ProjectLedgerReportVo implements Serializable { /** 项目类型ID(查询条件) */ private Long projectTypeId; - /** 合同ID */ - private Long contractId; /** 项目编号 */ @ExcelProperty({"基本信息", "项目编号"}) @@ -74,11 +72,13 @@ public class ProjectLedgerReportVo implements Serializable { /** 项目类别 */ private String projectCategory; - /** 项目状态 */ - @ExcelProperty(value = {"基本信息", "状态"}, converter = org.dromara.common.excel.convert.ExcelDictConvert.class) - @org.dromara.common.excel.annotation.ExcelDictFormat(dictType = "project_status") + /** 项目状态(内部字典状态) */ private String projectStatus; + /** 项目进度状态(手工填报) */ + @ExcelProperty(value = {"基本信息", "状态"}) + private String projectProgressStatus; + /** 预计验收时间 */ @ExcelProperty({"基本信息", "预计验收时间"}) private String expectedAcceptanceTime; @@ -99,9 +99,9 @@ public class ProjectLedgerReportVo implements Serializable { @ExcelProperty({"合同信息", "签订时间"}) private String contractDate; - /** 合同额 */ + /** 合同额(多合同时用\n分隔) */ @ExcelProperty({"合同信息", "合同额"}) - private BigDecimal contractAmount; + private String contractAmount; /** 客户经理 */ @ExcelProperty({"合同信息", "客户经理"}) @@ -111,6 +111,10 @@ public class ProjectLedgerReportVo implements Serializable { @ExcelProperty({"合同信息", "付款方式"}) private String paymentMethod; + /** 质保期描述 */ + @ExcelProperty({"合同信息", "质保期描述"}) + private String warrantyPeriodDescription; + /** 预算 */ @ExcelProperty({"预算及成本", "预算"}) private BigDecimal budgetCost; diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ProjectLedgerReportMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ProjectLedgerReportMapper.xml index a876ff0e..40e9b0cd 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ProjectLedgerReportMapper.xml +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ProjectLedgerReportMapper.xml @@ -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 + + 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'