diff --git a/laws-modules/src/main/java/com/jero/modules/laws/customcompare/service/impl/LawsCustomCompareInfoServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/customcompare/service/impl/LawsCustomCompareInfoServiceImpl.java index 326dff9c..3e3e3fa7 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/customcompare/service/impl/LawsCustomCompareInfoServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/customcompare/service/impl/LawsCustomCompareInfoServiceImpl.java @@ -368,8 +368,6 @@ public class LawsCustomCompareInfoServiceImpl extends ServiceImpl list = tableDetailVO.getList(); - -// Workbook workbook = new XSSFWorkbook() try (Workbook workbook = new HSSFWorkbook()){ String fileName = "清单详情.xls"; // sheet页 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/controller/EnterpriseStandardDeclareController.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/controller/EnterpriseStandardDeclareController.java index 60ab4d6e..1d78762a 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/controller/EnterpriseStandardDeclareController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/controller/EnterpriseStandardDeclareController.java @@ -16,7 +16,9 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; /** @@ -58,11 +60,19 @@ public class EnterpriseStandardDeclareController extends JeroController declareFileList = Collections.emptyList(); +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/mapper/EnterpriseStandardDeclareMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/mapper/EnterpriseStandardDeclareMapper.java index 348edd1b..5c7ecd02 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/mapper/EnterpriseStandardDeclareMapper.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/mapper/EnterpriseStandardDeclareMapper.java @@ -7,6 +7,8 @@ import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO; import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardDeclareVo; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author ThinkBook * @description 针对表【laws_enterprise_standard_declare】的数据库操作Mapper @@ -22,6 +24,13 @@ public interface EnterpriseStandardDeclareMapper extends BaseMapper page(IPage page, @Param("param") ESQueryCommonDTO esDeclare); + + /** + * 宣贯列表 + * @param esDeclare + * @return + */ + List list(@Param("param") ESQueryCommonDTO esDeclare); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/mapper/xml/EnterpriseStandardDeclareMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/mapper/xml/EnterpriseStandardDeclareMapper.xml index 2afb1166..a67f70ee 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/mapper/xml/EnterpriseStandardDeclareMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/mapper/xml/EnterpriseStandardDeclareMapper.xml @@ -29,20 +29,28 @@ + + + + SELECT - d.id, - s.standard_number AS standardNo, - s.standard_name, - s.release_date, - s.implementation_date, - d.declare_date, - d.declare_user, - CONCAT(u.realname, '(', u.username, ')') AS declareUserName, - d.declare_file + d.id, + s.standard_number AS standardNo, + s.standard_name, + s.release_date, + s.implementation_date, + d.declare_date, + d.declare_user, + CONCAT(u.realname, '(', u.username, ')') AS declareUserName, + d.declare_file FROM - `laws_enterprise_standard_declare` AS d - LEFT JOIN laws_enterprise_standard AS s ON d.standard_id = s.id - LEFT JOIN sys_user AS u ON u.id = d.declare_user + `laws_enterprise_standard_declare` AS d + LEFT JOIN laws_enterprise_standard AS s ON d.standard_id = s.id + LEFT JOIN sys_user AS u ON u.id = d.declare_user Where 1 = 1 @@ -67,6 +75,6 @@ ORDER BY - d.create_time DESC - + d.create_time DESC + 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 8618f00e..c90719d3 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 @@ -1,13 +1,14 @@ package com.jero.modules.laws.enterprise.service; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardDeclare; import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.laws.enterprise.entity.EnterpriseStandardDeclare; import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO; import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardDeclareVo; -import com.jero.modules.oss.entity.OSSFile; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; /** * @author ThinkBook @@ -42,4 +43,6 @@ public interface EnterpriseStandardDeclareService extends IService queryPageList(ESQueryCommonDTO esDeclare, Integer pageNo, Integer pageSize) { @@ -144,6 +163,9 @@ public class EnterpriseStandardDeclareServiceImpl extends ServiceImpl list = esDeclareMapper.list(parameterMap); + // 过滤勾选数据 + if (StringUtils.isNotBlank(parameterMap.getSelections())){ + List selections = Arrays.asList(parameterMap.getSelections().split(",")); + list = list.stream().filter(v -> selections.contains(v.getId())).collect(Collectors.toList()); + } + // 构建一对多关系 + List enterpriseStandardDeclareExcels = com.jero.common.util.BeanCopyUtils.copyBeanList(list, EnterpriseStandardDeclareExcel.class); + List newEnterpriseStandardDeclareExcels = new ArrayList<>(enterpriseStandardDeclareExcels); + // 处理文件 + settleDocuments(url, enterpriseStandardDeclareExcels); + + // 生成excel + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.HSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, EnterpriseStandardDeclareExcel.class, enterpriseStandardDeclareExcels); + // 生成超链接 + generateHyperlink(newEnterpriseStandardDeclareExcels, workbook); + // 导出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); + } + } + } + + private static void generateHyperlink(List newEnterpriseStandardDeclareExcels, Workbook workbook) { + Sheet sheet = workbook.getSheetAt(0); + int i = 1; + for (EnterpriseStandardDeclareExcel enterpriseStandardDeclareExcel : newEnterpriseStandardDeclareExcels) { + if (!Objects.isNull(enterpriseStandardDeclareExcel.getDeclareFileList()) && !enterpriseStandardDeclareExcel.getDeclareFileList().isEmpty()){ + for (DeclareFileList declareFileList : enterpriseStandardDeclareExcel.getDeclareFileList()) { + Row row = sheet.getRow(i); + Cell cell = row.getCell(6); + cell.setCellFormula("HYPERLINK(\"" + ".\\" + declareFileList.getFileName() + "\")"); + cell.setCellValue(declareFileList.getFileName()); + i += 1; + } + }else { + i += 1; + } + } + } + + private void settleDocuments(String url, List enterpriseStandardDeclareExcels) throws IOException { + for (EnterpriseStandardDeclareExcel enterpriseStandardDeclareExcel : enterpriseStandardDeclareExcels) { + // 查询文件 + if (StringUtils.isNotBlank(enterpriseStandardDeclareExcel.getDeclareFile())){ + List fileIdList = Arrays.asList(enterpriseStandardDeclareExcel.getDeclareFile().split(",")); + List ossFileList = ossFileService.listByIds(fileIdList); + if (!ossFileList.isEmpty()){ + // 赋值 + List declareFileLists = com.jero.common.util.BeanCopyUtils.copyBeanList(ossFileList, DeclareFileList.class); + enterpriseStandardDeclareExcel.setDeclareFileList(declareFileLists); + // 写出文件 + for (OSSFile ossFile : ossFileList) { + InputStream inputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), ossFile.getUrl()); + // pdf加水印 + if (StringUtils.endsWithIgnoreCase(ossFile.getFileName(), ".pdf")){ + inputStream = waterMarkUtil.addWatermarkToPdf(inputStream); + } + // 导出文件 + String filePath = url + File.separator + ossFile.getFileName(); + writeToLocal(filePath, inputStream); + } + } + } + } + } + + /** + * 将InputStream写入本地文件 + * + * @param destination 写入本地目录 + * @param input 输入流 + * @throws IOException + */ + private static void writeToLocal(String destination, InputStream input) + throws IOException { + int index; + byte[] bytes = new byte[1024]; + try (FileOutputStream downloadFile = new FileOutputStream(destination)){ + while ((index = input.read(bytes)) != -1) { + downloadFile.write(bytes, 0, index); + downloadFile.flush(); + } + }catch (Exception e){ + log.error("将InputStream写入本地失败:{}", e.getMessage()); + }finally { + input.close(); + } + } /** * 设置导出的Excel中的相关文件字段 * @param records */ private void setRecordFile(List records) { - records.forEach(record -> record.setDeclareFileName(record.getStandardNo().replace("/", "_") + "/" + record.getDeclareFileName())); + for (EnterpriseStandardDeclareVo enterpriseStandardDeclareVo : records) { + if (StringUtils.isBlank(enterpriseStandardDeclareVo.getDeclareFile())){ + continue; + } + enterpriseStandardDeclareVo.setDeclareFileName(enterpriseStandardDeclareVo.getStandardNo().replace("/", "_") + "/" + enterpriseStandardDeclareVo.getDeclareFileName()); + } } }