diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/PmsProductLibraryComponent.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/PmsProductLibraryComponent.java index 9bf92ebc6..8db8d6d3d 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/PmsProductLibraryComponent.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/PmsProductLibraryComponent.java @@ -129,7 +129,7 @@ public class PmsProductLibraryComponent extends BaseEntity { this.setIdentifier(composeIds[1]); } - this.setAttributes(JSONObject.toJSONString(nexusAssetVo)); +// this.setAttributes(JSONObject.toJSONString(nexusAssetVo)); } public ComponentMavenInputVo toComponentMavenInputVo(PmsProductLibraryRepositories snapshotRepo) { 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 5027c0c3f..cbba8d011 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 @@ -58,4 +58,7 @@ public class NexusResultDataVo { */ @ApiModelProperty(value = "默认文件夹") private String defaultDir; + + @ApiModelProperty(value = "制品来源标签") + private String fromTag; } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryComponentMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryComponentMapper.java index b46e7c3e9..70df04d82 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryComponentMapper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryComponentMapper.java @@ -107,4 +107,12 @@ public interface PmsProductLibraryComponentMapper { * @return 制品 */ PmsProductLibraryComponent selectPmsProductLibraryComponentByIdentifier(@Param("repoId") Long repoId, @Param("identifier") String identifier); + + /** + * 通过assetId列表查询来自流水线的制品 + * + * @param assetIdList assetId列表 + * @return 来自流水线的制品 + */ + List selectComponentListFromPipelineByAssetIdList(@Param("assetIdList") List assetIdList); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryComponentServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryComponentServiceImpl.java index a58dace4b..e27c12ec3 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryComponentServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryComponentServiceImpl.java @@ -1,5 +1,6 @@ package com.microservices.pms.productLibrary.service.impl; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.microservices.common.core.constant.CacheConstants; @@ -28,6 +29,7 @@ import org.apache.http.entity.mime.MultipartEntityBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.web.servlet.error.DefaultErrorAttributes; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -37,6 +39,8 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * 制品库-制品Service业务层处理 @@ -66,6 +70,8 @@ public class PmsProductLibraryComponentServiceImpl implements IPmsProductLibrary private IPmsProductLibraryAsyncService pmsProductLibraryAsyncService; @Autowired private RedisService redisService; + @Autowired + private DefaultErrorAttributes errorAttributes; /** * 查询制品库-制品 @@ -83,7 +89,7 @@ public class PmsProductLibraryComponentServiceImpl implements IPmsProductLibrary * * @param enterpriseIdentifier 组织标识 * @param componentSearchVo 制品库-制品 - * @param isProduct 是否产品 + * @param isProduct 是否产品 * @return 制品库-制品 */ @Override @@ -93,12 +99,49 @@ public class PmsProductLibraryComponentServiceImpl implements IPmsProductLibrary componentSearchVo.setRepositoryName(pmsProductLibraryRepositories.getNexusRepositoriesName()); NexusComponentSearchVo nexusComponentSearchVo = NexusComponentSearchVo.toRead(componentSearchVo, nexusRequestHelper.getNexusTid()); - return nexusRequestHelper.doRequestToJavaObjectList( + NexusComponentResultVo> resultVo = nexusRequestHelper.doRequestToJavaObjectList( NexusRequestUrl.DO_OPERATION(), JSONObject.from(nexusComponentSearchVo), NexusComponentResultVo.class, NexusResultDataVo.class ); + if (resultVo.getResult() != null) { + List dataList = resultVo.getResult().getData(); + // 提取assetId列表,从数据库中查询来源于流水线的制品 + List assetIdList = dataList.stream().map(NexusResultDataVo::getAssetId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + if (!assetIdList.isEmpty()) { + List pmsProductLibraryComponentList = pmsProductLibraryComponentMapper.selectComponentListFromPipelineByAssetIdList(assetIdList); + if (!pmsProductLibraryComponentList.isEmpty()) { + dataList.forEach(x -> { + if (x.getAssetId() != null) { + PmsProductLibraryComponent pipelineComponent = + pmsProductLibraryComponentList.stream().filter(component -> x.getAssetId().equals(component.getIdentifier())).findFirst().orElse(null); + if (pipelineComponent != null) { + String attributes = pipelineComponent.getAttributes(); + if (JSON.isValid(attributes)) { + JSONObject attributesJson = JSONObject.parseObject(attributes); + + String repository = attributesJson.getString("repository"); + String repositoryDes = null; + if (StringUtils.isNotEmpty(repository)) { + repositoryDes = String.format("【%s】仓库的", repository); + } + String pipelineName = attributesJson.getString("pipelineName"); + String pipelineNameDes = null; + if (StringUtils.isNotEmpty(pipelineName)) { + pipelineNameDes = String.format("【%s】", pipelineName); + } + String fromTag = String.format("由%s%s流水线生成", repositoryDes, pipelineNameDes); + x.setFromTag(fromTag); + } + } + } + }); + } + } + } + + return resultVo; } @Override @@ -533,7 +576,7 @@ public class PmsProductLibraryComponentServiceImpl implements IPmsProductLibrary public Boolean insertPypiComponent(ComponentInputVo componentInputVo) { PmsProductLibraryRepositories repo = pmsProductLibraryRepositoriesService.getPmsProductLibraryRepositories( false, - componentInputVo.getEnterpriseIdentifier(), + componentInputVo.getEnterpriseIdentifier(), componentInputVo.getRepoName(), componentInputVo.getSnapshotName()); pmsProductLibraryRepositoriesService.checkLockRepositoryStatus(repo.getPmsEnterpriseIdentifier(), repo.getId()); diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryComponentMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryComponentMapper.xml index 68e426b95..5ff0e36ae 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryComponentMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryComponentMapper.xml @@ -142,6 +142,14 @@ where repo_id = #{repoId} and identifier = #{identifier} +