|
@@ -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;
|
|
|
}
|
|
|
|