diff --git a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/project/ProjectController.java b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/project/ProjectController.java index d1529a7..b54d10d 100644 --- a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/project/ProjectController.java +++ b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/project/ProjectController.java @@ -137,8 +137,8 @@ public class ProjectController extends BaseController { */ // @PreAuthorize("@ss.hasPermi('system:dept:remove')") @PostMapping("/executionInfo") - public AjaxResult executionInfo(@RequestBody WorkLogger workLogger) { - return success(service.executionInfo(workLogger)); + public AjaxResult executionInfo(@RequestBody ProjectQueryDto queryDto) { + return success(service.executionInfo(queryDto)); } /** diff --git a/pms-business/src/main/java/tech/unissense/pms/business/project/domain/Project.java b/pms-business/src/main/java/tech/unissense/pms/business/project/domain/Project.java index b48bcb1..e2faaac 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/project/domain/Project.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/project/domain/Project.java @@ -56,7 +56,9 @@ public class Project extends BaseEntity { private String state; /** * 数据状态 0-待启动 1-进行中 2-已完成 + * 暂不展示 */ + @Deprecated private String dataState; /** * 项目状态 0-待启动 1-进行中 2-已完成 diff --git a/pms-business/src/main/java/tech/unissense/pms/business/project/dto/ProjectQueryDto.java b/pms-business/src/main/java/tech/unissense/pms/business/project/dto/ProjectQueryDto.java index 9ad3bac..16a666a 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/project/dto/ProjectQueryDto.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/project/dto/ProjectQueryDto.java @@ -22,4 +22,6 @@ public class ProjectQueryDto { private Integer projectId; private Date startDate; private Date endDate; + private Integer userId; + private String projectState; } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/project/service/IProjectService.java b/pms-business/src/main/java/tech/unissense/pms/business/project/service/IProjectService.java index 248c350..14ae500 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/project/service/IProjectService.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/project/service/IProjectService.java @@ -60,10 +60,9 @@ public interface IProjectService { List listProjectByUser(String createBy); - List getTeamInfo(Integer projectId); - - List executionInfo(WorkLogger workLogger); + List getTeamInfo(Integer projectId); + List executionInfo(ProjectQueryDto ProjectQueryDto); ProjectWorkInfoVo workInfo(ProjectQueryDto project); diff --git a/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java index 1b0f3cf..1eab365 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java @@ -1,6 +1,7 @@ package tech.unissense.pms.business.project.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -73,6 +74,7 @@ public class ProjectServiceImpl implements IProjectService { * @param project 筛选条件 * @return 查询结果 */ + @Override public List permissisonList(Project project) { dataPermissions(project); List list = this.projectMapper.list(project); @@ -243,11 +245,14 @@ public class ProjectServiceImpl implements IProjectService { } @Override - public List executionInfo(WorkLogger workLogger) { + public List executionInfo(ProjectQueryDto queryDto) { Project projectQueryDto = new Project(); - if (workLogger.getUserId() != null) { - projectQueryDto.setQueryUserId(Long.valueOf(workLogger.getUserId())); + if (queryDto.getUserId() != null) { + projectQueryDto.setQueryUserId(Long.valueOf(queryDto.getUserId())); + } + if (queryDto.getProjectState() != null) { + projectQueryDto.setProjectState(queryDto.getProjectState()); } List projects = this.permissisonList(projectQueryDto); List projectIdList = projects.stream() @@ -259,9 +264,23 @@ public class ProjectServiceImpl implements IProjectService { .map(item -> item.getProjectId() + "_" + item.getUserId()) .collect(Collectors.toSet()); + WorkLogger workLogger = new WorkLogger(); workLogger.setProjectIdList(projectIdList); + List allWorkLoggerList = workLoggerService.list(workLogger); + Map workTimeAllMap = allWorkLoggerList.stream().filter(item-> StrUtil.isNotEmpty(item.getWorkTime())).collect(Collectors.groupingBy(WorkLogger::getProjectId, Collectors.reducing(BigDecimal.ZERO + , item -> new BigDecimal(item.getWorkTime()), BigDecimal::add))); + // BeanUtils.copyBeanProp(workLogger,queryDto); - Map workTimeMap = workLoggerService.list(workLogger).stream() + List workLoggerList = allWorkLoggerList.stream() + .filter(item -> { + Date date = item.getLoggerDate(); + Integer userId = item.getUserId(); + return (date != null && !date.before(queryDto.getStartDate()) && !date.after(queryDto.getEndDate())) && + (queryDto.getUserId() != null && queryDto.getUserId().equals(userId)); + }) + .collect(Collectors.toList()); + + Map workTimeMap = workLoggerList.stream() .filter(item -> teamSet.contains(item.getProjectId() + "_" + item.getUserId())) .collect(Collectors.toMap( item -> item.getProjectId() + "_" @@ -269,8 +288,8 @@ public class ProjectServiceImpl implements IProjectService { item -> new BigDecimal(item.getWorkTime()), BigDecimal::add)); - LocalDate startDate = workLogger.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - LocalDate endDate = workLogger.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate startDate = queryDto.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate endDate = queryDto.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); return projects.stream().map(project -> { List tempList = Stream.iterate(startDate, date -> date.plusDays(1)) @@ -290,6 +309,7 @@ public class ProjectServiceImpl implements IProjectService { BeanUtils.copyBeanProp(vo, project); vo.setDetailList(tempList); vo.setAllWorkTime(tempList.stream().reduce(BigDecimal.ZERO, BigDecimal::add)); + vo.setAllDateWorkTime(workTimeAllMap.getOrDefault(project.getProjectId(), BigDecimal.ZERO)); return vo; }).collect(Collectors.toList()); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/project/vo/ProjectExecutionVo.java b/pms-business/src/main/java/tech/unissense/pms/business/project/vo/ProjectExecutionVo.java index 3d5ad7d..aaddc0b 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/project/vo/ProjectExecutionVo.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/project/vo/ProjectExecutionVo.java @@ -25,5 +25,6 @@ public class ProjectExecutionVo { private String projectState; private Integer budgetDate; private BigDecimal allWorkTime; + private BigDecimal allDateWorkTime; private List detailList; } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java index 02be4ff..4038801 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java @@ -116,6 +116,7 @@ public class WorkLoggerServiceImpl implements IWorkLoggerService { WorkLogger temp = calendarMap.get(key); calendarVo.setDate(DateUtils.toDate(localDate)); calendarVo.setState(temp != null ? temp.getState() : "-1"); + calendarVo.setWorkTime(temp != null ? temp.getWorkTime() : "0"); result.add(calendarVo); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/CalendarVo.java b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/CalendarVo.java index a31f7b0..bc68267 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/CalendarVo.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/CalendarVo.java @@ -2,6 +2,7 @@ package tech.unissense.pms.business.work.logger.vo; import lombok.Data; +import java.math.BigDecimal; import java.util.Date; /** @@ -22,4 +23,5 @@ public class CalendarVo { private Date date; private String state; + private String workTime; } diff --git a/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml b/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml index 400aab5..ebfb2f2 100644 --- a/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml +++ b/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml @@ -99,18 +99,18 @@ and t1.state = #{state} - - - - and t1.start_date ]]> sysdate() - - - and sysdate() between t1.start_date and t1.end_date - - - and t1.end_date sysdate() - - + and t1.project_state = #{projectState} + + + + + + + + + + + and t1.create_by = #{createBy}