diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/ProjectGroupController.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/ProjectGroupController.java index 6ba847b..d8a3877 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/ProjectGroupController.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/ProjectGroupController.java @@ -131,20 +131,6 @@ public class ProjectGroupController { return ResponseMap.ofSuccess(projectGroupService.collectStatsForGroupPositions(token, projectId)); } - //FIXME: DELETE - @SneakyThrows - @GetMapping("/{staffId}/stats") - public ResponseList getProjectProcessOfStaff( - @RequestHeader(TokenUtils.HEADER_TOKEN) String token, - @PathVariable Integer projectId, - @PathVariable Integer staffId - ) { - if (!Objects.equals(TokenUtils.getStaffId(token), staffId)) { - throw new BadRequestException(BadRequestException.WRONG_PARAMETERS); - } - return ResponseList.ofSuccess(taskService.getProjectProcessOfStaff(token, projectId)); - } - //TODO: TEST @Operation(description = "请求体是一个key为taskId,value为staffId的map") @SneakyThrows diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/TaskController.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/TaskController.java index 99dc4db..c5cada1 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/TaskController.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/TaskController.java @@ -3,6 +3,7 @@ package cn.edu.hfut.rmdjzz.projectmanagement.controller; import cn.edu.hfut.rmdjzz.projectmanagement.entity.Task; import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.TaskDTO; import cn.edu.hfut.rmdjzz.projectmanagement.exception.BadRequestException; +import cn.edu.hfut.rmdjzz.projectmanagement.exception.ForbiddenException; import cn.edu.hfut.rmdjzz.projectmanagement.service.IProjectService; import cn.edu.hfut.rmdjzz.projectmanagement.service.ITaskService; import cn.edu.hfut.rmdjzz.projectmanagement.utils.TokenUtils; @@ -110,14 +111,30 @@ public class TaskController { return ResponseMap.ofSuccess("查询成功", taskService.getProjectTaskTrend(token, projectId)); } + @SneakyThrows + @GetMapping("/stats/group") + public ResponseMap getTaskNumOfEveryone( + @RequestHeader(TokenUtils.HEADER_TOKEN) String token, + @PathVariable Integer projectId + ) { + if(!projectService.checkOpenStatus(projectId)) { + throw new BadRequestException(IProjectService.PROJECT_UNOPENED); + } + return ResponseMap.ofSuccess("查询成功", taskService.getProjectProcessOfEveryone(token, projectId)); + } + //TODO: + @SneakyThrows @GetMapping({"/stats", "/stats/{staffId}"}) - public ResponseMap getProjectStatistics( + public ResponseList getProjectStatistics( @RequestHeader(TokenUtils.HEADER_TOKEN) String token, @PathVariable Integer projectId, @PathVariable(required = false) Integer staffId ) { - return ResponseMap.ofSuccess(); + if(!projectService.checkOpenStatus(projectId)) { + throw new BadRequestException(IProjectService.PROJECT_UNOPENED); + } + return ResponseList.ofSuccess("查询成功", taskService.getProjectStatistics(token, projectId, staffId)); } } diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/dto/TaskNumOfEveryoneDTO.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/dto/TaskNumOfEveryoneDTO.java new file mode 100644 index 0000000..137a996 --- /dev/null +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/dto/TaskNumOfEveryoneDTO.java @@ -0,0 +1,13 @@ +package cn.edu.hfut.rmdjzz.projectmanagement.entity.dto; + +import lombok.Data; + +/** + * @author 阳勇权 + * @since 2022/7/12 14:36 + */ +@Data +public class TaskNumOfEveryoneDTO { + String staffFullname; + Long completedNum; +} diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/mapper/TaskMapper.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/mapper/TaskMapper.java index 2402cdf..d07f833 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/mapper/TaskMapper.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/mapper/TaskMapper.java @@ -3,6 +3,7 @@ package cn.edu.hfut.rmdjzz.projectmanagement.mapper; import cn.edu.hfut.rmdjzz.projectmanagement.entity.Task; import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.StaffProcessDTO; import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.TaskDTO; +import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.TaskNumOfEveryoneDTO; import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.TaskTrendDTO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -17,10 +18,12 @@ import java.util.List; public interface TaskMapper extends BaseMapper { List selectSubTaskList(@Param("projectId") Integer projectId, @Param("fatherId") Long fatherId); - List selectProjectProcessOfStaff(@Param("projectId") Integer projectId, @Param("staffId") Integer staffId); + List selectProjectProcess(@Param("projectId") Integer projectId, @Param("staffId") Integer staffId); List selectClosedTaskTrendBeforeDate(@Param("projectId") Integer projectId, @Param("startDate") LocalDate startDate); + List selectProjectProcessOfEveryone(@Param("projectId") Integer projectId); + TaskTrendDTO selectUnclosedTaskTrendBeforeDate(@Param("projectId") Integer projectId, @Param("startDate") LocalDate startDate); List selectTaskClosedNum(@Param("projectId") Integer projectId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate); diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/ITaskService.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/ITaskService.java index e692026..ae8f902 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/ITaskService.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/ITaskService.java @@ -24,7 +24,7 @@ public interface ITaskService extends IService { Boolean closeTaskAndSubTask(String token, Integer projectId, Long taskId) throws BadRequestException; - List getProjectProcessOfStaff(String token, Integer projectId) throws BadRequestException, ForbiddenException; + List getProjectStatistics(String token, Integer projectId, Integer staffId) throws BadRequestException, ForbiddenException; /** * @return 1:all rights 2:father holder 3:current holder 0:no right @@ -51,4 +51,6 @@ public interface ITaskService extends IService { Boolean transferStaffTasks(String token, Integer projectId, Integer transferredStaffId, Map transferMap) throws ForbiddenException, BadRequestException; Boolean transferTasksToSingleStaff(String token, Integer projectId, Integer transferredStaffId, Integer targetStaffId) throws ForbiddenException, BadRequestException; + + Map getProjectProcessOfEveryone(String token, Integer projectId) throws ForbiddenException; } diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/TaskServiceImpl.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/TaskServiceImpl.java index 3d83b73..f4fe048 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/TaskServiceImpl.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/TaskServiceImpl.java @@ -3,6 +3,7 @@ package cn.edu.hfut.rmdjzz.projectmanagement.service.impl; import cn.edu.hfut.rmdjzz.projectmanagement.entity.Task; import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.StaffProcessDTO; import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.TaskDTO; +import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.TaskNumOfEveryoneDTO; import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.TaskTrendDTO; import cn.edu.hfut.rmdjzz.projectmanagement.exception.BadRequestException; import cn.edu.hfut.rmdjzz.projectmanagement.exception.ForbiddenException; @@ -130,12 +131,14 @@ public class TaskServiceImpl extends ServiceImpl implements IT } @Override - public List getProjectProcessOfStaff(String token, Integer projectId) throws ForbiddenException { - Integer staffId = TokenUtils.getStaffId(token); + public List getProjectStatistics(String token, Integer projectId, Integer staffId) throws ForbiddenException { + if(staffId != null && !TokenUtils.getStaffId(token).equals(staffId)) { + throw new ForbiddenException(IProjectGroupService.UNABLE_TO_ACCESS_PROJECT); + } if (projectGroupService.getProjectAccessLevel(token, projectId) == 0) { throw new ForbiddenException(IProjectGroupService.UNABLE_TO_ACCESS_PROJECT); } - List resList = baseMapper.selectProjectProcessOfStaff(projectId, staffId); + List resList = baseMapper.selectProjectProcess(projectId, staffId); addResultProjectProcess(resList, Task.TYPE_ASSIGNMENT); addResultProjectProcess(resList, Task.TYPE_DEFECT); addResultProjectProcess(resList, Task.TYPE_DEMAND); @@ -511,4 +514,17 @@ public class TaskServiceImpl extends ServiceImpl implements IT return transferredTaskCount.intValue() == updatedTaskCount; } + @Override + public Map getProjectProcessOfEveryone(String token, Integer projectId) throws ForbiddenException{ + if(projectGroupService.getProjectAccessLevel(token, projectId) == 0) { + throw new ForbiddenException(IProjectGroupService.UNABLE_TO_ACCESS_PROJECT); + } + Map resMap = new HashMap<>(); + List resList = baseMapper.selectProjectProcessOfEveryone(projectId); + for(TaskNumOfEveryoneDTO taskNumOfEveryoneDTO: resList) { + resMap.put(taskNumOfEveryoneDTO.getStaffFullname(), taskNumOfEveryoneDTO.getCompletedNum()); + } + return resMap; + } + } diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml index 100ac45..aec90be 100644 --- a/src/main/resources/mapper/TaskMapper.xml +++ b/src/main/resources/mapper/TaskMapper.xml @@ -29,7 +29,7 @@ AND task_project_id = #{projectId} AND t.task_father_id = #{fatherId} - +