|
|
@ -12,6 +12,7 @@ import com.ccsens.util.CodeEnum; |
|
|
|
import com.ccsens.util.DateUtil; |
|
|
|
import com.ccsens.util.WebConstant; |
|
|
|
import com.ccsens.util.exception.BaseException; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
@ -20,8 +21,9 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
|
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
|
@Transactional(propagation = Propagation.REQUIRED) |
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
|
|
|
public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
@Autowired |
|
|
|
private IProRoleService proRoleService; |
|
|
@ -47,6 +49,8 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
private ProMemberDao proMemberDao; |
|
|
|
@Autowired |
|
|
|
private SysProjectDao sysProjectDao; |
|
|
|
@Autowired |
|
|
|
private TaskPluginDao taskPluginDao; |
|
|
|
|
|
|
|
@Override |
|
|
|
public void saveTaskDetail(ProTaskDetail taskDetail) { |
|
|
@ -148,6 +152,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
proTaskInfo.setNormalTaskList(normalTaskList); |
|
|
|
return proTaskInfo; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 查看任务 项目成员 |
|
|
|
*/ |
|
|
@ -223,6 +228,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
proTaskInfo.setNormalTaskList(theNormalTaskList); |
|
|
|
return proTaskInfo; |
|
|
|
} |
|
|
|
|
|
|
|
private List<TaskVo.NormalTask> sortTaskTime(List<TaskVo.NormalTask> commonTask) { |
|
|
|
List<TaskVo.NormalTask> normalTaskList = new ArrayList<>(); |
|
|
|
List<TaskVo.NormalTask> secondTaskVoList = null; |
|
|
@ -413,6 +419,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
} |
|
|
|
return taskDetail; |
|
|
|
} |
|
|
|
|
|
|
|
private void normalTaskAddPlugin(Long userId, Long taskId, TaskVo.NormalTask normalTask) throws Exception { |
|
|
|
ProTaskDetail task = taskDetailDao.selectByPrimaryKey(taskId); |
|
|
|
//添加项目信息
|
|
|
@ -430,6 +437,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
normalTask.setPlugins(new ArrayList<>()); |
|
|
|
normalTask.getPlugins().addAll(pluginVoList); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 修改返回时子任务的名字 格式:“任务名+(xx和XX)” |
|
|
|
*/ |
|
|
@ -560,6 +568,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
taskCheckList.setPageInfo(pageInfo); |
|
|
|
return taskCheckList; |
|
|
|
} |
|
|
|
|
|
|
|
private List<TaskVo.NormalTask> getTaskInfoByProjectIdAndUserId(SysProject project, Long userId, |
|
|
|
Long startTime, Long endTime) throws Exception { |
|
|
|
List<TaskVo.NormalTask> normalTaskList = new ArrayList<>(); |
|
|
@ -602,7 +611,6 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
|
|
|
|
/** |
|
|
|
* 项目内的任务清单 |
|
|
|
* |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public TaskVo.TaskCheckList selectTaskListByProject(Long projectId, Long currentUserId, Integer page, Integer pageSize, |
|
|
@ -750,19 +758,45 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
//===================================================================
|
|
|
|
|
|
|
|
/** |
|
|
|
* 删除角色下的所有任务相关(taskDetail,taskSubTime,taskMember,plugin) |
|
|
|
* @param roleId |
|
|
|
* 删除任务和所有相关信息 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void deleteTaskByRoleId(Long roleId) { |
|
|
|
// taskDetailDao.deleteTaskByRoleId(roleId);
|
|
|
|
public void deleteTask(Long currentUserId, Long taskId) { |
|
|
|
//检查id是详情id还是subTimeId
|
|
|
|
ProTaskDetail taskDetail = null; |
|
|
|
ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(taskId); |
|
|
|
if (ObjectUtil.isNotNull(subTime)) { |
|
|
|
taskDetail = taskDetailDao.selectByPrimaryKey(subTime.getTaskDetailId()); |
|
|
|
} else { |
|
|
|
taskDetail = taskDetailDao.selectByPrimaryKey(taskId); |
|
|
|
} |
|
|
|
//本用户在项目中的角色
|
|
|
|
List<ProRole> proRoles = proRoleService.getProRoleByProjectIdAndUserId(taskDetail.getProjectId(), currentUserId); |
|
|
|
//用户在项目中的最高权限
|
|
|
|
int power = proRoleService.selectPowerByRoleName(proRoles); |
|
|
|
if (power > 1) { |
|
|
|
if (ObjectUtil.isNotNull(taskDetail)) { |
|
|
|
deleteTaskByTaskId(taskDetail.getId()); |
|
|
|
} |
|
|
|
} else { |
|
|
|
throw new BaseException(CodeEnum.NOT_POWER); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 删除任务和所有相关信息 |
|
|
|
*/ |
|
|
|
private void deleteTaskById(Long taskId){ |
|
|
|
//删除交付物
|
|
|
|
@Override |
|
|
|
public void deleteTaskByTaskId(Long taskId) { |
|
|
|
//1、删除交付物相关信息
|
|
|
|
taskDeliverService.deleteDeliverByTaskId(taskId); |
|
|
|
//2、删除插件
|
|
|
|
ProTaskPluginExample pluginExample = new ProTaskPluginExample(); |
|
|
|
pluginExample.createCriteria().andTaskDetailIdEqualTo(taskId); |
|
|
|
taskPluginDao.deleteByExample(pluginExample); |
|
|
|
//3、删除任务与成员关联表
|
|
|
|
ProTaskMemberExample taskMemberExample = new ProTaskMemberExample(); |
|
|
|
taskMemberExample.createCriteria().andTaskDetailIdEqualTo(taskId); |
|
|
|
taskMemberDao.deleteByExample(taskMemberExample); |
|
|
|
//4、删除任务、子任务和任务完成表
|
|
|
|
taskDetailDao.selectTaskByDetailId(taskId); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|