From 3adc66dee9660cf10e40abfdf52113306c7d34f3 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 29 十一月 2024 14:41:09 +0800
Subject: [PATCH] 项目库导出之导出目标列表内容

---
 business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java |   38 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
index 08b62f6..b865b20 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
@@ -1,5 +1,7 @@
 package com.ycl.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -7,13 +9,18 @@
 import com.ycl.common.enums.business.FileTypeEnum;
 import com.ycl.common.enums.business.ImportanceTypeEnum;
 import com.ycl.common.enums.business.ProjectCategoryEnum;
+import com.ycl.common.exception.base.BaseException;
 import com.ycl.common.utils.CopyUtils;
 import com.ycl.common.utils.DateUtils;
 import com.ycl.common.utils.SecurityUtils;
 import com.ycl.common.utils.StringUtils;
+import com.ycl.common.utils.bean.BeanUtils;
+import com.ycl.common.utils.excel.OutputExcelUtils;
 import com.ycl.domain.entity.*;
+import com.ycl.domain.excel.ProjectExcelTemplate;
 import com.ycl.domain.form.DocumentInfoForm;
 import com.ycl.domain.form.ProjectInfoForm;
+import com.ycl.domain.query.ProjectExportQuery;
 import com.ycl.domain.query.ProjectInfoQuery;
 import com.ycl.domain.vo.*;
 import com.ycl.framework.utils.PageUtil;
@@ -25,8 +32,11 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -163,7 +173,7 @@
         } else if (ProjectCategoryEnum.PREVIOUS.getType().equals(projectCategory)) {
             query.setProjectStatus(ProjectCategoryEnum.PREVIOUS.getStatus());
             query.setReserveOrPrevious(ProjectCategoryEnum.PREVIOUS.getCode());
-        }  else if (ProjectCategoryEnum.FINISH.getType().equals(projectCategory)) {
+        } else if (ProjectCategoryEnum.FINISH.getType().equals(projectCategory)) {
             query.setProjectStatus(ProjectCategoryEnum.FINISH.getStatus());
         } else if (ProjectCategoryEnum.EXCEPTION.getType().equals(projectCategory)) {
             //TODO
@@ -376,4 +386,30 @@
             return Result.ok().data(false);
         }
     }
+
+    @Override
+    public void export(HttpServletResponse response, ProjectExportQuery query) {
+        List<ProjectVO> data = baseMapper.selectProjectDetailByIds(query.getDataIdList());
+        List<ProjectExcelTemplate> excelList = new ArrayList<>();
+        //瀛楀吀浣滅炕璇�
+        data.forEach(item->{
+            ProjectExcelTemplate excel = new ProjectExcelTemplate();
+            BeanUtils.copyProperties(item,excel);
+            //椤圭洰闃舵
+            excel.setProjectPhase(ProjectCategoryEnum.getPhaseByProjectStatus(item.getProjectStatus(),item.getProcessId()!=null));
+            excelList.add(excel);
+        });
+        //琛ュ厖鏂囦欢鐨勫瓧娈�
+        Set<Integer> indexes = OutputExcelUtils.getSelectFields(query.getFieldList(), ProjectExcelTemplate.class);
+        //涓嶉渶瑕侀檮浠�
+        if(!query.getRequireFile()) {
+            try (ServletOutputStream outputStream = response.getOutputStream()) {
+                EasyExcel.write(outputStream, ProjectExcelTemplate.class).includeColumnIndexes(indexes).sheet("椤圭洰鍒楄〃").doWrite(excelList);
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                throw new BaseException("瀵煎嚭澶辫触锛�" + e.getMessage());
+            }
+        }
+        //TODO锛氶渶瑕侀檮浠�
+    }
 }

--
Gitblit v1.8.0