feat(项目管理产品需求重构): 调整产品需求数据库字段

Signed-off-by: OTTO <731554297@qq.com>
This commit is contained in:
OTTO 2024-11-28 09:35:31 +08:00
parent 9fe9745caf
commit 60cf5b9cba
9 changed files with 98 additions and 50 deletions

View File

@ -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<String> 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);

View File

@ -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;
}
}

View File

@ -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")

View File

@ -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

View File

@ -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 = "关联产品模块")

View File

@ -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 = "发布者用户名")

View File

@ -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;

View File

@ -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) {

View File

@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="id" column="id" />
<result property="index" column="index" />
<result property="title" column="title" />
<result property="statusId" column="status_id" />
<result property="status" column="status"/>
<result property="priorityId" column="priority_id" />
<result property="pmsProductModuleId" column="pms_product_module_id" />
<result property="pmsProductPlanId" column="pms_product_plan_id" />
@ -26,13 +26,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="delFlag" column="del_flag" />
<result property="requirementAssigneeGitlinkIds" column="requirement_assignee_gitlink_ids"/>
<result property="pmsProjectId" column="pms_project_id" />
<result property="fromId" column="from_id"/>
<result property="projectReqId" column="project_req_id"/>
<result property="type" column="type"/>
<result property="identifier" column="identifier"/>
</resultMap>
<sql id="selectPmsProductRequirementVo">
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
</sql>
@ -67,7 +75,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectWhere">
<where>
<if test="title != null and title != ''"> and title like concat('%', #{title}, '%')</if>
<if test="statusId != null"> and status_id = #{statusId}</if>
<if test="priorityId != null "> and priority_id = #{priorityId}</if>
<if test="pmsProductPlanId != null "> and pms_product_plan_id = #{pmsProductPlanId}</if>
<if test="pmsProductIdentifier != null "> and pms_product_identifier = #{pmsProductIdentifier}</if>
@ -132,7 +139,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="index != null">`index`,</if>
<if test="title != null and title != ''">title,</if>
<if test="statusId != null">status_id,</if>
<if test="status != null">`status`,</if>
<if test="priorityId != null">priority_id,</if>
<if test="pmsProductModuleId != null">pms_product_module_id,</if>
<if test="pmsProductPlanId != null">pms_product_plan_id,</if>
@ -150,11 +157,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="delFlag != null">del_flag,</if>
<if test="requirementAssigneeGitlinkIds != null">requirement_assignee_gitlink_ids,</if>
<if test="pmsProjectId != null">pms_project_id,</if>
<if test="fromId != null">from_id,</if>
<if test="projectReqId != null">project_req_id,</if>
<if test="type != null and type != ''">type,</if>
<if test="identifier != null and identifier != ''">identifier,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="index != null">#{index},</if>
<if test="title != null and title != ''">#{title},</if>
<if test="statusId != null">#{statusId},</if>
<if test="status != null">#{status},</if>
<if test="priorityId != null">#{priorityId},</if>
<if test="pmsProductModuleId != null">#{pmsProductModuleId},</if>
<if test="pmsProductPlanId != null">#{pmsProductPlanId},</if>
@ -172,6 +183,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="delFlag != null">#{delFlag},</if>
<if test="requirementAssigneeGitlinkIds != null">#{requirementAssigneeGitlinkIds},</if>
<if test="pmsProjectId != null">#{pmsProjectId},</if>
<if test="fromId != null">#{fromId},</if>
<if test="projectReqId != null">#{projectReqId},</if>
<if test="type != null and type != ''">#{type},</if>
<if test="identifier != null and identifier != ''">#{identifier},</if>
</trim>
</insert>
@ -180,7 +195,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=",">
<if test="index != null">`index` = #{index},</if>
<if test="title != null and title != ''">title = #{title},</if>
<if test="statusId != null">status_id = #{statusId},</if>
<if test="status != null">`status` = #{status},</if>
<if test="priorityId != null">priority_id = #{priorityId},</if>
pms_product_module_id = #{pmsProductModuleId},
pms_product_plan_id = #{pmsProductPlanId},
@ -198,13 +213,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="delFlag != null">del_flag = #{delFlag},</if>
requirement_assignee_gitlink_ids = #{requirementAssigneeGitlinkIds},
pms_project_id = #{pmsProjectId},
<if test="fromId != null and fromId != ''">from_id = #{fromId},</if>
<if test="projectReqId != null and projectReqId != ''">project_req_id = #{project_req_id},</if>
<if test="type != null and type != ''">type = #{type},</if>
<if test="identifier != null and identifier != ''">identifier = #{identifier},</if>
</trim>
where id = #{id}
</update>
<update id="batchUpdatePmsProductRequirement">
update pms_product_requirement
<trim prefix="SET" suffixOverrides=",">
<if test="statusIdIsChange">status_id = #{statusId},</if>
<if test="priorityIdIsChange">priority_id = #{priorityId},</if>
<if test="pmsProductModuleIdIsChange">pms_product_module_id = #{pmsProductModuleId},</if>
<if test="pmsProductPlanIdIsChange">pms_product_plan_id = #{pmsProductPlanId},</if>