Browse Source

修改WBS

master
ma 4 years ago
parent
commit
bcdc0b2149
  1. 2
      src/main/java/com/ccsens/defaultwbs/bean/vo/ProjectVo.java
  2. 13
      src/main/java/com/ccsens/defaultwbs/persist/dao/SProjectDao.java
  3. 121
      src/main/java/com/ccsens/defaultwbs/service/ImportService.java
  4. 22
      src/main/resources/mapper_dao/SProjectDao.xml

2
src/main/java/com/ccsens/defaultwbs/bean/vo/ProjectVo.java

@ -56,5 +56,7 @@ public class ProjectVo {
private Long beginTime;
@ApiModelProperty("结束时间")
private Long endTime;
@ApiModelProperty("导入类型(0-第一次导入,1-修改WBS)")
private Byte importType = 0;;
}
}

13
src/main/java/com/ccsens/defaultwbs/persist/dao/SProjectDao.java

@ -13,4 +13,17 @@ import java.util.List;
public interface SProjectDao {
List<ProjectVo.SysProject> queryByCreator(@Param("userId") Long userId);
/**
* 根据项目id查询项目
* @param projectId 项目id
* @return 项目信息
*/
ProjectVo.SysProject selectById(@Param("projectId") Long projectId);
/**
* 逻辑删除项目
* @param projectId 项目id
*/
void updateStatusById(@Param("projectId") Long projectId);
}

121
src/main/java/com/ccsens/defaultwbs/service/ImportService.java

