From 60cf5b9cbadc3b2422f9ad1d723a9bb99aaf240c Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Thu, 28 Nov 2024 09:35:31 +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?=E8=B0=83=E6=95=B4=E4=BA=A7=E5=93=81=E9=9C=80=E6=B1=82=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: OTTO <731554297@qq.com> --- .../product/domain/PmsProductRequirement.java | 22 ++++++++++-- .../pms/product/domain/ProductReqStatus.java | 36 +++++++++++++++++++ .../domain/vo/PmsProductPlanSearchVo.java | 5 ++- .../PmsProductRequirementBatchUpdateVo.java | 6 ---- .../vo/PmsProductRequirementDataVo.java | 3 +- .../vo/PmsProductRequirementSearchVo.java | 5 ++- .../vo/PmsProductRequirementUpdateVo.java | 4 --- .../PmsProductRequirementServiceImpl.java | 33 ++++++----------- .../pms/PmsProductRequirementMapper.xml | 34 +++++++++++++----- 9 files changed, 98 insertions(+), 50 deletions(-) create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/ProductReqStatus.java diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductRequirement.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductRequirement.java index fc49f7a20..8dcfcf043 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductRequirement.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductRequirement.java @@ -35,9 +35,8 @@ public class PmsProductRequirement extends BaseEntity @ApiModelProperty(value = "标题") private String title; - /** 关联状态ID */ - @ApiModelProperty(value = "关联状态ID") - private Long statusId; + @ApiModelProperty(value = "产品需求状态") + private String status; /** 关联优先级ID */ @ApiModelProperty(value = "关联优先级ID") @@ -124,6 +123,23 @@ public class PmsProductRequirement extends BaseEntity @JsonInclude(JsonInclude.Include.NON_EMPTY) private List productIdentifierList; + /** + * 原需求id + */ + @ApiModelProperty(value = "原需求id") + private Long fromId; + /** + * 原需求id + */ + @ApiModelProperty(value = "关联项目需求id") + private Long projectReqId; + + @ApiModelProperty(value = "产品需求类型") + private String type; + + @ApiModelProperty(value = "需求标识") + private String identifier; + public PmsProductRequirementDataVo toPmsProductRequirementDataVo(){ PmsProductRequirementDataVo target = new PmsProductRequirementDataVo(); BeanUtils.copyProperties(this, target); diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/ProductReqStatus.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/ProductReqStatus.java new file mode 100644 index 000000000..6be9fd8ff --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/ProductReqStatus.java @@ -0,0 +1,36 @@ +package com.microservices.pms.product.domain; + +import lombok.Getter; + +/** + * 产品需求状态 + */ +@Getter +public enum ProductReqStatus { + USER_REQ("userReq", "待评审", "待评审的用户需求"), + REJECTED_USER_REQ("rejectedUserReq", "评审失败", "已拒绝的用户需求"), + PENDING_REVIEW_REQ_SPECS("pendingReviewReqSpecs", "待评审", "待评审的需求规格"), + REVIEWED_REQ_SPECS_CHANGING("reviewedReqSpecsChanging", "已评审", "已评审的需求规格(变更中)"), + PLANNED_REQ_SPECS("plannedReqSpecs", "计划中", "计划中的需求规格"), + PENDING_MODIFIED_REQ_SPECS("pendingModifiedReqSpecs", "待修正", "待修正的需求规格"), + REJECTED_REQ_SPECS("rejectedReqSpecs", "已拒绝", "已拒绝的需求规格"), + REVIEWED_REQ_SPECS("reviewedReqSpecs", "已评审", "已评审的需求规格"); + private final String key; + private final String name; + private final String remark; + + ProductReqStatus(String key, String name, String remark) { + this.key = key; + this.name = name; + this.remark = remark; + } + + public static ProductReqStatus getByKey(String key) { + for (ProductReqStatus status : ProductReqStatus.values()) { + if (status.getKey().equals(key)) { + return status; + } + } + return null; + } +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductPlanSearchVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductPlanSearchVo.java index b680e6940..4f6bf8b7e 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductPlanSearchVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductPlanSearchVo.java @@ -28,9 +28,8 @@ public class PmsProductPlanSearchVo @NotBlank(message = "产品标识不能为空") private String pmsProductIdentifier; - /** 关联状态ID */ - @ApiModelProperty(value = "关联状态ID") - private Long statusId; + @ApiModelProperty(value = "产品需求状态") + private String status; /** 关联优先级ID */ @ApiModelProperty(value = "关联优先级ID") diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementBatchUpdateVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementBatchUpdateVo.java index b284dbedc..c3e35cde8 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementBatchUpdateVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementBatchUpdateVo.java @@ -29,11 +29,6 @@ public class PmsProductRequirementBatchUpdateVo private Long priorityId; private Boolean priorityIdIsChange = false; - /** 关联状态ID */ - @ApiModelProperty(value = "关联状态ID") - private Long statusId; - private Boolean statusIdIsChange = false; - /** 关联产品模块ID */ @ApiModelProperty(value = "关联产品模块ID") private Long pmsProductModuleId; @@ -76,7 +71,6 @@ public class PmsProductRequirementBatchUpdateVo public Boolean thisIsChange() { return priorityIdIsChange - || statusIdIsChange || pmsProductModuleIdIsChange || pmsProductPlanIdIsChange || tagIdsIsChange diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementDataVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementDataVo.java index c7a4100a6..435fedbda 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementDataVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementDataVo.java @@ -5,6 +5,7 @@ import com.microservices.common.core.utils.bean.BeanUtils; import com.microservices.pms.product.domain.PmsProduct; import com.microservices.pms.product.domain.PmsProductModule; import com.microservices.pms.product.domain.PmsProductPlan; +import com.microservices.pms.product.domain.ProductReqStatus; import com.microservices.pms.project.domain.vo.BaseEntityVo; import com.microservices.system.api.domain.SimpleSysUser; import io.swagger.annotations.ApiModel; @@ -42,7 +43,7 @@ public class PmsProductRequirementDataVo extends BaseEntityVo /** 关联状态 */ @ApiModelProperty(value = "关联状态") - private PmsTypeDataVo status; + private ProductReqStatus status; /** 关联产品模块 */ @ApiModelProperty(value = "关联产品模块") diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementSearchVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementSearchVo.java index 127f6aa0b..42e73a604 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementSearchVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementSearchVo.java @@ -39,9 +39,8 @@ public class PmsProductRequirementSearchVo @ApiModelProperty(value = "需求负责人Gitlink ID") private String requirementAssigneeGitlinkId; - /** 关联状态ID */ - @ApiModelProperty(value = "关联状态ID") - private Long statusId; + @ApiModelProperty(value = "产品需求状态") + private String status; /** 创建者 */ @ApiModelProperty(value = "发布者用户名") diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementUpdateVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementUpdateVo.java index 2c3a83fcb..af64ff0e8 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementUpdateVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductRequirementUpdateVo.java @@ -34,10 +34,6 @@ public class PmsProductRequirementUpdateVo @ApiModelProperty(value = "关联优先级ID") private Long priorityId; - /** 关联状态ID */ - @ApiModelProperty(value = "关联状态ID") - private Long statusId; - /** 关联产品模块ID */ @ApiModelProperty(value = "关联产品模块ID") private Long pmsProductModuleId; 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 30d1e3c92..ee428ab13 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 @@ -13,10 +13,7 @@ import com.microservices.pms.common.service.IPmsCommonService; import com.microservices.pms.enterprise.domain.PmsEnterprise; import com.microservices.pms.enterprise.service.IPmsEnterpriseService; import com.microservices.pms.journals.service.IPmsJournalsService; -import com.microservices.pms.product.domain.PmsProduct; -import com.microservices.pms.product.domain.PmsProductModule; -import com.microservices.pms.product.domain.PmsProductPlan; -import com.microservices.pms.product.domain.PmsProductRequirement; +import com.microservices.pms.product.domain.*; import com.microservices.pms.product.domain.vo.PmsProductRequirementBatchUpdateVo; import com.microservices.pms.product.domain.vo.PmsProductRequirementDataVo; import com.microservices.pms.product.domain.vo.PmsProductRequirementDetailVo; @@ -123,8 +120,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS pmsProductRequirementDataVo.setStatus( PmsUtils.getSelectObjectInCache( hashMap - , pmsProductStatusService::selectPmsProductStatusById - , pmsProductRequirement.getStatusId())); + , ProductReqStatus::getByKey + , pmsProductRequirement.getStatus())); // 设置产品模块 if (pmsProductRequirement.getPmsProductModuleId() != null) { pmsProductRequirementDataVo.setPmsProductModule( @@ -213,9 +210,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS pmsProductPriorityService.selectPmsProductPriorityIdByInputId(pmsProductRequirement.getPriorityId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE); pmsProductRequirement.setPriorityId(priorityId); // 设置默认需求状态 - Long statusId= - pmsProductStatusService.selectPmsProductDefaultStatusId(PmsConstants.PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE); - pmsProductRequirement.setStatusId(statusId); + // TODO:需要根据用户需求、需求规格来判断需求状态 + // pmsProductRequirement.setStatusId(statusId); checkPmsProductRequirement(pmsProductRequirement, pmsProduct, null); Date now=DateUtils.getNowDate(); @@ -305,12 +301,9 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS pmsProductRequirement.setPriorityId(priorityId); } - if(pmsProductRequirement.getStatusId()!=null){ - // 设置需求状态 - Long statusId= - pmsProductStatusService.selectPmsProductStatusIdByInputId(pmsProductRequirement.getStatusId(),PmsConstants.PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE); - pmsProductRequirement.setStatusId(statusId); - } + // 设置需求状态 + // TODO:需要根据用户需求、需求规格来判断需求状态 + // pmsProductRequirement.setStatusId(statusId); PmsProduct pmsProduct=pmsProductService.selectPmsProductByIdentifier(oldPmsProductRequirement.getPmsProductIdentifier()); checkPmsProductRequirement(pmsProductRequirement, pmsProduct, oldPmsProductRequirement); if (pmsProductRequirement.getStartTime() != null && pmsProductRequirement.getEndTime() == null) { @@ -457,10 +450,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS pmsProductRequirementBatchUpdateVo.setPriorityId(jsonObject.getLong("priorityId")); pmsProductRequirementBatchUpdateVo.setPriorityIdIsChange(true); } - if(jsonObject.containsKey("statusId")){ - pmsProductRequirementBatchUpdateVo.setStatusId(jsonObject.getLong("statusId")); - pmsProductRequirementBatchUpdateVo.setStatusIdIsChange(true); - } + // TODO:需考虑是否涉及状态的变更 if(jsonObject.containsKey("pmsProductModuleId")){ pmsProductRequirementBatchUpdateVo.setPmsProductModuleId(jsonObject.getLong("pmsProductModuleId")); pmsProductRequirementBatchUpdateVo.setPmsProductModuleIdIsChange(true); @@ -532,9 +522,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS if (pmsProductRequirementBatchUpdateVo.getPriorityIdIsChange()) { pmsProductPriorityService.selectPmsProductPriorityIdByInputId(pmsProductRequirementBatchUpdateVo.getPriorityId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE); } - if (pmsProductRequirementBatchUpdateVo.getStatusIdIsChange()) { - pmsProductStatusService.selectPmsProductStatusIdByInputId(pmsProductRequirementBatchUpdateVo.getStatusId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE); - } + + // TODO:需考虑是否涉及状态的变更 } private void checkProjectId(Long projectId, PmsProduct pmsProduct) { diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductRequirementMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductRequirementMapper.xml index f77415100..85d9f60e5 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductRequirementMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductRequirementMapper.xml @@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -26,13 +26,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + select id, title, `index`, - status_id, + status, priority_id, pms_product_module_id, pms_product_plan_id, @@ -49,7 +53,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" create_by, del_flag, requirement_assignee_gitlink_ids, - pms_project_id + pms_project_id, + from_id, + project_req_id, + type, + identifier from pms_product_requirement @@ -67,7 +75,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and title like concat('%', #{title}, '%') - and status_id = #{statusId} and priority_id = #{priorityId} and pms_product_plan_id = #{pmsProductPlanId} and pms_product_identifier = #{pmsProductIdentifier} @@ -132,7 +139,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" `index`, title, - status_id, + `status`, priority_id, pms_product_module_id, pms_product_plan_id, @@ -150,11 +157,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" del_flag, requirement_assignee_gitlink_ids, pms_project_id, + from_id, + project_req_id, + type, + identifier, #{index}, #{title}, - #{statusId}, + #{status}, #{priorityId}, #{pmsProductModuleId}, #{pmsProductPlanId}, @@ -172,6 +183,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{delFlag}, #{requirementAssigneeGitlinkIds}, #{pmsProjectId}, + #{fromId}, + #{projectReqId}, + #{type}, + #{identifier}, @@ -180,7 +195,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" `index` = #{index}, title = #{title}, - status_id = #{statusId}, + `status` = #{status}, priority_id = #{priorityId}, pms_product_module_id = #{pmsProductModuleId}, pms_product_plan_id = #{pmsProductPlanId}, @@ -198,13 +213,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" del_flag = #{delFlag}, requirement_assignee_gitlink_ids = #{requirementAssigneeGitlinkIds}, pms_project_id = #{pmsProjectId}, + from_id = #{fromId}, + project_req_id = #{project_req_id}, + type = #{type}, + identifier = #{identifier}, where id = #{id} update pms_product_requirement - status_id = #{statusId}, priority_id = #{priorityId}, pms_product_module_id = #{pmsProductModuleId}, pms_product_plan_id = #{pmsProductPlanId},