diff --git a/backend/framework/domain/src/main/resources/migration/3.0.0/ddl/V3.0.0_10__functional_case.sql b/backend/framework/domain/src/main/resources/migration/3.0.0/ddl/V3.0.0_10__functional_case.sql index 73bc36f11b..e768d3b421 100644 --- a/backend/framework/domain/src/main/resources/migration/3.0.0/ddl/V3.0.0_10__functional_case.sql +++ b/backend/framework/domain/src/main/resources/migration/3.0.0/ddl/V3.0.0_10__functional_case.sql @@ -188,7 +188,7 @@ CREATE TABLE IF NOT EXISTS functional_case_demand `case_id` VARCHAR(50) NOT NULL COMMENT '功能用例ID', `parent` VARCHAR(50) NOT NULL DEFAULT 'NONE' COMMENT '父需求id', `demand_id` VARCHAR(50) COMMENT '需求ID', - `demand_name` VARCHAR(64) NOT NULL DEFAULT 'NONE' COMMENT '需求标题', + `demand_name` VARCHAR(255) NOT NULL DEFAULT 'NONE' COMMENT '需求标题', `demand_url` VARCHAR(255) COMMENT '需求地址', `demand_platform` VARCHAR(64) NOT NULL DEFAULT 'LOCAL' COMMENT '需求所属平台', `create_time` BIGINT NOT NULL COMMENT '创建时间', diff --git a/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseDemandService.java b/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseDemandService.java index 1c2dd00c7f..95181b91ce 100644 --- a/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseDemandService.java +++ b/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseDemandService.java @@ -102,15 +102,14 @@ public class FunctionalCaseDemandService { if (checkDemandList(request.getDemandList())) return; SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); FunctionalCaseDemandMapper functionalCaseDemandMapper = sqlSession.getMapper(FunctionalCaseDemandMapper.class); - List demandIds = request.getDemandList().stream().map(DemandDTO::getDemandId).toList(); FunctionalCaseDemandExample functionalCaseDemandExample = new FunctionalCaseDemandExample(); functionalCaseDemandExample.createCriteria().andCaseIdEqualTo(request.getCaseId()).andDemandPlatformEqualTo(request.getDemandPlatform()); List existDemands = functionalCaseDemandMapper.selectByExample(functionalCaseDemandExample); List existDemandIds = existDemands.stream().map(FunctionalCaseDemand::getDemandId).toList(); - List notRepeatDemandIds = demandIds.stream().filter(t -> !existDemandIds.contains(t)).toList(); - Map demandDTOMap = request.getDemandList().stream().collect(Collectors.toMap(DemandDTO::getDemandId, t -> t)); - for (String notRepeatDemandId : notRepeatDemandIds) { - DemandDTO demandDTO = demandDTOMap.get(notRepeatDemandId); + for (DemandDTO demandDTO : request.getDemandList()) { + if (StringUtils.isNotBlank(demandDTO.getDemandId()) && existDemandIds.contains(demandDTO.getDemandId())) { + continue; + } FunctionalCaseDemand functionalCaseDemand = buildFunctionalCaseDemand(request.getCaseId(), request.getDemandPlatform(), userId, demandDTO); functionalCaseDemandMapper.insert(functionalCaseDemand); } @@ -168,6 +167,9 @@ public class FunctionalCaseDemandService { if (StringUtils.isBlank(demandDTO.getDemandName())) { throw new MSException(Translator.get("case.demand.name.not.exist")); } + if (demandDTO.getDemandName().length()>255) { + demandDTO.setDemandName(demandDTO.getDemandName().substring(0,255)); + } functionalCaseDemand.setDemandName(demandDTO.getDemandName()); if (StringUtils.isNotBlank(demandDTO.getDemandUrl())) { functionalCaseDemand.setDemandUrl(demandDTO.getDemandUrl()); diff --git a/backend/services/case-management/src/test/java/io/metersphere/functional/controller/FunctionalCaseDemandControllerTests.java b/backend/services/case-management/src/test/java/io/metersphere/functional/controller/FunctionalCaseDemandControllerTests.java index 4ee161c0d6..4179fa9fe3 100644 --- a/backend/services/case-management/src/test/java/io/metersphere/functional/controller/FunctionalCaseDemandControllerTests.java +++ b/backend/services/case-management/src/test/java/io/metersphere/functional/controller/FunctionalCaseDemandControllerTests.java @@ -107,6 +107,20 @@ public class FunctionalCaseDemandControllerTests extends BaseTest { functionalCaseDemandExample.createCriteria().andCaseIdEqualTo("DEMAND_TEST_FUNCTIONAL_CASE_ID"); functionalCaseDemands = functionalCaseDemandMapper.selectByExample(functionalCaseDemandExample); Assertions.assertFalse(functionalCaseDemands.isEmpty()); + + functionalCaseDemandRequest = new FunctionalCaseDemandRequest(); + functionalCaseDemandRequest.setCaseId("DEMAND_TEST_FUNCTIONAL_CASE_ID"); + functionalCaseDemandRequest.setDemandPlatform("Metersphere"); + demandList = new ArrayList<>(); + demandDTO = new DemandDTO(); + demandDTO.setDemandName("手动加入孩子超长名字看看能不能截到255的速度和温度都会为fdhfjhdsfjhdsfjdshfjdsfhdsfhufkfjdfkgdgbdfjgdfgjbdfjbdfgjbdfgjkbdfjkgbdfjkgbdfjkbgdfjkbgdfjbgdfjgbdfjgbdfjbgdfjgbdfjgbdfjkgbdfjkgbdfkjgb返回武汉无法回我fhdfjdsfhsdhfdsfhdsjfhsdjfhdsfjdshfjdshfjdshfjdshfdjsfhdsjfhdjfhdsjfhdjksfhsdjfdsjfhdjfhdsjfh"); + demandList.add(demandDTO); + functionalCaseDemandRequest.setDemandList(demandList); + this.requestPostWithOkAndReturn(URL_DEMAND_ADD, functionalCaseDemandRequest); + functionalCaseDemandExample = new FunctionalCaseDemandExample(); + functionalCaseDemandExample.createCriteria().andCaseIdEqualTo("DEMAND_TEST_FUNCTIONAL_CASE_ID").andDemandNameLike("%手动加入孩子超长名字%"); + functionalCaseDemands = functionalCaseDemandMapper.selectByExample(functionalCaseDemandExample); + Assertions.assertFalse(functionalCaseDemands.isEmpty()); } @Test