diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusAssetResultDataVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusAssetResultDataVo.java index 1647b272b..b060f7152 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusAssetResultDataVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusAssetResultDataVo.java @@ -2,6 +2,7 @@ package com.microservices.pms.productLibrary.domain.vo; import com.alibaba.fastjson2.JSONObject; import com.microservices.pms.productLibrary.domain.ProductLibraryRepositoriesFormatEnum; +import com.microservices.pms.utils.PmsUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -123,13 +124,7 @@ public class NexusAssetResultDataVo { } public String parseDirectory() { - // 找到最后一个"/"的位置 - int lastSlashIndex = this.name.lastIndexOf('/'); - if (lastSlashIndex > 0) { - // 截取到"/"之前的所有字符作为文件夹路径 - return this.name.substring(0, lastSlashIndex); - } - return ""; + return PmsUtils.parseDirectory(this.name); } public String parseNexusVersion() { diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusResultDataVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusResultDataVo.java index 1e08a2257..5027c0c3f 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusResultDataVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusResultDataVo.java @@ -53,4 +53,9 @@ public class NexusResultDataVo { */ @ApiModelProperty(value = "是否已选择") private Boolean isChoose = false; + /** + * 默认文件夹 + */ + @ApiModelProperty(value = "默认文件夹") + private String defaultDir; } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryAsyncServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryAsyncServiceImpl.java index 71810f184..8a53932b4 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryAsyncServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryAsyncServiceImpl.java @@ -279,7 +279,7 @@ public class PmsProductLibraryAsyncServiceImpl implements IPmsProductLibraryAsyn componentRawInputVo.setVersion(version); componentRawInputVo.setAttributes(customAttribute); componentRawInputVo.setAssetList(assetRawInputVoList); - componentRawInputVo.setDirectory(String.format("/%s/%s", repo.getAlias(), directory)); + componentRawInputVo.setDirectory(EscapeUtil.removeExtraSlashOfUrl(String.format("/%s/%s", repo.getAlias(), directory))); pmsProductLibraryComponentService.insertRawComponent(componentRawInputVo); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java index cc543fc0e..ab97fad3b 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java @@ -5,6 +5,7 @@ import com.microservices.common.core.exception.ServiceException; import com.microservices.common.core.utils.DateUtils; import com.microservices.common.core.utils.PageUtils; import com.microservices.common.core.utils.StringUtils; +import com.microservices.common.core.utils.html.EscapeUtil; import com.microservices.common.core.web.page.GenericsTableDataInfo; import com.microservices.common.security.utils.SecurityUtils; import com.microservices.pms.enterprise.domain.PmsEnterprise; @@ -21,6 +22,7 @@ import com.microservices.pms.productLibrary.service.IPmsProductLibraryProductRep import com.microservices.pms.productLibrary.service.IPmsProductLibraryRepositoriesService; import com.microservices.pms.utils.NexusRequestHelper; import com.microservices.pms.utils.NexusRequestUrl; +import com.microservices.pms.utils.PmsUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -180,6 +182,7 @@ public class PmsProductLibraryProductRepoServiceImpl implements IPmsProductLibra } setNexusResultDataVoChoose(productComponentList, keyNexusResultDataVoList, true); + setNexusResultDataVoPath(repo, keyNexusResultDataVoList); return buildDockerResultVo(keyNexusResultDataVoList); } else { NexusComponentSearchVo nexusComponentSearchVo = NexusComponentSearchVo.toRead(componentSearchVo, nexusRequestHelper.getNexusTid()); @@ -189,6 +192,7 @@ public class PmsProductLibraryProductRepoServiceImpl implements IPmsProductLibra if (nexusComponentResultStateVo.getSuccess()) { List nexusResultDataVoList = nexusComponentResultStateVo.getData(); setNexusResultDataVoChoose(productComponentList, nexusResultDataVoList, false); + setNexusResultDataVoPath(repo, nexusResultDataVoList); // 当制品库为Maven时,需排除自动生成的制品数据 if (ProductLibraryRepositoriesFormatEnum.MAVEN.getKey().equals(repo.getFormat())) { List keyNexusResultDataVoList = new ArrayList<>(); @@ -245,6 +249,16 @@ public class PmsProductLibraryProductRepoServiceImpl implements IPmsProductLibra } } + private void setNexusResultDataVoPath(PmsProductLibraryRepositories repo, List nexusResultDataVoList) { + nexusResultDataVoList.forEach(x -> { + if (ProductLibraryRepositoriesFormatEnum.DOCKER.getKey().equals(repo.getFormat())) { + x.setDefaultDir(EscapeUtil.removeExtraSlashOfUrl(String.format("/%s/", repo.getAlias()))); + } else { + x.setDefaultDir(EscapeUtil.removeExtraSlashOfUrl(String.format("/%s/%s", repo.getAlias(), PmsUtils.parseDirectory(x.getId())))); + } + }); + } + private NexusComponentResultVo> buildDockerResultVo(List data) { NexusComponentResultVo> target = new NexusComponentResultVo<>(); target.setAction("coreui_Browse"); diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsUtils.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsUtils.java index 83726bc48..829041dcc 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsUtils.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsUtils.java @@ -80,4 +80,19 @@ public class PmsUtils { matcher.appendTail(sb); return sb.toString(); } + + /** + * 获取文件路径中文件所在的文件夹 + * + * @return 文件夹 + */ + public static String parseDirectory(String filePath) { + // 找到最后一个"/"的位置 + int lastSlashIndex = filePath.lastIndexOf('/'); + if (lastSlashIndex > 0) { + // 截取到"/"之前的所有字符作为文件夹路径 + return filePath.substring(0, lastSlashIndex); + } + return ""; + } }