@ -165,7 +165,7 @@ public class ImportService implements IImportService {
throw new BaseException(DefaultCodeError.WSB_NOT_PROJECT_HEADER);
}
//读取成员表
readMemberSheet(memberSheet,project.getId(),roleMap,memberMap);
readMemberSheet(memberSheet,project,roleMap,memberMap);
//添加任务
readTask(wbsSheet,taskStart,project,roleMap);
//获取用户列表
@ -231,6 +231,34 @@ public class ImportService implements IImportService {
*/
private ProjectVo.SysProject readProject(XSSFSheet wbsSheet, int projectStart, Long userId,Long projectId) {
ProjectVo.SysProject project = new ProjectVo.SysProject();
// TODO 查询是否项目是否存在
if (ObjectUtil.isNotNull(projectId)) {
project = projectDao.selectById(projectId);
if (ObjectUtil.isNotNull(project)) {
project.setId(projectId);
project.setImportType((byte)1);
//删除之前的项目详情
projectDao.updateStatusById(projectId);
//删除之前的项目分解
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);
taskVersionMapper.updateByExampleSelective(taskVersion,taskVersionExample);
//删除项目标签相关的
LabelBusiness labelBusiness = new LabelBusiness();
labelBusiness.setRecStatus((byte)2);
LabelBusinessExample labelBusinessExample = new LabelBusinessExample();
labelBusinessExample.createCriteria().andBusinessIdEqualTo(projectId);
labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample);
}
}
//获取项目信息的那一行
XSSFRow row = wbsSheet.getRow(projectStart + 1);
if (ObjectUtil.isNull(row)) {
@ -279,7 +307,12 @@ public class ImportService implements IImportService {
}
//添加项目信息(任务详情)
ProTaskDetail taskDetail = new ProTaskDetail();
taskDetail.setId(snowflake.nextId());
if (0 == project.getImportType()) {
taskDetail.setId(snowflake.nextId());
}
if (1 == project.getImportType()) {
taskDetail.setId(projectId);
}
taskDetail.setName(projectName);
taskDetail.setDescription(description);
taskDetailDao.insertSelective(taskDetail);
@ -326,11 +359,46 @@ public class ImportService implements IImportService {
/**
* 读取项目成员表
*/
private void readMemberSheet(XSSFSheet memberSheet,Long projectId, Map<String, Long> roleMap, Map<String, RoleDto.WbsMember> memberMap) {
private void readMemberSheet(XSSFSheet memberSheet,ProjectVo.SysProject project, Map<String, Long> roleMap, Map<String, RoleDto.WbsMember> memberMap) {
//系统角色id
Long sysRoleId = null;
//项目角色id
Long roleId = null;
//如果是修改WBS,先进行删除
if (1 == project.getImportType()){
//删除角色和成员
List<Long> 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<Long> 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);
repulsionDao.updateByExampleSelective(roleRepulsion,roleRepulsionExample);
//删除角色成员关联
ProRoleMember roleMember = new ProRoleMember();
roleMember.setRecStatus((byte)2);
ProRoleMemberExample roleMemberExample = new ProRoleMemberExample();
roleMemberExample.createCriteria().andRoleIdIn(roleIdList);
roleMemberDao.updateByExampleSelective(roleMember,roleMemberExample);
}
for (int i = 2; i <= memberSheet.getLastRowNum(); i++) {
//获取当前行
XSSFRow row = memberSheet.getRow(i);
@ -371,7 +439,7 @@ public class ImportService implements IImportService {
ProRole role = new ProRole();
role.setId(snowflake.nextId());
role.setName(roleName);
role.setProjectId(projectId);
role.setProjectId(project.getId());
role.setLabelId(sysRoleId);
roleDao.insertSelective(role);
roleId = role.getId();
@ -393,7 +461,7 @@ public class ImportService implements IImportService {
proMember.setId(snowflake.nextId());
proMember.setName(memberName);
proMember.setPhone(memberPhone);
proMember.setProjectId(projectId);
proMember.setProjectId(project.getId());
proMember.setUserId(userId);
memberDao.insertSelective(proMember);
RoleDto.WbsMember member = new RoleDto.WbsMember(proMember.getId(),userId);
@ -473,6 +541,49 @@ public class ImportService implements IImportService {
//一级任务id
Long firstTaskId = null;
Long taskStartTime = project.getBeginTime();
//如果是修改WBS需要先删除
if (1 == project.getImportType()) {
List<Long> allTaskId = parentTaskMapper.queryAllTaskIdByProjectId(project.getId());
//删除所有的任务详情
ProTaskDetail taskDetail = new ProTaskDetail();
taskDetail.setRecStatus((byte)2);
ProTaskDetailExample taskDetailExample = new ProTaskDetailExample();
taskDetailExample.createCriteria().andIdIn(allTaskId);
taskDetailDao.updateByExampleSelective(taskDetail,taskDetailExample);
//删除所有的分解任务
ProTaskSub taskSub = new ProTaskSub();
taskSub.setRecStatus((byte)2);
ProTaskSubExample taskSubExample = new ProTaskSubExample();
taskSubExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskSubDao.updateByExampleSelective(taskSub,taskSubExample);
//删除所有的任务标签
LabelBusiness labelBusiness = new LabelBusiness();
labelBusiness.setRecStatus((byte)2);
LabelBusinessExample labelBusinessExample = new LabelBusinessExample();
labelBusinessExample.createCriteria().andBusinessIdIn(allTaskId);
labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample);
//删除任务角色关联表
ProRoleTask roleTask = new ProRoleTask();
roleTask.setRecStatus((byte)2);
ProRoleTaskExample roleTaskExample = new ProRoleTaskExample();
roleTaskExample.createCriteria().andTaskIdIn(allTaskId);
roleTaskMapper.updateByExampleSelective(roleTask,roleTaskExample);
//删除任务插件关联信息
ProTaskPlugin taskPlugin = new ProTaskPlugin();
taskPlugin.setRecStatus((byte)2);
ProTaskPluginExample taskPluginExample = new ProTaskPluginExample();
taskPluginExample.createCriteria().andTaskDetailIdIn(allTaskId);
proTaskPluginDao.updateByExampleSelective(taskPlugin,taskPluginExample);
//删除任务关系表
allTaskId.add(project.getId());
ProParentTask parentTask = new ProParentTask();
parentTask.setRecStatus((byte)2);
ProParentTaskExample parentTaskExample = new ProParentTaskExample();
parentTaskExample.createCriteria().andTaskDetailIdIn(allTaskId);
parentTaskMapper.updateByExampleSelective(parentTask,parentTaskExample);
}
for (int i = taskStart + 1; i <= wbsSheet.getLastRowNum(); i++) {
//获取当前行
XSSFRow row = wbsSheet.getRow(i);

22
src/main/resources/mapper_dao/SProjectDao.xml

@ -2,6 +2,13 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.defaultwbs.persist.dao.SProjectDao">
<update id="updateStatusById">
UPDATE t_pro_task_detail
SET rec_status = 2
WHERE
id = #{projectId}
</update>
<select id="queryByCreator" resultType="com.ccsens.defaultwbs.bean.vo.ProjectVo$SysProject">
SELECT
t.id,
@ -23,4 +30,19 @@
and rm.rec_status = 0
and r.rec_status = 0
</select>
<select id="selectById" resultType="com.ccsens.defaultwbs.bean.vo.ProjectVo$SysProject">
SELECT
d.id,
d.`name`,
s.plan_start_time AS beginTime,
s.plan_end_time AS endTime
FROM
t_pro_task_detail AS d
LEFT JOIN t_pro_task_sub AS s ON d.id = s.task_detail_id
WHERE
d.rec_status = 0
AND s.rec_status = 0
AND d.id = #{projectId}
</select>
</mapper>
Loading…
Cancel
Save