Explorar el Código

修复首页工时统计错误的问题

zhangjq hace 1 año
padre
commit
f6bd7295e1

+ 23 - 20
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/report/ReportServiceImpl.java

@@ -608,7 +608,6 @@ public class ReportServiceImpl implements ReportService {
         if (StrUtil.isNotBlank(reportWorkloadStatisticReqDTO.getUserId())) {
             queryWrapper.eq("USER_ID", reportWorkloadStatisticReqDTO.getUserId());
         }
-
         //根据项目名称模糊查询项目ID
         ProjectDto projectDto = new ProjectDto();
         projectDto.setPageNo(1);
@@ -622,24 +621,26 @@ public class ReportServiceImpl implements ReportService {
                 return new PageResult<>();
             }
         }
-        List<String> projectIdList = projectList.stream().map(ProjectVO::getId).collect(Collectors.toList());
-        // 每1000个元素分一个List (oracle的in最多接收1000)
-        int chunkSize = 1000;
-        List<List<String>> chunkedProjectIdList = IntStream.range(0, (projectIdList.size() + chunkSize - 1) / chunkSize)
-                .mapToObj(i -> projectIdList.subList(i * chunkSize, Math.min((i + 1) * chunkSize, projectIdList.size())))
-                .collect(Collectors.toList());
-        int lastIndex = chunkedProjectIdList.size() - 1;
-
-        queryWrapper.and(qw -> {
-            for (int i = 0; i <= lastIndex; i++) {
-                List<String> idList = chunkedProjectIdList.get(i);
-                qw.in("project_id", idList);
-                // 判断是否是最后一个元素
-                if (i != lastIndex) {
-                    qw.or();
+        if (StrUtil.isNotBlank(reportWorkloadStatisticReqDTO.getProjectName())) {
+            List<String> projectIdList = projectList.stream().map(ProjectVO::getId).collect(Collectors.toList());
+            // 每1000个元素分一个List (oracle的in最多接收1000)
+            int chunkSize = 1000;
+            List<List<String>> chunkedProjectIdList = IntStream.range(0, (projectIdList.size() + chunkSize - 1) / chunkSize)
+                    .mapToObj(i -> projectIdList.subList(i * chunkSize, Math.min((i + 1) * chunkSize, projectIdList.size())))
+                    .collect(Collectors.toList());
+            int lastIndex = chunkedProjectIdList.size() - 1;
+            queryWrapper.and(qw -> {
+                for (int i = 0; i <= lastIndex; i++) {
+                    List<String> idList = chunkedProjectIdList.get(i);
+                    qw.in("project_id", idList);
+                    // 判断是否是最后一个元素
+                    if (i != lastIndex) {
+                        qw.or();
+                    }
                 }
-            }
-        });
+            });
+        }
+
         List<ReportRelationWorkloadVO> reportWorkloadRelationList = reportWorkloadMapper.getReportWrokloadList(queryWrapper);
 
 
@@ -740,7 +741,7 @@ public class ReportServiceImpl implements ReportService {
         QueryWrapper<ReportWorkloadDO> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("REPORT.DELETED", 0);
         queryWrapper.eq("WORKLOAD.DELETED", 0);
-        queryWrapper.eq("IS_TEMP", 0);
+        queryWrapper.eq("REPORT.IS_TEMP", 0);
         if (StrUtil.isNotBlank(rep.getStartDate()) && StrUtil.isNotBlank(rep.getEndDate())) {
             DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
             LocalDateTime startDateTime = LocalDate.parse(rep.getStartDate(),formatter).atStartOfDay();
@@ -765,12 +766,14 @@ public class ReportServiceImpl implements ReportService {
         if (StrUtil.isNotBlank(rep.getDeptId())) {
             queryWrapper.eq("DEPT_ID", rep.getDeptId());
         }
+        //获取项目map
         Map<String, String> projectMap = businessService.getProjectMap();
+        //统计项目工时
         Map<String, BigDecimal> totalTimeByProjectId = new HashMap<>();
         List<ReportRelationWorkloadVO> reportWorkloadRelationList = reportWorkloadMapper.getReportWrokloadList(queryWrapper);
         for (ReportRelationWorkloadVO reportRelationWorkloadVO : reportWorkloadRelationList) {
             reportRelationWorkloadVO.setXmmc(projectMap.get(reportRelationWorkloadVO.getProjectId()));
-            totalTimeByProjectId.put(reportRelationWorkloadVO.getXmmc(), totalTimeByProjectId.getOrDefault(reportRelationWorkloadVO.getProjectId(), BigDecimal.ZERO).add(reportRelationWorkloadVO.getWorkTime()));
+            totalTimeByProjectId.put(reportRelationWorkloadVO.getXmmc(), totalTimeByProjectId.getOrDefault(projectMap.get(reportRelationWorkloadVO.getProjectId()), BigDecimal.ZERO).add(reportRelationWorkloadVO.getWorkTime()));
         }
 
         List<ReportWorkloadIndexStatisticVO> result = new ArrayList<>();