From b37ddfe423a8b93f2fab000d60ddc4b98b7dfb78 Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Fri, 13 Aug 2021 17:17:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=A1=B9=E7=9B=AEservice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/service/IProjectService.java | 7 + .../ccsens/common/service/ProjectService.java | 159 ++++++++++++++++++ 2 files changed, 166 insertions(+) diff --git a/common/src/main/java/com/ccsens/common/service/IProjectService.java b/common/src/main/java/com/ccsens/common/service/IProjectService.java index 49cd5947..bea80fb9 100644 --- a/common/src/main/java/com/ccsens/common/service/IProjectService.java +++ b/common/src/main/java/com/ccsens/common/service/IProjectService.java @@ -38,4 +38,11 @@ public interface IProjectService { * @return 子项目信息列表 */ List findSonProject(CProjectDto.FindSonProject param, Long userId); + + /** + * 删除项目及相关配置 + * @param param 项目id + * @param userId 用户id + */ + void deleteProjectById(CProjectDto.ProjectById param, Long userId); } diff --git a/common/src/main/java/com/ccsens/common/service/ProjectService.java b/common/src/main/java/com/ccsens/common/service/ProjectService.java index becfa5e3..6fc18ad0 100644 --- a/common/src/main/java/com/ccsens/common/service/ProjectService.java +++ b/common/src/main/java/com/ccsens/common/service/ProjectService.java @@ -10,6 +10,10 @@ import com.ccsens.common.bean.po.*; import com.ccsens.common.bean.vo.CProjectVo; import com.ccsens.common.bean.vo.CTaskVo; import com.ccsens.common.persist.dao.*; +import com.ccsens.common.persist.mapper.ProMemberStakeholderMapper; +import com.ccsens.common.persist.mapper.ProRoleShowMapper; +import com.ccsens.common.persist.mapper.ProTaskShareMapper; +import com.ccsens.common.persist.mapper.ProTaskStatusRecordMapper; import com.ccsens.common.util.CommonCodeError; import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; @@ -19,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** @@ -65,6 +70,14 @@ public class ProjectService implements IProjectService{ private ProRoleMemberDao roleMemberDao; @Resource private UserDao userDao; + @Resource + private ProMemberStakeholderMapper memberStakeholderMapper; + @Resource + private ProTaskStatusRecordMapper taskStatusRecordMapper; + @Resource + private ProTaskShareMapper taskShareMapper; + @Resource + private ProRoleShowMapper roleShowMapper; @Override public CProjectVo.ProjectInfo findProjectById(CProjectDto.ProjectById param, Long userId) { @@ -447,5 +460,151 @@ public class ProjectService implements IProjectService{ return projectDao.findSonProjectId(param); } + @Override + public void deleteProjectById(CProjectDto.ProjectById param, Long userId) { + ProTaskDetail project = taskDetailDao.selectByPrimaryKey(param.getProjectId()); + if (ObjectUtil.isNull(project)) { + throw new BaseException(CommonCodeError.PROJECT_NOT_FOUND); + } + //删除项目详情 删除项目相关 + Long projectId = project.getId(); + project.setRecStatus((byte)2); + taskDetailDao.updateByPrimaryKeySelective(project); + //删除之前的项目分解 + ProTaskSubExample taskSubExample = new ProTaskSubExample(); + taskSubExample.createCriteria().andTaskDetailIdEqualTo(projectId); + ProTaskSub taskSub = new ProTaskSub(); + taskSub.setRecStatus((byte)2); + taskSubDao.updateByExampleSelective(taskSub,taskSubExample); + //删除之前的版本信息 + ProTaskVersion taskVersion = new ProTaskVersion(); + taskVersion.setRecStatus((byte)2); + ProTaskVersionExample taskVersionExample = new ProTaskVersionExample(); + taskVersionExample.createCriteria().andTaskDetailIdEqualTo(projectId); + taskVersionDao.updateByExampleSelective(taskVersion,taskVersionExample); + //删除项目标签相关的 + LabelBusiness labelBusiness = new LabelBusiness(); + labelBusiness.setRecStatus((byte)2); + LabelBusinessExample labelBusinessExample = new LabelBusinessExample(); + labelBusinessExample.createCriteria().andBusinessIdEqualTo(projectId); + labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample); + //删除项目分享表 + ProTaskShare taskShare = new ProTaskShare(); + taskShare.setRecStatus((byte)2); + ProTaskShareExample taskShareExample = new ProTaskShareExample(); + taskShareExample.createCriteria().andOriginalProjectIdEqualTo(projectId); + taskShareMapper.updateByExampleSelective(taskShare,taskShareExample); + + //删除角色和成员 + List roleIdList = roleDao.queryRoleListOfProject(project.getId()); + ProRole role = new ProRole(); + role.setRecStatus((byte)2); + ProRoleExample roleExample = new ProRoleExample(); + roleExample.createCriteria().andIdIn(roleIdList); + roleDao.updateByExampleSelective(role,roleExample); + List memberIdList = memberDao.queryMembersOfProject(project.getId()); + ProMember member = new ProMember(); + member.setRecStatus((byte)2); + ProMemberExample memberExample = new ProMemberExample(); + memberExample.createCriteria().andIdIn(memberIdList); + memberDao.updateByExampleSelective(member,memberExample); + //删除奖惩干系人 + ProMemberStakeholder memberStakeholder = new ProMemberStakeholder(); + memberStakeholder.setRecStatus((byte)2); + ProMemberStakeholderExample memberStakeholderExample = new ProMemberStakeholderExample(); + memberStakeholderExample.createCriteria().andMemeberIdIn(memberIdList); + memberStakeholderMapper.updateByExampleSelective(memberStakeholder,memberStakeholderExample); + //删除对谁不可见 + ProRoleRepulsion roleRepulsion = new ProRoleRepulsion(); + roleRepulsion.setRecStatus((byte)2); + ProRoleRepulsionExample roleRepulsionExample = new ProRoleRepulsionExample(); + roleRepulsionExample.createCriteria().andRoleIdIn(roleIdList); + roleRepulsionDao.updateByExampleSelective(roleRepulsion,roleRepulsionExample); + //删除角色成员关联 + ProRoleMember roleMember = new ProRoleMember(); + roleMember.setRecStatus((byte)2); + ProRoleMemberExample roleMemberExample = new ProRoleMemberExample(); + roleMemberExample.createCriteria().andRoleIdIn(roleIdList); + roleMemberDao.updateByExampleSelective(roleMember,roleMemberExample); + //删除角色展示 + ProRoleShow roleShow = new ProRoleShow(); + roleShow.setRecStatus((byte)2); + ProRoleShowExample roleShowExample = new ProRoleShowExample(); + roleShowExample.createCriteria().andRoleIdIn(roleIdList); + roleShowMapper.updateByExampleSelective(roleShow,roleShowExample); + + //根据项目id查询所有一二级任务详情id 删除任务相关 + List allTaskId = parentTaskDao.queryAllTaskIdByProjectId(projectId); + //删除所有的任务详情 + 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 taskSubList = taskSubDao.selectByExample(taskSubExample1); + List allSubTaskId = taskSubList.stream().map(ProTaskSub::getId).collect(Collectors.toList()); + taskSubDao.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); + taskFlowDao.updateByExampleSelective(taskFlow,taskFlowExample); + //删除任务上下道工序 + ProTaskProcess taskProcess = new ProTaskProcess(); + taskProcess.setRecStatus((byte)2); + ProTaskProcessExample taskProcessExample = new ProTaskProcessExample(); + taskProcessExample.createCriteria().andTaskDetailIdIn(allTaskId); + taskProcessDao.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); + taskNotifyDao.updateByExampleSelective(taskNotify,taskNotifyExample); + //删除任务面板信息 + ProTaskPanelInfo taskPanelInfo = new ProTaskPanelInfo(); + taskPanelInfo.setRecStatus((byte)2); + ProTaskPanelInfoExample taskPanelInfoExample = new ProTaskPanelInfoExample(); + taskPanelInfoExample.createCriteria().andTaskDetailIdIn(allTaskId); + taskPanelInfoDao.updateByExampleSelective(taskPanelInfo,taskPanelInfoExample); + } + }