whycxzp
2022-09-15 788f57c0f36ce4e625b068b5891c35ed8f8da2c7
src/main/java/com/whyc/service/MaterialService.java
@@ -1,6 +1,7 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@@ -12,6 +13,7 @@
import com.whyc.pojo.ProductBom;
import com.whyc.util.ActionUtil;
import com.whyc.util.CommonUtil;
import com.whyc.util.DateUtil;
import com.whyc.util.FileUtil;
import com.whyc.util.Zip4jUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -26,10 +28,7 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -336,4 +335,99 @@
        List list=mapper.getMaterialVersion(subModel);
        return new Response().setII(1,list.size()>0,list,"物料历史版本数据返回");
    }
    //根据物料id查询物料信息
    public Response getMaterialById(int materialId) {
        Material material=mapper.getMaterialById(materialId);
        String fileDirName = FileDirPath.getFileDirName();
        List list=new ArrayList();
        if(material.getFileUrl()!=null&&!material.getFileUrl().isEmpty()){
            File file = new File(fileDirName+File.separator+material.getFileUrl());
            if(file.exists()) {
                String[] fileNames = file.list();//获取该文件夹下的所有文件以及目录的名字
                if(fileNames.length>0){
                    for (int i=0;i<fileNames.length;i++){
                        if(!fileNames[i].contains("-dwg.pdf")&&!fileNames[i].contains("-doc.pdf"))
                            list.add(material.getFileUrl()+File.separator+fileNames[i]);
                    }
                }
            }
        }
        return new Response().setIII(1,material!=null,material,list,"物料历史版本数据返回");
    }
    /**
     * @param multipartFileList 被追加的附件,zip集合
     * @param material
     * @return 返回被追加文件的文件夹路径
     */
    @Transactional
    public Response addAttachment(List<MultipartFile> multipartFileList, Material material) throws IOException {
        List<String> currentFileList = new LinkedList<>();
        List<String> uploadingFileList = new LinkedList<>();
        String dirPathDB = "doc_file" + File.separator + "material" + File.separator + material.getId() + "-"+ material.getSubCode() + "-" + material.getSubModel();
        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + "-"+ material.getSubCode() + "-" + material.getSubModel();
        File dirFile = new File(dirPath);
        Date now = new Date();
        //long timestamp = now.getTime();
        String formattedTimestamp = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(now);
        boolean dirFileExist = true;
        if(!dirFile.exists()){
            dirFile.mkdirs();
            dirFileExist = false;
        }
        for (int i = 0; i < multipartFileList.size(); i++) {
            MultipartFile multipartFile = multipartFileList.get(i);
            String originalFilename = multipartFile.getOriginalFilename();
            File zipFile = new File(dirPath + File.separator + originalFilename.substring(0,originalFilename.lastIndexOf(".")) + "_" + formattedTimestamp + originalFilename.substring(originalFilename.lastIndexOf(".")));
            multipartFile.transferTo(zipFile);
        }
        /*//解压文件夹,删除原zip文件
        String unPackageDir = dirPath + File.separator + timestamp;
        Zip4jUtil.unPackZip(zipFile, null, unPackageDir);
        File unPackageFile = new File(unPackageDir);
        File[] unPackageFileList = unPackageFile.listFiles();
        zipFile.delete();
        for (int i = 0; i < unPackageFileList.length; i++) {
            File tempFile = unPackageFileList[i];
            if(tempFile.isDirectory()){
                FileUtil.deleteFile(unPackageFile);
                if(!dirFileExist){
                    FileUtil.deleteFile(dirFile);
                }
                return new Response().set(1,false,"拒绝上传:上传的压缩包存在文件夹");
            }
        }*/
        if(!dirFileExist){
            //路径不存在,说明是首次上传,设置物料对应的fileUrl
            Material temp = new Material();
            temp.setId(material.getId());
            temp.setFileUrl(dirPathDB);
            mapper.updateById(temp);
        }/*else{
            //查询路径下现有的所有文件
            String[] fileArr = dirFile.list();
            currentFileList = Arrays.asList(fileArr);
        }*/
        /*//查询新上传的文件路径
        String[] unPackageFileArr = unPackageFile.list();
        uploadingFileList = Arrays.asList(unPackageFileArr);
        for (String uploadingFile : uploadingFileList){
            if(currentFileList.contains(uploadingFile)){
                new File(unPackageDir + File.separator + uploadingFile)
                        .renameTo(new File(unPackageDir + File.separator  + uploadingFile.substring(0,uploadingFile.lastIndexOf(".")) + "_" + formattedTimestamp + uploadingFile.substring(uploadingFile.lastIndexOf("."))));
            }
        }
        //上传的文件夹转移到正式路径
        org.aspectj.util.FileUtil.copyDir(unPackageFile,dirFile);
        FileUtil.deleteFile(unPackageFile);*/
        return new Response().set(1,true,"上传完成");
    }
}