Commit 3970085c authored by 盖献康's avatar 盖献康

Merge branch 'dev' of...

Merge branch 'dev' of ssh://gitlab.91isoft.com:10022/wangfei/vehicle-quality-review into gaixiankang
parents 6388f8fc 0498bc07
...@@ -50,4 +50,7 @@ public class TestRecords { ...@@ -50,4 +50,7 @@ public class TestRecords {
@ApiModelProperty("修复建议") @ApiModelProperty("修复建议")
private String remediation; private String remediation;
@ApiModelProperty("测试详情")
private String testDetails;
} }
...@@ -7,6 +7,8 @@ import lombok.Builder; ...@@ -7,6 +7,8 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
...@@ -43,4 +45,17 @@ public class QuantityStatisticsVO { ...@@ -43,4 +45,17 @@ public class QuantityStatisticsVO {
@ApiModelProperty("场景数量") @ApiModelProperty("场景数量")
private Long numberScenes; private Long numberScenes;
@ApiModelProperty("已完成任务数量")
private Integer completedTaskNumber;
@ApiModelProperty("执行中任务数量")
private Integer executeTasksNumber;
@ApiModelProperty("已完成任务占比")
private Integer completedTaskProportion;
@ApiModelProperty("执行中任务任务占比")
private Integer executeTaskProportion;
} }
...@@ -2,6 +2,9 @@ package com.ruoyi.mapper; ...@@ -2,6 +2,9 @@ package com.ruoyi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.domain.ModelTestTask; import com.ruoyi.domain.ModelTestTask;
import com.ruoyi.web.response.ResultCountResponse;
import com.ruoyi.web.response.TaskFindResponse;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -15,4 +18,10 @@ public interface ModelTestTaskMapper extends BaseMapper<ModelTestTask> { ...@@ -15,4 +18,10 @@ public interface ModelTestTaskMapper extends BaseMapper<ModelTestTask> {
// 查询pending状态下的所有任务 // 查询pending状态下的所有任务
List<ModelTestTask> findByStatus(); List<ModelTestTask> findByStatus();
// 根据总任务列表查询子任务
List<ModelTestTask> findByTaskList(@Param("responses") List<TaskFindResponse> responses);
// 根据子任务列表查询进度
List<ResultCountResponse> testAnswerCount(@Param("responses")List<TaskFindResponse> responses);
} }
...@@ -18,11 +18,26 @@ public class StatisticsHomeServiceImpl implements StatisticsHomeService { ...@@ -18,11 +18,26 @@ public class StatisticsHomeServiceImpl implements StatisticsHomeService {
@Override @Override
public QuantityStatisticsVO selectQuantityStatistics(QuantityStatisticsVO quantityStatisticsHome){ public QuantityStatisticsVO selectQuantityStatistics(QuantityStatisticsVO quantityStatisticsHome){
return statisticsHomeMapper.selectQuantityStatistics(quantityStatisticsHome);
QuantityStatisticsVO quantityStatisticsVO = statisticsHomeMapper.selectQuantityStatistics(quantityStatisticsHome);
quantityStatisticsVO.setExecuteTaskProportion(percentageCalculation(quantityStatisticsVO.getExecuteTasksNumber(),quantityStatisticsVO.getCompletedTaskNumber()));
quantityStatisticsVO.setCompletedTaskProportion(percentageCalculation(quantityStatisticsVO.getCompletedTaskNumber(),quantityStatisticsVO.getExecuteTasksNumber()));
return quantityStatisticsVO;
} }
@Override @Override
public List<StandardCategoryStatisticsVO> selectStandardCategoryStatistics(){ public List<StandardCategoryStatisticsVO> selectStandardCategoryStatistics(){
return statisticsHomeMapper.selectStandardCategoryStatistics(); return statisticsHomeMapper.selectStandardCategoryStatistics();
} }
// 计算百分比
public int percentageCalculation(Integer a, Integer b){
int total = a+b;
if(total == 0){
return 0;
}else {
float c = (float)a/total;
return Math.round(c*100);
}
}
} }
...@@ -22,9 +22,7 @@ import com.ruoyi.web.response.DataStatisticsResponse; ...@@ -22,9 +22,7 @@ import com.ruoyi.web.response.DataStatisticsResponse;
import com.ruoyi.web.response.ResultCountResponse; import com.ruoyi.web.response.ResultCountResponse;
import com.ruoyi.web.response.TaskFindResponse; import com.ruoyi.web.response.TaskFindResponse;
import com.ruoyi.web.response.TaskGetInfoResponse; import com.ruoyi.web.response.TaskGetInfoResponse;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -103,6 +101,9 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -103,6 +101,9 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
@Autowired @Autowired
private TaskFileRelationService taskFileRelationService; private TaskFileRelationService taskFileRelationService;
@Autowired
private ModelTestTaskMapper modelTestTaskMapper;
@Override @Override
public List<Task> findList(TaskListRequest request) { public List<Task> findList(TaskListRequest request) {
return taskMapper.findList(request); return taskMapper.findList(request);
...@@ -213,60 +214,16 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -213,60 +214,16 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
if (responses != null && responses.size() != 0) { if (responses != null && responses.size() != 0) {
// 体系审查子任务列表 // 体系审查子任务列表
List<SystemReviewTask> systemReviewTaskList = systemReviewTaskMapper.findByTaskList(responses); List<SystemReviewTask> systemReviewTaskList = systemReviewTaskMapper.findByTaskList(responses);
setSystemProgress(systemReviewTaskList,responses);
if (systemReviewTaskList != null && systemReviewTaskList.size() != 0) {
// 子任务列表进度
List<ResultCountResponse> responseLists = reviewDetailsMapper.systemAnswerCount(systemReviewTaskList,SystemReviewTask.TYPE);
if (responseLists != null && responseLists.size() != 0) {
// 设置子任务不为finish时,最大进度为90
for (ResultCountResponse response : responseLists) {
if (Objects.equals(response.getTaskStatus(), SystemReviewTask.STATUS_FINISH)) {
response.setSchedule(100.0);
} else {
BigDecimal num = new BigDecimal(response.getSchedule());
response.setSchedule(num.setScale(1,BigDecimal.ROUND_UP).doubleValue());
}
}
for (ResultCountResponse responseList : responseLists) {
for (TaskFindResponse response : responses) {
if (responseList.getTaskId().equals(response.getSystemReviewTaskId())) {
response.setSystemReview(responseList.getSchedule());
}
}
}
}
}
// 车型问卷子任务列表 // 车型问卷子任务列表
List<CarReviewTask> carReviewTaskList = carReviewTaskMapper.findByTaskList(responses); List<CarReviewTask> carReviewTaskList = carReviewTaskMapper.findByTaskList(responses);
setCarProgress(carReviewTaskList,responses);
if (carReviewTaskList != null && carReviewTaskList.size() != 0) { // 车型试验子任务列表
// 子任务列表进度 List<ModelTestTask> modelTestTaskList = modelTestTaskMapper.findByTaskList(responses);
List<ResultCountResponse> carResponseList = reviewDetailsMapper.carAnswerCount(carReviewTaskList,CarReviewTask.TYPE); setModelProgress(modelTestTaskList,responses);
if (carResponseList != null && carResponseList.size() != 0) {
// 设置子任务不为finish时,最大进度为90
for (ResultCountResponse response : carResponseList) {
if (Objects.equals(response.getTaskStatus(), CarReviewTask.TASK_STATUS_FINISH)) {
response.setSchedule(100.0);
} else {
BigDecimal num = new BigDecimal(response.getSchedule());
response.setSchedule(num.setScale(1,BigDecimal.ROUND_UP).doubleValue());
}
}
for (ResultCountResponse responseList : carResponseList) {
for (TaskFindResponse response : responses) {
if (responseList.getTaskId().equals(response.getCarReviewTaskId())) {
response.setCarReview(responseList.getSchedule());
}
}
}
}
}
for (TaskFindResponse response : responses) { for (TaskFindResponse response : responses) {
String[] taskList = response.getTaskList().split(","); String[] taskList = response.getTaskList().split(",");
...@@ -349,6 +306,30 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -349,6 +306,30 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
systemReviewTaskMapper.deleteById(task.getSystemReviewTaskId()); systemReviewTaskMapper.deleteById(task.getSystemReviewTaskId());
carReviewTaskMapper.deleteById(task.getCarReviewTaskId()); carReviewTaskMapper.deleteById(task.getCarReviewTaskId());
modelTestTaskMapper.deleteById(task.getModelTestTaskId());
// 小组
List<TaskUserRelation> list = taskUserRelationService.selectQTeamMembers(task.getId());
if (list != null && list.size() != 0) {
taskFileRelationService.removeBatchByIds(list);
}
// 样品
List<TaskSampleRelation> relationList = taskSampleRelationService.selectByTaskId(task.getId(),TaskSampleRelation.COMPLETE_VEHICLE_SAMPLE);
if (relationList != null && relationList.size() != 0) {
taskSampleRelationService.removeBatchByIds(relationList);
}
List<TaskSampleRelation> partRelationList = taskSampleRelationService.selectByTaskId(task.getId(),TaskSampleRelation.PART_VEHICLE_SAMPLE);
if (partRelationList != null && partRelationList.size() != 0) {
taskSampleRelationService.removeBatchByIds(partRelationList);
}
// 文件
List<TaskFileRelation> fileList = taskFileRelationService.findByTaskId(task.getId());
if (fileList != null && fileList.size() != 0) {
taskFileRelationService.removeBatchByIds(fileList);
}
taskMapper.deleteById(request.getId()); taskMapper.deleteById(request.getId());
} }
...@@ -479,7 +460,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -479,7 +460,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
// 找到审查组长 // 找到审查组长
TaskUserRelation leader = null; TaskUserRelation leader = null;
List<TaskUserRelation> auditors = request.getAuditors(); List<TaskUserRelation> auditors = request.getAuditors();
if (auditors.size() != 0 && auditors != null) { if (auditors != null && auditors.size() != 0) {
for(TaskUserRelation auditor : auditors) { for(TaskUserRelation auditor : auditors) {
if(auditor.getIsLeader() == 1) { if(auditor.getIsLeader() == 1) {
leader = auditor; leader = auditor;
...@@ -542,7 +523,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -542,7 +523,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
// 找到审查组长 // 找到审查组长
TaskUserRelation leader = null; TaskUserRelation leader = null;
List<TaskUserRelation> auditors = request.getAuditors(); List<TaskUserRelation> auditors = request.getAuditors();
if (auditors.size() != 0 && auditors != null) { if (auditors != null && auditors.size() != 0) {
for(TaskUserRelation auditor : auditors) { for(TaskUserRelation auditor : auditors) {
if(auditor.getIsLeader() == 1) { if(auditor.getIsLeader() == 1) {
leader = auditor; leader = auditor;
...@@ -678,6 +659,97 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -678,6 +659,97 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
} }
private void setModelProgress(List<ModelTestTask> modelTestTaskList, List<TaskFindResponse> responses) {
if (modelTestTaskList != null && modelTestTaskList.size() != 0) {
// 子任务进度列表
List<ResultCountResponse> testResponseList = modelTestTaskMapper.testAnswerCount(responses);
if (testResponseList != null && testResponseList.size() != 0) {
// 设置子任务不为finish时,最大进度为90 进度为null时,改为0
for (ResultCountResponse response : testResponseList) {
if (Objects.equals(response.getTaskStatus(), ModelTestTask.TASK_STATUS_FINISH)) {
response.setSchedule(100.0);
} else if (Objects.equals(response.getTaskStatus(), ModelTestTask.TASK_STATUS_SIGNED)) {
response.setSchedule(90.0);
} else if (response.getSchedule() == null) {
response.setSchedule(0.0);
} else {
BigDecimal num = new BigDecimal(response.getSchedule());
response.setSchedule(num.setScale(1,BigDecimal.ROUND_UP).doubleValue());
}
}
for (ResultCountResponse responseList : testResponseList) {
for (TaskFindResponse response : responses) {
if (responseList.getTaskId().equals(response.getModelTestTaskId())) {
response.setTest(responseList.getSchedule());
}
}
}
}
}
}
private void setCarProgress(List<CarReviewTask> carReviewTaskList, List<TaskFindResponse> responses) {
if (carReviewTaskList != null && carReviewTaskList.size() != 0) {
// 子任务列表进度
List<ResultCountResponse> carResponseList = reviewDetailsMapper.carAnswerCount(carReviewTaskList,CarReviewTask.TYPE);
if (carResponseList != null && carResponseList.size() != 0) {
// 设置子任务不为finish时,最大进度为90
for (ResultCountResponse response : carResponseList) {
if (Objects.equals(response.getTaskStatus(), CarReviewTask.TASK_STATUS_FINISH)) {
response.setSchedule(100.0);
} else {
BigDecimal num = new BigDecimal(response.getSchedule());
response.setSchedule(num.setScale(1,BigDecimal.ROUND_UP).doubleValue());
}
}
for (ResultCountResponse responseList : carResponseList) {
for (TaskFindResponse response : responses) {
if (responseList.getTaskId().equals(response.getCarReviewTaskId())) {
response.setCarReview(responseList.getSchedule());
}
}
}
}
}
}
private void setSystemProgress(List<SystemReviewTask> systemReviewTaskList,List<TaskFindResponse> responses) {
if (systemReviewTaskList != null && systemReviewTaskList.size() != 0) {
// 子任务列表进度
List<ResultCountResponse> responseLists = reviewDetailsMapper.systemAnswerCount(systemReviewTaskList,SystemReviewTask.TYPE);
if (responseLists != null && responseLists.size() != 0) {
// 设置子任务不为finish时,最大进度为90
for (ResultCountResponse response : responseLists) {
if (Objects.equals(response.getTaskStatus(), SystemReviewTask.STATUS_FINISH)) {
response.setSchedule(100.0);
} else {
BigDecimal num = new BigDecimal(response.getSchedule());
response.setSchedule(num.setScale(1,BigDecimal.ROUND_UP).doubleValue());
}
}
for (ResultCountResponse responseList : responseLists) {
for (TaskFindResponse response : responses) {
if (responseList.getTaskId().equals(response.getSystemReviewTaskId())) {
response.setSystemReview(responseList.getSchedule());
}
}
}
}
}
}
// 按顺序设置taskList // 按顺序设置taskList
private void setTaskList(List<String> taskList, Task task) { private void setTaskList(List<String> taskList, Task task) {
// 定义一个比较器,按照 "sraif, grfis, trfis" 的顺序排序 // 定义一个比较器,按照 "sraif, grfis, trfis" 的顺序排序
......
...@@ -59,6 +59,12 @@ public class TestRecordsServiceImpl extends ServiceImpl<TestRecordsMapper, TestR ...@@ -59,6 +59,12 @@ public class TestRecordsServiceImpl extends ServiceImpl<TestRecordsMapper, TestR
for (TestRecords records : recordsList) { for (TestRecords records : recordsList) {
if (Objects.equals(caseResultVO.getId(), records.getUsecaseId())) { if (Objects.equals(caseResultVO.getId(), records.getUsecaseId())) {
exists = true; exists = true;
if (!Objects.equals(caseResultVO.getStatus(), records.getTestResult())) {
records.setTestResult(caseResultVO.getStatus());
records.setRemediation(caseResultVO.getRemediation());
testRecordsService.updateById(records);
}
break; break;
} }
} }
...@@ -80,12 +86,24 @@ public class TestRecordsServiceImpl extends ServiceImpl<TestRecordsMapper, TestR ...@@ -80,12 +86,24 @@ public class TestRecordsServiceImpl extends ServiceImpl<TestRecordsMapper, TestR
if (stepResultVOS != null && stepResultVOS.size() != 0) { if (stepResultVOS != null && stepResultVOS.size() != 0) {
List<String> stepList = new ArrayList<>(); List<String> stepList = new ArrayList<>();
List<String> testDetailsList = new ArrayList<>();
int index = 1; // 序号从1开始
for (StepResultVO stepResultVO :stepResultVOS) { for (StepResultVO stepResultVO :stepResultVOS) {
// 测试方法
String stepName = stepResultVO.getName(); String stepName = stepResultVO.getName();
stepList.add(stepName); // 给每个元素加上序号
String stepWithIndex = index + "." + stepName;
stepList.add(stepWithIndex);
index++;
// 测试详情
String testDetails = stepResultVO.getDescription();
testDetailsList.add(testDetails);
} }
testRecords.setTestMethod(StringUtils.join(stepList,",")); testRecords.setTestMethod(StringUtils.join(stepList,"`"));
testRecords.setTestDetails(StringUtils.join(testDetailsList,"\n"));
} }
list.add(testRecords); list.add(testRecords);
...@@ -141,12 +159,24 @@ public class TestRecordsServiceImpl extends ServiceImpl<TestRecordsMapper, TestR ...@@ -141,12 +159,24 @@ public class TestRecordsServiceImpl extends ServiceImpl<TestRecordsMapper, TestR
if (stepResultVOS != null && stepResultVOS.size() != 0) { if (stepResultVOS != null && stepResultVOS.size() != 0) {
List<String> stepList = new ArrayList<>(); List<String> stepList = new ArrayList<>();
List<String> testDetailsList = new ArrayList<>();
int index = 1; // 序号从1开始
for (StepResultVO stepResultVO :stepResultVOS) { for (StepResultVO stepResultVO :stepResultVOS) {
// 测试方法
String stepName = stepResultVO.getName(); String stepName = stepResultVO.getName();
stepList.add(stepName); // 给每个元素加上序号
String stepWithIndex = index + "." + stepName;
stepList.add(stepWithIndex);
index++;
// 测试详情
String testDetails = stepResultVO.getDescription();
testDetailsList.add(testDetails);
} }
testRecords.setTestMethod(StringUtils.join(stepList,",")); testRecords.setTestMethod(StringUtils.join(stepList,"`"));
testRecords.setTestDetails(StringUtils.join(testDetailsList,"\n"));
} }
list.add(testRecords); list.add(testRecords);
......
...@@ -31,6 +31,34 @@ ...@@ -31,6 +31,34 @@
SELECT id,task_no,task_status,task_initiator,task_initiator_dept,task_result,task_begin_time,task_end_time,test_case,create_time,leader_id,leader,standard_id,name,standard_no,submit_id,submit_name,images_url,details,standards,test_scheme_id SELECT id,task_no,task_status,task_initiator,task_initiator_dept,task_result,task_begin_time,task_end_time,test_case,create_time,leader_id,leader,standard_id,name,standard_no,submit_id,submit_name,images_url,details,standards,test_scheme_id
FROM t_model_test_task WHERE task_status = 'PENDING' FROM t_model_test_task WHERE task_status = 'PENDING'
</select> </select>
<select id="findByTaskList" resultType="com.ruoyi.domain.ModelTestTask">
SELECT id,task_no,task_status,task_initiator,task_initiator_dept,task_result,task_begin_time,task_end_time,test_case,create_time,leader_id,leader,standard_id,name,standard_no,submit_id,submit_name,images_url,details,standards,test_scheme_id
FROM t_model_test_task
WHERE id IN
<foreach collection="responses" item="task" open="(" separator="," close=")">
#{task.modelTestTaskId}
</foreach>
</select>
<select id="testAnswerCount" resultType="com.ruoyi.web.response.ResultCountResponse">
<foreach item="task" collection="responses" separator="UNION ALL">
SELECT
#{task.modelTestTaskId} AS taskId,
(IFNULL(
(SELECT COUNT(*) FROM t_test_records WHERE task_id = #{task.modelTestTaskId}),
0
) /
IFNULL(
(SELECT COUNT(*) FROM t_task_scenario_relation tsr
INNER JOIN t_test_scenario tts ON tts.id = tsr.test_scenario_id
INNER JOIN t_test_usecase ttu ON tts.id = ttu.test_scenario_id
WHERE tsr.task_id = #{task.id}),
1
)) * 90 AS schedule,
tm.task_status AS taskStatus
from t_model_test_task tm where tm.id = #{task.modelTestTaskId}
</foreach>
group by taskId
</select>
</mapper> </mapper>
...@@ -24,7 +24,9 @@ ...@@ -24,7 +24,9 @@
( SELECT count( id ) FROM t_sample WHERE flag = '1' AND deleted = 0 ) AS numberComponentSamples, ( SELECT count( id ) FROM t_sample WHERE flag = '1' AND deleted = 0 ) AS numberComponentSamples,
( SELECT count( id ) FROM t_test_scenario ) AS numberScenes, ( SELECT count( id ) FROM t_test_scenario ) AS numberScenes,
( SELECT count( id ) FROM t_test_type ) AS numberMethods, ( SELECT count( id ) FROM t_test_type ) AS numberMethods,
( SELECT count( id ) FROM t_task WHERE vehicle_information_url IS NOT NULL ) AS numberReports ( SELECT count( id ) FROM t_task WHERE vehicle_information_url IS NOT NULL ) AS numberReports,
( SELECT count( id ) FROM t_task WHERE task_status = 'FINISH' ) AS completedTaskNumber,
( SELECT count( id ) FROM t_task WHERE task_status = 'NEW' OR task_status = 'PENDING' ) AS executeTasksNumber
</select> </select>
<select id="selectStandardCategoryStatistics" resultType="com.ruoyi.domain.vo.StandardCategoryStatisticsVO"> <select id="selectStandardCategoryStatistics" resultType="com.ruoyi.domain.vo.StandardCategoryStatisticsVO">
......
...@@ -16,9 +16,10 @@ ...@@ -16,9 +16,10 @@
<result property="testMethod" column="test_method" jdbcType="LONGNVARCHAR"/> <result property="testMethod" column="test_method" jdbcType="LONGNVARCHAR"/>
<result property="testResult" column="test_result" jdbcType="VARCHAR"/> <result property="testResult" column="test_result" jdbcType="VARCHAR"/>
<result property="remediation" column="remediation" jdbcType="VARCHAR"/> <result property="remediation" column="remediation" jdbcType="VARCHAR"/>
<result property="testDetails" column="test_details" jdbcType="LONGNVARCHAR"/>
</resultMap> </resultMap>
<select id="findByTaskId" resultType="com.ruoyi.domain.TestRecords"> <select id="findByTaskId" resultType="com.ruoyi.domain.TestRecords">
SELECT id, project_id, task_id, usecase, usecase_id, test_time, description, risk_level, test_method, test_result, remediation SELECT id, project_id, task_id, usecase, usecase_id, test_time, description, risk_level, test_method, test_result, remediation, test_details
FROM t_test_records FROM t_test_records
WHERE project_id = #{id} WHERE project_id = #{id}
</select> </select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment