update 81707 专项项目库导出zip
This commit is contained in:
@@ -34,7 +34,7 @@ public class ZipUtil {
|
||||
try {
|
||||
zos = new ZipOutputStream(out);
|
||||
File sourceFile = new File(srcDir);
|
||||
compress(sourceFile, zos, sourceFile.getName(), KeepDirStructure);
|
||||
compress(sourceFile, zos, sourceFile.getName().substring(0,sourceFile.getName().lastIndexOf("_")), KeepDirStructure);
|
||||
long end = System.currentTimeMillis();
|
||||
System.out.println("压缩完成,耗时:" + (end - start) + " ms");
|
||||
|
||||
|
||||
+14
@@ -5,11 +5,17 @@ import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import com.jero.modules.laws.enterprise.entity.vo.DeclareFileList;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Data;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.jeecgframework.poi.excel.annotation.ExcelCollection;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -132,6 +138,7 @@ public class ProcessProjectStandardTermUser {
|
||||
* 设计工程师
|
||||
*/
|
||||
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
|
||||
@Excel(name = "姓名", width = 15, dictTable = "sys_user", dicCode = "id", dicText = "realname")
|
||||
@TableField(value = "design_engineer")
|
||||
@ApiModelProperty(value="设计工程师")
|
||||
private String designEngineer;
|
||||
@@ -154,6 +161,7 @@ public class ProcessProjectStandardTermUser {
|
||||
*/
|
||||
@TableField(value = "model_series")
|
||||
@Dict(dicCode = "model_series")
|
||||
@Excel(name = "车型", width = 15, dicCode = "model_series")
|
||||
@ApiModelProperty(value="车型系列")
|
||||
private String modelSeries;
|
||||
/**
|
||||
@@ -167,6 +175,7 @@ public class ProcessProjectStandardTermUser {
|
||||
* 依据描述
|
||||
*/
|
||||
@TableField(value = "description")
|
||||
@Excel(name = "依据描述", width = 15)
|
||||
@ApiModelProperty(value="依据描述")
|
||||
private String description;
|
||||
|
||||
@@ -210,4 +219,9 @@ public class ProcessProjectStandardTermUser {
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value="部门id")
|
||||
private String departId;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "相关材料文件名")
|
||||
@ExcelCollection(name = "")
|
||||
private List<DeclareFileList> declareFileList = Collections.emptyList();
|
||||
}
|
||||
+4
@@ -9,6 +9,7 @@ import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardDeclareVo;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
@@ -45,4 +46,7 @@ public interface EnterpriseStandardDeclareService extends IService<EnterpriseSta
|
||||
void exportDataWithFile(HttpServletResponse response, ESQueryCommonDTO parameterMap, String fileName, String sheetName);
|
||||
|
||||
void exportDataWithFile(HttpServletRequest request, HttpServletResponse response, ESQueryCommonDTO parameterMap) throws IOException;
|
||||
|
||||
void writeToLocal(String destination, InputStream input)
|
||||
throws IOException;
|
||||
}
|
||||
|
||||
+4
-3
@@ -277,15 +277,16 @@ public class EnterpriseStandardDeclareServiceImpl extends ServiceImpl<Enterprise
|
||||
/**
|
||||
* 将InputStream写入本地文件
|
||||
*
|
||||
* @param destination 写入本地目录
|
||||
* @param filePath 写入本地目录
|
||||
* @param input 输入流
|
||||
* @throws IOException
|
||||
*/
|
||||
private static void writeToLocal(String destination, InputStream input)
|
||||
@Override
|
||||
public void writeToLocal(String filePath, InputStream input)
|
||||
throws IOException {
|
||||
int index;
|
||||
byte[] bytes = new byte[1024];
|
||||
try (FileOutputStream downloadFile = new FileOutputStream(destination)){
|
||||
try (FileOutputStream downloadFile = new FileOutputStream(filePath)){
|
||||
while ((index = input.read(bytes)) != -1) {
|
||||
downloadFile.write(bytes, 0, index);
|
||||
downloadFile.flush();
|
||||
|
||||
+19
-12
@@ -1,18 +1,35 @@
|
||||
package com.jero.modules.projectLibrary.controller;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.FileUtils;
|
||||
import com.jero.common.util.oConvertUtils;
|
||||
import com.jero.modules.projectLibrary.entity.LawsProjectLibrary;
|
||||
import com.jero.modules.projectLibrary.entity.LawsSpecialProjectLibrary;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jero.modules.projectLibrary.service.ILawsSpecialProjectLibraryService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecgframework.poi.excel.ExcelExportUtil;
|
||||
import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -153,18 +170,8 @@ public class LawsSpecialProjectLibraryController extends JeroController<LawsSpec
|
||||
@AutoLog(value = "专项项目库-导出")
|
||||
@ApiOperation(value="专项项目库-导出")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, LawsSpecialProjectLibrary lawsSpecialProjectLibrary) {
|
||||
IPage<LawsSpecialProjectLibrary> pageList = lawsSpecialProjectLibraryService.queryPage(lawsSpecialProjectLibrary, -1, -1, request);
|
||||
List<LawsSpecialProjectLibrary> records = pageList.getRecords();
|
||||
List<LawsSpecialProjectLibrary> exportList;
|
||||
String selections = request.getParameter("selections");
|
||||
if (StringUtils.isNotBlank(selections)) {
|
||||
List<String> selectionList = Arrays.asList(selections.split(","));
|
||||
exportList = records.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
|
||||
}else {
|
||||
exportList = records;
|
||||
}
|
||||
return super.exportListXls(exportList, LawsSpecialProjectLibrary.class, "专项项目库");
|
||||
public void exportXls(HttpServletRequest request, HttpServletResponse response, LawsSpecialProjectLibrary lawsSpecialProjectLibrary) {
|
||||
lawsSpecialProjectLibraryService.exportXls(request,response,lawsSpecialProjectLibrary);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-2
@@ -99,11 +99,9 @@ public class LawsSpecialProjectLibrary implements Serializable {
|
||||
@ApiModelProperty(value = "合规评估结果")
|
||||
private String result;
|
||||
/**问题描述*/
|
||||
@Excel(name = "依据描述", width = 15)
|
||||
@ApiModelProperty(value = "依据描述")
|
||||
private String description;
|
||||
/**佐证材料*/
|
||||
@Excel(name = "佐证材料", width = 15)
|
||||
@ApiModelProperty(value = "佐证材料")
|
||||
private String material;
|
||||
/**评估日期*/
|
||||
|
||||
+4
@@ -3,6 +3,8 @@ package com.jero.modules.projectLibrary.service;
|
||||
import com.jero.modules.projectLibrary.entity.LawsSpecialProjectLibrary;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import java.util.List;
|
||||
|
||||
@@ -73,4 +75,6 @@ public interface ILawsSpecialProjectLibraryService extends IService<LawsSpecialP
|
||||
* @return
|
||||
*/
|
||||
LawsSpecialProjectLibrary queryById(String id);
|
||||
|
||||
void exportXls(HttpServletRequest request, HttpServletResponse response, LawsSpecialProjectLibrary lawsSpecialProjectLibrary);
|
||||
}
|
||||
|
||||
+135
@@ -1,42 +1,70 @@
|
||||
package com.jero.modules.projectLibrary.service.impl;
|
||||
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.constant.CommonConstant;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.BeanCopyUtils;
|
||||
import com.jero.common.util.FileUtils;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.common.util.ZipUtil;
|
||||
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermUser;
|
||||
import com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardService;
|
||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||
import com.jero.modules.laws.enterprise.entity.vo.DeclareFileList;
|
||||
import com.jero.modules.laws.enterprise.service.EnterpriseStandardDeclareService;
|
||||
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
|
||||
import com.jero.modules.laws.standard.entity.LawsOverseasStandard;
|
||||
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
|
||||
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.projectLibrary.entity.LawsProjectLibrary;
|
||||
import com.jero.modules.projectLibrary.entity.LawsSpecialProjectLibrary;
|
||||
import com.jero.modules.projectLibrary.mapper.LawsSpecialProjectLibraryMapper;
|
||||
import com.jero.modules.projectLibrary.service.ILawsSpecialProjectLibraryService;
|
||||
import com.jero.modules.system.util.SysWaterMarkUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.jeecgframework.poi.excel.ExcelExportUtil;
|
||||
import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 专项项目库
|
||||
* @Author: jero-boot
|
||||
* @Date: 2023-09-22
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@Transactional(rollbackFor = JeroBootException.class)
|
||||
public class LawsSpecialProjectLibraryServiceImpl extends ServiceImpl<LawsSpecialProjectLibraryMapper, LawsSpecialProjectLibrary> implements ILawsSpecialProjectLibraryService {
|
||||
@@ -46,7 +74,18 @@ public class LawsSpecialProjectLibraryServiceImpl extends ServiceImpl<LawsSpecia
|
||||
private ILawsOverseasStandardService lawsOverseasStandardService; //海外标准
|
||||
@Resource
|
||||
private LawsSpecialProjectLibraryMapper specialProjectLibraryMapper;
|
||||
@Resource
|
||||
private ProcessProjectStandardService processProjectStandardService;
|
||||
@Resource
|
||||
private EnterpriseStandardDeclareService enterpriseStandardDeclareService;
|
||||
@Resource
|
||||
private IOSSFileService ossFileService;
|
||||
@Resource
|
||||
private SysWaterMarkUtil sysWaterMarkUtil;
|
||||
@Value("${jero.path.exportExcelTempPath}")
|
||||
private String exportExcelTempPath;
|
||||
|
||||
private static final String EXPORT_EXCEL_TEMP = "exportExcelTemp";
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
@@ -148,4 +187,100 @@ public class LawsSpecialProjectLibraryServiceImpl extends ServiceImpl<LawsSpecia
|
||||
public LawsSpecialProjectLibrary queryById(String id) {
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportXls(HttpServletRequest request, HttpServletResponse response, LawsSpecialProjectLibrary lawsSpecialProjectLibrary) {
|
||||
IPage<LawsSpecialProjectLibrary> pageList = this.queryPage(lawsSpecialProjectLibrary, -1, -1, request);
|
||||
List<LawsSpecialProjectLibrary> records = pageList.getRecords();
|
||||
List<LawsSpecialProjectLibrary> exportList;
|
||||
String selections = request.getParameter("selections");
|
||||
if (StringUtils.isNotBlank(selections)) {
|
||||
List<String> selectionList = Arrays.asList(selections.split(","));
|
||||
exportList = records.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
|
||||
}else {
|
||||
exportList = records;
|
||||
}
|
||||
String fileName = "专项项目库";
|
||||
String termUserFileName = "依据描述";
|
||||
String url = exportExcelTempPath.replace(EXPORT_EXCEL_TEMP, fileName + "_" + RandomUtil.randomString(12));
|
||||
File file = new File(url);
|
||||
if (!file.exists()){
|
||||
boolean mkdirs = file.mkdirs();
|
||||
log.info("创建临时目录:{}", mkdirs);
|
||||
}
|
||||
try (FileOutputStream fos = new FileOutputStream(url + File.separator + fileName + ".xls")){
|
||||
// 生成excel
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.HSSF);
|
||||
for (LawsSpecialProjectLibrary projectLibrary : exportList) {
|
||||
String standardNumber = projectLibrary.getStandardNumber();
|
||||
String termNumber = projectLibrary.getTermNumber();
|
||||
String processTermId = projectLibrary.getProcessTermId();
|
||||
//判断是否有描述依据
|
||||
ProcessProjectStandardTermUser termUser = new ProcessProjectStandardTermUser();
|
||||
termUser.setTermId(processTermId);
|
||||
IPage<ProcessProjectStandardTermUser> termUserPage = processProjectStandardService.getTermUserList(termUser, -1, -1);
|
||||
List<ProcessProjectStandardTermUser> termUserList = termUserPage.getRecords();
|
||||
//导出描述依据和佐证材料
|
||||
if (!termUserList.isEmpty()) {
|
||||
//标准编号+条款号的文件夹
|
||||
String termUserUrl = url + File.separator + standardNumber + (StringUtils.isBlank(termNumber)?"":termNumber) ;
|
||||
File termUserFile = new File(termUserUrl);
|
||||
if (!termUserFile.exists()){
|
||||
boolean mkdirs = termUserFile.mkdirs();
|
||||
log.info("创建临时子目录:{}", mkdirs);
|
||||
}
|
||||
//佐证材料
|
||||
for (ProcessProjectStandardTermUser standardTermUser : termUserList) {
|
||||
String fileId = standardTermUser.getFileId();
|
||||
if (StringUtils.isNotBlank(fileId)){
|
||||
List<String> fileIdList = Arrays.asList(fileId.split(","));
|
||||
List<OSSFile> ossFileList = ossFileService.listByIds(fileIdList);
|
||||
if (!ossFileList.isEmpty()){
|
||||
// 赋值
|
||||
List<DeclareFileList> declareFileLists = BeanCopyUtils.copyBeanList(ossFileList, DeclareFileList.class);
|
||||
standardTermUser.setDeclareFileList(declareFileLists);
|
||||
// 写出文件
|
||||
for (OSSFile ossFile : ossFileList) {
|
||||
InputStream inputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), ossFile.getUrl());
|
||||
// pdf加水印
|
||||
if (StringUtils.endsWithIgnoreCase(ossFile.getFileName(), ".pdf")){
|
||||
inputStream = sysWaterMarkUtil.addWatermarkToPdf(inputStream);
|
||||
}
|
||||
// 导出文件
|
||||
String filePath = termUserFile + File.separator + ossFile.getFileName();
|
||||
enterpriseStandardDeclareService.writeToLocal(filePath, inputStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//描述依据
|
||||
try (FileOutputStream fos1 = new FileOutputStream(termUserFile + File.separator + termUserFileName + ".xls")){
|
||||
// 生成excel
|
||||
Workbook workbook1 = ExcelExportUtil.exportExcel(exportParams, ProcessProjectStandardTermUser.class, termUserList);
|
||||
// 导出excel
|
||||
workbook1.write(fos1);
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
throw new JeroBootException("excel导出失败!");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, LawsSpecialProjectLibrary.class, exportList);
|
||||
// 导出excel
|
||||
workbook.write(fos);
|
||||
// 生成并导出zip
|
||||
ZipUtil.toZip(url, response.getOutputStream(), response, true);
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
throw new JeroBootException("excel导出失败!");
|
||||
}finally {
|
||||
// 删除文件
|
||||
if (new File(url).exists()) {
|
||||
FileUtils.deleteFolders(url);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user