|
@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
import javax.annotation.Resource; |
|
|
import javax.annotation.Resource; |
|
|
import java.text.SimpleDateFormat; |
|
|
import java.text.SimpleDateFormat; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
@Slf4j |
|
|
@Slf4j |
|
|
@Service |
|
|
@Service |
|
@ -647,9 +648,9 @@ public class ProjectService implements IProjectService { |
|
|
userAttention.setProjectId(newProject.getId()); |
|
|
userAttention.setProjectId(newProject.getId()); |
|
|
attentionDao.insertSelective(userAttention); |
|
|
attentionDao.insertSelective(userAttention); |
|
|
//添加角色
|
|
|
//添加角色
|
|
|
copyRole(oldProject.getId(), newProject.getId()); |
|
|
copyRole(oldProject.getId(), newProject.getId(),userId); |
|
|
//复制项目配置信息
|
|
|
//复制项目配置信息
|
|
|
copyProjectConfig(oldProject.getId(), newProject.getId()); |
|
|
copyProjectConfig(oldProject.getId(), newProject.getId(),userId); |
|
|
} else { |
|
|
} else { |
|
|
throw new BaseException(CodeEnum.NOT_PROJECT); |
|
|
throw new BaseException(CodeEnum.NOT_PROJECT); |
|
|
} |
|
|
} |
|
@ -672,7 +673,7 @@ public class ProjectService implements IProjectService { |
|
|
* @param oldId 被复制的项目的id |
|
|
* @param oldId 被复制的项目的id |
|
|
* @param newId 新建的项目的id |
|
|
* @param newId 新建的项目的id |
|
|
*/ |
|
|
*/ |
|
|
private void copyProjectConfig(Long oldId, Long newId) { |
|
|
private void copyProjectConfig(Long oldId, Long newId,Long userId) { |
|
|
ProShowExample showExample = new ProShowExample(); |
|
|
ProShowExample showExample = new ProShowExample(); |
|
|
showExample.createCriteria().andProjectIdEqualTo(oldId); |
|
|
showExample.createCriteria().andProjectIdEqualTo(oldId); |
|
|
List<ProShow> shows = proShowDao.selectByExample(showExample); |
|
|
List<ProShow> shows = proShowDao.selectByExample(showExample); |
|
@ -690,7 +691,7 @@ public class ProjectService implements IProjectService { |
|
|
/** |
|
|
/** |
|
|
* 复制角色 |
|
|
* 复制角色 |
|
|
*/ |
|
|
*/ |
|
|
private void copyRole(Long oldProjectId, Long newProjectId) { |
|
|
private void copyRole(Long oldProjectId, Long newProjectId,Long userId) { |
|
|
//查找被复制的项目下的二级角色
|
|
|
//查找被复制的项目下的二级角色
|
|
|
Map<Long, String> oldRoleMap = new HashMap<>(); |
|
|
Map<Long, String> oldRoleMap = new HashMap<>(); |
|
|
Map<String, Long> newRoleMap = new HashMap<>(); |
|
|
Map<String, Long> newRoleMap = new HashMap<>(); |
|
@ -719,6 +720,33 @@ public class ProjectService implements IProjectService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//当前创建人默认为项目经理
|
|
|
|
|
|
SysUser sysUser = sysUserDao.selectByPrimaryKey(userId); |
|
|
|
|
|
//添加成员
|
|
|
|
|
|
ProMember proMember = new ProMember(); |
|
|
|
|
|
proMember.setId(snowflake.nextId()); |
|
|
|
|
|
proMember.setUserId(userId); |
|
|
|
|
|
proMember.setProjectId(newProjectId); |
|
|
|
|
|
proMember.setNickname(sysUser.getNickname()); |
|
|
|
|
|
proMember.setPhone(sysUser.getPhone()); |
|
|
|
|
|
proMemberDao.insertSelective(proMember); |
|
|
|
|
|
//查找项目经理的id
|
|
|
|
|
|
ProRoleExample proRoleExample=new ProRoleExample(); |
|
|
|
|
|
proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(newProjectId); |
|
|
|
|
|
List<Long> firstPmId = proRoleDao.selectByExample(proRoleExample).stream().map(ProRole::getId).collect(Collectors.toList()); |
|
|
|
|
|
ProRoleExample secondPMExample=new ProRoleExample(); |
|
|
|
|
|
secondPMExample.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(firstPmId); |
|
|
|
|
|
List<ProRole> proRoles = proRoleDao.selectByExample(secondPMExample); |
|
|
|
|
|
List<Long> secondPM = proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
|
|
if (CollectionUtil.isNotEmpty(secondPM)){ |
|
|
|
|
|
ProMemberRole proMemberRole = new ProMemberRole(); |
|
|
|
|
|
proMemberRole.setId(snowflake.nextId()); |
|
|
|
|
|
proMemberRole.setMemberId(proMember.getId()); |
|
|
|
|
|
proMemberRole.setRoleId(secondPM.get(0)); |
|
|
|
|
|
memberRoleDao.insertSelective(proMemberRole); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//添加对谁不可见
|
|
|
//添加对谁不可见
|
|
|
copyRoleExclude(oldRoleList, oldRoleMap, newRoleMap); |
|
|
copyRoleExclude(oldRoleList, oldRoleMap, newRoleMap); |
|
|
//复制任务(包括分解任务)
|
|
|
//复制任务(包括分解任务)
|
|
@ -865,8 +893,6 @@ public class ProjectService implements IProjectService { |
|
|
newTaskSubTime.setTaskDetailId(newTaskDetailId); |
|
|
newTaskSubTime.setTaskDetailId(newTaskDetailId); |
|
|
newTaskSubTime.setBeginTime(oldTaskSubTime.getBeginTime()+timeDifference); |
|
|
newTaskSubTime.setBeginTime(oldTaskSubTime.getBeginTime()+timeDifference); |
|
|
newTaskSubTime.setEndTime(oldTaskSubTime.getEndTime()+timeDifference); |
|
|
newTaskSubTime.setEndTime(oldTaskSubTime.getEndTime()+timeDifference); |
|
|
newTaskSubTime.setRealBeginTime(oldTaskSubTime.getRealBeginTime()+timeDifference); |
|
|
|
|
|
newTaskSubTime.setRealEndTime(oldTaskSubTime.getRealEndTime()+timeDifference); |
|
|
|
|
|
newTaskSubTime.setCreatedAt(null); |
|
|
newTaskSubTime.setCreatedAt(null); |
|
|
newTaskSubTime.setUpdatedAt(null); |
|
|
newTaskSubTime.setUpdatedAt(null); |
|
|
taskSubTimeDao.insertSelective(newTaskSubTime); |
|
|
taskSubTimeDao.insertSelective(newTaskSubTime); |
|
@ -1479,6 +1505,7 @@ public class ProjectService implements IProjectService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//该用户关注新项目
|
|
|
//该用户关注新项目
|
|
|
UserAttention userAttention = new UserAttention(); |
|
|
UserAttention userAttention = new UserAttention(); |
|
|
userAttention.setId(snowflake.nextId()); |
|
|
userAttention.setId(snowflake.nextId()); |
|
@ -1486,9 +1513,9 @@ public class ProjectService implements IProjectService { |
|
|
userAttention.setProjectId(newProject.getId()); |
|
|
userAttention.setProjectId(newProject.getId()); |
|
|
attentionDao.insertSelective(userAttention); |
|
|
attentionDao.insertSelective(userAttention); |
|
|
//添加角色
|
|
|
//添加角色
|
|
|
copyRole(oldProject.getId(), newProject.getId()); |
|
|
copyRole(oldProject.getId(), newProject.getId(),userId); |
|
|
//复制项目配置信息
|
|
|
//复制项目配置信息
|
|
|
copyProjectConfig(oldProject.getId(), newProject.getId()); |
|
|
copyProjectConfig(oldProject.getId(), newProject.getId(),userId); |
|
|
//复制项目下的角色
|
|
|
//复制项目下的角色
|
|
|
return null; |
|
|
return null; |
|
|
} |
|
|
} |
|
|