From 8a97dbafbef90ba1da3e7765ab32534ba11f73c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=98=B1=E6=B6=B5?= Date: Fri, 21 Feb 2025 14:45:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96=E6=B5=8B=E8=AF=95-?= =?UTF-8?q?=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/controller/TestCaseController.java | 4 +- .../test/controller/TestTaskController.java | 83 ++ .../java/com/test/test/domain/TestTask.java | 74 ++ .../{TestCaseListQO.java => GroupIdQO.java} | 2 +- .../com/test/test/mapper/TestCaseMapper.java | 4 +- .../com/test/test/mapper/TestTaskMapper.java | 41 + .../test/test/service/ITestCaseService.java | 4 +- .../test/test/service/ITestTaskService.java | 41 + .../service/impl/TestCaseServiceImpl.java | 2 +- .../service/impl/TestTaskServiceImpl.java | 70 ++ .../resources/mapper/test/TestCaseMapper.xml | 2 +- .../resources/mapper/test/TestTaskMapper.xml | 105 +++ test-ui/src/assets/images/header.png | Bin 0 -> 15524 bytes test-ui/src/views/test/case/index.vue | 4 +- .../src/views/test/task/edit/clickOutside.js | 18 + .../views/test/task/edit/executionRecord.vue | 256 ++++++ .../views/test/task/edit/executiveReport.vue | 0 test-ui/src/views/test/task/edit/index.vue | 125 +++ .../src/views/test/task/edit/lineChart.vue | 159 ++++ .../views/test/task/edit/lineChartCover.vue | 168 ++++ .../views/test/task/edit/operationRecords.vue | 92 +++ .../task/edit/report/components/pieChart.vue | 111 +++ .../src/views/test/task/edit/report/index.vue | 292 +++++++ .../src/views/test/task/edit/taskDetails.vue | 735 ++++++++++++++++++ test-ui/src/views/test/task/edit/test1.vue | 47 ++ test-ui/src/views/test/task/edit/test2.vue | 217 ++++++ test-ui/src/views/test/task/index.vue | 82 +- 27 files changed, 2724 insertions(+), 14 deletions(-) create mode 100644 test-test/src/main/java/com/test/test/controller/TestTaskController.java create mode 100644 test-test/src/main/java/com/test/test/domain/TestTask.java rename test-test/src/main/java/com/test/test/domain/qo/{TestCaseListQO.java => GroupIdQO.java} (86%) create mode 100644 test-test/src/main/java/com/test/test/mapper/TestTaskMapper.java create mode 100644 test-test/src/main/java/com/test/test/service/ITestTaskService.java create mode 100644 test-test/src/main/java/com/test/test/service/impl/TestTaskServiceImpl.java create mode 100644 test-test/src/main/resources/mapper/test/TestTaskMapper.xml create mode 100644 test-ui/src/assets/images/header.png create mode 100644 test-ui/src/views/test/task/edit/clickOutside.js create mode 100644 test-ui/src/views/test/task/edit/executionRecord.vue create mode 100644 test-ui/src/views/test/task/edit/executiveReport.vue create mode 100644 test-ui/src/views/test/task/edit/index.vue create mode 100644 test-ui/src/views/test/task/edit/lineChart.vue create mode 100644 test-ui/src/views/test/task/edit/lineChartCover.vue create mode 100644 test-ui/src/views/test/task/edit/operationRecords.vue create mode 100644 test-ui/src/views/test/task/edit/report/components/pieChart.vue create mode 100644 test-ui/src/views/test/task/edit/report/index.vue create mode 100644 test-ui/src/views/test/task/edit/taskDetails.vue create mode 100644 test-ui/src/views/test/task/edit/test1.vue create mode 100644 test-ui/src/views/test/task/edit/test2.vue diff --git a/test-test/src/main/java/com/test/test/controller/TestCaseController.java b/test-test/src/main/java/com/test/test/controller/TestCaseController.java index f668c37..45d079e 100644 --- a/test-test/src/main/java/com/test/test/controller/TestCaseController.java +++ b/test-test/src/main/java/com/test/test/controller/TestCaseController.java @@ -4,7 +4,7 @@ import java.util.List; import com.test.common.utils.DateUtils; import com.test.test.domain.qo.IDQO; -import com.test.test.domain.qo.TestCaseListQO; +import com.test.test.domain.qo.GroupIdQO; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -33,7 +33,7 @@ public class TestCaseController extends BaseController { * 查询用例列表 */ @GetMapping("/list") - public TableDataInfo list(@Validated TestCaseListQO qo) { + public TableDataInfo list(@Validated GroupIdQO qo) { startPage(); List list = testCaseService.selectTestCaseList(qo); return getDataTable(list); diff --git a/test-test/src/main/java/com/test/test/controller/TestTaskController.java b/test-test/src/main/java/com/test/test/controller/TestTaskController.java new file mode 100644 index 0000000..7678acb --- /dev/null +++ b/test-test/src/main/java/com/test/test/controller/TestTaskController.java @@ -0,0 +1,83 @@ +package com.test.test.controller; + +import java.util.List; + +import com.test.common.utils.DateUtils; +import com.test.test.domain.qo.GroupIdQO; +import com.test.test.domain.qo.IDQO; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.test.common.annotation.Log; +import com.test.common.core.controller.BaseController; +import com.test.common.core.domain.AjaxResult; +import com.test.common.enums.BusinessType; +import com.test.test.domain.TestTask; +import com.test.test.service.ITestTaskService; +import com.test.common.utils.poi.ExcelUtil; +import com.test.common.core.page.TableDataInfo; + +/** + * 自动化测试Controller + */ +@RestController +@RequestMapping("/test/task") +public class TestTaskController extends BaseController { + @Resource + private ITestTaskService testTaskService; + + /** + * 查询自动化测试列表 + */ + @GetMapping("/list") + public TableDataInfo list(GroupIdQO qo) { + startPage(); + List list = testTaskService.selectTestTaskList(qo); + return getDataTable(list); + } + + /** + * 获取自动化测试详细信息 + */ + @PostMapping(value = "/detail") + public AjaxResult getInfo(@RequestBody IDQO qo) { + return success(testTaskService.selectTestTaskById(qo.getId())); + } + + /** + * 新增自动化测试 + */ + @Log(title = "自动化测试", businessType = BusinessType.INSERT) + @PostMapping("/add") + public AjaxResult add(@RequestBody TestTask testTask) { + testTask.setCreateBy(getLoginUser().getUsername()); + testTask.setCreateTime(DateUtils.getNowDate()); + testTask.setStatus(0); + return toAjax(testTaskService.insertTestTask(testTask)); + } + + /** + * 修改自动化测试 + */ + @Log(title = "自动化测试", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + public AjaxResult edit(@RequestBody TestTask testTask) { + return toAjax(testTaskService.updateTestTask(testTask)); + } + + /** + * 删除自动化测试 + */ + @Log(title = "自动化测试", businessType = BusinessType.DELETE) + @PostMapping("/del") + public AjaxResult remove(@RequestBody IDQO qo) { + return toAjax(testTaskService.deleteTestTaskById(qo.getId())); + } +} diff --git a/test-test/src/main/java/com/test/test/domain/TestTask.java b/test-test/src/main/java/com/test/test/domain/TestTask.java new file mode 100644 index 0000000..b80f231 --- /dev/null +++ b/test-test/src/main/java/com/test/test/domain/TestTask.java @@ -0,0 +1,74 @@ +package com.test.test.domain; + +import com.test.common.core.domain.BaseEntity; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import com.test.common.annotation.Excel; + +/** + * 自动化测试对象 test_task + */ +@Getter +@Setter +@ToString +public class TestTask extends BaseEntity { + + /** + * 任务id + */ + private Long id; + + /** + * 任务名称 + */ + @Excel(name = "任务名称") + private String name; + + /** + * 节点id + */ + @Excel(name = "节点id") + private Long groupId; + + /** + * 项目id + */ + @Excel(name = "项目id") + private Long projectId; + + /** + * crontab表达式 + */ + @Excel(name = "crontab表达式") + private String crontab; + + /** + * 定时任务开关 + */ + @Excel(name = "定时任务开关") + private Integer status; + + /** + * 失败重试开关 + */ + @Excel(name = "失败重试开关") + private Integer retry; + + /** + * 失败重试次数 + */ + @Excel(name = "失败重试次数") + private Long retryCount; + + /** + * 并行开关 + */ + @Excel(name = "并行开关") + private Integer async; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private String delFlag; +} diff --git a/test-test/src/main/java/com/test/test/domain/qo/TestCaseListQO.java b/test-test/src/main/java/com/test/test/domain/qo/GroupIdQO.java similarity index 86% rename from test-test/src/main/java/com/test/test/domain/qo/TestCaseListQO.java rename to test-test/src/main/java/com/test/test/domain/qo/GroupIdQO.java index 56ed405..b690898 100644 --- a/test-test/src/main/java/com/test/test/domain/qo/TestCaseListQO.java +++ b/test-test/src/main/java/com/test/test/domain/qo/GroupIdQO.java @@ -4,7 +4,7 @@ import jakarta.validation.constraints.NotNull; import lombok.Data; @Data -public class TestCaseListQO { +public class GroupIdQO { @NotNull(message = "父节点id不能为空") private Long groupId; } diff --git a/test-test/src/main/java/com/test/test/mapper/TestCaseMapper.java b/test-test/src/main/java/com/test/test/mapper/TestCaseMapper.java index 9b224eb..58cbbf7 100644 --- a/test-test/src/main/java/com/test/test/mapper/TestCaseMapper.java +++ b/test-test/src/main/java/com/test/test/mapper/TestCaseMapper.java @@ -1,7 +1,7 @@ package com.test.test.mapper; import com.test.test.domain.TestCase; -import com.test.test.domain.qo.TestCaseListQO; +import com.test.test.domain.qo.GroupIdQO; import java.util.List; @@ -18,7 +18,7 @@ public interface TestCaseMapper /** * 查询用例列表 */ - List selectTestCaseList(TestCaseListQO qo); + List selectTestCaseList(GroupIdQO qo); /** * 新增用例 diff --git a/test-test/src/main/java/com/test/test/mapper/TestTaskMapper.java b/test-test/src/main/java/com/test/test/mapper/TestTaskMapper.java new file mode 100644 index 0000000..c81531f --- /dev/null +++ b/test-test/src/main/java/com/test/test/mapper/TestTaskMapper.java @@ -0,0 +1,41 @@ +package com.test.test.mapper; + +import java.util.List; + +import com.test.test.domain.TestTask; +import com.test.test.domain.qo.GroupIdQO; + +/** + * 自动化测试Mapper接口 + */ +public interface TestTaskMapper { + /** + * 查询自动化测试 + */ + TestTask selectTestTaskById(Long id); + + /** + * 查询自动化测试列表 + */ + List selectTestTaskList(GroupIdQO testTask); + + /** + * 新增自动化测试 + */ + int insertTestTask(TestTask testTask); + + /** + * 修改自动化测试 + */ + int updateTestTask(TestTask testTask); + + /** + * 删除自动化测试 + */ + int deleteTestTaskById(Long id); + + /** + * 批量删除自动化测试 + */ + int deleteTestTaskByIds(Long[] ids); +} diff --git a/test-test/src/main/java/com/test/test/service/ITestCaseService.java b/test-test/src/main/java/com/test/test/service/ITestCaseService.java index c79ebcc..a33bb51 100644 --- a/test-test/src/main/java/com/test/test/service/ITestCaseService.java +++ b/test-test/src/main/java/com/test/test/service/ITestCaseService.java @@ -1,7 +1,7 @@ package com.test.test.service; import com.test.test.domain.TestCase; -import com.test.test.domain.qo.TestCaseListQO; +import com.test.test.domain.qo.GroupIdQO; import java.util.List; @@ -27,7 +27,7 @@ public interface ITestCaseService * @param qo 用例 * @return 用例集合 */ - public List selectTestCaseList(TestCaseListQO qo); + public List selectTestCaseList(GroupIdQO qo); /** * 新增用例 diff --git a/test-test/src/main/java/com/test/test/service/ITestTaskService.java b/test-test/src/main/java/com/test/test/service/ITestTaskService.java new file mode 100644 index 0000000..4de22f6 --- /dev/null +++ b/test-test/src/main/java/com/test/test/service/ITestTaskService.java @@ -0,0 +1,41 @@ +package com.test.test.service; + +import java.util.List; +import com.test.test.domain.TestTask; +import com.test.test.domain.qo.GroupIdQO; + +/** + * 自动化测试Service接口 + */ +public interface ITestTaskService +{ + /** + * 查询自动化测试 + */ + TestTask selectTestTaskById(Long id); + + /** + * 查询自动化测试列表 + */ + List selectTestTaskList(GroupIdQO testTask); + + /** + * 新增自动化测试 + */ + int insertTestTask(TestTask testTask); + + /** + * 修改自动化测试 + */ + int updateTestTask(TestTask testTask); + + /** + * 批量删除自动化测试 + */ + int deleteTestTaskByIds(Long[] ids); + + /** + * 删除自动化测试信息 + */ + int deleteTestTaskById(Long id); +} diff --git a/test-test/src/main/java/com/test/test/service/impl/TestCaseServiceImpl.java b/test-test/src/main/java/com/test/test/service/impl/TestCaseServiceImpl.java index 842f45a..3d22868 100644 --- a/test-test/src/main/java/com/test/test/service/impl/TestCaseServiceImpl.java +++ b/test-test/src/main/java/com/test/test/service/impl/TestCaseServiceImpl.java @@ -68,7 +68,7 @@ public class TestCaseServiceImpl implements ITestCaseService * @return 用例 */ @Override - public List selectTestCaseList(TestCaseListQO qo) { + public List selectTestCaseList(GroupIdQO qo) { return testCaseMapper.selectTestCaseList(qo); } diff --git a/test-test/src/main/java/com/test/test/service/impl/TestTaskServiceImpl.java b/test-test/src/main/java/com/test/test/service/impl/TestTaskServiceImpl.java new file mode 100644 index 0000000..cd1c25e --- /dev/null +++ b/test-test/src/main/java/com/test/test/service/impl/TestTaskServiceImpl.java @@ -0,0 +1,70 @@ +package com.test.test.service.impl; + +import java.util.List; + +import com.test.common.utils.DateUtils; +import com.test.test.domain.qo.GroupIdQO; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import com.test.test.mapper.TestTaskMapper; +import com.test.test.domain.TestTask; +import com.test.test.service.ITestTaskService; + +/** + * 自动化测试Service业务层处理 + */ +@Service +public class TestTaskServiceImpl implements ITestTaskService { + + @Resource + private TestTaskMapper testTaskMapper; + + /** + * 查询自动化测试 + */ + @Override + public TestTask selectTestTaskById(Long id) { + return testTaskMapper.selectTestTaskById(id); + } + + /** + * 查询自动化测试列表 + */ + @Override + public List selectTestTaskList(GroupIdQO qo) { + return testTaskMapper.selectTestTaskList(qo); + } + + /** + * 新增自动化测试 + */ + @Override + public int insertTestTask(TestTask testTask) { + return testTaskMapper.insertTestTask(testTask); + } + + /** + * 修改自动化测试 + */ + @Override + public int updateTestTask(TestTask testTask) { + testTask.setUpdateTime(DateUtils.getNowDate()); + return testTaskMapper.updateTestTask(testTask); + } + + /** + * 批量删除自动化测试 + */ + @Override + public int deleteTestTaskByIds(Long[] ids) { + return testTaskMapper.deleteTestTaskByIds(ids); + } + + /** + * 删除自动化测试信息 + */ + @Override + public int deleteTestTaskById(Long id) { + return testTaskMapper.deleteTestTaskById(id); + } +} diff --git a/test-test/src/main/resources/mapper/test/TestCaseMapper.xml b/test-test/src/main/resources/mapper/test/TestCaseMapper.xml index 846430e..9eed395 100644 --- a/test-test/src/main/resources/mapper/test/TestCaseMapper.xml +++ b/test-test/src/main/resources/mapper/test/TestCaseMapper.xml @@ -33,7 +33,7 @@ from test_case - group_id = #{groupId} diff --git a/test-test/src/main/resources/mapper/test/TestTaskMapper.xml b/test-test/src/main/resources/mapper/test/TestTaskMapper.xml new file mode 100644 index 0000000..3539436 --- /dev/null +++ b/test-test/src/main/resources/mapper/test/TestTaskMapper.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, name, group_id, project_id, crontab, status, retry, retry_count, async, del_flag, create_by, create_time, update_by, update_time from test_task + + + + + + + + insert into test_task + + name, + group_id, + project_id, + crontab, + status, + retry, + retry_count, + async, + del_flag, + create_by, + create_time, + update_by, + update_time, + + + #{name}, + #{groupId}, + #{projectId}, + #{crontab}, + #{status}, + #{retry}, + #{retryCount}, + #{async}, + #{delFlag}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update test_task + + name = #{name}, + group_id = #{groupId}, + project_id = #{projectId}, + crontab = #{crontab}, + status = #{status}, + retry = #{retry}, + retry_count = #{retryCount}, + async = #{async}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from test_task where id = #{id} + + + + delete from test_task where id in + + #{id} + + + \ No newline at end of file diff --git a/test-ui/src/assets/images/header.png b/test-ui/src/assets/images/header.png new file mode 100644 index 0000000000000000000000000000000000000000..57030ebb18359217db0ef61dac7c43e46e509e8d GIT binary patch literal 15524 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 literal 0 HcmV?d00001 diff --git a/test-ui/src/views/test/case/index.vue b/test-ui/src/views/test/case/index.vue index 471c478..fec42c2 100644 --- a/test-ui/src/views/test/case/index.vue +++ b/test-ui/src/views/test/case/index.vue @@ -62,7 +62,7 @@ export default { }); }, handleAdd() { - this.$prompt('请输入名称', '提示', { + this.$prompt('请输入名称', '新增', { confirmButtonText: '确定', cancelButtonText: '取消', inputPattern: /^(?!\s*$).+/, @@ -80,7 +80,7 @@ export default { }); }, handleRowClick(row) { - this.$tab.openPage("用例 - " + row.name, "/case/detail", {id: row.id}); + this.$tab.openPage(`用例[${row.name}]`, "/case/detail", {id: row.id}); }, handleDelete(id) { this.$modal.confirm('是否确认删除用例?').then(function () { diff --git a/test-ui/src/views/test/task/edit/clickOutside.js b/test-ui/src/views/test/task/edit/clickOutside.js new file mode 100644 index 0000000..f4019d3 --- /dev/null +++ b/test-ui/src/views/test/task/edit/clickOutside.js @@ -0,0 +1,18 @@ +// clickOutside.js +export default { + bind(el, binding, vnode) { + el.clickOutsideEvent = function (event) { + // 检查点击事件的目标元素是否是绑定指令的元素或其子元素 + if (!(el === event.target || el.contains(event.target))) { + // 如果不是,则调用传递给指令的方法 + vnode.context[binding.expression](event); + } + }; + // 添加事件监听器 + document.body.addEventListener("click", el.clickOutsideEvent); + }, + unbind(el) { + // 移除事件监听器 + document.body.removeEventListener("click", el.clickOutsideEvent); + }, +}; diff --git a/test-ui/src/views/test/task/edit/executionRecord.vue b/test-ui/src/views/test/task/edit/executionRecord.vue new file mode 100644 index 0000000..649104e --- /dev/null +++ b/test-ui/src/views/test/task/edit/executionRecord.vue @@ -0,0 +1,256 @@ + + + + diff --git a/test-ui/src/views/test/task/edit/executiveReport.vue b/test-ui/src/views/test/task/edit/executiveReport.vue new file mode 100644 index 0000000..e69de29 diff --git a/test-ui/src/views/test/task/edit/index.vue b/test-ui/src/views/test/task/edit/index.vue new file mode 100644 index 0000000..403f376 --- /dev/null +++ b/test-ui/src/views/test/task/edit/index.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/test-ui/src/views/test/task/edit/lineChart.vue b/test-ui/src/views/test/task/edit/lineChart.vue new file mode 100644 index 0000000..0c26bb6 --- /dev/null +++ b/test-ui/src/views/test/task/edit/lineChart.vue @@ -0,0 +1,159 @@ + + + diff --git a/test-ui/src/views/test/task/edit/lineChartCover.vue b/test-ui/src/views/test/task/edit/lineChartCover.vue new file mode 100644 index 0000000..79db731 --- /dev/null +++ b/test-ui/src/views/test/task/edit/lineChartCover.vue @@ -0,0 +1,168 @@ + + + diff --git a/test-ui/src/views/test/task/edit/operationRecords.vue b/test-ui/src/views/test/task/edit/operationRecords.vue new file mode 100644 index 0000000..580607c --- /dev/null +++ b/test-ui/src/views/test/task/edit/operationRecords.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/test-ui/src/views/test/task/edit/report/components/pieChart.vue b/test-ui/src/views/test/task/edit/report/components/pieChart.vue new file mode 100644 index 0000000..e545247 --- /dev/null +++ b/test-ui/src/views/test/task/edit/report/components/pieChart.vue @@ -0,0 +1,111 @@ + + + diff --git a/test-ui/src/views/test/task/edit/report/index.vue b/test-ui/src/views/test/task/edit/report/index.vue new file mode 100644 index 0000000..f1d06e9 --- /dev/null +++ b/test-ui/src/views/test/task/edit/report/index.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/test-ui/src/views/test/task/edit/taskDetails.vue b/test-ui/src/views/test/task/edit/taskDetails.vue new file mode 100644 index 0000000..9d1d425 --- /dev/null +++ b/test-ui/src/views/test/task/edit/taskDetails.vue @@ -0,0 +1,735 @@ + + + + diff --git a/test-ui/src/views/test/task/edit/test1.vue b/test-ui/src/views/test/task/edit/test1.vue new file mode 100644 index 0000000..7d5e2f2 --- /dev/null +++ b/test-ui/src/views/test/task/edit/test1.vue @@ -0,0 +1,47 @@ + + + diff --git a/test-ui/src/views/test/task/edit/test2.vue b/test-ui/src/views/test/task/edit/test2.vue new file mode 100644 index 0000000..6d2fcd6 --- /dev/null +++ b/test-ui/src/views/test/task/edit/test2.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/test-ui/src/views/test/task/index.vue b/test-ui/src/views/test/task/index.vue index 98deb69..f5a6829 100644 --- a/test-ui/src/views/test/task/index.vue +++ b/test-ui/src/views/test/task/index.vue @@ -1,24 +1,100 @@