From 7d273ddd8ffc1eeb7a5cd989890ba7874628037d Mon Sep 17 00:00:00 2001 From: lh Date: Wed, 24 Dec 2025 10:28:35 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=91=A8=E6=8A=A5=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84=20=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=91=A8=E6=8A=A5=E7=95=8C=E9=9D=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/crm/domain/bo/CrmFlightBookingBo.java | 34 ++++++++ .../ErpProjectReportController.java | 5 +- .../ErpProjectReportDetailController.java | 7 +- .../vo/ErpProjectReportDetailExportVo.java | 79 ++++++++++++++++++ .../domain/vo/ErpProjectReportDetailVo.java | 10 +-- .../domain/vo/ErpProjectReportExportVo.java | 80 +++++++++++++++++++ .../oa/erp/domain/vo/ErpProjectReportVo.java | 10 +-- .../IErpProjectReportDetailService.java | 5 +- .../erp/service/IErpProjectReportService.java | 3 + .../ErpProjectReportDetailServiceImpl.java | 75 +++++++++++++---- .../impl/ErpProjectReportServiceImpl.java | 56 ++++++++++++- 11 files changed, 329 insertions(+), 35 deletions(-) create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailExportVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportExportVo.java diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/bo/CrmFlightBookingBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/bo/CrmFlightBookingBo.java index 20f99e52..24c00341 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/bo/CrmFlightBookingBo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/bo/CrmFlightBookingBo.java @@ -1,5 +1,6 @@ package org.dromara.oa.crm.domain.bo; +import cn.hutool.core.util.ObjectUtil; import org.dromara.oa.crm.domain.CrmFlightBooking; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -9,7 +10,12 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; /** * 机票预订业务对象 crm_flight_booking @@ -94,5 +100,33 @@ public class CrmFlightBookingBo extends BaseEntity { */ private String remark; + /** + * 办理人(可不填 用于覆盖当前节点办理人) + */ + private String handler; + /** + * 流程变量,前端会提交一个元素{'entity': {业务详情数据对象}} + */ + private Map variables; + + /** + * 流程业务扩展信息 + */ + private RemoteFlowInstanceBizExt bizExt; + + public Map getVariables() { + if (variables == null) { + return new HashMap<>(16); + } + variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue())); + return variables; + } + + public RemoteFlowInstanceBizExt getBizExt() { + if (ObjectUtil.isNull(bizExt)) { + bizExt = new RemoteFlowInstanceBizExt(); + } + return bizExt; + } } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportController.java index b3c05a9c..226373f9 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportController.java @@ -16,6 +16,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportExportVo; import org.dromara.oa.erp.domain.vo.ErpProjectReportVo; import org.dromara.oa.erp.service.IErpProjectReportService; import org.springframework.validation.annotation.Validated; @@ -54,8 +55,8 @@ public class ErpProjectReportController extends BaseController { @Log(title = "项目周报信息", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ErpProjectReportBo bo, HttpServletResponse response) { - List list = erpProjectReportService.queryList(bo); - ExcelUtil.exportExcel(list, "项目周报信息", ErpProjectReportVo.class, response); + List list = erpProjectReportService.queryListForExport(bo); + ExcelUtil.exportExcel(list, "项目周报信息", ErpProjectReportExportVo.class, response); } /** diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportDetailController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportDetailController.java index 6f6cb035..4697eed6 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportDetailController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportDetailController.java @@ -15,11 +15,10 @@ 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.common.web.core.BaseController; -import org.dromara.oa.erp.domain.bo.ErpContractInfoBo; import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; import org.dromara.oa.erp.domain.bo.ErpProjectReportDetailBo; import org.dromara.oa.erp.domain.bo.ProjectReportAndDetailWrapperBo; -import org.dromara.oa.erp.domain.vo.ErpContractInfoVo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailExportVo; import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; import org.dromara.oa.erp.service.IErpProjectReportDetailService; import org.springframework.validation.annotation.Validated; @@ -58,8 +57,8 @@ public class ErpProjectReportDetailController extends BaseController { @Log(title = "项目周报明细", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ErpProjectReportDetailBo bo, HttpServletResponse response) { - List list = erpProjectReportDetailService.queryList(bo); - ExcelUtil.exportExcel(list, "项目周报明细", ErpProjectReportDetailVo.class, response); + List list = erpProjectReportDetailService.queryListForExport(bo); + ExcelUtil.exportExcel(list, "项目周报明细", ErpProjectReportDetailExportVo.class, response); } /** diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailExportVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailExportVo.java new file mode 100644 index 00000000..99d5a61f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailExportVo.java @@ -0,0 +1,79 @@ +package org.dromara.oa.erp.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpProjectReportExportVo.class) +public class ErpProjectReportDetailExportVo extends ErpProjectReportDetailVo implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 项目编号 + */ + @ExcelProperty(value = "项目编号") + private String projectCode; + + /** + * 有无合同(1有 2无) + */ + @ExcelProperty(value = "有无合同", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "contract_flag") + private String contractFlag; + + /** + * 业务方向(1智能轮胎 2轮胎工厂 3快递物流 4锂电 5工业软件 6智能制造 7新行业及零售) + */ + @ExcelProperty(value = "业务方向", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "business_direction") + private String businessDirection; + + /** + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投) + */ + @ExcelProperty(value = "项目类别", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "project_category") + private String projectCategory; + + /** + * 付款方式 + */ + @ExcelProperty(value = "付款方式") + private String paymentMethod; + + /** + * 金额 + */ + @ExcelProperty(value = "金额") + private BigDecimal amount; + + /** + * 项目状态(1暂存 2审批中 3可用) + */ + @ExcelProperty(value = "项目状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "project_status") + private String projectStatus; + + /** + * 项目类型名称 + */ + @ExcelProperty(value = "项目类型名称") + private String typeName; + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailVo.java index 6cf43cd3..8ca525b9 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailVo.java @@ -38,13 +38,13 @@ public class ErpProjectReportDetailVo extends BaseEntity implements Serializable /** * 项目周报ID */ - @ExcelProperty(value = "项目周报ID") +// @ExcelProperty(value = "项目周报ID") private Long reportId; /** * 项目ID */ - @ExcelProperty(value = "项目ID") +// @ExcelProperty(value = "项目ID") private Long projectId; /** * 部门名称 @@ -134,7 +134,7 @@ public class ErpProjectReportDetailVo extends BaseEntity implements Serializable /** * 周报状态(1暂存 2审批中 3可用) */ - @ExcelProperty(value = "周报状态(1暂存 2审批中 3可用)", converter = ExcelDictConvert.class) + @ExcelProperty(value = "周报状态", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "1=暂存,2=审批中,3=可用") private String projectReportStatus; @@ -153,13 +153,13 @@ public class ErpProjectReportDetailVo extends BaseEntity implements Serializable /** * 项目阶段(预留) */ - @ExcelProperty(value = "项目阶段(预留)") + @ExcelProperty(value = "项目阶段") private String projectPhases; /** * 合同ID(预留) */ - @ExcelProperty(value = "合同ID(预留)") + @ExcelProperty(value = "合同ID") private Long contractId; /** diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportExportVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportExportVo.java new file mode 100644 index 00000000..fc4b2361 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportExportVo.java @@ -0,0 +1,80 @@ +package org.dromara.oa.erp.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.oa.erp.domain.ErpProjectInfo; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpProjectReportExportVo.class) +public class ErpProjectReportExportVo extends ErpProjectReportVo implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 项目编号 + */ + @ExcelProperty(value = "项目编号") + private String projectCode; + + /** + * 有无合同(1有 2无) + */ + @ExcelProperty(value = "有无合同", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "contract_flag") + private String contractFlag; + + /** + * 业务方向(1智能轮胎 2轮胎工厂 3快递物流 4锂电 5工业软件 6智能制造 7新行业及零售) + */ + @ExcelProperty(value = "业务方向", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "business_direction") + private String businessDirection; + + /** + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投) + */ + @ExcelProperty(value = "项目类别", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "project_category") + private String projectCategory; + + /** + * 付款方式 + */ + @ExcelProperty(value = "付款方式") + private String paymentMethod; + + /** + * 金额 + */ + @ExcelProperty(value = "金额") + private BigDecimal amount; + + /** + * 项目状态(1暂存 2审批中 3可用) + */ + @ExcelProperty(value = "项目状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "project_status") + private String projectStatus; + + /** + * 项目类型名称 + */ + @ExcelProperty(value = "项目类型名称") + private String typeName; + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportVo.java index e3bd8966..1284e3d3 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportVo.java @@ -118,8 +118,8 @@ public class ErpProjectReportVo extends BaseEntity implements Serializable { /** * 附件ID(预留) */ - @ExcelProperty(value = "附件ID", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "预=留") +// @ExcelProperty(value = "附件ID", converter = ExcelDictConvert.class) +// @ExcelDictFormat(readConverterExp = "预=留") private String ossId; /** @@ -130,9 +130,9 @@ public class ErpProjectReportVo extends BaseEntity implements Serializable { /** * 激活标识(1是 0否) - */ - @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "1=是,0=否") +// */ +// @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) +// @ExcelDictFormat(readConverterExp = "1=是,0=否") private String activeFlag; /** diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportDetailService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportDetailService.java index 38fc5291..c366f541 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportDetailService.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportDetailService.java @@ -2,11 +2,9 @@ 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.bo.ErpContractInfoBo; import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; import org.dromara.oa.erp.domain.bo.ErpProjectReportDetailBo; -import org.dromara.oa.erp.domain.bo.ProjectReportAndDetailWrapperBo; -import org.dromara.oa.erp.domain.vo.ErpContractInfoVo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailExportVo; import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; import java.util.Collection; @@ -77,4 +75,5 @@ public interface IErpProjectReportDetailService { */ ErpProjectReportDetailVo projectReportSubmitAndFlowStart(ErpProjectReportBo projectReport, ErpProjectReportDetailBo projectDetailReport); + List queryListForExport(ErpProjectReportDetailBo bo); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportService.java index 9d797fe3..daa6e46f 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportService.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportService.java @@ -3,6 +3,7 @@ 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.bo.ErpProjectReportBo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportExportVo; import org.dromara.oa.erp.domain.vo.ErpProjectReportVo; import java.util.Collection; @@ -65,4 +66,6 @@ public interface IErpProjectReportService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List queryListForExport(ErpProjectReportBo bo); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportDetailServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportDetailServiceImpl.java index 0be440d2..91f2a820 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportDetailServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportDetailServiceImpl.java @@ -8,7 +8,6 @@ import lombok.extern.slf4j.Slf4j; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; -import org.apache.seata.spring.annotation.GlobalTransactional; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.enums.OAStatusEnum; import org.dromara.common.core.exception.ServiceException; @@ -17,32 +16,22 @@ 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.common.tenant.helper.TenantHelper; -import org.dromara.oa.erp.domain.ErpContractInfo; -import org.dromara.oa.erp.domain.ErpProjectReport; import org.dromara.oa.erp.domain.ErpProjectReportDetail; -import org.dromara.oa.erp.domain.bo.ErpContractInfoBo; import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; import org.dromara.oa.erp.domain.bo.ErpProjectReportDetailBo; -import org.dromara.oa.erp.domain.bo.ProjectReportAndDetailWrapperBo; -import org.dromara.oa.erp.domain.vo.ErpContractInfoVo; -import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; -import org.dromara.oa.erp.domain.vo.ErpProjectReportVo; +import org.dromara.oa.erp.domain.vo.*; import org.dromara.oa.erp.mapper.ErpProjectReportDetailMapper; -import org.dromara.oa.erp.mapper.ErpProjectReportMapper; +import org.dromara.oa.erp.service.IErpProjectInfoService; import org.dromara.oa.erp.service.IErpProjectReportDetailService; import org.dromara.oa.erp.service.IErpProjectReportService; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.event.ProcessEvent; -import org.redisson.api.RedissonClient; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; /** * 项目周报明细Service业务层处理 @@ -57,6 +46,8 @@ public class ErpProjectReportDetailServiceImpl implements IErpProjectReportDetai private final IErpProjectReportService erpProjectReportService; + private final IErpProjectInfoService projectInfoService; + private final ErpProjectReportDetailMapper baseMapper; @@ -258,4 +249,60 @@ public class ErpProjectReportDetailServiceImpl implements IErpProjectReportDetai baseMapper.updateById(projectReportDetail); }); } + /** + * 查询项目周报列表(用于导出,包含项目信息) + * 可以直接在原有的 queryList 方法中增加逻辑,或创建一个新方法如 queryExportList + */ + @Override + public List queryListForExport(ErpProjectReportDetailBo bo) { + // 1. 查询原始的项目周报列表(假设原方法返回的是基础Vo列表) + List baseList = this.queryList(bo); // 调用原有的查询逻辑 + + // 2. 转换为包含项目信息的导出Vo列表,并填充项目详情 + List exportList = new ArrayList<>(); + for (ErpProjectReportDetailVo baseVo : baseList) { + // 使用 MapstructUtils 进行对象转换(根据你已有的工具类) + ErpProjectReportDetailExportVo exportVo = new ErpProjectReportDetailExportVo(); + exportVo.setProjectId(baseVo.getProjectId()); + exportVo.setMilestonePlan(baseVo.getMilestonePlan()); + exportVo.setInformationNote(baseVo.getInformationNote()); + exportVo.setOssId(baseVo.getOssId()); + exportVo.setRemark(baseVo.getRemark()); + exportVo.setFillTime(baseVo.getFillTime()); + exportVo.setCurrentWorkWeek(baseVo.getCurrentWorkWeek()); + exportVo.setSecondaryPhase(baseVo.getSecondaryPhase()); + exportVo.setTasksCompleted(baseVo.getTasksCompleted()); + exportVo.setNextPlan(baseVo.getNextPlan()); + exportVo.setRiskResolution(baseVo.getRiskResolution()); + exportVo.setPlannedCompletionRate(baseVo.getPlannedCompletionRate()); + exportVo.setScheduleStatus(baseVo.getScheduleStatus()); + exportVo.setProjectReportStatus(baseVo.getProjectReportStatus()); + exportVo.setProjectStatus(baseVo.getProjectReportStatus()); + exportVo.setFlowStatus(baseVo.getFlowStatus()); + exportVo.setContractId(baseVo.getContractId()); + // 3. 关键:根据项目ID查询项目详细信息 + if (exportVo.getProjectId() != null) { + ErpProjectInfoVo projectInfoVo = projectInfoService.queryById(exportVo.getProjectId()); + if (projectInfoVo != null) { + // 将项目信息字段注入到导出Vo中 + exportVo.setProjectName(projectInfoVo.getProjectName()); + exportVo.setProjectCode(projectInfoVo.getProjectCode()); + exportVo.setContractFlag(projectInfoVo.getContractFlag()); + exportVo.setBusinessDirection(projectInfoVo.getBusinessDirection()); + exportVo.setProjectCategory(projectInfoVo.getProjectCategory()); + exportVo.setPaymentMethod(projectInfoVo.getPaymentMethod()); + exportVo.setAmount(projectInfoVo.getAmount()); + exportVo.setProjectStatus(projectInfoVo.getProjectStatus()); +// exportVo.setDeptName(baseVo.getDeptName()); +// exportVo.setManagerName(baseVo.getManagerName()); +// exportVo.setDeputyName(baseVo.getDeputyName()); +// exportVo.setChargeName(baseVo.getChargeName()); + // typeName 可能需要从其他关联表获取,这里假设 projectInfoVo 中已包含 + exportVo.setTypeName(projectInfoVo.getTypeName()); + } + } + exportList.add(exportVo); + } + return exportList; + } } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportServiceImpl.java index 963d4bfa..59e14a63 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportServiceImpl.java @@ -8,18 +8,20 @@ import org.dromara.common.core.utils.MapstructUtils; 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.ErpProjectContracts; import org.dromara.oa.erp.domain.ErpProjectReport; import org.dromara.oa.erp.domain.ErpProjectReportDetail; import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; +import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportExportVo; import org.dromara.oa.erp.domain.vo.ErpProjectReportVo; import org.dromara.oa.erp.mapper.ErpProjectReportDetailMapper; import org.dromara.oa.erp.mapper.ErpProjectReportMapper; -import org.dromara.oa.erp.service.IErpProjectReportDetailService; +import org.dromara.oa.erp.service.IErpProjectInfoService; import org.dromara.oa.erp.service.IErpProjectReportService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -38,6 +40,8 @@ public class ErpProjectReportServiceImpl implements IErpProjectReportService { private final ErpProjectReportDetailMapper erpProjectReportDetailMapper; + private final IErpProjectInfoService projectInfoService; + /** * 查询项目周报信息 @@ -164,4 +168,52 @@ public class ErpProjectReportServiceImpl implements IErpProjectReportService { boolean pd = erpProjectReportDetailMapper.delete(wrapper) > 0; return p && pd; } + /** + * 查询项目周报列表(用于导出,包含项目信息) + * 可以直接在原有的 queryList 方法中增加逻辑,或创建一个新方法如 queryExportList + */ + @Override + public List queryListForExport(ErpProjectReportBo bo) { + // 1. 查询原始的项目周报列表(假设原方法返回的是基础Vo列表) + List baseList = this.queryList(bo); // 调用原有的查询逻辑 + + // 2. 转换为包含项目信息的导出Vo列表,并填充项目详情 + List exportList = new ArrayList<>(); + for (ErpProjectReportVo baseVo : baseList) { + // 使用 MapstructUtils 进行对象转换(根据你已有的工具类) + ErpProjectReportExportVo exportVo = new ErpProjectReportExportVo(); + // 请务必确保下面的每个setter方法在 ErpProjectReportVo/ErpProjectReportExportVo 中都存在 + exportVo.setProjectId(baseVo.getProjectId()); + exportVo.setProjectCode(baseVo.getProjectCode()); + exportVo.setProjectName(baseVo.getProjectName()); + exportVo.setDeptName(baseVo.getDeptName()); + exportVo.setManagerName(baseVo.getManagerName()); + exportVo.setDeputyName(baseVo.getDeputyName()); + exportVo.setMilestonePlan(baseVo.getMilestonePlan()); + exportVo.setChargeName(baseVo.getChargeName()); + exportVo.setInformationNote(baseVo.getInformationNote()); + exportVo.setOssId(baseVo.getOssId()); + exportVo.setRemark(baseVo.getRemark()); + + // 3. 关键:根据项目ID查询项目详细信息 + if (exportVo.getProjectId() != null) { + ErpProjectInfoVo projectInfoVo = projectInfoService.queryById(exportVo.getProjectId()); + if (projectInfoVo != null) { + // 将项目信息字段注入到导出Vo中 + exportVo.setProjectName(projectInfoVo.getProjectName()); + exportVo.setProjectCode(projectInfoVo.getProjectCode()); + exportVo.setContractFlag(projectInfoVo.getContractFlag()); + exportVo.setBusinessDirection(projectInfoVo.getBusinessDirection()); + exportVo.setProjectCategory(projectInfoVo.getProjectCategory()); + exportVo.setPaymentMethod(projectInfoVo.getPaymentMethod()); + exportVo.setAmount(projectInfoVo.getAmount()); + exportVo.setProjectStatus(projectInfoVo.getProjectStatus()); + // typeName 可能需要从其他关联表获取,这里假设 projectInfoVo 中已包含 + exportVo.setTypeName(projectInfoVo.getTypeName()); + } + } + exportList.add(exportVo); + } + return exportList; + } }