From e00968962285adf5e0aee9f8b15662ca4b96fc8c Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Thu, 21 Apr 2022 16:17:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E6=B8=85=E5=8D=95-=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DummyInventoryInfoEOController.java | 38 +-- .../dummy/entity/DummyInventoryInfoEO.java | 58 ++--- .../service/IDummyInventoryInfoEOService.java | 11 + .../impl/DummyInventoryInfoEOServiceImpl.java | 235 +++++++++++++++++- 4 files changed, 297 insertions(+), 45 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/controller/DummyInventoryInfoEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/controller/DummyInventoryInfoEOController.java index e5fd702b6..9e90000cb 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/controller/DummyInventoryInfoEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/controller/DummyInventoryInfoEOController.java @@ -1,13 +1,10 @@ package com.jero.modules.dummy.controller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.constant.enums.CutEnum; import com.jero.common.system.base.controller.JeroController; -import com.jero.common.system.query.QueryGenerator; import com.jero.modules.dummy.entity.DummyInventoryInfoEO; import com.jero.modules.dummy.service.IDummyInventoryInfoEOService; import io.swagger.annotations.Api; @@ -146,16 +143,17 @@ public class DummyInventoryInfoEOController extends JeroController dataList, List categoryList, List dictItemList, @@ -1278,4 +1289,224 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl dataList = new ArrayList<>(); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(dummyInventoryInfoEO,request.getParameterMap()); + if(StringUtils.isNotBlank(dummyInventoryInfoEO.getIds())){ + queryWrapper.in("id",Arrays.asList(dummyInventoryInfoEO.getIds().split(","))); + } + //导出的数据 + dataList = this.list(queryWrapper); + + //文件 + List fileInfos = getOssFiles(dataList); + //数据转换(文件名称,技术领域,对应标准) + dataTransition(dataList, fileInfos); + + OutputStream os = null; + try { + response.setContentType("application/force-download"); + Workbook workbook = new XSSFWorkbook(); + String path = uploadpath + "/tempZip"; + File fileTemp = new File(path); + if (fileTemp.exists()) { + fileTemp.delete(); + } + fileTemp.mkdirs(); + //文件 + exportFile(dataList,fileInfos); + //excel + OutputStream excelOS = new FileOutputStream(path + File.separator + "虚拟清单.xlsx"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + workbook = ExcelExportUtil.exportExcel(exportParams, DummyInventoryInfoEO.class, dataList); + workbook.write(excelOS); + excelOS.flush(); + + ZipUtil.zip(path, path + ".zip"); + //文件 + FileInputStream fis = new FileInputStream(path + ".zip"); + os = response.getOutputStream(); + + int len = 0; + while ((len = fis.read()) != -1) { + os.write(len); + } + os.flush(); + fis.close(); + } catch (IOException e) { + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + throw new JeroBootException("下载文件失败"); + }else{ + throw new JeroBootException("Failed to download file"); + } + } finally { + IOUtils.closeQuietly(os); + File file = new File(uploadpath + "/tempZip"); + FileUtil.deleteContents(file); + } + } + + /** + * 数据转换(文件名称,技术领域,对应标准) + * @param dataList + * @param fileInfos + */ + private void dataTransition(List dataList, List fileInfos) { + //技术领域 + List sysCategoryList = sysCategoryService.list(); + //文档库数据 + List correspondingStandardIdList = new ArrayList<>(); + for (DummyInventoryInfoEO inventoryInfoEO : dataList) { + String correspondingStandard = inventoryInfoEO.getCorrespondingStandard(); + if(StringUtils.isNotBlank(correspondingStandard)){ + correspondingStandardIdList.addAll(Arrays.asList(correspondingStandard.split(","))); + } + } + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(BussDocumentLibraryEO::getId,correspondingStandardIdList); + List bussDocumentLibraryEOList = iBussDocumentLibraryEOService.list(lambdaQueryWrapper); + + for (DummyInventoryInfoEO inventoryInfoEO : dataList) { + String correspondingStandard = inventoryInfoEO.getCorrespondingStandard(); + String technologyTerritory = inventoryInfoEO.getTechnologyTerritory(); + String designDeliverableTemplate = inventoryInfoEO.getDesignDeliverableTemplate(); + String prehomoDeliverableTemplate = inventoryInfoEO.getPrehomoDeliverableTemplate(); + String verifyDeliverableTemplate = inventoryInfoEO.getVerifyDeliverableTemplate(); + //对应标准 + if(StringUtils.isNotBlank(correspondingStandard)){ + StringBuilder sb = new StringBuilder(); + for (String s : correspondingStandard.split(",")) { + List collect = bussDocumentLibraryEOList.stream() + .filter(e -> s.equals(e.getId())).collect(Collectors.toList()); + if(collect.size() != 0){ + sb.append(collect.get(0).getSerialNumber() + ","); + }else{ + sb.append(s + ","); + } + } + if(StringUtils.isNotBlank(sb)){ + String substring = sb.substring(0, sb.length() - 1); + inventoryInfoEO.setCorrespondingStandard(substring); + } + } + //技术领域 + if(StringUtils.isNotBlank(technologyTerritory)){ + StringBuilder sb = new StringBuilder(); + for (String s : technologyTerritory.split(",")) { + List collect = sysCategoryList.stream() + .filter(e -> s.equals(e.getId())).collect(Collectors.toList()); + if(collect.size() != 0){ + sb.append(collect.get(0).getName()+","); + } + } + if(StringUtils.isNotBlank(sb)){ + String substring = sb.substring(0, sb.length() - 1); + inventoryInfoEO.setTechnologyTerritory(substring); + } + } + //设计交付物模板 + if(StringUtils.isNotBlank(designDeliverableTemplate)){ + String designDeliverableTemplateName = template(fileInfos, designDeliverableTemplate); + inventoryInfoEO.setDesignDeliverableTemplateName(designDeliverableTemplateName); + } + //设计交付物模板 + if(StringUtils.isNotBlank(prehomoDeliverableTemplate)){ + String prehomoDeliverableTemplateName = template(fileInfos, prehomoDeliverableTemplate); + inventoryInfoEO.setPrehomoDeliverableTemplateName(prehomoDeliverableTemplateName); + + } + //设计交付物模板 + if(StringUtils.isNotBlank(verifyDeliverableTemplate)){ + String verifyDeliverableTemplateName = template(fileInfos, verifyDeliverableTemplate); + inventoryInfoEO.setVerifyDeliverableTemplateName(verifyDeliverableTemplateName); + } + } + } + + /** + * 模板名称转换 + * @param fileInfos + * @param value + * @return + */ + private String template(List fileInfos, String value) { + StringBuilder sb = new StringBuilder(); + for (String s : value.split(",")) { + List collect = fileInfos.stream().filter(e -> s.equals(e.getId())).collect(Collectors.toList()); + if(collect.size() != 0){ + sb.append(collect.get(0).getFileName()+","); + } + } + String substring = ""; + if(StringUtils.isNotBlank(sb)){ + substring = sb.substring(0, sb.length() - 1); + } + return substring; + } + + /** + * 获取文件 + * @param dataList + * @return + */ + private List getOssFiles(List dataList) { + List fileIdList = new ArrayList<>(); + List design = dataList.stream().map(DummyInventoryInfoEO::getDesignDeliverableTemplate).collect(Collectors.toList()); + List prehomo = dataList.stream().map(DummyInventoryInfoEO::getPrehomoDeliverableTemplate).collect(Collectors.toList()); + List verify = dataList.stream().map(DummyInventoryInfoEO::getVerifyDeliverableTemplate).collect(Collectors.toList()); + fileIdList.addAll(design); + fileIdList.addAll(prehomo); + fileIdList.addAll(verify); + + //查询所有的文件 + List fileInfos = new ArrayList<>(); + if(fileIdList.size() != 0){ + fileInfos = iOSSFileService.getFileInfos(StringUtils.join(fileIdList, ",")); + } + return fileInfos; + } + + private void exportFile(List dataList,List fileInfos) throws IOException { + if(fileInfos.size() != 0){ + for (DummyInventoryInfoEO inventoryInfoEO : dataList) { + String designDeliverableTemplate = inventoryInfoEO.getDesignDeliverableTemplate(); + String prehomoDeliverableTemplate = inventoryInfoEO.getPrehomoDeliverableTemplate(); + String verifyDeliverableTemplate = inventoryInfoEO.getVerifyDeliverableTemplate(); + String serialNumber = inventoryInfoEO.getSerialNumber(); + if(StringUtils.isBlank(serialNumber)){ + continue; + } + List designFileList = fileInfos.stream().filter(e -> designDeliverableTemplate.contains(e.getId())).collect(Collectors.toList()); + List prehomoFileList = fileInfos.stream().filter(e -> prehomoDeliverableTemplate.contains(e.getId())).collect(Collectors.toList()); + List verifyFileList = fileInfos.stream().filter(e -> verifyDeliverableTemplate.contains(e.getId())).collect(Collectors.toList()); + List oSSFileList = new ArrayList<>(); + oSSFileList.addAll(designFileList); + oSSFileList.addAll(prehomoFileList); + oSSFileList.addAll(verifyFileList); + if(oSSFileList.size() != 0){ + String fileNowPath = uploadpath + "/tempZip/" + serialNumber; + File file = new File(fileNowPath); + if (file.exists()) { + file.delete(); + } + file.mkdirs(); + for (OSSFile ossFile : oSSFileList) { + String url = ossFile.getUrl(); + copyFile(url, fileNowPath + File.separator + ossFile.getFileName()); + } + } + } + } + } + }