From f93f802671633f0618c27f5d8507cc33ecbacae5 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Thu, 12 Dec 2024 09:10:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=A1=B9=E7=9B=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E9=9C=80=E6=B1=82=E9=87=8D=E6=9E=84):=20?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=A7=E5=93=81=E4=B8=AD=E7=9A=84=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E8=A7=84=E6=A0=BC=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 需求规格纳入计划可选的项目 必须是关联了该产品的项目 关联Issue:https://pm.gitlink.org.cn/Gitlink/projects/228/bug/123983 Signed-off-by: OTTO <731554297@qq.com> --- .../controller/ProductReqSpecsController.java | 11 +++++++++++ .../service/IPmsProductRequirementService.java | 3 +++ .../impl/PmsProductRequirementServiceImpl.java | 16 ++++++++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqSpecsController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqSpecsController.java index e15776ed1..05887ff69 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqSpecsController.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqSpecsController.java @@ -9,6 +9,7 @@ import com.microservices.common.log.enums.BusinessType; import com.microservices.common.security.annotation.RequiresPermissions; import com.microservices.pms.product.domain.vo.*; import com.microservices.pms.product.service.IPmsProductRequirementService; +import com.microservices.pms.project.domain.PmsProject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -123,6 +124,16 @@ public class ProductReqSpecsController extends BaseController { return toAjax(pmsProductRequirementService.activePlan(productReqSpecsActivePlanVo)); } + /** + * 纳入计划时可选择项目列表 + */ + @ApiOperation(value = "纳入计划时可选择项目列表") + @RequiresPermissions("pms:pmsProduct:show") + @GetMapping("/{productIdentifier}/projectList") + public List projectList(@PathVariable("productIdentifier") String productIdentifier) { + return pmsProductRequirementService.selectReqSpecsProjectList(productIdentifier); + } + /** * 查询需求规格状态列表 */ diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java index 4c5d17f7b..d2265cc79 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java @@ -5,6 +5,7 @@ import com.microservices.common.core.web.page.GenericsTableDataInfo; import com.microservices.pms.product.domain.PmsProductRequirement; import com.microservices.pms.product.domain.enums.ProductReqStatus; import com.microservices.pms.product.domain.vo.*; +import com.microservices.pms.project.domain.PmsProject; import java.util.List; @@ -128,4 +129,6 @@ public interface IPmsProductRequirementService JSONObject selectReqSpecsAssociatedPlanData(Long reqSpecsId); void updateReqSpecsStatusByProjectReqId(Long projectReqId, ProductReqStatus productReqStatus); + + List selectReqSpecsProjectList(String productIdentifier); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java index 28f729fe6..033de6b46 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java @@ -539,7 +539,11 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS if (!ProductReqStatus.REVIEWED_REQ_SPECS.getKey().equals(reqSpecs.getStatus())) { throw new ServiceException("仅已评审状态的需求规格才能纳入计划"); } - PmsProject project = pmsProjectService.selectAndCheckPmsProjectById(productReqSpecsActivePlanVo.getProjectId()); + List pmsProjectList = selectReqSpecsProjectList(reqSpecs.getPmsProductIdentifier()); + if (pmsProjectList == null + || pmsProjectList.stream().noneMatch(x -> x.getId().equals(productReqSpecsActivePlanVo.getProjectId()))) { + throw new ServiceException("需求规格纳入计划时请选择关联了当前产品的项目"); + } List forgeFileIdentifierList = null; if (StringUtils.isNotEmpty(reqSpecs.getFileIdentifiers())) { // 需求规格文件上传至forge @@ -550,7 +554,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS PmsProjectIssuesInputVo pmsProjectIssuesInputVo = productReqSpecsActivePlanVo.toPmsProjectIssuesInputVo(reqSpecs, forgeFileIdentifierList); JSONObject projectIssue = pmsProjectIssuesService.insertPmsProjectIssues(pmsProjectIssuesInputVo); - reqSpecs.setPmsProjectId(project.getId()); + reqSpecs.setPmsProjectId(productReqSpecsActivePlanVo.getId()); reqSpecs.setProjectReqId(projectIssue.getLong("id")); reqSpecs.setStatus(ProductReqStatus.PLANNED_REQ_SPECS.getKey()); int success = updateRequirement(reqSpecs, reqSpecs.getPmsProductIdentifier()); @@ -604,6 +608,14 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS updateRequirement(pmsProductRequirement, pmsProductRequirement.getPmsProductIdentifier()); } + @Override + public List selectReqSpecsProjectList(String productIdentifier) { + PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(productIdentifier); + PmsProject pmsProjectSearch = new PmsProject(); + pmsProjectSearch.setPmsProductId(pmsProduct.getId()); + return pmsProjectService.selectPmsProjectList(pmsProjectSearch); + } + private ProductReqSpecsDetailVo toProductReqSpecsDetailVo(PmsProductRequirement pmsProductRequirement) { ProductReqSpecsDataVo productReqSpecsDataVo = toProductReqSpecsDataVo(pmsProductRequirement, null); ProductReqSpecsDetailVo productReqSpecsDetailVo = productReqSpecsDataVo.toProductReqSpecsDetailVo();