From 0ca26b1a6ca5fc29dd3e9c3f65b73640fed10e57 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 20 Nov 2023 09:22:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=80=81=E6=B3=95=E8=A7=84=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=AD=98=E5=8F=91=E5=B8=83=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OldSystemController.java | 6 +- .../LawsEnterpriseStandardServiceImpl.java | 120 ++++++++++++++---- 2 files changed, 95 insertions(+), 31 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java index d6da7645..00a344f4 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java @@ -56,9 +56,9 @@ public class OldSystemController { @Resource private ILawsEnterpriseStandardService enterpriseStandardService; - @PostMapping("/importOldSystemESZip") - @AutoLog(value = "老法规系统-老法规企标国标数据库Zip导入") - @ApiOperation(value="老法规系统-老法规企标国标数据库Zip导入", notes="老法规系统-老法规企标国标数据库Zip导入", produces = "application/octet-stream") + @PostMapping("/importOldSystemExcel") + @AutoLog(value = "老法规系统-老法规企标国标数据导入") + @ApiOperation(value="老法规系统-老法规企标国标数据导入", notes="老法规系统-老法规企标国标数据导入", produces = "application/octet-stream") @ApiOperationSupport(order = 2) public void importOldSystemESZip(@RequestParam("file") MultipartFile file, @ApiParam(value = "0不导入 1导入企标 2导入国标 3一起导入", required = true) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java index d0d1a8ac..68adcb69 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.laws.standard.service.impl; +import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -9,6 +10,7 @@ import com.jero.common.constant.CommonConstant; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.SysDictItemCore; import com.jero.common.util.MessageUtils; +import com.jero.common.util.MinioUtil; import com.jero.modules.activiti.util.ExcelUtils; import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.enterprise.entity.OldSystemImportDTO; @@ -18,14 +20,18 @@ import com.jero.modules.laws.oldSystem.entity.OldSystemDepartRelation; import com.jero.modules.laws.oldSystem.service.OldSystemDepartRelationService; import com.jero.modules.laws.standard.entity.LawsDomesticStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; +import com.jero.modules.laws.standard.entity.LawsStandardFile; import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.laws.standard.mapper.LawsEnterpriseStandardMapper; import com.jero.modules.laws.standard.service.ILawsReplacedStandardService; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.system.entity.SysDepart; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysDepartService; import com.jero.modules.system.service.ISysUserService; +import io.minio.errors.MinioException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -34,6 +40,7 @@ import org.jeecgframework.poi.excel.ExcelExportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; +import org.springframework.beans.factory.annotation.Value; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -43,6 +50,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -85,6 +93,9 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl errImportList = new ArrayList<>(); - // 验证文件是否为压缩格式 - if (!Objects.requireNonNull(zipFile.getContentType()).contains("zip")) { - throw new JeroBootException("文件格式不正确,请上传zip格式的压缩包。"); + // 验证文件是否为压缩格式file.getContentType()).contains("xls") + if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { + throw new JeroBootException("文件格式不正确,请上传Excel。"); } ImportParams params = new ImportParams(); params.setTitleRows(0); @@ -113,28 +124,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl esDatalist = new ArrayList<>(); List gbDatalist = new ArrayList<>(); List fbDatalist = new ArrayList<>(); - // 解压缩文件,查找Excel文件 - MultipartFile file = null; - try (ZipInputStream zis = new ZipInputStream(zipFile.getInputStream())) { - ZipEntry zipEntry; - while ((zipEntry = zis.getNextEntry()) != null) { - if (zipEntry.getName().endsWith(".xls") || zipEntry.getName().endsWith(".xlsx")) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - IOUtils.copy(zis, baos); - byte[] excelData = baos.toByteArray(); - file = new MockMultipartFile(zipEntry.getName(), zipEntry.getName(), "application/vnd.ms-excel", excelData); - zis.closeEntry(); - break; // 一旦找到Excel文件,就可以跳出循环 - } - zis.closeEntry(); - } - } catch (IOException e) { - throw new JeroBootException("处理压缩文件时发生错误:" + e.getMessage()); - } - if (file == null) { - throw new JeroBootException("压缩包中未发现Excel文件。"); - } try { // 获取当前时间戳(毫秒) long startTime = System.currentTimeMillis(); @@ -239,12 +229,15 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl StrUtil.isNotBlank(o.getOldOrgName())).collect(Collectors.toList()); Map> oldDeptMap = list.stream().collect(Collectors.groupingBy(OldSystemDepartRelation::getOldOrgName)); + // 文件关联 + List ossFileList = new ArrayList<>(); long startTime = System.currentTimeMillis(); // 转换数据 List gbList = new ArrayList<>(); for (OldSystemImportDTO dto : gbDatalist) { try { LawsDomesticStandard gb = new LawsDomesticStandard(); + gb.setId(dto.getId()); gb.setStandardNumber(dto.getBzh()); String[] parts = dto.getBzh().split("[-\\s]"); // 使用空格或破折号作为分隔符 @@ -284,6 +277,21 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl> standardNumberToFileMap = ossFileList.stream().collect(Collectors.groupingBy(OSSFile::getStandardNo)); + + // 4. 遍历待保存或更新的列表,设置ID for (LawsDomesticStandard entity : gbList) { LawsDomesticStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber()); if (existingEntity != null) { @@ -325,6 +336,11 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl esList = new ArrayList<>(); List listDict = commonAPI.getDictItemAll(); + // 文件关联 + List ossFileList = new ArrayList<>(); // 导入企标 for (OldSystemImportDTO dto : esDatalist) { try { LawsEnterpriseStandard es = new LawsEnterpriseStandard(); - + es.setId(dto.getId()); es.setStandardNumber(dto.getBzh()); es.setStandardName(dto.getBzmc()); es.setStandardEnglishName(dto.getBzywmc()); @@ -390,6 +408,20 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl> standardNumberToFileMap = ossFileList.stream().collect(Collectors.groupingBy(OSSFile::getStandardNo)); + + // 4. 遍历待保存或更新的列表,设置ID for (LawsEnterpriseStandard entity : esList) { String curStandardNumber = entity.getStandardNumber(); LawsEnterpriseStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber()); @@ -432,7 +467,14 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl