Explorar o código

修改task列表数据源头,并修复报告数为0的任务页面报错问题

insomniaLee %!s(int64=6) %!d(string=hai) anos
pai
achega
52914fd122

+ 41 - 0
src/main/java/com/mooctest/service/TaskService.java

@@ -40,7 +40,48 @@ public class TaskService {
     @Value("${task.info.addr}")
     String taskInfoAddr;
 
+
     public List<TaskDTO> getAllTasks() {
+        RestTemplate rt = new RestTemplate();
+        StringHttpMessageConverter stringHttpMessageConverter=new StringHttpMessageConverter(Charset.forName("UTF-8"));
+        List<HttpMessageConverter<?>> list=new ArrayList<HttpMessageConverter<?>>();
+        list.add(stringHttpMessageConverter);
+        rt.setMessageConverters(list);
+        JSONObject tasksJson = JSON.parseObject(rt.getForObject(taskInfoAddr, String.class));
+        ListIterator<Object> tasksIter = tasksJson.getJSONArray("data").listIterator();
+
+        List<TaskDTO> dtos = new ArrayList<>();
+        while (tasksIter.hasNext()) {
+            JSONObject taskInfo = (JSONObject) tasksIter.next();
+
+            TaskDTO dto = new TaskDTO();
+            dto.setExamId(Long.parseLong(taskInfo.getString("task_id")));
+            dto.setCaseId(Long.parseLong(taskInfo.getString("case_id")));
+            dto.setName(taskInfo.getString("name"));
+
+            dtos.add(dto);
+        }
+
+        return dtos.stream()
+                .map(taskDTO -> {
+                    long totalBugs = masterReportDao.countByExamIdAndCaseId(taskDTO.getExamId(), taskDTO.getCaseId());
+                    long undealBugs = 0;
+                    if (totalBugs == 0) {
+                        totalBugs = bugReportService.getAllBugs(taskDTO.getExamId(), taskDTO.getCaseId()).size();
+                        undealBugs = totalBugs;
+                    } else {
+                        undealBugs = masterReportDao.countByExamIdAndCaseIdAndStatus(taskDTO.getExamId(), taskDTO.getCaseId(), 0);
+                    }
+                    taskDTO.setNumOfTotalBug(totalBugs);
+                    taskDTO.setNumOfUndeal(undealBugs);
+
+                    return taskDTO;
+                }).sorted(Comparator.comparing(TaskDTO::getExamId).reversed())
+                .collect(Collectors.toList());
+
+    }
+
+    public List<TaskDTO> getAllTasks2() {
         return tasks.stream()
                 .map(task -> {
                     TaskDTO taskDTO = new TaskDTO();

+ 12 - 4
src/main/resources/templates/task_detail.html

@@ -90,12 +90,16 @@
                         <span class="info-box-text">已审核</span>
                         <span class="info-box-number">
 						<b th:text="${task.numOfTotalBug - task.numOfUndeal}">{{ count_assigned }} </b>
-						(<span th:text="${#numbers.formatDecimal((1 - task.numOfUndeal * 1.0 / task.numOfTotalBug) * 100, 1, 0)}">40</span>%)
+						(
+                            <span th:if="${task.numOfTotalBug==0}" >0</span>
+                            <span th:if="${task.numOfTotalBug!=0}" th:text="${#numbers.formatDecimal((1 - task.numOfUndeal * 1.0 / task.numOfTotalBug) * 100, 1, 0)}">40</span>
+                            %)
 					</span>
 
                         <!-- Progress Bar -->
                         <div class="progress">
-                            <div class="progress-bar" th:style="'width: '+${(1 - task.numOfUndeal * 1.0 / task.numOfTotalBug) * 100}+'%;'"></div>
+                            <div class="progress-bar" th:if="${task.numOfTotalBug!=0}" th:style="'width: '+${(1 - task.numOfUndeal * 1.0 / task.numOfTotalBug) * 100}+'%;'"></div>
+                            <div class="progress-bar" th:if="${task.numOfTotalBug==0}" style="width: 0%"></div>
                         </div>
                     </div>
                 </div>
@@ -108,12 +112,16 @@
                         <span class="info-box-text">未审核</span>
                         <span class="info-box-number">
 						<b th:text="${task.numOfUndeal}"></b>
-						(<span class="" th:text="${#numbers.formatDecimal((task.numOfUndeal * 1.0 / task.numOfTotalBug) * 100, 1, 0)}"></span>%)
+						(
+                            <span th:if="${task.numOfTotalBug!=0}" class="" th:text="${#numbers.formatDecimal((task.numOfUndeal * 1.0 / task.numOfTotalBug) * 100, 1, 0)}"></span>
+                            <span th:if="${task.numOfTotalBug==0}" class="" >100</span>
+                            %)
 					</span>
 
                         <!-- Progress Bar -->
                         <div class="progress">
-                            <div class="progress-bar" th:style="'width: '+${(task.numOfUndeal * 1.0 / task.numOfTotalBug) * 100}+'%;'"></div>
+                            <div th:if="${task.numOfTotalBug!=0}"  class="progress-bar" th:style="'width: '+${(task.numOfUndeal * 1.0 / task.numOfTotalBug) * 100}+'%;'"></div>
+                            <div th:if="${task.numOfTotalBug==0}"  class="progress-bar" style="width: 100%"></div>
                         </div>
 
                     </div>

+ 11 - 5
src/main/resources/templates/task_list.html

@@ -107,14 +107,20 @@
                             <a th:href="'/task_detail?examId=' + ${task.examId} + '&amp;caseId=' + ${task.caseId}">
                                 <div class="progress">
                                 <div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar"
+                                     th:if="${task.numOfTotalBug!=0}"
                                      th:style="'width: ' + ${(1 - task.numOfUndeal*1.0/task.numOfTotalBug) * 100}+'%'"
                                      data-placement="bottom" data-toggle="tooltip" th:title="|${task.numOfTotalBug - task.numOfUndeal}份报告已经被审核|">
                                 </div>
-
-                                    <div class="progress-bar progress-bar-danger progress-bar-striped" role="progressbar"
-                                         th:style="'width: ' + ${(task.numOfUndeal*1.0/task.numOfTotalBug) * 100}+'%'"
-                                         data-placement="bottom" data-toggle="tooltip" th:title="|${task.numOfUndeal}份报告还未被审核|">
-                                    </div>
+                                <div class="progress-bar progress-bar-danger progress-bar-striped" role="progressbar"
+                                     th:if="${task.numOfTotalBug!=0}"
+                                     th:style="'width: ' + ${(task.numOfUndeal*1.0/task.numOfTotalBug) * 100}+'%'"
+                                     data-placement="bottom" data-toggle="tooltip" th:title="|${task.numOfUndeal}份报告还未被审核|">
+                                </div>
+                                <div class="progress-bar progress-bar-danger progress-bar-striped" role="progressbar"
+                                     th:if="${task.numOfTotalBug==0}"
+                                     style="width: 100%"
+                                     data-placement="bottom" data-toggle="tooltip" th:title="|该任务没有报告|">
+                                </div>
 
                             </div>
                             </a>