dengzedong
11 小时以前 f023cdc41243754b0e79dc172149839a214c2f3e
删除多余备份pyd文件
已修改2个文件
71 ■■■■■ 文件已修改
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/resources/application-dev.yaml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java
@@ -41,12 +41,12 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.IOException;
import java.net.URLClassLoader;
import java.nio.file.Files;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -85,6 +85,74 @@
    @Value("${mpk.bak-resources}")
    private String mpkResources;
    @Value("${mpk.delete-bak-file-cache}")
    private Boolean isDeleteBakFile;
    @PostConstruct
    void init() {
        if (isDeleteBakFile) {
            //删除无用备份pyd文件
            try {
                deleteBakFile();
            } catch (Exception e) {
                log.error("删除多余备份pyd文件失败",e);
            }
        }
    }
    private void deleteBakFile() {
        // 租户目录下的无用pyd
        File bakDir = new File(mpkBakFilePath);
        if (bakDir.exists() && bakDir.isDirectory()) {
            File[] tenantDirs = bakDir.listFiles(dir -> dir.isDirectory() && !dir.getName().equals(MdkConstant.PROJECT_PUBLISH) && !dir.getName().equals(MdkConstant.PROJECT_UNPUBLISH) && dir.getName().matches("^[1-9]\\d*$"));
            if (tenantDirs != null && !CollectionUtils.isEmpty(Arrays.asList(tenantDirs))) {
                for (File tenantDir : tenantDirs) {
                    File[] pydFiles = tenantDir.listFiles(file -> file.isFile() && file.getName().endsWith(".pyd"));
                    if (pydFiles == null || CollectionUtils.isEmpty(Arrays.asList(pydFiles))) {
                        continue;
                    }
                    TenantContextHolder.setTenantId(Long.valueOf(tenantDir.getName()));
                    List<MpkFileEntity> fileEntityList = baseDao.selectList(new QueryWrapper<>());
                    List<String> filePathList = fileEntityList.stream().map(MpkFileEntity::getFilePath).collect(Collectors.toList());
                    for (File pydFile : pydFiles) {
                        if (!filePathList.contains(pydFile.getAbsolutePath())) {
                            log.info("删除多余备份pyd文件:" + pydFile.getAbsoluteFile());
                            pydFile.delete();
                        }
                    }
                }
            }
        }
//
//
//        // 环境变量MDK_PKGS下pyd文件
//        String mdkPkgs = System.getenv("MDK_PKGS");
//        File pkgsDir = new File(mdkPkgs);
//        List<File> pydFiles = getPydFiles(pkgsDir);
    }
    private List<File> getPydFiles(File pkgsDir) {
        List<File> result = new ArrayList<>();
        if (pkgsDir.exists() && pkgsDir.isDirectory()) {
            File[] files = pkgsDir.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isDirectory()) {
                        // 递归调用获取子目录下的 .pyd 文件
                        result.addAll(getPydFiles(file));
                    } else if (file.isFile() && file.getName().endsWith(".pyd")) {
                        result.add(file);
                    }
                }
            }
        }
        return result;
    }
    @Override
    public PageData<MpkFileDTO> page(Map<String, Object> params) {
        IPage<MpkFileEntity> page = baseDao.selectPage(
iailab-module-model/iailab-module-model-biz/src/main/resources/application-dev.yaml
@@ -50,6 +50,7 @@
mpk:
  bak-file-path: D:\DLUT\mpkBakFile
  delete-bak-file-cache: true # 是否删除多余备份pyd文件
  bak-resources: D:\DLUT\mpkResources
  model-file-path: D:\DLUT\MDK\Model\miail\
matlab: