فهرست منبع

调整项目概览;修复添加新项目无法显示问题

fuyuchuan 7 ماه پیش
والد
کامیت
ce033bbc26

+ 2 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/PmProjectService.java

@@ -101,7 +101,7 @@ public interface PmProjectService extends CrudService<PmProject> {
     void exitProject(Integer projectId);
 
     /**
-     * 项目概览-项目工时统计
+     * 项目概览-项目-工时统计
      *
      * @param projectId
      * @param startDate
@@ -111,7 +111,7 @@ public interface PmProjectService extends CrudService<PmProject> {
     PmProjectWorkTimeTwoVo projectWorkTime(Integer projectId, String startDate, String endDate);
 
     /**
-     * 项目概览-人员项目工时统计
+     * 项目概览-人员-项目工时统计
      *
      * @param projectId
      * @return

+ 34 - 8
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmProjectServiceImpl.java

@@ -85,6 +85,7 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
                     project.setCreateBy(userName);
                     project.setCreateTime(now);
                     project.setDeptId(deptId);
+                    project.setTenantId(tenantId);
                     this.save(project);
                 } else {
                     project.setUpdateBy(userName);
@@ -460,6 +461,11 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
      **/
     @Override
     public PmUsersProjectWorkTimeVO usersProjectWorkTime(Integer projectId, String startDate, String endDate) {
+
+        if (projectId == null || projectId <= 0) {
+            throw new BusinessException("查询项目工时项目id有误!");
+        }
+
         PmUsersProjectWorkTimeVO workTimeCount = new PmUsersProjectWorkTimeVO();
 
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@@ -478,7 +484,6 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
             endTime = LocalDate.now().minusDays(29);
         }
 
-        if (projectId != null) {
             List<String> users = new ArrayList<>();
             List<BigDecimal> workTime = new ArrayList<>();
 
@@ -487,6 +492,7 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
             wrapper2.between(PmWorkReport::getReportDate, startTime, endTime);
             List<Integer> reportIds = pmWorkReportMapper.selectList(wrapper2).stream().map(PmWorkReport::getId).collect(Collectors.toList());
 
+            //项目成员与实际填写报告的人员可能会有差异
             LambdaQueryWrapper<PmWorkContent> wrapper = Wrappers.lambdaQuery();
             wrapper.select(PmWorkContent::getSubmitterId, PmWorkContent::getWorkTime)
                     .eq(PmWorkContent::getProjectId, projectId)
@@ -495,15 +501,35 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
                 wrapper.in(PmWorkContent::getReportId, reportIds);
             }
             List<PmWorkContent> pmWorkContents = pmWorkContentMapper.selectList(wrapper);
-            List<Long> userIds = pmWorkContents.stream().map(PmWorkContent::getSubmitterId).distinct().collect(Collectors.toList());
-            List<SysUser> sysUsers = pmWorkContentService.nickNames(userIds);
-            for (SysUser sysUser : sysUsers) {
-                users.add(sysUser.getNickName());
-                workTime.add(pmWorkContents.stream().filter(pmWorkContent -> pmWorkContent.getSubmitterId().equals(sysUser.getUserId())).map(PmWorkContent::getWorkTime).reduce(BigDecimal.ZERO, BigDecimal::add));
-                workTimeCount.setUsers(users);
-                workTimeCount.setWorkTime(workTime);
+            Set<Long> userIds = pmWorkContents.stream().map(PmWorkContent::getSubmitterId).collect(Collectors.toSet());
+
+            LambdaQueryWrapper<PmProject> wrapper1 = Wrappers.lambdaQuery();
+            wrapper1.select(PmProject::getProjectMember)
+                    .eq(PmProject::getId, projectId);
+            if (StringUtils.isNotBlank(pmProjectMapper.selectOne(wrapper1).getProjectMember())){
+                List<Long> userIds1 = Arrays.stream(pmProjectMapper.selectOne(wrapper1).getProjectMember().split(",")).map(Long::parseLong).collect(Collectors.toList());
+                userIds.addAll(userIds1);
             }
+
+            List<Long> userIds1 = new ArrayList<>(userIds);
+            List<SysUser> sysUsers = pmWorkContentService.nickNames(userIds1);
+        BigDecimal totalWorkTime = BigDecimal.ZERO;
+
+        List<String> users2 = new ArrayList<>();
+        List<BigDecimal> workTime1 = new ArrayList<>();
+
+        for (SysUser sysUser : sysUsers) {
+            users2.add(sysUser.getNickName());
+            BigDecimal userWorkTime = pmWorkContents.stream()
+                    .filter(pmWorkContent -> pmWorkContent.getSubmitterId().equals(sysUser.getUserId()))
+                    .map(PmWorkContent::getWorkTime)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            workTime1.add(userWorkTime);
+            totalWorkTime = totalWorkTime.add(userWorkTime);
         }
+        workTimeCount.setUsers(users2);
+        workTimeCount.setWorkTime(workTime1);
+
         return workTimeCount;
     }