测试计划概览前端及后端代码完善
This commit is contained in:
@@ -10,9 +10,12 @@ import com.test.test.domain.qo.IDQO;
|
||||
import com.test.test.domain.qo.TestPlanAddQO;
|
||||
import com.test.test.domain.qo.TestPlanListQO;
|
||||
import com.test.test.domain.vo.TestPlanListVO;
|
||||
import com.test.test.domain.vo.TestPlanOverviewTrendDataVO;
|
||||
import com.test.test.domain.vo.TestPlanOverviewVO;
|
||||
import com.test.test.service.ITestPlanService;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@@ -79,4 +82,20 @@ public class TestPlanController extends BaseController {
|
||||
public AjaxResult edit(@RequestBody TestPlan testPlan) {
|
||||
return toAjax(testPlanService.updateTestPlan(testPlan));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取测试计划概览信息
|
||||
*/
|
||||
@PostMapping("/planOverview")
|
||||
public TestPlanOverviewVO selectPlanOverview(@RequestBody IDQO qo) {
|
||||
return testPlanService.selectPlanOverview(qo.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取测试计划用例执行趋势数据
|
||||
*/
|
||||
@PostMapping("/planCaseTrendData")
|
||||
public List<TestPlanOverviewTrendDataVO> getPlanCaseTrendData(@RequestBody IDQO qo) {
|
||||
return testPlanService.getCaseTrendData(qo.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.test.test.domain.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TestPlanOverviewTrendDataVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -6444876575138174061L;
|
||||
|
||||
private String caseTrendDates;
|
||||
|
||||
private Integer notExecuted;
|
||||
|
||||
private Integer passed;
|
||||
|
||||
private Integer failed;
|
||||
|
||||
private Integer blocked;
|
||||
|
||||
private Integer skipped;
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
package com.test.test.domain.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TestPlanOverviewVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -2634301979620606338L;
|
||||
|
||||
/**
|
||||
* 用例总数
|
||||
*/
|
||||
private Integer caseCount;
|
||||
|
||||
/**
|
||||
* 已执行用例数
|
||||
*/
|
||||
private Integer executedCaseCount;
|
||||
|
||||
/**
|
||||
* 用例通过数
|
||||
*/
|
||||
private Integer passedCaseCount;
|
||||
|
||||
/**
|
||||
* 用例失败数
|
||||
*/
|
||||
private Integer failedCaseCount;
|
||||
|
||||
/**
|
||||
* 用例阻塞数
|
||||
*/
|
||||
private Integer blockedCaseCount;
|
||||
|
||||
/**
|
||||
* 用例跳过数
|
||||
*/
|
||||
private Integer skippedCaseCount;
|
||||
|
||||
/**
|
||||
* 用例未执行数
|
||||
*/
|
||||
private Integer notExecutedCaseCount;
|
||||
|
||||
/**
|
||||
* 缺陷数
|
||||
*/
|
||||
private Integer defectCount;
|
||||
|
||||
/**
|
||||
* 待确认缺陷状态数
|
||||
*/
|
||||
private Integer unconfirmedDefectCount;
|
||||
|
||||
/**
|
||||
* 修复中缺陷状态数
|
||||
*/
|
||||
private Integer fixingDefectCount;
|
||||
|
||||
/**
|
||||
* 待验证缺陷状态数
|
||||
*/
|
||||
private Integer unverifiedDefectCount;
|
||||
|
||||
/**
|
||||
* 无效缺陷状态数
|
||||
*/
|
||||
private Integer invalidDefectCount;
|
||||
|
||||
/**
|
||||
* 挂起缺陷状态数
|
||||
*/
|
||||
private Integer suspendedDefectCount;
|
||||
|
||||
/**
|
||||
* 无效等级缺陷数
|
||||
*/
|
||||
private Integer invalidLevelDefectCount;
|
||||
|
||||
/**
|
||||
* 轻微等级缺陷数
|
||||
*/
|
||||
private Integer minorLevelDefectCount;
|
||||
|
||||
/**
|
||||
* 一般等级缺陷数
|
||||
*/
|
||||
private Integer normalLevelDefectCount;
|
||||
|
||||
/**
|
||||
* 严重等级缺陷数
|
||||
*/
|
||||
private Integer seriousLevelDefectCount;
|
||||
|
||||
/**
|
||||
* 致命等级缺陷数
|
||||
*/
|
||||
private Integer fatalLevelDefectCount;
|
||||
|
||||
/**
|
||||
* 功能逻辑类型缺陷数
|
||||
*/
|
||||
private Integer logicDefectCount;
|
||||
|
||||
/**
|
||||
* UI交互类型缺陷数
|
||||
*/
|
||||
private Integer uiDefectCount;
|
||||
|
||||
/**
|
||||
* 性能问题类型缺陷数
|
||||
*/
|
||||
private Integer performanceDefectCount;
|
||||
|
||||
/**
|
||||
* 兼容性问题类型缺陷数
|
||||
*/
|
||||
private Integer compatibilityDefectCount;
|
||||
|
||||
/**
|
||||
* 配置错误类型缺陷数
|
||||
*/
|
||||
private Integer configurationDefectCount;
|
||||
|
||||
/**
|
||||
* 安全问题类型缺陷数
|
||||
*/
|
||||
private Integer securityDefectCount;
|
||||
|
||||
/**
|
||||
* 安装部署类型缺陷数
|
||||
*/
|
||||
private Integer installationDefectCount;
|
||||
|
||||
/**
|
||||
* 其他类型缺陷数
|
||||
*/
|
||||
private Integer otherDefectCount;
|
||||
|
||||
/**
|
||||
* 用例执行时间
|
||||
*/
|
||||
private List<String> caseTrendDates;
|
||||
}
|
||||
@@ -3,8 +3,9 @@ package com.test.test.mapper;
|
||||
import com.test.test.domain.TestPlan;
|
||||
import com.test.test.domain.qo.TestPlanListQO;
|
||||
import com.test.test.domain.vo.TestPlanListVO;
|
||||
import com.test.test.domain.vo.TestPlanOverviewTrendDataVO;
|
||||
import com.test.test.domain.vo.TestPlanOverviewVO;
|
||||
import java.util.List;
|
||||
|
||||
public interface TestPlanMapper {
|
||||
|
||||
/**
|
||||
@@ -41,4 +42,18 @@ public interface TestPlanMapper {
|
||||
* @return
|
||||
*/
|
||||
Long selectPlanId(String serialNumber);
|
||||
|
||||
/**
|
||||
* 查询测试计划概览信息
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
TestPlanOverviewVO selectPlanOverview(Long id);
|
||||
|
||||
/**
|
||||
* 查询测试计划用例执行趋势数据
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
List<TestPlanOverviewTrendDataVO> getCaseTrendData(Long id);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ import com.test.test.domain.TestPlan;
|
||||
import com.test.test.domain.qo.TestPlanAddQO;
|
||||
import com.test.test.domain.qo.TestPlanListQO;
|
||||
import com.test.test.domain.vo.TestPlanListVO;
|
||||
import com.test.test.domain.vo.TestPlanOverviewTrendDataVO;
|
||||
import com.test.test.domain.vo.TestPlanOverviewVO;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -41,4 +43,18 @@ public interface ITestPlanService {
|
||||
* @return
|
||||
*/
|
||||
public int updateTestPlan(TestPlan testPlan);
|
||||
|
||||
/**
|
||||
* 获取测试计划概览信息
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
TestPlanOverviewVO selectPlanOverview(Long id);
|
||||
|
||||
/**
|
||||
* 获取测试计划用例趋势数据
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
List<TestPlanOverviewTrendDataVO> getCaseTrendData(Long id);
|
||||
}
|
||||
|
||||
@@ -6,10 +6,15 @@ import com.test.test.domain.TestPlan;
|
||||
import com.test.test.domain.qo.TestPlanAddQO;
|
||||
import com.test.test.domain.qo.TestPlanListQO;
|
||||
import com.test.test.domain.vo.TestPlanListVO;
|
||||
import com.test.test.domain.vo.TestPlanOverviewTrendDataVO;
|
||||
import com.test.test.domain.vo.TestPlanOverviewVO;
|
||||
import com.test.test.mapper.TestPlanMapper;
|
||||
import com.test.test.mapper.TestProjectPlanMapper;
|
||||
import com.test.test.service.ITestPlanService;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -82,4 +87,39 @@ public class TestPlanServiceImpl implements ITestPlanService {
|
||||
testPlan.setUpdateTime(DateUtils.getNowDate());
|
||||
return testPlanMapper.updateTestPlan(testPlan);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取测试计划概览信息
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public TestPlanOverviewVO selectPlanOverview(Long id) {
|
||||
TestPlanOverviewVO overviewVO = testPlanMapper.selectPlanOverview(id);
|
||||
overviewVO.setCaseTrendDates(getCaseTrendDates());
|
||||
return overviewVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取测试计划用例趋势数据
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<TestPlanOverviewTrendDataVO> getCaseTrendData(Long id) {
|
||||
return testPlanMapper.getCaseTrendData(id);
|
||||
}
|
||||
|
||||
private List<String> getCaseTrendDates() {
|
||||
List<String> dates = new ArrayList<>();
|
||||
LocalDate today = LocalDate.now();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
|
||||
for (int i = 6; i >= 0; i--) {
|
||||
LocalDate date = today.minusDays(i);
|
||||
dates.add(date.format(formatter));
|
||||
}
|
||||
|
||||
return dates;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,4 +203,56 @@
|
||||
<select id="selectPlanId" resultType="Long">
|
||||
select id from test_plan where serial_number = #{serialNumber} and del_flag = '0'
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectPlanOverview" resultType="TestPlanOverviewVO">
|
||||
SELECT
|
||||
(SELECT COUNT(1) FROM test_plan_case tpc WHERE tpc.plan_id = #{id} AND tpc.del_flag = '0') AS caseCount,
|
||||
(SELECT COUNT(1) FROM test_plan_case tpc WHERE tpc.plan_id = #{id} AND tpc.del_flag = '0' AND tpc.execute_result != '0') AS executedCaseCount,
|
||||
(SELECT COUNT(1) FROM test_plan_case tpc WHERE tpc.plan_id = #{id} AND tpc.del_flag = '0' AND tpc.execute_result = '1') AS passedCaseCount,
|
||||
(SELECT COUNT(1) FROM test_plan_case tpc WHERE tpc.plan_id = #{id} AND tpc.del_flag = '0' AND tpc.execute_result = '2') AS failedCaseCount,
|
||||
(SELECT COUNT(1) FROM test_plan_case tpc WHERE tpc.plan_id = #{id} AND tpc.del_flag = '0' AND tpc.execute_result = '0') AS notExecutedCaseCount,
|
||||
(SELECT COUNT(1) FROM test_plan_case tpc WHERE tpc.plan_id = #{id} AND tpc.del_flag = '0' AND tpc.execute_result = '3') AS blockedCaseCount,
|
||||
(SELECT COUNT(1) FROM test_plan_case tpc WHERE tpc.plan_id = #{id} AND tpc.del_flag = '0' AND tpc.execute_result = '4') AS skippedCaseCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd WHERE tpd.plan_id = #{id} AND tpd.del_flag = '0') AS defectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.status = '0' AND tpd.del_flag = '0') AS unconfirmedDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.status = '1' AND tpd.del_flag = '0') AS fixingDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.status = '5' AND tpd.del_flag = '0') AS unverifiedDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.status = '3' AND tpd.del_flag = '0') AS invalidDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.status = '4' AND tpd.del_flag = '0') AS suspendedDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.level = '0' AND tpd.del_flag = '0') AS invalidLevelDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.level = '1' AND tpd.del_flag = '0') AS minorLevelDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.level = '2' AND tpd.del_flag = '0') AS normalLevelDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.level = '3' AND tpd.del_flag = '0') AS seriousLevelDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.level = '4' AND tpd.del_flag = '0') AS fatalLevelDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.type = '0' AND tpd.del_flag = '0') AS logicDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.type = '1' AND tpd.del_flag = '0') AS uiDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.type = '2' AND tpd.del_flag = '0') AS performanceDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.type = '3' AND tpd.del_flag = '0') AS compatibilityDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.type = '4' AND tpd.del_flag = '0') AS configurationDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.type = '5' AND tpd.del_flag = '0') AS securityDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.type = '6' AND tpd.del_flag = '0') AS installationDefectCount,
|
||||
(SELECT COUNT(1) FROM test_plan_defect tpd LEFT JOIN test_defect td ON td.id = tpd.defect_id WHERE tpd.plan_id = #{id} AND td.type = '7' AND tpd.del_flag = '0') AS otherDefectCount
|
||||
FROM test_plan tp
|
||||
WHERE tp.id = #{id}
|
||||
AND tp.del_flag = '0'
|
||||
</select>
|
||||
|
||||
<select id="getCaseTrendData" resultType="TestPlanOverviewTrendDataVO">
|
||||
SELECT
|
||||
DATE_FORMAT(tpc.execute_time, '%Y-%m-%d') AS caseTrendDates,
|
||||
SUM(CASE WHEN tpc.execute_result = '0' THEN 1 ELSE 0 END) AS notExecuted,
|
||||
SUM(CASE WHEN tpc.execute_result = '1' THEN 1 ELSE 0 END) AS passed,
|
||||
SUM(CASE WHEN tpc.execute_result = '2' THEN 1 ELSE 0 END) AS failed,
|
||||
SUM(CASE WHEN tpc.execute_result = '3' THEN 1 ELSE 0 END) AS blocked,
|
||||
SUM(CASE WHEN tpc.execute_result = '4' THEN 1 ELSE 0 END) AS skipped
|
||||
FROM test_plan_case tpc
|
||||
LEFT JOIN test_plan tp ON tp.id = tpc.plan_id
|
||||
WHERE tpc.del_flag = '0'
|
||||
AND tpc.plan_id = #{id}
|
||||
AND tp.del_flag = '0'
|
||||
AND tpc.execute_time >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
|
||||
GROUP BY DATE_FORMAT(tpc.execute_time, '%Y-%m-%d')
|
||||
ORDER BY DATE_FORMAT(tpc.execute_time, '%Y-%m-%d') ASC
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user