From e1b377ceef2e1a16316a96e8d62bb30d9a3af957 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Mon, 9 Dec 2024 14:49:25 +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?=E5=AE=8C=E5=96=84=E4=BA=A7=E5=93=81=E4=B8=AD=E7=9A=84=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E8=A7=84=E6=A0=BC=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 需求规格标识不允许重复,存在重复的在最后面添加数字 Signed-off-by: OTTO <731554297@qq.com> --- .../mapper/PmsProductRequirementMapper.java | 2 ++ .../PmsProductRequirementServiceImpl.java | 23 ++++++++++++++----- .../pms/PmsProductRequirementMapper.xml | 6 +++++ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/mapper/PmsProductRequirementMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/mapper/PmsProductRequirementMapper.java index bd4a6cd50..4e30160ae 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/mapper/PmsProductRequirementMapper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/mapper/PmsProductRequirementMapper.java @@ -108,4 +108,6 @@ public interface PmsProductRequirementMapper List selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo); List selectReqSpecsList(ProductReqSpecsSearchVo productReqSpecsSearchVo); + + Integer selectReqSpecsCountByIdentifier(@Param("identifier") String identifier); } 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 e74034c2f..ad36bb942 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 @@ -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()); 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 9766ba296..85324cdaa 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 @@ -227,6 +227,12 @@ order by update_time desc + + insert into pms_product_requirement