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> selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo);
List<PmsProductRequirement> selectReqSpecsList(ProductReqSpecsSearchVo productReqSpecsSearchVo); 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) { private void userReqToReqSpecs(PmsProductRequirement userReq, PmsProductReqOperationRecord record) {
PmsProductRequirement reqSpecs = PmsProductRequirement reqSpecs =
userReq.userReqToReqSpecs(); userReq.userReqToReqSpecs();
reqSpecs.setIdentifier(genReqSpecsIdentifier(userReq.getPmsProductIdentifier(), userReq.getTitle())); reqSpecs.setIdentifier(genReqSpecsIdentifier(userReq.getPmsProductIdentifier(), userReq.getTitle(), null));
reqSpecs.setCreateAndUpdate(SecurityUtils.getUsername()); reqSpecs.setCreateAndUpdate(SecurityUtils.getUsername());
pmsProductRequirementMapper.insertPmsProductRequirement(reqSpecs); pmsProductRequirementMapper.insertPmsProductRequirement(reqSpecs);
record.setProductRequirementId(reqSpecs.getId()); record.setProductRequirementId(reqSpecs.getId());
@ -423,9 +423,19 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
return toProductReqSpecsDetailVo(pmsProductRequirement); 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(); 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 @Override
@ -440,7 +450,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
checkReqSpecsParameter(pmsProductRequirement, pmsProduct, null); 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()); pmsProductRequirement.setStatus(ProductReqStatus.PENDING_REVIEW_REQ_SPECS.getKey());
@ -471,7 +481,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
// 待审核和变更中的需求可随意更改 // 待审核和变更中的需求可随意更改
if (StringUtils.isNotEmpty(productReqSpecsUpdateVo.getTitle())) { if (StringUtils.isNotEmpty(productReqSpecsUpdateVo.getTitle())) {
// 更新需求唯一标识 // 更新需求唯一标识
pmsProductRequirement.setIdentifier(genReqSpecsIdentifier(pmsProduct.getProductIdentifier(), productReqSpecsUpdateVo.getTitle())); pmsProductRequirement.setIdentifier(genReqSpecsIdentifier(pmsProduct.getProductIdentifier(), productReqSpecsUpdateVo.getTitle(), oldPmsProductRequirement.getIdentifier()));
} }
} else { } else {
throw new ServiceException("当前状态下的需求规格不允许修改"); throw new ServiceException("当前状态下的需求规格不允许修改");
@ -501,7 +511,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
PmsProductRequirement changingReqSpecs = oldPmsProductRequirement.toChangeReqSpecs(productReqSpecsChangeVo); PmsProductRequirement changingReqSpecs = oldPmsProductRequirement.toChangeReqSpecs(productReqSpecsChangeVo);
if (StringUtils.isNotEmpty(productReqSpecsChangeVo.getTitle())) { 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.setUpdateBy(SecurityUtils.getUsername());
changingReqSpecs.setUpdateTime(DateUtils.getNowDate()); changingReqSpecs.setUpdateTime(DateUtils.getNowDate());

View File

@ -227,6 +227,12 @@
order by update_time desc order by update_time desc
</select> </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" <insert id="insertPmsProductRequirement" parameterType="PmsProductRequirement" useGeneratedKeys="true"
keyProperty="id"> keyProperty="id">
insert into pms_product_requirement insert into pms_product_requirement