|
@@ -58,7 +58,15 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<PmWorkContent> projectQuery(String startDate, String endDate, String projectName, Integer projectAscription) {
|
|
|
+ public List<PmWorkContent> projectQuery(String startDate, String endDate, String projectName, Integer projectAscription, Integer reportId) {
|
|
|
+ if (reportId != null && reportId != 0) {
|
|
|
+ LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
|
|
|
+ contentLambdaQuery.select(PmWorkContent::getProjectId, PmWorkContent::getProjectName)
|
|
|
+ .eq(PmWorkContent::getReportId, reportId)
|
|
|
+ .groupBy(PmWorkContent::getProjectId, PmWorkContent::getProjectName);
|
|
|
+ List<PmWorkContent> pmWorkContentList = this.list(contentLambdaQuery);
|
|
|
+ return pmWorkContentList;
|
|
|
+ }
|
|
|
LocalDate start = LocalDate.parse(startDate);
|
|
|
LocalDate end = LocalDate.parse(endDate);
|
|
|
String subQueryReports = "SELECT id FROM pm_work_report WHERE report_date BETWEEN '" + start + "' AND '" + end + "' AND tenant_id = " + SecurityUtils.getTenantId();
|
|
@@ -81,39 +89,54 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<PmWorkReport> workReportQuery(String startDate, String endDate, String projectName, Integer projectAscription) {
|
|
|
- LocalDate start = LocalDate.parse(startDate);
|
|
|
- LocalDate end = LocalDate.parse(endDate);
|
|
|
- String subQueryReports = "SELECT id FROM pm_work_report WHERE report_date BETWEEN '" + start + "' AND '" + end + "' AND tenant_id = " + SecurityUtils.getTenantId();
|
|
|
- String subQueryReport = "SELECT id FROM pm_work_report WHERE FIND_IN_SET('" + SecurityUtils.getUserId() + "', cc_to) > 0 AND tenant_id = " + SecurityUtils.getTenantId();
|
|
|
- String subQueryProjects = "SELECT id FROM pm_project WHERE project_head = '" + SecurityUtils.getUserId() + "' AND tenant_id = " + SecurityUtils.getTenantId();
|
|
|
- String reportIdList = "SELECT report_id FROM pm_work_content WHERE project_name = '" + projectName + "' AND tenant_id = " + SecurityUtils.getTenantId();
|
|
|
+ public List<PmWorkReport> workReportQuery(String startDate, String endDate, String projectName, Integer projectAscription, Integer reportId) {
|
|
|
List<PmWorkReport> reportList = new ArrayList<>();
|
|
|
- LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
|
|
|
- contentLambdaQuery.select(PmWorkContent::getReportId, PmWorkContent::getWorkContent, PmWorkContent::getWorkTime, PmWorkContent::getProjectName)
|
|
|
- .inSql(PmWorkContent::getReportId, subQueryReports);
|
|
|
- if (projectAscription == 1) {
|
|
|
- contentLambdaQuery.inSql(PmWorkContent::getProjectId, subQueryProjects);
|
|
|
- } else if (projectAscription == 2) {
|
|
|
- contentLambdaQuery.inSql(PmWorkContent::getReportId, subQueryReport);
|
|
|
- }
|
|
|
- if (StringUtils.isNotBlank(projectName)) {
|
|
|
- contentLambdaQuery.inSql(PmWorkContent::getReportId, reportIdList);
|
|
|
- }
|
|
|
- List<PmWorkContent> pmWorkContentList = this.list(contentLambdaQuery);
|
|
|
- if (pmWorkContentList == null || pmWorkContentList.size() == 0) {
|
|
|
- return reportList;
|
|
|
- }
|
|
|
- List<Integer> reportIds = new ArrayList<>();
|
|
|
- for (PmWorkContent a : pmWorkContentList) {
|
|
|
- reportIds.add(a.getReportId());
|
|
|
+ List<PmWorkContent> pmWorkContentList = new ArrayList<>();
|
|
|
+ if (reportId != null && reportId != 0) {
|
|
|
+ LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
|
|
|
+ reportQuery.select(PmWorkReport::getId, PmWorkReport::getCoordinateWork, PmWorkReport::getTomorrowPlan, PmWorkReport::getCcTo, PmWorkReport::getSubmitterId,
|
|
|
+ PmWorkReport::getCreateTime, PmWorkReport::getReportDate)
|
|
|
+ .eq(PmWorkReport::getId, reportId);
|
|
|
+ PmWorkReport report = pmWorkReportMapper.selectOne(reportQuery);
|
|
|
+ LambdaQueryWrapper<PmWorkContent> contentQuery = Wrappers.lambdaQuery();
|
|
|
+ contentQuery.select(PmWorkContent::getWorkContent, PmWorkContent::getWorkTime, PmWorkContent::getProjectName)
|
|
|
+ .eq(PmWorkContent::getReportId, reportId);
|
|
|
+ pmWorkContentList = this.list(contentQuery);
|
|
|
+ report.setWorkContents(pmWorkContentList);
|
|
|
+ reportList.add(report);
|
|
|
+ }else{
|
|
|
+ LocalDate start = LocalDate.parse(startDate);
|
|
|
+ LocalDate end = LocalDate.parse(endDate);
|
|
|
+ String subQueryReports = "SELECT id FROM pm_work_report WHERE report_date BETWEEN '" + start + "' AND '" + end + "' AND tenant_id = " + SecurityUtils.getTenantId();
|
|
|
+ String subQueryReport = "SELECT id FROM pm_work_report WHERE FIND_IN_SET('" + SecurityUtils.getUserId() + "', cc_to) > 0 AND tenant_id = " + SecurityUtils.getTenantId();
|
|
|
+ String subQueryProjects = "SELECT id FROM pm_project WHERE project_head = '" + SecurityUtils.getUserId() + "' AND tenant_id = " + SecurityUtils.getTenantId();
|
|
|
+ String reportIdList = "SELECT report_id FROM pm_work_content WHERE project_name = '" + projectName + "' AND tenant_id = " + SecurityUtils.getTenantId();
|
|
|
+ LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
|
|
|
+ contentLambdaQuery.select(PmWorkContent::getReportId, PmWorkContent::getWorkContent, PmWorkContent::getWorkTime, PmWorkContent::getProjectName)
|
|
|
+ .inSql(PmWorkContent::getReportId, subQueryReports);
|
|
|
+ if (projectAscription == 1) {
|
|
|
+ contentLambdaQuery.inSql(PmWorkContent::getProjectId, subQueryProjects);
|
|
|
+ } else if (projectAscription == 2) {
|
|
|
+ contentLambdaQuery.inSql(PmWorkContent::getReportId, subQueryReport);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(projectName)) {
|
|
|
+ contentLambdaQuery.inSql(PmWorkContent::getReportId, reportIdList);
|
|
|
+ }
|
|
|
+ pmWorkContentList = this.list(contentLambdaQuery);
|
|
|
+ if (pmWorkContentList == null || pmWorkContentList.size() == 0) {
|
|
|
+ return reportList;
|
|
|
+ }
|
|
|
+ List<Integer> reportIds = new ArrayList<>();
|
|
|
+ for (PmWorkContent a : pmWorkContentList) {
|
|
|
+ reportIds.add(a.getReportId());
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
|
|
|
+ reportQuery.select(PmWorkReport::getId, PmWorkReport::getCoordinateWork, PmWorkReport::getTomorrowPlan, PmWorkReport::getCcTo, PmWorkReport::getSubmitterId,
|
|
|
+ PmWorkReport::getCreateTime, PmWorkReport::getReportDate)
|
|
|
+ .in(PmWorkReport::getId, reportIds)
|
|
|
+ .orderByDesc(PmWorkReport::getCreateTime);
|
|
|
+ reportList = pmWorkReportMapper.selectList(reportQuery);
|
|
|
}
|
|
|
- LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
|
|
|
- reportQuery.select(PmWorkReport::getId, PmWorkReport::getCoordinateWork, PmWorkReport::getTomorrowPlan, PmWorkReport::getCcTo, PmWorkReport::getSubmitterId,
|
|
|
- PmWorkReport::getCreateTime)
|
|
|
- .in(PmWorkReport::getId, reportIds)
|
|
|
- .orderByDesc(PmWorkReport::getCreateTime);
|
|
|
- reportList = pmWorkReportMapper.selectList(reportQuery);
|
|
|
List<Long> userIds = new ArrayList<>();
|
|
|
for (PmWorkReport c : reportList) {
|
|
|
List<PmWorkContent> contents = new ArrayList<>();
|
|
@@ -152,14 +175,17 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
List<String> pmProjectName = projectIdName.stream()
|
|
|
.map(map -> (String) map.get("name"))
|
|
|
.collect(Collectors.toList());
|
|
|
- //统计userId每个项目所需工时
|
|
|
- List<WorkHoursStatisticsVO> userAndProject = baseMapper.workHoursStatistics(start, end, userId, tenantId);
|
|
|
+ //所有人员id和nickName
|
|
|
List<Map<String, Object>> users = pmProjectService.projectUsers(userId);
|
|
|
List<String> nickName = new ArrayList<>();
|
|
|
for (Map<String, Object> map : users) {
|
|
|
Object name = map.get("name");
|
|
|
nickName.add((String) name);
|
|
|
}
|
|
|
+ //统计userId每个项目所需工时
|
|
|
+ List<WorkHoursStatisticsVO> userAndProject = baseMapper.workHoursStatistics(start, end, userId, tenantId);
|
|
|
+ Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
|
|
|
+ List<WorkHoursStatisticsVO> userAndProjectD = baseMapper.statisticsDept(start, end, userId, tenantId, deptId);
|
|
|
if (workerOrProject != 1) {
|
|
|
returnList.add(nickName);
|
|
|
//重组返回数据结构
|
|
@@ -204,7 +230,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
boolean hasNonZeroWorkTime = false;
|
|
|
for (String currentNickName : pmProjectName) {
|
|
|
boolean foundWorkTime = false;
|
|
|
- for (WorkHoursStatisticsVO workHoursStatisticsVO : userAndProject) {
|
|
|
+ for (WorkHoursStatisticsVO workHoursStatisticsVO : userAndProjectD) {
|
|
|
String userNickName = workHoursStatisticsVO.getNickName();
|
|
|
String projectName = workHoursStatisticsVO.getProjectName();
|
|
|
BigDecimal userProjectWorkTime = workHoursStatisticsVO.getWorkTime();
|
|
@@ -228,8 +254,6 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
|
|
|
}
|
|
|
returnList.add(userWorkTimeVO);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
return returnList;
|
|
|
}
|
|
|
|