From 1c16353180a5ad4eff8d7053562af8800291c72b Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Tue, 30 Jun 2020 15:27:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=A8=A1=E6=9D=BF=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E7=9A=84=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/metersphere/base/domain/TestCase.java | 2 + .../base/domain/TestCaseExample.java | 144 +++++++++++++----- .../base/mapper/TestCaseMapper.xml | 79 ++++++---- .../excel/listener/TestCaseDataListener.java | 3 + .../track/service/TestCaseService.java | 13 +- .../resources/db/migration/V5__schedule.sql | 4 +- 6 files changed, 169 insertions(+), 76 deletions(-) diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCase.java b/backend/src/main/java/io/metersphere/base/domain/TestCase.java index 2585f68787..0fbe689c3d 100644 --- a/backend/src/main/java/io/metersphere/base/domain/TestCase.java +++ b/backend/src/main/java/io/metersphere/base/domain/TestCase.java @@ -31,5 +31,7 @@ public class TestCase implements Serializable { private String testId; + private Integer sort; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseExample.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseExample.java index 1196b8477b..6576f8f575 100644 --- a/backend/src/main/java/io/metersphere/base/domain/TestCaseExample.java +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseExample.java @@ -385,142 +385,142 @@ public class TestCaseExample { } public Criteria andNameIsNull() { - addCriterion("name is null"); + addCriterion("`name` is null"); return (Criteria) this; } public Criteria andNameIsNotNull() { - addCriterion("name is not null"); + addCriterion("`name` is not null"); return (Criteria) this; } public Criteria andNameEqualTo(String value) { - addCriterion("name =", value, "name"); + addCriterion("`name` =", value, "name"); return (Criteria) this; } public Criteria andNameNotEqualTo(String value) { - addCriterion("name <>", value, "name"); + addCriterion("`name` <>", value, "name"); return (Criteria) this; } public Criteria andNameGreaterThan(String value) { - addCriterion("name >", value, "name"); + addCriterion("`name` >", value, "name"); return (Criteria) this; } public Criteria andNameGreaterThanOrEqualTo(String value) { - addCriterion("name >=", value, "name"); + addCriterion("`name` >=", value, "name"); return (Criteria) this; } public Criteria andNameLessThan(String value) { - addCriterion("name <", value, "name"); + addCriterion("`name` <", value, "name"); return (Criteria) this; } public Criteria andNameLessThanOrEqualTo(String value) { - addCriterion("name <=", value, "name"); + addCriterion("`name` <=", value, "name"); return (Criteria) this; } public Criteria andNameLike(String value) { - addCriterion("name like", value, "name"); + addCriterion("`name` like", value, "name"); return (Criteria) this; } public Criteria andNameNotLike(String value) { - addCriterion("name not like", value, "name"); + addCriterion("`name` not like", value, "name"); return (Criteria) this; } public Criteria andNameIn(List values) { - addCriterion("name in", values, "name"); + addCriterion("`name` in", values, "name"); return (Criteria) this; } public Criteria andNameNotIn(List values) { - addCriterion("name not in", values, "name"); + addCriterion("`name` not in", values, "name"); return (Criteria) this; } public Criteria andNameBetween(String value1, String value2) { - addCriterion("name between", value1, value2, "name"); + addCriterion("`name` between", value1, value2, "name"); return (Criteria) this; } public Criteria andNameNotBetween(String value1, String value2) { - addCriterion("name not between", value1, value2, "name"); + addCriterion("`name` not between", value1, value2, "name"); return (Criteria) this; } public Criteria andTypeIsNull() { - addCriterion("type is null"); + addCriterion("`type` is null"); return (Criteria) this; } public Criteria andTypeIsNotNull() { - addCriterion("type is not null"); + addCriterion("`type` is not null"); return (Criteria) this; } public Criteria andTypeEqualTo(String value) { - addCriterion("type =", value, "type"); + addCriterion("`type` =", value, "type"); return (Criteria) this; } public Criteria andTypeNotEqualTo(String value) { - addCriterion("type <>", value, "type"); + addCriterion("`type` <>", value, "type"); return (Criteria) this; } public Criteria andTypeGreaterThan(String value) { - addCriterion("type >", value, "type"); + addCriterion("`type` >", value, "type"); return (Criteria) this; } public Criteria andTypeGreaterThanOrEqualTo(String value) { - addCriterion("type >=", value, "type"); + addCriterion("`type` >=", value, "type"); return (Criteria) this; } public Criteria andTypeLessThan(String value) { - addCriterion("type <", value, "type"); + addCriterion("`type` <", value, "type"); return (Criteria) this; } public Criteria andTypeLessThanOrEqualTo(String value) { - addCriterion("type <=", value, "type"); + addCriterion("`type` <=", value, "type"); return (Criteria) this; } public Criteria andTypeLike(String value) { - addCriterion("type like", value, "type"); + addCriterion("`type` like", value, "type"); return (Criteria) this; } public Criteria andTypeNotLike(String value) { - addCriterion("type not like", value, "type"); + addCriterion("`type` not like", value, "type"); return (Criteria) this; } public Criteria andTypeIn(List values) { - addCriterion("type in", values, "type"); + addCriterion("`type` in", values, "type"); return (Criteria) this; } public Criteria andTypeNotIn(List values) { - addCriterion("type not in", values, "type"); + addCriterion("`type` not in", values, "type"); return (Criteria) this; } public Criteria andTypeBetween(String value1, String value2) { - addCriterion("type between", value1, value2, "type"); + addCriterion("`type` between", value1, value2, "type"); return (Criteria) this; } public Criteria andTypeNotBetween(String value1, String value2) { - addCriterion("type not between", value1, value2, "type"); + addCriterion("`type` not between", value1, value2, "type"); return (Criteria) this; } @@ -665,72 +665,72 @@ public class TestCaseExample { } public Criteria andMethodIsNull() { - addCriterion("method is null"); + addCriterion("`method` is null"); return (Criteria) this; } public Criteria andMethodIsNotNull() { - addCriterion("method is not null"); + addCriterion("`method` is not null"); return (Criteria) this; } public Criteria andMethodEqualTo(String value) { - addCriterion("method =", value, "method"); + addCriterion("`method` =", value, "method"); return (Criteria) this; } public Criteria andMethodNotEqualTo(String value) { - addCriterion("method <>", value, "method"); + addCriterion("`method` <>", value, "method"); return (Criteria) this; } public Criteria andMethodGreaterThan(String value) { - addCriterion("method >", value, "method"); + addCriterion("`method` >", value, "method"); return (Criteria) this; } public Criteria andMethodGreaterThanOrEqualTo(String value) { - addCriterion("method >=", value, "method"); + addCriterion("`method` >=", value, "method"); return (Criteria) this; } public Criteria andMethodLessThan(String value) { - addCriterion("method <", value, "method"); + addCriterion("`method` <", value, "method"); return (Criteria) this; } public Criteria andMethodLessThanOrEqualTo(String value) { - addCriterion("method <=", value, "method"); + addCriterion("`method` <=", value, "method"); return (Criteria) this; } public Criteria andMethodLike(String value) { - addCriterion("method like", value, "method"); + addCriterion("`method` like", value, "method"); return (Criteria) this; } public Criteria andMethodNotLike(String value) { - addCriterion("method not like", value, "method"); + addCriterion("`method` not like", value, "method"); return (Criteria) this; } public Criteria andMethodIn(List values) { - addCriterion("method in", values, "method"); + addCriterion("`method` in", values, "method"); return (Criteria) this; } public Criteria andMethodNotIn(List values) { - addCriterion("method not in", values, "method"); + addCriterion("`method` not in", values, "method"); return (Criteria) this; } public Criteria andMethodBetween(String value1, String value2) { - addCriterion("method between", value1, value2, "method"); + addCriterion("`method` between", value1, value2, "method"); return (Criteria) this; } public Criteria andMethodNotBetween(String value1, String value2) { - addCriterion("method not between", value1, value2, "method"); + addCriterion("`method` not between", value1, value2, "method"); return (Criteria) this; } @@ -993,6 +993,66 @@ public class TestCaseExample { addCriterion("test_id not between", value1, value2, "testId"); return (Criteria) this; } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(Integer value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(Integer value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(Integer value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(Integer value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(Integer value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(Integer value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(Integer value1, Integer value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(Integer value1, Integer value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/TestCaseMapper.xml index 6c2936ce2c..fae25c14d2 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/TestCaseMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseMapper.xml @@ -15,6 +15,7 @@ + @@ -79,8 +80,8 @@ - id, node_id, node_path, project_id, name, type, maintainer, priority, method, prerequisite, - create_time, update_time, test_id + id, node_id, node_path, project_id, `name`, `type`, maintainer, priority, `method`, + prerequisite, create_time, update_time, test_id, sort remark, steps @@ -135,17 +136,17 @@ insert into test_case (id, node_id, node_path, - project_id, name, type, - maintainer, priority, method, + project_id, `name`, `type`, + maintainer, priority, `method`, prerequisite, create_time, update_time, - test_id, remark, steps - ) + test_id, sort, remark, + steps) values (#{id,jdbcType=VARCHAR}, #{nodeId,jdbcType=VARCHAR}, #{nodePath,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{maintainer,jdbcType=VARCHAR}, #{priority,jdbcType=VARCHAR}, #{method,jdbcType=VARCHAR}, #{prerequisite,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}, - #{testId,jdbcType=VARCHAR}, #{remark,jdbcType=LONGVARCHAR}, #{steps,jdbcType=LONGVARCHAR} - ) + #{testId,jdbcType=VARCHAR}, #{sort,jdbcType=INTEGER}, #{remark,jdbcType=LONGVARCHAR}, + #{steps,jdbcType=LONGVARCHAR}) insert into test_case @@ -163,10 +164,10 @@ project_id, - name, + `name`, - type, + `type`, maintainer, @@ -175,7 +176,7 @@ priority, - method, + `method`, prerequisite, @@ -189,6 +190,9 @@ test_id, + + sort, + remark, @@ -236,6 +240,9 @@ #{testId,jdbcType=VARCHAR}, + + #{sort,jdbcType=INTEGER}, + #{remark,jdbcType=LONGVARCHAR}, @@ -266,10 +273,10 @@ project_id = #{record.projectId,jdbcType=VARCHAR}, - name = #{record.name,jdbcType=VARCHAR}, + `name` = #{record.name,jdbcType=VARCHAR}, - type = #{record.type,jdbcType=VARCHAR}, + `type` = #{record.type,jdbcType=VARCHAR}, maintainer = #{record.maintainer,jdbcType=VARCHAR}, @@ -278,7 +285,7 @@ priority = #{record.priority,jdbcType=VARCHAR}, - method = #{record.method,jdbcType=VARCHAR}, + `method` = #{record.method,jdbcType=VARCHAR}, prerequisite = #{record.prerequisite,jdbcType=VARCHAR}, @@ -292,6 +299,9 @@ test_id = #{record.testId,jdbcType=VARCHAR}, + + sort = #{record.sort,jdbcType=INTEGER}, + remark = #{record.remark,jdbcType=LONGVARCHAR}, @@ -309,15 +319,16 @@ node_id = #{record.nodeId,jdbcType=VARCHAR}, node_path = #{record.nodePath,jdbcType=VARCHAR}, project_id = #{record.projectId,jdbcType=VARCHAR}, - name = #{record.name,jdbcType=VARCHAR}, - type = #{record.type,jdbcType=VARCHAR}, + `name` = #{record.name,jdbcType=VARCHAR}, + `type` = #{record.type,jdbcType=VARCHAR}, maintainer = #{record.maintainer,jdbcType=VARCHAR}, priority = #{record.priority,jdbcType=VARCHAR}, - method = #{record.method,jdbcType=VARCHAR}, + `method` = #{record.method,jdbcType=VARCHAR}, prerequisite = #{record.prerequisite,jdbcType=VARCHAR}, create_time = #{record.createTime,jdbcType=BIGINT}, update_time = #{record.updateTime,jdbcType=BIGINT}, test_id = #{record.testId,jdbcType=VARCHAR}, + sort = #{record.sort,jdbcType=INTEGER}, remark = #{record.remark,jdbcType=LONGVARCHAR}, steps = #{record.steps,jdbcType=LONGVARCHAR} @@ -330,15 +341,16 @@ node_id = #{record.nodeId,jdbcType=VARCHAR}, node_path = #{record.nodePath,jdbcType=VARCHAR}, project_id = #{record.projectId,jdbcType=VARCHAR}, - name = #{record.name,jdbcType=VARCHAR}, - type = #{record.type,jdbcType=VARCHAR}, + `name` = #{record.name,jdbcType=VARCHAR}, + `type` = #{record.type,jdbcType=VARCHAR}, maintainer = #{record.maintainer,jdbcType=VARCHAR}, priority = #{record.priority,jdbcType=VARCHAR}, - method = #{record.method,jdbcType=VARCHAR}, + `method` = #{record.method,jdbcType=VARCHAR}, prerequisite = #{record.prerequisite,jdbcType=VARCHAR}, create_time = #{record.createTime,jdbcType=BIGINT}, update_time = #{record.updateTime,jdbcType=BIGINT}, - test_id = #{record.testId,jdbcType=VARCHAR} + test_id = #{record.testId,jdbcType=VARCHAR}, + sort = #{record.sort,jdbcType=INTEGER} @@ -356,10 +368,10 @@ project_id = #{projectId,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, + `name` = #{name,jdbcType=VARCHAR}, - type = #{type,jdbcType=VARCHAR}, + `type` = #{type,jdbcType=VARCHAR}, maintainer = #{maintainer,jdbcType=VARCHAR}, @@ -368,7 +380,7 @@ priority = #{priority,jdbcType=VARCHAR}, - method = #{method,jdbcType=VARCHAR}, + `method` = #{method,jdbcType=VARCHAR}, prerequisite = #{prerequisite,jdbcType=VARCHAR}, @@ -382,6 +394,9 @@ test_id = #{testId,jdbcType=VARCHAR}, + + sort = #{sort,jdbcType=INTEGER}, + remark = #{remark,jdbcType=LONGVARCHAR}, @@ -396,15 +411,16 @@ set node_id = #{nodeId,jdbcType=VARCHAR}, node_path = #{nodePath,jdbcType=VARCHAR}, project_id = #{projectId,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - type = #{type,jdbcType=VARCHAR}, + `name` = #{name,jdbcType=VARCHAR}, + `type` = #{type,jdbcType=VARCHAR}, maintainer = #{maintainer,jdbcType=VARCHAR}, priority = #{priority,jdbcType=VARCHAR}, - method = #{method,jdbcType=VARCHAR}, + `method` = #{method,jdbcType=VARCHAR}, prerequisite = #{prerequisite,jdbcType=VARCHAR}, create_time = #{createTime,jdbcType=BIGINT}, update_time = #{updateTime,jdbcType=BIGINT}, test_id = #{testId,jdbcType=VARCHAR}, + sort = #{sort,jdbcType=INTEGER}, remark = #{remark,jdbcType=LONGVARCHAR}, steps = #{steps,jdbcType=LONGVARCHAR} where id = #{id,jdbcType=VARCHAR} @@ -414,15 +430,16 @@ set node_id = #{nodeId,jdbcType=VARCHAR}, node_path = #{nodePath,jdbcType=VARCHAR}, project_id = #{projectId,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - type = #{type,jdbcType=VARCHAR}, + `name` = #{name,jdbcType=VARCHAR}, + `type` = #{type,jdbcType=VARCHAR}, maintainer = #{maintainer,jdbcType=VARCHAR}, priority = #{priority,jdbcType=VARCHAR}, - method = #{method,jdbcType=VARCHAR}, + `method` = #{method,jdbcType=VARCHAR}, prerequisite = #{prerequisite,jdbcType=VARCHAR}, create_time = #{createTime,jdbcType=BIGINT}, update_time = #{updateTime,jdbcType=BIGINT}, - test_id = #{testId,jdbcType=VARCHAR} + test_id = #{testId,jdbcType=VARCHAR}, + sort = #{sort,jdbcType=INTEGER} where id = #{id,jdbcType=VARCHAR} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java b/backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java index 6c4a991e79..5922cf6e4c 100644 --- a/backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java +++ b/backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java @@ -10,6 +10,7 @@ import io.metersphere.i18n.Translator; import io.metersphere.track.service.TestCaseService; import org.apache.commons.lang3.StringUtils; +import java.util.Collections; import java.util.List; import java.util.Set; import java.util.UUID; @@ -72,6 +73,8 @@ public class TestCaseDataListener extends EasyExcelListener { return; } + Collections.reverse(list); + List result = list.stream() .map(item -> this.convert2TestCase(item)) .collect(Collectors.toList()); diff --git a/backend/src/main/java/io/metersphere/track/service/TestCaseService.java b/backend/src/main/java/io/metersphere/track/service/TestCaseService.java index b66be54637..ac35d83aab 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestCaseService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestCaseService.java @@ -35,6 +35,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @Service @@ -121,7 +122,13 @@ public class TestCaseService { } public List listTestCase(QueryTestCaseRequest request) { - request.setOrders(ServiceUtils.getDefaultOrder(request.getOrders())); + List orderList = ServiceUtils.getDefaultOrder(request.getOrders()); + OrderRequest order = new OrderRequest(); + // 对模板导入的测试用例排序 + order.setName("sort"); + order.setType("desc"); + orderList.add(order); + request.setOrders(orderList); return extTestCaseMapper.list(request); } @@ -176,7 +183,7 @@ public class TestCaseService { TestCaseExample testCaseExample = new TestCaseExample(); testCaseExample.createCriteria().andProjectIdIn(projectIds); - testCaseExample.setOrderByClause("update_time desc"); + testCaseExample.setOrderByClause("update_time desc, sort desc"); return testCaseMapper.selectByExample(testCaseExample); } @@ -235,8 +242,10 @@ public class TestCaseService { SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); TestCaseMapper mapper = sqlSession.getMapper(TestCaseMapper.class); if (!testCases.isEmpty()) { + AtomicInteger sort = new AtomicInteger(); testCases.forEach(testcase -> { testcase.setNodeId(nodePathMap.get(testcase.getNodePath())); + testcase.setSort(sort.getAndIncrement()); mapper.insert(testcase); }); } diff --git a/backend/src/main/resources/db/migration/V5__schedule.sql b/backend/src/main/resources/db/migration/V5__schedule.sql index 2d7302148a..41f7e62cd6 100644 --- a/backend/src/main/resources/db/migration/V5__schedule.sql +++ b/backend/src/main/resources/db/migration/V5__schedule.sql @@ -170,4 +170,6 @@ ALTER TABLE `load_test` DROP COLUMN `schedule`; ALTER TABLE `api_test_report` ADD `trigger_mode` varchar(64) NULL; ALTER TABLE `load_test_report` ADD `trigger_mode` varchar(64) NULL; UPDATE `api_test_report` SET `trigger_mode` = 'MANUAL' WHERE 1; -UPDATE `load_test_report` SET `trigger_mode` = 'MANUAL' WHERE 1; \ No newline at end of file +UPDATE `load_test_report` SET `trigger_mode` = 'MANUAL' WHERE 1; + +alter table test_case add sort int null comment 'Import test case sort'; \ No newline at end of file