From 9bc59be2a0fdb5bda462634d2a66203dfa93df82 Mon Sep 17 00:00:00 2001 From: "yang.yongquan" <3395816735@qq.com> Date: Tue, 12 Jul 2022 15:01:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=95=B4=E4=B8=AA=E9=A1=B9=E7=9B=AE=E4=B8=8E=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProjectGroupController.java | 14 ------------ .../controller/TaskController.java | 21 ++++++++++++++++-- .../entity/dto/TaskNumOfEveryoneDTO.java | 13 +++++++++++ .../projectmanagement/mapper/TaskMapper.java | 5 ++++- .../service/ITaskService.java | 4 +++- .../service/impl/TaskServiceImpl.java | 22 ++++++++++++++++--- src/main/resources/mapper/TaskMapper.xml | 12 +++++++++- 7 files changed, 69 insertions(+), 22 deletions(-) create mode 100644 src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/dto/TaskNumOfEveryoneDTO.java 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} - +