From 39f20b0041e5b7e523a7f6d73e3f10f346316b5c Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Mon, 26 Aug 2024 16:53:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=8C=E5=96=84):=20=E4=BA=A7=E5=93=81=E5=BA=93?= =?UTF-8?q?=E4=B8=8D=E6=8F=90=E4=BE=9B=E7=9B=B4=E6=8E=A5=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E6=93=8D=E4=BD=9C=EF=BC=8C=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E4=BB=8E=E7=9F=A5=E8=AF=86=E5=BA=93=E4=B8=AD?= =?UTF-8?q?=E9=80=89=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 产品库上传文档逻辑优化: 1. 上传产品文档仅需传递文档id,通过文档id查找文档 2. 限制文档类型仅允许为文档类型或附件类型 --- .../domain/vo/PmsDocumentDetailVo.java | 2 +- .../PmsProductLibraryController.java | 10 ++-- .../domain/vo/ProductComponentInputVo.java | 49 +++++++++++++++++++ .../service/IPmsProductLibraryService.java | 4 +- .../impl/PmsProductLibraryServiceImpl.java | 35 +++++++------ 5 files changed, 75 insertions(+), 25 deletions(-) create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/ProductComponentInputVo.java diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/document/domain/vo/PmsDocumentDetailVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/document/domain/vo/PmsDocumentDetailVo.java index 060ff3885..00cfc782f 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/document/domain/vo/PmsDocumentDetailVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/document/domain/vo/PmsDocumentDetailVo.java @@ -18,7 +18,7 @@ import java.util.Date; @Data public class PmsDocumentDetailVo { - + private Long id; /** 文档名称 */ @ApiModelProperty(value = "文档名称") private String name; 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 39f9c6cb1..21822c294 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 @@ -6,7 +6,6 @@ import com.microservices.common.core.web.domain.GenericsAjaxResult; import com.microservices.common.core.web.page.GenericsTableDataInfo; import com.microservices.common.log.annotation.Log; import com.microservices.common.log.enums.BusinessType; -import com.microservices.pms.productLibrary.domain.ProductLibraryRepositoriesFormatEnum; import com.microservices.pms.productLibrary.domain.vo.*; import com.microservices.pms.productLibrary.service.IPmsProductLibraryComponentService; import com.microservices.pms.productLibrary.service.IPmsProductLibraryService; @@ -123,11 +122,10 @@ public class PmsProductLibraryController extends BaseController { @ApiOperation(value = "上传产品库制品") public AjaxResult uploadProductAsset(@PathVariable String enterpriseIdentifier, @ApiParam(value = "产品库标识", required = true) @PathVariable String name, - @Valid @RequestBody ComponentRawInputVo componentRawInputVo) { - componentRawInputVo.setRepoName(name); - componentRawInputVo.setEnterpriseIdentifier(enterpriseIdentifier); - componentRawInputVo.setFormat(ProductLibraryRepositoriesFormatEnum.PRODUCT.getKey()); - return toAjax(pmsProductLibraryService.uploadProductAsset(componentRawInputVo)); + @Valid @RequestBody ProductComponentInputVo productComponentInputVo) { + productComponentInputVo.setProductRepoName(name); + productComponentInputVo.setEnterpriseIdentifier(enterpriseIdentifier); + return toAjax(pmsProductLibraryService.uploadProductAsset(productComponentInputVo)); } /** diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/ProductComponentInputVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/ProductComponentInputVo.java new file mode 100644 index 000000000..67eb2c950 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/ProductComponentInputVo.java @@ -0,0 +1,49 @@ +package com.microservices.pms.productLibrary.domain.vo; + +import com.microservices.common.core.utils.bean.BeanUtils; +import com.microservices.pms.productLibrary.domain.ProductLibraryRepositoriesFormatEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.util.List; + +/** + * 制品Raw输入对象 + * + * @author otto + * @date 2024-07-04 + */ +@Data +@ApiModel("产品制品输入对象") +public class ProductComponentInputVo { + @ApiModelProperty(value = "产品库标识", hidden = true) + private String productRepoName; + @ApiModelProperty(value = "组织标识", hidden = true) + private String enterpriseIdentifier; + @ApiModelProperty(value = "制品格式", hidden = true) + private String format = ProductLibraryRepositoriesFormatEnum.PRODUCT.getKey(); + @ApiModelProperty(value = "制品版本") + @NotBlank(message = "制品版本不能为空") + private String version; + @ApiModelProperty(value = "文档列表") + @Size(min = 1, message = "最少上传一个文档") + @Valid + private List docList; + @ApiModelProperty(value = "目录:上传文件的目录(例如/path/to/files/)") + @NotNull(message = "目录不能为空") + private String directory; + + public ComponentRawInputVo toComponentRawInputVo(List assetList) { + ComponentRawInputVo target = new ComponentRawInputVo(); + BeanUtils.copyProperties(this, target); + target.setRepoName(productRepoName); + target.setAssetList(assetList); + return target; + } + +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryService.java index d88f46a15..af2af5be4 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryService.java @@ -95,10 +95,10 @@ public interface IPmsProductLibraryService { /** * 上传产品库制品 * - * @param componentRawInputVo 产品库制品输入对象 + * @param productComponentInputVo 产品库制品输入对象 * @return 结果 */ - Boolean uploadProductAsset(ComponentRawInputVo componentRawInputVo); + Boolean uploadProductAsset(ProductComponentInputVo productComponentInputVo); GenericsTableDataInfo selectDocList(DocSearchVo docSearchVo); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryServiceImpl.java index cb53f9b7e..b5a33a5a4 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryServiceImpl.java @@ -9,6 +9,7 @@ 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.document.domain.vo.PmsDocumentDetailVo; import com.microservices.pms.document.domain.vo.PmsDocumentVo; import com.microservices.pms.document.service.IPmsDocumentService; import com.microservices.pms.enterprise.domain.PmsEnterprise; @@ -37,6 +38,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -166,28 +168,29 @@ public class PmsProductLibraryServiceImpl implements IPmsProductLibraryService { } @Override - public Boolean uploadProductAsset(ComponentRawInputVo componentRawInputVo) { - PmsProductLibraryRepositories repo = pmsProductLibraryRepositoriesService.getPmsProductLibraryRepositories( - ProductLibraryRepositoriesFormatEnum.isProduct(componentRawInputVo.getFormat()), - componentRawInputVo.getEnterpriseIdentifier(), - componentRawInputVo.getRepoName(), - componentRawInputVo.getSnapshotName()); + public Boolean uploadProductAsset(ProductComponentInputVo productComponentInputVo) { + PmsProductLibraryRepositories repo = + selectPmsProductLibraryByName(productComponentInputVo.getEnterpriseIdentifier(), productComponentInputVo.getProductRepoName()); - PmsEnterprise pmsEnterprise = pmsEnterpriseService.selectPmsEnterpriseByIdentifier(componentRawInputVo.getEnterpriseIdentifier()); - for (AssetRawInputVo assetRawInputVo : componentRawInputVo.getAssetList()) { - if (!StringUtils.isNumeric(assetRawInputVo.getAssetIdentifier())) { - throw new ServiceException("制品标识格式错误,产品库的制品标识应该为文档Id(制品文件名称[%s])", assetRawInputVo.getFilename()); + List assetList = new ArrayList<>(); + PmsEnterprise pmsEnterprise = pmsEnterpriseService.selectPmsEnterpriseByIdentifier(productComponentInputVo.getEnterpriseIdentifier()); + for (Long docId : productComponentInputVo.getDocList()) { + PmsDocumentDetailVo pmsDocument = pmsDocumentService.selectPmsDocumentDetailVoByIdAndEnterpriseId(docId, pmsEnterprise.getId()); + if (Objects.equals(pmsDocument.getDocType(), 1) || Objects.equals(pmsDocument.getDocType(), 4)) { + throw new ServiceException("产品库文档类型仅允许为文档类型或附件类型(文档Id[%s])", pmsDocument.getId()); } - PmsProductLibraryComponent pmsProductLibraryComponent = - pmsProductLibraryComponentMapper.selectPmsProductLibraryComponentByIdentifier(repo.getId(), assetRawInputVo.getAssetIdentifier()); + pmsProductLibraryComponentMapper.selectPmsProductLibraryComponentByIdentifier(repo.getId(), String.valueOf(docId)); if (pmsProductLibraryComponent != null) { - throw new ServiceException("产品库已存在该文档,请勿重复上传(文档文件名称[%s])", assetRawInputVo.getFilename()); + throw new ServiceException("产品库已存在该文档,请勿重复上传(文档文件名称[%s])", pmsDocument.getName()); } - pmsDocumentService.selectPmsDocumentDetailVoByIdAndEnterpriseId(Long.parseLong(assetRawInputVo.getAssetIdentifier()), pmsEnterprise.getId()); + AssetRawInputVo assetRawInputVo = new AssetRawInputVo(); + assetRawInputVo.setFilename(pmsDocument.getName()); + assetRawInputVo.setAssetIdentifier(String.valueOf(pmsDocument.getId())); + assetRawInputVo.setFileIdentifier(pmsDocument.getAttachmentIdentifier()); + assetList.add(assetRawInputVo); } - - return pmsProductLibraryComponentService.insertRawComponent(componentRawInputVo); + return pmsProductLibraryComponentService.insertRawComponent(productComponentInputVo.toComponentRawInputVo(assetList)); } @Override