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();