Browse Source

Merge branch 'tall3' of dd.tall.wiki:ccsens_wiki/ccsenscloud into tall3

tall3
zy_Java 4 years ago
parent
commit
e86981de8a
  1. 32
      common/src/main/java/com/ccsens/common/service/ProjectService.java
  2. 2
      common/src/main/resources/mapper_dao/ProTaskProcessDao.xml

32
common/src/main/java/com/ccsens/common/service/ProjectService.java

@ -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);

2
common/src/main/resources/mapper_dao/ProTaskProcessDao.xml

@ -11,7 +11,7 @@
time_difference
)
VALUES
<foreach collection="roleTaskList" item="item" separator=",">
<foreach collection="taskProcessList" item="item" separator=",">
(#{item.id},#{item.taskDetailId},#{item.nextTaskDetailId},#{item.processType},#{item.timeDifference})
</foreach>
</insert>

Loading…
Cancel
Save