From 76966938a147e7dafbd22ada1d229209c09edd25 Mon Sep 17 00:00:00 2001 From: ArgonarioD Date: Tue, 12 Jul 2022 15:36:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E7=A6=BB=E9=98=9F?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E6=A3=80=E6=9F=A5=E5=B7=A5=E4=BD=9C=E9=A1=B9?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=83=85=E5=86=B5=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E5=88=97=E5=87=BAmytask=E6=97=B6=E6=B2=A1=E6=9C=89hol?= =?UTF-8?q?derFullname=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=81=8C=E4=BD=8D=E6=97=B6=E5=8F=97=E5=89=8D=E5=90=8E?= =?UTF-8?q?=E7=A9=BA=E6=A0=BC=E5=BD=B1=E5=93=8D=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=92=8C=E4=B8=8D=E6=9B=B4=E6=96=B0=E6=9D=83=E9=99=90=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BA=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProjectGroupController.java | 10 +------ .../controller/TaskController.java | 9 +++---- .../mapper/ProjectGroupMapper.java | 10 +++++++ .../projectmanagement/mapper/TaskMapper.java | 4 +++ .../service/IProjectGroupService.java | 2 ++ .../service/ITaskService.java | 2 +- .../service/impl/AnnouncementServiceImpl.java | 2 +- .../service/impl/ProjectGroupServiceImpl.java | 26 +++++++++++++++++-- .../service/impl/TaskServiceImpl.java | 18 ++++++++----- src/main/resources/mapper/TaskMapper.xml | 24 ++++++++++++++++- 10 files changed, 81 insertions(+), 26 deletions(-) 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 d8a3877..b4b79ec 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 @@ -2,7 +2,6 @@ package cn.edu.hfut.rmdjzz.projectmanagement.controller; import cn.edu.hfut.rmdjzz.projectmanagement.entity.ProjectGroup; import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.ProjectGroupDTO; -import cn.edu.hfut.rmdjzz.projectmanagement.entity.dto.StaffProcessDTO; import cn.edu.hfut.rmdjzz.projectmanagement.entity.vo.GroupPositionVO; import cn.edu.hfut.rmdjzz.projectmanagement.exception.BadRequestException; import cn.edu.hfut.rmdjzz.projectmanagement.exception.ForbiddenException; @@ -20,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Map; -import java.util.Objects; /** * @author 史鹏辉 @@ -94,13 +92,7 @@ public class ProjectGroupController { @PathVariable Integer projectId, @PathVariable Integer staffId ) { - if (projectGroupService.compareProjectAccessLevel(projectId, token, staffId) >= 0) { - throw new ForbiddenException(ForbiddenException.UNABLE_TO_OPERATE); - } - if (projectGroupService.remove(Wrappers.lambdaQuery() - .eq(ProjectGroup::getProjectId, projectId) - .eq(ProjectGroup::getStaffId, staffId)) - ) { + if (projectGroupService.removeMember(token, projectId, staffId)) { return ResponseMap.ofSuccess(); } throw new BadRequestException(BadRequestException.OPERATE_FAILED); 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 c5cada1..6c7105b 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,7 +3,6 @@ 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; @@ -40,8 +39,8 @@ public class TaskController { @SneakyThrows @GetMapping("/mine") - public ResponseList getMyTasks(@RequestHeader(TokenUtils.HEADER_TOKEN) String token, @PathVariable("projectId") Integer projectId) { - List result = taskService.listMyTasks(token, projectId); + public ResponseList getMyTasks(@RequestHeader(TokenUtils.HEADER_TOKEN) String token, @PathVariable("projectId") Integer projectId) { + List result = taskService.listMyTasks(token, projectId); return ResponseList.ofSuccess(result); } @@ -117,7 +116,7 @@ public class TaskController { @RequestHeader(TokenUtils.HEADER_TOKEN) String token, @PathVariable Integer projectId ) { - if(!projectService.checkOpenStatus(projectId)) { + if (!projectService.checkOpenStatus(projectId)) { throw new BadRequestException(IProjectService.PROJECT_UNOPENED); } return ResponseMap.ofSuccess("查询成功", taskService.getProjectProcessOfEveryone(token, projectId)); @@ -131,7 +130,7 @@ public class TaskController { @PathVariable Integer projectId, @PathVariable(required = false) Integer staffId ) { - if(!projectService.checkOpenStatus(projectId)) { + 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/mapper/ProjectGroupMapper.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/mapper/ProjectGroupMapper.java index ff46c40..50b0106 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/mapper/ProjectGroupMapper.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/mapper/ProjectGroupMapper.java @@ -29,4 +29,14 @@ public interface ProjectGroupMapper extends BaseMapper { ON project_group.staff_id = staff.staff_id AND project_group.project_id = #{projectId} """) List selectMembersByList(@Param("projectId") Integer projectId); + + @Select(""" + SELECT COUNT(task_id) + FROM task + WHERE task_project_id = #{projectId} + AND task_holder_id = #{staffId} + AND is_deleted = 0 + AND (task_status = '待进行' OR task_status = '进行中'); + """) + Long selectUnfinishedTaskCountByStaffId(@Param("projectId") Integer projectId, @Param("staffId") Integer staffId); } 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 d07f833..d4ee807 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 @@ -5,7 +5,9 @@ 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.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Param; import java.time.LocalDate; @@ -16,6 +18,8 @@ import java.util.List; * created at 2022/7/4 14:52 */ public interface TaskMapper extends BaseMapper { + List selectTaskList(@Param(Constants.WRAPPER) Wrapper wrapper); + List selectSubTaskList(@Param("projectId") Integer projectId, @Param("fatherId") Long fatherId); List selectProjectProcess(@Param("projectId") Integer projectId, @Param("staffId") Integer staffId); diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/IProjectGroupService.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/IProjectGroupService.java index cb579ca..1f940da 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/IProjectGroupService.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/IProjectGroupService.java @@ -26,6 +26,8 @@ public interface IProjectGroupService extends IService { Boolean insertNewMember(String token, Integer projectId, String staffUsername, String positions) throws ForbiddenException, BadRequestException; + Boolean removeMember(String token, Integer projectId, Integer targetId) throws ForbiddenException, BadRequestException; + Boolean updateStaffPositions(String token, Integer projectId, Integer targetId, String positions) throws ForbiddenException; /** 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 ae8f902..1951822 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 @@ -38,7 +38,7 @@ public interface ITaskService extends IService { */ Integer getHolderLevel(String token, Long taskId); - List listMyTasks(String token, Integer projectId) throws BadRequestException; + List listMyTasks(String token, Integer projectId) throws BadRequestException; Boolean canBeDone(Long taskId); diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/AnnouncementServiceImpl.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/AnnouncementServiceImpl.java index 7ba73ce..5a6eecc 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/AnnouncementServiceImpl.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/AnnouncementServiceImpl.java @@ -45,7 +45,7 @@ public class AnnouncementServiceImpl extends ServiceImpl= 0) { + if (projectGroupService.compareProjectAccessLevel(projectId, token, rawAnnouncement.getAnnouncementPublisherId()) <= 0) { if (!announcement.checkModification(rawAnnouncement)) { throw new BadRequestException(BadRequestException.WRONG_PARAMETERS); } diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectGroupServiceImpl.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectGroupServiceImpl.java index fb9a848..b474e82 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectGroupServiceImpl.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectGroupServiceImpl.java @@ -60,6 +60,7 @@ public class ProjectGroupServiceImpl extends ServiceImpl= 0) { + throw new ForbiddenException(ForbiddenException.UNABLE_TO_OPERATE); + } + Long taskUnfinishedCount = baseMapper.selectUnfinishedTaskCountByStaffId(projectId, targetId); + if (taskUnfinishedCount != 0) { + throw new BadRequestException("该成员仍有未完成或未被关闭的工作项"); + } + return baseMapper.delete(Wrappers.lambdaQuery() + .eq(ProjectGroup::getProjectId, projectId) + .eq(ProjectGroup::getStaffId, targetId)) == 1; + } + @Override public Boolean updateStaffPositions(String token, Integer projectId, Integer targetId, String positions) throws ForbiddenException { int accessLevel = getProjectAccessLevel(token, projectId); @@ -87,13 +103,18 @@ public class ProjectGroupServiceImpl extends ServiceImpl implements IT @Override - public List listMyTasks(String token, Integer projectId) throws BadRequestException { + public List listMyTasks(String token, Integer projectId) { Integer staffId = TokenUtils.getStaffId(token); - List resList = baseMapper.selectList(Wrappers.lambdaQuery().select(Task::getTaskId, Task::getTaskFatherId, Task::getTaskHolderId) - .eq(Task::getTaskProjectId, projectId).orderByAsc(Task::getTaskFatherId)); + List resList = baseMapper.selectList(Wrappers.lambdaQuery() + .select(Task::getTaskId, Task::getTaskFatherId, Task::getTaskHolderId) + .eq(Task::getTaskProjectId, projectId) + .orderByAsc(Task::getTaskFatherId)); List results = new ArrayList<>(); - ArrayList vec = new ArrayList<>(); - ArrayList isTarget = new ArrayList<>(); + List vec = new ArrayList<>(); + List isTarget = new ArrayList<>(); vec.add(0L); isTarget.add(false); int id = 0; @@ -247,7 +249,9 @@ public class TaskServiceImpl extends ServiceImpl implements IT isTarget.add(resList.get(i).getTaskHolderId().equals(staffId)); } } - return baseMapper.selectList(Wrappers.lambdaQuery().in(Task::getTaskId, results)); + return baseMapper.selectTaskList(Wrappers.lambdaQuery() + .eq(Task::getDeleted, false) + .in(Task::getTaskId, results)); } @Override @@ -323,7 +327,7 @@ public class TaskServiceImpl extends ServiceImpl implements IT throw new BadRequestException(BadRequestException.WRONG_PARAMETERS); } if (typeChangeValue == 1 && !canBeDone(task.getTaskId())) { - throw new BadRequestException("还有子工作尚未完成"); + throw new BadRequestException("还有子工作项尚未完成"); } try { boolean closed = false; diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml index aec90be..9686caa 100644 --- a/src/main/resources/mapper/TaskMapper.xml +++ b/src/main/resources/mapper/TaskMapper.xml @@ -6,6 +6,27 @@ + - SELECT staff_fullname, completed_num FROM (SELECT task_holder_id, SUM(IF(task_closed_time IS NULL, 0, 1)) AS completed_num FROM task