项目周报导出功能完善

项目周报界面调整
dev
lh 2 months ago
parent 1ddb949da3
commit 7d273ddd8f

@ -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<String, Object> variables;
/**
*
*/
private RemoteFlowInstanceBizExt bizExt;
public Map<String, Object> 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;
}
}

@ -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<ErpProjectReportVo> list = erpProjectReportService.queryList(bo);
ExcelUtil.exportExcel(list, "项目周报信息", ErpProjectReportVo.class, response);
List<ErpProjectReportExportVo> list = erpProjectReportService.queryListForExport(bo);
ExcelUtil.exportExcel(list, "项目周报信息", ErpProjectReportExportVo.class, response);
}
/**

@ -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<ErpProjectReportDetailVo> list = erpProjectReportDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "项目周报明细", ErpProjectReportDetailVo.class, response);
List<ErpProjectReportDetailExportVo> list = erpProjectReportDetailService.queryListForExport(bo);
ExcelUtil.exportExcel(list, "项目周报明细", ErpProjectReportDetailExportVo.class, response);
}
/**

@ -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;
}

@ -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;
/**

@ -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;
}

@ -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;
/**

@ -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<ErpProjectReportDetailExportVo> queryListForExport(ErpProjectReportDetailBo bo);
}

@ -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<Long> ids, Boolean isValid);
List<ErpProjectReportExportVo> queryListForExport(ErpProjectReportBo bo);
}

@ -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<ErpProjectReportDetailExportVo> queryListForExport(ErpProjectReportDetailBo bo) {
// 1. 查询原始的项目周报列表假设原方法返回的是基础Vo列表
List<ErpProjectReportDetailVo> baseList = this.queryList(bo); // 调用原有的查询逻辑
// 2. 转换为包含项目信息的导出Vo列表并填充项目详情
List<ErpProjectReportDetailExportVo> 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;
}
}

@ -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<ErpProjectReportExportVo> queryListForExport(ErpProjectReportBo bo) {
// 1. 查询原始的项目周报列表假设原方法返回的是基础Vo列表
List<ErpProjectReportVo> baseList = this.queryList(bo); // 调用原有的查询逻辑
// 2. 转换为包含项目信息的导出Vo列表并填充项目详情
List<ErpProjectReportExportVo> 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;
}
}

Loading…
Cancel
Save