Browse Source

20220401修改项目层级关系,导出再导入

contest^2
unknown 3 years ago
parent
commit
f90f3b2fac
  1. 5
      src/main/java/com/ccsens/ptccsens/bean/dto/RoleDto.java
  2. 8
      src/main/java/com/ccsens/ptccsens/persist/dao/ProRoleDao.java
  3. 16
      src/main/java/com/ccsens/ptccsens/service/ExportService.java
  4. 15
      src/main/java/com/ccsens/ptccsens/service/ImportService.java
  5. 310
      src/main/java/com/ccsens/ptccsens/service/TallService.java
  6. 2
      src/main/java/com/ccsens/ptccsens/util/BasicsCodeError.java
  7. 69
      src/main/resources/mapper_dao/ProParentTaskDao.xml
  8. 21
      src/main/resources/mapper_dao/ProRoleDao.xml
  9. 6
      src/main/resources/mapper_dao/ProTaskDetailDao.xml

5
src/main/java/com/ccsens/ptccsens/bean/dto/RoleDto.java

@ -11,10 +11,13 @@ public class RoleDto {
private Long id;
//userId
private Long userId;
//name
private String name;
public WbsMember(Long id, Long userId) {
public WbsMember(Long id, Long userId, String name) {
this.id = id;
this.userId = userId;
this.name = name;
}
}
}

8
src/main/java/com/ccsens/ptccsens/persist/dao/ProRoleDao.java

@ -90,4 +90,12 @@ public interface ProRoleDao extends ProRoleMapper {
* @return 返回角色id
*/
List<Long> allRoleByUserId(@Param("userId")Long userId);
/**
* 根据任务id查找负责人id
* @param detailId 任务id
* @param userId userId
* @return 返回负责人id
*/
Long getExecutorRoleId(@Param("detailId")Long detailId,@Param("userId")Long userId);
}

16
src/main/java/com/ccsens/ptccsens/service/ExportService.java

@ -363,6 +363,8 @@ public class ExportService implements IExportService {
for (TallWbsVo.WbsMember ignored : role.getMemberList()) {
memberNum++;
}
}else {
memberNum++;
}
}
for (int i = 0; i < pmList.size(); i++) {
@ -406,6 +408,20 @@ public class ExportService implements IExportService {
}
wbs.add(roleInfo);
}
}else {
List<PoiUtil.PoiUtilCell> roleInfo = new ArrayList<>();
roleInfo.add(new PoiUtil.PoiUtilCell("" + num++));
if(i == 0){
if(isPm){
roleInfo.add(new PoiUtil.PoiUtilCell("项目经理",1,memberNum == 0 ? 1 : memberNum));
}else {
roleInfo.add(new PoiUtil.PoiUtilCell("项目成员",1,memberNum == 0 ? 1 : memberNum));
}
}else {
roleInfo.add(new PoiUtil.PoiUtilCell());
}
roleInfo.add(new PoiUtil.PoiUtilCell(role.getRoleName(),role.getRoleId(),1,role.getMemberList().size()));
wbs.add(roleInfo);
}
}
}

15
src/main/java/com/ccsens/ptccsens/service/ImportService.java

