whycxzp
2022-07-21 a6719714bfd4dc7c17ec3b8ab022f6e5c990b0fd
更新zip解析
3个文件已修改
1个文件已添加
105 ■■■■■ 已修改文件
pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/ProductBomApprovingController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/ProductBomApprovingService.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/Zip4jUtil.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -181,6 +181,11 @@
            <artifactId>edtFTPj</artifactId>
            <version>1.5.3</version>
        </dependency>
        <dependency>
            <groupId>net.lingala.zip4j</groupId>
            <artifactId>zip4j</artifactId>
            <version>1.3.2</version>
        </dependency>
    </dependencies>
    <build>
src/main/java/com/whyc/controller/ProductBomApprovingController.java
@@ -3,6 +3,7 @@
import com.whyc.dto.Response;
import com.whyc.pojo.ProductBomApproving;
import com.whyc.service.ProductBomApprovingService;
import com.whyc.util.Zip4jUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -44,4 +45,11 @@
        return response;
    }
    @PostMapping("zipParse")
    @ApiOperation("zip解析")
    public Response zipParse(@RequestParam("file") MultipartFile file) throws IOException {
        return service.zipParse(file);
    }
}
src/main/java/com/whyc/service/ProductBomApprovingService.java
@@ -1,15 +1,18 @@
package com.whyc.service;
import com.whyc.dto.Response;
import com.whyc.mapper.ProductBomApprovingMapper;
import com.whyc.pojo.DocUser;
import com.whyc.pojo.ProductBomApproving;
import com.whyc.pojo.WorksheetMain;
import com.whyc.util.ActionUtil;
import com.whyc.util.CommonUtil;
import com.whyc.util.Zip4jUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.xml.crypto.Data;
@@ -104,4 +107,52 @@
    public void insert(List<ProductBomApproving> bomList) {
        mapper.insertBatchSomeColumn(bomList);
    }
    public Response zipParse(MultipartFile file) throws IOException {
        Response response = new Response();
        //检查是否为zip
        boolean isZip = Zip4jUtil.checkZipFileParam(file);
        if(!isZip){
            return response.set(1,false,"上传的文件格式不是zip");
        }
        //zip存储路径:doc_file/product_approving/${username}/{dateFormat}/${timeStamp}
        String rootFile = CommonUtil.getRootFile();
        DocUser user = ActionUtil.getUser();
        String dateFormat = new SimpleDateFormat("YYYY-MM").format(new Date());
        long timeStamp = System.currentTimeMillis();
        String zipPath = rootFile + File.separator + "product_approving" + File.separator + user.getName() + File.separator + dateFormat+ File.separator + timeStamp;
        File zipFile = new File(zipPath);
        if(!zipFile.exists()){
            zipFile.mkdirs();
        }
        file.transferTo(zipFile);
        //解压文件夹
        Zip4jUtil.unPackZip(zipFile,null,zipPath);
        //遍历解压后的文件夹路径,解析excel
        System.out.println(zipPath);
        File[] bomFileDirArr = zipFile.listFiles();
        for (File bomFileDir : bomFileDirArr){
            String bomFileDirName = bomFileDir.getName();
            System.out.println(bomFileDirName);
            File[] bomFileArr = bomFileDir.listFiles();
            for (File bomFile : bomFileArr){
                String bomFileName = bomFile.getName();
                //解析excel
                while (bomFileName.contains(".xls")){
                    System.out.println("待解析的excel文件为:"+bomFileName);
                }
            }
        }
        return null;
    }
    public static void main(String[] args) throws IOException, InvalidFormatException {
        File file = new File("C:\\Users\\29550\\Desktop\\当前项目\\202207图纸管理\\0940000072(BOM).xls");
        boolean exists = file.exists();
        System.out.println(exists);
        Workbook workbook = WorkbookFactory.create(file);
        Sheet sheet = workbook.getSheetAt(0);
        int lastRowNum = sheet.getLastRowNum();
        System.out.println(lastRowNum);
    }
}
src/main/java/com/whyc/util/Zip4jUtil.java
New file
@@ -0,0 +1,41 @@
package com.whyc.util;
import net.lingala.zip4j.core.ZipFile;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
public class Zip4jUtil {
    public static boolean checkZipFileParam(MultipartFile zipFile) {
        String contentType = zipFile.getContentType();
        //【导入Zip文件】上传的文件类型不是Zip
        return "application/zip".equals(contentType) || "application/x-zip-compressed".equals(contentType);
    }
    /**
     * zip文件解压
     *
     * @param destPath 解压文件路径
     * @param zipFile  压缩文件
     * @param password 解压密码(如果有)
     */
    public static boolean unPackZip(File zipFile, String password, String destPath) {
        try {
            ZipFile zip = new ZipFile(zipFile);
            /*zip4j默认用GBK编码去解压,这里设置编码为GBK的*/
            zip.setFileNameCharset("GBK");
            System.out.println("begin unpack zip file....");
            zip.extractAll(destPath);
            // 如果解压需要密码
            if (password != null) {
                if (zip.isEncrypted()) {
                    zip.setPassword(password);
                }
            }
        } catch (Exception e) {
            return false;
        }
        return true;
    }
}