|
|
@ -160,9 +160,10 @@ public class ProjectService implements IProjectService{ |
|
|
|
labelBusinessDao.insertAllBusinessLabel(newLabelList); |
|
|
|
} |
|
|
|
|
|
|
|
//复制角色相关
|
|
|
|
copyRole(oldProject.getId(),newProjectDetail.getId(),userId); |
|
|
|
//复制任务相关
|
|
|
|
//复制角色与任务相关
|
|
|
|
Long timeDifference = currentTime - oldProject.getPlanStartTime(); |
|
|
|
copyRole(oldProject.getId(),newProjectDetail.getId(),userId,timeDifference); |
|
|
|
|
|
|
|
copyProject.setId(newProjectDetail.getId()); |
|
|
|
return copyProject; |
|
|
|
} |
|
|
@ -173,7 +174,7 @@ public class ProjectService implements IProjectService{ |
|
|
|
* @param newProjectId 新项目id |
|
|
|
* @param userId 用户id |
|
|
|
*/ |
|
|
|
private void copyRole(Long oldProjectId, Long newProjectId, Long userId) { |
|
|
|
private void copyRole(Long oldProjectId, Long newProjectId, Long userId,Long timeDifference) { |
|
|
|
List<ProRole> oldRoleList = roleDao.findRoleByProjectId(oldProjectId); |
|
|
|
Map<Long,Long> oldAndNewRoleId = new HashMap<>(); |
|
|
|
if (CollectionUtil.isNotEmpty(oldRoleList)){ |
|
|
@ -219,7 +220,7 @@ public class ProjectService implements IProjectService{ |
|
|
|
labelBusinessDao.insertAllBusinessLabel(newRoleLabelList); |
|
|
|
} |
|
|
|
//复制任务相关
|
|
|
|
copyTask(oldProjectId, newProjectId, userId,oldAndNewRoleId); |
|
|
|
copyTask(oldProjectId, newProjectId, userId,oldAndNewRoleId,timeDifference); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -229,7 +230,7 @@ public class ProjectService implements IProjectService{ |
|
|
|
* @param userId 用户id |
|
|
|
* @param oldAndNewRoleId 旧角色id与新角色id |
|
|
|
*/ |
|
|
|
private void copyTask(Long oldProjectId, Long newProjectId, Long userId, Map<Long, Long> oldAndNewRoleId) { |
|
|
|
private void copyTask(Long oldProjectId, Long newProjectId, Long userId, Map<Long, Long> oldAndNewRoleId,Long timeDifference) { |
|
|
|
List<ProParentTask> newParentTaskList = new ArrayList<>(); |
|
|
|
//查找项目下的一级任务
|
|
|
|
List<CTaskVo.TaskDetail> oldFirstTaskDetailList = parentTaskDao.findTaskByParentId(oldProjectId); |
|
|
@ -241,13 +242,13 @@ public class ProjectService implements IProjectService{ |
|
|
|
List<ProTaskSub> newTaskSubList = new ArrayList<>(); |
|
|
|
for (CTaskVo.TaskDetail oldFirstTaskDetail : oldFirstTaskDetailList) { |
|
|
|
//循环处理一级任务及一级任务的分解任务
|
|
|
|
taskLoop(newTaskDetailList,newTaskSubList,oldAndNewTaskDetailId,oldFirstTaskDetail,oldProjectId,newParentTaskList); |
|
|
|
taskLoop(newTaskDetailList,newTaskSubList,oldAndNewTaskDetailId,oldFirstTaskDetail,oldProjectId,newParentTaskList,timeDifference); |
|
|
|
//查询二级任务
|
|
|
|
List<CTaskVo.TaskDetail> oldSecondTaskDetailList = parentTaskDao.findTaskByParentId(oldFirstTaskDetail.getDetailId()); |
|
|
|
if (CollectionUtil.isNotEmpty(oldSecondTaskDetailList)) { |
|
|
|
for (CTaskVo.TaskDetail oldSecondTaskDetail : oldSecondTaskDetailList) { |
|
|
|
//循环处理二级任务及二级任务的分级任务
|
|
|
|
taskLoop(newTaskDetailList,newTaskSubList,oldAndNewTaskDetailId,oldSecondTaskDetail,oldSecondTaskDetail.getParentTaskDetailId(),newParentTaskList); |
|
|
|
taskLoop(newTaskDetailList,newTaskSubList,oldAndNewTaskDetailId,oldSecondTaskDetail,oldSecondTaskDetail.getParentTaskDetailId(),newParentTaskList,timeDifference); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -367,7 +368,7 @@ public class ProjectService implements IProjectService{ |
|
|
|
} |
|
|
|
|
|
|
|
private void taskLoop(List<ProTaskDetail> newTaskDetailList, List<ProTaskSub> newTaskSubList, Map<Long,Long> oldAndNewTaskDetailId |
|
|
|
, CTaskVo.TaskDetail oldTaskDetail, Long parentTaskId, List<ProParentTask> newParentTaskList) { |
|
|
|
, CTaskVo.TaskDetail oldTaskDetail, Long parentTaskId, List<ProParentTask> newParentTaskList,Long timeDifference) { |
|
|
|
ProTaskDetail newTaskDetail = new ProTaskDetail(); |
|
|
|
newTaskDetail.setId(snowflake.nextId()); |
|
|
|
newTaskDetail.setName(oldTaskDetail.getName()); |
|
|
@ -389,9 +390,18 @@ public class ProjectService implements IProjectService{ |
|
|
|
for (ProTaskSub oldTaskSub : oldTaskSubList) { |
|
|
|
ProTaskSub newTaskSub = new ProTaskSub(); |
|
|
|
newTaskSub.setId(snowflake.nextId()); |
|
|
|
newTaskSub.setPlanStartTime(System.currentTimeMillis()); |
|
|
|
newTaskSub.setPlanDuration(oldTaskSub.getPlanDuration()); |
|
|
|
newTaskSub.setPlanEndTime(System.currentTimeMillis()+oldTaskSub.getPlanDuration()); |
|
|
|
if (0 != oldTaskSub.getPlanStartTime()){ |
|
|
|
newTaskSub.setPlanStartTime(oldTaskSub.getPlanStartTime()+timeDifference); |
|
|
|
}else{ |
|
|
|
newTaskSub.setPlanStartTime(oldTaskSub.getPlanStartTime()); |
|
|
|
} |
|
|
|
if (0 != oldTaskSub.getPlanEndTime()) { |
|
|
|
newTaskSub.setPlanEndTime(newTaskSub.getPlanStartTime()+oldTaskSub.getPlanDuration()); |
|
|
|
}else{ |
|
|
|
newTaskSub.setPlanEndTime(oldTaskSub.getPlanEndTime()); |
|
|
|
} |
|
|
|
|
|
|
|
newTaskSub.setTaskDetailId(oldAndNewTaskDetailId.get(oldTaskSub.getTaskDetailId())); |
|
|
|
//将任务详情的分解任务添加到分解任务集合中
|
|
|
|
newTaskSubList.add(newTaskSub); |
|
|
|