完成任务和子任务的删除和关闭操作(待测试)

master
yang.yongquan 2022-07-04 21:13:33 +08:00
parent 43c1e5fa91
commit d41a0eb83a
2 changed files with 57 additions and 0 deletions

View File

@ -13,6 +13,9 @@ import java.util.List;
*/
public interface ITaskService extends IService<Task> {
List<Task> getTaskList(String token,Integer projectId,Long fatherId) throws BadRequestException;
List<List<Long>> getTaskAndSubTask(Long taskId);
Boolean deleteTaskAndSubTask(String token, Integer projectId, Long taskId) throws BadRequestException;
Boolean closeTaskAndSubTask(String token, Integer projectId, Long taskId) throws BadRequestException;
Boolean checkHolder(Integer staffId,Long taskId);
Boolean checkHolder(String token,Long taskId);
List<Task> getMyTaskList(String token,Integer projectId) throws BadRequestException;

View File

@ -19,6 +19,7 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author
@ -36,6 +37,59 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements IT
return baseMapper.selectList(Wrappers.<Task>lambdaQuery().eq(Task::getTaskProjectId,projectId).eq(Task::getTaskFatherId,fatherId));
}
@Override
public List<List<Long>> getTaskAndSubTask(Long taskId) {
List<List<Long>> resList = new ArrayList<>();
List<Long> res = new ArrayList<>();
res.add(taskId);
resList.add(res);
while(true) {
List<Task> list = baseMapper.selectList(Wrappers.<Task>lambdaQuery().in(Task::getTaskFatherId, res));
if(list == null || list.isEmpty()) break;
res = list.stream().map(Task::getTaskId).collect(Collectors.toList());
resList.add(res);
}
return resList;
}
@Override
public Boolean deleteTaskAndSubTask(String token, Integer projectId, Long taskId) throws BadRequestException{
if(projectGroupService.getUserLevelInGroup(token,projectId)==0) {
throw new BadRequestException("错误参数");
}
if(!checkHolder(token, taskId)) {
throw new BadRequestException("错误父级参数");
}
List<List<Long>> resList = getTaskAndSubTask(taskId);
try {
for (List<Long> list: resList) {
baseMapper.delete(Wrappers.<Task>lambdaQuery().in(Task::getTaskId, list));
}
return true;
} catch (Exception e) {
return false;
}
}
@Override
public Boolean closeTaskAndSubTask(String token, Integer projectId, Long taskId) throws BadRequestException{
if(projectGroupService.getUserLevelInGroup(token,projectId)==0) {
throw new BadRequestException("错误参数");
}
if(!checkHolder(token, taskId)) {
throw new BadRequestException("错误父级参数");
}
List<List<Long>> resList = getTaskAndSubTask(taskId);
try {
for (List<Long> list: resList) {
baseMapper.update(null, Wrappers.<Task>lambdaUpdate().in(Task::getTaskId, list).set(Task::getTaskType, "关闭"));
}
return true;
} catch (Exception e) {
return false;
}
}
@Override
public Boolean checkHolder(Integer staffId,Long taskId){
try{