From 573c97f4d9e99252cc10f2839757c2d27929820a Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Thu, 23 Jan 2025 17:09:50 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(=E4=BA=A7=E5=93=81=E5=BA=93=E4=BC=98?= =?UTF-8?q?=E5=8C=96):=20=E5=8F=97=E6=8E=A7=E5=BA=93=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=9A=84=E5=88=B6=E5=93=81=E8=A6=81=E8=AF=86=E5=88=AB=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E4=B8=BA=E6=B5=81=E6=B0=B4=E7=BA=BF=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通过fromType和attributes设置来源为流水线的相关数据 关联Issue:https://pm.gitlink.org.cn/Gitlink/projects/228/demand/124516 Signed-off-by: OTTO <731554297@qq.com> --- .../pms/productLibrary/domain/vo/ComponentRawInputVo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/ComponentRawInputVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/ComponentRawInputVo.java index a1a34cc10..c84ebe682 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/ComponentRawInputVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/ComponentRawInputVo.java @@ -46,7 +46,7 @@ public class ComponentRawInputVo { @ApiModelProperty(value = "目录:上传文件的目录(例如/path/to/files/)") @NotNull(message = "目录不能为空") private String directory; - @ApiModelProperty(value = "来源类型(流水线传pipeline,同时在attributes字段中传pipelineName,例如:{'pipeline':'持续集成流水线'})") + @ApiModelProperty(value = "来源类型(流水线传pipeline,同时在attributes字段中传pipelineName,例如:{'pipelineName':'持续集成流水线'})") private String fromType = "common"; public String getNexusRepoName() { From c271179b43f7ffb1f2c699da4e033fb12c44e24a Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Mon, 10 Feb 2025 15:15:28 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E4=BC=98?= =?UTF-8?q?=E5=8C=96):=20=E8=8E=B7=E5=8F=96=E5=88=B6=E5=93=81=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=97=B6=E8=8B=A5=E5=88=B6=E5=93=81=E6=9D=A5=E6=BA=90?= =?UTF-8?q?=E4=BA=8E=E6=B5=81=E6=B0=B4=E7=BA=BF=E9=9C=80=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit raw类型制品上传时设置制品在Nexus的AssetId Signed-off-by: OTTO <731554297@qq.com> --- .../service/impl/PmsProductLibraryComponentServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 8ecbf63dd..a58dace4b 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 @@ -487,6 +487,7 @@ public class PmsProductLibraryComponentServiceImpl implements IPmsProductLibrary success += insertPmsProductLibraryComponent(pmsProductLibraryComponent); pmsProductLibraryComponents.set(i, pmsProductLibraryComponent); } + pmsProductLibraryAsyncService.syncNexusMavenRepoComponent(repo, pmsProductLibraryComponents); return success > 0; } From 1000c7fed5dfe9753f0e3750555619243536ee15 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Mon, 10 Feb 2025 15:53:19 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E4=BC=98?= =?UTF-8?q?=E5=8C=96):=20=E8=8E=B7=E5=8F=96=E5=88=B6=E5=93=81=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=97=B6=E8=8B=A5=E5=88=B6=E5=93=81=E6=9D=A5=E6=BA=90?= =?UTF-8?q?=E4=BA=8E=E6=B5=81=E6=B0=B4=E7=BA=BF=E9=9C=80=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 获取制品列表时若制品来源于流水线则设置制品的来源标签 Signed-off-by: OTTO <731554297@qq.com> --- .../domain/PmsProductLibraryComponent.java | 2 +- .../domain/vo/NexusResultDataVo.java | 3 ++ .../PmsProductLibraryComponentMapper.java | 8 +++ ...PmsProductLibraryComponentServiceImpl.java | 49 +++++++++++++++++-- .../pms/PmsProductLibraryComponentMapper.xml | 8 +++ 5 files changed, 66 insertions(+), 4 deletions(-) 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} +