@ -208,7 +208,7 @@ public class ImportService implements IImportService {
throw new BaseException(BasicsCodeError.WSB_NOT_PROJECT_HEADER);
}
//如果parentId不为空,添加层级关系
if(ObjectUtil.isNotNull(parentId)){
if(ObjectUtil.isNotNull(parentId) && !project.getId().equals(parentId)){
ProParentTask proParentTask = new ProParentTask();
proParentTask.setId(snowflake.nextId());
proParentTask.setTaskDetailId(project.getId());
@ -514,9 +514,13 @@ public class ImportService implements IImportService {
//添加成员
if(StrUtil.isNotEmpty(memberName) && !"/".equalsIgnoreCase(roleName)){
//如果成员名和手机号重复当做一个人来处理
RoleDto.WbsMember wbsMembers = memberMap.get(memberName + "_" + memberPhone);
// RoleDto.WbsMember wbsMembers = memberMap.get(memberName + "_" + memberPhone);
RoleDto.WbsMember wbsMembers = memberMap.get(memberPhone);
Long memberId = null;
if(ObjectUtil.isNotNull(wbsMembers)){
if(!memberName.equals(wbsMembers.getName())){
BasicsCodeError.WBS_PHONE_REPEAT.addMsg(memberSheet.getSheetName(),i+1,stakeholderName);
}
memberId = wbsMembers.getId();
}
if(ObjectUtil.isNull(memberId)){
@ -545,8 +549,9 @@ public class ImportService implements IImportService {
proMember.setProjectId(project.getId());
proMember.setUserId(userId);
memberDao.insertReplace(proMember);
RoleDto.WbsMember member = new RoleDto.WbsMember(proMember.getId(),userId);
memberMap.put(memberName+"_"+memberPhone,member);
RoleDto.WbsMember member = new RoleDto.WbsMember(proMember.getId(),userId,proMember.getName());
// memberMap.put(memberName+"_"+memberPhone,member);
memberMap.put(memberPhone,member);
memberId = proMember.getId();
//添加奖惩干系人
if(StrUtil.isNotEmpty(stakeholderName) && !"/".equalsIgnoreCase(roleName)){
@ -672,7 +677,7 @@ public class ImportService implements IImportService {
taskPluginExample.createCriteria().andTaskDetailIdIn(allTaskId);
proTaskPluginDao.updateByExampleSelective(taskPlugin,taskPluginExample);
//删除任务关系表
allTaskId.add(project.getId());
// allTaskId.add(project.getId());
ProParentTask parentTask = new ProParentTask();
parentTask.setRecStatus((byte)2);
ProParentTaskExample parentTaskExample = new ProParentTaskExample();

310
src/main/java/com/ccsens/ptccsens/service/TallService.java

@ -110,15 +110,15 @@ public class TallService implements ITallService {
@SneakyThrows
@Override
public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params,Long parentId) {
public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params, Long parentId) {
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
if(ObjectUtil.isNull(user)){
if (ObjectUtil.isNull(user)) {
throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
}
String ext = FileUtil.extName(params.getOriginalFilename());
if(StrUtil.isEmpty(ext) || !Constant.WbsExcel.WBS_FILE_FORMAT.contains(ext)){
if (StrUtil.isEmpty(ext) || !Constant.WbsExcel.WBS_FILE_FORMAT.contains(ext)) {
throw new BaseException(BasicsCodeError.FILE_FORMAT_ERROR);
}
//文件路径
@ -134,19 +134,19 @@ public class TallService implements ITallService {
FileUtil.writeFromStream(params.getInputStream(), fullPath);
//导入数据库
return importService.importWbs(fullPath,user.getId(),parentId);
return importService.importWbs(fullPath, user.getId(), parentId);
}
private ProUser getUserByToken(String token) {
//根据token获取用户信息
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
if (ObjectUtil.isNull(userByToken)) {
throw new BaseException(CodeEnum.NOT_LOGIN);
}
log.info("token获取的用户信息:{}", userByToken);
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
if (ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())) {
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
return user;
@ -157,7 +157,7 @@ public class TallService implements ITallService {
public TallWbsVo.WbsPath exportWbs(String token, TallProjectDto.ProjectById param) {
//查询下项目信息
TallWbsVo.WbsProjectInfo wbsProjectInfo = proProjectDao.getWbsProjectId(param.getProjectId());
if(ObjectUtil.isNull(wbsProjectInfo)){
if (ObjectUtil.isNull(wbsProjectInfo)) {
throw new BaseException(BasicsCodeError.PROJECT_NOT_FOUND);
}
//查询一级任务信息
@ -172,14 +172,14 @@ public class TallService implements ITallService {
//查询角色成员信息
TallWbsVo.WbsRoleInfo wbsRoleInfo = new TallWbsVo.WbsRoleInfo();
//查询项目经理的角色信息
List<TallWbsVo.WbsRole> pmList = proRoleDao.getWbsRoleInfo(param.getProjectId(),0);
List<TallWbsVo.WbsRole> pmList = proRoleDao.getWbsRoleInfo(param.getProjectId(), 0);
//查询项目成员的角色信息
List<TallWbsVo.WbsRole> roleList = proRoleDao.getWbsRoleInfo(param.getProjectId(),1);
List<TallWbsVo.WbsRole> roleList = proRoleDao.getWbsRoleInfo(param.getProjectId(), 1);
wbsRoleInfo.setPmList(pmList);
wbsRoleInfo.setRoleList(roleList);
//生成excel数据并导入文件
String url = exportService.exportWbs(wbsProjectInfo,wbsTaskInfo,wbsRoleInfo);
String url = exportService.exportWbs(wbsProjectInfo, wbsTaskInfo, wbsRoleInfo);
TallWbsVo.WbsPath wbsPath = new TallWbsVo.WbsPath();
wbsPath.setUrl(url);
@ -189,7 +189,7 @@ public class TallService implements ITallService {
@Override
public TallProjectVo.ProjectInfo findProjectById(String header, TallProjectDto.ProjectById params) {
TallProjectVo.ProjectInfo projectById = proProjectDao.findProjectById(params.getProjectId());
if (ObjectUtil.isNull(projectById)){
if (ObjectUtil.isNull(projectById)) {
throw new BaseException(BasicsCodeError.PROJECT_NOT_FOUND);
}
return projectById;
@ -200,15 +200,15 @@ public class TallService implements ITallService {
//TODO 暂时查询全部,无论是否查到user
//查找所有没有上级的项目,作为MWBS
List<TallProjectVo.ProjectInfo> mWbs = taskDetailDao.queryMwbs(param.getStartTime(),param.getEndTime(),null);
if(CollectionUtil.isNotEmpty(mWbs)){
List<TallProjectVo.ProjectInfo> mWbs = taskDetailDao.queryMwbs(param.getStartTime(), param.getEndTime(), null);
if (CollectionUtil.isNotEmpty(mWbs)) {
mWbs.forEach(m -> {
//给下项目添加域信息和url
m.setUrl(PropUtil.notGatewayUrl);
m.setBusinessCode(Constant.BUSINESS_CODE);
//分别查找mwbs下的子pwbs
List<TallProjectVo.ProjectInfo> pWbs = taskDetailDao.queryPwbs(param.getStartTime(),param.getEndTime(),null,m.getId());
if(CollectionUtil.isNotEmpty(pWbs)){
List<TallProjectVo.ProjectInfo> pWbs = taskDetailDao.queryPwbs(param.getStartTime(), param.getEndTime(), null, m.getId());
if (CollectionUtil.isNotEmpty(pWbs)) {
pWbs.forEach(p -> {
//给下项目添加域信息和url
p.setUrl(PropUtil.notGatewayUrl);
@ -233,24 +233,24 @@ public class TallService implements ITallService {
List<TallRoleVo.RoleInfo> invisibleList = new ArrayList<>();
//查询当前用户在项目下的角色,没有则算作关注者
List<ProRole> userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),user == null ? null : user.getId());
List<ProRole> userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(), user == null ? null : user.getId());
//查询用户可见的角色
List<TallRoleVo.RoleInfo> roleInfoList;
if(CollectionUtil.isNotEmpty(userRoleList)){
if (CollectionUtil.isNotEmpty(userRoleList)) {
//不是关注者,查询可见的角色(完全屏蔽才不可见)
roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(),userRoleList);
}else {
roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(), userRoleList);
} else {
//是关注者查询可见的角色(未设置过对谁不可见信息的角色)
roleInfoList = proRoleDao.attentionQueryRole(param.getProjectId());
}
//查询配置信息
List<Long> showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),user == null ? null : user.getId());
if(CollectionUtil.isNotEmpty(showRoleList)){
List<Long> showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(), user == null ? null : user.getId());
if (CollectionUtil.isNotEmpty(showRoleList)) {
for (Long showRoleId : showRoleList) {
//循环配置内的信息去匹配角色列表,来确定角色该放在什么地方
for (TallRoleVo.RoleInfo roleInfo : roleInfoList) {
if(showRoleId.equals(roleInfo.getId())){
if (showRoleId.equals(roleInfo.getId())) {
//和配置内的信息相同则放入展示角色列表
visibleList.add(roleInfo);
//同时删除数组内的信息
@ -262,7 +262,7 @@ public class TallService implements ITallService {
}
//剩下的角色全部放在不可见角色列表
invisibleList.addAll(roleInfoList);
}else {
} else {
//没有配置信息则按默认规则
if (CollectionUtil.isNotEmpty(roleInfoList)) {
//循环所有角色
@ -280,7 +280,7 @@ public class TallService implements ITallService {
//不是用户所属的角色,但展示角色列表数量不足设置的数量
//展示数量等于0,展示全部
if(param.getNum() == 0){
if (param.getNum() == 0) {
visibleList.add(roleInfo);
continue;
}
@ -316,7 +316,7 @@ public class TallService implements ITallService {
queryCheckerOfTask(permanentGlobalTask);
//查询插件展示信息
queryPluginShow(permanentGlobalTask,user == null ? null : user.getId());
queryPluginShow(permanentGlobalTask, user == null ? null : user.getId());
return permanentGlobalTask;
}
@ -335,7 +335,7 @@ public class TallService implements ITallService {
queryCheckerOfTask(globalTask);
//查询插件展示信息
queryPluginShow(globalTask,user == null ? null : user.getId());
queryPluginShow(globalTask, user == null ? null : user.getId());
return globalTask;
}
@ -455,6 +455,7 @@ public class TallService implements ITallService {
}
}
}
/**
* 创建面板
*
@ -474,16 +475,18 @@ public class TallService implements ITallService {
/**
* 查询任务下的检查人
*
* @param taskList 任务列表
*/
public void queryCheckerOfTask(List<TallTaskVo.QueryTask> taskList) {
if (CollectionUtil.isNotEmpty(taskList)) {
for (TallTaskVo.QueryTask queryTask : taskList) {
List<TallTaskVo.CheckerOfTask> checkerList = roleTaskDao.queryCheckerOfTask(queryTask.getDetailId());
List<TallTaskVo.CheckerOfTask> checkerList = roleTaskDao.queryCheckerOfTask(queryTask.getDetailId());
queryTask.setCheckerList(checkerList);
}
}
}
/**
* 向空面板里插入插件详情
*
@ -502,11 +505,12 @@ public class TallService implements ITallService {
}
queryTask.setPlugins(plugins);
}
/**
* 根据插件的最大行列创建面板
*
* @param plugins 插件列表
* @param queryTask 任务
* @param plugins 插件列表
* @param queryTask 任务
*/
public void createPanelByPlugin(List<List<TallTaskVo.TaskPluginInfo>> plugins, TallTaskVo.QueryTask queryTask) {
List<TallTaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getId());
@ -583,15 +587,15 @@ public class TallService implements ITallService {
// return null;
// }
private void queryPluginShow(List<TallTaskVo.QueryTask> regularTask,Long userId) {
if(CollectionUtil.isEmpty(regularTask)){
private void queryPluginShow(List<TallTaskVo.QueryTask> regularTask, Long userId) {
if (CollectionUtil.isEmpty(regularTask)) {
return;
}
for (TallTaskVo.QueryTask queryTask : regularTask) {
if(CollectionUtil.isNotEmpty(queryTask.getPlugins())){
if (CollectionUtil.isNotEmpty(queryTask.getPlugins())) {
for (List<TallTaskVo.TaskPluginInfo> plugins : queryTask.getPlugins()) {
if(CollectionUtil.isNotEmpty(plugins)){
if (CollectionUtil.isNotEmpty(plugins)) {
for (TallTaskVo.TaskPluginInfo plugin : plugins) {
System.out.println("====" + plugin);
//TODO 判断插件类型,暂时一个个的判断,之后应该是统一的接口
@ -621,23 +625,23 @@ public class TallService implements ITallService {
//查询用的时间
Long queryTime = System.currentTimeMillis();
if(ObjectUtil.isNotNull(param.getTaskId())){
if (ObjectUtil.isNotNull(param.getTaskId())) {
//根据任务id查找任务,以任务的开始时间当做查询的时间点
ProTaskSub proTaskSub = proTaskSubDao.selectByPrimaryKey(param.getTaskId());
if(ObjectUtil.isNotNull(proTaskSub) && proTaskSub.getPlanStartTime() != 0L){
if (ObjectUtil.isNotNull(proTaskSub) && proTaskSub.getPlanStartTime() != 0L) {
queryTime = proTaskSub.getPlanStartTime();
}
}else {
if(ObjectUtil.isNotNull(param.getTimeNode())){
} else {
if (ObjectUtil.isNotNull(param.getTimeNode())) {
//没有任务id则根据时间基准线查询当前正在进行的任务(如果多个则选择时间最早的一个)
Long startTime = proTaskSubDao.getTimeByProgressTask(param.getTimeNode(),param.getRoleId());
if(ObjectUtil.isNotNull(startTime)){
Long startTime = proTaskSubDao.getTimeByProgressTask(param.getTimeNode(), param.getRoleId());
if (ObjectUtil.isNotNull(startTime)) {
queryTime = startTime;
}
}else {
} else {
//如果没有时间基准线则按当前时间查询查询任务
Long startTime = proTaskSubDao.getTimeByProgressTask(System.currentTimeMillis(),param.getRoleId());
if(ObjectUtil.isNotNull(startTime)){
Long startTime = proTaskSubDao.getTimeByProgressTask(System.currentTimeMillis(), param.getRoleId());
if (ObjectUtil.isNotNull(startTime)) {
queryTime = startTime;
}
}
@ -650,11 +654,11 @@ public class TallService implements ITallService {
// }
//获取任务列表
PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<TallTaskVo.QueryTask> regularTask = taskDetailDao.pageQueryRegularTask(0, null, param.getRoleId(),queryTime,param.getTimeUnit(),param.getQueryType(),param.getTaskId(),param.getTriggerType());
PageHelper.startPage(param.getPageNum(), param.getPageSize());
List<TallTaskVo.QueryTask> regularTask = taskDetailDao.pageQueryRegularTask(0, null, param.getRoleId(), queryTime, param.getTimeUnit(), param.getQueryType(), param.getTaskId(), param.getTriggerType());
PageInfo<TallTaskVo.QueryTask> queryTaskPageInfo = new PageInfo<>(regularTask);
if(CollectionUtil.isNotEmpty(queryTaskPageInfo.getList())){
if(param.getQueryType() == 0){
if (CollectionUtil.isNotEmpty(queryTaskPageInfo.getList())) {
if (param.getQueryType() == 0) {
//向上查找任务顺序是倒的,需要改成正序
List<TallTaskVo.QueryTask> taskList = new ArrayList<>();
for (int i = queryTaskPageInfo.getList().size() - 1; i >= 0; i--) {
@ -667,7 +671,7 @@ public class TallService implements ITallService {
//查询任务下的检查人
queryCheckerOfTask(queryTaskPageInfo.getList());
//查询插件展示信息
queryPluginShow(queryTaskPageInfo.getList(),user == null ? null : user.getId());
queryPluginShow(queryTaskPageInfo.getList(), user == null ? null : user.getId());
}
return queryTaskPageInfo;
@ -678,7 +682,7 @@ public class TallService implements ITallService {
List<TallTaskVo.QueryTask> queryTaskList = new ArrayList<>();
//通过手机号查找服务内的用户
ProUser user = userDao.getUserIdByPhone(param.getPhone());
if(ObjectUtil.isNull(user)){
if (ObjectUtil.isNull(user)) {
return queryTaskList;
}
//查找用户所属的成员,查找所属的角色
@ -686,31 +690,35 @@ public class TallService implements ITallService {
//根据时间基准线查询当前正在进行的任务(如果多个则选择时间最早的一个)
Long queryTime = param.getTimeNode();
if(CollectionUtil.isNotEmpty(roleList)) {
if (CollectionUtil.isNotEmpty(roleList)) {
Long startTime = proTaskSubDao.getTimeByProgressTaskAndRoleList(param.getTimeNode(), roleList);
if (ObjectUtil.isNotNull(startTime)) {
queryTime = startTime;
}
}
if(CollectionUtil.isNotEmpty(roleList)){
if (CollectionUtil.isNotEmpty(roleList)) {
//通过角色和时间等信息,查找任务,如果传入的参数有任务id且code符合当前服务,则排除该任务
String taskId = Constant.BUSINESS_CODE.equals(param.getBusinessCode()) ? param.getTaskId() : null;
PageHelper.startPage(param.getPageNum(),param.getPageSize());
queryTaskList = taskDetailDao.getAllTaskByRoleList(roleList,queryTime,param.getTimeUnit(),param.getQueryType(),taskId);
PageHelper.startPage(param.getPageNum(), param.getPageSize());
queryTaskList = taskDetailDao.getAllTaskByRoleList(roleList, queryTime, param.getTimeUnit(), param.getQueryType(), taskId);
if(CollectionUtil.isNotEmpty(queryTaskList)){
queryTaskList.forEach(queryTask -> {
Long roleId = roleDao.getExecutorRoleId(queryTask.getDetailId(),user.getId());
queryTask.setExecutorRoleId(roleId);
});
}
}
return queryTaskList;
}
@Override
public void deleteProject(String token, TallProjectDto.ProjectById params) {
//查找用户
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
if(ObjectUtil.isNull(user)){
if (ObjectUtil.isNull(user)) {
throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
}
//判断用户是否是项目经理
@ -728,136 +736,138 @@ public class TallService implements ITallService {
ProTaskSubExample taskSubExample = new ProTaskSubExample();
taskSubExample.createCriteria().andTaskDetailIdEqualTo(params.getProjectId());
ProTaskSub taskSub = new ProTaskSub();
taskSub.setRecStatus((byte)2);
proTaskSubDao.updateByExampleSelective(taskSub,taskSubExample);
taskSub.setRecStatus((byte) 2);
proTaskSubDao.updateByExampleSelective(taskSub, taskSubExample);
//删除之前的版本信息
ProTaskVersion taskVersion = new ProTaskVersion();
taskVersion.setRecStatus((byte)2);
taskVersion.setRecStatus((byte) 2);
ProTaskVersionExample taskVersionExample = new ProTaskVersionExample();
taskVersionExample.createCriteria().andTaskDetailIdEqualTo(params.getProjectId());
taskVersionDao.updateByExampleSelective(taskVersion,taskVersionExample);
taskVersionDao.updateByExampleSelective(taskVersion, taskVersionExample);
//删除项目标签相关的
LabelBusiness labelBusiness = new LabelBusiness();
labelBusiness.setRecStatus((byte)2);
labelBusiness.setRecStatus((byte) 2);
LabelBusinessExample labelBusinessExample = new LabelBusinessExample();
labelBusinessExample.createCriteria().andBusinessIdEqualTo(params.getProjectId());
labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample);
labelBusinessDao.updateByExampleSelective(labelBusiness, labelBusinessExample);
//删除项目分享表
ProTaskShare taskShare = new ProTaskShare();
taskShare.setRecStatus((byte)2);
taskShare.setRecStatus((byte) 2);
ProTaskShareExample taskShareExample = new ProTaskShareExample();
taskShareExample.createCriteria().andOriginalProjectIdEqualTo(params.getProjectId());
taskShareMapper.updateByExampleSelective(taskShare,taskShareExample);
taskShareMapper.updateByExampleSelective(taskShare, taskShareExample);
//删除角色和成员
List<Long> roleIdList = roleDao.queryRoleListOfProject(project.getId());
ProRole role = new ProRole();
role.setRecStatus((byte)2);
role.setRecStatus((byte) 2);
ProRoleExample roleExample = new ProRoleExample();
roleExample.createCriteria().andIdIn(roleIdList);
roleDao.updateByExampleSelective(role,roleExample);
roleDao.updateByExampleSelective(role, roleExample);
List<Long> memberIdList = memberDao.queryMembersOfProject(project.getId());
ProMember member = new ProMember();
member.setRecStatus((byte)2);
member.setRecStatus((byte) 2);
ProMemberExample memberExample = new ProMemberExample();
memberExample.createCriteria().andIdIn(memberIdList);
memberDao.updateByExampleSelective(member,memberExample);
memberDao.updateByExampleSelective(member, memberExample);
//删除奖惩干系人
ProMemberStakeholder memberStakeholder = new ProMemberStakeholder();
memberStakeholder.setRecStatus((byte)2);
memberStakeholder.setRecStatus((byte) 2);
ProMemberStakeholderExample memberStakeholderExample = new ProMemberStakeholderExample();
memberStakeholderExample.createCriteria().andMemeberIdIn(memberIdList);
memberStakeholderDao.updateByExampleSelective(memberStakeholder,memberStakeholderExample);
memberStakeholderDao.updateByExampleSelective(memberStakeholder, memberStakeholderExample);
//删除对谁不可见
ProRoleRepulsion roleRepulsion = new ProRoleRepulsion();
roleRepulsion.setRecStatus((byte)2);
roleRepulsion.setRecStatus((byte) 2);
ProRoleRepulsionExample roleRepulsionExample = new ProRoleRepulsionExample();
roleRepulsionExample.createCriteria().andRoleIdIn(roleIdList);
roleRepulsionDao.updateByExampleSelective(roleRepulsion,roleRepulsionExample);
roleRepulsionDao.updateByExampleSelective(roleRepulsion, roleRepulsionExample);
//删除角色成员关联
ProRoleMember roleMember = new ProRoleMember();
roleMember.setRecStatus((byte)2);
roleMember.setRecStatus((byte) 2);
ProRoleMemberExample roleMemberExample = new ProRoleMemberExample();
roleMemberExample.createCriteria().andRoleIdIn(roleIdList);
roleMemberDao.updateByExampleSelective(roleMember,roleMemberExample);
roleMemberDao.updateByExampleSelective(roleMember, roleMemberExample);
//删除角色展示
ProRoleShow roleShow = new ProRoleShow();
roleShow.setRecStatus((byte)2);
roleShow.setRecStatus((byte) 2);
ProRoleShowExample roleShowExample = new ProRoleShowExample();
roleShowExample.createCriteria().andRoleIdIn(roleIdList);
roleShowMapper.updateByExampleSelective(roleShow,roleShowExample);
roleShowMapper.updateByExampleSelective(roleShow, roleShowExample);
//根据项目id查询所有一二级任务详情id 删除任务相关
List<Long> allTaskId = parentTaskDao.queryAllTaskIdByProjectId(params.getProjectId());
//删除所有的任务详情
ProTaskDetail taskDetail = new ProTaskDetail();
taskDetail.setRecStatus((byte)2);
ProTaskDetailExample taskDetailExample = new ProTaskDetailExample();
taskDetailExample.createCriteria().andIdIn(allTaskId);
taskDetailDao.updateByExampleSelective(taskDetail,taskDetailExample);
//删除所有的分解任务
ProTaskSub taskSub1 = new ProTaskSub();
taskSub1.setRecStatus((byte)2);
ProTaskSubExample taskSubExample1 = new ProTaskSubExample();
taskSubExample1.createCriteria().andTaskDetailIdIn(allTaskId);
List<ProTaskSub> taskSubList = proTaskSubDao.selectByExample(taskSubExample1);
List<Long> allSubTaskId = taskSubList.stream().map(ProTaskSub::getId).collect(Collectors.toList());
proTaskSubDao.updateByExampleSelective(taskSub1,taskSubExample1);
//删除所有的任务标签
LabelBusiness labelBusiness1 = new LabelBusiness();
labelBusiness1.setRecStatus((byte)2);
LabelBusinessExample labelBusinessExample1 = new LabelBusinessExample();
labelBusinessExample1.createCriteria().andBusinessIdIn(allTaskId);
labelBusinessDao.updateByExampleSelective(labelBusiness1,labelBusinessExample1);
//删除任务角色关联表
ProRoleTask roleTask = new ProRoleTask();
roleTask.setRecStatus((byte)2);
ProRoleTaskExample roleTaskExample = new ProRoleTaskExample();
roleTaskExample.createCriteria().andTaskIdIn(allTaskId);
roleTaskDao.updateByExampleSelective(roleTask,roleTaskExample);
//删除任务插件关联信息
ProTaskPlugin taskPlugin = new ProTaskPlugin();
taskPlugin.setRecStatus((byte)2);
ProTaskPluginExample taskPluginExample = new ProTaskPluginExample();
taskPluginExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskPluginDao.updateByExampleSelective(taskPlugin,taskPluginExample);
//删除任务关系表
allTaskId.add(project.getId());
ProParentTask parentTask = new ProParentTask();
parentTask.setRecStatus((byte)2);
ProParentTaskExample parentTaskExample = new ProParentTaskExample();
parentTaskExample.createCriteria().andTaskDetailIdIn(allTaskId);
parentTaskDao.updateByExampleSelective(parentTask,parentTaskExample);
//删除任务流转表
ProTaskFlow taskFlow = new ProTaskFlow();
taskFlow.setRecStatus((byte)2);
ProTaskFlowExample taskFlowExample = new ProTaskFlowExample();
taskFlowExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskFlowMapper.updateByExampleSelective(taskFlow,taskFlowExample);
//删除任务上下道工序
ProTaskProcess taskProcess = new ProTaskProcess();
taskProcess.setRecStatus((byte)2);
ProTaskProcessExample taskProcessExample = new ProTaskProcessExample();
taskProcessExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskProcessMapper.updateByExampleSelective(taskProcess,taskProcessExample);
//删除任务状态记录表 分解任务id
ProTaskStatusRecord taskStatusRecord = new ProTaskStatusRecord();
taskStatusRecord.setRecStatus((byte)2);
ProTaskStatusRecordExample taskStatusRecordExample = new ProTaskStatusRecordExample();
taskStatusRecordExample.createCriteria().andTaskSubIdIn(allSubTaskId);
taskStatusRecordMapper.updateByExampleSelective(taskStatusRecord,taskStatusRecordExample);
//删除任务通知表
ProTaskNotify taskNotify = new ProTaskNotify();
taskNotify.setRecStatus((byte)2);
ProTaskNotifyExample taskNotifyExample = new ProTaskNotifyExample();
taskNotifyExample.createCriteria().andTaskDetailIdIn(allTaskId);
proTaskNotifyMapper.updateByExampleSelective(taskNotify,taskNotifyExample);
//删除任务面板信息
ProTaskPanelInfo taskPanelInfo = new ProTaskPanelInfo();
taskPanelInfo.setRecStatus((byte)2);
ProTaskPanelInfoExample taskPanelInfoExample = new ProTaskPanelInfoExample();
taskPanelInfoExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskPanelInfoMapper.updateByExampleSelective(taskPanelInfo,taskPanelInfoExample);
if (CollectionUtil.isNotEmpty(allTaskId)) {
//删除所有的任务详情
ProTaskDetail taskDetail = new ProTaskDetail();
taskDetail.setRecStatus((byte) 2);
ProTaskDetailExample taskDetailExample = new ProTaskDetailExample();
taskDetailExample.createCriteria().andIdIn(allTaskId);
taskDetailDao.updateByExampleSelective(taskDetail, taskDetailExample);
//删除所有的分解任务
ProTaskSub taskSub1 = new ProTaskSub();
taskSub1.setRecStatus((byte) 2);
ProTaskSubExample taskSubExample1 = new ProTaskSubExample();
taskSubExample1.createCriteria().andTaskDetailIdIn(allTaskId);
List<ProTaskSub> taskSubList = proTaskSubDao.selectByExample(taskSubExample1);
List<Long> allSubTaskId = taskSubList.stream().map(ProTaskSub::getId).collect(Collectors.toList());
proTaskSubDao.updateByExampleSelective(taskSub1, taskSubExample1);
//删除所有的任务标签
LabelBusiness labelBusiness1 = new LabelBusiness();
labelBusiness1.setRecStatus((byte) 2);
LabelBusinessExample labelBusinessExample1 = new LabelBusinessExample();
labelBusinessExample1.createCriteria().andBusinessIdIn(allTaskId);
labelBusinessDao.updateByExampleSelective(labelBusiness1, labelBusinessExample1);
//删除任务角色关联表
ProRoleTask roleTask = new ProRoleTask();
roleTask.setRecStatus((byte) 2);
ProRoleTaskExample roleTaskExample = new ProRoleTaskExample();
roleTaskExample.createCriteria().andTaskIdIn(allTaskId);
roleTaskDao.updateByExampleSelective(roleTask, roleTaskExample);
//删除任务插件关联信息
ProTaskPlugin taskPlugin = new ProTaskPlugin();
taskPlugin.setRecStatus((byte) 2);
ProTaskPluginExample taskPluginExample = new ProTaskPluginExample();
taskPluginExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskPluginDao.updateByExampleSelective(taskPlugin, taskPluginExample);
//删除任务关系表
allTaskId.add(project.getId());
ProParentTask parentTask = new ProParentTask();
parentTask.setRecStatus((byte) 2);
ProParentTaskExample parentTaskExample = new ProParentTaskExample();
parentTaskExample.createCriteria().andTaskDetailIdIn(allTaskId);
parentTaskDao.updateByExampleSelective(parentTask, parentTaskExample);
//删除任务流转表
ProTaskFlow taskFlow = new ProTaskFlow();
taskFlow.setRecStatus((byte) 2);
ProTaskFlowExample taskFlowExample = new ProTaskFlowExample();
taskFlowExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskFlowMapper.updateByExampleSelective(taskFlow, taskFlowExample);
//删除任务上下道工序
ProTaskProcess taskProcess = new ProTaskProcess();
taskProcess.setRecStatus((byte) 2);
ProTaskProcessExample taskProcessExample = new ProTaskProcessExample();
taskProcessExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskProcessMapper.updateByExampleSelective(taskProcess, taskProcessExample);
//删除任务状态记录表 分解任务id
ProTaskStatusRecord taskStatusRecord = new ProTaskStatusRecord();
taskStatusRecord.setRecStatus((byte) 2);
ProTaskStatusRecordExample taskStatusRecordExample = new ProTaskStatusRecordExample();
taskStatusRecordExample.createCriteria().andTaskSubIdIn(allSubTaskId);
taskStatusRecordMapper.updateByExampleSelective(taskStatusRecord, taskStatusRecordExample);
//删除任务通知表
ProTaskNotify taskNotify = new ProTaskNotify();
taskNotify.setRecStatus((byte) 2);
ProTaskNotifyExample taskNotifyExample = new ProTaskNotifyExample();
taskNotifyExample.createCriteria().andTaskDetailIdIn(allTaskId);
proTaskNotifyMapper.updateByExampleSelective(taskNotify, taskNotifyExample);
//删除任务面板信息
ProTaskPanelInfo taskPanelInfo = new ProTaskPanelInfo();
taskPanelInfo.setRecStatus((byte) 2);
ProTaskPanelInfoExample taskPanelInfoExample = new ProTaskPanelInfoExample();
taskPanelInfoExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskPanelInfoMapper.updateByExampleSelective(taskPanelInfo, taskPanelInfoExample);
}
}
@Override
@ -865,18 +875,18 @@ public class TallService implements ITallService {
//获取用户信息
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
if(ObjectUtil.isNull(user)){
if (ObjectUtil.isNull(user)) {
throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
}
//检查移动的项目是否存在
ProTaskDetail moveProject = taskDetailDao.selectByPrimaryKey(params.getMoveProjectId());
if(ObjectUtil.isNull(moveProject)){
if (ObjectUtil.isNull(moveProject)) {
throw new BaseException(BasicsCodeError.PROJECT_NOT_FOUND);
}
//如果目标项目id不为空,检查项目是否存在
if(ObjectUtil.isNotNull(params.getTargetProjectId())){
if (ObjectUtil.isNotNull(params.getTargetProjectId())) {
ProTaskDetail targetProject = taskDetailDao.selectByPrimaryKey(params.getTargetProjectId());
if(ObjectUtil.isNull(targetProject)){
if (ObjectUtil.isNull(targetProject)) {
throw new BaseException(BasicsCodeError.PROJECT_NOT_FOUND);
}
}
@ -890,14 +900,14 @@ public class TallService implements ITallService {
ProParentTaskExample parentTaskExample = new ProParentTaskExample();
parentTaskExample.createCriteria().andTaskDetailIdEqualTo(params.getMoveProjectId());
List<ProParentTask> proParentTasks = parentTaskDao.selectByExample(parentTaskExample);
if(CollectionUtil.isNotEmpty(proParentTasks)){
if (CollectionUtil.isNotEmpty(proParentTasks)) {
proParentTasks.forEach(proParentTask -> {
proParentTask.setRecStatus((byte) 2);
parentTaskDao.updateByPrimaryKeySelective(proParentTask);
});
}
//重新添加
if(ObjectUtil.isNotNull(params.getTargetProjectId())){
if (ObjectUtil.isNotNull(params.getTargetProjectId())) {
ProParentTask proParentTask = new ProParentTask();
proParentTask.setId(snowflake.nextId());
proParentTask.setTaskDetailId(params.getMoveProjectId());

2
src/main/java/com/ccsens/ptccsens/util/BasicsCodeError.java

@ -55,6 +55,8 @@ public class BasicsCodeError extends CodeError {
public static final Code NOT_CLOCKING_IN = new Code(536,"打卡记录不存在", true);
public static final Code NOT_CLOCKING_IN_REMARK = new Code(537,"请填写补卡原因", true);
public static final Code WBS_PHONE_REPEAT = new Code(538,"手机号和成员名不匹配", true);
}

69
src/main/resources/mapper_dao/ProParentTaskDao.xml

@ -31,29 +31,52 @@
<!-- </select>-->
<select id="queryAllTaskIdByProjectId" resultType="java.lang.Long">
SELECT
task_detail_id
FROM
t_pro_parent_task
WHERE
rec_status = 0
AND parent_task_detail_id = #{projectId}
UNION ALL
SELECT
task_detail_id
FROM
t_pro_parent_task
WHERE
rec_status = 0
AND parent_task_detail_id IN (
SELECT
task_detail_id
FROM
t_pro_parent_task
WHERE
rec_status = 0
AND parent_task_detail_id = #{projectId}
)
select
*
from
(
SELECT
t.task_detail_id
FROM
t_pro_parent_task t,
t_label_business b,
t_label l
WHERE
t.parent_task_detail_id = #{projectId}
and t.task_detail_id = b.business_id
and l.id = b.label_id
and l.id != 13
and t.rec_status = 0
and b.rec_status = 0
and l.rec_status = 0
UNION ALL
SELECT
task_detail_id
FROM
t_pro_parent_task
WHERE
rec_status = 0
AND parent_task_detail_id IN (
SELECT
t.task_detail_id
FROM
t_pro_parent_task t,
t_label_business b,
t_label l
WHERE
t.parent_task_detail_id = #{projectId}
and t.task_detail_id = b.business_id
and l.id = b.label_id
and l.id != 13
and t.rec_status = 0
and b.rec_status = 0
and l.rec_status = 0
)
)a
GROUP BY a.task_detail_id
</select>
</mapper>

21
src/main/resources/mapper_dao/ProRoleDao.xml

@ -250,5 +250,26 @@
and d.rec_status = 0
GROUP BY r.id
</select>
<select id="getExecutorRoleId" resultType="java.lang.Long">
SELECT
rt.role_id
FROM
t_pro_task_detail d,
t_pro_role_task rt,
t_pro_role_member rm,
t_pro_member m
WHERE
d.id = rt.task_id
and rt.role_id = rm.role_id
and rt.role_duty = 0
and rm.member_id = m.id
and m.user_id = #{userId}
and d.id = #{detailId}
and d.rec_status = 0
and rt.rec_status = 0
and rm.rec_status = 0
and m.rec_status = 0
limit 1
</select>
</mapper>

6
src/main/resources/mapper_dao/ProTaskDetailDao.xml

@ -553,6 +553,7 @@
<if test="triggerType == 0 and taskId != null">
and ts.id != #{taskId}
</if>
GROUP BY ts.id
) AS alltask
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id
@ -674,9 +675,7 @@
ts.real_start_time AS realStart,
ts.real_duration,
ts.task_status AS process,
r.project_id as projectId,
rt.role_id as executorRoleId
r.project_id as projectId
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
@ -711,6 +710,7 @@
<if test="taskId != null">
and ts.id != #{taskId}
</if>
GROUP BY ts.id
) AS alltask
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id

Loading…
Cancel
Save