feat(项目管理产品需求重构): 完善产品中的需求规格功能开发

需求规格标识不允许重复,存在重复的在最后面添加数字

Signed-off-by: OTTO <731554297@qq.com>
This commit is contained in:
OTTO 2024-12-09 14:49:25 +08:00
parent 95ad6b83b4
commit e1b377ceef
3 changed files with 25 additions and 6 deletions

View File

@ -108,4 +108,6 @@ public interface PmsProductRequirementMapper
List<PmsProductRequirement> selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo);
List<PmsProductRequirement> selectReqSpecsList(ProductReqSpecsSearchVo productReqSpecsSearchVo);
Integer selectReqSpecsCountByIdentifier(@Param("identifier") String identifier);
}

View File

@ -379,7 +379,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
private void userReqToReqSpecs(PmsProductRequirement userReq, PmsProductReqOperationRecord record) {
PmsProductRequirement reqSpecs =
userReq.userReqToReqSpecs();
reqSpecs.setIdentifier(genReqSpecsIdentifier(userReq.getPmsProductIdentifier(), userReq.getTitle()));
reqSpecs.setIdentifier(genReqSpecsIdentifier(userReq.getPmsProductIdentifier(), userReq.getTitle(), null));
reqSpecs.setCreateAndUpdate(SecurityUtils.getUsername());
pmsProductRequirementMapper.insertPmsProductRequirement(reqSpecs);
record.setProductRequirementId(reqSpecs.getId());
@ -423,9 +423,19 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
return toProductReqSpecsDetailVo(pmsProductRequirement);
}
private String genReqSpecsIdentifier(String productIdentifier, String reqTitle) {
private String genReqSpecsIdentifier(String productIdentifier, String reqTitle, String oldIdentifier) {
String reqTitleIdentifier = PinYinStringUtils.toFirstChar(reqTitle).replaceAll("[^a-z^A-Z]", "").toUpperCase();
return productIdentifier + "-" + reqTitleIdentifier;
String identifier = productIdentifier + "-" + reqTitleIdentifier;
if (!identifier.equals(oldIdentifier)) {
Integer count = pmsProductRequirementMapper.selectReqSpecsCountByIdentifier(identifier);
int nameCount = 1;
while (count > 0) {
identifier = productIdentifier + "-" + reqTitleIdentifier + "-" + nameCount;
count = pmsProductRequirementMapper.selectReqSpecsCountByIdentifier(identifier);
nameCount++;
}
}
return identifier;
}
@Override
@ -440,7 +450,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
checkReqSpecsParameter(pmsProductRequirement, pmsProduct, null);
// 生成需求唯一标识
pmsProductRequirement.setIdentifier(genReqSpecsIdentifier(pmsProduct.getProductIdentifier(), productReqSpecsInputVo.getTitle()));
pmsProductRequirement.setIdentifier(genReqSpecsIdentifier(pmsProduct.getProductIdentifier(), productReqSpecsInputVo.getTitle(), null));
// 设置默认需求状态
pmsProductRequirement.setStatus(ProductReqStatus.PENDING_REVIEW_REQ_SPECS.getKey());
@ -471,7 +481,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
// 待审核和变更中的需求可随意更改
if (StringUtils.isNotEmpty(productReqSpecsUpdateVo.getTitle())) {
// 更新需求唯一标识
pmsProductRequirement.setIdentifier(genReqSpecsIdentifier(pmsProduct.getProductIdentifier(), productReqSpecsUpdateVo.getTitle()));
pmsProductRequirement.setIdentifier(genReqSpecsIdentifier(pmsProduct.getProductIdentifier(), productReqSpecsUpdateVo.getTitle(), oldPmsProductRequirement.getIdentifier()));
}
} else {
throw new ServiceException("当前状态下的需求规格不允许修改");
@ -501,7 +511,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
PmsProductRequirement changingReqSpecs = oldPmsProductRequirement.toChangeReqSpecs(productReqSpecsChangeVo);
if (StringUtils.isNotEmpty(productReqSpecsChangeVo.getTitle())) {
// 更新需求唯一标识
changingReqSpecs.setIdentifier(genReqSpecsIdentifier(oldPmsProductRequirement.getPmsProductIdentifier(), productReqSpecsChangeVo.getTitle()));
changingReqSpecs.setIdentifier(
genReqSpecsIdentifier(oldPmsProductRequirement.getPmsProductIdentifier(), productReqSpecsChangeVo.getTitle(), oldPmsProductRequirement.getIdentifier()));
}
changingReqSpecs.setUpdateBy(SecurityUtils.getUsername());
changingReqSpecs.setUpdateTime(DateUtils.getNowDate());

View File

@ -227,6 +227,12 @@
order by update_time desc
</select>
<select id="selectReqSpecsCountByIdentifier" resultType="java.lang.Integer">
select count(1)
from pms_product_requirement
where identifier = #{identifier}
</select>
<insert id="insertPmsProductRequirement" parameterType="PmsProductRequirement" useGeneratedKeys="true"
keyProperty="id">
insert into pms_product_requirement