diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ProjectLedgerReportController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ProjectLedgerReportController.java index 252c828a..eba718e8 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ProjectLedgerReportController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ProjectLedgerReportController.java @@ -6,6 +6,7 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.oa.erp.domain.vo.ProjectLedgerReportVo; import org.dromara.oa.erp.service.IProjectLedgerReportService; @@ -37,8 +38,8 @@ public class ProjectLedgerReportController { */ // @SaCheckPermission("oa:erp:projectLedgerReport:list") @GetMapping("/list") - public TableDataInfo list(ProjectLedgerReportVo bo) { - return reportService.queryProjectLedgerList(bo); + public TableDataInfo list(ProjectLedgerReportVo bo, PageQuery pageQuery) { + return reportService.queryProjectLedgerList(bo, pageQuery); } /** 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 bd05910a..93b7e24c 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 @@ -26,36 +26,40 @@ public class ProjectLedgerReportVo implements Serializable { /** 项目ID */ private Long projectId; + /** 序号 */ + @ExcelProperty({"基本信息", "序号"}) + private Integer index; + /** 合同ID */ private Long contractId; /** 项目编号 */ - @ExcelProperty(value = "项目编号") + @ExcelProperty({"基本信息", "项目编号"}) private String projectCode; /** 客户名称 */ - @ExcelProperty(value = "客户名称") + @ExcelProperty({"基本信息", "客户名称"}) private String customerName; /** 项目名称 */ - @ExcelProperty(value = "项目名称") + @ExcelProperty({"基本信息", "项目名称"}) @ColumnWidth(25) private String projectName; /** 项目经理 */ - @ExcelProperty(value = "项目经理") + @ExcelProperty({"基本信息", "项目经理"}) private String managerName; /** 部门 */ - @ExcelProperty(value = "部门") + @ExcelProperty({"基本信息", "部门"}) private String deptName; /** 项目类型 */ - @ExcelProperty(value = "项目类型") + @ExcelProperty({"基本信息", "项目类型"}) private String typeName; /** 产品数量 */ - @ExcelProperty(value = "产品数量") + @ExcelProperty({"基本信息", "产品数量"}) private BigDecimal productAmount; /** 项目阶段 */ @@ -65,160 +69,160 @@ public class ProjectLedgerReportVo implements Serializable { private String projectCategory; /** 项目状态 */ - @ExcelProperty(value = "状态", converter = org.dromara.common.excel.convert.ExcelDictConvert.class) + @ExcelProperty(value = {"基本信息", "状态"}, converter = org.dromara.common.excel.convert.ExcelDictConvert.class) @org.dromara.common.excel.annotation.ExcelDictFormat(dictType = "project_status") private String projectStatus; /** 实际验收时间 */ - @ExcelProperty(value = "实际验收时间") + @ExcelProperty({"基本信息", "实际验收时间"}) private String acceptanceDate; /** 签订时间 */ - @ExcelProperty(value = "签订时间") + @ExcelProperty({"合同信息", "签订时间"}) private String contractDate; /** 合同额 */ - @ExcelProperty(value = "合同额") + @ExcelProperty({"合同信息", "合同额"}) private BigDecimal contractAmount; /** 客户经理 */ - @ExcelProperty(value = "客户经理") + @ExcelProperty({"合同信息", "客户经理"}) private String contractManagerName; /** 付款方式 */ - @ExcelProperty(value = "付款方式") + @ExcelProperty({"合同信息", "付款方式"}) private String paymentMethod; /** 预算 */ - @ExcelProperty(value = "预算") + @ExcelProperty({"预算及成本", "预算"}) private BigDecimal budgetCost; /** 预算毛利率 */ - @ExcelProperty(value = "预算毛利率") + @ExcelProperty({"预算及成本", "预算毛利率"}) private BigDecimal budgetRate; /** 降成本后预算 */ - @ExcelProperty(value = "降成本后预算") + @ExcelProperty({"预算及成本", "将成本后预算"}) private BigDecimal reduceBudgetCost; /** 降成本后预算毛利率 */ - @ExcelProperty(value = "降成本后预算毛利率") + @ExcelProperty({"预算及成本", "降成本后预算毛利率"}) private BigDecimal reduceBudgetRate; /** 收入(合同额/1.13) */ - @ExcelProperty(value = "收入") + @ExcelProperty({"预算及成本", "收入"}) private BigDecimal revenue; /** 累计工时 */ - @ExcelProperty(value = "累计工时") + @ExcelProperty({"预算及成本", "累计工时"}) private BigDecimal totalHours; // --- 启动阶段 --- - @ExcelProperty(value = "启动计划开始时间") + @ExcelProperty({"启动", "计划开始时间"}) private String startupPlanStartTime; - @ExcelProperty(value = "启动计划结束时间") + @ExcelProperty({"启动", "计划结束时间"}) private String startupPlanEndTime; - @ExcelProperty(value = "启动实际开始时间") + @ExcelProperty({"启动", "实际开始时间"}) private String startupRealStartTime; - @ExcelProperty(value = "启动实际结束时间") + @ExcelProperty({"启动", "实际结束时间"}) private String startupRealEndTime; - @ExcelProperty(value = "启动原因说明") + @ExcelProperty({"启动", "原因说明"}) private String startupReasonsExplanation; // --- 设计阶段 --- - @ExcelProperty(value = "设计计划开始时间") + @ExcelProperty({"设计", "计划开始时间"}) private String designPlanStartTime; - @ExcelProperty(value = "设计计划结束时间") + @ExcelProperty({"设计", "计划结束时间"}) private String designPlanEndTime; - @ExcelProperty(value = "设计实际开始时间") + @ExcelProperty({"设计", "实际开始时间"}) private String designRealStartTime; - @ExcelProperty(value = "设计实际结束时间") + @ExcelProperty({"设计", "实际结束时间"}) private String designRealEndTime; - @ExcelProperty(value = "设计原因说明") + @ExcelProperty({"设计", "原因说明"}) private String designReasonsExplanation; // --- 采购阶段 --- - @ExcelProperty(value = "采购计划开始时间") + @ExcelProperty({"采购", "计划开始时间"}) private String purchasePlanStartTime; - @ExcelProperty(value = "采购计划结束时间") + @ExcelProperty({"采购", "计划结束时间"}) private String purchasePlanEndTime; - @ExcelProperty(value = "采购实际开始时间") + @ExcelProperty({"采购", "实际开始时间"}) private String purchaseRealStartTime; - @ExcelProperty(value = "采购实际结束时间") + @ExcelProperty({"采购", "实际结束时间"}) private String purchaseRealEndTime; - @ExcelProperty(value = "采购原因说明") + @ExcelProperty({"采购", "原因说明"}) private String purchaseReasonsExplanation; // --- 发货阶段 --- - @ExcelProperty(value = "发货计划开始时间") + @ExcelProperty({"发货", "计划开始时间"}) private String shipmentPlanStartTime; - @ExcelProperty(value = "发货计划结束时间") + @ExcelProperty({"发货", "计划结束时间"}) private String shipmentPlanEndTime; - @ExcelProperty(value = "发货实际开始时间") + @ExcelProperty({"发货", "实际开始时间"}) private String shipmentRealStartTime; - @ExcelProperty(value = "发货实际结束时间") + @ExcelProperty({"发货", "实际结束时间"}) private String shipmentRealEndTime; - @ExcelProperty(value = "发货原因说明") + @ExcelProperty({"发货", "原因说明"}) private String shipmentReasonsExplanation; // --- 实施阶段 --- - @ExcelProperty(value = "实施计划开始时间") + @ExcelProperty({"实施", "计划开始时间"}) private String implementPlanStartTime; - @ExcelProperty(value = "实施计划结束时间") + @ExcelProperty({"实施", "计划结束时间"}) private String implementPlanEndTime; - @ExcelProperty(value = "实施实际开始时间") + @ExcelProperty({"实施", "实际开始时间"}) private String implementRealStartTime; - @ExcelProperty(value = "实施实际结束时间") + @ExcelProperty({"实施", "实际结束时间"}) private String implementRealEndTime; - @ExcelProperty(value = "实施原因说明") + @ExcelProperty({"实施", "原因说明"}) private String implementReasonsExplanation; // --- 调试阶段 --- - @ExcelProperty(value = "调试计划开始时间") + @ExcelProperty({"调试", "计划开始时间"}) private String debugPlanStartTime; - @ExcelProperty(value = "调试计划结束时间") + @ExcelProperty({"调试", "计划结束时间"}) private String debugPlanEndTime; - @ExcelProperty(value = "调试实际开始时间") + @ExcelProperty({"调试", "实际开始时间"}) private String debugRealStartTime; - @ExcelProperty(value = "调试实际结束时间") + @ExcelProperty({"调试", "实际结束时间"}) private String debugRealEndTime; - @ExcelProperty(value = "调试原因说明") + @ExcelProperty({"调试", "原因说明"}) private String debugReasonsExplanation; // --- 试运行阶段 --- - @ExcelProperty(value = "试运行计划开始时间") + @ExcelProperty({"试运行", "计划开始时间"}) private String pilotRunPlanStartTime; - @ExcelProperty(value = "试运行计划结束时间") + @ExcelProperty({"试运行", "计划结束时间"}) private String pilotRunPlanEndTime; - @ExcelProperty(value = "试运行实际开始时间") + @ExcelProperty({"试运行", "实际开始时间"}) private String pilotRunRealStartTime; - @ExcelProperty(value = "试运行实际结束时间") + @ExcelProperty({"试运行", "实际结束时间"}) private String pilotRunRealEndTime; - @ExcelProperty(value = "试运行原因说明") + @ExcelProperty({"试运行", "原因说明"}) private String pilotRunReasonsExplanation; // --- 验收阶段 --- - @ExcelProperty(value = "验收计划开始时间") + @ExcelProperty({"验收", "计划开始时间"}) private String acceptancePlanStartTime; - @ExcelProperty(value = "验收计划结束时间") + @ExcelProperty({"验收", "计划结束时间"}) private String acceptancePlanEndTime; - @ExcelProperty(value = "验收实际开始时间") + @ExcelProperty({"验收", "实际开始时间"}) private String acceptanceRealStartTime; - @ExcelProperty(value = "验收实际结束时间") + @ExcelProperty({"验收", "实际结束时间"}) private String acceptanceRealEndTime; - @ExcelProperty(value = "验收原因说明") + @ExcelProperty({"验收", "原因说明"}) private String acceptanceReasonsExplanation; // --- 质保阶段 --- - @ExcelProperty(value = "质保计划开始时间") + @ExcelProperty({"质保", "计划开始时间"}) private String warrantyPlanStartTime; - @ExcelProperty(value = "质保计划结束时间") + @ExcelProperty({"质保", "计划结束时间"}) private String warrantyPlanEndTime; - @ExcelProperty(value = "质保实际开始时间") + @ExcelProperty({"质保", "实际开始时间"}) private String warrantyRealStartTime; - @ExcelProperty(value = "质保实际结束时间") + @ExcelProperty({"质保", "实际结束时间"}) private String warrantyRealEndTime; - @ExcelProperty(value = "质保原因说明") + @ExcelProperty({"质保", "原因说明"}) private String warrantyReasonsExplanation; /** 业务方向(查询条件用) */ diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ProjectLedgerReportMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ProjectLedgerReportMapper.java index fa2e521a..a7e9182d 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ProjectLedgerReportMapper.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ProjectLedgerReportMapper.java @@ -2,6 +2,10 @@ package org.dromara.oa.erp.mapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.dromara.oa.erp.domain.ErpProjectInfo; import org.dromara.oa.erp.domain.vo.ProjectLedgerReportVo; import java.util.List; @@ -16,10 +20,12 @@ import java.util.List; public interface ProjectLedgerReportMapper { /** - * 查询项目台账报表列表 - * - * @param bo 查询条件 - * @return 列表 + * 查询项目台账报表分页列表 */ - List selectProjectLedgerList(@Param("bo") ProjectLedgerReportVo bo); + Page selectProjectLedgerList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper wrapper); + + /** + * 查询项目台账报表列表 + */ + List selectProjectLedgerList(@Param(Constants.WRAPPER) MPJLambdaWrapper wrapper); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IProjectLedgerReportService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IProjectLedgerReportService.java index df2394a3..324f1d84 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IProjectLedgerReportService.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IProjectLedgerReportService.java @@ -1,12 +1,13 @@ package org.dromara.oa.erp.service; +import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.oa.erp.domain.vo.ProjectLedgerReportVo; import java.util.List; /** - * 项目台账报表 Service 接口 + * 项目台账报表 Service * * @author Yangk * @date 2026-03-11 @@ -14,12 +15,12 @@ import java.util.List; public interface IProjectLedgerReportService { /** - * 查询项目台账报表列表(分页) + * 获取项目台账报表列表 */ - TableDataInfo queryProjectLedgerList(ProjectLedgerReportVo bo); + TableDataInfo queryProjectLedgerList(ProjectLedgerReportVo bo, PageQuery pageQuery); /** - * 查询项目台账报表全量(导出用) + * 获取项目台账报表全量列表 */ List queryProjectLedgerAll(ProjectLedgerReportVo bo); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ProjectLedgerReportServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ProjectLedgerReportServiceImpl.java index c3657613..d76b9169 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ProjectLedgerReportServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ProjectLedgerReportServiceImpl.java @@ -1,12 +1,19 @@ package org.dromara.oa.erp.service.impl; import lombok.RequiredArgsConstructor; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.oa.erp.domain.ErpProjectInfo; import org.dromara.oa.erp.domain.vo.ProjectLedgerReportVo; import org.dromara.oa.erp.mapper.ProjectLedgerReportMapper; import org.dromara.oa.erp.service.IProjectLedgerReportService; import org.springframework.stereotype.Service; +import java.util.Arrays; import java.util.List; /** @@ -21,14 +28,43 @@ public class ProjectLedgerReportServiceImpl implements IProjectLedgerReportServi private final ProjectLedgerReportMapper reportMapper; + private MPJLambdaWrapper buildQueryWrapper(ProjectLedgerReportVo bo) { + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectInfo.class); + lqw.eq(ErpProjectInfo::getDelFlag, "0"); + lqw.ne(ErpProjectInfo::getProjectCategory, "9"); + + if (bo.getParams() != null && bo.getParams().get("projectIds") != null && StringUtils.isNotBlank(bo.getParams().get("projectIds").toString())) { + List projectIds = Arrays.asList(bo.getParams().get("projectIds").toString().split(",")); + lqw.in(ErpProjectInfo::getProjectId, projectIds); + } + + lqw.like(StringUtils.isNotBlank(bo.getProjectName()), ErpProjectInfo::getProjectName, bo.getProjectName()); + lqw.like(StringUtils.isNotBlank(bo.getProjectCode()), ErpProjectInfo::getProjectCode, bo.getProjectCode()); + lqw.eq(StringUtils.isNotBlank(bo.getBusinessDirection()), ErpProjectInfo::getBusinessDirection, bo.getBusinessDirection()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectStatus()), ErpProjectInfo::getProjectStatus, bo.getProjectStatus()); + + lqw.orderByDesc(ErpProjectInfo::getCreateTime); + return lqw; + } + @Override - public TableDataInfo queryProjectLedgerList(ProjectLedgerReportVo bo) { - List list = reportMapper.selectProjectLedgerList(bo); - return TableDataInfo.build(list); + public TableDataInfo queryProjectLedgerList(ProjectLedgerReportVo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = reportMapper.selectProjectLedgerList(pageQuery.build(), lqw); + List list = result.getRecords(); + for (int i = 0; i < list.size(); i++) { + list.get(i).setIndex((int) ((pageQuery.getPageNum() - 1) * pageQuery.getPageSize() + i + 1)); + } + return TableDataInfo.build(result); } @Override public List queryProjectLedgerAll(ProjectLedgerReportVo bo) { - return reportMapper.selectProjectLedgerList(bo); + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + List list = reportMapper.selectProjectLedgerList(lqw); + for (int i = 0; i < list.size(); i++) { + list.get(i).setIndex(i + 1); + } + return list; } } 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 1db3dd5d..b91cec78 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 @@ -6,12 +6,12 @@