From 7894f29391537d207f9dcbb4d3e913307e8bf095 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Tue, 6 Aug 2024 15:01:06 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E5=9F=BA=E4=BA=8ECMDB=E5=88=B6?= =?UTF-8?q?=E5=93=81=E5=AE=9A=E5=88=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 获取产品库制品列表接口: 1. 默认查询组织下所有产品库的制品列表,可传入产品库标识进行限定 2. 可传入需排除的制品Id列表参数(当CMDB已处理制品后将返回已处理的制品id列表,此时将不返回这些制品) 3. 拼接产品库地址,返回制品下载地址 --- .../PmsProductLibraryController.java | 14 +++ .../domain/PmsProductLibraryComponent.java | 7 ++ .../vo/PmsProductLibraryComponentDataVo.java | 97 +++++++++++++++++++ .../PmsProductLibraryComponentSearchVo.java | 26 +++++ .../PmsProductLibraryComponentMapper.java | 9 ++ .../PmsProductLibraryRepositoriesMapper.java | 1 + .../IPmsProductLibraryProductRepoService.java | 2 + ...IPmsProductLibraryRepositoriesService.java | 2 + ...sProductLibraryProductRepoServiceImpl.java | 28 ++++++ ...ProductLibraryRepositoriesServiceImpl.java | 10 ++ .../pms/PmsProductLibraryComponentMapper.xml | 42 ++++++++ .../PmsProductLibraryRepositoriesMapper.xml | 5 + 12 files changed, 243 insertions(+) create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentDataVo.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentSearchVo.java diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryController.java index 93a355b07..a6fba2e7f 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryController.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryController.java @@ -35,6 +35,20 @@ public class PmsProductLibraryController extends BaseController { @Autowired private IPmsProductLibraryComponentService pmsProductLibraryComponentService; + /** + * 获取产品库制品列表 + */ +// @RequiresPermissions("pms:pmsProductLibraryRepositories:list") + @GetMapping("/componentList") + @ApiOperation(value = "获取产品库制品列表") + public GenericsTableDataInfo selectComponentList( + @PathVariable String enterpriseIdentifier, + @ApiParam(value = "产品库制品查询条件") PmsProductLibraryComponentSearchVo search) { + search.setPmsEnterpriseIdentifier(enterpriseIdentifier); + startPage(); + return pmsProductLibraryProductRepoService.selectComponentList(search); + } + /** * 查询制品库-仓库列表 */ 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 b5a4c773d..f52a0d887 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 @@ -3,6 +3,7 @@ package com.microservices.pms.productLibrary.domain; import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.annotation.JsonInclude; import com.microservices.common.core.utils.StringUtils; +import com.microservices.common.core.utils.bean.BeanUtils; import com.microservices.common.core.utils.sign.Base64; import com.microservices.common.core.web.domain.BaseEntity; import com.microservices.pms.productLibrary.domain.vo.*; @@ -173,4 +174,10 @@ public class PmsProductLibraryComponent extends BaseEntity { target.setDirectory(this.getGroup()); return target; } + + public PmsProductLibraryComponentDataVo toPmsProductLibraryComponentDataVo() { + PmsProductLibraryComponentDataVo target = new PmsProductLibraryComponentDataVo(); + BeanUtils.copyProperties(this, target); + return target; + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentDataVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentDataVo.java new file mode 100644 index 000000000..3bcdd57c2 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentDataVo.java @@ -0,0 +1,97 @@ +package com.microservices.pms.productLibrary.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 制品库数据对象 + * + * @author otto + * @date 2024-07-11 + */ +@Data +@ApiModel("产品库制品数据对象") +public class PmsProductLibraryComponentDataVo { + + /** + * 制品ID + */ + private Long id; + + /** + * 制品标识 + */ + @ApiModelProperty(value = "制品标识") + private String identifier; + + /** + * 制品路径 + */ + @ApiModelProperty(value = "制品路径") + private String path; + + /** + * 制品所在组 + */ + @ApiModelProperty(value = "制品所在组") + private String group; + + /** + * 制品名称 + */ + @ApiModelProperty(value = "制品名称") + private String name; + + /** + * 制品库Id + */ + @ApiModelProperty(value = "制品库Id") + private Long repoId; + + /** + * 制品版本 + */ + @ApiModelProperty(value = "制品版本") + private String version; + + /** + * 制品文件Id + */ + @ApiModelProperty(value = "制品文件Id") + private String fileIdentifier; + + /** + * 制品下载地址 + */ + @ApiModelProperty(value = "制品下载地址") + private String downloadUrl; + /** + * 创建者 + */ + @ApiModelProperty(value = "创建者", hidden = true) + private String createBy; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建时间", hidden = true) + private Date createTime; + + /** + * 更新者 + */ + @ApiModelProperty(value = "更新者", hidden = true) + private String updateBy; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新时间", hidden = true) + private Date updateTime; +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentSearchVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentSearchVo.java new file mode 100644 index 000000000..ee0897ba7 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentSearchVo.java @@ -0,0 +1,26 @@ +package com.microservices.pms.productLibrary.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 制品库数据对象 + * + * @author otto + * @date 2024-07-11 + */ +@Data +@ApiModel("产品库制品查询对象") +public class PmsProductLibraryComponentSearchVo { + @ApiModelProperty(value = "需排除的制品Id列表(逗号分割的字符串)") + private String excludeIds; + @ApiModelProperty(value = "产品库标识") + private String productRepoName; + /** + * 关联企业ID + */ + @ApiModelProperty(value = "关联企业标识", hidden = true) + private String pmsEnterpriseIdentifier; + +} 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 df515e340..d29715a4a 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 @@ -1,6 +1,7 @@ package com.microservices.pms.productLibrary.mapper; import com.microservices.pms.productLibrary.domain.PmsProductLibraryComponent; +import com.microservices.pms.productLibrary.domain.vo.PmsProductLibraryComponentSearchVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -89,4 +90,12 @@ public interface PmsProductLibraryComponentMapper { * @return 制品文件列表 */ List selectPmsProductLibraryComponentUnderThePath(@Param("path") String path, @Param("repoId") Long repoId, @Param("pmsEnterpriseId") Long pmsEnterpriseId); + + /** + * 查询产品库制品列表 + * + * @param search 查询条件 + * @return 制品列表 + */ + List selectProductRepoComponentList(PmsProductLibraryComponentSearchVo search); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryRepositoriesMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryRepositoriesMapper.java index a5dd5c623..83481c2b9 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryRepositoriesMapper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryRepositoriesMapper.java @@ -119,4 +119,5 @@ public interface PmsProductLibraryRepositoriesMapper { List selectPmsProductLibrarySnapshotPageList(@Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier, @Param("repoName") String repoName, @Param("snapshotName") String snapshotName); + PmsProductLibraryRepositories selectProductRepoById(Long repoId); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryProductRepoService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryProductRepoService.java index c4dab2b0b..4858d2396 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryProductRepoService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryProductRepoService.java @@ -74,4 +74,6 @@ public interface IPmsProductLibraryProductRepoService { * @return 制品列表 */ NexusComponentResultVo> selectPmsProductLibraryKeyComponentList(String enterpriseIdentifier, ComponentSearchVo componentSearchVo); + + GenericsTableDataInfo selectComponentList(PmsProductLibraryComponentSearchVo search); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryRepositoriesService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryRepositoriesService.java index b486c8382..6ee231ccb 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryRepositoriesService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryRepositoriesService.java @@ -129,4 +129,6 @@ public interface IPmsProductLibraryRepositoriesService { * @return 锁定中的制品库id列表 */ List getLockStatusRepositoryList(String enterpriseIdentifier, String repoIds); + + PmsProductLibraryRepositories selectPmsProductLibraryRepositoriesById(Long repoId); } 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 4db11ad36..6a93a749c 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 @@ -6,6 +6,7 @@ import com.microservices.common.core.utils.DateUtils; import com.microservices.common.core.utils.PageUtils; import com.microservices.common.core.utils.ServletUtils; 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; @@ -27,6 +28,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author OTTO @@ -67,6 +69,15 @@ public class PmsProductLibraryProductRepoServiceImpl implements IPmsProductLibra return pmsProductLibraryRepositories; } + private PmsProductLibraryRepositories selectPmsProductLibraryRepositoriesById(Long repoId) { + PmsProductLibraryRepositories pmsProductLibraryRepositories = + pmsProductLibraryRepositoriesMapper.selectProductRepoById(repoId); + if (pmsProductLibraryRepositories == null) { + throw new ServiceException("组织下不存在该产品库(产品库id[%d])", repoId); + } + return pmsProductLibraryRepositories; + } + @Override public GenericsTableDataInfo selectPmsProductLibraryPageList(String enterpriseIdentifier, String name) { return PageUtils.toPage( @@ -247,6 +258,23 @@ public class PmsProductLibraryProductRepoServiceImpl implements IPmsProductLibra } } + @Override + public GenericsTableDataInfo selectComponentList(PmsProductLibraryComponentSearchVo search) { + List pmsProductLibraryComponentList = + pmsProductLibraryComponentMapper.selectProductRepoComponentList(search); + List repoIdList = pmsProductLibraryComponentList.stream().map(PmsProductLibraryComponent::getRepoId).distinct().collect(Collectors.toList()); + List repoList = repoIdList.stream().map(this::selectPmsProductLibraryRepositoriesById).collect(Collectors.toList()); + return PageUtils.toPage(pmsProductLibraryComponentList, x -> toPmsProductLibraryComponentDataVo(x, repoList)); + } + + private PmsProductLibraryComponentDataVo toPmsProductLibraryComponentDataVo(PmsProductLibraryComponent component, List repoList) { + PmsProductLibraryComponentDataVo pmsProductLibraryComponentDataVo = component.toPmsProductLibraryComponentDataVo(); + repoList.stream().filter(x -> x.getId().equals(component.getRepoId())).findFirst().ifPresent(repo -> pmsProductLibraryComponentDataVo.setDownloadUrl( + EscapeUtil.removeExtraSlashOfUrl( + String.format("%s/%s", repo.getUrl(), component.getPath())))); + return pmsProductLibraryComponentDataVo; + } + private void setNexusResultDataVoChoose(PmsProductLibraryRepositories repo, List productComponentList, List nexusResultDataVoList) { for (PmsProductLibraryComponent component : productComponentList) { nexusResultDataVoList.forEach(x -> { diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryRepositoriesServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryRepositoriesServiceImpl.java index 8750e1386..a57976167 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryRepositoriesServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryRepositoriesServiceImpl.java @@ -50,6 +50,16 @@ public class PmsProductLibraryRepositoriesServiceImpl implements IPmsProductLibr return pmsProductLibraryRepositories; } + @Override + public PmsProductLibraryRepositories selectPmsProductLibraryRepositoriesById(Long repoId) { + PmsProductLibraryRepositories pmsProductLibraryRepositories = + pmsProductLibraryRepositoriesMapper.selectPmsProductLibraryRepositoriesById(repoId); + if (pmsProductLibraryRepositories == null) { + throw new ServiceException("组织下不存在该制品库(制品库id[%s])", repoId); + } + return pmsProductLibraryRepositories; + } + @Override public NexusHostedRepoInputVo getNexusRepo(String type, String format, String nexusRepoName) { NexusHostedRepoInputVo nexusRepo = nexusRequestHelper.doRequestToJavaObject( 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 ca21436a2..11e14538f 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 @@ -49,6 +49,33 @@ from pms_product_library_component + + select pplc.id, + pplc.identifier, + pplc.path, + pplc.`group`, + pplc.name, + pplc.repo_id, + pplc.version, + pplc.file_identifier, + pplc.dept_id, + pplc.pms_enterprise_id, + pplc.update_time, + pplc.update_by, + pplc.create_time, + pplc.create_by, + pplc.del_flag, + pplc.attributes, + pplc.reserved_field_1, + pplc.reserved_field_2, + pplc.reserved_field_3, + pe.enterprise_identifier, + pplr.format + from pms_product_library_component as pplc + left join pms_enterprise as pe on pplc.pms_enterprise_id = pe.id + left join pms_product_library_repositories as pplr on pplr.id = pplc.repo_id + + + diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml index ebfbb1d05..5e64a6a2c 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml @@ -135,6 +135,11 @@ and pe.enterprise_identifier = #{pmsEnterpriseIdentifier} and pplr.snapshot_name IS NOT NULL + From 4471c5dc22bd3412c2c3b94b3cf0cc5796d2aab7 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Tue, 6 Aug 2024 15:03:31 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E5=9F=BA=E4=BA=8ECMDB=E5=88=B6?= =?UTF-8?q?=E5=93=81=E5=AE=9A=E5=88=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 创建产品库时获取产品库的Nexus地址,防止产品库中制品文件无法下载 --- .../impl/PmsProductLibraryProductRepoServiceImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) 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 6a93a749c..707728479 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 @@ -128,9 +128,18 @@ public class PmsProductLibraryProductRepoServiceImpl implements IPmsProductLibra requestBody.getFormat()), JSONObject.from(requestBody) ); + // 调用Nexus制品库详情接口获取制品库详情 + NexusHostedRepoInputVo nexusDataVo = pmsProductLibraryRepositoriesService.getNexusRepo( + productRepositoriesInputVo.getType(), + productRepositoriesInputVo.getFormat(), + PmsProductLibraryRepositories.getNexusProductRepositoriesName( + productRepositoriesInputVo.getEnterpriseIdentifier(), + productRepositoriesInputVo.getName() + )); // 数据库添加该制品库 PmsProductLibraryRepositories pmsProductLibraryRepositories = productRepositoriesInputVo.toPmsProductLibraryRepositories(); pmsProductLibraryRepositories.setPmsEnterpriseId(pmsEnterprise.getId()); + pmsProductLibraryRepositories.setUrl(nexusDataVo.getUrl()); pmsProductLibraryRepositories.setDeptId(pmsEnterprise.getDeptId()); pmsProductLibraryRepositories.setCreateTime(DateUtils.getNowDate()); pmsProductLibraryRepositories.setCreateBy(SecurityUtils.getUsername());