diff --git a/laws-base/laws-base-core/src/main/java/com/jero/common/util/ZipUtil.java b/laws-base/laws-base-core/src/main/java/com/jero/common/util/ZipUtil.java index 5ba03939..70b0e698 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/common/util/ZipUtil.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/common/util/ZipUtil.java @@ -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"); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTermUser.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTermUser.java index d820d512..77037527 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTermUser.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTermUser.java @@ -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 = Collections.emptyList(); } \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardDeclareService.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardDeclareService.java index c90719d3..d6ffbffb 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardDeclareService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardDeclareService.java @@ -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 pageList = lawsSpecialProjectLibraryService.queryPage(lawsSpecialProjectLibrary, -1, -1, request); - List records = pageList.getRecords(); - List exportList; - String selections = request.getParameter("selections"); - if (StringUtils.isNotBlank(selections)) { - List 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); } } diff --git a/laws-modules/src/main/java/com/jero/modules/projectLibrary/entity/LawsSpecialProjectLibrary.java b/laws-modules/src/main/java/com/jero/modules/projectLibrary/entity/LawsSpecialProjectLibrary.java index 39fcfe75..3669bda5 100644 --- a/laws-modules/src/main/java/com/jero/modules/projectLibrary/entity/LawsSpecialProjectLibrary.java +++ b/laws-modules/src/main/java/com/jero/modules/projectLibrary/entity/LawsSpecialProjectLibrary.java @@ -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; /**评估日期*/ diff --git a/laws-modules/src/main/java/com/jero/modules/projectLibrary/service/ILawsSpecialProjectLibraryService.java b/laws-modules/src/main/java/com/jero/modules/projectLibrary/service/ILawsSpecialProjectLibraryService.java index c107e5e4..93909352 100644 --- a/laws-modules/src/main/java/com/jero/modules/projectLibrary/service/ILawsSpecialProjectLibraryService.java +++ b/laws-modules/src/main/java/com/jero/modules/projectLibrary/service/ILawsSpecialProjectLibraryService.java @@ -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 implements ILawsSpecialProjectLibraryService { @@ -46,7 +74,18 @@ public class LawsSpecialProjectLibraryServiceImpl extends ServiceImpl pageList = this.queryPage(lawsSpecialProjectLibrary, -1, -1, request); + List records = pageList.getRecords(); + List exportList; + String selections = request.getParameter("selections"); + if (StringUtils.isNotBlank(selections)) { + List 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 termUserPage = processProjectStandardService.getTermUserList(termUser, -1, -1); + List 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 fileIdList = Arrays.asList(fileId.split(",")); + List ossFileList = ossFileService.listByIds(fileIdList); + if (!ossFileList.isEmpty()){ + // 赋值 + List 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); + } + } + + } }