|
@@ -697,19 +697,24 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
* @description: 项目查询-工具
|
|
|
* @author: fu
|
|
|
* @date: 2024/8/8 19:22
|
|
|
- * @param: [startDate, endDate]
|
|
|
* @return: java.util.List<java.lang.Integer>
|
|
|
**/
|
|
|
private List<PmProject> projects(Integer projectId) {
|
|
|
- Integer tenantId = SecurityUtils.getTenantId();
|
|
|
- Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
|
|
|
+ Long userId = SecurityUtils.getUserId();
|
|
|
LambdaQueryWrapper<PmProject> projectsQuery = Wrappers.lambdaQuery();
|
|
|
projectsQuery.select(PmProject::getId, PmProject::getProjectName);
|
|
|
if (projectId != null && projectId >= 0) {
|
|
|
projectsQuery.eq(PmProject::getId, projectId);
|
|
|
return pmProjectMapper.selectList(projectsQuery);
|
|
|
+ } else {
|
|
|
+ projectsQuery.and(qw -> qw
|
|
|
+ .apply(Objects.nonNull(DataScopeContextHolder.getDataScopeSql()), DataScopeContextHolder.getDataScopeSql())
|
|
|
+ .or().eq(PmProject::getProjectHead, userId)
|
|
|
+ .or().eq(PmProject::getCreateBy, SecurityUtils.getUsername())
|
|
|
+ .or().apply("FIND_IN_SET('" + SecurityUtils.getUserId() + "', project_member) > 0")
|
|
|
+ );
|
|
|
}
|
|
|
- projectsQuery.eq(PmProject::getTenantId, tenantId).eq(PmProject::getDeptId, deptId).eq(PmProject::getDelFlag, 0);
|
|
|
+ projectsQuery.eq(PmProject::getDelFlag, 0);
|
|
|
return pmProjectMapper.selectList(projectsQuery);
|
|
|
}
|
|
|
|
|
@@ -800,13 +805,13 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
userId = requestVO.getUserIds();
|
|
|
}
|
|
|
Integer projectId = requestVO.getProjectId();
|
|
|
- Integer filter = 1;
|
|
|
+ int filter = 1;
|
|
|
if (requestVO.getFilter() != null) {
|
|
|
filter = requestVO.getFilter();
|
|
|
}
|
|
|
String startDate = requestVO.getStartDate();
|
|
|
String endDate = requestVO.getEndDate();
|
|
|
- Integer workerOrProject = 1;
|
|
|
+ int workerOrProject = 1;
|
|
|
if (requestVO.getWorkerOrProject() != null) {
|
|
|
workerOrProject = requestVO.getWorkerOrProject();
|
|
|
}
|
|
@@ -823,14 +828,6 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
throw new BusinessException("请设置查询时间范围!");
|
|
|
}
|
|
|
|
|
|
- List<PmProject> pmProjects = projects(projectId);
|
|
|
- List<String> pmProjectName = new ArrayList<>();
|
|
|
- List<Integer> pmProjectId = new ArrayList<>();
|
|
|
- for (PmProject project : pmProjects) {
|
|
|
- pmProjectName.add(project.getProjectName());
|
|
|
- pmProjectId.add(project.getId());
|
|
|
- }
|
|
|
-
|
|
|
List<SysUser> users = userNameList(userId);
|
|
|
List<Long> userIds = new ArrayList<>();
|
|
|
List<String> nickName = new ArrayList<>();
|
|
@@ -839,6 +836,14 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
nickName.add(user.getNickName());
|
|
|
}
|
|
|
|
|
|
+ List<PmProject> pmProjects = projects(projectId);
|
|
|
+ List<String> pmProjectName = new ArrayList<>();
|
|
|
+ List<Integer> pmProjectId = new ArrayList<>();
|
|
|
+ for (PmProject project : pmProjects) {
|
|
|
+ pmProjectName.add(project.getProjectName());
|
|
|
+ pmProjectId.add(project.getId());
|
|
|
+ }
|
|
|
+
|
|
|
// 统计userId每个项目所需工时
|
|
|
List<WorkHoursStatisticsVO> userAndProject = new ArrayList<>();
|
|
|
List<PmWorkContent> pmWorkContentList = workTimeCount(userIds, pmProjectId, startDate, endDate);
|
|
@@ -859,7 +864,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
for (PmProject project : pmProjects) {
|
|
|
Integer projectId2 = project.getId();
|
|
|
String projectName = project.getProjectName();
|
|
|
- if (projectId2 == projectId1) {
|
|
|
+ if (Objects.equals(projectId2, projectId1)) {
|
|
|
workHoursStatisticsVO.setProjectName(projectName);
|
|
|
}
|
|
|
}
|
|
@@ -881,13 +886,14 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
workTime.add(BigDecimal.ZERO);
|
|
|
}
|
|
|
} else {
|
|
|
- for (String currentNickName : nickName) {
|
|
|
- boolean foundWorkTime = false;
|
|
|
- for (WorkHoursStatisticsVO workHoursStatisticsVO : userAndProject) {
|
|
|
- String userNickName = workHoursStatisticsVO.getNickName();
|
|
|
- String projectName = workHoursStatisticsVO.getProjectName();
|
|
|
- BigDecimal userProjectWorkTime = workHoursStatisticsVO.getWorkTime();
|
|
|
- if (projectName == name && userNickName == currentNickName) {
|
|
|
+
|
|
|
+ boolean foundWorkTime = false;
|
|
|
+ for (WorkHoursStatisticsVO workHoursStatisticsVO : userAndProject) {
|
|
|
+ String userNickName = workHoursStatisticsVO.getNickName();
|
|
|
+ String projectName = workHoursStatisticsVO.getProjectName();
|
|
|
+ BigDecimal userProjectWorkTime = workHoursStatisticsVO.getWorkTime();
|
|
|
+ for (String currentNickName : nickName) {
|
|
|
+ if (Objects.equals(projectName, name) && Objects.equals(userNickName, currentNickName)) {
|
|
|
workTime.add(userProjectWorkTime);
|
|
|
if (userProjectWorkTime.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
hasNonZeroWorkTime = true;
|
|
@@ -896,9 +902,10 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- if (!foundWorkTime) {
|
|
|
- workTime.add(BigDecimal.ZERO);
|
|
|
- }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (!foundWorkTime) {
|
|
|
+ workTime.add(BigDecimal.ZERO);
|
|
|
}
|
|
|
}
|
|
|
// 过滤0工时
|
|
@@ -910,17 +917,16 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
returnList.add(projectWorkTime);
|
|
|
|
|
|
|
|
|
- returnList.add(pmProjectName);
|
|
|
// 重组返回数据结构
|
|
|
for (String uName : nickName) {
|
|
|
- String name1 = uName;
|
|
|
+ String name = uName;
|
|
|
UserWorkTimeVO userWorkTimeVO2 = new UserWorkTimeVO();
|
|
|
- userWorkTimeVO2.setProjectOrPerson(name1);
|
|
|
- List<BigDecimal> workTime1 = new ArrayList<>();
|
|
|
- boolean hasNonZeroWorkTime1 = false;
|
|
|
+ userWorkTimeVO2.setProjectOrPerson(name);
|
|
|
+ List<BigDecimal> workTime = new ArrayList<>();
|
|
|
+ boolean hasNonZeroWorkTime = false;
|
|
|
if (userAndProjectD.isEmpty()) {
|
|
|
for (String currentNickName : pmProjectName) {
|
|
|
- workTime1.add(BigDecimal.ZERO);
|
|
|
+ workTime.add(BigDecimal.ZERO);
|
|
|
}
|
|
|
} else {
|
|
|
for (String currentNickName : pmProjectName) {
|
|
@@ -929,26 +935,28 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
String userNickName = workHoursStatisticsVO.getNickName();
|
|
|
String projectName = workHoursStatisticsVO.getProjectName();
|
|
|
BigDecimal userProjectWorkTime = workHoursStatisticsVO.getWorkTime();
|
|
|
- if (userNickName == name1 && projectName == currentNickName) {
|
|
|
- workTime1.add(userProjectWorkTime);
|
|
|
+ if (Objects.equals(userNickName, name) && Objects.equals(projectName, currentNickName)) {
|
|
|
+ workTime.add(userProjectWorkTime);
|
|
|
if (userProjectWorkTime.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- hasNonZeroWorkTime1 = true;
|
|
|
+ hasNonZeroWorkTime = true;
|
|
|
}
|
|
|
foundWorkTime = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (!foundWorkTime) {
|
|
|
- workTime1.add(BigDecimal.ZERO);
|
|
|
+ workTime.add(BigDecimal.ZERO);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// 过滤0工时
|
|
|
- if (filter != 2 || hasNonZeroWorkTime1) {
|
|
|
- userWorkTimeVO2.setWorkTime(workTime1);
|
|
|
+ if (filter != 2 || hasNonZeroWorkTime) {
|
|
|
+ userWorkTimeVO2.setWorkTime(workTime);
|
|
|
userWorkTimeVO.add(userWorkTimeVO2);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ returnList.add(pmProjectName);
|
|
|
returnList.add(userWorkTimeVO);
|
|
|
|
|
|
} else {
|
|
@@ -971,7 +979,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
String userNickName = workHoursStatisticsVO.getNickName();
|
|
|
String projectName = workHoursStatisticsVO.getProjectName();
|
|
|
BigDecimal userProjectWorkTime = workHoursStatisticsVO.getWorkTime();
|
|
|
- if (userNickName == name && projectName == currentNickName) {
|
|
|
+ if (Objects.equals(userNickName, name) && Objects.equals(projectName, currentNickName)) {
|
|
|
workTime.add(userProjectWorkTime);
|
|
|
if (userProjectWorkTime.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
hasNonZeroWorkTime = true;
|
|
@@ -993,8 +1001,6 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
}
|
|
|
returnList.add(userWorkTimeVO);
|
|
|
|
|
|
-
|
|
|
- returnList.add(nickName);
|
|
|
// 重组返回数据结构
|
|
|
for (String name : pmProjectName) {
|
|
|
ProjectWorkTimeVO projectWorkTimeVO = new ProjectWorkTimeVO();
|
|
@@ -1032,12 +1038,28 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
projectWorkTime.add(projectWorkTimeVO);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (filter == 2) {
|
|
|
+ List<String> nickName2 = new ArrayList<>();
|
|
|
+ for (int i = 0; i < nickName.size(); i++) {
|
|
|
+ BigDecimal workerTimeSum = BigDecimal.ZERO;
|
|
|
+ for (int j = 0; j < projectWorkTime.size(); j++) {
|
|
|
+ BigDecimal bigDecimal = projectWorkTime.get(j).getWorkTime().get(i);
|
|
|
+ workerTimeSum = workerTimeSum.add(bigDecimal);
|
|
|
+ }
|
|
|
+ if (workerTimeSum.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
+ nickName2.add(nickName.get(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ nickName = nickName2;
|
|
|
+ }
|
|
|
+ returnList.add(nickName);
|
|
|
returnList.add(projectWorkTime);
|
|
|
}
|
|
|
return returnList;
|
|
|
}
|
|
|
|
|
|
- //回退代码
|
|
|
+ // 回退代码
|
|
|
@DataScope
|
|
|
@Override
|
|
|
public List<Object> workHourStatistic(Long userId, Integer projectId, Integer filter, String startDate, String endDate, Integer workerOrProject) {
|
|
@@ -1276,7 +1298,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
@Override
|
|
|
public List<WorkTimeExportVO> workHourStatisticExport(PmWorkHourStatisticRequestVO requestVO) {
|
|
|
List<Long> userIds = new ArrayList<>();
|
|
|
- if (Objects.isNull(requestVO.getUserIds()) || requestVO.getUserIds().isEmpty()){
|
|
|
+ if (Objects.isNull(requestVO.getUserIds()) || requestVO.getUserIds().isEmpty()) {
|
|
|
userIds.add(SecurityUtils.getUserId());
|
|
|
requestVO.setUserIds(userIds);
|
|
|
}
|