|
|
@ -1,11 +1,16 @@ |
|
|
|
package com.ccsens.common.service; |
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import com.ccsens.common.bean.dto.ProjectDto; |
|
|
|
import com.ccsens.common.bean.po.ProTaskDetail; |
|
|
|
import com.ccsens.common.bean.po.*; |
|
|
|
import com.ccsens.common.bean.vo.ProjectVo; |
|
|
|
import com.ccsens.common.persist.dao.ProProjectDao; |
|
|
|
import com.ccsens.common.persist.mapper.ProTaskDetailMapper; |
|
|
|
import com.ccsens.common.bean.vo.TaskVo; |
|
|
|
import com.ccsens.common.persist.dao.*; |
|
|
|
import com.ccsens.common.util.CommonCodeError; |
|
|
|
import com.ccsens.util.exception.BaseException; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
@ -13,6 +18,8 @@ import org.springframework.transaction.annotation.Propagation; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* @author ma |
|
|
@ -22,15 +29,341 @@ import javax.annotation.Resource; |
|
|
|
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) |
|
|
|
public class ProjectService implements IProjectService{ |
|
|
|
|
|
|
|
@Resource |
|
|
|
private Snowflake snowflake; |
|
|
|
@Resource |
|
|
|
private ProProjectDao projectDao; |
|
|
|
@Resource |
|
|
|
private ProTaskDetailDao taskDetailDao; |
|
|
|
@Resource |
|
|
|
private ProTaskSubDao taskSubDao; |
|
|
|
@Resource |
|
|
|
private ProRoleDao roleDao; |
|
|
|
@Resource |
|
|
|
private ProRoleTaskDao roleTaskDao; |
|
|
|
@Resource |
|
|
|
private ProRoleRepulsionDao roleRepulsionDao; |
|
|
|
@Resource |
|
|
|
private ProParentTaskDao parentTaskDao; |
|
|
|
@Resource |
|
|
|
private ProTaskPanelInfoDao taskPanelInfoDao; |
|
|
|
@Resource |
|
|
|
private ProTaskPluginDao taskPluginDao; |
|
|
|
@Resource |
|
|
|
private ProTaskFlowDao taskFlowDao; |
|
|
|
@Resource |
|
|
|
private ProTaskProcessDao taskProcessDao; |
|
|
|
@Resource |
|
|
|
private ProTaskNotifyDao taskNotifyDao; |
|
|
|
@Resource |
|
|
|
private LabelBusinessDao labelBusinessDao; |
|
|
|
@Resource |
|
|
|
private ProTaskVersionDao taskVersionDao; |
|
|
|
|
|
|
|
@Override |
|
|
|
public ProjectVo.ProjectInfo findProjectById(ProjectDto.ProjectById param, Long userId) { |
|
|
|
ProjectVo.ProjectInfo projectById = projectDao.findProjectById(param.getProjectId()); |
|
|
|
if (ObjectUtil.isNull(projectById)){ |
|
|
|
throw new BaseException("项目不存在,请检查后再试"); |
|
|
|
throw new BaseException(CommonCodeError.PROJECT_NOT_FOUND); |
|
|
|
} |
|
|
|
return projectById; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public ProjectVo.CopyProjectInfo copyProject(ProjectDto.CopyProject param, Long userId) { |
|
|
|
ProjectVo.ProjectInfo oldProject = projectDao.findProjectById(param.getProjectId()); |
|
|
|
if (ObjectUtil.isNull(oldProject)){ |
|
|
|
throw new BaseException(CommonCodeError.PROJECT_NOT_FOUND); |
|
|
|
} |
|
|
|
ProjectVo.CopyProjectInfo copyProject = new ProjectVo.CopyProjectInfo(); |
|
|
|
long currentTime = System.currentTimeMillis(); |
|
|
|
|
|
|
|
//复制项目到任务详情表
|
|
|
|
ProTaskDetail newProjectDetail = new ProTaskDetail(); |
|
|
|
newProjectDetail.setId(snowflake.nextId()); |
|
|
|
if (StrUtil.isNotBlank(param.getProjectName())){ |
|
|
|
newProjectDetail.setName(param.getProjectName()); |
|
|
|
}else{ |
|
|
|
newProjectDetail.setName(oldProject.getName()+"-副本"); |
|
|
|
} |
|
|
|
newProjectDetail.setDescription(oldProject.getDescription()); |
|
|
|
newProjectDetail.setCycle(oldProject.getCycle()); |
|
|
|
taskDetailDao.insertSelective(newProjectDetail); |
|
|
|
//复制项目到任务分解表
|
|
|
|
ProTaskSub newProjectSub = new ProTaskSub(); |
|
|
|
newProjectSub.setId(snowflake.nextId()); |
|
|
|
newProjectSub.setPlanStartTime(currentTime); |
|
|
|
newProjectSub.setPlanDuration(oldProject.getPlanDuration()); |
|
|
|
newProjectSub.setPlanEndTime(currentTime+oldProject.getPlanDuration()); |
|
|
|
newProjectSub.setTaskDetailId(newProjectDetail.getId()); |
|
|
|
taskSubDao.insertSelective(newProjectSub); |
|
|
|
//处理项目版本表
|
|
|
|
ProTaskVersion oldProjectVersion = taskVersionDao.findVersionByProjectId(oldProject.getId()); |
|
|
|
if (ObjectUtil.isNotNull(oldProjectVersion)){ |
|
|
|
ProTaskVersion newProjectVersion = new ProTaskVersion(); |
|
|
|
BeanUtil.copyProperties(oldProjectVersion,newProjectVersion); |
|
|
|
newProjectVersion.setId(snowflake.nextId()); |
|
|
|
newProjectVersion.setProjectType((byte)0); |
|
|
|
newProjectVersion.setTaskDetailId(newProjectDetail.getId()); |
|
|
|
newProjectVersion.setCreatedAt(null); |
|
|
|
newProjectVersion.setUpdatedAt(null); |
|
|
|
taskVersionDao.insertSelective(newProjectVersion); |
|
|
|
} |
|
|
|
//处理项目标签
|
|
|
|
List<Long> businessId = new ArrayList<>(); |
|
|
|
businessId.add(oldProject.getId()); |
|
|
|
List<LabelBusiness> oldBusinessLabelList = labelBusinessDao.findBusinessLabelByBid(businessId); |
|
|
|
if (CollectionUtil.isNotEmpty(oldBusinessLabelList)){ |
|
|
|
List<LabelBusiness> newLabelList = new ArrayList<>(); |
|
|
|
for (LabelBusiness oldBusinessLabel : oldBusinessLabelList) { |
|
|
|
LabelBusiness newLabelBusiness = new LabelBusiness(); |
|
|
|
BeanUtil.copyProperties(oldBusinessLabel,newLabelBusiness); |
|
|
|
newLabelBusiness.setId(snowflake.nextId()); |
|
|
|
newLabelBusiness.setBusinessId(newProjectDetail.getId()); |
|
|
|
newLabelBusiness.setUserId(userId); |
|
|
|
newLabelList.add(newLabelBusiness); |
|
|
|
} |
|
|
|
labelBusinessDao.insertAllBusinessLabel(newLabelList); |
|
|
|
} |
|
|
|
|
|
|
|
//复制角色相关
|
|
|
|
copyRole(oldProject.getId(),newProjectDetail.getId(),userId); |
|
|
|
//复制任务相关
|
|
|
|
copyProject.setId(newProjectDetail.getId()); |
|
|
|
return copyProject; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 复制角色相关 |
|
|
|
* @param oldProjectId 旧项目id |
|
|
|
* @param newProjectId 新项目id |
|
|
|
* @param userId 用户id |
|
|
|
*/ |
|
|
|
private void copyRole(Long oldProjectId, Long newProjectId, Long userId) { |
|
|
|
List<ProRole> oldRoleList = roleDao.findRoleByProjectId(oldProjectId); |
|
|
|
Map<Long,Long> oldAndNewRoleId = new HashMap<>(); |
|
|
|
if (CollectionUtil.isNotEmpty(oldRoleList)){ |
|
|
|
List<ProRole> newRoleList = new ArrayList<>(); |
|
|
|
for (ProRole oldRole : oldRoleList) { |
|
|
|
ProRole newRole = new ProRole(); |
|
|
|
newRole.setId(snowflake.nextId()); |
|
|
|
newRole.setName(oldRole.getName()); |
|
|
|
newRole.setLabelId(oldRole.getLabelId()); |
|
|
|
newRole.setProjectId(newProjectId); |
|
|
|
newRole.setOperator(userId); |
|
|
|
oldAndNewRoleId.put(oldRole.getId(),newRole.getId()); |
|
|
|
newRoleList.add(newRole); |
|
|
|
} |
|
|
|
roleDao.insertRoleList(newRoleList); |
|
|
|
List<ProRoleRepulsion> oldRoleRepulsions = roleRepulsionDao.findRepulsionByRoleIdList(oldRoleList); |
|
|
|
if (CollectionUtil.isNotEmpty(oldRoleRepulsions)){ |
|
|
|
List<ProRoleRepulsion> newRoleRepulsionList = new ArrayList<>(); |
|
|
|
for (ProRoleRepulsion oldRoleRepulsion : oldRoleRepulsions) { |
|
|
|
ProRoleRepulsion newRoleRepulsion = new ProRoleRepulsion(); |
|
|
|
newRoleRepulsion.setId(snowflake.nextId()); |
|
|
|
newRoleRepulsion.setRoleId(oldAndNewRoleId.get(oldRoleRepulsion.getRoleId())); |
|
|
|
newRoleRepulsion.setRepulsionRoleId(oldAndNewRoleId.get(oldRoleRepulsion.getRepulsionRoleId())); |
|
|
|
newRoleRepulsion.setOperator(userId); |
|
|
|
newRoleRepulsionList.add(newRoleRepulsion); |
|
|
|
} |
|
|
|
roleRepulsionDao.insertRoleRepulsionList(newRoleRepulsionList); |
|
|
|
} |
|
|
|
//复制角色标签关系
|
|
|
|
List<Long> roleIdList = new ArrayList<>(); |
|
|
|
oldAndNewRoleId.forEach((key,val)->roleIdList.add(key)); |
|
|
|
List<LabelBusiness> oldRoleLabelList = labelBusinessDao.findBusinessLabelByBid(roleIdList); |
|
|
|
if (CollectionUtil.isNotEmpty(oldRoleLabelList)){ |
|
|
|
List<LabelBusiness> newRoleLabelList = new ArrayList<>(); |
|
|
|
for (LabelBusiness oldRoleLabel : oldRoleLabelList) { |
|
|
|
LabelBusiness newRoleLabel = new LabelBusiness(); |
|
|
|
BeanUtil.copyProperties(oldRoleLabel,newRoleLabel); |
|
|
|
newRoleLabel.setId(snowflake.nextId()); |
|
|
|
newRoleLabel.setBusinessId(oldAndNewRoleId.get(oldRoleLabel.getBusinessId())); |
|
|
|
newRoleLabel.setUserId(userId); |
|
|
|
newRoleLabelList.add(newRoleLabel); |
|
|
|
} |
|
|
|
labelBusinessDao.insertAllBusinessLabel(newRoleLabelList); |
|
|
|
} |
|
|
|
//复制任务相关
|
|
|
|
copyTask(oldProjectId, newProjectId, userId,oldAndNewRoleId); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param oldProjectId 旧项目id |
|
|
|
* @param newProjectId 新项目id |
|
|
|
* @param userId 用户id |
|
|
|
* @param oldAndNewRoleId 旧角色id与新角色id |
|
|
|
*/ |
|
|
|
private void copyTask(Long oldProjectId, Long newProjectId, Long userId, Map<Long, Long> oldAndNewRoleId) { |
|
|
|
List<ProParentTask> newParentTaskList = new ArrayList<>(); |
|
|
|
//查找项目下的一级任务
|
|
|
|
List<TaskVo.TaskDetail> oldFirstTaskDetailList = parentTaskDao.findTaskByParentId(oldProjectId); |
|
|
|
Map<Long,Long> oldAndNewTaskDetailId = new HashMap<>(); |
|
|
|
//1.把项目id放到任务id的map中,后续要删除
|
|
|
|
oldAndNewTaskDetailId.put(oldProjectId,newProjectId); |
|
|
|
if (CollectionUtil.isNotEmpty(oldFirstTaskDetailList)) { |
|
|
|
List<ProTaskDetail> newTaskDetailList = new ArrayList<>(); |
|
|
|
List<ProTaskSub> newTaskSubList = new ArrayList<>(); |
|
|
|
for (TaskVo.TaskDetail oldFirstTaskDetail : oldFirstTaskDetailList) { |
|
|
|
//循环处理一级任务及一级任务的分解任务
|
|
|
|
taskLoop(newTaskDetailList,newTaskSubList,oldAndNewTaskDetailId,oldFirstTaskDetail,oldProjectId,newParentTaskList); |
|
|
|
//查询二级任务
|
|
|
|
List<TaskVo.TaskDetail> oldSecondTaskDetailList = parentTaskDao.findTaskByParentId(oldFirstTaskDetail.getDetailId()); |
|
|
|
if (CollectionUtil.isNotEmpty(oldSecondTaskDetailList)) { |
|
|
|
for (TaskVo.TaskDetail oldSecondTaskDetail : oldSecondTaskDetailList) { |
|
|
|
//循环处理二级任务及二级任务的分级任务
|
|
|
|
taskLoop(newTaskDetailList,newTaskSubList,oldAndNewTaskDetailId,oldSecondTaskDetail,oldSecondTaskDetail.getParentTaskDetailId(),newParentTaskList); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//2.删除任务id的map中的项目id
|
|
|
|
oldAndNewTaskDetailId.remove(oldProjectId); |
|
|
|
//将任务详情和分解任务,任务关系保存到数据库
|
|
|
|
taskDetailDao.insertAllTaskDetail(newTaskDetailList); |
|
|
|
taskSubDao.insertAllTaskSub(newTaskSubList); |
|
|
|
parentTaskDao.insertAllParentTask(newParentTaskList); |
|
|
|
//处理角色任务关联表
|
|
|
|
List<Long> oldRoleIdList = new ArrayList<>(); |
|
|
|
oldAndNewRoleId.forEach((key,val) -> oldRoleIdList.add(key)); |
|
|
|
List<ProRoleTask> oldRoleTaskList = roleTaskDao.findRoleTaskByRoleId(oldRoleIdList); |
|
|
|
if (CollectionUtil.isNotEmpty(oldRoleTaskList)){ |
|
|
|
List<ProRoleTask> newRoleTaskList = new ArrayList<>(); |
|
|
|
for (ProRoleTask oldRoleTask : oldRoleTaskList) { |
|
|
|
ProRoleTask newRoleTask = new ProRoleTask(); |
|
|
|
newRoleTask.setId(snowflake.nextId()); |
|
|
|
newRoleTask.setTaskId(oldAndNewTaskDetailId.get(oldRoleTask.getTaskId())); |
|
|
|
newRoleTask.setRoleId(oldAndNewRoleId.get(oldRoleTask.getRoleId())); |
|
|
|
newRoleTask.setOperator(userId); |
|
|
|
newRoleTaskList.add(newRoleTask); |
|
|
|
} |
|
|
|
roleTaskDao.insertAllRoleTask(newRoleTaskList); |
|
|
|
} |
|
|
|
//处理任务面板信息表
|
|
|
|
List<Long> oldTaskIdList = new ArrayList<>(); |
|
|
|
oldAndNewTaskDetailId.forEach((key,val) -> oldTaskIdList.add(key)); |
|
|
|
List<ProTaskPanelInfo> oldTaskPanelInfoList = taskPanelInfoDao.findPanelByTaskIdList(oldTaskIdList); |
|
|
|
if (CollectionUtil.isNotEmpty(oldTaskPanelInfoList)) { |
|
|
|
List<ProTaskPanelInfo> newTaskPanelInfoList = new ArrayList<>(); |
|
|
|
for (ProTaskPanelInfo oldTaskPanelInfo : oldTaskPanelInfoList) { |
|
|
|
ProTaskPanelInfo newTaskPanelInfo = new ProTaskPanelInfo(); |
|
|
|
newTaskPanelInfo.setId(snowflake.nextId()); |
|
|
|
newTaskPanelInfo.setTaskDetailId(oldAndNewTaskDetailId.get(oldTaskPanelInfo.getTaskDetailId())); |
|
|
|
newTaskPanelInfo.setBackColor(oldTaskPanelInfo.getBackColor()); |
|
|
|
newTaskPanelInfo.setRoundCorner(oldTaskPanelInfo.getRoundCorner()); |
|
|
|
newTaskPanelInfo.setBorder(oldTaskPanelInfo.getBorder()); |
|
|
|
newTaskPanelInfo.setShadow(oldTaskPanelInfo.getShadow()); |
|
|
|
newTaskPanelInfo.setWidth(oldTaskPanelInfo.getWidth()); |
|
|
|
newTaskPanelInfo.setHeight(oldTaskPanelInfo.getHeight()); |
|
|
|
newTaskPanelInfo.setRow(oldTaskPanelInfo.getRow()); |
|
|
|
newTaskPanelInfo.setCol(oldTaskPanelInfo.getCol()); |
|
|
|
newTaskPanelInfoList.add(newTaskPanelInfo); |
|
|
|
} |
|
|
|
taskPanelInfoDao.insertAllTaskPanel(newTaskPanelInfoList); |
|
|
|
} |
|
|
|
//处理任务插件表
|
|
|
|
List<ProTaskPlugin> oldTaskPluginList = taskPluginDao.findPluginByTaskIdList(oldTaskIdList); |
|
|
|
if (CollectionUtil.isNotEmpty(oldTaskPluginList)){ |
|
|
|
List<ProTaskPlugin> newTaskPluginList = new ArrayList<>(); |
|
|
|
for (ProTaskPlugin oldTaskPlugin : oldTaskPluginList) { |
|
|
|
ProTaskPlugin newTaskPlugin = new ProTaskPlugin(); |
|
|
|
BeanUtil.copyProperties(oldTaskPlugin,newTaskPlugin); |
|
|
|
newTaskPlugin.setId(snowflake.nextId()); |
|
|
|
newTaskPlugin.setTaskDetailId(oldAndNewTaskDetailId.get(oldTaskPlugin.getTaskDetailId())); |
|
|
|
newTaskPluginList.add(newTaskPlugin); |
|
|
|
} |
|
|
|
taskPluginDao.insertAllTaskPlugin(newTaskPluginList); |
|
|
|
} |
|
|
|
//处理任务流转表
|
|
|
|
List<ProTaskFlow> oldTaskFlowList = taskFlowDao.findTaskFlowByTaskIdList(oldTaskIdList); |
|
|
|
if (CollectionUtil.isNotEmpty(oldTaskFlowList)){ |
|
|
|
List<ProTaskFlow> newTaskFlowList = new ArrayList<>(); |
|
|
|
for (ProTaskFlow oldTaskFlow : oldTaskFlowList) { |
|
|
|
ProTaskFlow newTaskFlow = new ProTaskFlow(); |
|
|
|
newTaskFlow.setId(snowflake.nextId()); |
|
|
|
newTaskFlow.setTaskDetailId(oldAndNewTaskDetailId.get(oldTaskFlow.getTaskDetailId())); |
|
|
|
newTaskFlow.setFlowType(oldTaskFlow.getFlowType()); |
|
|
|
newTaskFlow.setJumpTaskDetailId(oldAndNewTaskDetailId.get(oldTaskFlow.getJumpTaskDetailId())); |
|
|
|
newTaskFlowList.add(newTaskFlow); |
|
|
|
} |
|
|
|
taskFlowDao.insertAllTaskFlow(newTaskFlowList); |
|
|
|
} |
|
|
|
//处理任务上下道工序
|
|
|
|
List<ProTaskProcess> oldTaskProcessList = taskProcessDao.findTaskProcessByTaskIdList(oldTaskIdList); |
|
|
|
if (CollectionUtil.isNotEmpty(oldTaskProcessList)){ |
|
|
|
List<ProTaskProcess> newTaskProcessList = new ArrayList<>(); |
|
|
|
for (ProTaskProcess oldTaskProcess : oldTaskProcessList) { |
|
|
|
ProTaskProcess newTaskProcess = new ProTaskProcess(); |
|
|
|
BeanUtil.copyProperties(oldTaskProcess,newTaskProcess); |
|
|
|
newTaskProcess.setId(snowflake.nextId()); |
|
|
|
newTaskProcess.setTaskDetailId(oldAndNewTaskDetailId.get(oldTaskProcess.getTaskDetailId())); |
|
|
|
newTaskProcess.setNextTaskDetailId(oldAndNewTaskDetailId.get(oldTaskProcess.getNextTaskDetailId())); |
|
|
|
newTaskProcessList.add(newTaskProcess); |
|
|
|
} |
|
|
|
taskProcessDao.insertAllTaskProcess(newTaskProcessList); |
|
|
|
} |
|
|
|
//处理任务通知表
|
|
|
|
List<ProTaskNotify> oldTaskNotifyList = taskNotifyDao.findTaskNotifyByTaskIdList(oldTaskIdList); |
|
|
|
if (CollectionUtil.isNotEmpty(oldTaskNotifyList)){ |
|
|
|
List<ProTaskNotify> newTaskNotifyList = new ArrayList<>(); |
|
|
|
for (ProTaskNotify oldTaskNotify : oldTaskNotifyList) { |
|
|
|
ProTaskNotify newTaskNotify = new ProTaskNotify(); |
|
|
|
BeanUtil.copyProperties(oldTaskNotify,newTaskNotify); |
|
|
|
newTaskNotify.setId(snowflake.nextId()); |
|
|
|
newTaskNotify.setTaskDetailId(oldAndNewTaskDetailId.get(oldTaskNotify.getTaskDetailId())); |
|
|
|
newTaskNotifyList.add(newTaskNotify); |
|
|
|
} |
|
|
|
taskNotifyDao.insertAllTaskNotify(newTaskNotifyList); |
|
|
|
} |
|
|
|
//处理任务标签关系表
|
|
|
|
List<LabelBusiness> oldTaskLabelList = labelBusinessDao.findBusinessLabelByBid(oldTaskIdList); |
|
|
|
if (CollectionUtil.isNotEmpty(oldTaskLabelList)){ |
|
|
|
List<LabelBusiness> newTaskLabelList = new ArrayList<>(); |
|
|
|
for (LabelBusiness oldTaskLabel : oldTaskLabelList) { |
|
|
|
LabelBusiness newTaskLabel = new LabelBusiness(); |
|
|
|
BeanUtil.copyProperties(oldTaskLabel,newTaskLabel); |
|
|
|
newTaskLabel.setId(snowflake.nextId()); |
|
|
|
newTaskLabel.setUserId(userId); |
|
|
|
newTaskLabel.setBusinessId(oldAndNewTaskDetailId.get(oldTaskLabel.getBusinessId())); |
|
|
|
newTaskLabelList.add(newTaskLabel); |
|
|
|
} |
|
|
|
labelBusinessDao.insertAllBusinessLabel(newTaskLabelList); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void taskLoop(List<ProTaskDetail> newTaskDetailList,List<ProTaskSub> newTaskSubList,Map<Long,Long> oldAndNewTaskDetailId |
|
|
|
,TaskVo.TaskDetail oldTaskDetail,Long parentTaskId,List<ProParentTask> newParentTaskList) { |
|
|
|
ProTaskDetail newTaskDetail = new ProTaskDetail(); |
|
|
|
newTaskDetail.setId(snowflake.nextId()); |
|
|
|
newTaskDetail.setName(oldTaskDetail.getName()); |
|
|
|
newTaskDetail.setDescription(oldTaskDetail.getDescription()); |
|
|
|
newTaskDetail.setCycle(oldTaskDetail.getCycle()); |
|
|
|
//将任务详情添加到newTaskDetailList集合中
|
|
|
|
newTaskDetailList.add(newTaskDetail); |
|
|
|
oldAndNewTaskDetailId.put(oldTaskDetail.getDetailId(),newTaskDetail.getId()); |
|
|
|
//处理任务关系表
|
|
|
|
ProParentTask newParentTask = new ProParentTask(); |
|
|
|
newParentTask.setId(snowflake.nextId()); |
|
|
|
newParentTask.setTaskDetailId(newTaskDetail.getId()); |
|
|
|
newParentTask.setParentTaskDetailId(oldAndNewTaskDetailId.get(parentTaskId)); |
|
|
|
newParentTaskList.add(newParentTask); |
|
|
|
|
|
|
|
|
|
|
|
List<ProTaskSub> oldTaskSubList = taskSubDao.findSubTaskByDetail(oldTaskDetail.getDetailId()); |
|
|
|
if (CollectionUtil.isNotEmpty(oldTaskSubList)){ |
|
|
|
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()); |
|
|
|
newTaskSub.setTaskDetailId(oldAndNewTaskDetailId.get(oldTaskSub.getTaskDetailId())); |
|
|
|
//将任务详情的分解任务添加到分解任务集合中
|
|
|
|
newTaskSubList.add(newTaskSub); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|